adaptive-extender 0.9.11 → 0.9.13

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,3 +1,15 @@
1
+ ## 0.9.13 (06.04.2026)
2
+ - Added `Version` class for semantic versioning with `parse()`, `tryParse()` support.
3
+ - Added `BigInt` portable support via `BigInt.import()` and `BigInt.export()`.
4
+ - `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.
5
+ - `Promise.withSignal` now has a default type parameter `T = void`.
6
+ - Renamed `EnumFrom` adapter to `EnumAs`.
7
+
8
+ ## 0.9.12 (03.04.2026)
9
+ - `Controller` now accepts typed arguments via the generic parameter `A`; arguments are forwarded from `launch()` to `run()`.
10
+ - Added `finally()` lifecycle hook to `Controller`, called unconditionally after `run()` and `catch()`.
11
+ - Added `EnumAs` adapter for portable enum fields, supporting both TypeScript `enum` declarations (numeric and string) and plain const-object enums.
12
+
1
13
  ## 0.9.11 (17.03.2026)
2
14
  - Moved `environment` module from [node](./src/node/environment.ts) to [core](./src/core/environment.ts).
3
15
  - Added `EnvironmentProvider` class for resolving environment variables.
package/README.md CHANGED
@@ -9,8 +9,6 @@ Extends native prototypes and provides missing standard utilities — with a foc
9
9
 
10
10
  [Change log](./CHANGELOG.md)
11
11
 
12
- ---
13
-
14
12
  ## Installation
15
13
 
16
14
  ```bash
@@ -25,14 +23,14 @@ npm install adaptive-extender
25
23
  | `adaptive-extender/node` | Node.js (includes core) |
26
24
  | `adaptive-extender/web` | Browser (includes core) |
27
25
 
26
+ - - -
27
+
28
28
  ```typescript
29
29
  // Import once — extensions are active everywhere
30
30
  import "adaptive-extender/core";
31
31
  import "adaptive-extender/web"; // Browser only
32
32
  ```
33
33
 
34
- ---
35
-
36
34
  ## Native Extensions
37
35
 
38
36
  ### Number
@@ -42,7 +40,7 @@ volume = volume.clamp(0, 1);
42
40
 
43
41
  // Normalize into [0, 1] or remap between ranges
44
42
  const normalized = currentValue.lerp(sourceMin, sourceMax);
45
- const pixelX = angle.lerp(0, 360, 0, canvasWidth);
43
+ const pixelX = angle.lerp(0, 360, 0, canvasWidth);
46
44
 
47
45
  // True mathematical modulo — works correctly with negative numbers
48
46
  const wrappedIndex = (-1).mod(items.length); // → items.length - 1
@@ -58,7 +56,7 @@ if (String.isWhitespace(userInput)) return;
58
56
 
59
57
  const displayName = username.insteadEmpty("Anonymous");
60
58
 
61
- "hello world".toTitleCase(); // → "Hello World"
59
+ "hello world".toTitleCase(); // → "Hello World"
62
60
  "île-de-france".toLocalTitleCase("fr"); // → "Île-De-France"
63
61
  ```
64
62
 
@@ -68,7 +66,7 @@ const displayName = username.insteadEmpty("Anonymous");
68
66
  for (const index of Array.range(0, 10)) { ... }
69
67
 
70
68
  for (const [user, role] of Array.zip(users, roles)) {
71
- console.log(`${user.name}: ${role}`);
69
+ console.log(`${user.name}: ${role}`);
72
70
  }
73
71
 
74
72
  // Collect an async iterable into an array
@@ -83,9 +81,9 @@ const wasRemoved = items.remove(targetItem);
83
81
 
84
82
  ```typescript
85
83
  const [integer, fractional] = Math.split(3.75); // → [3, 0.75]
