@antelopejs/interface-database-decorators 0.0.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/LICENSE +190 -0
- package/README.md +42 -0
- package/dist/antelope.test.d.ts +2 -0
- package/dist/antelope.test.js +52 -0
- package/dist/antelope.test.js.map +1 -0
- package/dist/common.d.ts +22 -0
- package/dist/common.js +36 -0
- package/dist/common.js.map +1 -0
- package/dist/database.d.ts +2 -0
- package/dist/database.js +71 -0
- package/dist/database.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/model.d.ts +101 -0
- package/dist/model.js +161 -0
- package/dist/model.js.map +1 -0
- package/dist/modifiers/common.d.ts +87 -0
- package/dist/modifiers/common.js +370 -0
- package/dist/modifiers/common.js.map +1 -0
- package/dist/modifiers/encryption.d.ts +37 -0
- package/dist/modifiers/encryption.js +79 -0
- package/dist/modifiers/encryption.js.map +1 -0
- package/dist/modifiers/hash.d.ts +41 -0
- package/dist/modifiers/hash.js +54 -0
- package/dist/modifiers/hash.js.map +1 -0
- package/dist/modifiers/index.d.ts +4 -0
- package/dist/modifiers/index.js +21 -0
- package/dist/modifiers/index.js.map +1 -0
- package/dist/modifiers/localization.d.ts +43 -0
- package/dist/modifiers/localization.js +57 -0
- package/dist/modifiers/localization.js.map +1 -0
- package/dist/schema.d.ts +4 -0
- package/dist/schema.js +21 -0
- package/dist/schema.js.map +1 -0
- package/dist/table.d.ts +53 -0
- package/dist/table.js +63 -0
- package/dist/table.js.map +1 -0
- package/dist/tests/common.test.d.ts +1 -0
- package/dist/tests/common.test.js +52 -0
- package/dist/tests/common.test.js.map +1 -0
- package/dist/tests/database.test.d.ts +1 -0
- package/dist/tests/database.test.js +184 -0
- package/dist/tests/database.test.js.map +1 -0
- package/dist/tests/integration.test.d.ts +1 -0
- package/dist/tests/integration.test.js +399 -0
- package/dist/tests/integration.test.js.map +1 -0
- package/dist/tests/model.test.d.ts +1 -0
- package/dist/tests/model.test.js +186 -0
- package/dist/tests/model.test.js.map +1 -0
- package/dist/tests/modifiers/common.test.d.ts +1 -0
- package/dist/tests/modifiers/common.test.js +165 -0
- package/dist/tests/modifiers/common.test.js.map +1 -0
- package/dist/tests/modifiers/encryption.test.d.ts +1 -0
- package/dist/tests/modifiers/encryption.test.js +161 -0
- package/dist/tests/modifiers/encryption.test.js.map +1 -0
- package/dist/tests/modifiers/hash.test.d.ts +1 -0
- package/dist/tests/modifiers/hash.test.js +126 -0
- package/dist/tests/modifiers/hash.test.js.map +1 -0
- package/dist/tests/modifiers/localization.test.d.ts +1 -0
- package/dist/tests/modifiers/localization.test.js +175 -0
- package/dist/tests/modifiers/localization.test.js.map +1 -0
- package/dist/tests/schema.test.d.ts +1 -0
- package/dist/tests/schema.test.js +102 -0
- package/dist/tests/schema.test.js.map +1 -0
- package/dist/tests/table.test.d.ts +1 -0
- package/dist/tests/table.test.js +112 -0
- package/dist/tests/table.test.js.map +1 -0
- package/package.json +101 -0
package/dist/model.js
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Model = void 0;
|
|
7
|
+
exports.BasicDataModel = BasicDataModel;
|
|
8
|
+
exports.GetModel = GetModel;
|
|
9
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
10
|
+
const interface_api_1 = require("@antelopejs/interface-api");
|
|
11
|
+
const decorators_1 = require("@antelopejs/interface-core/decorators");
|
|
12
|
+
const interface_database_1 = require("@antelopejs/interface-database");
|
|
13
|
+
const common_1 = require("./common");
|
|
14
|
+
const common_2 = require("./modifiers/common");
|
|
15
|
+
/**
|
|
16
|
+
* Utility Class factory to create a basic Data Model with 1 table.
|
|
17
|
+
*
|
|
18
|
+
* @param dataType Database Table class
|
|
19
|
+
* @param tableName Table name in Database
|
|
20
|
+
*/
|
|
21
|
+
function BasicDataModel(dataType, tableName) {
|
|
22
|
+
const metadata = (0, common_1.getMetadata)(dataType, common_1.DatumStaticMetadata);
|
|
23
|
+
const resolvedName = tableName ?? metadata.tableName;
|
|
24
|
+
(0, node_assert_1.default)(resolvedName, "tableName must be provided or set via @RegisterTable");
|
|
25
|
+
const name = resolvedName;
|
|
26
|
+
const schemaName = metadata.schemaName;
|
|
27
|
+
const primaryKey = metadata.primary;
|
|
28
|
+
return class Model {
|
|
29
|
+
database;
|
|
30
|
+
static schemaName = schemaName;
|
|
31
|
+
/**
|
|
32
|
+
* Converts some plain data into an instance of the Table class.
|
|
33
|
+
*
|
|
34
|
+
* @param obj Plain data object containing the table fields
|
|
35
|
+
* @returns Table class instance
|
|
36
|
+
*/
|
|
37
|
+
static fromPlainData(obj) {
|
|
38
|
+
return obj instanceof dataType ? obj : (0, common_2.fromPlainData)(obj, dataType);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Converts an object acquired from the database into a Table class instance.
|
|
42
|
+
*
|
|
43
|
+
* @param obj Object resulting from a database get
|
|
44
|
+
* @returns Table class instance
|
|
45
|
+
*/
|
|
46
|
+
static fromDatabase(obj) {
|
|
47
|
+
return obj ? (0, common_2.fromDatabase)(obj, dataType) : undefined;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Converts a Table class instance into an object fit to be inserted in the database.
|
|
51
|
+
*
|
|
52
|
+
* @param obj Table class instance
|
|
53
|
+
* @returns Database-ready data
|
|
54
|
+
*/
|
|
55
|
+
static toDatabase(obj) {
|
|
56
|
+
const instance = obj instanceof dataType ? obj : Model.fromPlainData(obj);
|
|
57
|
+
return (0, common_2.toDatabase)(instance);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* AQL Table reference.
|
|
61
|
+
*/
|
|
62
|
+
table;
|
|
63
|
+
constructor(database) {
|
|
64
|
+
this.database = database;
|
|
65
|
+
this.table = database.table(name);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get a single element from the table using its primary key.
|
|
69
|
+
*
|
|
70
|
+
* @param id Primary key value
|
|
71
|
+
* @returns Table class instance
|
|
72
|
+
*/
|
|
73
|
+
get(id) {
|
|
74
|
+
return this.table.get(id).then(Model.fromDatabase);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get multiple elements from the table using a given index.
|
|
78
|
+
*
|
|
79
|
+
* @param index Index name
|
|
80
|
+
* @param keys Index value(s)
|
|
81
|
+
* @returns Array of Table class instances.
|
|
82
|
+
*/
|
|
83
|
+
getBy(index, ...keys) {
|
|
84
|
+
return this.table
|
|
85
|
+
.getAll(keys.length === 1 ? keys[0] : keys, index)
|
|
86
|
+
.then((dataR) => dataR.map(Model.fromDatabase));
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get all the elements from the table.
|
|
90
|
+
*
|
|
91
|
+
* @returns Array of Table class instances.
|
|
92
|
+
*/
|
|
93
|
+
getAll() {
|
|
94
|
+
return this.table.then((dataR) => dataR.map(Model.fromDatabase));
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Insert some data into the table.
|
|
98
|
+
*
|
|
99
|
+
* @param obj Table class instance or plain data
|
|
100
|
+
* @param options Insert options
|
|
101
|
+
* @returns Insert result
|
|
102
|
+
*/
|
|
103
|
+
insert(obj) {
|
|
104
|
+
const converter = (entry) => {
|
|
105
|
+
const instance = Model.fromPlainData(entry);
|
|
106
|
+
(0, common_2.triggerEvent)(instance, "insert");
|
|
107
|
+
return Model.toDatabase(instance);
|
|
108
|
+
};
|
|
109
|
+
return this.table
|
|
110
|
+
.insert(Array.isArray(obj) ? obj.map(converter) : converter(obj))
|
|
111
|
+
.run();
|
|
112
|
+
}
|
|
113
|
+
update(obj, data) {
|
|
114
|
+
if (typeof obj === "string") {
|
|
115
|
+
const instance = Model.fromPlainData(data);
|
|
116
|
+
(0, common_2.triggerEvent)(instance, "update");
|
|
117
|
+
return this.table.get(obj).update(Model.toDatabase(instance)).run();
|
|
118
|
+
}
|
|
119
|
+
const instance = Model.fromPlainData(obj);
|
|
120
|
+
(0, common_2.triggerEvent)(instance, "update");
|
|
121
|
+
const id = obj[primaryKey];
|
|
122
|
+
(0, node_assert_1.default)(id !== undefined, "Missing primary key in object update.");
|
|
123
|
+
return this.table.get(id).update(Model.toDatabase(instance)).run();
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Delete an element from the table.
|
|
127
|
+
*
|
|
128
|
+
* @param id Primary key value
|
|
129
|
+
* @returns Delete result
|
|
130
|
+
*/
|
|
131
|
+
delete(id) {
|
|
132
|
+
return this.table.get(id).delete().run();
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
const modelCache = new Map();
|
|
137
|
+
function GetModel(cl, instanceId) {
|
|
138
|
+
if (!modelCache.has(cl)) {
|
|
139
|
+
modelCache.set(cl, {});
|
|
140
|
+
}
|
|
141
|
+
const cache = modelCache.get(cl) ?? {};
|
|
142
|
+
const cacheKey = instanceId ?? "";
|
|
143
|
+
if (cache[cacheKey])
|
|
144
|
+
return cache[cacheKey];
|
|
145
|
+
const schema = interface_database_1.Schema.get(cl.schemaName);
|
|
146
|
+
(0, node_assert_1.default)(schema, `Schema not found for '${cl.schemaName}'`);
|
|
147
|
+
const model = new cl(schema.instance(instanceId));
|
|
148
|
+
cache[cacheKey] = model;
|
|
149
|
+
return model;
|
|
150
|
+
}
|
|
151
|
+
exports.Model = (0, decorators_1.MakeParameterAndPropertyDecorator)((target, key, index, cl, instanceIdOrCallback) => {
|
|
152
|
+
if (typeof instanceIdOrCallback === "function") {
|
|
153
|
+
(0, interface_api_1.SetParameterProvider)(target, key, index, (ctx) => {
|
|
154
|
+
return GetModel(cl, instanceIdOrCallback(ctx));
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
(0, interface_api_1.SetParameterProvider)(target, key, index, () => GetModel(cl, instanceIdOrCallback));
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type * as DatabaseDev from "@antelopejs/interface-database";
|
|
2
|
+
import { type Constructible } from "../common";
|
|
3
|
+
export declare const MixinSymbol: unique symbol;
|
|
4
|
+
export type MixinType<T> = T extends {
|
|
5
|
+
[MixinSymbol]: infer A;
|
|
6
|
+
} ? A : never;
|
|
7
|
+
export declare class Modifier<Meta extends object = object, Options extends object = object> {
|
|
8
|
+
protected meta: Meta;
|
|
9
|
+
protected options: Options;
|
|
10
|
+
}
|
|
11
|
+
export declare class OneWayModifier<LockedType, Args extends any[] = [], Meta extends object = object, Options extends object = object> extends Modifier<Meta, Options> {
|
|
12
|
+
lock(_locked_value: LockedType | undefined, _value: unknown, ..._args: Args): LockedType;
|
|
13
|
+
test(locked_value: LockedType, value: unknown, ...args: Args): boolean;
|
|
14
|
+
}
|
|
15
|
+
type ProxyOrValArray<T extends any[]> = {
|
|
16
|
+
[K in keyof T]: DatabaseDev.ValueProxyOrValue<T[K]>;
|
|
17
|
+
};
|
|
18
|
+
export declare class TwoWayModifier<LockedType, Args extends any[] = [], Meta extends object = object, Options extends object = object> extends OneWayModifier<LockedType, Args, Meta, Options> {
|
|
19
|
+
unlock(_locked_value: LockedType, ..._args: Args): unknown;
|
|
20
|
+
unlockrequest(_data: DatabaseDev.ValueProxy<LockedType>, _meta: DatabaseDev.ValueProxy<Meta>, ..._args: ProxyOrValArray<Args>): DatabaseDev.ValueProxy<unknown>;
|
|
21
|
+
}
|
|
22
|
+
export declare class ContainerModifier<Meta extends object = object, Options extends object = object> extends TwoWayModifier<Record<string, unknown>, [
|
|
23
|
+
key: string
|
|
24
|
+
], Meta, Options> {
|
|
25
|
+
lock(locked_value: Record<string, unknown> | undefined, value: unknown, key: string): Record<string, unknown>;
|
|
26
|
+
unlock(locked_value: Record<string, unknown>, key: string): unknown;
|
|
27
|
+
unlockrequest(data: DatabaseDev.ValueProxy<Record<string, unknown>>, _meta: DatabaseDev.ValueProxy<Meta>, key: DatabaseDev.ValueProxyOrValue<string>): DatabaseDev.ValueProxy<unknown>;
|
|
28
|
+
}
|
|
29
|
+
interface InternalType {
|
|
30
|
+
meta: Record<string, object>;
|
|
31
|
+
data: Record<string, any>;
|
|
32
|
+
}
|
|
33
|
+
interface ModifiedField {
|
|
34
|
+
id: string;
|
|
35
|
+
modifier: Modifier;
|
|
36
|
+
metaRef: {
|
|
37
|
+
_ref: any;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export declare class ModifiersStaticMetadata {
|
|
41
|
+
static key: symbol;
|
|
42
|
+
fields: Record<string, Array<ModifiedField>>;
|
|
43
|
+
events: Map<string, [field: string, modified: ModifiedField][]>;
|
|
44
|
+
}
|
|
45
|
+
export declare class ModifiersDynamicMetadata {
|
|
46
|
+
static key: symbol;
|
|
47
|
+
staticMeta: ModifiersStaticMetadata;
|
|
48
|
+
floating: Record<string, any>;
|
|
49
|
+
fields: Record<string, Record<string, any[]>>;
|
|
50
|
+
constructor(target: any);
|
|
51
|
+
canGet(field: string): boolean;
|
|
52
|
+
get(field: string, internal: InternalType): any;
|
|
53
|
+
canSet(field: string): boolean;
|
|
54
|
+
set(field: string, internal: InternalType, value: unknown): void;
|
|
55
|
+
}
|
|
56
|
+
export declare function fromPlainData<T extends Constructible>(rawObject: Record<string, any>, TableClass: T): InstanceType<T>;
|
|
57
|
+
export declare function toPlainData<T extends {
|
|
58
|
+
constructor: any;
|
|
59
|
+
}>(object: T): Record<string, any>;
|
|
60
|
+
export declare function fromDatabase<T extends Constructible>(rawObject: any, TableClass: T): InstanceType<T>;
|
|
61
|
+
export declare function toDatabase<T extends {
|
|
62
|
+
constructor: any;
|
|
63
|
+
}>(object: T): Record<string, any>;
|
|
64
|
+
type ExtractModifierOptions<T> = T extends Modifier<any, infer Options> ? Options : undefined;
|
|
65
|
+
type ExtractModifierArgs<T> = T extends OneWayModifier<any, infer Args> ? Args : [];
|
|
66
|
+
export declare function attachModifier<T extends Constructible, M extends Constructible<Modifier>>(TableClass: T, Modifier: M, field: keyof InstanceType<T>, options: ExtractModifierOptions<InstanceType<M>>): void;
|
|
67
|
+
export declare function getModifiedFields<T extends {
|
|
68
|
+
constructor: any;
|
|
69
|
+
}, M extends Constructible<Modifier>>(object: T, Modifier: M): (keyof T)[];
|
|
70
|
+
export declare function unlock<T extends {
|
|
71
|
+
constructor: any;
|
|
72
|
+
}, M extends Constructible<Modifier>>(object: T, Modifier: M, fields: Array<keyof T> | undefined, ...args: ExtractModifierArgs<InstanceType<M>>): void;
|
|
73
|
+
type ModifierWithProxyArgs = {
|
|
74
|
+
modifier: Constructible<TwoWayModifier<any, any[], any, any>>;
|
|
75
|
+
args: DatabaseDev.ValueProxyOrValue<any>[];
|
|
76
|
+
};
|
|
77
|
+
export declare function unlockrequest<T extends {}, K extends keyof T>(table: Constructible<T>, object: DatabaseDev.ValueProxy<T>, field: K, modifiers: ModifierWithProxyArgs[]): DatabaseDev.ValueProxy<T[K]>;
|
|
78
|
+
export declare function lock<T extends {
|
|
79
|
+
constructor: any;
|
|
80
|
+
}, M extends Constructible<Modifier>>(object: T, Modifier: M, fields: Array<keyof T> | undefined, ...args: ExtractModifierArgs<InstanceType<M>> | []): void;
|
|
81
|
+
export declare function testValue<T extends {
|
|
82
|
+
constructor: any;
|
|
83
|
+
}, K extends keyof T>(object: T, field: K, value: T[K]): unknown;
|
|
84
|
+
export declare function triggerEvent<T extends {
|
|
85
|
+
constructor: any;
|
|
86
|
+
}>(object: T, event: string, ...args: unknown[]): void;
|
|
87
|
+
export {};
|
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ModifiersDynamicMetadata = exports.ModifiersStaticMetadata = exports.ContainerModifier = exports.TwoWayModifier = exports.OneWayModifier = exports.Modifier = exports.MixinSymbol = void 0;
|
|
4
|
+
exports.fromPlainData = fromPlainData;
|
|
5
|
+
exports.toPlainData = toPlainData;
|
|
6
|
+
exports.fromDatabase = fromDatabase;
|
|
7
|
+
exports.toDatabase = toDatabase;
|
|
8
|
+
exports.attachModifier = attachModifier;
|
|
9
|
+
exports.getModifiedFields = getModifiedFields;
|
|
10
|
+
exports.unlock = unlock;
|
|
11
|
+
exports.unlockrequest = unlockrequest;
|
|
12
|
+
exports.lock = lock;
|
|
13
|
+
exports.testValue = testValue;
|
|
14
|
+
exports.triggerEvent = triggerEvent;
|
|
15
|
+
const common_1 = require("../common");
|
|
16
|
+
exports.MixinSymbol = Symbol();
|
|
17
|
+
class Modifier {
|
|
18
|
+
meta;
|
|
19
|
+
options;
|
|
20
|
+
}
|
|
21
|
+
exports.Modifier = Modifier;
|
|
22
|
+
class OneWayModifier extends Modifier {
|
|
23
|
+
lock(_locked_value, _value, ..._args) {
|
|
24
|
+
throw new Error("Unimplemented");
|
|
25
|
+
}
|
|
26
|
+
test(locked_value, value, ...args) {
|
|
27
|
+
return this.lock(undefined, value, ...args) === locked_value;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.OneWayModifier = OneWayModifier;
|
|
31
|
+
class TwoWayModifier extends OneWayModifier {
|
|
32
|
+
unlock(_locked_value, ..._args) {
|
|
33
|
+
throw new Error("Unimplemented");
|
|
34
|
+
}
|
|
35
|
+
unlockrequest(_data, _meta, ..._args) {
|
|
36
|
+
throw new Error("Unimplemented");
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.TwoWayModifier = TwoWayModifier;
|
|
40
|
+
class ContainerModifier extends TwoWayModifier {
|
|
41
|
+
lock(locked_value, value, key) {
|
|
42
|
+
if (key === "*") {
|
|
43
|
+
return value;
|
|
44
|
+
}
|
|
45
|
+
return locked_value
|
|
46
|
+
? {
|
|
47
|
+
...locked_value,
|
|
48
|
+
[key]: value,
|
|
49
|
+
}
|
|
50
|
+
: { [key]: value };
|
|
51
|
+
}
|
|
52
|
+
unlock(locked_value, key) {
|
|
53
|
+
return key === "*" ? locked_value : locked_value[key];
|
|
54
|
+
}
|
|
55
|
+
unlockrequest(data, _meta, key) {
|
|
56
|
+
return data.key(key);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.ContainerModifier = ContainerModifier;
|
|
60
|
+
function isWriteOnly(modifier) {
|
|
61
|
+
return "lock" in modifier && !("unlock" in modifier);
|
|
62
|
+
}
|
|
63
|
+
function isOnlyEvents(modifier) {
|
|
64
|
+
return !("lock" in modifier);
|
|
65
|
+
}
|
|
66
|
+
class ModifiersStaticMetadata {
|
|
67
|
+
static key = Symbol();
|
|
68
|
+
fields = {};
|
|
69
|
+
events = new Map();
|
|
70
|
+
}
|
|
71
|
+
exports.ModifiersStaticMetadata = ModifiersStaticMetadata;
|
|
72
|
+
function withRef(internal, id, modifier, metaRef, callback) {
|
|
73
|
+
metaRef._ref = internal.meta[id];
|
|
74
|
+
const ret = callback(modifier);
|
|
75
|
+
if (metaRef._ref !== internal.meta[id]) {
|
|
76
|
+
internal.meta[id] = metaRef._ref;
|
|
77
|
+
}
|
|
78
|
+
return ret;
|
|
79
|
+
}
|
|
80
|
+
class ModifiersDynamicMetadata {
|
|
81
|
+
static key = Symbol();
|
|
82
|
+
staticMeta;
|
|
83
|
+
floating = {}; // Plain data that has no known lock value
|
|
84
|
+
fields = {};
|
|
85
|
+
constructor(target) {
|
|
86
|
+
this.staticMeta = (0, common_1.getMetadata)(target.constructor, ModifiersStaticMetadata);
|
|
87
|
+
for (const field of Object.keys(this.staticMeta.fields)) {
|
|
88
|
+
this.fields[field] = {};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
canGet(field) {
|
|
92
|
+
const list = this.staticMeta.fields[field];
|
|
93
|
+
const lastModifier = list[list.length - 1].modifier;
|
|
94
|
+
if (lastModifier.autolock) {
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
return (!isWriteOnly(lastModifier) &&
|
|
98
|
+
!list.some(({ id, modifier }) => !modifier.autounlock &&
|
|
99
|
+
"unlock" in modifier &&
|
|
100
|
+
!(id in this.fields[field])));
|
|
101
|
+
}
|
|
102
|
+
get(field, internal) {
|
|
103
|
+
if (field in this.floating) {
|
|
104
|
+
return this.floating[field];
|
|
105
|
+
}
|
|
106
|
+
if (!this.canGet(field)) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const list = this.staticMeta.fields[field];
|
|
110
|
+
let value = internal.data[field];
|
|
111
|
+
for (const { id, modifier, metaRef } of list) {
|
|
112
|
+
if ("unlock" in modifier && value !== undefined) {
|
|
113
|
+
if (this.fields[field][id]) {
|
|
114
|
+
value = withRef(internal, id, modifier, metaRef, (modifier) => modifier.unlock(value, ...this.fields[field][id]));
|
|
115
|
+
}
|
|
116
|
+
else if (modifier.autounlock) {
|
|
117
|
+
value = withRef(internal, id, modifier, metaRef, (modifier) => modifier.unlock(value));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return value;
|
|
122
|
+
}
|
|
123
|
+
canSet(field) {
|
|
124
|
+
const list = this.staticMeta.fields[field];
|
|
125
|
+
return !list.some(({ id, modifier }) => !modifier.autolock &&
|
|
126
|
+
"lock" in modifier &&
|
|
127
|
+
!(id in this.fields[field]));
|
|
128
|
+
}
|
|
129
|
+
set(field, internal, value) {
|
|
130
|
+
if (!this.canSet(field)) {
|
|
131
|
+
this.floating[field] = value;
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
const list = this.staticMeta.fields[field];
|
|
135
|
+
// TODO: should maybe cache this
|
|
136
|
+
const prevlist = [];
|
|
137
|
+
let prev = internal.data[field];
|
|
138
|
+
for (let i = 0; i < list.length - 1; ++i) {
|
|
139
|
+
const { id, modifier, metaRef } = list[i];
|
|
140
|
+
prevlist[i] = { id, modifier, metaRef, prev };
|
|
141
|
+
if ("unlock" in modifier) {
|
|
142
|
+
if (this.fields[field][id]) {
|
|
143
|
+
prev = modifier.unlock(prev, ...this.fields[field][id]);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
prev = undefined;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
prevlist.push({
|
|
151
|
+
...list[list.length - 1],
|
|
152
|
+
prev,
|
|
153
|
+
});
|
|
154
|
+
for (let i = prevlist.length - 1; i >= 0; --i) {
|
|
155
|
+
const { id, modifier, metaRef, prev } = prevlist[i];
|
|
156
|
+
if ("lock" in modifier) {
|
|
157
|
+
value = withRef(internal, id, modifier, metaRef, (modifier) => modifier.lock(prev, value, ...(this.fields[field][id] || [])));
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
internal.data[field] = value;
|
|
161
|
+
delete this.floating[field];
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
exports.ModifiersDynamicMetadata = ModifiersDynamicMetadata;
|
|
165
|
+
function getInternal(object) {
|
|
166
|
+
if (!object._internal) {
|
|
167
|
+
object._internal = {
|
|
168
|
+
meta: {},
|
|
169
|
+
data: {},
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
return object._internal;
|
|
173
|
+
}
|
|
174
|
+
/* Data stages:
|
|
175
|
+
*
|
|
176
|
+
* - `Database`: locked plain object
|
|
177
|
+
* - Complete data with encoded _internal field
|
|
178
|
+
* - ex: `{ plain: 'value', _internal: { [..] } }`
|
|
179
|
+
* - `Instance`: class instance
|
|
180
|
+
* - Complete data with prototype attached and accessors
|
|
181
|
+
* - ex: `Table { plain: 'value', special: (accessor) }`
|
|
182
|
+
* - `Plaindata`: unlocked plain object
|
|
183
|
+
* - Subset of existing data from locked object
|
|
184
|
+
* - ex: `{ plain: 'value', special: 'data' }`
|
|
185
|
+
*/
|
|
186
|
+
function fromPlainData(rawObject, TableClass) {
|
|
187
|
+
const shallowCopy = {};
|
|
188
|
+
// Attach prototype
|
|
189
|
+
Object.setPrototypeOf(shallowCopy, TableClass.prototype);
|
|
190
|
+
for (const [key, val] of Object.entries(rawObject)) {
|
|
191
|
+
shallowCopy[key] = val;
|
|
192
|
+
}
|
|
193
|
+
triggerEvent(shallowCopy, "fromPlainData", rawObject);
|
|
194
|
+
return shallowCopy;
|
|
195
|
+
}
|
|
196
|
+
function toPlainData(object) {
|
|
197
|
+
const metaTable = (0, common_1.getMetadata)(object.constructor, ModifiersStaticMetadata);
|
|
198
|
+
const result = { ...object };
|
|
199
|
+
delete result._internal;
|
|
200
|
+
for (const field of Object.keys(metaTable.fields)) {
|
|
201
|
+
result[field] = object[field]; // Populate unlocked fields
|
|
202
|
+
}
|
|
203
|
+
triggerEvent(object, "toPlainData", result);
|
|
204
|
+
return result;
|
|
205
|
+
}
|
|
206
|
+
function fromDatabase(rawObject, TableClass) {
|
|
207
|
+
// Generate Meta
|
|
208
|
+
const shallowCopy = { ...rawObject };
|
|
209
|
+
// Attach prototype
|
|
210
|
+
Object.setPrototypeOf(shallowCopy, TableClass.prototype);
|
|
211
|
+
triggerEvent(shallowCopy, "fromDatabase", rawObject);
|
|
212
|
+
return shallowCopy;
|
|
213
|
+
}
|
|
214
|
+
function toDatabase(object) {
|
|
215
|
+
const result = { ...object };
|
|
216
|
+
triggerEvent(object, "toDatabase", result);
|
|
217
|
+
return result;
|
|
218
|
+
}
|
|
219
|
+
const ignoredEventNames = {
|
|
220
|
+
constructor: true,
|
|
221
|
+
lock: true,
|
|
222
|
+
unlock: true,
|
|
223
|
+
};
|
|
224
|
+
function attachModifier(TableClass, Modifier, field, options) {
|
|
225
|
+
const entry = {
|
|
226
|
+
id: Modifier.name,
|
|
227
|
+
modifier: new Modifier(),
|
|
228
|
+
metaRef: { _ref: {} },
|
|
229
|
+
};
|
|
230
|
+
entry.modifier.meta = new Proxy(entry.metaRef, {
|
|
231
|
+
get: (self, p) => {
|
|
232
|
+
if (!self._ref)
|
|
233
|
+
return undefined;
|
|
234
|
+
return Reflect.get(self._ref, p, self._ref);
|
|
235
|
+
},
|
|
236
|
+
set: (self, p, v) => {
|
|
237
|
+
if (!self._ref)
|
|
238
|
+
self._ref = {};
|
|
239
|
+
return Reflect.set(self._ref, p, v, self._ref);
|
|
240
|
+
},
|
|
241
|
+
});
|
|
242
|
+
entry.modifier.options = options;
|
|
243
|
+
// Mark TableClass as special
|
|
244
|
+
const metaTable = (0, common_1.getMetadata)(TableClass, ModifiersStaticMetadata);
|
|
245
|
+
if (!isOnlyEvents(entry.modifier)) {
|
|
246
|
+
// Add Modifier to TableClass[field] with options
|
|
247
|
+
if (field in metaTable.fields) {
|
|
248
|
+
const list = metaTable.fields[field];
|
|
249
|
+
const last = list[list.length - 1];
|
|
250
|
+
if (isWriteOnly(last.modifier)) {
|
|
251
|
+
if (isWriteOnly(entry.modifier)) {
|
|
252
|
+
throw new Error(`Attempted adding Modifier ${entry.id} on ${TableClass.name}.${field} but it already has a One-Way Modifier`);
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
throw new Error(`Adding Modifier ${entry.id} on ${TableClass.name}.${field} after a One-Way Modifier, please review your ordering.`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
list.splice(list.length - 1, 0, entry);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
metaTable.fields[field] = [entry];
|
|
264
|
+
Object.defineProperty(TableClass.prototype, field, {
|
|
265
|
+
get: function () {
|
|
266
|
+
return (0, common_1.getMetadata)(this, ModifiersDynamicMetadata).get(field, getInternal(this));
|
|
267
|
+
},
|
|
268
|
+
set: function (value) {
|
|
269
|
+
(0, common_1.getMetadata)(this, ModifiersDynamicMetadata).set(field, getInternal(this), value);
|
|
270
|
+
},
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
if (!("toJSON" in TableClass.prototype)) {
|
|
275
|
+
Object.defineProperty(TableClass.prototype, "toJSON", {
|
|
276
|
+
value: function () {
|
|
277
|
+
return toPlainData(this);
|
|
278
|
+
},
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
for (const event of Object.getOwnPropertyNames(Modifier.prototype)) {
|
|
282
|
+
if (!(event in ignoredEventNames) &&
|
|
283
|
+
typeof Modifier.prototype[event] === "function") {
|
|
284
|
+
if (!metaTable.events.has(event)) {
|
|
285
|
+
metaTable.events.set(event, []);
|
|
286
|
+
}
|
|
287
|
+
metaTable.events.get(event)?.push([field, entry]);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
function getModifiedFields(object, Modifier) {
|
|
292
|
+
const metaTable = (0, common_1.getMetadata)(object.constructor, ModifiersStaticMetadata);
|
|
293
|
+
return Object.keys(metaTable.fields).filter((field) => metaTable.fields[field]?.find(({ id }) => id === Modifier.name));
|
|
294
|
+
}
|
|
295
|
+
function unlock(object, Modifier, fields, ...args) {
|
|
296
|
+
const metaTable = (0, common_1.getMetadata)(object.constructor, ModifiersStaticMetadata);
|
|
297
|
+
const usedFields = (fields ?? Object.keys(metaTable.fields)).filter((field) => metaTable.fields[field]?.find(({ id }) => id === Modifier.name));
|
|
298
|
+
// Get metadata
|
|
299
|
+
const meta = (0, common_1.getMetadata)(object, ModifiersDynamicMetadata);
|
|
300
|
+
// for each field set metadata[field][Modifier] to args
|
|
301
|
+
for (const field of usedFields) {
|
|
302
|
+
meta.fields[field][Modifier.name] = args;
|
|
303
|
+
if (field in meta.floating) {
|
|
304
|
+
// check floating
|
|
305
|
+
object[field] = meta.floating[field];
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
function unlockrequest(table, object, field, modifiers) {
|
|
310
|
+
const args = {};
|
|
311
|
+
for (const { modifier, args: modArgs } of modifiers) {
|
|
312
|
+
args[modifier.name] = modArgs;
|
|
313
|
+
}
|
|
314
|
+
const meta = object.key("_internal").key("meta");
|
|
315
|
+
const metaTable = (0, common_1.getMetadata)(table, ModifiersStaticMetadata);
|
|
316
|
+
return (metaTable.fields[field]?.reduce((data, { id, modifier }) => {
|
|
317
|
+
if (isWriteOnly(modifier)) {
|
|
318
|
+
return data;
|
|
319
|
+
}
|
|
320
|
+
data = modifier.unlockrequest(data, meta.key(id), ...args[id]);
|
|
321
|
+
return data;
|
|
322
|
+
}, object.key("_internal").key("data").key(field)) || object.key(field));
|
|
323
|
+
}
|
|
324
|
+
function lock(object, Modifier, fields, ...args) {
|
|
325
|
+
const metaTable = (0, common_1.getMetadata)(object.constructor, ModifiersStaticMetadata);
|
|
326
|
+
const usedFields = (fields ?? Object.keys(metaTable.fields)).filter((field) => metaTable.fields[field]?.find(({ id }) => id === Modifier.name));
|
|
327
|
+
// Get metadata
|
|
328
|
+
const meta = (0, common_1.getMetadata)(object, ModifiersDynamicMetadata);
|
|
329
|
+
// for each field set metadata[field][Modifier] to args
|
|
330
|
+
for (const field of usedFields) {
|
|
331
|
+
const val = object[field];
|
|
332
|
+
meta.fields[field][Modifier.name] = args;
|
|
333
|
+
object[field] = val;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
function testValue(object, field, value) {
|
|
337
|
+
const metaTable = (0, common_1.getMetadata)(object.constructor, ModifiersStaticMetadata);
|
|
338
|
+
// Get metadata
|
|
339
|
+
const meta = (0, common_1.getMetadata)(object, ModifiersDynamicMetadata);
|
|
340
|
+
const internal = getInternal(object);
|
|
341
|
+
const val = internal.data[field];
|
|
342
|
+
for (const { id, modifier, metaRef } of metaTable.fields[field]) {
|
|
343
|
+
const args = meta.fields[field][id] || (modifier.autolock && []);
|
|
344
|
+
if (!args)
|
|
345
|
+
return false;
|
|
346
|
+
if (isWriteOnly(modifier)) {
|
|
347
|
+
// return OneWayModifier.test(unwrapped, value)
|
|
348
|
+
return withRef(internal, id, modifier, metaRef, (modifier) => modifier.test(val, value, ...args));
|
|
349
|
+
}
|
|
350
|
+
if ("unlock" in modifier && val !== undefined) {
|
|
351
|
+
// unwrap field until the OneWayModifier
|
|
352
|
+
return withRef(internal, id, modifier, metaRef, (modifier) => modifier.unlock(val, ...args));
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
return val === value;
|
|
356
|
+
}
|
|
357
|
+
function triggerEvent(object, event, ...args) {
|
|
358
|
+
const metaTable = (0, common_1.getMetadata)(object.constructor, ModifiersStaticMetadata);
|
|
359
|
+
if (!metaTable.events.has(event)) {
|
|
360
|
+
return;
|
|
361
|
+
}
|
|
362
|
+
const internal = getInternal(object);
|
|
363
|
+
const eventEntries = metaTable.events.get(event);
|
|
364
|
+
if (!eventEntries)
|
|
365
|
+
return;
|
|
366
|
+
for (const [field, { id, modifier, metaRef }] of eventEntries) {
|
|
367
|
+
withRef(internal, id, modifier, metaRef, (modifier) => modifier[event](object, field, ...args));
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/modifiers/common.ts"],"names":[],"mappings":"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"}
|