@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 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,4 @@
1
+ import { Bimap } from './bimap';
2
+ export { Bimap };
3
+ export type { IBimap } from './bimap';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export { dispatch, isNumber, isString, isArray, isBoolean, isNull, isUndefined, isObject, isFunction } from './dispatch';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -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"}