@antelopejs/interface-database-decorators 0.1.10 → 0.1.12

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 (71) hide show
  1. package/README.md +9 -7
  2. package/dist/common.js.map +1 -1
  3. package/dist/database.js +18 -2
  4. package/dist/database.js.map +1 -1
  5. package/dist/model.js +48 -29
  6. package/dist/model.js.map +1 -1
  7. package/dist/modifiers/common.d.ts +24 -4
  8. package/dist/modifiers/common.js +104 -130
  9. package/dist/modifiers/common.js.map +1 -1
  10. package/dist/modifiers/encryption.js +14 -9
  11. package/dist/modifiers/encryption.js.map +1 -1
  12. package/dist/modifiers/hash.d.ts +46 -4
  13. package/dist/modifiers/hash.js +172 -14
  14. package/dist/modifiers/hash.js.map +1 -1
  15. package/dist/modifiers/internal/kinds.d.ts +13 -0
  16. package/dist/modifiers/internal/kinds.js +33 -0
  17. package/dist/modifiers/internal/kinds.js.map +1 -0
  18. package/dist/modifiers/internal/records.d.ts +31 -0
  19. package/dist/modifiers/internal/records.js +56 -0
  20. package/dist/modifiers/internal/records.js.map +1 -0
  21. package/dist/modifiers/localization.js +4 -2
  22. package/dist/modifiers/localization.js.map +1 -1
  23. package/dist/schema.js +1 -2
  24. package/dist/schema.js.map +1 -1
  25. package/dist/table.js +21 -6
  26. package/dist/table.js.map +1 -1
  27. package/dist/tests/codec_helpers.d.ts +6 -2
  28. package/dist/tests/codec_helpers.js +18 -14
  29. package/dist/tests/codec_helpers.js.map +1 -1
  30. package/dist/tests/common.test.js +38 -46
  31. package/dist/tests/common.test.js.map +1 -1
  32. package/dist/tests/cross_instance.test.js +27 -2
  33. package/dist/tests/cross_instance.test.js.map +1 -1
  34. package/dist/tests/database.test.js +278 -256
  35. package/dist/tests/database.test.js.map +1 -1
  36. package/dist/tests/hash_upgrade.test.d.ts +1 -0
  37. package/dist/tests/hash_upgrade.test.js +132 -0
  38. package/dist/tests/hash_upgrade.test.js.map +1 -0
  39. package/dist/tests/helpers/hash-rows.d.ts +40 -0
  40. package/dist/tests/helpers/hash-rows.js +41 -0
  41. package/dist/tests/helpers/hash-rows.js.map +1 -0
  42. package/dist/tests/helpers/other-instance.d.ts +1 -1
  43. package/dist/tests/helpers/other-instance.js +41 -9
  44. package/dist/tests/helpers/other-instance.js.map +1 -1
  45. package/dist/tests/integration.test.js +485 -485
  46. package/dist/tests/integration.test.js.map +1 -1
  47. package/dist/tests/model.test.js +293 -308
  48. package/dist/tests/model.test.js.map +1 -1
  49. package/dist/tests/modifiers/autodate.test.js +80 -86
  50. package/dist/tests/modifiers/autodate.test.js.map +1 -1
  51. package/dist/tests/modifiers/common.test.js +181 -195
  52. package/dist/tests/modifiers/common.test.js.map +1 -1
  53. package/dist/tests/modifiers/encryption.test.js +149 -155
  54. package/dist/tests/modifiers/encryption.test.js.map +1 -1
  55. package/dist/tests/modifiers/hash.test.js +386 -99
  56. package/dist/tests/modifiers/hash.test.js.map +1 -1
  57. package/dist/tests/modifiers/localization.test.js +186 -196
  58. package/dist/tests/modifiers/localization.test.js.map +1 -1
  59. package/dist/tests/partial_update.test.d.ts +1 -0
  60. package/dist/tests/partial_update.test.js +55 -0
  61. package/dist/tests/partial_update.test.js.map +1 -0
  62. package/dist/tests/relation.test.js +92 -97
  63. package/dist/tests/relation.test.js.map +1 -1
  64. package/dist/tests/schema.test.js +101 -106
  65. package/dist/tests/schema.test.js.map +1 -1
  66. package/dist/tests/table.test.js +124 -132
  67. package/dist/tests/table.test.js.map +1 -1
  68. package/docs/3.table-modifiers.md +36 -15
  69. package/package.json +14 -3
  70. package/skills/database-decorators-interface/SKILL.md +4 -2
  71. package/skills/database-decorators-interface/cases.json +71 -0