86
- Math.sqpw(sideLength); // sideLength²
87
- Math.toRadians(90); // → Math.PI / 2
88
- Math.toDegrees(Math.PI); // → 180
84
+ Math.sqpw(sideLength); // sideLength²
85
+ Math.toRadians(90); // → Math.PI / 2
86
+ Math.toDegrees(Math.PI); // → 180
89
87
 
90
88
  Math.meanArithmetic(1, 2, 3, 4); // → 2.5
91
89
  Math.meanGeometric(4, 16);
@@ -96,8 +94,8 @@ Math.meanHarmonic(1, 2, 4);
96
94
 
97
95
  ```typescript
98
96
  // Like classList.toggle
99
- selected.toggle(item); // add if absent, remove if present
100
- selected.toggle(item, true); // force add
97
+ selected.toggle(item); // add if absent, remove if present
98
+ selected.toggle(item, true); // force add
101
99
  selected.toggle(item, false); // force remove
102
100
 
103
101
  // Add only if key is not already present
@@ -112,11 +110,11 @@ const safeDate = new Date("invalid").insteadInvalid(new Date());
112
110
  ```typescript
113
111
  const request = fetch("/api/data");
114
112
 
115
- if (await request.isSettled) { ... }
113
+ if (await request.isSettled) { ... }
116
114
  if (await request.isResolved) { ... }
117
115
  if (await request.isRejected) { ... }
118
116
 
119
- const responseData = await request.value; // throws if rejected
117
+ const responseData = await request.value; // throws if rejected
120
118
  const rejectReason = await request.reason; // throws if resolved
121
119
  ```
122
120
 
@@ -135,8 +133,6 @@ throw new ImplementationError(); // sealed, cannot be subclassed
135
133
  typename(value); // → "String", "Null", "User", ...
136
134
  ```
137
135
 
138
- ---
139
-
140
136
  ## Classes
141
137
 
142
138
  ### Timespan
@@ -147,15 +143,15 @@ Value object for time intervals. Eliminates raw millisecond arithmetic.
147
143
  import { Timespan } from "adaptive-extender/core";
148
144
 
149
145
  const sessionDuration = Timespan.fromComponents(0, 30, 0); // 30 minutes
150
- const uptime = Timespan.fromValue(process.uptime() * 1000);
151
- const parsed = Timespan.parse("1.02:30:00.500"); // 1d 2h 30m 0.5s
146
+ const uptime = Timespan.fromValue(process.uptime() * 1000);
147
+ const parsed = Timespan.parse("1.02:30:00.500"); // 1d 2h 30m 0.5s
152
148
 
153
149
  console.log(uptime.toString()); // "0.00:12:45.123"
154
150
 
155
151
  uptime.minutes = 0; // other components recalculate automatically
156
152
 
157
153
  if (uptime.valueOf() > sessionDuration.valueOf()) {
158
- console.log("Session expired");
154
+ console.log("Session expired");
159
155
  }
160
156
  ```
161
157
 
@@ -169,7 +165,7 @@ import { Color, ColorFormats } from "adaptive-extender/core";
169
165
  const orange = Color.fromRGB(255, 128, 0);
170
166
  const parsed = Color.parse("#ff8800");
171
167
 
172
- orange.hue = 200; // RGB recalculates automatically
168
+ orange.hue = 200; // RGB recalculates automatically
173
169
  orange.alpha = 0.8;
174
170
 
175
171
  console.log(orange.toString({ format: ColorFormats.hsl, deep: true }));
@@ -181,20 +177,20 @@ console.log(orange.toString({ format: ColorFormats.hsl, deep: true }));
181
177
  ```typescript
182
178
  import { Random } from "adaptive-extender/core";
183
179
 
184
- const rng = Random.global;
180
+ const random = Random.global;
185
181
 
