open-index/open-npm huggingface dataset:
npm package: @haiker15/option
Description: A TypeScript implementation of Rust's `Option<T>` type for safe handling of nullable values with functional programming patterns. Eliminates common null/undefined runtime errors by wrapping potentially null values in an `Option` container that must be exp
Latest version: 1.0.13

# @suntech-innovation/option

A TypeScript implementation of Rust's `Option<T>` type for safe handling of nullable values with functional programming patterns. Eliminates common null/undefined runtime errors by wrapping potentially null values in an `Option` container that must be explicitly handled.

## Features

- **Null Safety**: Eliminates null/undefined runtime errors through explicit handling
- **Rust-inspired API**: Familiar patterns with methods like `unwrap()`, `map()`, `and_then()`
- **Functional Programming**: Support for method chaining and functional composition
- **Type-safe JSON Parsing**: Schema validation returning Options instead of throwing errors
- **Performance Optimized**: Minimal overhead, tree-shakeable, no side effects
- **Chart/Data Processing**: Specialized utilities for safe array operations and data extraction

## Installation

```bash
npm install @suntech-innovation/option
```

## Quick Start

```typescript
import { Option, Some, None, OptionUtils } from '@suntech-innovation/option';

// Create Options
const someValue = Some(42);
const noValue = None();

// Safe array operations
const first = OptionUtils.head([1, 2, 3]); // Some(1)
const empty = OptionUtils.head([]); // None()

// Chain operations safely
const result = first
  .map(x => x * 2)
  .filter(x => x > 0)
  .unwrap_or(0); // 2
```

## Core API

### Option Methods
- **State**: `is_some()`, `is_none()`
- **Extraction**: `unwrap()`, `expect()`, `unwrap_or()`, `unwrap_or_else()`
- **Transform**: `map()`, `and_then()`, `filter()`
- **Combine**: `or()`, `or_else()`, `and()`, `xor()`

### OptionUtils
- **Array ops**: `head()`, `last()`, `at()`
- **Safe execution**: `tryCatch()`
- **Combinators**: `all()`, `firstSome()`

### JSON Parser
Type-safe JSON parsing with schema validation:

```typescript
import { JsonParser } from '@suntech-innovation/option';

const parser = new JsonParser();
const schema = {
  name: parser.string,
  age: parser.number,
  email: parser.optional(parser.string)
};

const result = parser.parseObject(jsonString, schema);
// Returns Option<{name: string, age: number, email?: string}>
```

## Documentation

- [Complete API Guide](src/lib/README.md)
- [JSON Parser Documentation](src/lib/JSON_PARSER_OPTION_API.md)

## Build

Run `ng build option` to build the project. The build artifacts will be stored in the `dist/` directory.

## Publishing

After building your library with `ng build option`, go to the dist folder `cd dist/option` and run `npm publish`.

## Running unit tests

Run `ng test option` to execute the unit tests via [Karma](https://karma-runner.github.io).