@antelopejs/interface-database-decorators 0.1.11 → 0.2.0

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 (88) hide show
  1. package/README.md +17 -13
  2. package/dist/antelope.test.js +1 -1
  3. package/dist/common.d.ts +48 -2
  4. package/dist/common.js +51 -5
  5. package/dist/common.js.map +1 -1
  6. package/dist/database.js +18 -3
  7. package/dist/database.js.map +1 -1
  8. package/dist/internal/bound-schema.d.ts +8 -0
  9. package/dist/internal/bound-schema.js +14 -0
  10. package/dist/internal/bound-schema.js.map +1 -0
  11. package/dist/model.d.ts +21 -8
  12. package/dist/model.js +34 -15
  13. package/dist/model.js.map +1 -1
  14. package/dist/modifiers/autodate.d.ts +2 -2
  15. package/dist/modifiers/autodate.js.map +1 -1
  16. package/dist/modifiers/common.d.ts +37 -20
  17. package/dist/modifiers/common.js +81 -68
  18. package/dist/modifiers/common.js.map +1 -1
  19. package/dist/modifiers/encryption.js +26 -14
  20. package/dist/modifiers/encryption.js.map +1 -1
  21. package/dist/modifiers/hash.d.ts +46 -4
  22. package/dist/modifiers/hash.js +175 -14
  23. package/dist/modifiers/hash.js.map +1 -1
  24. package/dist/modifiers/internal/kinds.d.ts +15 -1
  25. package/dist/modifiers/internal/kinds.js +35 -0
  26. package/dist/modifiers/internal/kinds.js.map +1 -1
  27. package/dist/modifiers/internal/records.d.ts +40 -5
  28. package/dist/modifiers/internal/records.js +70 -1
  29. package/dist/modifiers/internal/records.js.map +1 -1
  30. package/dist/modifiers/localization.js +12 -7
  31. package/dist/modifiers/localization.js.map +1 -1
  32. package/dist/relation.d.ts +5 -0
  33. package/dist/relation.js +11 -0
  34. package/dist/relation.js.map +1 -1
  35. package/dist/schema.js +5 -6
  36. package/dist/schema.js.map +1 -1
  37. package/dist/table.d.ts +3 -2
  38. package/dist/table.js +29 -13
  39. package/dist/table.js.map +1 -1
  40. package/dist/tests/cross_instance.test.js +5 -2
  41. package/dist/tests/cross_instance.test.js.map +1 -1
  42. package/dist/tests/database.test.js +42 -2
  43. package/dist/tests/database.test.js.map +1 -1
  44. package/dist/tests/hash_upgrade.test.d.ts +1 -0
  45. package/dist/tests/hash_upgrade.test.js +132 -0
  46. package/dist/tests/hash_upgrade.test.js.map +1 -0
  47. package/dist/tests/helpers/hash-rows.d.ts +40 -0
  48. package/dist/tests/helpers/hash-rows.js +41 -0
  49. package/dist/tests/helpers/hash-rows.js.map +1 -0
  50. package/dist/tests/helpers/other-instance.js.map +1 -1
  51. package/dist/tests/integration.test.js +15 -4
  52. package/dist/tests/integration.test.js.map +1 -1
  53. package/dist/tests/metadata_inheritance.test.d.ts +1 -0
  54. package/dist/tests/metadata_inheritance.test.js +212 -0
  55. package/dist/tests/metadata_inheritance.test.js.map +1 -0
  56. package/dist/tests/modifiers/encryption_date_marker.test.d.ts +1 -0
  57. package/dist/tests/modifiers/encryption_date_marker.test.js +78 -0
  58. package/dist/tests/modifiers/encryption_date_marker.test.js.map +1 -0
  59. package/dist/tests/modifiers/hash.test.js +295 -0
  60. package/dist/tests/modifiers/hash.test.js.map +1 -1
  61. package/dist/tests/modifiers/inherited_names.test.d.ts +1 -0
  62. package/dist/tests/modifiers/inherited_names.test.js +96 -0
  63. package/dist/tests/modifiers/inherited_names.test.js.map +1 -0
  64. package/dist/tests/own_key_lookups.test.d.ts +1 -0
  65. package/dist/tests/own_key_lookups.test.js +49 -0
  66. package/dist/tests/own_key_lookups.test.js.map +1 -0
  67. package/dist/tests/partial_update.test.d.ts +1 -0
  68. package/dist/tests/partial_update.test.js +55 -0
  69. package/dist/tests/partial_update.test.js.map +1 -0
  70. package/dist/tests/row_forms.test.d.ts +1 -0
  71. package/dist/tests/row_forms.test.js +59 -0
  72. package/dist/tests/row_forms.test.js.map +1 -0
  73. package/dist/tests/stored_metadata.test.d.ts +1 -0
  74. package/dist/tests/stored_metadata.test.js +91 -0
  75. package/dist/tests/stored_metadata.test.js.map +1 -0
  76. package/dist/tests/subclass_schema_binding.test.d.ts +1 -0
  77. package/dist/tests/subclass_schema_binding.test.js +115 -0
  78. package/dist/tests/subclass_schema_binding.test.js.map +1 -0
  79. package/dist/tests/table.test.js +16 -0
  80. package/dist/tests/table.test.js.map +1 -1
  81. package/docs/1.introduction.md +24 -20
  82. package/docs/2.table-definitions.md +63 -41
  83. package/docs/3.table-modifiers.md +128 -98
  84. package/docs/4.data-models.md +63 -52
  85. package/docs/5.parameter-decoration.md +28 -24
  86. package/docs/tsconfig.json +3 -0
  87. package/package.json +10 -9
  88. package/skills/database-decorators-interface/SKILL.md +6 -3
