adaptive-extender 0.9.9 → 0.9.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 0.9.11 (17.03.2026)
2
+ - Moved `environment` module from [node](./src/node/environment.ts) to [core](./src/core/environment.ts).
3
+ - Added `EnvironmentProvider` class for resolving environment variables.
4
+ - Added `RecordOf` and `MapOf` adapters for portable maps in [portable](./src/core/portable.ts) module.
5
+
1
6
  ## 0.9.9 (13.03.2026)
2
7
  - Added `map.add`, `set.toggle` and `array.remove` extensions.
3
8
 
package/README.md CHANGED
@@ -1,130 +1,409 @@
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
  ---
12
13
 
13
- ## Core Systems
14
+ ## Installation
15
+
16
+ ```bash
17
+ npm install adaptive-extender
18
+ ```
19
+
20
+ ## Packages
21
+
22
+ | Package | Environment |
23
+ | :----------------------- | :---------------------- |
24
+ | `adaptive-extender/core` | Browser, Node.js, Deno |
25
+ | `adaptive-extender/node` | Node.js (includes core) |
26
+ | `adaptive-extender/web` | Browser (includes core) |
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
+ ---
35
+
36
+ ## Native Extensions
37
+
38
+ ### Number
14
39
 
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.
40
+ ```typescript
41
+ volume = volume.clamp(0, 1);
42
+
43
+ // Normalize into [0, 1] or remap between ranges
44
+ const normalized = currentValue.lerp(sourceMin, sourceMax);
45
+ const pixelX = angle.lerp(0, 360, 0, canvasWidth);
46
+
47
+ // True mathematical modulo — works correctly with negative numbers
48
+ const wrappedIndex = (-1).mod(items.length); // → items.length - 1
49
+
50
+ // Chainable fallback for invalid values
51
+ const ratio = (numerator / denominator).insteadNaN(0).insteadInfinity(1);
52
+ ```
53
+
54
+ ### String
17
55
 
18
56
  ```typescript
19
- import { Model, Field, ArrayOf } from "adaptive-extender/core";
57
+ if (String.isWhitespace(userInput)) return;
58
+
59
+ const displayName = username.insteadEmpty("Anonymous");
60
+
61
+ "hello world".toTitleCase(); // → "Hello World"
62
+ "île-de-france".toLocalTitleCase("fr"); // → "Île-De-France"
63
+ ```
20
64
 
