@antelopejs/interface-database-decorators 0.1.10 → 0.1.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.
Files changed (55) hide show
  1. package/dist/common.js.map +1 -1
  2. package/dist/database.js.map +1 -1
  3. package/dist/model.js +29 -26
  4. package/dist/model.js.map +1 -1
  5. package/dist/modifiers/common.d.ts +24 -4
  6. package/dist/modifiers/common.js +92 -114
  7. package/dist/modifiers/common.js.map +1 -1
  8. package/dist/modifiers/encryption.js +14 -9
  9. package/dist/modifiers/encryption.js.map +1 -1
  10. package/dist/modifiers/internal/kinds.d.ts +12 -0
  11. package/dist/modifiers/internal/kinds.js +29 -0
  12. package/dist/modifiers/internal/kinds.js.map +1 -0
  13. package/dist/modifiers/internal/records.d.ts +29 -0
  14. package/dist/modifiers/internal/records.js +42 -0
  15. package/dist/modifiers/internal/records.js.map +1 -0
  16. package/dist/modifiers/localization.js +5 -1
  17. package/dist/modifiers/localization.js.map +1 -1
  18. package/dist/schema.js +1 -2
  19. package/dist/schema.js.map +1 -1
  20. package/dist/table.js +19 -5
  21. package/dist/table.js.map +1 -1
  22. package/dist/tests/codec_helpers.d.ts +6 -2
  23. package/dist/tests/codec_helpers.js +18 -14
  24. package/dist/tests/codec_helpers.js.map +1 -1
  25. package/dist/tests/common.test.js +38 -46
  26. package/dist/tests/common.test.js.map +1 -1
  27. package/dist/tests/cross_instance.test.js +27 -2
  28. package/dist/tests/cross_instance.test.js.map +1 -1
  29. package/dist/tests/database.test.js +246 -256
  30. package/dist/tests/database.test.js.map +1 -1
  31. package/dist/tests/helpers/other-instance.d.ts +1 -1
  32. package/dist/tests/helpers/other-instance.js +41 -9
  33. package/dist/tests/helpers/other-instance.js.map +1 -1
  34. package/dist/tests/integration.test.js +485 -485
  35. package/dist/tests/integration.test.js.map +1 -1
  36. package/dist/tests/model.test.js +293 -308
  37. package/dist/tests/model.test.js.map +1 -1
  38. package/dist/tests/modifiers/autodate.test.js +80 -86
  39. package/dist/tests/modifiers/autodate.test.js.map +1 -1
  40. package/dist/tests/modifiers/common.test.js +181 -195
  41. package/dist/tests/modifiers/common.test.js.map +1 -1
  42. package/dist/tests/modifiers/encryption.test.js +149 -155
  43. package/dist/tests/modifiers/encryption.test.js.map +1 -1
  44. package/dist/tests/modifiers/hash.test.js +91 -99
  45. package/dist/tests/modifiers/hash.test.js.map +1 -1
  46. package/dist/tests/modifiers/localization.test.js +186 -196
  47. package/dist/tests/modifiers/localization.test.js.map +1 -1
  48. package/dist/tests/relation.test.js +92 -97
  49. package/dist/tests/relation.test.js.map +1 -1
  50. package/dist/tests/schema.test.js +101 -106
  51. package/dist/tests/schema.test.js.map +1 -1
  52. package/dist/tests/table.test.js +124 -132
  53. package/dist/tests/table.test.js.map +1 -1
  54. package/package.json +14 -3
  55. package/skills/database-decorators-interface/cases.json +71 -0
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":";;;AAqEA,kCAsBC;AA9DD;;GAEG;AACH,MAAa,mBAAmB;IACvB,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAC5B,iEAAiE,CAClE,CAAC;IAEK,SAAS,CAAU;IACnB,UAAU,CAAU;IACX,OAAO,GAAkC,EAAE,CAAC;IAC5C,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,GAA8B,EAAE,CAAC;IAChD,OAAO,GAAW,KAAK,CAAC;IACxB,SAAS,CAAkB;IAClC;;OAEG;IACI,MAAM,CAAe;IAE5B,QAAQ,CACN,GAAW,EACX,KAAa,EACb,kBAA2B,KAAK,EAChC,WAAoB,KAAK;QAEzB,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;;AAlCH,kDAmCC;AAED,SAAgB,WAAW,CACzB,MAAe,EACf,aAAuC,EACvC,UAAmB,IAAI;IAEvB,MAAM,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAE5D,CAAC;IACd,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAmB,CAAC;IAClE,MAAM,iBAAiB,GACrB,OAAO,IAAI,SAAS;QAClB,CAAC,CAAE,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,CAEtC;QAChB,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,QAAQ,GAAG,iBAAiB,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IAChE,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5D,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":";;;AAqEA,kCAsBC;AA9DD;;GAEG;AACH,MAAa,mBAAmB;IACvB,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAC5B,iEAAiE,CAClE,CAAC;IAEK,SAAS,CAAU;IACnB,UAAU,CAAU;IACX,OAAO,GAAkC,EAAE,CAAC;IAC5C,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,GAA8B,EAAE,CAAC;IAChD,OAAO,GAAW,KAAK,CAAC;IACxB,SAAS,CAAkB;IAClC;;OAEG;IACI,MAAM,CAAe;IAE5B,QAAQ,CACN,GAAW,EACX,KAAa,EACb,kBAA2B,KAAK,EAChC,WAAoB,KAAK;QAEzB,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;;AAlCH,kDAmCC;AAED,SAAgB,WAAW,CACzB,MAAe,EACf,aAAuC,EACvC,UAAmB,IAAI;IAEvB,MAAM,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAE5D,CAAC;IACd,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,MAAM,SAAS,GAAkB,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,iBAAiB,GACrB,OAAO,IAAI,SAAS;QAClB,CAAC,CAAE,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,CAEtC;QAChB,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,QAAQ,GAAG,iBAAiB,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IAChE,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5D,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
package/dist/model.js CHANGED
@@ -16,8 +16,15 @@ function isCodec(type) {
16
16
  return (typeof type === "object" &&
17
17
  type !== null &&
18
18
  !Array.isArray(type) &&
19
+ "decode" in type &&
19
20
  typeof type.decode === "function");
20
21
  }