@@ -1,5 +1,6 @@
1
1
  import type * as DatabaseDev from "@antelopejs/interface-database";
2
- import { type Constructible } from "../common";
2
+ import { type Constructible, type PlainData, type PlainRow } from "../common";
3
+ import { type InternalHolder, type InternalRecord, type ModifierState } from "./internal/records";
3
4
  export declare const MixinSymbol: unique symbol;
4
5
  export type MixinType<T> = T extends {
5
6
  [MixinSymbol]: infer A;
@@ -26,21 +27,35 @@ export declare class ContainerModifier<Meta extends object = object, Options ext
26
27
  unlock(locked_value: Record<string, unknown>, key: string): unknown;
27
28
  unlockrequest(data: DatabaseDev.ValueProxy<Record<string, unknown>>, _meta: DatabaseDev.ValueProxy<Meta>, key: DatabaseDev.ValueProxyOrValue<string>): DatabaseDev.ValueProxy<unknown>;
28
29
  }
29
- interface InternalType {
30
- meta: Record<string, object>;
31
- data: Record<string, any>;
32
- }
30
+ /**
31
+ * A table row as the database stores it: the fields of `T` that are set, with
32
+ * no prototype, and its modified fields locked in `_internal` instead of at the
33
+ * top level.
34
+ */
35
+ export type StoredRow<T> = Partial<T> & InternalHolder;
36
+ /**
37
+ * A modifier method run for an event of the table instance (`insert`,
38
+ * `toDatabase`, ...), with the modifier as `this`.
39
+ */
40
+ export type ModifierEvent = (this: Modifier, object: {
41
+ constructor: any;
42
+ }, field: PropertyKey, ...args: unknown[]) => void;
33
43
  interface ModifiedField {
34
44
  id: string;
35
45
  modifier: Modifier;
36
46
  metaRef: {
37
- _ref: any;
47
+ _ref: ModifierState | undefined;
38
48
  };
39
49
  }
40
50
  export declare class ModifiersStaticMetadata {
41
51
  static key: symbol;
52
+ /**
53
+ * The metadata of a subclass of a table: a copy of its parent's lists, so
54
+ * modifiers attached on the subclass never reach the parent or its siblings.
55
+ */
56
+ static inherit(parent: ModifiersStaticMetadata): ModifiersStaticMetadata;
42
57
  fields: Record<string, Array<ModifiedField>>;
43
- events: Map<string, [field: string, modified: ModifiedField][]>;
58
+ events: Map<string, [field: string, modified: ModifiedField, handler: ModifierEvent][]>;
44
59
  }