21
- class User extends Model {
22
- @Field(String) name: string = "Guest";
23
- @Field(ArrayOf(Number)) scores: number[] = [];
65
+ ### Array
66
+
67
+ ```typescript
68
+ for (const index of Array.range(0, 10)) { ... }
69
+
70
+ for (const [user, role] of Array.zip(users, roles)) {
71
+ console.log(`${user.name}: ${role}`);
24
72
  }
25
73
 
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");
74
+ // Collect an async iterable into an array
75
+ const packets = await Array.fromAsync(readableStream);
76
+
77
+ items.swap(0, items.length - 1);
78
+ items.resize(10, null);
79
+ const wasRemoved = items.remove(targetItem);
30
80
  ```
31
81
 
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.
82
+ ### Math
83
+
84
+ ```typescript
85
+ const [integer, fractional] = Math.split(3.75); // → [3, 0.75]
86
+ Math.sqpw(sideLength); // sideLength²
87
+ Math.toRadians(90); // → Math.PI / 2
88
+ Math.toDegrees(Math.PI); // → 180
89
+
90
+ Math.meanArithmetic(1, 2, 3, 4); // → 2.5
91
+ Math.meanGeometric(4, 16);
92
+ Math.meanHarmonic(1, 2, 4);
93
+ ```
94
+
95
+ ### Set / Map / Date
96
+
97
+ ```typescript
98
+ // Like classList.toggle
99
+ selected.toggle(item); // add if absent, remove if present
100
+ selected.toggle(item, true); // force add
101
+ selected.toggle(item, false); // force remove
102
+
103
+ // Add only if key is not already present
104
+ cache.add(requestKey, response); // → false if key exists
105
+
106
+ // Detect and replace invalid dates
107
+ const safeDate = new Date("invalid").insteadInvalid(new Date());
108
+ ```
109
+
110
+ ### Promise
111
+
112
+ ```typescript
113
+ const request = fetch("/api/data");
114
+
115
+ if (await request.isSettled) { ... }
116
+ if (await request.isResolved) { ... }
117
+ if (await request.isRejected) { ... }
118
+
119
+ const responseData = await request.value; // throws if rejected
120
+ const rejectReason = await request.reason; // throws if resolved
121
+ ```
122
+
123
+ ### Error / Global
124
+
125
+ ```typescript
126
+ // Wrap anything into an Error (string, undefined, object)
127
+ const error = Error.from(thrown);
128
+
129
+ // Assert non-null — throws ReferenceError with a message
130
+ const appRoot = ReferenceError.suppress(document.getElementById("app"));
131
+
132
+ throw new ImplementationError(); // sealed, cannot be subclassed
133
+
134
+ // Get type name without typeof / manual checks
135
+ typename(value); // → "String", "Null", "User", ...
136
+ ```
137
+
138
+ ---
139
+
140
+ ## Classes
141
+
142
+ ### Timespan
143
+
144
+ Value object for time intervals. Eliminates raw millisecond arithmetic.
34
145
 
35
146
  ```typescript
36
147
  import { Timespan } from "adaptive-extender/core";
37
148
 
38
- // Readable, safe arithmetic
39
- const cacheDuration = Timespan.fromComponents(0, 0, 5, 0); // 5 minutes
40
- const uptime = Timespan.fromValue(process.uptime() * 1000);
149
+ const sessionDuration = Timespan.fromComponents(0, 30, 0); // 30 minutes
150
+ const uptime = Timespan.fromValue(process.uptime() * 1000);
151
+ const parsed = Timespan.parse("1.02:30:00.500"); // 1d 2h 30m 0.5s
152
+
153
+ console.log(uptime.toString()); // "0.00:12:45.123"
41
154
 
42
- // Use valueOf() for precise millisecond comparison
43
- if (uptime.valueOf() > cacheDuration.valueOf()) {
44
- console.log("Cache expired");
155
+ uptime.minutes = 0; // other components recalculate automatically
156
+
157
+ if (uptime.valueOf() > sessionDuration.valueOf()) {
158
+ console.log("Session expired");
45
159
  }
160
+ ```
161
+
162
+ ### Color
163
+
164
+ Full color object with RGB, HSL, HEX support and alpha channel. Changing a component in one color space automatically recalculates the other.
165
+
166
+ ```typescript
167
+ import { Color, ColorFormats } from "adaptive-extender/core";
168
+
169
+ const orange = Color.fromRGB(255, 128, 0);
170
+ const parsed = Color.parse("#ff8800");
171
+
172
+ orange.hue = 200; // RGB recalculates automatically
173
+ orange.alpha = 0.8;
46
174
 
47
- // Structured formatting
48
- console.log(uptime.toString()); // e.g. "0.00:12:45.123"
175
+ console.log(orange.toString({ format: ColorFormats.hsl, deep: true }));
176
+ // → "hsla(200, 100%, 50%, 0.8)"
49
177
  ```
50
178
 
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.
179
+ ### Random
53
180
 
54
181
  ```typescript
55
- // Sequence generation
56
- for (const i of Array.range(0, 5)) { ... }
182
+ import { Random } from "adaptive-extender/core";
183
+
184
+ const rng = Random.global;
185
+
186
+ rng.boolean(0.9); // true with 90% probability
187
+ rng.number(0, 1); // float [0, 1)
188
+ rng.integer(1, 6); // int [1, 6]
189
+ rng.item(options); // random element from array
190
+ rng.subarray(items, 3); // 3 random elements
191
+ rng.shuffle(array); // shuffle in place
192
+
193
+ // Weighted selection
194
+ const loot = rng.case(new Map([
195
+ ["common", 70],
196
+ ["rare", 25],
197
+ ["legendary", 5],
198
+ ]));
199
+ ```
57
200
 
58
- // Parallel iteration
59
- for (const [user, role] of Array.zip(users, roles)) { ... }
201
+ ### Vector
60
202
 
61
- // Safe Swap
62
- items.swap(0, items.length - 1);
203
+ Mathematical vectors with a LINQ-style iteration API.
204
+
205
+ ```typescript
206
+ import { Vector, Vector2D, Vector3D } from "adaptive-extender/core";
207
+
208
+ const position = new Vector2D(3, 4);
209
+ const direction = Vector3D.fromScalar(1); // (1, 1, 1)
210
+
211
+ // LINQ-like methods over components
212
+ const normalized = Vector3D.fromVector(
213
+ direction.map(component => component / Math.sqrt(3))
214
+ );
215
+
216
+ Vector.isFinite(position);
217
+ const safePosition = position.insteadNaN(Vector2D.newZero);
218
+ const point = Vector2D.parse("(10, 20)"); // → Vector2D { x: 10, y: 20 }
63
219
  ```
64
220
 
65
- ### 4. Structured Primitives (`Vector`, `Controller`)
66
- Provides abstract base classes for mathematical vectors and unified controller logic for complex execution flows.
221
+ ### Controller
222
+
223
+ Abstract base class for async tasks with centralized error handling.
67
224
 
68
225
  ```typescript
69
226
  import { Controller } from "adaptive-extender/core";
70
227
 
71
- // Cancellable, error-handling async worker
72
- class ImportTask extends Controller {
73
- async run() { ... }
74
- async catch(err) { ... }
228
+ class InitTask extends Controller {
229
+ async run(): Promise<void> {
230
+ const response = await fetch("/api/init");
231
+ // ...
232
+ }
233
+
234
+ async catch(error: Error): Promise<void> {
235
+ console.error("Init failed:", error.message);
236
+ }
237
+ }
238
+
239
+ // Creates an instance and runs it — errors are routed to catch()
240
+ await InitTask.launch();
241
+ ```
242
+
243
+ ### EnvironmentProvider
244
+
245
+ Deserializes environment variables into a strictly typed model. JSON values are parsed automatically.
246
+
247
+ ```typescript
248
+ import { EnvironmentProvider, Model, Field, Optional } from "adaptive-extender/core";
249
+
250
+ class AppConfig extends Model {
251
+ @Field(String) DB_HOST: string = "localhost";
252
+ @Field(Number) DB_PORT: number = 5432;
253
+ @Field(Optional(String)) LOG_LEVEL?: string;
75
254
  }
255
+
256
+ const config = EnvironmentProvider.resolve(process.env, AppConfig);
257
+ // config.DB_PORT is a number, not a string
258
+ // Throws TypeError if a required variable is missing or has the wrong type
76
259
  ```
77
260
 
78
261
  ---
79
262
 
80
- ## Native Extensions
263
+ ## Portable Data System
264
+
265
+ Binds classes to their schema via decorators. Importing from JSON validates types automatically and returns a real class instance.
81
266
 
82
- A collection of high-performance utilities that eliminate common boilerplate.
267
+ ### Basic Usage
268
+
269
+ ```typescript
270
+ import { Model, Field, ArrayOf, Optional, Nullable } from "adaptive-extender/core";
271
+
272
+ class Tag extends Model {
273
+ @Field(String) name: string = "";
274
+ }
275
+
276
+ class Article extends Model {
277
+ @Field(String) title: string = "";
278
+ @Field(Number) views: number = 0;
279
+ @Field(ArrayOf(Tag)) tags: Tag[] = [];
280
+ @Field(Optional(String)) subtitle?: string;
281
+ @Field(Nullable(String)) draft: string | null = null;
282
+ }
83
283
 
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` |
284
+ const article = Article.import(json, "api.article");
285
+ // article instanceof Article true
286
+ // TypeError with exact path on failure: "api.article.tags[2].name"
287
+
288
+ const raw = Article.export(article); // plain object, ready for JSON.stringify
289
+ ```
290
+
291
+ ### Polymorphism
292
+
293
+ ```typescript
294
+ import { Model, Field, Descendant, DiscriminatorKey } from "adaptive-extender/core";
295
+
296
+ class Dog extends Model { @Field(String) breed: string = ""; }
297
+ class Cat extends Model { @Field(Boolean) indoor: boolean = true; }
298
+
299
+ @DiscriminatorKey("kind")
300
+ @Descendant(Dog, "dog")
301
+ @Descendant(Cat, "cat")
302
+ abstract class Animal extends Model {}
303
+
304
+ // { kind: "dog", breed: "Husky" } → Dog instance
305
+ // { kind: "cat", indoor: true } → Cat instance
306
+ const animal = Animal.import(json, "api.animal");
307
+ ```
308
+
309
+ ### Adapters
310
+
311
+ | Adapter | Type |
312
+ | :------------- | :------------------------------------- |
313
+ | `ArrayOf(T)` | `T[]` |
314
+ | `SetOf(T)` | `Set<T>` ↔ `T[]` |
315
+ | `RecordOf(T)` | `Map<string, T>` ↔ `Record<string, T>` |
316
+ | `MapOf(K, V)` | `Map<K, V>` ↔ `[K, V][]` |
317
+ | `Optional(T)` | `T \| undefined` |
318
+ | `Nullable(T)` | `T \| null` |
319
+ | `Deferred(fn)` | Circular references |
94
320
 
95
321
  ---
96
322
 
97
- ## Architecture
323
+ ## Web
98
324
 
99
- - **`adaptive-extender/core`**:
100
- Universal utilities. Works in Browser, Node, Deno.
101
- *(Math, arrays, promises, portable system, time)*
325
+ ### DOM Queries
102
326
 
103
- - **`adaptive-extender/node`**:
104
- Backend-specific tools.
105
- *(Enhanced `fs` operations, strict environment variable parsing)*
327
+ Type-safe wrappers over `querySelector` — throw instead of returning `null`.
106
328
 
107
- - **`adaptive-extender/web`**:
108
- Frontend-specific tools.
109
- *(DOM element wrappers, parent-node extensions)*
329
+ ```typescript
330
+ import "adaptive-extender/web";
110
331
 
111
- ## Installation
332
+ const loginForm = document.getElement(HTMLFormElement, "#login-form");
333
+ const requiredInputs = loginForm.getElements(HTMLInputElement, "input[required]");
334
+ const container = loginForm.getClosest(HTMLDivElement, ".wrapper");
112
335
 
113
- ```bash
114
- npm install adaptive-extender
336
+ // Async variants — useful with Shadow DOM
337
+ const canvas = await document.getElementAsync(HTMLCanvasElement, "#scene");
115
338
  ```
116
339
 
117
- ## Usage
340
+ ### Game Engines
341
+
342
+ Three update-loop engines for UI animation or game logic:
118
343
 
119
344
  ```typescript
120
- import "adaptive-extender/core";
345
+ import { FastEngine, StaticEngine } from "adaptive-extender/web";
346
+
347
+ // Fast — requestAnimationFrame based
348
+ const engine = new FastEngine({ launch: true });
349
+ engine.limit = 60;
350
+
351
+ engine.addEventListener("trigger", () => {
352
+ const deltaTime = engine.delta; // seconds since last frame
353
+ // update scene...
354
+ });
355
+
356
+ // Static — fixed fps via setTimeout
357
+ const fixedEngine = new StaticEngine({ launch: true });
358
+ fixedEngine.limit = 30;
359
+ ```
360
+
361
+ ### Archive (localStorage)
362
+
363
+ Type-safe localStorage with buffered access and auto-save.
364
+
365
+ ```typescript
366
+ import { ArchiveRepository, Model, Field } from "adaptive-extender/web";
121
367
 
122
- // Extensions are now active
123
- if (String.isEmpty(config.name)) {
124
- // ...
368
+ class Settings extends Model {
369
+ @Field(Boolean) darkMode: boolean = false;
370
+ @Field(Number) volume: number = 1;
125
371
  }
372
+
373
+ const repository = new ArchiveRepository("settings", Settings, new Settings());
374
+
375
+ const settings = repository.content;
376
+ settings.volume = 0.5;
377
+
378
+ repository.save(); // persist immediately
379
+ repository.save(3000); // debounced — persist after 3 seconds
380
+ repository.reset(); // revert to initial state
381
+ ```
382
+
383
+ ### Promise Utilities
384
+
385
+ ```typescript
386
+ await Promise.asTimeout(1000);
387
+
388
+ // AbortController is created and aborted automatically on completion
389
+ const result = await Promise.withSignal((signal, resolve, reject) => {
390
+ fetch("/api/data", { signal }).then(resolve).catch(reject);
391
+ });
126
392
  ```
127
393
 
394
+ ---
395
+
396
+ ## Reflect Utilities
397
+
398
+ ```typescript
399
+ // Apply a function only if the value is not null / undefined
400
+ const upper = Reflect.mapNull(maybeNull, text => text.toUpperCase());
401
+ const trimmed = Reflect.mapUndefined(maybeUndefined, text => text.trim());
402
+ const parsed = Reflect.mapNullable(maybeNullable, text => parseInt(text));
403
+ ```
404
+
405
+ ---
406
+
128
407
  ## License
129
408
 
130
409
  Apache-2.0
@@ -0,0 +1,11 @@
1
+ import { type PortableConstructor } from "./portable.js";
2
+ export interface Environment extends Record<string, string | undefined> {
3
+ }
4
+ export interface EnvironmentResolveOptions {
5
+ name: string;
6
+ }
7
+ export declare class EnvironmentProvider {
8
+ #private;
9
+ static resolve<M extends PortableConstructor<InstanceType<M>>>(environment: Environment, model: M): Readonly<InstanceType<M>>;
10
+ static resolve<M extends PortableConstructor<InstanceType<M>>>(environment: Environment, model: M, options: Partial<EnvironmentResolveOptions>): Readonly<InstanceType<M>>;
11
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ import {} from "./portable.js";
3
+ export class EnvironmentProvider {
4
+ static resolve(environment, model, options = {}) {
5
+ const record = {};
6
+ for (const key of Object.keys(environment)) {
7
+ record[key] = EnvironmentProvider.#parse(environment[key]);
8
+ }
9
+ const instance = model.import(record, options.name ?? model.name);
10
+ return Object.freeze(instance);
11
+ }
12
+ static #parse(value) {
13
+ try {
14
+ if (value === undefined)
15
+ return value;
16
+ return JSON.parse(value);
17
+ }
18
+ catch (reason) {
19
+ if (reason instanceof SyntaxError)
20
+ return value;
21
+ throw reason;
22
+ }
23
+ }
24
+ }
25
+ //# sourceMappingURL=environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/core/environment.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAA4B,MAAM,eAAe,CAAC;AAUzD,MAAM,OAAO,mBAAmB;IAG/B,MAAM,CAAC,OAAO,CAAiD,WAAwB,EAAE,KAAQ,EAAE,UAA8C,EAAE;QAClJ,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5C,MAAM,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;QAClE,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,KAAqC;QAClD,IAAI,CAAC;YACJ,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC;YACtC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YACjB,IAAI,MAAM,YAAY,WAAW;gBAAE,OAAO,KAAK,CAAC;YAChD,MAAM,MAAM,CAAC;QACd,CAAC;IACF,CAAC;CACD"}
@@ -22,3 +22,4 @@ export * from "./vector-3.js";
22
22
  export * from "./timespan.js";
23
23
  export * from "./engine.js";
24
24
  export * from "./controller.js";
25
+ export * from "./environment.js";
@@ -23,4 +23,5 @@ export * from "./vector-3.js";
23
23
  export * from "./timespan.js";
24
24
  export * from "./engine.js";
25
25
  export * from "./controller.js";
26
+ export * from "./environment.js";
26
27
  //# sourceMappingURL=index.js.map
@@ -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"}
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"}
@@ -92,6 +92,17 @@ export declare function ArrayOf<M, S>(type: PortableConstructor<M, S>): Portable
92
92
  * @param type The portable type of the set elements.
93
93
  */
94
94
  export declare function SetOf<M, S>(type: PortableConstructor<M, S>): PortableConstructor<Set<M>, S[]>;
95
+ /**
96
+ * Creates a portable wrapper for maps with string keys, converting them to and from plain objects.
97
+ * @param value The portable type of the map values.
98
+ */
99
+ export declare function RecordOf<M, S>(type: PortableConstructor<M, S>): PortableConstructor<Map<string, M>, Record<string, S>>;
100
+ /**
101
+ * Creates a portable wrapper for maps with arbitrary key and value types, converting them to and from arrays of `[key, value]` tuples.
102
+ * @param key The portable type of the map keys.
103
+ * @param value The portable type of the map values.
104
+ */
105
+ export declare function MapOf<MK, SK, MV, SV>(typeKey: PortableConstructor<MK, SK>, typeValue: PortableConstructor<MV, SV>): PortableConstructor<Map<MK, MV>, [SK, SV][]>;
95
106
  /**
96
107
  * A portable adapter that facilitates the conversion between `Date` instances and millisecond timestamps.
97
108
  */
@@ -277,6 +277,61 @@ export function SetOf(type) {
277
277
  },
278
278
  };
