@antelopejs/interface-database-decorators 0.1.9 → 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 (69) hide show
  1. package/README.md +1 -1
  2. package/dist/antelope.test.js +1 -1
  3. package/dist/common.d.ts +2 -1
  4. package/dist/common.js +5 -1
  5. package/dist/common.js.map +1 -1
  6. package/dist/database.js +1 -0
  7. package/dist/database.js.map +1 -1
  8. package/dist/model.js +29 -26
  9. package/dist/model.js.map +1 -1
  10. package/dist/modifiers/common.d.ts +24 -4
  11. package/dist/modifiers/common.js +92 -114
  12. package/dist/modifiers/common.js.map +1 -1
  13. package/dist/modifiers/encryption.js +14 -9
  14. package/dist/modifiers/encryption.js.map +1 -1
  15. package/dist/modifiers/internal/kinds.d.ts +12 -0
  16. package/dist/modifiers/internal/kinds.js +29 -0
  17. package/dist/modifiers/internal/kinds.js.map +1 -0
  18. package/dist/modifiers/internal/records.d.ts +29 -0
  19. package/dist/modifiers/internal/records.js +42 -0
  20. package/dist/modifiers/internal/records.js.map +1 -0
  21. package/dist/modifiers/localization.d.ts +19 -1
  22. package/dist/modifiers/localization.js +41 -6
  23. package/dist/modifiers/localization.js.map +1 -1
  24. package/dist/schema.js +1 -2
  25. package/dist/schema.js.map +1 -1
  26. package/dist/table.d.ts +8 -0
  27. package/dist/table.js +21 -6
  28. package/dist/table.js.map +1 -1
  29. package/dist/tests/codec_helpers.d.ts +6 -2
  30. package/dist/tests/codec_helpers.js +18 -14
  31. package/dist/tests/codec_helpers.js.map +1 -1
  32. package/dist/tests/common.test.js +38 -46
  33. package/dist/tests/common.test.js.map +1 -1
  34. package/dist/tests/cross_instance.test.js +27 -2
  35. package/dist/tests/cross_instance.test.js.map +1 -1
  36. package/dist/tests/database.test.js +247 -226
  37. package/dist/tests/database.test.js.map +1 -1
  38. package/dist/tests/helpers/other-instance.d.ts +1 -1
  39. package/dist/tests/helpers/other-instance.js +41 -9
  40. package/dist/tests/helpers/other-instance.js.map +1 -1
  41. package/dist/tests/integration.test.js +485 -469
  42. package/dist/tests/integration.test.js.map +1 -1
  43. package/dist/tests/model.test.js +293 -308
  44. package/dist/tests/model.test.js.map +1 -1
  45. package/dist/tests/modifiers/autodate.test.js +80 -86
  46. package/dist/tests/modifiers/autodate.test.js.map +1 -1
  47. package/dist/tests/modifiers/common.test.js +181 -195
  48. package/dist/tests/modifiers/common.test.js.map +1 -1
  49. package/dist/tests/modifiers/encryption.test.js +149 -155
  50. package/dist/tests/modifiers/encryption.test.js.map +1 -1
  51. package/dist/tests/modifiers/hash.test.js +91 -99
  52. package/dist/tests/modifiers/hash.test.js.map +1 -1
  53. package/dist/tests/modifiers/localization.test.js +186 -159
  54. package/dist/tests/modifiers/localization.test.js.map +1 -1
  55. package/dist/tests/relation.test.js +92 -97
  56. package/dist/tests/relation.test.js.map +1 -1
  57. package/dist/tests/schema.test.js +101 -106
  58. package/dist/tests/schema.test.js.map +1 -1
  59. package/dist/tests/table.test.js +124 -132
  60. package/dist/tests/table.test.js.map +1 -1
  61. package/docs/1.introduction.md +56 -2
  62. package/docs/2.table-definitions.md +15 -0
  63. package/docs/3.table-modifiers.md +10 -4
  64. package/docs/4.data-models.md +12 -0
  65. package/docs/5.parameter-decoration.md +4 -0
  66. package/docs/assets/model-conversion.svg +21 -0
  67. package/package.json +16 -5
  68. package/skills/database-decorators-interface/SKILL.md +4 -0
  69. package/skills/database-decorators-interface/cases.json +71 -0
