@dayme/alien-utils 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +98 -0
- package/dist/bimap/bimap.d.ts +44 -0
- package/dist/bimap/bimap.d.ts.map +1 -0
- package/dist/bimap/index.d.ts +4 -0
- package/dist/bimap/index.d.ts.map +1 -0
- package/dist/dispatch/dispatch.d.ts +17 -0
- package/dist/dispatch/dispatch.d.ts.map +1 -0
- package/dist/dispatch/index.d.ts +2 -0
- package/dist/dispatch/index.d.ts.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1068 -0
- package/dist/iterator/index.d.ts +2 -0
- package/dist/iterator/index.d.ts.map +1 -0
- package/dist/iterator/iterator.d.ts +821 -0
- package/dist/iterator/iterator.d.ts.map +1 -0
- package/dist/match/index.d.ts +2 -0
- package/dist/match/index.d.ts.map +1 -0
- package/dist/match/match.d.ts +17 -0
- package/dist/match/match.d.ts.map +1 -0
- package/dist/option/index.d.ts +3 -0
- package/dist/option/index.d.ts.map +1 -0
- package/dist/option/option.d.ts +274 -0
- package/dist/option/option.d.ts.map +1 -0
- package/dist/queue/index.d.ts +2 -0
- package/dist/queue/index.d.ts.map +1 -0
- package/dist/queue/queue.d.ts +18 -0
- package/dist/queue/queue.d.ts.map +1 -0
- package/dist/result/index.d.ts +3 -0
- package/dist/result/index.d.ts.map +1 -0
- package/dist/result/result.d.ts +343 -0
- package/dist/result/result.d.ts.map +1 -0
- package/dist/stack/index.d.ts +2 -0
- package/dist/stack/index.d.ts.map +1 -0
- package/dist/stack/stack.d.ts +13 -0
- package/dist/stack/stack.d.ts.map +1 -0
- package/package.json +70 -0
package/README.md
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# @dayme/alien-utils
|
|
2
|
+
|
|
3
|
+
TypeScript utility library with functional programming data structures (Option, Result, Iter, Stack, Queue, Bimap, Match, Dispatch).
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @dayme/alien-utils
|
|
9
|
+
# or
|
|
10
|
+
bun add @dayme/alien-utils
|
|
11
|
+
# or
|
|
12
|
+
pnpm add @dayme/alien-utils
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import { Option, Result, Iter, Stack, Queue } from "@dayme/alien-utils";
|
|
19
|
+
|
|
20
|
+
// Option - Handle nullable values
|
|
21
|
+
const maybeValue = Option.from("hello");
|
|
22
|
+
const doubled = maybeValue.map(s => s.length * 2); // Some(10)
|
|
23
|
+
|
|
24
|
+
// Result - Handle errors
|
|
25
|
+
const result = Result.ok(42);
|
|
26
|
+
const value = result.unwrapOr(0); // 42
|
|
27
|
+
|
|
28
|
+
// Iter - Lazy transformations
|
|
29
|
+
Iter.from([1, 2, 3])
|
|
30
|
+
.map(x => x * 2)
|
|
31
|
+
.filter(x => x > 3)
|
|
32
|
+
.collect(); // [4, 6]
|
|
33
|
+
|
|
34
|
+
// Stack - LIFO
|
|
35
|
+
const stack = new Stack<number>();
|
|
36
|
+
stack.push(1).push(2);
|
|
37
|
+
stack.pop(); // Some(2)
|
|
38
|
+
|
|
39
|
+
// Queue - FIFO
|
|
40
|
+
const queue = new Queue<number>();
|
|
41
|
+
queue.enqueue(1).enqueue(2);
|
|
42
|
+
queue.dequeue(); // Some(1)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Documentation
|
|
46
|
+
|
|
47
|
+
**[View Documentation](https://lisovskiyivan.github.io/alien-utils/)**
|
|
48
|
+
|
|
49
|
+
## Development
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Install dependencies
|
|
53
|
+
bun install
|
|
54
|
+
|
|
55
|
+
# Build library
|
|
56
|
+
bun run build
|
|
57
|
+
|
|
58
|
+
# Watch mode (TypeScript + Vite)
|
|
59
|
+
bun run dev
|
|
60
|
+
|
|
61
|
+
# Run tests
|
|
62
|
+
bun test
|
|
63
|
+
|
|
64
|
+
# Run tests in watch mode
|
|
65
|
+
bun test --watch
|
|
66
|
+
|
|
67
|
+
# Playground for testing the package
|
|
68
|
+
# First build the package: bun run build
|
|
69
|
+
# Then run playground: bun run playground
|
|
70
|
+
bun run playground
|
|
71
|
+
|
|
72
|
+
# Development documentation
|
|
73
|
+
bun run docs:dev
|
|
74
|
+
|
|
75
|
+
# Build documentation
|
|
76
|
+
bun run docs:build
|
|
77
|
+
|
|
78
|
+
# Preview documentation
|
|
79
|
+
bun run docs:preview
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Testing
|
|
83
|
+
|
|
84
|
+
Tests are written using Bun's built-in test framework:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# Run all tests
|
|
88
|
+
bun test
|
|
89
|
+
|
|
90
|
+
# Run tests in watch mode
|
|
91
|
+
bun test --watch
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Tests cover all methods of `Option` (Some/None), `Result` (Ok/Err), and other classes, including practical usage examples.
|
|
95
|
+
|
|
96
|
+
## License
|
|
97
|
+
|
|
98
|
+
MIT
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface IBimap<K, V> {
|
|
2
|
+
set(key: K, value: V): this;
|
|
3
|
+
get(key: K): V | undefined;
|
|
4
|
+
getReverse(value: V): K | undefined;
|
|
5
|
+
has(key: K): boolean;
|
|
6
|
+
hasValue(value: V): boolean;
|
|
7
|
+
delete(key: K): boolean;
|
|
8
|
+
deleteValue(value: V): boolean;
|
|
9
|
+
clear(): void;
|
|
10
|
+
get size(): number;
|
|
11
|
+
keys(): K[];
|
|
12
|
+
values(): V[];
|
|
13
|
+
entries(): [K, V][];
|
|
14
|
+
reverseEntries(): [V, K][];
|
|
15
|
+
}
|
|
16
|
+
export declare class Bimap<K, V> implements IBimap<K, V> {
|
|
17
|
+
private _forward;
|
|
18
|
+
private _reverse;
|
|
19
|
+
constructor();
|
|
20
|
+
static from<K, V>(entries: Iterable<[K, V]>): Bimap<K, V>;
|
|
21
|
+
static of<K, V>(...entries: [K, V][]): Bimap<K, V>;
|
|
22
|
+
set(key: K, value: V): this;
|
|
23
|
+
get(key: K): V | undefined;
|
|
24
|
+
getReverse(value: V): K | undefined;
|
|
25
|
+
has(key: K): boolean;
|
|
26
|
+
hasValue(value: V): boolean;
|
|
27
|
+
delete(key: K): boolean;
|
|
28
|
+
deleteValue(value: V): boolean;
|
|
29
|
+
clear(): void;
|
|
30
|
+
get size(): number;
|
|
31
|
+
keys(): K[];
|
|
32
|
+
values(): V[];
|
|
33
|
+
entries(): [K, V][];
|
|
34
|
+
reverseEntries(): [V, K][];
|
|
35
|
+
forEach(callback: (value: V, key: K, bimap: Bimap<K, V>) => void): void;
|
|
36
|
+
forEachReverse(callback: (key: K, value: V, bimap: Bimap<K, V>) => void): void;
|
|
37
|
+
clone(): Bimap<K, V>;
|
|
38
|
+
toString(): string;
|
|
39
|
+
toJSON(): {
|
|
40
|
+
forward: [K, V][];
|
|
41
|
+
reverse: [V, K][];
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=bimap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bimap.d.ts","sourceRoot":"","sources":["../../src/package/bimap/bimap.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM,CAAC,CAAC,EAAE,CAAC;IAC1B,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAE5B,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAE3B,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAEpC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IAErB,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC;IAE5B,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IAExB,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC;IAE/B,KAAK,IAAI,IAAI,CAAC;IAEd,IAAI,IAAI,IAAI,MAAM,CAAC;IAEnB,IAAI,IAAI,CAAC,EAAE,CAAC;IAEZ,MAAM,IAAI,CAAC,EAAE,CAAC;IAEd,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAEpB,cAAc,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;CAC5B;AAED,qBAAa,KAAK,CAAC,CAAC,EAAE,CAAC,CAAE,YAAW,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,QAAQ,CAAY;IAC5B,OAAO,CAAC,QAAQ,CAAY;;IAO5B,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAQzD,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAQlD,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAgB3B,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAI1B,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAInC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO;IAI3B,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAUvB,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO;IAU9B,KAAK,IAAI,IAAI;IAKb,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,CAAC,EAAE;IAIX,MAAM,IAAI,CAAC,EAAE;IAIb,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IAInB,cAAc,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;IAI1B,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAMvE,cAAc,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAM9E,KAAK,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAQpB,QAAQ,IAAI,MAAM;IAOlB,MAAM,IAAI;QAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;KAAE;CAMnD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/package/bimap/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,KAAK,EAAE,CAAC;AACjB,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
type TypeGuard<T> = (value: unknown) => value is T;
|
|
2
|
+
type Handler<T, R> = (value: T) => R;
|
|
3
|
+
export declare function dispatch<T = unknown, R = unknown>(): {
|
|
4
|
+
(value: T): R;
|
|
5
|
+
on<U>(guard: TypeGuard<U>, handler: Handler<U, R>): /*elided*/ any;
|
|
6
|
+
default(handler: (value: T) => R): /*elided*/ any;
|
|
7
|
+
};
|
|
8
|
+
export declare const isNumber: (value: unknown) => value is number;
|
|
9
|
+
export declare const isString: (value: unknown) => value is string;
|
|
10
|
+
export declare const isArray: (value: unknown) => value is unknown[];
|
|
11
|
+
export declare const isBoolean: (value: unknown) => value is boolean;
|
|
12
|
+
export declare const isNull: (value: unknown) => value is null;
|
|
13
|
+
export declare const isUndefined: (value: unknown) => value is undefined;
|
|
14
|
+
export declare const isObject: (value: unknown) => value is Record<string, unknown>;
|
|
15
|
+
export declare const isFunction: (value: unknown) => value is (...args: unknown[]) => unknown;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=dispatch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/package/dispatch/dispatch.ts"],"names":[],"mappings":"AAAA,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC;AAEnD,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;AAOrC,wBAAgB,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;YAIpB,CAAC,GAAG,CAAC;OAcN,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;qBAMhC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;EAMxD;AAED,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAAmC,CAAC;AACvF,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAAmC,CAAC;AACvF,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,OAAO,EAA0B,CAAC;AACpF,eAAO,MAAM,SAAS,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,OAAqC,CAAC;AAC1F,eAAO,MAAM,MAAM,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,IAAsB,CAAC;AACxE,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,SAAgC,CAAC;AACvF,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CACH,CAAC;AACvE,eAAO,MAAM,UAAU,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAChD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/package/dispatch/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './result/index';
|
|
2
|
+
export * from './option/index';
|
|
3
|
+
export * from './iterator/index';
|
|
4
|
+
export * from './match/index';
|
|
5
|
+
export * from './dispatch/index';
|
|
6
|
+
export * from './bimap/index';
|
|
7
|
+
export * from './stack/index';
|
|
8
|
+
export * from './queue/index';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/package/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"}
|