279
279
  }
280
+ /**
281
+ * Creates a portable wrapper for maps with string keys, converting them to and from plain objects.
282
+ * @param value The portable type of the map values.
283
+ */
284
+ export function RecordOf(type) {
285
+ return {
286
+ [Symbol.hasInstance](instance) {
287
+ return Map[Symbol.hasInstance](instance);
288
+ },
289
+ get name() {
290
+ return `Map<string, ${type.name}>`;
291
+ },
292
+ import(source, name) {
293
+ const record = Object.import(source, name);
294
+ const map = new Map();
295
+ for (const key of Object.keys(record)) {
296
+ map.set(key, type.import(Reflect.get(record, key), `${name}[${JSON.stringify(key)}]`));
297
+ }
298
+ return map;
299
+ },
300
+ export(source) {
301
+ const record = {};
302
+ for (const [key, value] of source) {
303
+ Reflect.set(record, key, type.export(value));
304
+ }
305
+ return record;
306
+ },
307
+ };
308
+ }
309
+ /**
310
+ * Creates a portable wrapper for maps with arbitrary key and value types, converting them to and from arrays of `[key, value]` tuples.
311
+ * @param key The portable type of the map keys.
312
+ * @param value The portable type of the map values.
313
+ */
314
+ export function MapOf(typeKey, typeValue) {
315
+ return {
316
+ [Symbol.hasInstance](instance) {
317
+ return Map[Symbol.hasInstance](instance);
318
+ },
319
+ get name() {
320
+ return `Map<${typeKey.name}, ${typeValue.name}>`;
321
+ },
322
+ import(source, name) {
323
+ return new Map(Array.import(source, name).map((item, index) => {
324
+ const tuple = Array.import(item, `${name}[${index}]`);
325
+ const key = typeKey.import(tuple[0], `${name}[${index}][0]`);
326
+ const value = typeValue.import(tuple[1], `${name}[${index}][1]`);
327
+ return [key, value];
328
+ }));
329
+ },
330
+ export(source) {
331
+ return Array.from(source, ([key, value]) => [typeKey.export(key), typeValue.export(value)]);
332
+ },
333
+ };
334
+ }
280
335
  /**
281
336
  * A portable adapter that facilitates the conversion between `Date` instances and millisecond timestamps.
282
337
  */
