adaptive-extender 0.9.0 → 0.9.2

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,10 @@
1
+ ## 0.9.2 (20.01.2026)
2
+ - Unified the `ImportableConstructor` and `ExportableConstructor` interfaces into `PortableConstructor`.
3
+ - Improved typing for object porting; decorators now possess better context inference.
4
+ - Moved `Constructor` to [global](./src/core/global.ts).
5
+ - The built-in `Date` class now complies with the `PortableConstructor` contract. Additionally, `Timestamp` and `UnixSeconds` adapters have been added for comprehensive `Date` porting.
6
+ - Added the `Any` adapter for porting arbitrary types.
7
+
1
8
  ## 0.9.0 (18.01.2026)
2
9
  - Added automatic model porting using decorators in [portable](./src/core/portable.ts).
3
10
  - Built-in types now implement the `PortableConstructor` interface.
@@ -0,0 +1,19 @@
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
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ export {};
3
+ //# sourceMappingURL=archivable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archivable.js","sourceRoot":"","sources":["../../src/core/archivable.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
@@ -1,6 +1,18 @@
1
1
  import "./global.js";
2
2
  declare global {
3
3
  export interface DateConstructor {
4
+ /**
5
+ * Validates and imports a date value from a raw 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): Date;
11
+ /**
12
+ * Returns the ISO date string for export.
13
+ * @param source The date to export.
14
+ */
15
+ export(source: Date): string;
4
16
  /**
5
17
  * Checks whether a given date is invalid.
6
18
  * @returns `true` if the value is a `Date` and is invalid; otherwise, `false`.
package/dist/core/date.js CHANGED
@@ -1,5 +1,13 @@
1
1
  "use strict";
2
2
  import "./global.js";
3
+ Date.import = function (source, name) {
4
+ if (typeof (source) !== "string")
5
+ throw new TypeError(`Unable to import date from ${name} due its ${typename(source)} type`);
6
+ return new Date(source);
7
+ };
8
+ Date.export = function (source) {
9
+ return source.toISOString();
10
+ };
3
11
  Date.isInvalid = function (date) {
4
12
  if (!(date instanceof Date))
5
13
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/core/date.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,aAAa,CAAC;AAsBrB,IAAI,CAAC,SAAS,GAAG,UAAU,IAAa;IACvC,IAAI,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,UAAa,KAAQ;IACpD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,OAAO,IAAI,CAAC;AACb,CAAC,CAAC"}
1
+ {"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/core/date.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,aAAa,CAAC;AAkCrB,IAAI,CAAC,MAAM,GAAG,UAAU,MAAW,EAAE,IAAY;IAChD,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,QAAQ;QAAE,MAAM,IAAI,SAAS,CAAC,8BAA8B,IAAI,YAAY,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7H,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,IAAI,CAAC,MAAM,GAAG,UAAU,MAAY;IACnC,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;AAC7B,CAAC,CAAC;AAEF,IAAI,CAAC,SAAS,GAAG,UAAU,IAAa;IACvC,IAAI,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,UAAa,KAAQ;IACpD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,OAAO,IAAI,CAAC;AACb,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,65 @@
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
@@ -0,0 +1 @@
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,11 +1,14 @@
1
+ /**
2
+ * Represents a generic class constructor.
3
+ */
4
+ export type Constructor<I = any, P extends readonly any[] = []> = abstract new (...args: P) => I;
1
5
  declare global {
2
6
  /**
3
7
  * Returns the constructor of the given non-nullable value.
4
8
  */
5
- export function constructor<T>(value: NonNullable<T>): Function;
9
+ export function constructor<T>(value: NonNullable<T>): Constructor<T>;
6
10
  /**
7
11
  * Gets the type name of a value.
8
12
  */
9
13
  export function typename(value: any): string;
10
14
  }
11
- export {};
@@ -1 +1 @@
1
- {"version":3,"file":"global.js","sourceRoot":"","sources":["../../src/core/global.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAeb,UAAU,CAAC,WAAW,GAAG,UAAa,KAAqB;IAC1D,OAAO,KAAK,CAAC,WAAW,CAAC;AAC1B,CAAC,CAAC;AAEF,UAAU,CAAC,QAAQ,GAAG,UAAU,KAAU;IACzC,QAAQ,KAAK,EAAE,CAAC;QAChB,KAAK,SAAS,CAAC,CAAC,OAAO,WAAW,CAAC;QACnC,KAAK,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;QACzB,OAAO,CAAC,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;IACxC,CAAC;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"global.js","sourceRoot":"","sources":["../../src/core/global.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAoBb,UAAU,CAAC,WAAW,GAAG,UAAa,KAAqB;IAC1D,OAAO,KAAK,CAAC,WAA6B,CAAC;AAC5C,CAAC,CAAC;AAEF,UAAU,CAAC,QAAQ,GAAG,UAAU,KAAU;IACzC,QAAQ,KAAK,EAAE,CAAC;QAChB,KAAK,SAAS,CAAC,CAAC,OAAO,WAAW,CAAC;QACnC,KAAK,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC;QACzB,OAAO,CAAC,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;IACxC,CAAC;AACF,CAAC,CAAC"}
@@ -4,44 +4,29 @@ import "./boolean.js";
4
4
  import "./array.js";
5
5
  import "./object.js";
6
6
  import "./reflect.js";
7
+ import { type Constructor } from "./global.js";
7
8
  /**
8
- * Represents a generic class constructor.
9
- */
10
- export type Constructor<T = any, P extends readonly any[] = []> = abstract new (...args: P) => T;
11
- /**
12
- * Represents a constructor that supports importing instances from a source.
9
+ * Represents a constructor that supports facilitating the safe conversion between anonymous schemes and typed instances.
13
10
  */
14
- export interface ImportableConstructor<M = any> extends Constructor<M> {
11
+ export interface PortableConstructor<I = any, S = unknown> extends Constructor<I> {
15
12
  /**
16
13
  * Imports an instance from a source.
17
14
  * @param source The source value to import.
18
15
  * @param name The name of the source value.
19
16
  * @throws {TypeError} If the source is not of the expected type.
20
17
  */
21
- import(source: any, name: string): M;
22
- }
23
- /**
24
- * Represents a constructor that supports exporting instances to a scheme.
25
- * @template S The type of scheme.
26
- */
27
- export interface ExportableConstructor<M = any, S = unknown> extends Constructor<M> {
18
+ import(source: any, name: string): I;
28
19
  /**
29
20
  * Exports an instance to a source.
30
21
  * @param source The instance to export.
31
22
  */
32
- export(source: M): S;
33
- }
34
- /**
35
- * Represents a constructor that supports facilitating the safe conversion between anonymous schemes and typed instances.
36
- * @template S The type of scheme.
37
- */
38
- export interface PortableConstructor<M = any, S = unknown> extends ImportableConstructor<M>, ExportableConstructor<M, S> {
23
+ export(source: I): S;
39
24
  }
40
25
  /**
41
26
  * The abstract base class for all portable data models.
42
27
  * Provides mechanism for type-safe import and export of data structures.
43
28
  */
44
- export declare abstract class PortableModel {
29
+ export declare abstract class Model {
45
30
  /**
46
31
  * Creates an instance of the model from a raw source.
47
32
  * Handles polymorphic resolution and recursive field mapping.
@@ -49,25 +34,25 @@ export declare abstract class PortableModel {
49
34
  * @param name The context path for error reporting.
50
35
  * @throws {TypeError} If validation fails or types do not match.
51
36
  */
52
- static import<T extends typeof PortableModel, S = any>(this: T, source: any, name: string): InstanceType<T>;
37
+ static import<I extends Model>(this: Constructor<I>, source: any, name: string): I;
53
38
  /**
54
39
  * Serializes the model instance to a raw object.
55
40
  * Includes type discrimination for polymorphic models.
56
41
  * @param source The model instance to export.
57
42
  */
58
- static export<T extends typeof PortableModel, S = any>(this: T, source: InstanceType<T>): S;
43
+ static export<I extends Model, S = any>(this: Constructor<I>, source: I): S;
59
44
  }
60
45
  /**
61
46
  * Decorator to register a class field as part of the portable schema.
62
47
  * @param type The portable constructor to use for import/export.
63
48
  */
64
- export declare function Field<M, S>(type: PortableConstructor<M, S>): (target: void, context: ClassFieldDecoratorContext<PortableModel, S>) => void;
49
+ export declare function Field<M, S>(type: PortableConstructor<M, S>): (target: void, context: ClassFieldDecoratorContext<Model, M>) => void;
65
50
  /**
66
51
  * Decorator to register a class field as part of the portable schema.
67
52
  * @param type The portable constructor to use for import/export.
68
53
  * @param name Alias for the field in the external source.
69
54
  */
70
- export declare function Field<M, S>(type: PortableConstructor<M, S>, name: string): (target: void, context: ClassFieldDecoratorContext<PortableModel, S>) => void;
55
+ export declare function Field<M, S>(type: PortableConstructor<M, S>, name: string): (target: void, context: ClassFieldDecoratorContext<Model, M>) => void;
71
56
  /**
72
57
  * Creates a portable wrapper for array types.
73
58
  * @param type The portable type of the array elements.
@@ -92,4 +77,16 @@ export declare function Deferred<M, S>(resolver: (_: void) => PortableConstructo
92
77
  * Decorator to register a descendant class in the base class's polymorphic registry.
93
78
  * @param descendant The subclass constructor to register.
94
79
  */
95
- export declare function Descendant<M extends typeof PortableModel>(descendant: PortableConstructor): (target: M, context: ClassDecoratorContext) => void;
80
+ export declare function Descendant<M extends typeof Model>(descendant: PortableConstructor): (target: M, context: ClassDecoratorContext) => void;
81
+ /**
82
+ * A portable adapter that facilitates the conversion between `Date` instances and millisecond timestamps.
83
+ */
84
+ export declare const Timestamp: PortableConstructor<Date, number>;
85
+ /**
86
+ * A portable adapter that facilitates the conversion between `Date` instances and Unix second timestamps.
87
+ */
88
+ export declare const UnixSeconds: PortableConstructor<Date, number>;
89
+ /**
90
+ * A portable adapter that allows any value to pass through without validation or transformation.
91
+ */
92
+ export declare const Any: PortableConstructor<any, any>;
@@ -5,6 +5,7 @@ import "./boolean.js";
5
5
  import "./array.js";
6
6
  import "./object.js";
7
7
  import "./reflect.js";
8
+ import {} from "./global.js";
8
9
  //#endregion
9
10
  //#region Field descriptor
10
11
  class FieldDescriptor {
@@ -61,7 +62,7 @@ class PortabilityMetadata {
61
62
  * The abstract base class for all portable data models.
62
63
  * Provides mechanism for type-safe import and export of data structures.
63
64
  */
64
- export class PortableModel {
65
+ export class Model {
65
66
  /**
66
67
  * Creates an instance of the model from a raw source.
67
68
  * Handles polymorphic resolution and recursive field mapping.
@@ -70,7 +71,8 @@ export class PortableModel {
70
71
  * @throws {TypeError} If validation fails or types do not match.
71
72
  */
72
73
  static import(source, name) {
73
- const { descendants } = PortabilityMetadata.read(this);
74
+ const model = this;
75
+ const { descendants } = PortabilityMetadata.read(model);
74
76
  if (descendants.length > 0) {
75
77
  const object = Object.import(source, name);
76
78
  const descriminator = String.import(Reflect.get(object, "$type"), `${name}.$type`);
@@ -81,7 +83,7 @@ export class PortableModel {
81
83
  }
82
84
  const object = Object.import(source, name);
83
85
  const instance = Reflect.construct(this, []);
84
- const { fields } = PortabilityMetadata.read(this);
86
+ const { fields } = PortabilityMetadata.read(model);
85
87
  for (const { key, association, type } of fields.values()) {
86
88
  const raw = Reflect.get(object, association);
87
89
  const value = type.import(raw, `${name}.${association}`);
@@ -95,7 +97,8 @@ export class PortableModel {
95
97
  * @param source The model instance to export.
96
98
  */
97
99
  static export(source) {
98
- const { descendants } = PortabilityMetadata.read(this);
100
+ const model = this;
101
+ const { descendants } = PortabilityMetadata.read(model);
99
102
  if (descendants.length > 0) {
100
103
  const descendant = descendants.find(descendant => source instanceof descendant);
101
104
  if (descendant === undefined)
@@ -103,8 +106,8 @@ export class PortableModel {
103
106
  return descendant.export(source);
104
107
  }
105
108
  const object = Object();
106
- Reflect.set(object, "$type", this.name);
107
- const { fields } = PortabilityMetadata.read(this);
109
+ Reflect.set(object, "$type", model.name);
110
+ const { fields } = PortabilityMetadata.read(model);
108
111
  for (const field of fields.values()) {
109
112
  const value = Reflect.get(source, field.key);
110
113
  const raw = field.type.export(value);
@@ -200,4 +203,63 @@ export function Descendant(descendant) {
200
203
  descendants.push(descendant);
201
204
  };
202
205
  }
206
+ //#endregion
207
+ //#region Adapters
208
+ /**
209
+ * A portable adapter that facilitates the conversion between `Date` instances and millisecond timestamps.
210
+ */
211
+ export const Timestamp = {
212
+ [Symbol.hasInstance](instance) {
213
+ return instance instanceof Date;
214
+ },
215
+ get name() {
216
+ return "Timestamp";
217
+ },
218
+ import(source, name) {
219
+ if (typeof (source) !== "number")
220
+ throw new TypeError(`Unable to import date from ${name} due its ${typename(source)} type`);
221
+ return new Date(source);
222
+ },
223
+ export(source) {
224
+ return source.getTime();
225
+ },
226
+ };
227
+ /**
228
+ * A portable adapter that facilitates the conversion between `Date` instances and Unix second timestamps.
229
+ */
230
+ export const UnixSeconds = {
231
+ [Symbol.hasInstance](instance) {
232
+ return instance instanceof Date;
233
+ },
234
+ get name() {
235
+ return "UnixSeconds";
236
+ },
237
+ import(source, name) {
238
+ if (typeof (source) !== "number")
239
+ throw new TypeError(`Unable to import date from ${name} due its ${typename(source)} type`);
240
+ return new Date(source * 1000);
241
+ },
242
+ export(source) {
243
+ return Math.trunc(source.getTime() / 1000);
244
+ },
245
+ };
246
+ /**
247
+ * A portable adapter that allows any value to pass through without validation or transformation.
248
+ */
249
+ export const Any = {
250
+ [Symbol.hasInstance](instance) {
251
+ void instance;
252
+ return true;
253
+ },
254
+ get name() {
255
+ return "Any";
256
+ },
257
+ import(source, name) {
258
+ void name;
259
+ return source;
260
+ },
261
+ export(source) {
262
+ return source;
263
+ },
264
+ };
203
265
  //# sourceMappingURL=portable.js.map
@@ -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 @@
1
+ export {};
@@ -0,0 +1,55 @@
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
@@ -0,0 +1 @@
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adaptive-extender",
3
- "version": "0.9.0",
3
+ "version": "0.9.2",
4
4
  "description": "Adaptive library for JS/TS development environments",
5
5
  "type": "module",
6
6
  "main": "./dist/core/index.js",
@@ -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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"}