adaptive-extender 0.9.12 → 0.10.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/CHANGELOG.md CHANGED
@@ -1,7 +1,17 @@
1
+ ## 0.10.0 (20.05.2026)
2
+ - Added `adaptive-extender/worker` package for Web Worker environments. Includes [promise](./src/worker/promise.ts) and [engine](./src/worker/engine.ts) modules.
3
+
4
+ ## 0.9.13 (06.04.2026)
5
+ - Added `Version` class for semantic versioning with `parse()`, `tryParse()` support.
6
+ - Added `BigInt` portable support via `BigInt.import()` and `BigInt.export()`.
7
+ - `ArchiveRepository.save()` is now `async` and returns `Promise<void>`. The promise resolves when the save completes and rejects on failure. A pending save is cancelled (with an `AbortError`) when superseded by a new call.
8
+ - `Promise.withSignal` now has a default type parameter `T = void`.
9
+ - Renamed `EnumFrom` adapter to `EnumAs`.
10
+
1
11
  ## 0.9.12 (03.04.2026)
2
12
  - `Controller` now accepts typed arguments via the generic parameter `A`; arguments are forwarded from `launch()` to `run()`.
3
13
  - Added `finally()` lifecycle hook to `Controller`, called unconditionally after `run()` and `catch()`.
4
- - Added `EnumFrom` adapter for portable enum fields, supporting both TypeScript `enum` declarations (numeric and string) and plain const-object enums.
14
+ - Added `EnumAs` adapter for portable enum fields, supporting both TypeScript `enum` declarations (numeric and string) and plain const-object enums.
5
15
 
6
16
  ## 0.9.11 (17.03.2026)
7
17
  - Moved `environment` module from [node](./src/node/environment.ts) to [core](./src/core/environment.ts).
package/README.md CHANGED
@@ -17,18 +17,20 @@ npm install adaptive-extender
17
17
 
18
18
  ## Packages
19
19
 
20
- | Package | Environment |
21
- | :----------------------- | :---------------------- |
22
- | `adaptive-extender/core` | Browser, Node.js, Deno |
23
- | `adaptive-extender/node` | Node.js (includes core) |
24
- | `adaptive-extender/web` | Browser (includes core) |
20
+ | Package | Environment |
21
+ | :------------------------- | :------------------------- |
22
+ | `adaptive-extender/core` | Browser, Node.js, Deno |
23
+ | `adaptive-extender/node` | Node.js (includes core) |
24
+ | `adaptive-extender/web` | Browser (includes core) |
25
+ | `adaptive-extender/worker` | Web Worker (includes core) |
25
26
 
26
27
  - - -
27
28
 
28
29
  ```typescript
29
30
  // Import once — extensions are active everywhere
30
31
  import "adaptive-extender/core";
31
- import "adaptive-extender/web"; // Browser only
32
+ import "adaptive-extender/web"; // Browser only
33
+ import "adaptive-extender/worker"; // Web Worker only
32
34
  ```
33
35
 
34
36
  ## Native Extensions
@@ -212,6 +214,20 @@ const safePosition = position.insteadNaN(Vector2D.newZero);
212
214
  const point = Vector2D.parse("(10, 20)"); // → Vector2D { x: 10, y: 20 }
213
215
  ```
214
216
 
217
+ ### Version
218
+
219
+ Immutable semantic version with `major.minor.patch` format.
220
+
221
+ ```typescript
222
+ import { Version } from "adaptive-extender/core";
223
+
224
+ const v = new Version(1, 2, 3);
225
+ console.log(v.toString()); // → "1.2.3"
226
+
227
+ const parsed = Version.parse("2.0.0");
228
+ const safe = Version.tryParse(userInput); // → Version | null
229
+ ```
230
+
215
231
  ### Controller
216
232
 
217
233
  Abstract base class for async tasks with centralized error handling.
@@ -336,7 +352,7 @@ const animal = Animal.import(json, "api.animal");
336
352
  | `Optional(T)` | `T \| undefined` |
337
353
  | `Nullable(T)` | `T \| null` |
338
354
  | `Deferred(_ => T)` | Circular references |
339
- | `EnumFrom(E)` | TypeScript `enum` or const-object enum |
355
+ | `EnumAs(E)` | TypeScript `enum` or const-object enum |
340
356
 
341
357
  ## Web
342
358
 
@@ -396,9 +412,11 @@ const repository = new ArchiveRepository("settings", Settings, new Settings());
396
412
  const settings = repository.content;
397
413
  settings.volume = 0.5;
398
414
 
399
- repository.save(); // persist immediately
400
- repository.save(3000); // debounced — persist after 3 seconds
401
- repository.reset(); // revert to initial state
415
+ // save() is async — resolves when the write completes, rejects on failure
416
+ await repository.save(); // save immediately
417
+ await repository.save(3000); // debounced save after 3 seconds
418
+ // A pending save is cancelled (AbortError) when superseded by a new call
419
+ repository.reset(); // abort pending save and revert to initial state
402
420
  ```