45
60
  export declare class ModifiersDynamicMetadata {
46
61
  static key: symbol;
@@ -49,26 +64,30 @@ export declare class ModifiersDynamicMetadata {
49
64
  * Values assigned to a field before its modifiers could lock them, by field
50
65
  * name. Reads return them; `unlock` and `lock` assign them again.
51
66
  */
52
- floating: Record<string, any>;
53
- fields: Record<string, Record<string, any[]>>;
67
+ floating: Record<string, unknown>;
68
+ /**
69
+ * The arguments each modifier of a field was unlocked or locked with, by
70
+ * field name, then by modifier name.
71
+ */
72
+ fields: Record<string, Record<string, unknown[]>>;
54
73
  constructor(target: any);
55
74
  canGet(field: PropertyKey): boolean;
56
- get(field: PropertyKey, internal: InternalType): any;
75
+ get(field: PropertyKey, internal: InternalRecord): unknown;
57
76
  canSet(field: PropertyKey): boolean;
58
- set(field: PropertyKey, internal: InternalType, value: unknown): void;
77
+ set(field: PropertyKey, internal: InternalRecord, value: unknown): void;
59
78
  }
60
79
  /**
61
80
  * Builds a table instance from unlocked plain data: each key is assigned, so
62
81
  * modifiers lock the fields they can. Then runs the `fromPlainData` event.
63
82
  */
64
- export declare function fromPlainData<T extends Constructible>(rawObject: Record<string, any>, TableClass: T): InstanceType<T>;
83
+ export declare function fromPlainData<T extends object>(rawObject: PlainData<T>, TableClass: Constructible<T>): T;
65
84
  /**
66
85
  * Converts a table instance to unlocked plain data, without `_internal`. A
67
86
  * field still locked comes out `undefined`. Then runs the `toPlainData` event.
68
87
  */
69
88
  export declare function toPlainData<T extends {
70
89
  constructor: any;
71
- }>(object: T): Record<string, any>;
90
+ }>(object: T): PlainRow<T>;
72
91
  /**
73
92
  * Builds a table instance from a stored record, its modified fields still
74
93
  * locked in `_internal`. Then runs the `fromDatabase` event.
@@ -78,23 +97,21 @@ export declare function fromDatabase<T extends Constructible>(rawObject: any, Ta
78
97
  * Converts a table instance to the locked record to store, `_internal`
79
98
  * included and floating values left out. Then runs the `toDatabase` event.
80
99
  */
81
- export declare function toDatabase<T extends {
82
- constructor: any;
83
- }>(object: T): Record<string, any>;
100
+ export declare function toDatabase<T extends InternalHolder>(object: T): T & InternalHolder;
84
101
  type ExtractModifierOptions<T> = T extends Modifier<any, infer Options> ? Options : undefined;
85
102
  type ExtractModifierArgs<T> = T extends OneWayModifier<any, infer Args> ? Args : [];
86
- export declare function attachModifier<T extends Constructible, M extends Constructible<Modifier>>(TableClass: T, Modifier: M, field: keyof InstanceType<T>, options: ExtractModifierOptions<InstanceType<M>>): void;
103
+ export declare function attachModifier<M extends Constructible<Modifier>>(TableClass: Function, Modifier: M, field: PropertyKey, options: ExtractModifierOptions<InstanceType<M>>): void;
87
104
  export declare function getModifiedFields<T extends {
88
105
  constructor: any;
89
- }, M extends Constructible<Modifier>>(object: T, Modifier: M): (keyof T)[];
106
+ }>(object: T, Modifier: Constructible<Modifier>): (keyof T)[];
90
107
  export declare function unlock<T extends {
91
108
  constructor: any;
92
109
  }, M extends Constructible<Modifier>>(object: T, Modifier: M, fields: Array<keyof T> | undefined, ...args: ExtractModifierArgs<InstanceType<M>>): void;
93
110
  type ModifierWithProxyArgs = {
94
111
  modifier: Constructible<TwoWayModifier<any, any[], any, any>>;
95
- args: DatabaseDev.ValueProxyOrValue<any>[];
112
+ args: unknown[];
96
113
  };
97
- 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]>;
114
+ export declare function unlockrequest<T extends {}, K extends keyof T>(table: Constructible, object: DatabaseDev.ValueProxy<T>, field: K, modifiers: ModifierWithProxyArgs[]): DatabaseDev.ValueProxy<T[K]>;
98
115
  export declare function lock<T extends {
99
116
  constructor: any;
100
117
  }, M extends Constructible<Modifier>>(object: T, Modifier: M, fields: Array<keyof T> | undefined, ...args: ExtractModifierArgs<InstanceType<M>> | []): void;
@@ -22,15 +22,20 @@ class Modifier {
22
22
  }
23
23
  exports.Modifier = Modifier;