186
- rng.boolean(0.9); // true with 90% probability
187
- rng.number(0, 1); // float [0, 1)
188
- rng.integer(1, 6); // int [1, 6]
189
- rng.item(options); // random element from array
190
- rng.subarray(items, 3); // 3 random elements
191
- rng.shuffle(array); // shuffle in place
182
+ random.boolean(0.9); // true with 90% probability
183
+ random.number(0, 1); // float [0, 1)
184
+ random.integer(1, 6); // int [1, 6]
185
+ random.item(options); // random element from array
186
+ random.subarray(items, 3); // 3 random elements
187
+ random.shuffle(array); // shuffle in place
192
188
 
193
189
  // Weighted selection
194
- const loot = rng.case(new Map([
195
- ["common", 70],
196
- ["rare", 25],
197
- ["legendary", 5],
190
+ const loot = random.case(new Map([
191
+ ["common", 70],
192
+ ["rare", 25],
193
+ ["legendary", 5],
198
194
  ]));
199
195
  ```
200
196
 
@@ -205,17 +201,29 @@ Mathematical vectors with a LINQ-style iteration API.
205
201
  ```typescript
206
202
  import { Vector, Vector2D, Vector3D } from "adaptive-extender/core";
207
203
 
208
- const position = new Vector2D(3, 4);
204
+ const position = new Vector2D(3, 4);
209
205
  const direction = Vector3D.fromScalar(1); // (1, 1, 1)
210
206
 
211
207
  // LINQ-like methods over components
212
- const normalized = Vector3D.fromVector(
213
- direction.map(component => component / Math.sqrt(3))
214
- );
208
+ const normalized = Vector3D.fromVector(direction.map(component => component / Math.sqrt(3)));
215
209
 
216
210
  Vector.isFinite(position);
217
211
  const safePosition = position.insteadNaN(Vector2D.newZero);
218
- const point = Vector2D.parse("(10, 20)"); // → Vector2D { x: 10, y: 20 }
212
+ const point = Vector2D.parse("(10, 20)"); // → Vector2D { x: 10, y: 20 }
213
+ ```
214
+
215
+ ### Version
216
+
217
+ Immutable semantic version with `major.minor.patch` format.
218
+
219
+ ```typescript
220
+ import { Version } from "adaptive-extender/core";
221
+
222
+ const v = new Version(1, 2, 3);
223
+ console.log(v.toString()); // → "1.2.3"
224
+
225
+ const parsed = Version.parse("2.0.0");
226
+ const safe = Version.tryParse(userInput); // → Version | null
219
227
  ```
220
228
 
221
229
  ### Controller
@@ -225,19 +233,23 @@ Abstract base class for async tasks with centralized error handling.
225
233
  ```typescript
226
234
  import { Controller } from "adaptive-extender/core";
227
235
 
228
- class InitTask extends Controller {
229
- async run(): Promise<void> {
230
- const response = await fetch("/api/init");
231
- // ...
232
- }
236
+ class InitTask extends Controller<[port: number]> {
237
+ async run(port: number): Promise<void> {
238
+ const response = await fetch(`/api/init?port=${port}`);
239
+ // ...
240
+ }
233
241
 
234
- async catch(error: Error): Promise<void> {
235
- console.error("Init failed:", error.message);
236
- }
242
+ async catch(error: Error): Promise<void> {
243
+ console.error("Init failed:", error.message);
244
+ }
245
+
246
+ async finally(): Promise<void> {
247
+ console.log("Done.");
248
+ }
237
249
  }
238
250
 
239
- // Creates an instance and runs it — errors are routed to catch()
240
- await InitTask.launch();
251
+ // Creates an instance and runs it — errors are routed to catch(), finally() always runs
252
+ await InitTask.launch(8080);
241
253
  ```
242
254
 
243
255
  ### EnvironmentProvider
@@ -248,9 +260,14 @@ Deserializes environment variables into a strictly typed model. JSON values are
248
260
  import { EnvironmentProvider, Model, Field, Optional } from "adaptive-extender/core";
249
261
 
250
262
  class AppConfig extends Model {
251
- @Field(String) DB_HOST: string = "localhost";
252
- @Field(Number) DB_PORT: number = 5432;
253
- @Field(Optional(String)) LOG_LEVEL?: string;
263
+ @Field(String)
264
+ DB_HOST: string = "localhost";
265
+
266
+ @Field(Number)
267
+ DB_PORT: number = 5432;
268
+
269
+ @Field(Optional(String))
270
+ LOG_LEVEL?: string;
254
271
  }
255
272
 
256
273
  const config = EnvironmentProvider.resolve(process.env, AppConfig);
@@ -258,8 +275,6 @@ const config = EnvironmentProvider.resolve(process.env, AppConfig);
258
275
  // Throws TypeError if a required variable is missing or has the wrong type
259
276
  ```
260
277
 
261
- ---
262
-
263
278
  ## Portable Data System
264
279
 
265
280
  Binds classes to their schema via decorators. Importing from JSON validates types automatically and returns a real class instance.
@@ -270,15 +285,25 @@ Binds classes to their schema via decorators. Importing from JSON validates type
270
285
  import { Model, Field, ArrayOf, Optional, Nullable } from "adaptive-extender/core";
271
286
 
272
287
  class Tag extends Model {
273
- @Field(String) name: string = "";
288
+ @Field(String)
289
+ name: string = "";
274
290
  }
275
291
 
276
292
  class Article extends Model {
277
- @Field(String) title: string = "";
278
- @Field(Number) views: number = 0;
279
- @Field(ArrayOf(Tag)) tags: Tag[] = [];
280
- @Field(Optional(String)) subtitle?: string;
281
- @Field(Nullable(String)) draft: string | null = null;
293
+ @Field(String)
294
+ title: string = "";
295
+
296
+ @Field(Number)
297
+ views: number = 0;
298
+
299
+ @Field(ArrayOf(Tag))
300
+ tags: Tag[] = [];
301
+
302
+ @Field(Optional(String))
303
+ subtitle?: string;
304
+
305
+ @Field(Nullable(String))
306
+ draft: string | null = null;
282
307
  }
283
308
 
284
309
  const article = Article.import(json, "api.article");
@@ -293,32 +318,39 @@ const raw = Article.export(article); // → plain object, ready for JSON.stringi
293
318
  ```typescript
294
319
  import { Model, Field, Descendant, DiscriminatorKey } from "adaptive-extender/core";
295
320
 
296
- class Dog extends Model { @Field(String) breed: string = ""; }
297
- class Cat extends Model { @Field(Boolean) indoor: boolean = true; }
298
-
299
321
  @DiscriminatorKey("kind")
300
322
  @Descendant(Dog, "dog")
301
323
  @Descendant(Cat, "cat")
302
- abstract class Animal extends Model {}
324
+ abstract class Animal extends Model {
325
+ }
326
+
327
+ class Dog extends Animal {
328
+ @Field(String)
329
+ breed: string = "";
330
+ }
331
+
332
+ class Cat extends Animal {
333
+ @Field(Boolean)
334
+ indoor: boolean = true;
335
+ }
303
336
 
304
337
  // { kind: "dog", breed: "Husky" } → Dog instance
305
- // { kind: "cat", indoor: true } → Cat instance
338
+ // { kind: "cat", indoor: true } → Cat instance
306
339
  const animal = Animal.import(json, "api.animal");
307
340
  ```
308
341
 
309
342
  ### Adapters
310
343
 
311
- | Adapter | Type |
312
- | :------------- | :------------------------------------- |
313
- | `ArrayOf(T)` | `T[]` |
314
- | `SetOf(T)` | `Set<T>` ↔ `T[]` |
315
- | `RecordOf(T)` | `Map<string, T>` ↔ `Record<string, T>` |
316
- | `MapOf(K, V)` | `Map<K, V>` ↔ `[K, V][]` |
317
- | `Optional(T)` | `T \| undefined` |
318
- | `Nullable(T)` | `T \| null` |
319
- | `Deferred(fn)` | Circular references |
320
-
321
- ---
344
+ | Adapter | Type |
345
+ | :----------------- | :------------------------------------- |
346
+ | `ArrayOf(T)` | `T[]` |
347
+ | `SetOf(T)` | `Set<T>` ↔ `T[]` |
348
+ | `RecordOf(T)` | `Map<string, T>` ↔ `Record<string, T>` |
349
+ | `MapOf(K, V)` | `Map<K, V>` ↔ `[K, V][]` |
350
+ | `Optional(T)` | `T \| undefined` |
351
+ | `Nullable(T)` | `T \| null` |
352
+ | `Deferred(_ => T)` | Circular references |
353
+ | `EnumAs(E)` | TypeScript `enum` or const-object enum |
322
354
 
323
355
  ## Web
324
356
 
@@ -329,9 +361,9 @@ Type-safe wrappers over `querySelector` — throw instead of returning `null`.
329
361
  ```typescript
330
362
  import "adaptive-extender/web";
331
363
 
332
- const loginForm = document.getElement(HTMLFormElement, "#login-form");
364
+ const loginForm = document.getElement(HTMLFormElement, "#login-form");
333
365
  const requiredInputs = loginForm.getElements(HTMLInputElement, "input[required]");
334
- const container = loginForm.getClosest(HTMLDivElement, ".wrapper");
366
+ const container = loginForm.getClosest(HTMLDivElement, ".wrapper");
335
367
 
336
368
  // Async variants — useful with Shadow DOM
337
369
  const canvas = await document.getElementAsync(HTMLCanvasElement, "#scene");
@@ -349,8 +381,8 @@ const engine = new FastEngine({ launch: true });
349
381
  engine.limit = 60;
350
382
 
351
383
  engine.addEventListener("trigger", () => {
352
- const deltaTime = engine.delta; // seconds since last frame
353
- // update scene...
384
+ const deltaTime = engine.delta; // seconds since last frame
385
+ // update scene...
354
386
  });
355
387
 
356
388
  // Static — fixed fps via setTimeout
@@ -366,8 +398,11 @@ Type-safe localStorage with buffered access and auto-save.
366
398
  import { ArchiveRepository, Model, Field } from "adaptive-extender/web";
367
399
 
368
400
  class Settings extends Model {
369
- @Field(Boolean) darkMode: boolean = false;
370
- @Field(Number) volume: number = 1;
401
+ @Field(Boolean)
402
+ darkMode: boolean = false;
403
+
404
+ @Field(Number)
405
+ volume: number = 1;
371
406
  }
372
407
 
373
408
  const repository = new ArchiveRepository("settings", Settings, new Settings());
@@ -375,9 +410,11 @@ const repository = new ArchiveRepository("settings", Settings, new Settings());
375
410
  const settings = repository.content;
376
411
  settings.volume = 0.5;
377
412
 
378
- repository.save(); // persist immediately
379
- repository.save(3000); // debounced — persist after 3 seconds
380
- repository.reset(); // revert to initial state
413
+ // save() is async — resolves when the write completes, rejects on failure
414
+ await repository.save(); // save immediately
415
+ await repository.save(3000); // debounced save after 3 seconds
416
+ // A pending save is cancelled (AbortError) when superseded by a new call
417
+ repository.reset(); // abort pending save and revert to initial state
381
418
  ```
382
419
 
383
420
  ### Promise Utilities
@@ -387,23 +424,20 @@ await Promise.asTimeout(1000);
387
424
 
388
425
  // AbortController is created and aborted automatically on completion
389
426
  const result = await Promise.withSignal((signal, resolve, reject) => {
390
- fetch("/api/data", { signal }).then(resolve).catch(reject);
427
+ buttonAccept.addEventListener("click", event => resolve(event.result), { signal });
428
+ buttonDecline.addEventListener("click", event => reject(event.error), { signal });
391
429
  });
392
430
  ```
393
431
 
394
- ---
395
-
396
432
  ## Reflect Utilities
397
433
 
398
434
  ```typescript
399
435
  // Apply a function only if the value is not null / undefined
400
- const upper = Reflect.mapNull(maybeNull, text => text.toUpperCase());
436
+ const upper = Reflect.mapNull(maybeNull, text => text.toUpperCase());
401
437
  const trimmed = Reflect.mapUndefined(maybeUndefined, text => text.trim());
402
- const parsed = Reflect.mapNullable(maybeNullable, text => parseInt(text));
438
+ const parsed = Reflect.mapNullable(maybeNullable, text => Number.parseInt(text));
403
439
  ```
404
440
 
405
- ---
406
-
407
441
  ## License
408
442
 
409
443
  Apache-2.0
@@ -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"}
@@ -1,22 +1,29 @@
1
1
  import "./error.js";
2
+ import { type Constructor } from "./global.js";
2
3
  /**
3
4
  * Represents a controller that can be launched and handle errors.
4
5
  */
5
- export declare abstract class Controller {
6
+ export declare abstract class Controller<A extends readonly any[] = []> {
6
7
  /**
7
- * @throws {TypeError} If the constructor is called on ectly.
8
+ * @throws {TypeError} If the constructor is called directly.
8
9
  */
9
10
  constructor();
10
11
  /**
11
12
  * When overridden in a derived class, executes the controller's logic.
13
+ * @param args The arguments forwarded from {@link launch}.
12
14
  */
13
- run(): Promise<void>;
15
+ run(...args: A): Promise<void>;
14
16
  /**
15
17
  * When overridden in a derived class, handles an error that occurred during the controller's execution.
16
18
  */
17
19
  catch(error: Error): Promise<void>;
20
+ /**
21
+ * When overridden in a derived class, runs unconditionally after {@link run} and {@link catch}.
22
+ */
23
+ finally(): Promise<void>;
18
24
  /**
19
25
  * Creates an instance of the controller and runs it.
26
+ * @param args The arguments to forward to {@link run}.
20
27
  */
21
- static launch(this: new () => Controller): Promise<void>;
28
+ static launch<A extends readonly any[]>(this: Constructor<Controller<A>>, ...args: A): Promise<void>;
22
29
  }
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  import "./error.js";
3
+ import {} from "./global.js";
3
4
  //#region Controller
4
5
  /**
5
6
  * Represents a controller that can be launched and handle errors.
6
7
  */
7
8
  export class Controller {
8
9
  /**
9
- * @throws {TypeError} If the constructor is called on ectly.
10
+ * @throws {TypeError} If the constructor is called directly.
10
11
  */
11
12
  constructor() {
12
13
  if (new.target === Controller)
@@ -14,25 +15,39 @@ export class Controller {
14
15
  }
15
16
  /**
16
17
  * When overridden in a derived class, executes the controller's logic.
18
+ * @param args The arguments forwarded from {@link launch}.
17
19
  */
18
- async run() {
20
+ async run(...args) {
21
+ void args;
19
22
  }
20
23
  /**
21
24
  * When overridden in a derived class, handles an error that occurred during the controller's execution.
22
25
  */
23
26
  async catch(error) {
27
+ void error;
28
+ }
29
+ /**
30
+ * When overridden in a derived class, runs unconditionally after {@link run} and {@link catch}.
31
+ */
32
+ async finally() {
24
33
  }
25
34
  /**
26
35
  * Creates an instance of the controller and runs it.
36
+ * @param args The arguments to forward to {@link run}.
27
37
  */
28
- static async launch() {
38
+ static async launch(...args) {
29
39
  const controller = Reflect.construct(this, []);
40
+ if (!(controller instanceof this))
41
+ throw new TypeError(`Unable to construct an instance of ${this.name}`);
30
42
  try {
31
- await controller.run();
43
+ await controller.run(...args);
32
44
  }
33
45
  catch (reason) {
34
46
  await controller.catch(Error.from(reason));
35
47
  }
48
+ finally {
49
+ await controller.finally();
50
+ }
36
51
  }
37
52
  }
38
53
  //# sourceMappingURL=controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/core/controller.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,YAAY,CAAC;AAEpB,oBAAoB;AACpB;;GAEG;AACH,MAAM,OAAgB,UAAU;IAC/B;;OAEG;IACH;QACC,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU;YAAE,MAAM,IAAI,SAAS,CAAC,mDAAmD,CAAC,CAAC;IACzG,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,GAAG;IACT,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,KAAY;IACxB,CAAC;IACD;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM;QAClB,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC;YACJ,MAAM,UAAU,CAAC,GAAG,EAAE,CAAC;QACxB,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YACjB,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5C,CAAC;IACF,CAAC;CACD"}
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/core/controller.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,YAAY,CAAC;AACpB,OAAO,EAAoB,MAAM,aAAa,CAAC;AAE/C,oBAAoB;AACpB;;GAEG;AACH,MAAM,OAAgB,UAAU;IAC/B;;OAEG;IACH;QACC,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU;YAAE,MAAM,IAAI,SAAS,CAAC,mDAAmD,CAAC,CAAC;IACzG,CAAC;IACD;;;OAGG;IACH,KAAK,CAAC,GAAG,CAAC,GAAG,IAAO;QACnB,KAAK,IAAI,CAAC;IACX,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,KAAY;QACvB,KAAK,KAAK,CAAC;IACZ,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,OAAO;IACb,CAAC;IACD;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAA6D,GAAG,IAAO;QACzF,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,CAAC,UAAU,YAAY,IAAI,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1G,IAAI,CAAC;YACJ,MAAM,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YACjB,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5C,CAAC;gBAAS,CAAC;YACV,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;QAC5B,CAAC;IACF,CAAC;CACD"}
@@ -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,38 +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
+ /**
107
+ * Creates a portable wrapper for enum types, strictly operating only on enum values.
108
+ * @param reference The enum object reference.
109
+ */
110
+ export declare function EnumAs<T extends Readonly<Record<string, unknown>>>(reference: T): PortableConstructor<T[keyof T], T[keyof T]>;
106
111
  /**
107
112
  * A portable adapter that facilitates the conversion between `Date` instances and millisecond timestamps.
108
113
  */
@@ -332,6 +332,35 @@ export function MapOf(typeKey, typeValue) {
332
332
  },
333
333
  };
334
334
  }
335
+ /**
336
+ * Creates a portable wrapper for enum types, strictly operating only on enum values.
337
+ * @param reference The enum object reference.
338
+ */
339
+ export function EnumAs(reference) {
340
+ const values = new Set();
341
+ for (const [key, value] of Object.entries(reference)) {
342
+ const index = Number(key);
343
+ if (String(index) === key && typeof value === "string" && Reflect.get(reference, value) === index)
344
+ continue;
345
+ values.add(value);
346
+ }
347
+ return {
348
+ [Symbol.hasInstance](instance) {
349
+ return values.has(instance);
350
+ },
351
+ get name() {
352
+ return "Enum";
353
+ },
354
+ import(source, name) {
355
+ if (!values.has(source))
356
+ throw new TypeError(`Unable to import enum from ${name} due to invalid value`);
357
+ return source;
358
+ },
359
+ export(source) {
360
+ return source;
361
+ },
362
+ };
363
+ }
335
364
  /**
336
365
  * A portable adapter that facilitates the conversion between `Date` instances and millisecond timestamps.
337
366
  */
@@ -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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adaptive-extender",
3
- "version": "0.9.11",
3
+ "version": "0.9.13",
4
4
  "description": "Adaptive library for JS/TS development environments",
5
5
  "type": "module",
6
6
  "main": "./dist/core/index.js",