403
421
 
404
422
  ### Promise Utilities
@@ -408,7 +426,8 @@ await Promise.asTimeout(1000);
408
426
 
409
427
  // AbortController is created and aborted automatically on completion
410
428
  const result = await Promise.withSignal((signal, resolve, reject) => {
411
- fetch("/api/data", { signal }).then(resolve).catch(reject);
429
+ buttonAccept.addEventListener("click", event => resolve(event.result), { signal });
430
+ buttonDecline.addEventListener("click", event => reject(event.error), { signal });
412
431
  });
413
432
  ```
414
433
 
@@ -0,0 +1,17 @@
1
+ import "./global.js";
2
+ declare global {
3
+ export interface BigIntConstructor {
4
+ /**
5
+ * Validates and imports a bigint from a raw string source.
6
+ * @param source The raw value to check.
7
+ * @param name The field name for error context.
8
+ * @throws {TypeError} If the source is not a string.
9
+ */
10
+ import(source: any, name: string): bigint;
11
+ /**
12
+ * Returns the string representation of the bigint value for export.
13
+ * @param source The bigint to export.
14
+ */
15
+ export(source: bigint): string;
16
+ }
17
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ import "./global.js";
3
+ BigInt.import = function (source, name) {
4
+ if (typeof source !== "string")
5
+ throw new TypeError(`Unable to import bigint from ${name} due its ${typename(source)} type`);
6
+ return BigInt(source);
7
+ };
8
+ BigInt.export = function (source) {
9
+ return source.toString();
10
+ };
11
+ //# sourceMappingURL=bigint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigint.js","sourceRoot":"","sources":["../../src/core/bigint.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,aAAa,CAAC;AAoBrB,MAAM,CAAC,MAAM,GAAG,UAAU,MAAW,EAAE,IAAY;IAClD,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,IAAI,YAAY,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7H,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,UAAU,MAAc;IACvC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC1B,CAAC,CAAC"}
@@ -3,6 +3,7 @@ export * from "./primitives.js";
3
3
  export * from "./number.js";
4
4
  export * from "./string.js";
5
5
  export * from "./boolean.js";
6
+ export * from "./bigint.js";
6
7
  export * from "./date.js";
7
8
  export * from "./math.js";
8
9
  export * from "./array.js";
@@ -20,6 +21,7 @@ export * from "./vector-1.js";
20
21
  export * from "./vector-2.js";
21
22
  export * from "./vector-3.js";
22
23
  export * from "./timespan.js";
24
+ export * from "./version.js";
23
25
  export * from "./engine.js";
24
26
  export * from "./controller.js";
25
27
  export * from "./environment.js";
@@ -4,6 +4,7 @@ export * from "./primitives.js";
4
4
  export * from "./number.js";
5
5
  export * from "./string.js";
6
6
  export * from "./boolean.js";
7
+ export * from "./bigint.js";
7
8
  export * from "./date.js";
8
9
  export * from "./math.js";
9
10
  export * from "./array.js";
@@ -21,6 +22,7 @@ export * from "./vector-1.js";
21
22
  export * from "./vector-2.js";
22
23
  export * from "./vector-3.js";
23
24
  export * from "./timespan.js";
25
+ export * from "./version.js";
24
26
  export * from "./engine.js";
25
27
  export * from "./controller.js";
26
28
  export * from "./environment.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
@@ -44,13 +44,13 @@ export declare abstract class Model {
44
44
  * Decorator to register a class field as part of the portable schema.
45
45
  * @param type The portable constructor to use for import/export.
46
46
  */
47
- export declare function Field<M, S>(type: PortableConstructor<M, S>): (target: void, context: ClassFieldDecoratorContext<Model, M>) => void;
47
+ export declare function Field<I, S>(type: PortableConstructor<I, S>): (target: void, context: ClassFieldDecoratorContext<Model, I>) => void;
48
48
  /**
49
49
  * Decorator to register a class field as part of the portable schema.
50
50
  * @param type The portable constructor to use for import/export.
51
51
  * @param name Alias for the field in the external source.
52
52
  */
53
- export declare function Field<M, S>(type: PortableConstructor<M, S>, name: string): (target: void, context: ClassFieldDecoratorContext<Model, M>) => void;
53
+ export declare function Field<I, S>(type: PortableConstructor<I, S>, name: string): (target: void, context: ClassFieldDecoratorContext<Model, I>) => void;
54
54
  /**
55
55
  * Decorator to register a descendant class in the base class's polymorphic registry.
56
56
  * @param descendant The subclass constructor to register.
@@ -71,43 +71,43 @@ export declare function DiscriminatorKey<M extends typeof Model>(key: string): (
71
71
  * Creates a wrapper for circular or deferred type references.
72
72
  * @param resolver Function that returns the actual type constructor.
73
73
  */
74
- export declare function Deferred<M, S>(resolver: (_: void) => PortableConstructor<M, S>): PortableConstructor<M, S>;
74
+ export declare function Deferred<I, S>(resolver: (_: void) => PortableConstructor<I, S>): PortableConstructor<I, S>;
75
75
  /**
76
76
  * Creates a portable wrapper for optional types.
77
77
  * @param type The inner portable type.
78
78
  */
79
- export declare function Optional<M, S>(type: PortableConstructor<M, S>): PortableConstructor<M | undefined, S | undefined>;
79
+ export declare function Optional<I, S>(type: PortableConstructor<I, S>): PortableConstructor<I | undefined, S | undefined>;
80
80
  /**
81
81
  * Creates a portable wrapper for nullable types.
82
82
  * @param type The inner portable type.
83
83
  */
84
- export declare function Nullable<M, S>(type: PortableConstructor<M, S>): PortableConstructor<M | null, S | null>;
84
+ export declare function Nullable<I, S>(type: PortableConstructor<I, S>): PortableConstructor<I | null, S | null>;
85
85
  /**
86
86
  * Creates a portable wrapper for array types.
87
87
  * @param type The portable type of the array elements.
88
88
  */
89
- export declare function ArrayOf<M, S>(type: PortableConstructor<M, S>): PortableConstructor<M[], S[]>;
89
+ export declare function ArrayOf<I, S>(type: PortableConstructor<I, S>): PortableConstructor<I[], S[]>;
90
90
  /**
91
91
  * Creates a portable wrapper for set types.
92
92
  * @param type The portable type of the set elements.
93
93
  */
94
- export declare function SetOf<M, S>(type: PortableConstructor<M, S>): PortableConstructor<Set<M>, S[]>;
94
+ export declare function SetOf<I, S>(type: PortableConstructor<I, S>): PortableConstructor<Set<I>, S[]>;
95
95
  /**
96
96
  * Creates a portable wrapper for maps with string keys, converting them to and from plain objects.
97
97
  * @param value The portable type of the map values.
98
98
  */
99
- export declare function RecordOf<M, S>(type: PortableConstructor<M, S>): PortableConstructor<Map<string, M>, Record<string, S>>;
99
+ export declare function RecordOf<I, S>(type: PortableConstructor<I, S>): PortableConstructor<Map<string, I>, Record<string, S>>;
100
100
  /**
101
101
  * Creates a portable wrapper for maps with arbitrary key and value types, converting them to and from arrays of `[key, value]` tuples.
102
102
  * @param key The portable type of the map keys.
103
103
  * @param value The portable type of the map values.
104
104
  */
105
- export declare function MapOf<MK, SK, MV, SV>(typeKey: PortableConstructor<MK, SK>, typeValue: PortableConstructor<MV, SV>): PortableConstructor<Map<MK, MV>, [SK, SV][]>;
105
+ export declare function MapOf<IK, SK, IV, SV>(typeKey: PortableConstructor<IK, SK>, typeValue: PortableConstructor<IV, SV>): PortableConstructor<Map<IK, IV>, [SK, SV][]>;
106
106
  /**
107
107
  * Creates a portable wrapper for enum types, strictly operating only on enum values.
108
108
  * @param reference The enum object reference.
109
109
  */
110
- export declare function EnumFrom<T extends Readonly<Record<string, unknown>>>(reference: T): PortableConstructor<T[keyof T], T[keyof T]>;
110
+ export declare function EnumAs<T extends Readonly<Record<string, unknown>>>(reference: T): PortableConstructor<T[keyof T], T[keyof T]>;
111
111
  /**
112
112
  * A portable adapter that facilitates the conversion between `Date` instances and millisecond timestamps.
113
113
  */
@@ -336,7 +336,7 @@ export function MapOf(typeKey, typeValue) {
336
336
  * Creates a portable wrapper for enum types, strictly operating only on enum values.
337
337
  * @param reference The enum object reference.
338
338
  */
339
- export function EnumFrom(reference) {
339
+ export function EnumAs(reference) {
340
340
  const values = new Set();
341
341
  for (const [key, value] of Object.entries(reference)) {
342
342
  const index = Number(key);
@@ -352,13 +352,11 @@ export function EnumFrom(reference) {
352
352
  return "Enum";
353
353
  },
354
354
  import(source, name) {
355
- if (values.has(source))
356
- return source;
357
- throw new TypeError(`Unable to import enum from ${name} due to invalid value`);
355
+ if (!values.has(source))
356
+ throw new TypeError(`Unable to import enum from ${name} due to invalid value`);
357
+ return source;
358
358
  },
359
359
  export(source) {
360
- if (values.has(source) === false)
361
- throw new TypeError(`Unable to export enum due to invalid value`);
362
360
  return source;
363
361
  },
364
362
  };
@@ -1 +1 @@
1
- {"version":3,"file":"portable.js","sourceRoot":"","sources":["../../src/core/portable.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"portable.js","sourceRoot":"","sources":["../../src/core/portable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import "./global.js";
2
+ /**
3
+ * Represents a semantic version with major, minor, and patch components.
4
+ */
5
+ export declare class Version {
6
+ #private;
7
+ /**
8
+ * Creates a version from its numeric components.
9
+ * Non-integer finite values are truncated; negative finite values are clamped to zero.
10
+ * @throws {Error} If any component is not a finite number.
11
+ */
12
+ constructor(major: number, minor: number, patch: number);
13
+ /**
14
+ * Gets the major component.
15
+ */
16
+ get major(): number;
17
+ /**
18
+ * Gets the minor component.
19
+ */
20
+ get minor(): number;
21
+ /**
22
+ * Gets the patch component.
23
+ */
24
+ get patch(): number;
25
+ /**
26
+ * Returns the version as a `"major.minor.patch"` string.
27
+ */
28
+ toString(): string;
29
+ /**
30
+ * Attempts to parse a string in `"major.minor.patch"` format into a Version.
31
+ * @returns The parsed Version, or null if the string is invalid.
32
+ */
33
+ static tryParse(string: string): Version | null;
34
+ /**
35
+ * Parses a string in `"major.minor.patch"` format into a Version.
36
+ * @throws {SyntaxError} If the string cannot be parsed.
37
+ */
38
+ static parse(string: string): Version;
39
+ }
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ import "./global.js";
3
+ const { trunc } = Math;
4
+ //#region Version
5
+ /**
6
+ * Represents a semantic version with major, minor, and patch components.
7
+ */
8
+ export class Version {
9
+ static #pattern = /^(\d+)\.(\d+)\.(\d+)$/;
10
+ #major = 0;
11
+ #minor = 0;
12
+ #patch = 0;
13
+ /**
14
+ * Creates a version from its numeric components.
15
+ * Non-integer finite values are truncated; negative finite values are clamped to zero.
16
+ * @throws {Error} If any component is not a finite number.
17
+ */
18
+ constructor(major, minor, patch) {
19
+ if (!Number.isFinite(major))
20
+ throw new Error(`The major ${major} must be a finite number`);
21
+ if (!Number.isFinite(minor))
22
+ throw new Error(`The minor ${minor} must be a finite number`);
23
+ if (!Number.isFinite(patch))
24
+ throw new Error(`The patch ${patch} must be a finite number`);
25
+ this.#major = trunc(major).clamp(0, Infinity);
26
+ this.#minor = trunc(minor).clamp(0, Infinity);
27
+ this.#patch = trunc(patch).clamp(0, Infinity);
28
+ }
29
+ /**
30
+ * Gets the major component.
31
+ */
32
+ get major() {
33
+ return this.#major;
34
+ }
35
+ /**
36
+ * Gets the minor component.
37
+ */
38
+ get minor() {
39
+ return this.#minor;
40
+ }
41
+ /**
42
+ * Gets the patch component.
43
+ */
44
+ get patch() {
45
+ return this.#patch;
46
+ }
47
+ /**
48
+ * Returns the version as a `"major.minor.patch"` string.
49
+ */
50
+ toString() {
51
+ return `${this.#major}.${this.#minor}.${this.#patch}`;
52
+ }
53
+ /**
54
+ * Attempts to parse a string in `"major.minor.patch"` format into a Version.
55
+ * @returns The parsed Version, or null if the string is invalid.
56
+ */
57
+ static tryParse(string) {
58
+ const match = Version.#pattern.exec(string.trim());
59
+ if (match === null)
60
+ return null;
61
+ const [, major, minor, patch] = match.map(Number);
62
+ return new Version(major, minor, patch);
63
+ }
64
+ /**
65
+ * Parses a string in `"major.minor.patch"` format into a Version.
66
+ * @throws {SyntaxError} If the string cannot be parsed.
67
+ */
68
+ static parse(string) {
69
+ const version = Version.tryParse(string);
70
+ if (version === null)
71
+ throw new SyntaxError(`Unable to parse '${string}' as version`);
72
+ return version;
73
+ }
74
+ }
75
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,aAAa,CAAC;AAErB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;AAEvB,iBAAiB;AACjB;;GAEG;AACH,MAAM,OAAO,OAAO;IACnB,MAAM,CAAC,QAAQ,GAAW,uBAAuB,CAAC;IAElD,MAAM,GAAW,CAAC,CAAC;IACnB,MAAM,GAAW,CAAC,CAAC;IACnB,MAAM,GAAW,CAAC,CAAC;IAEnB;;;;OAIG;IACH,YAAY,KAAa,EAAE,KAAa,EAAE,KAAa;QACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,aAAa,KAAK,0BAA0B,CAAC,CAAC;QAC3F,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,aAAa,KAAK,0BAA0B,CAAC,CAAC;QAC3F,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,aAAa,KAAK,0BAA0B,CAAC,CAAC;QAC3F,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,QAAQ;QACP,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAc;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACnD,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAChC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClD,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,MAAc;QAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,OAAO,KAAK,IAAI;YAAE,MAAM,IAAI,WAAW,CAAC,oBAAoB,MAAM,cAAc,CAAC,CAAC;QACtF,OAAO,OAAO,CAAC;IAChB,CAAC"}
@@ -55,14 +55,16 @@ export declare class ArchiveRepository<M extends PortableConstructor<InstanceTyp
55
55
  /**
56
56
  * Schedules an immediate save operation for the current content.
57
57
  * Any pending delayed saves are overridden.
58
+ * @returns A promise that resolves when the save completes, or rejects if it fails.
58
59
  */