@@ -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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"}
@@ -1,2 +1 @@
1
1
  export * from "../core/index.js";
2
- export * from "./environment.js";
@@ -1,4 +1,3 @@
1
1
  "use strict";
2
2
  export * from "../core/index.js";
3
- export * from "./environment.js";
4
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,cAAc,kBAAkB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adaptive-extender",
3
- "version": "0.9.9",
3
+ "version": "0.9.11",
4
4
  "description": "Adaptive library for JS/TS development environments",
5
5
  "type": "module",
6
6
  "main": "./dist/core/index.js",
@@ -59,8 +59,5 @@
59
59
  "jsdom": "^27.0.0",
60
60
  "typescript": "^5.9.2",
61
61
  "vitest": "^3.2.4"
62
- },
63
- "dependencies": {
64
- "dotenv": "^17.2.3"
65
62
  }
66
63
  }
@@ -1,17 +0,0 @@
1
- import { type Constructor, type PortableConstructor } from "./portable.js";
2
- export interface PortableField<T> extends Constructor {
3
- import(source: unknown, name: string): T;
4
- export(source: T): unknown;
5
- }
6
- export interface DeferredCallback<T> {
7
- (): T;
8
- }
9
- export declare function Scheme<T>(type: PortableField<T>, name?: string): (target: void, context: ClassFieldDecoratorContext<PortableModel, unknown>) => void;
10
- export declare function PolymorphicBase<T extends typeof PortableModel>(resolver: DeferredCallback<PortableConstructor[]>): (target: T, context: ClassDecoratorContext) => T;
11
- export declare function ArrayOf<T>(type: PortableField<T>): PortableField<T[]>;
12
- export declare function Nullable<T>(type: PortableField<T>): PortableField<T | null>;
13
- export declare function Optional<T>(type: PortableField<T>): PortableField<T | undefined>;
14
- export declare abstract class PortableModel {
15
- static import<T extends typeof PortableModel>(this: T, source: unknown, name: string): InstanceType<T>;
16
- static export<T extends typeof PortableModel>(this: T, source: InstanceType<T>): unknown;
17
- }
@@ -1,174 +0,0 @@
1
- "use strict";
2
- import {} from "./portable.js";
3
- //#region Field descriptor
4
- class FieldDescriptor {
5
- #key;
6
- #association;
7
- #type;
8
- constructor(key, association, type) {
9
- this.#key = key;
10
- this.#association = association;
11
- this.#type = type;
12
- }
13
- get key() {
14
- return this.#key;
15
- }
16
- get association() {
17
- return this.#association;
18
- }
19
- get type() {
20
- return this.#type;
21
- }
22
- }
23
- class DeferredResolver {
24
- #resolver;
25
- constructor(resolver) {
26
- this.#resolver = resolver;
27
- }
28
- get value() {
29
- return this.#resolver.call(this);
30
- }
31
- }
32
- //#endregion
33
- //#region Portability metadata
34
- class PortabilityMetadata {
35
- static #registry = new Map();
36
- #model;
37
- #fields = [];
38
- #callback = null;
39
- constructor(model) {
40
- this.#model = model;
41
- }
42
- static register(model) {
43
- const registry = PortabilityMetadata.#registry;
44
- if (registry.has(model.name))
45
- return; /** @todo Throw error */
46
- const metadata = new PortabilityMetadata(model);
47
- registry.set(model.name, metadata);
48
- }
49
- static read(model) {
50
- const registry = PortabilityMetadata.#registry;
51
- const record = registry.get(model.name);
52
- const metadata = ReferenceError.suppress(record, "asdasdadsa"); /** @todo Write error */
53
- return metadata;
54
- }
55
- get model() {
56
- return this.#model;
57
- }
58
- get fields() {
59
- return this.#fields;
60
- }
61
- get callback() {
62
- return this.#callback;
63
- }
64
- set callback(value) {
65
- this.#callback = value;
66
- }
67
- }
68
- //#endregion
69
- export function Scheme(type, name) {
70
- return function (target, context) {
71
- const key = context.name;
72
- if (typeof key === "symbol")
73
- throw new TypeError(""); /** @todo Write error */
74
- const association = name ?? key;
75
- context.addInitializer(function () {
76
- const Type = constructor(this); /** @todo Fix constructor */
77
- const { fields } = PortabilityMetadata.read(Type);
78
- fields.push(new FieldDescriptor(key, association, type));
79
- });
80
- };
81
- }
82
- export function PolymorphicBase(resolver) {
83
- return function (target) {
84
- const metadata = PortabilityMetadata.read(target);
85
- metadata.callback = resolver;
86
- return target;
87
- };
88
- }
89
- export function ArrayOf(type) {
90
- return class {
91
- static import(source, name) {
92
- return Array.import(source, name).map((item, index) => type.import(item, `${name}[${index}]`));
93
- }
94
- static export(source) {
95
- return source.map(item => type.export(item));
96
- }
97
- };
98
- }
99
- export function Nullable(type) {
100
- return class {
101
- static import(source, name) {
102
- return Reflect.mapNull(source, source => type.import(source, name));
103
- }
104
- static export(source) {
105
- return Reflect.mapNull(source, source => type.export(source));
106
- }
107
- };
108
- }
109
- export function Optional(type) {
110
- return class {
111
- static import(source, name) {
112
- return Reflect.mapUndefined(source, source => type.import(source, name));
113
- }
114
- static export(source) {
115
- return Reflect.mapUndefined(source, source => type.export(source));
116
- }
117
- };
118
- }
119
- export class PortableModel {
120
- static {
121
- PortabilityMetadata.register(this);
122
- }
123
- static import(source, name) {
124
- const { callback, fields } = PortabilityMetadata.read(this);
125
- if (callback !== null) {
126
- const descendants = callback();
127
- if (descendants.length > 1) {
128
- const object = Object.import(source, name);
129
- const typename = String.import(Reflect.get(object, "$type"), `${name}.$type`);
130
- const subtype = descendants.find(subtype => subtype.name === typename);
131
- if (subtype === undefined)
132
- throw new TypeError(`Unknown polymorphic type '${typename}' for '${this.name}'`);
133
- return subtype.import(source, name);
134
- }
135
- }
136
- const object = Object.import(source, name);
137
- const instance = Reflect.construct(this, []);
138
- let current = this;
139
- while (current && current !== PortableModel) {
140
- for (const { key, association, type } of fields) {
141
- const rawValue = Reflect.get(object, association);
142
- const importedValue = type.import(rawValue, `${name}.${association}`);
143
- Reflect.set(instance, key, importedValue);
144
- }
145
- current = Object.getPrototypeOf(current);
146
- }
147
- return instance;
148
- }
149
- static export(source) {
150
- const { callback, fields } = PortabilityMetadata.read(this);
151
- if (callback !== null) {
152
- const descendants = callback();
153
- if (descendants.length > 1) {
154
- const subtype = descendants.find(subtype => source instanceof subtype);
155
- if (subtype === undefined)
156
- throw new TypeError(`Unknown polymorphic type '${typename}' for '${this.name}'`);
157
- return subtype.export(source);
158
- }
159
- }
160
- const result = Object();
161
- Reflect.set(result, "$type", this.name);
162
- let current = this;
163
- while (current && current !== PortableModel) {
164
- for (const { key, association, type } of fields) {
165
- const value = Reflect.get(source, key);
166
- const exportedValue = type.export(value);
167
- Reflect.set(result, association, exportedValue);
168
- }
169
- current = Object.getPrototypeOf(current);
170
- }
171
- return result;
172
- }
173
- }
174
- //# sourceMappingURL=decorators.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/core/decorators.ts"],"names":[],"mappings":"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"}
@@ -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"}