24
24
  class OneWayModifier extends Modifier {
25
- lock(_locked_value, _value, ..._args) {
25
+ lock(_locked_value,
26
+ // oxlint-disable-next-line anti-slop/no-unknown-parameters -- the published override point of every modifier; a modified field's value has its table class's type, which the shared modifier chain cannot name
27
+ _value, ..._args) {
26
28
  throw new Error("Unimplemented");
27
29
  }
28
- test(locked_value, value, ...args) {
30
+ test(locked_value,
31
+ // oxlint-disable-next-line anti-slop/no-unknown-parameters -- a modified field's value has its table class's type, which the shared modifier chain cannot name
32
+ value, ...args) {
29
33
  return this.lock(undefined, value, ...args) === locked_value;
30
34
  }
31
35
  }
32
36
  exports.OneWayModifier = OneWayModifier;
33
37
  class TwoWayModifier extends OneWayModifier {
38
+ // oxlint-disable-next-line anti-slop/no-unknown-returns -- the unlocked value has its table class's type, which the shared modifier chain cannot name
34
39
  unlock(_locked_value, ..._args) {
35
40
  throw new Error("Unimplemented");
36
41
  }
@@ -40,8 +45,14 @@ class TwoWayModifier extends OneWayModifier {
40
45
  }
41
46
  exports.TwoWayModifier = TwoWayModifier;
42
47
  class ContainerModifier extends TwoWayModifier {
43
- lock(locked_value, value, key) {
48
+ lock(
49
+ // oxlint-disable-next-line anti-slop/no-unsafe-dictionary-type -- the container holds the field's values by key, typed by the table class, not by the modifier
50
+ locked_value,
51
+ // oxlint-disable-next-line anti-slop/no-unknown-parameters -- a modified field's value has its table class's type, which the shared modifier chain cannot name
52
+ value, key) {
44
53
  if (key === "*") {
54
+ // SAFETY: the "*" key addresses the whole container, which the table class declares as the record of values per key; a non-record value is stored as given.
55
+ // oxlint-disable-next-line anti-slop/no-unsafe-dictionary-type -- the container holds the field's values by key, typed by the table class, not by the modifier
45
56
  return value;
46
57
  }
47
58
  return locked_value
@@ -51,16 +62,29 @@ class ContainerModifier extends TwoWayModifier {
51
62
  }
52
63
  : { [key]: value };
53
64
  }
65
+ // oxlint-disable-next-line anti-slop/no-unsafe-dictionary-type -- the container holds the field's values by key, typed by the table class, not by the modifier
54
66
  unlock(locked_value, key) {
55
- return key === "*" ? locked_value : locked_value[key];
67
+ if (key === "*") {
68
+ return locked_value;
69
+ }
70
+ return Object.hasOwn(locked_value, key) ? locked_value[key] : undefined;
56
71
  }
57
- unlockrequest(data, _meta, key) {
72
+ unlockrequest(
73
+ // oxlint-disable-next-line anti-slop/no-unsafe-dictionary-type -- the container holds the field's values by key, typed by the table class, not by the modifier
74
+ data, _meta, key) {
58
75
  return data.key(key);
59
76
  }
60
77
  }
61
78
  exports.ContainerModifier = ContainerModifier;
62
79
  class ModifiersStaticMetadata {
63
80
  static key = Symbol.for("@antelopejs/interface-database-decorators/ModifiersStaticMetadata@1");
81
+ /**
82
+ * The metadata of a subclass of a table: a copy of its parent's lists, so
83
+ * modifiers attached on the subclass never reach the parent or its siblings.
84
+ */
85
+ static inherit(parent) {
86
+ return (0, records_1.copyModifierLists)(new ModifiersStaticMetadata(), parent);
87
+ }
64
88
  fields = {};
65
89
  events = new Map();
66
90
  }
@@ -72,7 +96,12 @@ class ModifiersDynamicMetadata {
72
96
  * Values assigned to a field before its modifiers could lock them, by field
73
97
  * name. Reads return them; `unlock` and `lock` assign them again.
74
98
  */
99
+ // oxlint-disable-next-line anti-slop/no-unsafe-dictionary-type -- the values assigned before modifiers could lock them, by field name, have their table class's types
75
100
  floating = {};
101
+ /**
102
+ * The arguments each modifier of a field was unlocked or locked with, by
103
+ * field name, then by modifier name.
104
+ */
76
105
  fields = {};
77
106
  constructor(target) {
78
107
  this.staticMeta = (0, common_1.getMetadata)(target.constructor, ModifiersStaticMetadata);
@@ -92,7 +121,7 @@ class ModifiersDynamicMetadata {
92
121
  !(id in (0, records_1.unlockArgsOf)(this, field))));
93
122
  }
94
123
  get(field, internal) {
95
- if (field in this.floating) {
124
+ if (Object.hasOwn(this.floating, field)) {
96
125
  return (0, records_1.floatingByKey)(this)[field];
97
126
  }
98
127
  if (!this.canGet(field)) {
@@ -118,6 +147,7 @@ class ModifiersDynamicMetadata {
118
147
  "lock" in modifier &&
119
148
  !(id in (0, records_1.unlockArgsOf)(this, field)));
120
149
  }
150
+ // oxlint-disable-next-line anti-slop/no-unknown-parameters -- a modified field's value has its table class's type, which the shared modifier chain cannot name
121
151
  set(field, internal, value) {
122
152
  if (!this.canSet(field)) {
123
153
  (0, records_1.floatingByKey)(this)[field] = value;
@@ -153,38 +183,33 @@ class ModifiersDynamicMetadata {
153
183
  }
154
184
  }
155
185
  exports.ModifiersDynamicMetadata = ModifiersDynamicMetadata;
156
- function getInternal(object) {
157
- if (!object._internal) {
158
- object._internal = {
159
- meta: {},
160
- data: {},
161
- };
162
- }
163
- return object._internal;
186
+ /** The names of the modified fields of a table instance. */
187
+ function fieldNamesOf(object) {
188
+ const metaTable = (0, common_1.getMetadata)(object.constructor, ModifiersStaticMetadata);
189
+ // SAFETY: the names attachModifier recorded are keys of the table class of object, so keys of T; Object.keys types them string.
190
+ return Object.keys(metaTable.fields);
164
191
  }
165
192
  /**
166
193
  * Builds a table instance from unlocked plain data: each key is assigned, so
167
194
  * modifiers lock the fields they can. Then runs the `fromPlainData` event.
168
195
  */
169
196
  function fromPlainData(rawObject, TableClass) {
170
- const shallowCopy = {};
171
- Object.setPrototypeOf(shallowCopy, TableClass.prototype);
172
- for (const [key, val] of Object.entries(rawObject)) {
173
- shallowCopy[key] = val;
174
- }
175
- triggerEvent(shallowCopy, "fromPlainData", rawObject);
176
- return shallowCopy;
197
+ const instance = {};
198
+ Object.setPrototypeOf(instance, (0, kinds_1.prototypeOf)(TableClass));
199
+ Object.assign(instance, Object.fromEntries(Object.entries(rawObject)));
200
+ triggerEvent(instance, "fromPlainData", rawObject);
201
+ // SAFETY: instance gets the prototype of TableClass and the fields of rawObject, so it is a T, as fromPlainData returns; setPrototypeOf types no result.
202
+ return instance;
177
203
  }
178
204
  /**
179
205
  * Converts a table instance to unlocked plain data, without `_internal`. A
180
206
  * field still locked comes out `undefined`. Then runs the `toPlainData` event.
181
207
  */
182
208
  function toPlainData(object) {
183
- const metaTable = (0, common_1.getMetadata)(object.constructor, ModifiersStaticMetadata);
184
209
  const result = { ...object };
185
210
  if ("_internal" in result)
186
211
  delete result._internal;
187
- for (const field of Object.keys(metaTable.fields)) {
212
+ for (const field of fieldNamesOf(object)) {
188
213
  result[field] = object[field];
189
214
  }
190
215
  triggerEvent(object, "toPlainData", result);
@@ -195,9 +220,11 @@ function toPlainData(object) {
195
220
  * locked in `_internal`. Then runs the `fromDatabase` event.
196
221
  */
197
222
  function fromDatabase(rawObject, TableClass) {
223
+ // oxlint-disable-next-line typescript/no-unsafe-assignment -- rawObject is a stored row, typed any by the published fromDatabase signature; typing it T breaks consumers
198
224
  const shallowCopy = { ...rawObject };
199
- Object.setPrototypeOf(shallowCopy, TableClass.prototype);
225
+ Object.setPrototypeOf(shallowCopy, (0, kinds_1.prototypeOf)(TableClass));
200
226
  triggerEvent(shallowCopy, "fromDatabase", rawObject);
227
+ // oxlint-disable-next-line typescript/no-unsafe-return -- shallowCopy is a copy of the any-typed rawObject
201
228
  return shallowCopy;
202
229
  }
203
230
  /**
@@ -210,29 +237,12 @@ function toDatabase(object) {
210
237
  return result;
211
238
  }
212
239
  function attachModifier(TableClass, Modifier, field, options) {
213
- const entry = {
214
- id: Modifier.name,
215
- modifier: new Modifier(),
216
- metaRef: { _ref: {} },
217
- };
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
- }),
231
- });
240
+ const entry = (0, records_1.newModifiedField)(Modifier);
232
241
  Object.assign(entry.modifier, { options });
233
242
  const metaTable = (0, common_1.getMetadata)(TableClass, ModifiersStaticMetadata);
234
243
  if (!(0, kinds_1.isOnlyEvents)(entry.modifier)) {
235
- if (field in metaTable.fields) {
244
+ (0, records_1.assertModifiableField)(TableClass.name, entry.id, field);
245
+ if (Object.hasOwn(metaTable.fields, field)) {
236
246
  const list = (0, records_1.fieldsByKey)(metaTable)[field];
237
247
  const last = list[list.length - 1];
238
248
  if ((0, kinds_1.isWriteOnly)(last.modifier)) {
@@ -251,10 +261,10 @@ function attachModifier(TableClass, Modifier, field, options) {
251
261
  (0, records_1.fieldsByKey)(metaTable)[field] = [entry];
252
262
  Object.defineProperty(TableClass.prototype, field, {
253
263
  get: function () {
254
- return (0, common_1.getMetadata)(this, ModifiersDynamicMetadata).get(field, getInternal(this));
264
+ return (0, common_1.getMetadata)(this, ModifiersDynamicMetadata).get(field, (0, records_1.getInternal)(this));
255
265
  },
256
266
  set: function (value) {
257
- (0, common_1.getMetadata)(this, ModifiersDynamicMetadata).set(field, getInternal(this), value);
267
+ (0, common_1.getMetadata)(this, ModifiersDynamicMetadata).set(field, (0, records_1.getInternal)(this), value);
258
268
  },
259
269
  });
260
270
  }
@@ -267,45 +277,45 @@ function attachModifier(TableClass, Modifier, field, options) {
267
277
  });
268
278
  }
269
279
  for (const event of Object.getOwnPropertyNames(Modifier.prototype)) {
270
- if (!(event in kinds_1.ignoredEventNames) &&
271
- (0, kinds_1.isCallable)(Modifier.prototype[event])) {
280
+ const handler = Modifier.prototype[event];
281
+ if (!Object.hasOwn(kinds_1.ignoredEventNames, event) && (0, kinds_1.isEventHandler)(handler)) {
272
282
  if (!metaTable.events.has(event)) {
273
283
  metaTable.events.set(event, []);
274
284
  }
275
- (0, records_1.eventsByKey)(metaTable).get(event)?.push([field, entry]);
285
+ (0, records_1.eventsByKey)(metaTable).get(event)?.push([field, entry, handler]);
276
286
  }
277
287
  }
278
288
  }
279
- function getModifiedFields(object, Modifier) {
289
+ function fieldsModifiedBy(object, modifierClass, fields) {
280
290
  const metaTable = (0, common_1.getMetadata)(object.constructor, ModifiersStaticMetadata);
281
- return Object.keys(metaTable.fields).filter((field) => metaTable.fields[field]?.find(({ id }) => id === Modifier.name));
291
+ return (fields ?? fieldNamesOf(object)).filter((field) => (0, records_1.fieldsByKey)(metaTable)[field]?.find(({ id }) => id === modifierClass.name));
292
+ }
293
+ function getModifiedFields(object, Modifier) {
294
+ return fieldsModifiedBy(object, Modifier);
282
295
  }
283
296
  function unlock(object, Modifier, fields, ...args) {
284
- const metaTable = (0, common_1.getMetadata)(object.constructor, ModifiersStaticMetadata);
285
- const usedFields = (fields ?? Object.keys(metaTable.fields)).filter((field) => (0, records_1.fieldsByKey)(metaTable)[field]?.find(({ id }) => id === Modifier.name));
297
+ const usedFields = fieldsModifiedBy(object, Modifier, fields);
286
298
  const meta = (0, common_1.getMetadata)(object, ModifiersDynamicMetadata);
287
299
  for (const field of usedFields) {
288
300
  (0, records_1.unlockArgsOf)(meta, field)[Modifier.name] = args;
289
301
  if (field in meta.floating) {
290
- object[field] = (0, records_1.floatingOf)(meta, field);
302
+ Object.assign(object, { [field]: (0, records_1.floatingOf)(meta, field) });
291
303
  }
292
304
  }
293
305
  }
294
306
  function unlockrequest(table, object, field, modifiers) {
295
307
  const args = Object.fromEntries(modifiers.map(({ modifier, args: modArgs }) => [modifier.name, modArgs]));
296
- const meta = object.key("_internal").key("meta");
308
+ const stored = object.cast();
309
+ const meta = stored.key("_internal").key("meta");
297
310
  const metaTable = (0, common_1.getMetadata)(table, ModifiersStaticMetadata);
298
- return ((0, records_1.fieldsByKey)(metaTable)[field]?.reduce((data, { id, modifier }) => {
299
- if ((0, kinds_1.isWriteOnly)(modifier) || !(0, kinds_1.isTwoWay)(modifier)) {
300
- return data;
301
- }
302
- data = modifier.unlockrequest(data, meta.key(id), ...args[id]);
303
- return data;
304
- }, object.key("_internal").key("data").key(field)) || object.key(field));
311
+ const name = String(field);
312
+ const unlocked = (0, records_1.fieldsByKey)(metaTable)[field]?.reduce((data, { id, modifier }) => (0, kinds_1.isWriteOnly)(modifier) || !(0, kinds_1.isTwoWay)(modifier)
313
+ ? data
314
+ : modifier.unlockrequest(data, meta.key(id), ...args[id]), stored.key("_internal").key("data").key(name));
315
+ return (unlocked ?? object.cast().key(name)).cast();
305
316
  }
306
317
  function lock(object, Modifier, fields, ...args) {
307
- const metaTable = (0, common_1.getMetadata)(object.constructor, ModifiersStaticMetadata);
308
- const usedFields = (fields ?? Object.keys(metaTable.fields)).filter((field) => (0, records_1.fieldsByKey)(metaTable)[field]?.find(({ id }) => id === Modifier.name));
318
+ const usedFields = fieldsModifiedBy(object, Modifier, fields);
309
319
  const meta = (0, common_1.getMetadata)(object, ModifiersDynamicMetadata);
310
320
  for (const field of usedFields) {
311
321
  const val = object[field];
@@ -316,7 +326,7 @@ function lock(object, Modifier, fields, ...args) {
316
326
  function testValue(object, field, value) {
317
327
  const metaTable = (0, common_1.getMetadata)(object.constructor, ModifiersStaticMetadata);
318
328
  const meta = (0, common_1.getMetadata)(object, ModifiersDynamicMetadata);
319
- const internal = getInternal(object);
329
+ const internal = (0, records_1.getInternal)(object);
320
330
  const val = (0, records_1.dataByKey)(internal)[field];
321
331
  for (const { id, modifier, metaRef } of (0, records_1.fieldsByKey)(metaTable)[field]) {
322
332
  const args = (0, records_1.unlockArgsOf)(meta, field)[id] ||
@@ -332,17 +342,20 @@ function testValue(object, field, value) {
332
342
  }
333
343
  return val === value;
334
344
  }
345
+ // oxlint-disable-next-line typescript/no-unnecessary-type-parameters -- exported; removing the parameter changes the published signature
335
346
  function triggerEvent(object, event, ...args) {
336
347
  const metaTable = (0, common_1.getMetadata)(object.constructor, ModifiersStaticMetadata);
337
348
  if (!metaTable.events.has(event)) {
338
349
  return;
339
350
  }
340
- const internal = getInternal(object);
351
+ const internal = (0, records_1.getInternal)(object);
341
352
  const eventEntries = metaTable.events.get(event);
342
353
  if (!eventEntries)
343
354
  return;
344
- for (const [field, { id, modifier, metaRef }] of eventEntries) {
345
- (0, records_1.withRef)(internal, id, modifier, metaRef, (modifier) => modifier[event](object, field, ...args));
355
+ for (const [field, { id, modifier, metaRef }, handler] of eventEntries) {
356
+ (0, records_1.withRef)(internal, id, modifier, metaRef, (modifier) => {
357
+ handler.call(modifier, object, field, ...args);
358
+ });
346
359
  }
347
360
  }
348
361
  //# sourceMappingURL=common.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/modifiers/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/modifiers/common.ts"],"names":[],"mappings":"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"}
@@ -4,29 +4,39 @@ exports.Encrypted = exports.EncryptionModifier = void 0;
4
4
  const decorators_1 = require("@antelopejs/interface-core/decorators");
5
5
  const node_crypto_1 = require("node:crypto");
6
6
  const common_1 = require("./common");
7
+ const kinds_1 = require("./internal/kinds");
7
8
  function date_encoder(key) {
8
- return this[key] instanceof Date
9
+ const held = this[key];
10
+ return held instanceof Date
9
11
  ? {
10
- value: this[key].toUTCString(),
12
+ value: held.toUTCString(),
11
13
  type: "Date",
12
14
  }
13
- : this[key];
15
+ : held;
16
+ }
17
+ /**
18
+ * The Date a stored marker `{ type: "Date", value }` stands for, when `value`
19
+ * is a text `toUTCString` produces, as `date_encoder` writes it. Any other
20
+ * object was stored by the caller.
21
+ */
22
+ function dateOfMarker(candidate) {
23
+ if (!(0, kinds_1.isRecord)(candidate) ||
24
+ Object.keys(candidate).length !== 2 ||
25
+ candidate.type !== "Date" ||
26
+ !(0, kinds_1.isString)(candidate.value)) {
27
+ return undefined;
28
+ }
29
+ const date = new Date(candidate.value);
30
+ return date.toUTCString() === candidate.value ? date : undefined;
14
31
  }
15
32
  function date_decoder(_key, value) {
16
- return value !== null &&
17
- typeof value === "object" &&
18
- Object.keys(value).length === 2 &&
19
- Object.keys(value).includes("type") &&
20
- Object.keys(value).includes("value") &&
21
- value.type === "Date"
22
- ? new Date(value.value)
23
- : value;
33
+ return dateOfMarker(value) ?? value;
24
34
  }
25
35
  function hasAuthTag(cipher) {
26
- return "getAuthTag" in cipher;
36
+ return "getAuthTag" in cipher && (0, kinds_1.isCallable)(cipher.getAuthTag);
27
37
  }
28
38
  function acceptsAuthTag(decipher) {
29
- return "setAuthTag" in decipher;
39
+ return "setAuthTag" in decipher && (0, kinds_1.isCallable)(decipher.setAuthTag);
30
40
  }
31
41
  /**
32
42
  * Encryption modifier. enables the use of {@link Encrypted} on table fields.
@@ -35,7 +45,9 @@ function acceptsAuthTag(decipher) {
35
45
  */
36
46
  class EncryptionModifier extends common_1.TwoWayModifier {
37
47
  autolock = true;
38
- lock(_locked_value, value) {
48
+ lock(_locked_value,
49
+ // oxlint-disable-next-line anti-slop/no-unknown-parameters -- overrides OneWayModifier.lock; a modified field's value has its table class's type, which the shared modifier chain cannot name
50
+ value) {
39
51
  const iv = (0, node_crypto_1.randomBytes)(this.options.ivSize || 16);
40
52
  const cipher = (0, node_crypto_1.createCipheriv)(this.options.algorithm || "aes-256-gcm", this.options.secretKey, iv);
41
53
  const encrypted = Buffer.concat([
@@ -1 +1 @@
1
- {"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../src/modifiers/encryption.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../src/modifiers/encryption.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,18 @@
1
1
  import { MixinSymbol, OneWayModifier } from "./common";
2
2
  type Options = {
3
- /** Hashing algorithm (for supported algorithms refer to {@link createHash}) */
3
+ /**
4
+ * Digest to store instead of the default scrypt hash (for supported names
5
+ * refer to {@link createHash}). A digest is fast to guess: set this only for
6
+ * non-secret fingerprints, never for credentials.
7
+ */
4
8
  algorithm?: string;
5
9
  };
10
+ type HashInput = Parameters<OneWayModifier<string | undefined>["test"]>[1];
6
11
  /**
7
12
  * Hash modifier. enables the use of {@link Hashed} on table fields.
8
13
  *
9
- * Hashed fields only contain a hash of the inserted value.
14
+ * Hashed fields only contain a hash of the inserted value, by default a scrypt
15
+ * hash in the self-describing form `$scrypt$ln=15,r=8,p=3$<salt>$<key>`.
10
16
  * Because of this, you lose the ability to query the information directly.
11
17
  * You can test equality using {@link testHash}
12
18
  */
@@ -15,11 +21,28 @@ export declare class HashModifier extends OneWayModifier<string | undefined, [
15
21
  salt?: string;
16
22
  }, Options> {
17
23
  readonly autolock = true;
18
- lock(_locked_value: string | undefined, value: unknown): string | undefined;
24
+ /**
25
+ * Hashes a new value. Assigning the stored hash back keeps it as it is.
26
+ * Blocks the event loop for one scrypt run: a setter and the conversions
27
+ * behind `insert` and `update` are synchronous.
28
+ */
29
+ lock(locked_value: string | undefined, value: unknown): string | undefined;
30
+ test(locked_value: string | undefined, value: HashInput): boolean;
31
+ /** {@link test} on the thread pool, without blocking the event loop. */
32
+ testAsync(locked_value: string, value: HashInput): Promise<boolean>;
33
+ /**
34
+ * @returns Whether a stored hash differs from what this field writes today. A
35
+ * field with an explicit `algorithm` never reports one: hashing again would
36
+ * give the same digest, or weaken a scrypt hash.
37
+ */
38
+ isOutdated(locked_value: string): boolean;
39
+ /** Reads the salt now: `this.meta` is bound to a row only synchronously. */
40
+ private plan;
19
41
  [MixinSymbol]: {
20
42
  new (): {
21
43
  /**
22
- * Test a value against the stored hash.
44
+ * Test a value against the stored hash. Blocks the event loop for one
45
+ * scrypt run: on a server, prefer {@link testHashAsync}.
23
46
  *
24
47
  * @param field - Name of the field to test against.
25
48
  * @param value - Value to hash and test.
@@ -27,6 +50,25 @@ export declare class HashModifier extends OneWayModifier<string | undefined, [
27
50
  * @returns Whether the new value is identical to the original or not.
28
51
  */
29
52
  testHash<This extends {}, F extends keyof This>(this: This, field: F, value: This[F]): unknown;
53
+ /**
54
+ * Test a value against the stored hash on the thread pool.
55
+ *
56
+ * @param field - Name of the field to test against.
57
+ * @param value - Value to hash and test.
58
+ *
59
+ * @returns Whether the new value is identical to the original or not.
60
+ */
61
+ testHashAsync<This extends {}, F extends keyof This>(this: This, field: F, value: This[F]): Promise<boolean>;
62
+ /**
63
+ * Tell whether a stored hash needs writing again: it uses an older format
64
+ * or cost. After a successful test, assign the tested value to the field
65
+ * and save the row.
66
+ *
67
+ * @param field - Name of the field to inspect.
68
+ *
69
+ * @returns Whether the stored hash is outdated. False when nothing is stored.
70
+ */
71
+ isHashOutdated<This extends {}>(this: This, field: keyof This): boolean;
30
72
  };
31
73
  };
32
74
  }