@@ -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,39 +144,21 @@ 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;
165
- function getInternal(object) {
166
- if (!object._internal) {
167
- object._internal = {
168
- meta: {},
169
- data: {},
170
- };
171
- }
172
- return object._internal;
173
- }
174
- /* Data stages:
175
- *
176
- * - `Database`: locked plain object
177
- * - Complete data with encoded _internal field
178
- * - ex: `{ plain: 'value', _internal: { [..] } }`
179
- * - `Instance`: class instance
180
- * - Complete data with prototype attached and accessors
181
- * - ex: `Table { plain: 'value', special: (accessor) }`
182
- * - `Plaindata`: unlocked plain object
183
- * - Subset of existing data from locked object
184
- * - ex: `{ plain: 'value', special: 'data' }`
156
+ /**
157
+ * Builds a table instance from unlocked plain data: each key is assigned, so
158
+ * modifiers lock the fields they can. Then runs the `fromPlainData` event.
185
159
  */
186
160
  function fromPlainData(rawObject, TableClass) {
187
161
  const shallowCopy = {};
188
- // Attach prototype
189
162
  Object.setPrototypeOf(shallowCopy, TableClass.prototype);
190
163
  for (const [key, val] of Object.entries(rawObject)) {
191
164
  shallowCopy[key] = val;
@@ -193,66 +166,73 @@ function fromPlainData(rawObject, TableClass) {
193
166
  triggerEvent(shallowCopy, "fromPlainData", rawObject);
194
167
  return shallowCopy;
195
168
  }
169
+ /**
170
+ * Converts a table instance to unlocked plain data, without `_internal`. A
171
+ * field still locked comes out `undefined`. Then runs the `toPlainData` event.
172
+ */
196
173
  function toPlainData(object) {
197
174
  const metaTable = (0, common_1.getMetadata)(object.constructor, ModifiersStaticMetadata);
198
175
  const result = { ...object };
199
- delete result._internal;
176
+ if ("_internal" in result)
177
+ delete result._internal;
200
178
  for (const field of Object.keys(metaTable.fields)) {
201
- result[field] = object[field]; // Populate unlocked fields
179
+ const key = field;
180
+ result[key] = object[key];
202
181
  }
203
182
  triggerEvent(object, "toPlainData", result);
204
183
  return result;
205
184
  }
185
+ /**
186
+ * Builds a table instance from a stored record, its modified fields still
187
+ * locked in `_internal`. Then runs the `fromDatabase` event.
188
+ */
206
189
  function fromDatabase(rawObject, TableClass) {
207
- // Generate Meta
208
190
  const shallowCopy = { ...rawObject };
209
- // Attach prototype
210
191
  Object.setPrototypeOf(shallowCopy, TableClass.prototype);
211
192
  triggerEvent(shallowCopy, "fromDatabase", rawObject);
212
193
  return shallowCopy;
213
194
  }
195
+ /**
196
+ * Converts a table instance to the locked record to store, `_internal`
197
+ * included and floating values left out. Then runs the `toDatabase` event.
198
+ */
214
199
  function toDatabase(object) {
215
200
  const result = { ...object };
216
201
  triggerEvent(object, "toDatabase", result);
217
202
  return result;
218
203
  }
219
- const ignoredEventNames = {
220
- constructor: true,
221
- lock: true,
222
- unlock: true,
223
- };
224
204
  function attachModifier(TableClass, Modifier, field, options) {
225
205
  const entry = {
226
206
  id: Modifier.name,
227
207
  modifier: new Modifier(),
228
208
  metaRef: { _ref: {} },
229
209
  };
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
- },
210
+ Object.assign(entry.modifier, {
211
+ meta: new Proxy(entry.metaRef, {
212
+ get: (self, p) => {
213
+ if (!self._ref)
214
+ return undefined;
215
+ return self._ref[p];
216
+ },
217
+ set: (self, p, v) => {
218
+ if (!self._ref)
219
+ self._ref = {};
220
+ return Reflect.set(self._ref, p, v, self._ref);
221
+ },
222
+ }),
241
223
  });
242
- entry.modifier.options = options;
243
- // Mark TableClass as special
224
+ Object.assign(entry.modifier, { options });
244
225
  const metaTable = (0, common_1.getMetadata)(TableClass, ModifiersStaticMetadata);
245
- if (!isOnlyEvents(entry.modifier)) {
246
- // Add Modifier to TableClass[field] with options
226
+ if (!(0, kinds_1.isOnlyEvents)(entry.modifier)) {
247
227
  if (field in metaTable.fields) {
248
- const list = metaTable.fields[field];
228
+ const list = (0, records_1.fieldsByKey)(metaTable)[field];
249
229
  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`);
230
+ if ((0, kinds_1.isWriteOnly)(last.modifier)) {
231
+ if ((0, kinds_1.isWriteOnly)(entry.modifier)) {
232
+ throw new Error(`Attempted adding Modifier ${entry.id} on ${TableClass.name}.${String(field)} but it already has a One-Way Modifier`);
253
233
  }
254
234
  else {
255
- throw new Error(`Adding Modifier ${entry.id} on ${TableClass.name}.${field} after a One-Way Modifier, please review your ordering.`);
235
+ throw new Error(`Adding Modifier ${entry.id} on ${TableClass.name}.${String(field)} after a One-Way Modifier, please review your ordering.`);
256
236
  }
257
237
  }
258
238
  else {
@@ -260,13 +240,13 @@ function attachModifier(TableClass, Modifier, field, options) {
260
240
  }
261
241
  }
262
242
  else {
263
- metaTable.fields[field] = [entry];
243
+ (0, records_1.fieldsByKey)(metaTable)[field] = [entry];
264
244
  Object.defineProperty(TableClass.prototype, field, {
265
245
  get: function () {
266
- return (0, common_1.getMetadata)(this, ModifiersDynamicMetadata).get(field, getInternal(this));
246
+ return (0, common_1.getMetadata)(this, ModifiersDynamicMetadata).get(field, (0, records_1.getInternal)(this));
267
247
  },
268
248
  set: function (value) {
269
- (0, common_1.getMetadata)(this, ModifiersDynamicMetadata).set(field, getInternal(this), value);
249
+ (0, common_1.getMetadata)(this, ModifiersDynamicMetadata).set(field, (0, records_1.getInternal)(this), value);
270
250
  },
271
251
  });
272
252
  }
@@ -279,77 +259,71 @@ function attachModifier(TableClass, Modifier, field, options) {
279
259
  });
280
260
  }
281
261
  for (const event of Object.getOwnPropertyNames(Modifier.prototype)) {
282
- if (!(event in ignoredEventNames) &&
283
- typeof Modifier.prototype[event] === "function") {
262
+ if (!(event in kinds_1.ignoredEventNames) &&
263
+ (0, kinds_1.isCallable)(Modifier.prototype[event])) {
284
264
  if (!metaTable.events.has(event)) {
285
265
  metaTable.events.set(event, []);
286
266
  }
287
- metaTable.events.get(event)?.push([field, entry]);
267
+ (0, records_1.eventsByKey)(metaTable).get(event)?.push([field, entry]);
288
268
  }
289
269
  }
290
270
  }
271
+ function fieldsModifiedBy(metaTable, modifierClass, fields) {
272
+ return (fields ?? Object.keys(metaTable.fields)).filter((field) => (0, records_1.fieldsByKey)(metaTable)[field]?.find(({ id }) => id === modifierClass.name));
273
+ }
291
274
  function getModifiedFields(object, Modifier) {
292
275
  const metaTable = (0, common_1.getMetadata)(object.constructor, ModifiersStaticMetadata);
293
- return Object.keys(metaTable.fields).filter((field) => metaTable.fields[field]?.find(({ id }) => id === Modifier.name));
276
+ return fieldsModifiedBy(metaTable, Modifier);
294
277
  }
295
278
  function unlock(object, Modifier, fields, ...args) {
296
279
  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
280
+ const usedFields = fieldsModifiedBy(metaTable, Modifier, fields);
299
281
  const meta = (0, common_1.getMetadata)(object, ModifiersDynamicMetadata);
300
- // for each field set metadata[field][Modifier] to args
301
282
  for (const field of usedFields) {
302
- meta.fields[field][Modifier.name] = args;
283
+ (0, records_1.unlockArgsOf)(meta, field)[Modifier.name] = args;
303
284
  if (field in meta.floating) {
304
- // check floating
305
- object[field] = meta.floating[field];
285
+ object[field] = (0, records_1.floatingOf)(meta, field);
306
286
  }
307
287
  }
308
288
  }
309
289
  function unlockrequest(table, object, field, modifiers) {
310
- const args = {};
311
- for (const { modifier, args: modArgs } of modifiers) {
312
- args[modifier.name] = modArgs;
313
- }
314
- const meta = object.key("_internal").key("meta");
290
+ const args = Object.fromEntries(modifiers.map(({ modifier, args: modArgs }) => [modifier.name, modArgs]));
291
+ const stored = object;
292
+ const meta = stored.key("_internal").key("meta");
315
293
  const metaTable = (0, common_1.getMetadata)(table, ModifiersStaticMetadata);
316
- return (metaTable.fields[field]?.reduce((data, { id, modifier }) => {
317
- if (isWriteOnly(modifier)) {
294
+ return ((0, records_1.fieldsByKey)(metaTable)[field]?.reduce((data, { id, modifier }) => {
295
+ if ((0, kinds_1.isWriteOnly)(modifier) || !(0, kinds_1.isTwoWay)(modifier)) {
318
296
  return data;
319
297
  }
320
298
  data = modifier.unlockrequest(data, meta.key(id), ...args[id]);
321
299
  return data;
322
- }, object.key("_internal").key("data").key(field)) || object.key(field));
300
+ }, stored.key("_internal").key("data").key(field)) || stored.key(field));
323
301
  }
324
302
  function lock(object, Modifier, fields, ...args) {
325
303
  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
304
+ const usedFields = fieldsModifiedBy(metaTable, Modifier, fields);
328
305
  const meta = (0, common_1.getMetadata)(object, ModifiersDynamicMetadata);
329
- // for each field set metadata[field][Modifier] to args
330
306
  for (const field of usedFields) {
331
307
  const val = object[field];
332
- meta.fields[field][Modifier.name] = args;
308
+ (0, records_1.unlockArgsOf)(meta, field)[Modifier.name] = args;
333
309
  object[field] = val;
334
310
  }
335
311
  }
336
312
  function testValue(object, field, value) {
337
313
  const metaTable = (0, common_1.getMetadata)(object.constructor, ModifiersStaticMetadata);
338
- // Get metadata
339
314
  const meta = (0, common_1.getMetadata)(object, ModifiersDynamicMetadata);
340
- const internal = getInternal(object);
341
- const val = internal.data[field];
342
- for (const { id, modifier, metaRef } of metaTable.fields[field]) {
343
- const args = meta.fields[field][id] || (modifier.autolock && []);
315
+ const internal = (0, records_1.getInternal)(object);
316
+ const val = (0, records_1.dataByKey)(internal)[field];
317
+ for (const { id, modifier, metaRef } of (0, records_1.fieldsByKey)(metaTable)[field]) {
318
+ const args = (0, records_1.unlockArgsOf)(meta, field)[id] ||
319
+ ("autolock" in modifier && modifier.autolock ? [] : undefined);
344
320
  if (!args)
345
321
  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));
322
+ if ((0, kinds_1.isWriteOnly)(modifier)) {
323
+ return (0, records_1.withRef)(internal, id, modifier, metaRef, (modifier) => modifier.test(val, value, ...args));
349
324
  }
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));
325
+ if ((0, kinds_1.isTwoWay)(modifier) && val !== undefined) {
326
+ return (0, records_1.withRef)(internal, id, modifier, metaRef, (modifier) => modifier.unlock(val, ...args));
353
327
  }
354
328
  }
355
329
  return val === value;
@@ -359,12 +333,12 @@ function triggerEvent(object, event, ...args) {
359
333
  if (!metaTable.events.has(event)) {
360
334
  return;
361
335
  }
362
- const internal = getInternal(object);
336
+ const internal = (0, records_1.getInternal)(object);
363
337
  const eventEntries = metaTable.events.get(event);
364
338
  if (!eventEntries)
365
339
  return;
366
340
  for (const [field, { id, modifier, metaRef }] of eventEntries) {
367
- withRef(internal, id, modifier, metaRef, (modifier) => modifier[event](object, field, ...args));
341
+ (0, records_1.withRef)(internal, id, modifier, metaRef, (modifier) => modifier[event](object, field, ...args));
368
342
  }
369
343
  }
370
344
  //# 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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"}
@@ -22,6 +22,12 @@ function date_decoder(_key, value) {
22
22
  ? new Date(value.value)
23
23
  : value;
24
24
  }
25
+ function hasAuthTag(cipher) {
26
+ return "getAuthTag" in cipher;
27
+ }
28
+ function acceptsAuthTag(decipher) {
29
+ return "setAuthTag" in decipher;
30
+ }
25
31
  /**
26
32
  * Encryption modifier. enables the use of {@link Encrypted} on table fields.
27
33
  *
@@ -38,28 +44,27 @@ class EncryptionModifier extends common_1.TwoWayModifier {
38
44
  ]).toString("base64");
39
45
  let authTag;
40
46
  try {
41
- authTag =
42
- "getAuthTag" in cipher
43
- ? cipher.getAuthTag().toString("base64")
44
- : undefined;
45
- }
46
- catch {
47
- // Ignore error if getAuthTag is not available
47
+ authTag = hasAuthTag(cipher)
48
+ ? cipher.getAuthTag().toString("base64")
49
+ : undefined;
48
50
  }
51
+ catch { }
49
52
  return [encrypted, iv.toString("base64"), authTag];
50
53
  }
51
54
  autounlock = true;
52
55
  unlock([locked_value, iv_str, authTag]) {
53
56
  const decipher = (0, node_crypto_1.createDecipheriv)(this.options.algorithm || "aes-256-gcm", this.options.secretKey, Buffer.from(iv_str, "base64"));
54
- if ("setAuthTag" in decipher && authTag) {
57
+ if (acceptsAuthTag(decipher) && authTag) {
55
58
  decipher.setAuthTag(Buffer.from(authTag, "base64"));
56
59
  }
57
- return JSON.parse(Buffer.concat([
60
+ const decoded = JSON.parse(Buffer.concat([
58
61
  decipher.update(Buffer.from(locked_value, "base64")),
59
62
  decipher.final(),
60
63
  ]).toString("utf8"), date_decoder);
64
+ return decoded;
61
65
  }
62
66
  unlockrequest(data) {
67
+ // SAFETY: the proxy is returned unchanged and unlockrequest performs no runtime check on LockedType; the cast only erases the static element type to unknown, which every stored value satisfies.
63
68
  return data;
64
69
  }
65
70
  [common_1.MixinSymbol] = class {
@@ -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
  }