adaptive-extender 0.9.10 → 0.9.12

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,4 +1,9 @@
1
- ## 0.9.10 (17.03.2026)
1
+ ## 0.9.12 (03.04.2026)
2
+ - `Controller` now accepts typed arguments via the generic parameter `A`; arguments are forwarded from `launch()` to `run()`.
3
+ - Added `finally()` lifecycle hook to `Controller`, called unconditionally after `run()` and `catch()`.
4
+ - Added `EnumFrom` adapter for portable enum fields, supporting both TypeScript `enum` declarations (numeric and string) and plain const-object enums.
5
+
6
+ ## 0.9.11 (17.03.2026)
2
7
  - Moved `environment` module from [node](./src/node/environment.ts) to [core](./src/core/environment.ts).
3
8
  - Added `EnvironmentProvider` class for resolving environment variables.
4
9
  - Added `RecordOf` and `MapOf` adapters for portable maps in [portable](./src/core/portable.ts) module.
package/README.md CHANGED
@@ -1,128 +1,424 @@
1
1
  # Adaptive Extender
2
2
 
3
3
  [![NPM Version](https://img.shields.io/npm/v/adaptive-extender.svg)](https://www.npmjs.com/package/adaptive-extender)
4
+ [![License](https://img.shields.io/npm/l/adaptive-extender.svg)](./LICENSE)
5
+ [![Bundle Size](https://img.shields.io/bundlephobia/minzip/adaptive-extender)](https://bundlephobia.com/package/adaptive-extender)
6
+ [![TypeScript](https://img.shields.io/badge/types-included-3178c6.svg)](https://www.typescriptlang.org/)
4
7
 
5
- Adaptive library for JS/TS development environments.
6
-
7
- **Adaptive Extender** enables strict portability, structured time management, and LINQ-like collections by extending native prototypes. It provides a robust standard library layer for enterprise-grade architecture.
8
+ Extends native prototypes and provides missing standard utilities — with a focus on strict typing, safety, and code readability.
8
9
 
9
10
  [Change log](./CHANGELOG.md)
10
11
 
11
- ---
12
+ ## Installation
13
+
14
+ ```bash
15
+ npm install adaptive-extender
16
+ ```
17
+
18
+ ## Packages
19
+
20
+ | Package | Environment |
21
+ | :----------------------- | :---------------------- |
22
+ | `adaptive-extender/core` | Browser, Node.js, Deno |
23
+ | `adaptive-extender/node` | Node.js (includes core) |
24
+ | `adaptive-extender/web` | Browser (includes core) |
25
+
26
+ - - -
27
+
28
+ ```typescript
29
+ // Import once — extensions are active everywhere
30
+ import "adaptive-extender/core";
31
+ import "adaptive-extender/web"; // Browser only
32
+ ```
33
+
34
+ ## Native Extensions
35
+
36
+ ### Number
12
37
 
13
- ## Core Systems
38
+ ```typescript
39
+ volume = volume.clamp(0, 1);
40
+
41
+ // Normalize into [0, 1] or remap between ranges
42
+ const normalized = currentValue.lerp(sourceMin, sourceMax);
43
+ const pixelX = angle.lerp(0, 360, 0, canvasWidth);
44
+
45
+ // True mathematical modulo — works correctly with negative numbers
46
+ const wrappedIndex = (-1).mod(items.length); // → items.length - 1
47
+
48
+ // Chainable fallback for invalid values
49
+ const ratio = (numerator / denominator).insteadNaN(0).insteadInfinity(1);
50
+ ```
51
+
52
+ ### String
53
+
54
+ ```typescript
55
+ if (String.isWhitespace(userInput)) return;
14
56
 
15
- ### 1. Strict Data Portability (`Portable`)
16
- Integrates validation and serialization directly into domain models via decorators. The class definition serves as the authoritative schema, enabling automatic type checking and polymorphic resolution.
57
+ const displayName = username.insteadEmpty("Anonymous");
58
+
59
+ "hello world".toTitleCase(); // → "Hello World"
60
+ "île-de-france".toLocalTitleCase("fr"); // → "Île-De-France"
61
+ ```
62
+
63
+ ### Array
17
64
 
18
65
  ```typescript
19
- import { Model, Field, ArrayOf } from "adaptive-extender/core";
66
+ for (const index of Array.range(0, 10)) { ... }
20
67
 
21
- class User extends Model {
22
- @Field(String) name: string = "Guest";
23
- @Field(ArrayOf(Number)) scores: number[] = [];
68
+ for (const [user, role] of Array.zip(users, roles)) {
69
+ console.log(`${user.name}: ${role}`);
24
70
  }
25
71
 
26
- // 1. Validates types at runtime
27
- // 2. Instantiates actual 'User' class
28
- // 3. Throws informative errors on failure
29
- const user = User.import(json, "api.user");
72
+ // Collect an async iterable into an array
73
+ const packets = await Array.fromAsync(readableStream);
74
+
75
+ items.swap(0, items.length - 1);
76
+ items.resize(10, null);
77
+ const wasRemoved = items.remove(targetItem);
78
+ ```
79
+
80
+ ### Math
81
+
82
+ ```typescript
83
+ const [integer, fractional] = Math.split(3.75); // → [3, 0.75]
84
+ Math.sqpw(sideLength); // sideLength²
85
+ Math.toRadians(90); // → Math.PI / 2
86
+ Math.toDegrees(Math.PI); // → 180
87
+
88
+ Math.meanArithmetic(1, 2, 3, 4); // → 2.5
89
+ Math.meanGeometric(4, 16);
90
+ Math.meanHarmonic(1, 2, 4);
91
+ ```
92
+
93
+ ### Set / Map / Date
94
+
95
+ ```typescript
96
+ // Like classList.toggle
97
+ selected.toggle(item); // add if absent, remove if present
98
+ selected.toggle(item, true); // force add
99
+ selected.toggle(item, false); // force remove
100
+
101
+ // Add only if key is not already present
102
+ cache.add(requestKey, response); // → false if key exists
103
+
104
+ // Detect and replace invalid dates
105
+ const safeDate = new Date("invalid").insteadInvalid(new Date());
106
+ ```
107
+
108
+ ### Promise
109
+
110
+ ```typescript
111
+ const request = fetch("/api/data");
112
+
113
+ if (await request.isSettled) { ... }
114
+ if (await request.isResolved) { ... }
115
+ if (await request.isRejected) { ... }
116
+
117
+ const responseData = await request.value; // throws if rejected
118
+ const rejectReason = await request.reason; // throws if resolved
119
+ ```
120
+
121
+ ### Error / Global
122
+
123
+ ```typescript
124
+ // Wrap anything into an Error (string, undefined, object)
125
+ const error = Error.from(thrown);
126
+
127
+ // Assert non-null — throws ReferenceError with a message
128
+ const appRoot = ReferenceError.suppress(document.getElementById("app"));
129
+
130
+ throw new ImplementationError(); // sealed, cannot be subclassed
131
+
132
+ // Get type name without typeof / manual checks
133
+ typename(value); // → "String", "Null", "User", ...
30
134
  ```
31
135
 
32
- ### 2. Value-Object Time (`Timespan`)
33
- A dedicated structural type for time intervals. It encapsulates duration logic, preventing logic errors associated with raw millisecond arithmetic.
136
+ ## Classes
137
+
138
+ ### Timespan
139
+
140
+ Value object for time intervals. Eliminates raw millisecond arithmetic.
34
141
 
35
142
  ```typescript
36
143
  import { Timespan } from "adaptive-extender/core";
37
144
 
38
- // Readable, safe arithmetic
39
- const cacheDuration = Timespan.fromComponents(0, 0, 5, 0); // 5 minutes
145
+ const sessionDuration = Timespan.fromComponents(0, 30, 0); // 30 minutes
40
146
  const uptime = Timespan.fromValue(process.uptime() * 1000);
147
+ const parsed = Timespan.parse("1.02:30:00.500"); // 1d 2h 30m 0.5s
148
+
149
+ console.log(uptime.toString()); // "0.00:12:45.123"
150
+
151
+ uptime.minutes = 0; // other components recalculate automatically
41
152
 
42
- // Use valueOf() for precise millisecond comparison
43
- if (uptime.valueOf() > cacheDuration.valueOf()) {
44
- console.log("Cache expired");
153
+ if (uptime.valueOf() > sessionDuration.valueOf()) {
154
+ console.log("Session expired");
45
155
  }
156
+ ```
157
+
158
+ ### Color
159
+
160
+ Full color object with RGB, HSL, HEX support and alpha channel. Changing a component in one color space automatically recalculates the other.
161
+
162
+ ```typescript
163
+ import { Color, ColorFormats } from "adaptive-extender/core";
164
+
165
+ const orange = Color.fromRGB(255, 128, 0);
166
+ const parsed = Color.parse("#ff8800");
46
167
 
47
- // Structured formatting
48
- console.log(uptime.toString()); // e.g. "0.00:12:45.123"
168
+ orange.hue = 200; // RGB recalculates automatically
169
+ orange.alpha = 0.8;
170
+
171
+ console.log(orange.toString({ format: ColorFormats.hsl, deep: true }));
172
+ // → "hsla(200, 100%, 50%, 0.8)"
49
173
  ```
50
174
 
51
- ### 3. Native Prototype Extensions
52
- Native prototypes (`Array`, `String`, `Math`) are augmented with missing standard utility methods. These extensions are non-enumerable and designed to be conflict-free.
175
+ ### Random
53
176
 
54
177
  ```typescript
55
- // Sequence generation
56
- for (const i of Array.range(0, 5)) { ... }
178
+ import { Random } from "adaptive-extender/core";
179
+
180
+ const random = Random.global;
181
+
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
188
+
189
+ // Weighted selection
190
+ const loot = random.case(new Map([
191
+ ["common", 70],
192
+ ["rare", 25],
193
+ ["legendary", 5],
194
+ ]));
195
+ ```
57
196
 
58
- // Parallel iteration
59
- for (const [user, role] of Array.zip(users, roles)) { ... }
197
+ ### Vector
60
198
 
61
- // Safe Swap
62
- items.swap(0, items.length - 1);
199
+ Mathematical vectors with a LINQ-style iteration API.
200
+
201
+ ```typescript
202
+ import { Vector, Vector2D, Vector3D } from "adaptive-extender/core";
203
+
204
+ const position = new Vector2D(3, 4);
205
+ const direction = Vector3D.fromScalar(1); // (1, 1, 1)
206
+
207
+ // LINQ-like methods over components
208
+ const normalized = Vector3D.fromVector(direction.map(component => component / Math.sqrt(3)));
209
+
210
+ Vector.isFinite(position);
211
+ const safePosition = position.insteadNaN(Vector2D.newZero);
212
+ const point = Vector2D.parse("(10, 20)"); // → Vector2D { x: 10, y: 20 }
63
213
  ```
64
214
 
65
- ### 4. Structured Primitives (`Vector`, `Controller`)
66
- Provides abstract base classes for mathematical vectors and unified controller logic for complex execution flows.
215
+ ### Controller
216
+
217
+ Abstract base class for async tasks with centralized error handling.
67
218
 
68
219
  ```typescript
69
220
  import { Controller } from "adaptive-extender/core";
70
221
 
71
- // Cancellable, error-handling async worker
72
- class ImportTask extends Controller {
73
- async run() { ... }
74
- async catch(err) { ... }
222
+ class InitTask extends Controller<[port: number]> {
223
+ async run(port: number): Promise<void> {
224
+ const response = await fetch(`/api/init?port=${port}`);
225
+ // ...
226
+ }
227
+
228
+ async catch(error: Error): Promise<void> {
229
+ console.error("Init failed:", error.message);
230
+ }
231
+
232
+ async finally(): Promise<void> {
233
+ console.log("Done.");
234
+ }
75
235
  }
236
+
237
+ // Creates an instance and runs it — errors are routed to catch(), finally() always runs
238
+ await InitTask.launch(8080);
76
239
  ```
77
240
 
78
- ---
241
+ ### EnvironmentProvider
79
242
 
80
- ## Native Extensions
243
+ Deserializes environment variables into a strictly typed model. JSON values are parsed automatically.
244
+
245
+ ```typescript
246
+ import { EnvironmentProvider, Model, Field, Optional } from "adaptive-extender/core";
247
+
248
+ class AppConfig extends Model {
249
+ @Field(String)
250
+ DB_HOST: string = "localhost";
251
+
252
+ @Field(Number)
253
+ DB_PORT: number = 5432;
254
+
255
+ @Field(Optional(String))
256
+ LOG_LEVEL?: string;
257
+ }
81
258
 
82
- A collection of high-performance utilities that eliminate common boilerplate.
259
+ const config = EnvironmentProvider.resolve(process.env, AppConfig);
260
+ // config.DB_PORT is a number, not a string
261
+ // Throws TypeError if a required variable is missing or has the wrong type
262
+ ```
83
263
 
84
- | Feature | Native JavaScript | Adaptive Extender |
85
- | :--- | :--- | :--- |
86
- | **Math Clamping** | `Math.min(Math.max(val, 0), 100)` | `val.clamp(0, 100)` |
87
- | **Math Remap** | `(val - a) * (d - c) / (b - a) + c` | `val.lerp(a, b, c, d)` |
88
- | **Modulo** | `((val % n) + n) % n` | `val.mod(n)` |
89
- | **Random** | `Math.floor(Math.random()...` | `Random.global.number(min, max)` |
90
- | **String Empty** | `!str \|\| str.trim().length === 0` | `String.isWhitespace(str)` |
91
- | **String Defaults** | `str \|\| "default"` | `str.insteadEmpty("default")` |
92
- | **Async List** | *Manual loop with `Promise.all`* | `await Array.fromAsync(stream)` |
93
- | **Promise State** | *n/a* | `await task.isSettled` |
264
+ ## Portable Data System
94
265
 
95
- ---
266
+ Binds classes to their schema via decorators. Importing from JSON validates types automatically and returns a real class instance.
96
267
 
97
- ## Architecture
268
+ ### Basic Usage
98
269
 
99
- - **`adaptive-extender/core`**:
100
- Universal utilities. Works in Browser, Node, Deno.
101
- *(Math, arrays, promises, portable system, time)*
270
+ ```typescript
271
+ import { Model, Field, ArrayOf, Optional, Nullable } from "adaptive-extender/core";
102
272
 
103
- - **`adaptive-extender/node`**:
104
- Backend-specific tools.
105
- *(Enhanced `fs` operations, strict environment variable parsing)*
273
+ class Tag extends Model {
274
+ @Field(String)
275
+ name: string = "";
276
+ }
106
277
 
107
- - **`adaptive-extender/web`**:
108
- Frontend-specific tools.
109
- *(DOM element wrappers, parent-node extensions)*
278
+ class Article extends Model {
279
+ @Field(String)
280
+ title: string = "";
281
+
282
+ @Field(Number)
283
+ views: number = 0;
284
+
285
+ @Field(ArrayOf(Tag))
286
+ tags: Tag[] = [];
287
+
288
+ @Field(Optional(String))
289
+ subtitle?: string;
290
+
291
+ @Field(Nullable(String))
292
+ draft: string | null = null;
293
+ }
110
294
 
111
- ## Installation
295
+ const article = Article.import(json, "api.article");
296
+ // article instanceof Article → true
297
+ // TypeError with exact path on failure: "api.article.tags[2].name"
112
298
 
113
- ```bash
114
- npm install adaptive-extender
299
+ const raw = Article.export(article); // → plain object, ready for JSON.stringify
115
300
  ```
116
301
 
117
- ## Usage
302
+ ### Polymorphism
118
303
 
119
304
  ```typescript
120
- import "adaptive-extender/core";
305
+ import { Model, Field, Descendant, DiscriminatorKey } from "adaptive-extender/core";
306
+
307
+ @DiscriminatorKey("kind")
308
+ @Descendant(Dog, "dog")
309
+ @Descendant(Cat, "cat")
310
+ abstract class Animal extends Model {
311
+ }
121
312
 
122
- // Extensions are now active
123
- if (String.isEmpty(config.name)) {
124
- // ...
313
+ class Dog extends Animal {
314
+ @Field(String)
315
+ breed: string = "";
125
316
  }
317
+
318
+ class Cat extends Animal {
319
+ @Field(Boolean)
320
+ indoor: boolean = true;
321
+ }
322
+
323
+ // { kind: "dog", breed: "Husky" } → Dog instance
324
+ // { kind: "cat", indoor: true } → Cat instance
325
+ const animal = Animal.import(json, "api.animal");
326
+ ```
327
+
328
+ ### Adapters
329
+
330
+ | Adapter | Type |
331
+ | :----------------- | :------------------------------------- |
332
+ | `ArrayOf(T)` | `T[]` |
333
+ | `SetOf(T)` | `Set<T>` ↔ `T[]` |
334
+ | `RecordOf(T)` | `Map<string, T>` ↔ `Record<string, T>` |
335
+ | `MapOf(K, V)` | `Map<K, V>` ↔ `[K, V][]` |
336
+ | `Optional(T)` | `T \| undefined` |
337
+ | `Nullable(T)` | `T \| null` |
338
+ | `Deferred(_ => T)` | Circular references |
339
+ | `EnumFrom(E)` | TypeScript `enum` or const-object enum |
340
+
341
+ ## Web
342
+
343
+ ### DOM Queries
344
+
345
+ Type-safe wrappers over `querySelector` — throw instead of returning `null`.
346
+
347
+ ```typescript
348
+ import "adaptive-extender/web";
349
+
350
+ const loginForm = document.getElement(HTMLFormElement, "#login-form");
351
+ const requiredInputs = loginForm.getElements(HTMLInputElement, "input[required]");
352
+ const container = loginForm.getClosest(HTMLDivElement, ".wrapper");
353
+
354
+ // Async variants — useful with Shadow DOM
355
+ const canvas = await document.getElementAsync(HTMLCanvasElement, "#scene");
356
+ ```
357
+
358
+ ### Game Engines
359
+
360
+ Three update-loop engines for UI animation or game logic:
361
+
362
+ ```typescript
363
+ import { FastEngine, StaticEngine } from "adaptive-extender/web";
364
+
365
+ // Fast — requestAnimationFrame based
366
+ const engine = new FastEngine({ launch: true });
367
+ engine.limit = 60;
368
+
369
+ engine.addEventListener("trigger", () => {
370
+ const deltaTime = engine.delta; // seconds since last frame
371
+ // update scene...
372
+ });
373
+
374
+ // Static — fixed fps via setTimeout
375
+ const fixedEngine = new StaticEngine({ launch: true });
376
+ fixedEngine.limit = 30;
377
+ ```
378
+
379
+ ### Archive (localStorage)
380
+
381
+ Type-safe localStorage with buffered access and auto-save.
382
+
383
+ ```typescript
384
+ import { ArchiveRepository, Model, Field } from "adaptive-extender/web";
385
+
386
+ class Settings extends Model {
387
+ @Field(Boolean)
388
+ darkMode: boolean = false;
389
+
390
+ @Field(Number)
391
+ volume: number = 1;
392
+ }
393
+
394
+ const repository = new ArchiveRepository("settings", Settings, new Settings());
395
+
396
+ const settings = repository.content;
397
+ settings.volume = 0.5;
398
+
399
+ repository.save(); // persist immediately
400
+ repository.save(3000); // debounced — persist after 3 seconds
401
+ repository.reset(); // revert to initial state
402
+ ```
403
+
404
+ ### Promise Utilities
405
+
406
+ ```typescript
407
+ await Promise.asTimeout(1000);
408
+
409
+ // AbortController is created and aborted automatically on completion
410
+ const result = await Promise.withSignal((signal, resolve, reject) => {
411
+ fetch("/api/data", { signal }).then(resolve).catch(reject);
412
+ });
413
+ ```
414
+
415
+ ## Reflect Utilities
416
+
417
+ ```typescript
418
+ // Apply a function only if the value is not null / undefined
419
+ const upper = Reflect.mapNull(maybeNull, text => text.toUpperCase());
420
+ const trimmed = Reflect.mapUndefined(maybeUndefined, text => text.trim());
421
+ const parsed = Reflect.mapNullable(maybeNullable, text => Number.parseInt(text));
126
422
  ```
127
423
 
128
424
  ## License
@@ -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"}
@@ -103,6 +103,11 @@ export declare function RecordOf<M, S>(type: PortableConstructor<M, S>): Portabl
103
103
  * @param value The portable type of the map values.
104
104
  */
105
105
  export declare function MapOf<MK, SK, MV, SV>(typeKey: PortableConstructor<MK, SK>, typeValue: PortableConstructor<MV, SV>): PortableConstructor<Map<MK, MV>, [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 EnumFrom<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,37 @@ 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 EnumFrom(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
+ return source;
357
+ throw new TypeError(`Unable to import enum from ${name} due to invalid value`);
358
+ },
359
+ export(source) {
360
+ if (values.has(source) === false)
361
+ throw new TypeError(`Unable to export enum due to invalid value`);
362
+ return source;
363
+ },
364
+ };
365
+ }
335
366
  /**
336
367
  * A portable adapter that facilitates the conversion between `Date` instances and millisecond timestamps.
337
368
  */
@@ -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":"AAAA,YAAY,CAAC;AAEb,OAAO,aAAa,CAAC;AACrB,OAAO,aAAa,CAAC;AACrB,OAAO,cAAc,CAAC;AACtB,OAAO,YAAY,CAAC;AACpB,OAAO,aAAa,CAAC;AACrB,OAAO,cAAc,CAAC;AACtB,OAAO,EAAoB,MAAM,aAAa,CAAC;AAoB/C,YAAY;AACZ,0BAA0B;AAC1B,MAAM,eAAe;IACpB,IAAI,CAAS;IACb,YAAY,CAAS;IACrB,KAAK,CAAsB;IAE3B,YAAY,GAAW,EAAE,WAAmB,EAAE,IAAyB;QACtE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,GAAG;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IAED,IAAI,WAAW;QACd,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;CACD;AACD,YAAY;AACZ,+BAA+B;AAC/B,MAAM,oBAAoB;IACzB,KAAK,CAAqC;IAC1C,cAAc,CAAqB;IAEnC,YAAY,IAAwC,EAAE,aAAiC;QACtF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,IAAI,aAAa;QAChB,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAC/C,CAAC;CACD;AACD,YAAY;AACZ,8BAA8B;AAC9B,MAAM,mBAAmB;IACxB,MAAM,CAAC,SAAS,GAA+C,IAAI,OAAO,EAAE,CAAC;IAC7E,MAAM,CAAe;IACrB,OAAO,GAAiC,IAAI,GAAG,EAAE,CAAC;IAClD,YAAY,GAA2B,EAAE,CAAC;IAC1C,cAAc,GAAW,OAAO,CAAC;IAEjC,YAAY,KAAmB;QAC9B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,KAAmB;QAC9B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,SAAS,CAAC;QAC/C,IAAI,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC;QAC5C,QAAQ,GAAG,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC1C,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC9B,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED,IAAI,WAAW;QACd,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED,IAAI,aAAa;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC5B,CAAC;IAED,IAAI,aAAa,CAAC,KAAa;QAC9B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC7B,CAAC;;AAEF,YAAY;AACZ,eAAe;AACf;;;GAGG;AACH,MAAM,OAAgB,KAAK;IAC1B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAwC,MAAW,EAAE,IAAY;QAC7E,MAAM,KAAK,GAAG,IAA+B,CAAC;QAC9C,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5E,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACvC,IAAI,KAAK,KAAK,SAAS;gBAAE,MAAM,IAAI,SAAS,CAAC,YAAY,GAAG,sBAAsB,IAAI,EAAE,CAAC,CAAC;YAC1F,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;YAC7D,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,KAAK,aAAa,CAAC,CAAC;YAC9F,IAAI,UAAU,KAAK,SAAS;gBAAE,MAAM,IAAI,SAAS,CAAC,YAAY,aAAa,uBAAuB,IAAI,EAAE,CAAC,CAAC;YAC1G,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAM,CAAC;QAClD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAM,CAAC;QAClD,MAAM,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,KAAK,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,WAAW,EAAE,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,MAAM,CAA0D,MAAS;QAC/E,MAAM,KAAK,GAAG,IAA+B,CAAC;QAC9C,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5E,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,YAAY,UAAU,CAAC,IAAI,CAAC,CAAC;YACrF,IAAI,UAAU,KAAK,SAAS;gBAAE,MAAM,IAAI,SAAS,CAAC,YAAY,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACnG,MAAM,UAAU,GAAG,UAAU,CAAC,IAAiC,CAAC;YAChE,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YACrD,OAAO,QAAQ,CAAC;QACjB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,MAAM,EAAO,CAAC;QACjC,MAAM,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,KAAK,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACvC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;CACD;AAcD,MAAM,UAAU,KAAK,CAAO,IAA+B,EAAE,IAAa;IACzE,OAAO,UAAU,CAAO,EAAE,OAA6C;QACtE,IAAI,OAAO,CAAC,MAAM;YAAE,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;QAC5E,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ;YAAE,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;QACjG,MAAM,WAAW,GAAG,IAAI,IAAI,GAAG,CAAC;QAChC,OAAO,CAAC,cAAc,CAAC;YACtB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAiB,CAAC;YAChD,MAAM,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO;YAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;AACH,CAAC;AAaD,MAAM,UAAU,UAAU,CAAyB,UAA8C,EAAE,aAAsB;IACxH,OAAO,UAAU,KAAQ;QACxB,MAAM,EAAE,WAAW,EAAE,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxD,WAAW,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAyB,GAAW;IACnE,OAAO,UAAU,KAAQ;QACxB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,QAAQ,CAAC,aAAa,GAAG,GAAG,CAAC;IAC9B,CAAC,CAAC;AACH,CAAC;AACD,YAAY;AACZ,kBAAkB;AAClB;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAO,QAAgD;IAC9E,OAAO;QACN,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAa;YACjC,OAAO,QAAQ,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,IAAI;YACP,OAAO,QAAQ,EAAE,CAAC,IAAI,CAAC;QACxB,CAAC;QAED,MAAM,CAAC,MAAW,EAAE,IAAY;YAC/B,OAAO,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,CAAC,MAAS;YACf,OAAO,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;KAC4B,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAO,IAA+B;IAC7D,OAAO;QACN,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAa;YACjC,OAAO,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,IAAI;YACP,OAAO,GAAG,IAAI,CAAC,IAAI,cAAc,CAAC;QACnC,CAAC;QAED,MAAM,CAAC,MAAW,EAAE,IAAY;YAC/B,OAAO,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,CAAC,MAAqB;YAC3B,OAAO,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACpE,CAAC;KACoD,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAO,IAA+B;IAC7D,OAAO;QACN,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAa;YACjC,OAAO,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,IAAI;YACP,OAAO,GAAG,IAAI,CAAC,IAAI,SAAS,CAAC;QAC9B,CAAC;QAED,MAAM,CAAC,MAAW,EAAE,IAAY;YAC/B,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,CAAC,MAAgB;YACtB,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/D,CAAC;KAC0C,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAO,IAA+B;IAC5D,OAAO;QACN,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAa;YACjC,OAAO,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,IAAI;YACP,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC;QACzB,CAAC;QAED,MAAM,CAAC,MAAW,EAAE,IAAY;YAC/B,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;QAChG,CAAC;QAED,MAAM,CAAC,MAAW;YACjB,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9C,CAAC;KACgC,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,KAAK,CAAO,IAA+B;IAC1D,OAAO;QACN,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAa;YACjC,OAAO,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,IAAI;YACP,OAAO,OAAO,IAAI,CAAC,IAAI,GAAG,CAAC;QAC5B,CAAC;QAED,MAAM,CAAC,MAAW,EAAE,IAAY;YAC/B,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACzG,CAAC;QAED,MAAM,CAAC,MAAc;YACpB,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,CAAC;KACmC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAO,IAA+B;IAC7D,OAAO;QACN,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAa;YACjC,OAAO,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,IAAI;YACP,OAAO,eAAe,IAAI,CAAC,IAAI,GAAG,CAAC;QACpC,CAAC;QAED,MAAM,CAAC,MAAW,EAAE,IAAY;YAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAA4B,CAAC;YACtE,MAAM,GAAG,GAAG,IAAI,GAAG,EAAa,CAAC;YACjC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YACxF,CAAC;YACD,OAAO,GAAG,CAAC;QACZ,CAAC;QAED,MAAM,CAAC,MAAsB;YAC5B,MAAM,MAAM,GAAsB,EAAE,CAAC;YACrC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO,MAAM,CAAC;QACf,CAAC;KACyD,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAiB,OAAoC,EAAE,SAAsC;IACjH,OAAO;QACN,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAa;YACjC,OAAO,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,IAAI;YACP,OAAO,OAAO,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,GAAG,CAAC;QAClD,CAAC;QAED,MAAM,CAAC,MAAW,EAAE,IAAY;YAC/B,OAAO,IAAI,GAAG,CAAS,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACrE,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;gBACtD,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC;gBAC7D,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC;gBACjE,OAAO,CAAC,GAAG,EAAE,KAAK,CAAa,CAAC;YACjC,CAAC,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,MAAmB;YACzB,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAa,CAAC,CAAC;QACzG,CAAC;KAC+C,CAAC;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAA8C,SAAY;IACjF,MAAM,MAAM,GAAoB,IAAI,GAAG,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,KAAK;YAAE,SAAS;QAC5G,MAAM,CAAC,GAAG,CAAC,KAAmB,CAAC,CAAC;IACjC,CAAC;IACD,OAAO;QACN,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAiB;YACrC,OAAO,MAAM,CAAC,GAAG,CAAC,QAAsB,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,IAAI;YACP,OAAO,MAAM,CAAC;QACf,CAAC;QAED,MAAM,CAAC,MAAe,EAAE,IAAY;YACnC,IAAI,MAAM,CAAC,GAAG,CAAC,MAAoB,CAAC;gBAAE,OAAO,MAAoB,CAAC;YAClE,MAAM,IAAI,SAAS,CAAC,8BAA8B,IAAI,uBAAuB,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,CAAC,MAAkB;YACxB,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK;gBAAE,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;YACpG,OAAO,MAAM,CAAC;QACf,CAAC;KAC8C,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACxB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAa;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,IAAI;QACP,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,MAAW,EAAE,IAAY;QAC/B,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,QAAQ;YAAE,MAAM,IAAI,SAAS,CAAC,8BAA8B,IAAI,YAAY,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7H,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,MAAY;QAClB,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;CACoC,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IAC1B,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAa;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,IAAI;QACP,OAAO,aAAa,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,MAAW,EAAE,IAAY;QAC/B,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,QAAQ;YAAE,MAAM,IAAI,SAAS,CAAC,8BAA8B,IAAI,YAAY,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7H,OAAO,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,MAAY;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAC5C,CAAC;CACoC,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG;IAClB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAa;QACjC,KAAK,QAAQ,CAAC;QACd,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,IAAI;QACP,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,CAAC,MAAW,EAAE,IAAY;QAC/B,KAAK,IAAI,CAAC;QACV,OAAO,MAAM,CAAC;IACf,CAAC;IAED,MAAM,CAAC,MAAW;QACjB,OAAO,MAAM,CAAC;IACf,CAAC;CACgC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adaptive-extender",
3
- "version": "0.9.10",
3
+ "version": "0.9.12",
4
4
  "description": "Adaptive library for JS/TS development environments",
5
5
  "type": "module",
6
6
  "main": "./dist/core/index.js",
@@ -1,19 +0,0 @@
1
- /**
2
- * Defines the interface for an archivable object's prototype.
3
- * @template S The type of the notation returned by the export method.
4
- */
5
- export interface ArchivablePrototype<S = any> {
6
- /**
7
- * Creates a new instance of the archivable object.
8
- */
9
- new (...args: any): any;
10
- /**
11
- * Imports data from a source and returns a new instance.
12
- * @throws {TypeError} If unable to import the source.
13
- */
14
- import(source: any, name: string): InstanceType<this>;
15
- /**
16
- * Exports the state of an instance to a notation.
17
- */
18
- export(source: InstanceType<this>): S;
19
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- export {};
3
- //# sourceMappingURL=archivable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"archivable.js","sourceRoot":"","sources":["../../src/core/archivable.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,65 +0,0 @@
1
- var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
- function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
- var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
- var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
- var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
- var _, done = false;
7
- for (var i = decorators.length - 1; i >= 0; i--) {
8
- var context = {};
9
- for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
- for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
- context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
- var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
- if (kind === "accessor") {
14
- if (result === void 0) continue;
15
- if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
- if (_ = accept(result.get)) descriptor.get = _;
17
- if (_ = accept(result.set)) descriptor.set = _;
18
- if (_ = accept(result.init)) initializers.unshift(_);
19
- }
20
- else if (_ = accept(result)) {
21
- if (kind === "field") initializers.unshift(_);
22
- else descriptor[key] = _;
23
- }
24
- }
25
- if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
- done = true;
27
- };
28
- var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
- var useValue = arguments.length > 2;
30
- for (var i = 0; i < initializers.length; i++) {
31
- value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
- }
33
- return useValue ? value : void 0;
34
- };
35
- import { Model, Field } from "./portable";
36
- // Mock types
37
- class MyModel extends Model {
38
- }
39
- let TestClass = (() => {
40
- let _classSuper = Model;
41
- let _prop_decorators;
42
- let _prop_initializers = [];
43
- let _prop_extraInitializers = [];
44
- let _date_decorators;
45
- let _date_initializers = [];
46
- let _date_extraInitializers = [];
47
- return class TestClass extends _classSuper {
48
- static {
49
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
50
- _prop_decorators = [Field(MyType)];
51
- _date_decorators = [Field(Date)];
52
- __esDecorate(null, null, _prop_decorators, { kind: "field", name: "prop", static: false, private: false, access: { has: obj => "prop" in obj, get: obj => obj.prop, set: (obj, value) => { obj.prop = value; } }, metadata: _metadata }, _prop_initializers, _prop_extraInitializers);
53
- __esDecorate(null, null, _date_decorators, { kind: "field", name: "date", static: false, private: false, access: { has: obj => "date" in obj, get: obj => obj.date, set: (obj, value) => { obj.date = value; } }, metadata: _metadata }, _date_initializers, _date_extraInitializers);
54
- if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
55
- }
56
- // Check if compilation fails or inference is weird
57
- prop = __runInitializers(this, _prop_initializers, void 0);
58
- date = (__runInitializers(this, _prop_extraInitializers), __runInitializers(this, _date_initializers, void 0));
59
- constructor() {
60
- super(...arguments);
61
- __runInitializers(this, _date_extraInitializers);
62
- }
63
- };
64
- })();
65
- //# sourceMappingURL=debug_types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debug_types.js","sourceRoot":"","sources":["../../src/core/debug_types.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,EAAE,KAAK,EAAE,KAAK,EAA4B,MAAM,YAAY,CAAC;AAEpE,aAAa;AACb,MAAM,OAAQ,SAAQ,KAAK;CAAG;IAIxB,SAAS;sBAAS,KAAK;;;;;;;iBAAvB,SAAU,SAAQ,WAAK;;;gCAExB,KAAK,CAAC,MAAM,CAAC;gCAGb,KAAK,CAAC,IAAI,CAAC;YAFZ,8JAAA,IAAI,6BAAJ,IAAI,mFAAW;YAGf,8JAAA,IAAI,6BAAJ,IAAI,mFAAQ;;;QALZ,mDAAmD;QAEnD,IAAI,uDAAW;QAGf,IAAI,2GAAQ"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,55 +0,0 @@
1
- var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
- function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
- var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
- var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
- var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
- var _, done = false;
7
- for (var i = decorators.length - 1; i >= 0; i--) {
8
- var context = {};
9
- for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
- for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
- context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
- var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
- if (kind === "accessor") {
14
- if (result === void 0) continue;
15
- if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
- if (_ = accept(result.get)) descriptor.get = _;
17
- if (_ = accept(result.set)) descriptor.set = _;
18
- if (_ = accept(result.init)) initializers.unshift(_);
19
- }
20
- else if (_ = accept(result)) {
21
- if (kind === "field") initializers.unshift(_);
22
- else descriptor[key] = _;
23
- }
24
- }
25
- if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
- done = true;
27
- };
28
- var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
- var useValue = arguments.length > 2;
30
- for (var i = 0; i < initializers.length; i++) {
31
- value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
- }
33
- return useValue ? value : void 0;
34
- };
35
- import { Model, Field } from "./portable";
36
- let TestDate = (() => {
37
- let _classSuper = Model;
38
- let _dateField_decorators;
39
- let _dateField_initializers = [];
40
- let _dateField_extraInitializers = [];
41
- return class TestDate extends _classSuper {
42
- static {
43
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
44
- _dateField_decorators = [Field(Date)];
45
- __esDecorate(null, null, _dateField_decorators, { kind: "field", name: "dateField", static: false, private: false, access: { has: obj => "dateField" in obj, get: obj => obj.dateField, set: (obj, value) => { obj.dateField = value; } }, metadata: _metadata }, _dateField_initializers, _dateField_extraInitializers);
46
- if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
47
- }
48
- dateField = __runInitializers(this, _dateField_initializers, void 0);
49
- constructor() {
50
- super(...arguments);
51
- __runInitializers(this, _dateField_extraInitializers);
52
- }
53
- };
54
- })();
55
- //# sourceMappingURL=repro_issue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"repro_issue.js","sourceRoot":"","sources":["../../src/core/repro_issue.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;IAEpC,QAAQ;sBAAS,KAAK;;;;iBAAtB,QAAS,SAAQ,WAAK;;;qCACvB,KAAK,CAAC,IAAI,CAAC;YACZ,6KAAA,SAAS,6BAAT,SAAS,6FAAQ;;;QAAjB,SAAS,4DAAQ"}
@@ -1,20 +0,0 @@
1
- import "../core/index.js";
2
- import "dotenv/config";
3
- /**
4
- * Represents the system environment and provides utility methods to access environment variables.
5
- */
6
- export declare class Environment {
7
- /**
8
- * Retrieves a new instance of the Environment class.
9
- */
10
- static get env(): Environment;
11
- /**
12
- * Checks if a specific key exists within the environment variables.
13
- */
14
- hasValue(key: string): boolean;
15
- /**
16
- * Reads and parses the value of a specific environment variable.
17
- * @throws {ReferenceError} if the key is missing.
18
- */
19
- readValue(key: string): any;
20
- }
@@ -1,37 +0,0 @@
1
- "use strict";
2
- import "../core/index.js";
3
- import "dotenv/config";
4
- //#region Environment
5
- /**
6
- * Represents the system environment and provides utility methods to access environment variables.
7
- */
8
- export class Environment {
9
- /**
10
- * Retrieves a new instance of the Environment class.
11
- */
12
- static get env() {
13
- return new Environment();
14
- }
15
- /**
16
- * Checks if a specific key exists within the environment variables.
17
- */
18
- hasValue(key) {
19
- const { env } = process;
20
- return (env[key] !== undefined);
21
- }
22
- /**
23
- * Reads and parses the value of a specific environment variable.
24
- * @throws {ReferenceError} if the key is missing.
25
- */
26
- readValue(key) {
27
- const { env } = process;
28
- const text = ReferenceError.suppress(env[key], `Key '${key}' at environment not registered`);
29
- try {
30
- return JSON.parse(text);
31
- }
32
- catch {
33
- return text;
34
- }
35
- }
36
- }
37
- //# sourceMappingURL=environment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/node/environment.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,kBAAkB,CAAC;AAC1B,OAAO,eAAe,CAAC;AAEvB,qBAAqB;AACrB;;GAEG;AACH,MAAM,OAAO,WAAW;IACvB;;OAEG;IACH,MAAM,KAAK,GAAG;QACb,OAAO,IAAI,WAAW,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,GAAW;QACnB,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,GAAW;QACpB,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;QACxB,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,iCAAiC,CAAC,CAAC;QAC7F,IAAI,CAAC;YACJ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;CACD"}