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 +12 -0
- package/README.md +123 -89
- 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/controller.d.ts +11 -4
- package/dist/core/controller.js +19 -4
- package/dist/core/controller.js.map +1 -1
- 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 +14 -9
- package/dist/core/portable.js +29 -0
- 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/package.json +1 -1
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
|
|
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();
|
|
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
|
-
|
|
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);
|
|
87
|
-
Math.toRadians(90);
|
|
88
|
-
Math.toDegrees(Math.PI);
|
|
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);
|
|
100
|
-
selected.toggle(item, true);
|
|
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;
|
|
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
|
|
151
|
-
const parsed
|
|
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
|
-
|
|
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
|
|
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
|
|
180
|
+
const random = Random.global;
|
|
185
181
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
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 =
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
230
|
-
|
|
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
|
-
|
|
235
|
-
|
|
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
|
-
|
|
252
|
-
|
|
253
|
-
|
|
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
|
-
|
|
288
|
+
@Field(String)
|
|
289
|
+
name: string = "";
|
|
274
290
|
}
|
|
275
291
|
|
|
276
292
|
class Article extends Model {
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
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 }
|
|
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
|
|
312
|
-
|
|
|
313
|
-
| `ArrayOf(T)`
|
|
314
|
-
| `SetOf(T)`
|
|
315
|
-
| `RecordOf(T)`
|
|
316
|
-
| `MapOf(K, V)`
|
|
317
|
-
| `Optional(T)`
|
|
318
|
-
| `Nullable(T)`
|
|
319
|
-
| `Deferred(
|
|
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
|
|
364
|
+
const loginForm = document.getElement(HTMLFormElement, "#login-form");
|
|
333
365
|
const requiredInputs = loginForm.getElements(HTMLInputElement, "input[required]");
|
|
334
|
-
const container
|
|
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
|
-
|
|
353
|
-
|
|
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
|
-
|
|
370
|
-
|
|
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
|
-
|
|
379
|
-
repository.save(
|
|
380
|
-
repository.
|
|
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
|
-
|
|
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
|
|
436
|
+
const upper = Reflect.mapNull(maybeNull, text => text.toUpperCase());
|
|
401
437
|
const trimmed = Reflect.mapUndefined(maybeUndefined, text => text.trim());
|
|
402
|
-
const parsed
|
|
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
|
|
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:
|
|
28
|
+
static launch<A extends readonly any[]>(this: Constructor<Controller<A>>, ...args: A): Promise<void>;
|
|
22
29
|
}
|
package/dist/core/controller.js
CHANGED
|
@@ -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
|
|
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;
|
|
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"}
|
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,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<
|
|
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
|
+
/**
|
|
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
|
*/
|
package/dist/core/portable.js
CHANGED
|
@@ -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"}
|
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"}
|