22
+ function isRecord(value) {
23
+ return typeof value === "object" && value !== null;
24
+ }
25
+ function isInstanceIdProvider(value) {
26
+ return typeof value === "function";
27
+ }
21
28
  function decodeFieldError(field, result) {
22
29
  const message = result.left.map((e) => e.message).find(Boolean) ?? `invalid ${field}`;
23
30
  return { field, message };
@@ -78,9 +85,7 @@ function BasicDataModel(dataType, tableName) {
78
85
  const fields = metadata.fields;
79
86
  const errors = [];
80
87
  const partial = options?.partial === true;
81
- const record = typeof obj === "object" && obj !== null
82
- ? obj
83
- : undefined;
88
+ const record = isRecord(obj) ? obj : undefined;
84
89
  for (const [field, type] of Object.entries(fields)) {
85
90
  if (!isCodec(type))
86
91
  continue;
@@ -108,7 +113,7 @@ function BasicDataModel(dataType, tableName) {
108
113
  * @returns Table class instance
109
114
  */
110
115
  get(id) {
111
- return this.table.get(id).then(Model.fromDatabase);
116
+ return this.table.get(id).then((row) => Model.fromDatabase(row));
112
117
  }
113
118
  /**
114
119
  * Get multiple elements from the table using a given index.
@@ -120,7 +125,7 @@ function BasicDataModel(dataType, tableName) {
120
125
  getBy(index, ...keys) {
121
126
  return this.table
122
127
  .getAll(keys.length === 1 ? keys[0] : keys, index)
123
- .then((dataR) => dataR.map(Model.fromDatabase));
128
+ .then((dataR) => dataR.map((row) => Model.fromDatabase(row)));
124
129
  }
125
130
  /**
126
131
  * Get all the elements from the table.
@@ -128,7 +133,8 @@ function BasicDataModel(dataType, tableName) {
128
133
  * @returns Array of Table class instances.
129
134
  */
130
135
  getAll() {
131
- return this.table.then((dataR) => dataR.map(Model.fromDatabase));
136
+ // SAFETY: Model.fromDatabase returns undefined only for a falsy row, and the rows of a table read are stored records, never null or undefined; the cast removes that undefined from the element type.
137
+ return this.table.then((dataR) => dataR.map((row) => Model.fromDatabase(row)));
132
138
  }
133
139
  /**
134
140
  * Insert some data into the table.
@@ -158,8 +164,8 @@ function BasicDataModel(dataType, tableName) {
158
164
  .insert(Array.isArray(obj) ? obj.map(converter) : converter(obj))
159
165
  .run();
160
166
  }
161
- async update(idOrObj, objOrOptions, options) {
162
- const parsed = parseUpdateArgs(idOrObj, objOrOptions, options);
167
+ async update(...args) {
168
+ const parsed = parseUpdateArgs(args);
163
169
  if (parsed.options?.validate) {
164
170
  const result = Model.validate(parsed.data, { partial: true });
165
171
  if (!result.ok)
@@ -175,6 +181,7 @@ function BasicDataModel(dataType, tableName) {
175
181
  }
176
182
  const instance = Model.fromPlainData(parsed.data);
177
183
  (0, common_1.triggerEvent)(instance, "update");
184
+ // SAFETY: parsed.data is the DeepPartial<T> object the caller passed as the first argument (the id form was handled above), so reading the property named by the table's primary key is defined and gives undefined when absent; the next line asserts it is present.
178
185
  const id = parsed.data[primaryKey];
179
186
  (0, node_assert_1.default)(id !== undefined, "Missing primary key in object update.");
180
187
  return this.table.get(id).update(Model.toDatabase(instance)).run();
@@ -195,28 +202,22 @@ const UNDEFINED_INSTANCE_KEY = Symbol("undefined-instance");
195
202
  function cacheKeyOf(instanceId) {
196
203
  if (instanceId === undefined)
197
204
  return UNDEFINED_INSTANCE_KEY;
198
- if (typeof instanceId === "symbol")
199
- return instanceId;
200
205
  return instanceId;
201
206
  }
202
207
  function makeValidationError(errors) {
203
208
  const summary = errors.map((e) => `${e.field} (${e.message})`).join(", ");
204
- const err = new Error(`validation failed: ${summary}`);
205
- err.errors = errors;
206
- return err;
209
+ return Object.assign(new Error(`validation failed: ${summary}`), { errors });
210
+ }
211
+ function isIdUpdate(args) {
212
+ return typeof args[0] === "string";
207
213
  }
208
- function parseUpdateArgs(idOrObj, objOrOptions, options) {
209
- if (typeof idOrObj === "string") {
210
- return {
211
- id: idOrObj,
212
- data: objOrOptions,
213
- options,
214
- };
214
+ function parseUpdateArgs(args) {
215
+ if (isIdUpdate(args)) {
216
+ const [id, data, options] = args;
217
+ return { id, data, options };
215
218
  }
216
- return {
217
- data: idOrObj,
218
- options: objOrOptions,
219
- };
219
+ const [data, options] = args;
220
+ return { data, options };
220
221
  }
221
222
  function schemaOf(cl) {
222
223
  if (!cl.tableClass) {
@@ -236,14 +237,16 @@ function GetModel(cl, instanceId) {
236
237
  (0, node_assert_1.default)(cache);
237
238
  const key = cacheKeyOf(instanceId);
238
239
  const cached = cache.get(key);
239
- if (cached)
240
+ if (cached) {
241
+ // SAFETY: modelCache is private to this module, keyed by the class, and only this function fills it, with the `new cl(...)` result below, which is an M for that same cl.
240
242
  return cached;
243
+ }
241
244
  const model = new cl(schemaOf(cl).instance(instanceId));
242
245
  cache.set(key, model);
243
246
  return model;
244
247
  }
245
248
  exports.Model = (0, decorators_1.MakeParameterAndPropertyDecorator)((target, key, index, cl, instanceIdOrCallback) => {
246
- if (typeof instanceIdOrCallback === "function") {
249
+ if (isInstanceIdProvider(instanceIdOrCallback)) {
247
250
  (0, interface_api_1.SetParameterProvider)(target, key, index, (ctx) => {
248
251
  return GetModel(cl, instanceIdOrCallback(ctx));
249
252
  });
package/dist/model.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
@@ -45,19 +45,39 @@ export declare class ModifiersStaticMetadata {
45
45
  export declare class ModifiersDynamicMetadata {
46
46
  static key: symbol;
47
47
  staticMeta: ModifiersStaticMetadata;
48
+ /**
49
+ * Values assigned to a field before its modifiers could lock them, by field
50
+ * name. Reads return them; `unlock` and `lock` assign them again.
51
+ */
48
52
  floating: Record<string, any>;
49
53
  fields: Record<string, Record<string, any[]>>;
50
54
  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
+ canGet(field: PropertyKey): boolean;
56
+ get(field: PropertyKey, internal: InternalType): any;
57
+ canSet(field: PropertyKey): boolean;
58
+ set(field: PropertyKey, internal: InternalType, value: unknown): void;
55
59
  }
60
+ /**
61
+ * Builds a table instance from unlocked plain data: each key is assigned, so
62
+ * modifiers lock the fields they can. Then runs the `fromPlainData` event.
63
+ */
56
64
  export declare function fromPlainData<T extends Constructible>(rawObject: Record<string, any>, TableClass: T): InstanceType<T>;
65
+ /**
66
+ * Converts a table instance to unlocked plain data, without `_internal`. A
67
+ * field still locked comes out `undefined`. Then runs the `toPlainData` event.
68
+ */
57
69
  export declare function toPlainData<T extends {
58
70
  constructor: any;
59
71
  }>(object: T): Record<string, any>;
72
+ /**
73
+ * Builds a table instance from a stored record, its modified fields still
74
+ * locked in `_internal`. Then runs the `fromDatabase` event.
75
+ */
60
76
  export declare function fromDatabase<T extends Constructible>(rawObject: any, TableClass: T): InstanceType<T>;
77
+ /**
78
+ * Converts a table instance to the locked record to store, `_internal`
79
+ * included and floating values left out. Then runs the `toDatabase` event.
80
+ */
61
81
  export declare function toDatabase<T extends {
62
82
  constructor: any;
63
83
  }>(object: T): Record<string, any>;
@@ -13,6 +13,8 @@ exports.lock = lock;
13
13
  exports.testValue = testValue;
14
14
  exports.triggerEvent = triggerEvent;
15
15
  const common_1 = require("../common");
16
+ const kinds_1 = require("./internal/kinds");
17
+ const records_1 = require("./internal/records");
16
18
  exports.MixinSymbol = Symbol();
17
19
  class Modifier {
18
20
  meta;
@@ -57,30 +59,20 @@ class ContainerModifier extends TwoWayModifier {
57
59
  }
58
60
  }
59
61
  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
62
  class ModifiersStaticMetadata {
67
63
  static key = Symbol.for("@antelopejs/interface-database-decorators/ModifiersStaticMetadata@1");
68
64
  fields = {};
69
65
  events = new Map();
70
66
  }
71
67
  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
68
  class ModifiersDynamicMetadata {
81
69
  static key = Symbol.for("@antelopejs/interface-database-decorators/ModifiersDynamicMetadata@1");
82
70
  staticMeta;
83
- floating = {}; // Plain data that has no known lock value
71
+ /**
72
+ * Values assigned to a field before its modifiers could lock them, by field
73
+ * name. Reads return them; `unlock` and `lock` assign them again.
74
+ */
75
+ floating = {};
84
76
  fields = {};
85
77
  constructor(target) {
86
78
  this.staticMeta = (0, common_1.getMetadata)(target.constructor, ModifiersStaticMetadata);
@@ -89,58 +81,57 @@ class ModifiersDynamicMetadata {
89
81
  }
90
82
  }
91
83
  canGet(field) {
92
- const list = this.staticMeta.fields[field];
84
+ const list = (0, records_1.fieldsByKey)(this.staticMeta)[field];
93
85
  const lastModifier = list[list.length - 1].modifier;
94
- if (lastModifier.autolock) {
86
+ if ("autolock" in lastModifier && lastModifier.autolock) {
95
87
  return true;
96
88
  }
97
- return (!isWriteOnly(lastModifier) &&
98
- !list.some(({ id, modifier }) => !modifier.autounlock &&
89
+ return (!(0, kinds_1.isWriteOnly)(lastModifier) &&
90
+ !list.some(({ id, modifier }) => !("autounlock" in modifier && modifier.autounlock) &&
99
91
  "unlock" in modifier &&
100
- !(id in this.fields[field])));
92
+ !(id in (0, records_1.unlockArgsOf)(this, field))));
101
93
  }
102
94
  get(field, internal) {
103
95
  if (field in this.floating) {
104
- return this.floating[field];
96
+ return (0, records_1.floatingByKey)(this)[field];
105
97
  }
106
98
  if (!this.canGet(field)) {
107
99
  return;
108
100
  }
109
- const list = this.staticMeta.fields[field];
110
- let value = internal.data[field];
101
+ const list = (0, records_1.fieldsByKey)(this.staticMeta)[field];
102
+ let value = (0, records_1.dataByKey)(internal)[field];
111
103
  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]));
104
+ if ((0, kinds_1.isTwoWay)(modifier) && value !== undefined) {
105
+ if ((0, records_1.unlockArgsOf)(this, field)[id]) {
106
+ value = (0, records_1.withRef)(internal, id, modifier, metaRef, (modifier) => modifier.unlock(value, ...(0, records_1.unlockArgsOf)(this, field)[id]));
115
107
  }
116
- else if (modifier.autounlock) {
117
- value = withRef(internal, id, modifier, metaRef, (modifier) => modifier.unlock(value));
108
+ else if ("autounlock" in modifier && modifier.autounlock) {
109
+ value = (0, records_1.withRef)(internal, id, modifier, metaRef, (modifier) => modifier.unlock(value));
118
110
  }
119
111
  }
120
112
  }
121
113
  return value;
122
114
  }
123
115
  canSet(field) {
124
- const list = this.staticMeta.fields[field];
125
- return !list.some(({ id, modifier }) => !modifier.autolock &&
116
+ const list = (0, records_1.fieldsByKey)(this.staticMeta)[field];
117
+ return !list.some(({ id, modifier }) => !("autolock" in modifier && modifier.autolock) &&
126
118
  "lock" in modifier &&
127
- !(id in this.fields[field]));
119
+ !(id in (0, records_1.unlockArgsOf)(this, field)));
128
120
  }
129
121
  set(field, internal, value) {
130
122
  if (!this.canSet(field)) {
131
- this.floating[field] = value;
123
+ (0, records_1.floatingByKey)(this)[field] = value;
132
124
  return;
133
125
  }
134
- const list = this.staticMeta.fields[field];
135
- // TODO: should maybe cache this
126
+ const list = (0, records_1.fieldsByKey)(this.staticMeta)[field];
136
127
  const prevlist = [];
137
- let prev = internal.data[field];
128
+ let prev = (0, records_1.dataByKey)(internal)[field];
138
129
  for (let i = 0; i < list.length - 1; ++i) {
139
130
  const { id, modifier, metaRef } = list[i];
140
131
  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]);
132
+ if ((0, kinds_1.isTwoWay)(modifier)) {
133
+ if ((0, records_1.unlockArgsOf)(this, field)[id]) {
134
+ prev = modifier.unlock(prev, ...(0, records_1.unlockArgsOf)(this, field)[id]);
144
135
  }
145
136
  else {
146
137
  prev = undefined;
@@ -153,12 +144,12 @@ class ModifiersDynamicMetadata {
153
144
  });
154
145
  for (let i = prevlist.length - 1; i >= 0; --i) {
155
146
  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] || [])));