package/README.md CHANGED
@@ -96,7 +96,7 @@ Requires AntelopeJS core `1.x` and the following peer dependencies:
96
96
  | -------------------------------- | ----------------- |
97
97
  | `@antelopejs/interface-api` | `>=0.0.15 <1.0.0` |
98
98
  | `@antelopejs/interface-core` | `>=0.2.4 <1.0.0` |
99
- | `@antelopejs/interface-database` | `>=0.1.10 <1.0.0` |
99
+ | `@antelopejs/interface-database` | `>=0.1.11 <1.0.0` |
100
100
 
101
101
  ## Contributing
102
102
 
@@ -14,7 +14,7 @@ exports.default = (0, config_1.defineConfig)({
14
14
  source: {
15
15
  type: "package",
16
16
  package: "@antelopejs/mongodb",
17
- version: "1.3.1",
17
+ version: "1.5.0",
18
18
  },
19
19
  },
20
20
  api: {
package/dist/common.d.ts CHANGED
@@ -18,6 +18,7 @@ export declare class DatumStaticMetadata {
18
18
  schemaName?: string;
19
19
  readonly indexes: Record<string, Array<string>>;
20
20
  readonly crossInstanceIndexes: Set<string>;
21
+ readonly uniqueIndexes: Set<string>;
21
22
  readonly fields: Record<string, FieldType>;
22
23
  primary: string;
23
24
  generator?: DatumGenerator;
@@ -25,6 +26,6 @@ export declare class DatumStaticMetadata {
25
26
  * Schema the table was registered into by `RegisterSchema`.
26
27
  */
27
28
  schema?: Schema<any>;
28
- addIndex(key: string, group: string, isCrossInstance?: boolean): void;
29
+ addIndex(key: string, group: string, isCrossInstance?: boolean, isUnique?: boolean): void;
29
30
  }
30
31
  export declare function getMetadata<TMetadata, TTarget extends object>(target: TTarget, metadataClass: MetadataClass<TMetadata>, inherit?: boolean): TMetadata;
package/dist/common.js CHANGED
@@ -11,6 +11,7 @@ class DatumStaticMetadata {
11
11
  schemaName;
12
12
  indexes = {};
13
13
  crossInstanceIndexes = new Set();
14
+ uniqueIndexes = new Set();
14
15
  fields = {};
15
16
  primary = "_id";
16
17
  generator;
@@ -18,7 +19,7 @@ class DatumStaticMetadata {
18
19
  * Schema the table was registered into by `RegisterSchema`.
19
20
  */
20
21
  schema;
21
- addIndex(key, group, isCrossInstance = false) {
22
+ addIndex(key, group, isCrossInstance = false, isUnique = false) {
22
23
  if (!(group in this.indexes)) {
23
24
  this.indexes[group] = [];
24
25
  }
@@ -26,6 +27,9 @@ class DatumStaticMetadata {
26
27
  if (isCrossInstance) {
27
28
  this.crossInstanceIndexes.add(group);
28
29
  }
30
+ if (isUnique) {
31
+ this.uniqueIndexes.add(group);
32
+ }
29
33
  }
30
34
  }
31
35
  exports.DatumStaticMetadata = DatumStaticMetadata;
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":";;;AA4DA,kCAsBC;AArDD;;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,MAAM,GAA8B,EAAE,CAAC;IAChD,OAAO,GAAW,KAAK,CAAC;IACxB,SAAS,CAAkB;IAClC;;OAEG;IACI,MAAM,CAAe;IAE5B,QAAQ,CAAC,GAAW,EAAE,KAAa,EAAE,kBAA2B,KAAK;QACnE,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;IACH,CAAC;;AAzBH,kDA0BC;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"}
package/dist/database.js CHANGED
@@ -49,6 +49,7 @@ function buildIndexDefinitions(metadata) {
49
49
  indexes[group] = {
50
50
  fields: fields.length === 1 && fields[0] === group ? undefined : fields,
51
51
  ...(metadata.crossInstanceIndexes.has(group) && { crossInstance: true }),
52
+ ...(metadata.uniqueIndexes.has(group) && { unique: true }),
52
53
  };
53
54
  }
54
55
  return indexes;
@@ -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":";;;;;;AAyEA,wCAoMC;AAgED,4BAeC;AA5VD,8DAAiC;AAGjC,uEAAyE;AACzE,6DAGmC;AACnC,sEAG+C;AAE/C,+CAK4B;AAC5B,qCAKkB;AA4BlB,SAAS,OAAO,CAAC,IAAe;IAC9B,OAAO,CACL,OAAO,IAAI,KAAK,QAAQ;QACxB,IAAI,KAAK,IAAI;QACb,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACpB,OAAQ,IAA6B,CAAC,MAAM,KAAK,UAAU,CAC5D,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa,EAAE,MAAsB;IAC7D,MAAM,OAAO,GACX,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,WAAW,KAAK,EAAE,CAAC;IACxE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAC5B,QAA0B,EAC1B,SAAkB;IAElB,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,QAAQ,EAAE,4BAAmB,CAAC,CAAC;IAC5D,MAAM,YAAY,GAAG,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC;IACrD,IAAA,qBAAM,EAAC,YAAY,EAAE,sDAAsD,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAW,YAAY,CAAC;IAClC,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IACvC,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC;IACpC,OAAO,MAAM,KAAK;QAoEY;QAnErB,MAAM,CAAU,UAAU,GAAG,UAAoB,CAAC;QACzD;;WAEG;QACI,MAAM,CAAU,UAAU,GAAqB,QAAQ,CAAC;QAC/D;;;;;WAKG;QACI,MAAM,CAAC,aAAa,CAAC,GAAQ;YAClC,OAAO,GAAG,YAAY,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAA,sBAAa,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACtE,CAAC;QAED;;;;;WAKG;QACI,MAAM,CAAC,YAAY,CAAC,GAAQ;YACjC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAA,qBAAY,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvD,CAAC;QAED;;;;;WAKG;QACI,MAAM,CAAC,UAAU,CAAC,GAAQ;YAC/B,MAAM,QAAQ,GAAG,GAAG,YAAY,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAC1E,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAED;;;WAGG;QACI,MAAM,CAAC,QAAQ,CACpB,GAAY,EACZ,OAA8B;YAE9B,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC/B,MAAM,MAAM,GAAiB,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;YAC1C,MAAM,MAAM,GACV,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;gBACrC,CAAC,CAAE,GAA+B;gBAClC,CAAC,CAAC,SAAS,CAAC;YAChB,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;oBAAE,SAAS;gBAC7B,IAAI,OAAO,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC;oBAAE,SAAS;gBACzD,MAAM,MAAM,GAAI,IAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC3D,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;YACD,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACpE,CAAC;QAED;;WAEG;QACa,KAAK,CAAuB;QAE5C,YAA4B,QAAyC;YAAzC,aAAQ,GAAR,QAAQ,CAAiC;YACnE,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QAED;;;;;WAKG;QACI,GAAG,CAAC,EAAU;YACnB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACrD,CAAC;QAED;;;;;;WAMG;QACI,KAAK,CAAC,KAAc,EAAE,GAAG,IAAW;YACzC,OAAO,IAAI,CAAC,KAAK;iBACd,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAU,KAAK,CAAC;iBACzD,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAQ,CAAC,CAAC;QAC3D,CAAC;QAED;;;;WAIG;QACI,MAAM;YACX,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAQ,CAAC,CAAC;QAC1E,CAAC;QAED;;;;;;WAMG;QACI,KAAK,CAAC,MAAM,CACjB,GAA2C,EAC3C,OAAyB;YAEzB,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;gBACtB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACjD,MAAM,SAAS,GAAiB,EAAE,CAAC;gBACnC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBACrC,IAAI,CAAC,MAAM,CAAC,EAAE;wBAAE,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;gBACnD,CAAC;gBACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;oBAAE,MAAM,mBAAmB,CAAC,SAAS,CAAC,CAAC;YACjE,CAAC;YACD,MAAM,SAAS,GAAG,CAAC,KAAU,EAAE,EAAE;gBAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC5C,IAAA,qBAAY,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACjC,OAAO,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC,CAAC;YACF,OAAO,IAAI,CAAC,KAAK;iBACd,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;iBAChE,GAAG,EAAE,CAAC;QACX,CAAC;QAmBM,KAAK,CAAC,MAAM,CACjB,OAAgC,EAChC,YAA+C,EAC/C,OAAyB;YAEzB,MAAM,MAAM,GAAG,eAAe,CAAI,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YAClE,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9D,IAAI,CAAC,MAAM,CAAC,EAAE;oBAAE,MAAM,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3D,CAAC;YACD,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAClD,IAAA,qBAAY,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACjC,OAAO,IAAI,CAAC,KAAK;qBACd,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;qBACd,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;qBAClC,GAAG,EAAE,CAAC;YACX,CAAC;YACD,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClD,IAAA,qBAAY,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACjC,MAAM,EAAE,GAAI,MAAM,CAAC,IAAY,CAAC,UAAU,CAAC,CAAC;YAC5C,IAAA,qBAAM,EAAC,EAAE,KAAK,SAAS,EAAE,uCAAuC,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACrE,CAAC;QAED;;;;;WAKG;QACI,MAAM,CAAC,EAAU;YACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;QAC3C,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAGvB,CAAC;AAEJ,MAAM,sBAAsB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAE5D,SAAS,UAAU,CAAC,UAAkC;IACpD,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,sBAAsB,CAAC;IAC5D,IAAI,OAAO,UAAU,KAAK,QAAQ;QAAE,OAAO,UAAU,CAAC;IACtD,OAAO,UAAU,CAAC;AACpB,CAAC;AAUD,SAAS,mBAAmB,CAAC,MAAoB;IAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAEpD,CAAC;IACF,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;IACpB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,eAAe,CACtB,OAAgC,EAChC,YAA+C,EAC/C,OAAyB;IAEzB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO;YACL,EAAE,EAAE,OAAO;YACX,IAAI,EAAE,YAA8B;YACpC,OAAO;SACR,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,YAA2C;KACrD,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,EAAa;IAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,2BAAM,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;QACzC,IAAA,qBAAM,EAAC,MAAM,EAAE,yBAAyB,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,EAAE,CAAC,UAAU,EAAE,4BAAmB,CAAC,CAAC,MAAM,CAAC;IACtE,IAAA,qBAAM,EACJ,MAAM,EACN,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,mDAAmD,EAAE,CAAC,UAAU,mCAAmC,CACzH,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,QAAQ,CACtB,EAAwB,EACxB,UAAuB;IAEvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACxB,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IAChC,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjC,IAAA,qBAAM,EAAC,KAAK,CAAC,CAAC;IACd,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,MAAM;QAAE,OAAO,MAAW,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACxD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtB,OAAO,KAAK,CAAC;AACf,CAAC;AAEY,QAAA,KAAK,GAAG,IAAA,8CAAiC,EACpD,CACE,MAAM,EACN,GAAG,EACH,KAAK,EACL,EAA8C,EAC9C,oBAEqD,EACrD,EAAE;IACF,IAAI,OAAO,oBAAoB,KAAK,UAAU,EAAE,CAAC;QAC/C,IAAA,oCAAoB,EAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,GAAmB,EAAE,EAAE;YAC/D,OAAO,QAAQ,CAAC,EAAE,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,IAAA,oCAAoB,EAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAC5C,QAAQ,CAAC,EAAE,EAAE,oBAAoB,CAAC,CACnC,CAAC;IACJ,CAAC;AACH,CAAC,CACF,CAAC"}
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>;