adaptive-extender 0.9.6 → 0.9.8
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 +1 -1
- package/dist/core/archivable.d.ts +19 -0
- package/dist/core/archivable.js +3 -0
- package/dist/core/archivable.js.map +1 -0
- package/dist/core/debug_types.d.ts +1 -0
- package/dist/core/debug_types.js +65 -0
- package/dist/core/debug_types.js.map +1 -0
- package/dist/core/repro_issue.d.ts +1 -0
- package/dist/core/repro_issue.js +55 -0
- package/dist/core/repro_issue.js.map +1 -0
- package/package.json +1 -1
- package/dist/core/decorators.d.ts +0 -17
- package/dist/core/decorators.js +0 -174
- package/dist/core/decorators.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"archivable.js","sourceRoot":"","sources":["../../src/core/archivable.ts"],"names":[],"mappings":"AAAA,YAAY,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"}
|
|
@@ -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,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
|
-
}
|
package/dist/core/decorators.js
DELETED
|
@@ -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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"}
|