147
+ if ((0, kinds_1.isLocking)(modifier)) {
148
+ value = (0, records_1.withRef)(internal, id, modifier, metaRef, (modifier) => modifier.lock(prev, value, ...((0, records_1.unlockArgsOf)(this, field)[id] || [])));
158
149
  }
159
150
  }
160
- internal.data[field] = value;
161
- delete this.floating[field];
151
+ (0, records_1.dataByKey)(internal)[field] = value;
152
+ delete (0, records_1.floatingByKey)(this)[field];
162
153
  }
163
154
  }
164
155
  exports.ModifiersDynamicMetadata = ModifiersDynamicMetadata;
@@ -171,21 +162,12 @@ function getInternal(object) {
171
162
  }
172
163
  return object._internal;
173
164
  }
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' }`
165
+ /**
166
+ * Builds a table instance from unlocked plain data: each key is assigned, so
167
+ * modifiers lock the fields they can. Then runs the `fromPlainData` event.
185
168
  */
186
169
  function fromPlainData(rawObject, TableClass) {
187
170
  const shallowCopy = {};
188
- // Attach prototype
189
171
  Object.setPrototypeOf(shallowCopy, TableClass.prototype);
190
172
  for (const [key, val] of Object.entries(rawObject)) {
191
173
  shallowCopy[key] = val;
@@ -193,66 +175,72 @@ function fromPlainData(rawObject, TableClass) {
193
175
  triggerEvent(shallowCopy, "fromPlainData", rawObject);
194
176
  return shallowCopy;
195
177
  }
178
+ /**
179
+ * Converts a table instance to unlocked plain data, without `_internal`. A
180
+ * field still locked comes out `undefined`. Then runs the `toPlainData` event.
181
+ */
196
182
  function toPlainData(object) {
197
183
  const metaTable = (0, common_1.getMetadata)(object.constructor, ModifiersStaticMetadata);
198
184
  const result = { ...object };
199
- delete result._internal;
185
+ if ("_internal" in result)
186
+ delete result._internal;
200
187
  for (const field of Object.keys(metaTable.fields)) {
201
- result[field] = object[field]; // Populate unlocked fields
188
+ result[field] = object[field];
202
189
  }
203
190
  triggerEvent(object, "toPlainData", result);
204
191
  return result;
205
192
  }
193
+ /**
194
+ * Builds a table instance from a stored record, its modified fields still
195
+ * locked in `_internal`. Then runs the `fromDatabase` event.
196
+ */
206
197
  function fromDatabase(rawObject, TableClass) {
207
- // Generate Meta
208
198
  const shallowCopy = { ...rawObject };
209
- // Attach prototype
210
199
  Object.setPrototypeOf(shallowCopy, TableClass.prototype);
211
200
  triggerEvent(shallowCopy, "fromDatabase", rawObject);
212
201
  return shallowCopy;
213
202
  }
203
+ /**
204
+ * Converts a table instance to the locked record to store, `_internal`
205
+ * included and floating values left out. Then runs the `toDatabase` event.
206
+ */
214
207
  function toDatabase(object) {
215
208
  const result = { ...object };
216
209
  triggerEvent(object, "toDatabase", result);
217
210
  return result;
218
211
  }
219
- const ignoredEventNames = {
220
- constructor: true,
221
- lock: true,
222
- unlock: true,
223
- };
224
212
  function attachModifier(TableClass, Modifier, field, options) {
225
213
  const entry = {
226
214
  id: Modifier.name,
227
215
  modifier: new Modifier(),
228
216
  metaRef: { _ref: {} },
229
217
  };
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
- },
218
+ Object.assign(entry.modifier, {
219
+ meta: new Proxy(entry.metaRef, {
220
+ get: (self, p) => {
221
+ if (!self._ref)
222
+ return undefined;
223
+ return self._ref[p];
224
+ },
225
+ set: (self, p, v) => {
226
+ if (!self._ref)
227
+ self._ref = {};
228
+ return Reflect.set(self._ref, p, v, self._ref);
229
+ },
230
+ }),
241
231
  });
242
- entry.modifier.options = options;
243
- // Mark TableClass as special
232
+ Object.assign(entry.modifier, { options });
244
233
  const metaTable = (0, common_1.getMetadata)(TableClass, ModifiersStaticMetadata);
245
- if (!isOnlyEvents(entry.modifier)) {
246
- // Add Modifier to TableClass[field] with options
234
+ if (!(0, kinds_1.isOnlyEvents)(entry.modifier)) {
247
235
  if (field in metaTable.fields) {
248
- const list = metaTable.fields[field];
236
+ const list = (0, records_1.fieldsByKey)(metaTable)[field];
249
237
  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`);
238
+ if ((0, kinds_1.isWriteOnly)(last.modifier)) {
239
+ if ((0, kinds_1.isWriteOnly)(entry.modifier)) {
240
+ throw new Error(`Attempted adding Modifier ${entry.id} on ${TableClass.name}.${String(field)} but it already has a One-Way Modifier`);
253
241
  }
254
242
  else {
255
- throw new Error(`Adding Modifier ${entry.id} on ${TableClass.name}.${field} after a One-Way Modifier, please review your ordering.`);
243
+ throw new Error(`Adding Modifier ${entry.id} on ${TableClass.name}.${String(field)} after a One-Way Modifier, please review your ordering.`);
256
244
  }
257
245
  }
258
246
  else {
@@ -260,7 +248,7 @@ function attachModifier(TableClass, Modifier, field, options) {
260
248
  }
261
249
  }
262
250
  else {
263
- metaTable.fields[field] = [entry];
251
+ (0, records_1.fieldsByKey)(metaTable)[field] = [entry];
264
252
  Object.defineProperty(TableClass.prototype, field, {
265
253
  get: function () {
266
254
  return (0, common_1.getMetadata)(this, ModifiersDynamicMetadata).get(field, getInternal(this));
@@ -279,12 +267,12 @@ function attachModifier(TableClass, Modifier, field, options) {
279
267
  });
280
268
  }
281
269
  for (const event of Object.getOwnPropertyNames(Modifier.prototype)) {
282
- if (!(event in ignoredEventNames) &&
283
- typeof Modifier.prototype[event] === "function") {
270
+ if (!(event in kinds_1.ignoredEventNames) &&
271
+ (0, kinds_1.isCallable)(Modifier.prototype[event])) {
284
272
  if (!metaTable.events.has(event)) {
285
273
  metaTable.events.set(event, []);
286
274
  }
287
- metaTable.events.get(event)?.push([field, entry]);
275
+ (0, records_1.eventsByKey)(metaTable).get(event)?.push([field, entry]);
288
276
  }
289
277
  }
290
278
  }
@@ -294,27 +282,21 @@ function getModifiedFields(object, Modifier) {
294
282
  }
295
283
  function unlock(object, Modifier, fields, ...args) {
296
284
  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
285
+ const usedFields = (fields ?? Object.keys(metaTable.fields)).filter((field) => (0, records_1.fieldsByKey)(metaTable)[field]?.find(({ id }) => id === Modifier.name));
299
286
  const meta = (0, common_1.getMetadata)(object, ModifiersDynamicMetadata);
300
- // for each field set metadata[field][Modifier] to args
301
287
  for (const field of usedFields) {
302
- meta.fields[field][Modifier.name] = args;
288
+ (0, records_1.unlockArgsOf)(meta, field)[Modifier.name] = args;
303
289
  if (field in meta.floating) {
304
- // check floating
305
- object[field] = meta.floating[field];
290
+ object[field] = (0, records_1.floatingOf)(meta, field);
306
291
  }
307
292
  }
308
293
  }
309
294
  function unlockrequest(table, object, field, modifiers) {
310
- const args = {};
311
- for (const { modifier, args: modArgs } of modifiers) {
312
- args[modifier.name] = modArgs;
313
- }
295
+ const args = Object.fromEntries(modifiers.map(({ modifier, args: modArgs }) => [modifier.name, modArgs]));
314
296
  const meta = object.key("_internal").key("meta");
315
297
  const metaTable = (0, common_1.getMetadata)(table, ModifiersStaticMetadata);
316
- return (metaTable.fields[field]?.reduce((data, { id, modifier }) => {
317
- if (isWriteOnly(modifier)) {
298
+ return ((0, records_1.fieldsByKey)(metaTable)[field]?.reduce((data, { id, modifier }) => {
299
+ if ((0, kinds_1.isWriteOnly)(modifier) || !(0, kinds_1.isTwoWay)(modifier)) {
318
300
  return data;
319
301
  }
320
302
  data = modifier.unlockrequest(data, meta.key(id), ...args[id]);
@@ -323,33 +305,29 @@ function unlockrequest(table, object, field, modifiers) {
323
305
  }
324
306
  function lock(object, Modifier, fields, ...args) {
325
307
  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
308
+ const usedFields = (fields ?? Object.keys(metaTable.fields)).filter((field) => (0, records_1.fieldsByKey)(metaTable)[field]?.find(({ id }) => id === Modifier.name));
328
309
  const meta = (0, common_1.getMetadata)(object, ModifiersDynamicMetadata);
329
- // for each field set metadata[field][Modifier] to args
330
310
  for (const field of usedFields) {
331
311
  const val = object[field];
332
- meta.fields[field][Modifier.name] = args;
312
+ (0, records_1.unlockArgsOf)(meta, field)[Modifier.name] = args;
333
313
  object[field] = val;
334
314
  }
335
315
  }
336
316
  function testValue(object, field, value) {
337
317
  const metaTable = (0, common_1.getMetadata)(object.constructor, ModifiersStaticMetadata);
338
- // Get metadata
339
318
  const meta = (0, common_1.getMetadata)(object, ModifiersDynamicMetadata);
340
319
  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 && []);
320
+ const val = (0, records_1.dataByKey)(internal)[field];
321
+ for (const { id, modifier, metaRef } of (0, records_1.fieldsByKey)(metaTable)[field]) {
322
+ const args = (0, records_1.unlockArgsOf)(meta, field)[id] ||
323
+ ("autolock" in modifier && modifier.autolock ? [] : undefined);
344
324
  if (!args)
345
325
  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));
326
+ if ((0, kinds_1.isWriteOnly)(modifier)) {
327
+ return (0, records_1.withRef)(internal, id, modifier, metaRef, (modifier) => modifier.test(val, value, ...args));
349
328
  }
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));
329
+ if ((0, kinds_1.isTwoWay)(modifier) && val !== undefined) {
330
+ return (0, records_1.withRef)(internal, id, modifier, metaRef, (modifier) => modifier.unlock(val, ...args));
353
331
  }
354
332
  }
355
333
  return val === value;
@@ -364,7 +342,7 @@ function triggerEvent(object, event, ...args) {
364
342
  if (!eventEntries)
365
343
  return;
366
344
  for (const [field, { id, modifier, metaRef }] of eventEntries) {
367
- withRef(internal, id, modifier, metaRef, (modifier) => modifier[event](object, field, ...args));
345
+ (0, records_1.withRef)(internal, id, modifier, metaRef, (modifier) => modifier[event](object, field, ...args));
368
346
  }
369
347
  }
370
348
  //# sourceMappingURL=common.js.map