59
- save(): void;
60
+ save(): Promise<void>;
60
61
  /**
61
62
  * Schedules a save operation to be executed after the specified delay.
62
63
  * Useful for debouncing frequent updates.
63
64
  * @param delay The delay in milliseconds before saving.
65
+ * @returns A promise that resolves when the save completes, or rejects if it fails.
64
66
  */
65
- save(delay: number): void;
67
+ save(delay: number): Promise<void>;
66
68
  /**
67
69
  * Cancels any scheduled save operations.
68
70
  */
@@ -135,13 +135,36 @@ export class ArchiveManager {
135
135
  }
136
136
  //#endregion
137
137
  //#region Archive repository
138
+ class SaveTransaction {
139
+ #idTimeout;
140
+ #resolve;
141
+ #reject;
142
+ constructor(handler, delay, resolve, reject) {
143
+ this.#idTimeout = setTimeout(handler, delay);
144
+ this.#resolve = resolve;
145
+ this.#reject = reject;
146
+ }
147
+ cancel(reason) {
148
+ clearTimeout(this.#idTimeout);
149
+ this.#reject(new DOMException(reason, "AbortError"));
150
+ }
151
+ settle(callback) {
152
+ try {
153
+ const result = callback();
154
+ this.#resolve(result);
155
+ }
156
+ catch (reason) {
157
+ this.#reject(Error.from(reason));
158
+ }
159
+ }
160
+ }
138
161
  /**
139
162
  * A high-level repository providing buffered access to persistent data with auto-save management.
140
163
  */
141
164
  export class ArchiveRepository {
142
165
  #manager;
143
166
  #content;
144
- #idSaveTimeout = NaN;
167
+ #transaction = null;
145
168
  /**
146
169
  * @param key Unique storage identifier.
147
170
  * @param model Constructor for state transformation.
@@ -154,7 +177,7 @@ export class ArchiveRepository {
154
177
  }
155
178
  #initializeUnloadHandler() {
156
179
  window.addEventListener("beforeunload", (event) => {
157
- if (Number.isNaN(this.#idSaveTimeout))
180
+ if (this.#transaction === null)
158
181
  return;
159
182
  event.returnValue = "Pending changes are being saved.";
160
183
  event.preventDefault();
@@ -174,34 +197,35 @@ export class ArchiveRepository {
174
197
  return this.#content;
175
198
  }
176
199
  #handler() {
177
- try {
200
+ const transaction = this.#transaction;
201
+ this.#transaction = null;
202
+ transaction?.settle(() => {
178
203
  this.#manager.content = this.#content;
179
- }
180
- finally {
181
- this.#idSaveTimeout = NaN;
182
- }
204
+ });
183
205
  }
184
- save(delay) {
185
- if (!Number.isNaN(this.#idSaveTimeout))
186
- clearTimeout(this.#idSaveTimeout);
187
- this.#idSaveTimeout = setTimeout(this.#handler.bind(this), delay);
206
+ async save(delay) {
207
+ const transaction = this.#transaction;
208
+ transaction?.cancel("Save superseded by a subsequent call.");
209
+ return await new Promise((resolve, reject) => {
210
+ this.#transaction = new SaveTransaction(this.#handler.bind(this), delay, resolve, reject);
211
+ });
188
212
  }
189
213
  /**
190
214
  * Cancels any scheduled save operations.
191
215
  */
192
216
  abort() {
193
- if (Number.isNaN(this.#idSaveTimeout))
194
- return;
195
- clearTimeout(this.#idSaveTimeout);
196
- this.#idSaveTimeout = NaN;
217
+ const transaction = this.#transaction;
218
+ transaction?.cancel("Save operation explicitly aborted.");
219
+ this.#transaction = null;
197
220
  }
198
221
  /**
199
222
  * Discards current changes, clears pending saves, and reverts to the initial state.
200
223
  */
201
224
  reset() {
202
225
  this.abort();
203
- this.#manager.reset();
204
- this.#content = this.#manager.content;
226
+ const manager = this.#manager;
227
+ manager.reset();
228
+ this.#content = manager.content;
205
229
  }
206
230
  }
207
231
  //# sourceMappingURL=archive.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/web/archive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/web/archive.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,6 @@ declare global {
11
11
  * Creates a promise that can be controlled with an abort signal.
12
12
  * @param callback The callback to execute with an abort signal, resolve, and reject functions.
13
13
  */
14
- withSignal<T>(callback: (signal: AbortSignal, resolve: (value: Promisable<T>) => void, reject: (reason?: any) => void) => void): Promise<T>;
14
+ withSignal<T = void>(callback: (signal: AbortSignal, resolve: (value: Promisable<T>) => void, reject: (reason?: any) => void) => void): Promise<T>;
15
15
  }
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"promise.js","sourceRoot":"","sources":["../../src/web/promise.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAmB,MAAM,kBAAkB,CAAC;AAkBnD,OAAO,CAAC,SAAS,GAAG,KAAK,WAAW,OAAe;IAClD,IAAI,KAAyB,CAAC;IAC9B,IAAI,CAAC;QACJ,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACpC,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACJ,CAAC;YAAS,CAAC;QACV,YAAY,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;AACF,CAAC,CAAC;AAEF,OAAO,CAAC,UAAU,GAAG,KAAK,WAAc,QAAgH;IACvJ,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,IAAI,CAAC;QACJ,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7F,CAAC;YAAS,CAAC;QACV,UAAU,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"promise.js","sourceRoot":"","sources":["../../src/web/promise.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAmB,MAAM,kBAAkB,CAAC;AAkBnD,OAAO,CAAC,SAAS,GAAG,KAAK,WAAW,OAAe;IAClD,IAAI,KAAyB,CAAC;IAC9B,IAAI,CAAC;QACJ,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACpC,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACJ,CAAC;YAAS,CAAC;QACV,YAAY,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;AACF,CAAC,CAAC;AAEF,OAAO,CAAC,UAAU,GAAG,KAAK,WAAqB,QAAgH;IAC9J,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,IAAI,CAAC;QACJ,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7F,CAAC;YAAS,CAAC;QACV,UAAU,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;AACF,CAAC,CAAC"}
@@ -0,0 +1,83 @@
1
+ import "../core/index.js";
2
+ import { type Engine } from "../core/index.js";
3
+ interface WebWorkersEngineEventMap {
4
+ "trigger": Event;
5
+ "change": Event;
6
+ }
7
+ export interface WebWorkersEngineOptions {
8
+ launch: boolean;
9
+ }
10
+ /**
11
+ * Represents the base class for web-workers-based engines.
12
+ */
13
+ export declare abstract class WebWorkersEngine extends EventTarget implements Engine {
14
+ #private;
15
+ /**
16
+ * Gets a value indicating whether the engine is running.
17
+ */
18
+ get launched(): boolean;
19
+ /**
20
+ * Sets a value indicating whether the engine is running.
21
+ */
22
+ set launched(value: boolean);
23
+ /**
24
+ * Gets the target frame rate limit for the engine.
25
+ */
26
+ get limit(): number;
27
+ /**
28
+ * Sets the target frame rate limit for the engine.
29
+ */
30
+ set limit(value: number);
31
+ /**
32
+ * Gets the current frames per second (FPS) of the engine.
33
+ * @throws {ImplementationError} If the method is not implemented in a derived class.
34
+ */
35
+ get fps(): number;
36
+ /**
37
+ * Gets the time elapsed between the current and previous frame, in seconds.
38
+ * @throws {ImplementationError} If the method is not implemented in a derived class.
39
+ */
40
+ get delta(): number;
41
+ /**
42
+ * @throws {TypeError} If this constructor is called directly on the `WebWorkersEngine` class.
43
+ */
44
+ constructor();
45
+ /**
46
+ * @param options An object that specifies options for the engine.
47
+ * @throws {TypeError} If this constructor is called directly on the `WebWorkersEngine` class.
48
+ */
49
+ constructor(options: Partial<WebWorkersEngineOptions>);
50
+ addEventListener<K extends keyof WebWorkersEngineEventMap>(type: K, listener: (this: this, ev: WebWorkersEngineEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
51
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
52
+ removeEventListener<K extends keyof WebWorkersEngineEventMap>(type: K, listener: (this: WebWorkersEngine, ev: WebWorkersEngineEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
53
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
54
+ }
55
+ /**
56
+ * A variable frame rate engine.
57
+ */
58
+ export declare class PreciseEngine extends WebWorkersEngine {
59
+ #private;
60
+ get fps(): number;
61
+ get delta(): number;
62
+ constructor();
63
+ /**
64
+ * @param options An object that specifies options for the engine.
65
+ */
66
+ constructor(options: Partial<WebWorkersEngineOptions>);
67
+ }
68
+ /**
69
+ * A fixed frame rate engine.
70
+ */
71
+ export declare class StaticEngine extends WebWorkersEngine {
72
+ #private;
73
+ get limit(): number;
74
+ set limit(value: number);
75
+ get fps(): number;
76
+ get delta(): number;
77
+ constructor();
78
+ /**
79
+ * @param options An object that specifies options for the engine.
80
+ */
81
+ constructor(options: Partial<WebWorkersEngineOptions>);
82
+ }
83
+ export {};
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ import "../core/index.js";
3
+ import { ImplementationError } from "../core/index.js";
4
+ const { trunc } = Math;
5
+ /**
6
+ * Represents the base class for web-workers-based engines.
7
+ */
8
+ export class WebWorkersEngine extends EventTarget {
9
+ #launched;
10
+ /**
11
+ * Gets a value indicating whether the engine is running.
12
+ */
13
+ get launched() {
14
+ return this.#launched;
15
+ }
16
+ /**
17
+ * Sets a value indicating whether the engine is running.
18
+ */
19
+ set launched(value) {
20
+ if (this.#launched === value)
21
+ return;
22
+ this.#launched = value;
23
+ this.dispatchEvent(new Event("change"));
24
+ }
25
+ #gap = 0;
26
+ /**
27
+ * Gets the target frame rate limit for the engine.
28
+ */
29
+ get limit() {
30
+ return 1000 / this.#gap;
31
+ }
32
+ /**
33
+ * Sets the target frame rate limit for the engine.
34
+ */
35
+ set limit(value) {
36
+ if (Number.isNaN(value))
37
+ return;
38
+ if (value <= 0)
39
+ return;
40
+ this.#gap = 1000 / value;
41
+ }
42
+ /**
43
+ * Gets the current frames per second (FPS) of the engine.
44
+ * @throws {ImplementationError} If the method is not implemented in a derived class.
45
+ */
46
+ get fps() {
47
+ throw new ImplementationError();
48
+ }
49
+ /**
50
+ * Gets the time elapsed between the current and previous frame, in seconds.
51
+ * @throws {ImplementationError} If the method is not implemented in a derived class.
52
+ */
53
+ get delta() {
54
+ throw new ImplementationError();
55
+ }
56
+ constructor(options = {}) {
57
+ super();
58
+ if (new.target === WebWorkersEngine)
59
+ throw new TypeError("Unable to create an instance of an abstract class");
60
+ const { launch } = options;
61
+ this.#launched = launch ?? false;
62
+ }
63
+ addEventListener(type, listener, options) {
64
+ return super.addEventListener(type, listener, options);
65
+ }
66
+ removeEventListener(type, listener, options) {
67
+ return super.removeEventListener(type, listener, options);
68
+ }
69
+ }
70
+ //#endregion
71
+ //#region Precise engine
72
+ /**
73
+ * A variable frame rate engine.
74
+ */
75
+ export class PreciseEngine extends WebWorkersEngine {
76
+ #fps = 0;
77
+ get fps() {
78
+ return this.#fps;
79
+ }
80
+ get delta() {
81
+ return 1 / this.#fps;
82
+ }
83
+ #previous;
84
+ constructor(options = {}) {
85
+ super(options);
86
+ this.#previous = performance.now();
87
+ setTimeout(this.#callback, 1000 / this.limit);
88
+ }
89
+ ;
90
+ #callback = () => {
91
+ const current = performance.now();
92
+ const difference = current - this.#previous;
93
+ if (this.launched) {
94
+ this.#fps = (1000 / difference);
95
+ this.dispatchEvent(new Event("trigger"));
96
+ }
97
+ else {
98
+ this.#fps = 0;
99
+ }
100
+ this.#previous = current;
101
+ setTimeout(this.#callback, 1000 / this.limit);
102
+ };
103
+ }
104
+ //#endregion
105
+ //#region Static engine
106
+ /**
107
+ * A fixed frame rate engine.
108
+ */
109
+ export class StaticEngine extends WebWorkersEngine {
110
+ get limit() {
111
+ return super.limit;
112
+ }
113
+ set limit(value) {
114
+ super.limit = value;
115
+ this.#fps = value;
116
+ }
117
+ #fps = 0;
118
+ get fps() {
119
+ return this.#fps;
120
+ }
121
+ get delta() {
122
+ return 1 / this.#fps;
123
+ }
124
+ #previous = 0;
125
+ constructor(options = {}) {
126
+ super(options);
127
+ super.limit = 120;
128
+ this.#previous = 0;
129
+ setTimeout(this.#callback);
130
+ }
131
+ #callback = () => {
132
+ const difference = performance.now() - this.#previous;
133
+ const delta = 1000 / this.limit;
134
+ const count = trunc(difference / delta);
135
+ this.#fps = (1000 * count) / difference;
136
+ for (let index = 0; index < count; index++) {
137
+ if (this.launched)
138
+ this.dispatchEvent(new Event("trigger"));
139
+ this.#previous += count * delta;
140
+ }
141
+ setTimeout(this.#callback);
142
+ };
143
+ }
144
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/worker/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from "../core/index.js";
2
+ export * from "./promise.js";
3
+ export * from "./engine.js";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ export * from "../core/index.js";
3
+ export * from "./promise.js";
4
+ export * from "./engine.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/worker/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,16 @@
1
+ import "../core/index.js";
2
+ import { type Promisable } from "../core/index.js";
3
+ declare global {
4
+ export interface PromiseConstructor {
5
+ /**
6
+ * Creates a promise that resolves after the specified timeout.
7
+ * @param timeout The timeout in milliseconds.
8
+ */
9
+ asTimeout(timeout: number): Promise<void>;
10
+ /**
11
+ * Creates a promise that can be controlled with an abort signal.
12
+ * @param callback The callback to execute with an abort signal, resolve, and reject functions.
13
+ */
14
+ withSignal<T = void>(callback: (signal: AbortSignal, resolve: (value: Promisable<T>) => void, reject: (reason?: any) => void) => void): Promise<T>;
15
+ }
16
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ import "../core/index.js";
3
+ import {} from "../core/index.js";
4
+ Promise.asTimeout = async function (timeout) {
5
+ let index;
6
+ try {
7
+ return await new Promise((resolve) => {
8
+ index = setTimeout(resolve, timeout);
9
+ });
10
+ }
11
+ finally {
12
+ clearTimeout(index);
13
+ }
14
+ };
15
+ Promise.withSignal = async function (callback) {
16
+ const controller = new AbortController();
17
+ try {
18
+ return await new Promise((resolve, reject) => callback(controller.signal, resolve, reject));
19
+ }
20
+ finally {
21
+ controller.abort();
22
+ }
23
+ };
24
+ //# sourceMappingURL=promise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promise.js","sourceRoot":"","sources":["../../src/worker/promise.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAmB,MAAM,kBAAkB,CAAC;AAkBnD,OAAO,CAAC,SAAS,GAAG,KAAK,WAAW,OAAe;IAClD,IAAI,KAAyB,CAAC;IAC9B,IAAI,CAAC;QACJ,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACpC,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACJ,CAAC;YAAS,CAAC;QACV,YAAY,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;AACF,CAAC,CAAC;AAEF,OAAO,CAAC,UAAU,GAAG,KAAK,WAAqB,QAAgH;IAC9J,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,IAAI,CAAC;QACJ,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7F,CAAC;YAAS,CAAC;QACV,UAAU,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;AACF,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adaptive-extender",
3
- "version": "0.9.12",
3
+ "version": "0.10.0",
4
4
  "description": "Adaptive library for JS/TS development environments",
5
5
  "type": "module",
6
6
  "main": "./dist/core/index.js",
@@ -9,29 +9,35 @@
9
9
  "*": {
10
10
  "core": [ "dist/core/index.d.ts" ],
11
11
  "node": [ "dist/node/index.d.ts" ],
12
- "web": [ "dist/web/index.d.ts" ]
12
+ "web": [ "dist/web/index.d.ts" ],
13
+ "worker": [ "dist/worker/index.d.ts" ]
13
14
  }
14
15
  },
15
16
  "exports": {
16
17
  ".": {
18
+ "types": "./dist/core/index.d.ts",
17
19
  "import": "./dist/core/index.js",
18
- "require": "./dist/core/index.js",
19
- "types": "./dist/core/index.d.ts"
20
+ "require": "./dist/core/index.js"
20
21
  },
21
22
  "./core": {
23
+ "types": "./dist/core/index.d.ts",
22
24
  "import": "./dist/core/index.js",
23
- "require": "./dist/core/index.js",
24
- "types": "./dist/core/index.d.ts"
25
+ "require": "./dist/core/index.js"
25
26
  },
26
27
  "./node": {
28
+ "types": "./dist/node/index.d.ts",
27
29
  "import": "./dist/node/index.js",
28
- "require": "./dist/node/index.js",
29
- "types": "./dist/node/index.d.ts"
30
+ "require": "./dist/node/index.js"
30
31
  },
31
32
  "./web": {
33
+ "types": "./dist/web/index.d.ts",
32
34
  "import": "./dist/web/index.js",
33
- "require": "./dist/web/index.js",
34
- "types": "./dist/web/index.d.ts"
35
+ "require": "./dist/web/index.js"
36
+ },
37
+ "./worker": {
38
+ "types": "./dist/worker/index.d.ts",
39
+ "import": "./dist/worker/index.js",
40
+ "require": "./dist/worker/index.js"
35
41
  }
36
42
  },
37
43
  "repository": {
@@ -49,7 +55,8 @@
49
55
  "build:core": "tsc -p ./src/core/tsconfig.json",
50
56
  "build:node": "tsc -p ./src/node/tsconfig.json",
51
57
  "build:web": "tsc -p ./src/web/tsconfig.json",
52
- "build": "npm run build:core && npm run build:node && npm run build:web",
58
+ "build:worker": "tsc -p ./src/worker/tsconfig.json",
59
+ "build": "npm run build:core && npm run build:node && npm run build:web && npm run build:worker",
53
60
 
54
61
  "test": "vitest run",
55
62
  "coverage": "vitest run --coverage"