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 +11 -1
- package/README.md +30 -11
- package/dist/core/bigint.d.ts +17 -0
- package/dist/core/bigint.js +11 -0
- package/dist/core/bigint.js.map +1 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.js +2 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/portable.d.ts +10 -10
- package/dist/core/portable.js +4 -6
- package/dist/core/portable.js.map +1 -1
- package/dist/core/version.d.ts +39 -0
- package/dist/core/version.js +75 -0
- package/dist/core/version.js.map +1 -0
- package/dist/web/archive.d.ts +4 -2
- package/dist/web/archive.js +41 -17
- package/dist/web/archive.js.map +1 -1
- package/dist/web/promise.d.ts +1 -1
- package/dist/web/promise.js.map +1 -1
- package/dist/worker/engine.d.ts +83 -0
- package/dist/worker/engine.js +144 -0
- package/dist/worker/engine.js.map +1 -0
- package/dist/worker/index.d.ts +3 -0
- package/dist/worker/index.js +5 -0
- package/dist/worker/index.js.map +1 -0
- package/dist/worker/promise.d.ts +16 -0
- package/dist/worker/promise.js +24 -0
- package/dist/worker/promise.js.map +1 -0
- package/package.json +18 -11
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 `
|
|
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
|
|
21
|
-
|
|
|
22
|
-
| `adaptive-extender/core`
|
|
23
|
-
| `adaptive-extender/node`
|
|
24
|
-
| `adaptive-extender/web`
|
|
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";
|
|
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
|
-
| `
|
|
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
|
-
|
|
400
|
-
repository.save(
|
|
401
|
-
repository.
|
|
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
|
-
|
|
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"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -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";
|
package/dist/core/index.js
CHANGED
|
@@ -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";
|
package/dist/core/index.js.map
CHANGED
|
@@ -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"}
|
package/dist/core/portable.d.ts
CHANGED
|
@@ -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<
|
|
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<
|
|
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<
|
|
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<
|
|
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<
|
|
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<
|
|
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<
|
|
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<
|
|
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<
|
|
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
|
|
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
|
*/
|
package/dist/core/portable.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
357
|
-
|
|
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"}
|
package/dist/web/archive.d.ts
CHANGED
|
@@ -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
|
*/
|
package/dist/web/archive.js
CHANGED
|
@@ -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
|
-
#
|
|
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 (
|
|
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
|
-
|
|
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
|
-
|
|
186
|
-
|
|
187
|
-
|
|
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
|
-
|
|
194
|
-
|
|
195
|
-
|
|
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
|
|
204
|
-
|
|
226
|
+
const manager = this.#manager;
|
|
227
|
+
manager.reset();
|
|
228
|
+
this.#content = manager.content;
|
|
205
229
|
}
|
|
206
230
|
}
|
|
207
231
|
//# sourceMappingURL=archive.js.map
|
package/dist/web/archive.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/web/archive.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,kBAAkB,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/web/archive.ts"],"names":[],"mappings":"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"}
|
package/dist/web/promise.d.ts
CHANGED
|
@@ -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
|
}
|
package/dist/web/promise.js.map
CHANGED
|
@@ -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,
|
|
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 @@
|
|
|
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.
|
|
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
|
-
|
|
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": "
|
|
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"
|