@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
package/dist/table.d.ts CHANGED
@@ -94,7 +94,8 @@ type AwaitableArray<T> = Promise<T | T[]> | T | T[];
94
94
  /**
95
95
  * Database Table class decorator to create default data on table creation.
96
96
  *
97
- * @param generator Data generator
97
+ * @param generator Data generator, called with the table class registered
98
+ * into the schema: the decorated class or a subclass of it
98
99
  */
99
- export declare const Fixture: <T extends typeof Table>(generator: (p: T) => AwaitableArray<Partial<InstanceType<T>>>) => ClassDecorator<T>;
100
+ export declare function Fixture<T extends typeof Table>(generator: (p: T) => AwaitableArray<Partial<InstanceType<T>>>): ClassDecorator<T>;
100
101
  export {};
package/dist/table.js CHANGED
@@ -3,12 +3,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Fixture = exports.Field = exports.Index = exports.Table = exports.TableRefSymbol = exports.TableMetaSymbol = void 0;
6
+ exports.Field = exports.Index = exports.Table = exports.TableRefSymbol = exports.TableMetaSymbol = void 0;
7
+ exports.Fixture = Fixture;
7
8
  const node_assert_1 = __importDefault(require("node:assert"));
8
9
  const decorators_1 = require("@antelopejs/interface-core/decorators");
9
10
  const common_1 = require("./modifiers/common");
11
+ const kinds_1 = require("./modifiers/internal/kinds");
10
12
  const records_1 = require("./modifiers/internal/records");
11
13
  const common_2 = require("./common");
14
+ const bound_schema_1 = require("./internal/bound-schema");
12
15
  exports.TableMetaSymbol = Symbol();
13
16
  exports.TableRefSymbol = Symbol();
14
17
  function isSchemaInstance(target) {
@@ -37,10 +40,13 @@ class Table {
37
40
  const tableName = metadata.tableName;
38
41
  (0, node_assert_1.default)(tableName, `${this.name} has no table name: decorate it with @RegisterTable`);
39
42
  if (isSchemaInstance(target)) {
43
+ // oxlint-disable-next-line typescript/no-unsafe-return -- target is a SchemaInstance<any>, so its table is a Table<any>; a schema instance covers every table of its schema, so no type parameter of it states that this class's table holds this class's rows
40
44
  return target.table(tableName);
41
45
  }
42
- (0, node_assert_1.default)(metadata.schema, `${this.name} is not bound to a schema: call RegisterSchema("${metadata.schemaName}") in the module that declares it`);
43
- return metadata.schema.instance(target).table(tableName);
46
+ const schema = (0, bound_schema_1.boundSchema)(metadata);
47
+ (0, node_assert_1.default)(schema, `${this.name} is not bound to a schema: call RegisterSchema("${metadata.schemaName}") in the module that declares it`);
48
+ // oxlint-disable-next-line typescript/no-unsafe-return -- the schema instance is a SchemaInstance<any>, so its table is a Table<any>; a schema instance covers every table of its schema, so no type parameter of it states that this class's table holds this class's rows
49
+ return schema.instance(target).table(tableName);
44
50
  }
45
51
  /**
46
52
  * Supplement the superclass with Modifier mixins.
@@ -50,10 +56,12 @@ class Table {
50
56
  */
51
57
  static with(...others) {
52
58
  const c = extendTable(this);
53
- for (const mixin of others
54
- .map((otherClass) => otherClass.prototype && new otherClass())
55
- .map((other) => other?.[common_1.MixinSymbol])
56
- .filter((mixin) => mixin?.prototype)) {
59
+ for (const mixin of others.flatMap((otherClass) => {
60
+ const mixin = otherClass.prototype
61
+ ? new otherClass()[common_1.MixinSymbol]
62
+ : undefined;
63
+ return mixin?.prototype ? [mixin] : [];
64
+ })) {
57
65
  for (const key of Object.getOwnPropertyNames(mixin.prototype)) {
58
66
  if (key !== "constructor" && !(key in c.prototype)) {
59
67
  Object.defineProperty(c.prototype, key, {
@@ -75,6 +83,7 @@ class Table {
75
83
  }
76
84
  }
77
85
  }
86
+ // SAFETY: c subclasses this and gets every mixin member the base lacks, so it has the instance type Combined computes from the mixin classes; the Object.defineProperty calls give TypeScript no way to derive it.
78
87
  return c;
79
88
  }
80
89
  }
@@ -91,7 +100,9 @@ exports.Table = Table;
91
100
  */
92
101
  exports.Index = (0, decorators_1.MakePropertyDecorator)((target, propertyKey, options) => {
93
102
  const metadata = (0, common_2.getMetadata)(target.constructor, common_2.DatumStaticMetadata);
94
- metadata.addIndex(propertyKey, options?.group || propertyKey, options?.crossInstance, options?.unique);
103
+ (0, node_assert_1.default)((0, kinds_1.isString)(propertyKey), `@Index on ${String(propertyKey)}: a database index names a field, never a symbol`);
104
+ const key = propertyKey;
105
+ metadata.addIndex(key, options?.group || key, options?.crossInstance, options?.unique);
95
106
  });
96
107
  /**
97
108
  * Database Table Field type decorator.
@@ -103,10 +114,15 @@ exports.Field = (0, decorators_1.MakePropertyDecorator)((target, propertyKey, ty
103
114
  /**
104
115
  * Database Table class decorator to create default data on table creation.
105
116
  *
106
- * @param generator Data generator
117
+ * @param generator Data generator, called with the table class registered
118
+ * into the schema: the decorated class or a subclass of it
107
119
  */
108
- exports.Fixture = (0, decorators_1.MakeClassDecorator)((target, generator) => {
109
- const metadata = (0, common_2.getMetadata)(target, common_2.DatumStaticMetadata);
110
- metadata.generator = generator;
111
- });
120
+ function Fixture(generator) {
121
+ return (target) => {
122
+ (0, common_2.getMetadata)(target, common_2.DatumStaticMetadata).generator = (tableClass) => {
123
+ (0, node_assert_1.default)((0, kinds_1.isSameOrSubclass)(tableClass, target), `${tableClass.name} does not extend ${target.name}, whose fixture it inherited`);
124
+ return generator(tableClass);
125
+ };
126
+ };
127
+ }
112
128
  //# sourceMappingURL=table.js.map
package/dist/table.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":"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"}
@@ -103,7 +103,7 @@ describe("Tables and models across interface instances", () => {
103
103
  function stagesOf(query) {
104
104
  return query
105
105
  .build()
106
- .map(({ stage, options }) => [stage, options?.id]);
106
+ .map(({ stage, options }) => [stage, options && "id" in options ? options.id : undefined]);
107
107
  }
108
108
  function BasicDataModelReadsOtherInstanceTest() {
109
109
  class Remote extends Other.Table {
@@ -134,7 +134,10 @@ function GetModelFromOtherInstanceTest() {
134
134
  const ItemModel = Decorators.BasicDataModel(Item);
135
135
  const model = Other.GetModel(ItemModel, "t3");
136
136
  (0, chai_1.expect)(model.database).to.be.instanceOf(Database.SchemaInstance);
137
- (0, chai_1.expect)(model.database.build()[0].options.id).to.equal(boundSchemaId);
137
+ (0, chai_1.expect)(model.database.build()[0]).to.deep.include({
138
+ stage: "schema",
139
+ options: { id: boundSchemaId },
140
+ });
138
141
  }
139
142
  function LockFromOtherInstanceTest() {
140
143
  const row = new Labelled();
@@ -1 +1 @@
1
- {"version":3,"file":"cross_instance.test.js","sourceRoot":"","sources":["../../src/tests/cross_instance.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cross_instance.test.js","sourceRoot":"","sources":["../../src/tests/cross_instance.test.ts"],"names":[],"mappings":"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"}
@@ -237,8 +237,14 @@ describe("Database - initialization", () => {
237
237
  (0, schema_1.RegisterTable)("late_items", "test-late-schema")
238
238
  ], Reloaded);
239
239
  const model = (0, model_1.GetModel)((0, model_1.BasicDataModel)(Reloaded), "late-instance");
240
- (0, chai_1.expect)(model.database.build()[0].options.id).to.equal("test-late-schema");
241
- (0, chai_1.expect)(Reloaded.table().build()[0].options.id).to.equal("test-late-schema");
240
+ (0, chai_1.expect)(model.database.build()[0]).to.deep.include({
241
+ stage: "schema",
242
+ options: { id: "test-late-schema" },
243
+ });
244
+ (0, chai_1.expect)(Reloaded.table().build()[0]).to.deep.include({
245
+ stage: "schema",
246
+ options: { id: "test-late-schema" },
247
+ });
242
248
  });
243
249
  it("populates TableDefinition.fields from @Field declarations", async () => {
244
250
  let _Order = class _Order extends table_1.Table {
@@ -270,4 +276,38 @@ function getIndexDefinitions(schemaId, tableName) {
270
276
  throw new Error("Schema not found");
271
277
  return schema.definition[tableName].indexes;
272
278
  }
279
+ describe("Database - fixture race", () => {
280
+ it("writes one row when two processes register an id-less fixture at once", async () => {
281
+ let _TestTable = class _TestTable extends table_1.Table {
282
+ };
283
+ _TestTable = __decorate([
284
+ (0, table_1.Fixture)(() => [{ name: "Only row" }]),
285
+ (0, schema_1.RegisterTable)("fixture_race_no_id", "test-fixture-race-no-id")
286
+ ], _TestTable);
287
+ await Promise.all([
288
+ (0, database_1.RegisterSchema)("test-fixture-race-no-id"),
289
+ (0, database_1.RegisterSchema)("test-fixture-race-no-id"),
290
+ ]);
291
+ const schema = interface_database_1.Schema.get("test-fixture-race-no-id");
292
+ if (!schema)
293
+ throw new Error("Schema not found");
294
+ (0, chai_1.expect)(await schema.instance().table("fixture_race_no_id")).to.have.length(1);
295
+ });
296
+ it("does not fail the process that loses a fixture insert", async () => {
297
+ let _TestTable = class _TestTable extends table_1.Table {
298
+ };
299
+ _TestTable = __decorate([
300
+ (0, table_1.Fixture)(() => [{ _id: "only-row", name: "Only row" }]),
301
+ (0, schema_1.RegisterTable)("fixture_race_id", "test-fixture-race-id")
302
+ ], _TestTable);
303
+ await Promise.all([
304
+ (0, database_1.RegisterSchema)("test-fixture-race-id"),
305
+ (0, database_1.RegisterSchema)("test-fixture-race-id"),
306
+ ]);
307
+ const schema = interface_database_1.Schema.get("test-fixture-race-id");
308
+ if (!schema)
309
+ throw new Error("Schema not found");
310
+ (0, chai_1.expect)(await schema.instance().table("fixture_race_id")).to.have.length(1);
311
+ });
312
+ });
273
313
  //# sourceMappingURL=database.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"database.test.js","sourceRoot":"","sources":["../../src/tests/database.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.test.js","sourceRoot":"","sources":["../../src/tests/database.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+BAA8B;AAC9B,uEAAwD;AACxD,sCAA0C;AAC1C,0CAA6C;AAC7C,oCAAoD;AACpD,oCAAwD;AAExD,mDAA2D;AAE3D,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAEhC,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,aAAK;SAE7B,CAAA;QAFK,UAAU;YADf,IAAA,sBAAa,EAAC,YAAY,EAAE,iBAAiB,CAAC;WACzC,UAAU,CAEf;QAED,MAAM,IAAA,yBAAc,EAAC,iBAAiB,CAAC,CAAC;QAExC,MAAM,MAAM,GAAG,2BAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC7C,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QAEvD,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,aAAK;SAE7B,CAAA;QAFK,UAAU;YADf,IAAA,sBAAa,EAAC,UAAU,EAAE,gBAAgB,CAAC;WACtC,UAAU,CAEf;QAED,MAAM,IAAA,yBAAc,EAAC,gBAAgB,CAAC,CAAC;QAEvC,MAAM,MAAM,GAAG,2BAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC5C,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAE3C,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,aAAK;SAM7B,CAAA;QAJS;YADP,IAAA,aAAK,GAAE;;gDACa;QAGb;YADP,IAAA,aAAK,GAAE;;iDACc;QALlB,UAAU;YADf,IAAA,sBAAa,EAAC,WAAW,EAAE,iBAAiB,CAAC;WACxC,UAAU,CAMf;QAED,MAAM,IAAA,yBAAc,EAAC,iBAAiB,CAAC,CAAC;QAExC,MAAM,MAAM,GAAG,2BAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC7C,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QAEnD,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,aAAK;SAS7B,CAAA;QAPS;YADP,IAAA,aAAK,EAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;;gDACX;QAGb;YADP,IAAA,aAAK,EAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;;iDACV;QAGd;YADP,IAAA,aAAK,EAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;;+CACV;QARhB,UAAU;YADf,IAAA,sBAAa,EAAC,WAAW,EAAE,iBAAiB,CAAC;WACxC,UAAU,CASf;QAED,MAAM,IAAA,yBAAc,EAAC,iBAAiB,CAAC,CAAC;QAExC,MAAM,MAAM,GAAG,2BAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC7C,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAE5D,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,aAAK;SAM7B,CAAA;QAJS;YADP,IAAA,aAAK,EAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;;iDACT;QAGd;YADP,IAAA,aAAK,GAAE;;gDACa;QALjB,UAAU;YADf,IAAA,sBAAa,EAAC,cAAc,EAAE,0BAA0B,CAAC;WACpD,UAAU,CAMf;QAED,MAAM,IAAA,yBAAc,EAAC,0BAA0B,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAG,mBAAmB,CACjC,0BAA0B,EAC1B,cAAc,CACf,CAAC;QACF,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC5B,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE;YACjD,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;SAC5B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAE7E,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,aAAK;SAS7B,CAAA;QAPS;YADP,IAAA,aAAK,EAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;;gDACX;QAGb;YADP,IAAA,aAAK,EAAC,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;;iDAC/B;QAGd;YADP,IAAA,aAAK,EAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;;+CACV;QARhB,UAAU;YADf,IAAA,sBAAa,EAAC,aAAa,EAAE,yBAAyB,CAAC;WAClD,UAAU,CASf;QAED,MAAM,IAAA,yBAAc,EAAC,yBAAyB,CAAC,CAAC;QAEhD,MAAM,OAAO,GAAG,mBAAmB,CACjC,yBAAyB,EACzB,aAAa,CACd,CAAC;QACF,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC5B,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE;YAC/D,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QAErE,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,aAAK;SAY7B,CAAA;QAVS;YADP,IAAA,aAAK,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;gDACH;QAGb;YADP,IAAA,aAAK,EAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;;oDACL;QAGjB;YADP,IAAA,aAAK,EAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;qDAClB;QAGlB;YADP,IAAA,aAAK,GAAE;;+CACY;QAXhB,UAAU;YADf,IAAA,sBAAa,EAAC,cAAc,EAAE,0BAA0B,CAAC;WACpD,UAAU,CAYf;QAED,MAAM,IAAA,yBAAc,EAAC,0BAA0B,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAG,mBAAmB,CACjC,0BAA0B,EAC1B,cAAc,CACf,CAAC;QACF,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC5B,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;YACzC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;YAC9D,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;SAC3B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QAExE,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,aAAK;SAM7B,CAAA;QAJS;YADP,IAAA,aAAK,GAAE;;gDACa;QAGb;YADP,IAAA,aAAK,EAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;;iDACV;QALlB,UAAU;YADf,IAAA,sBAAa,EAAC,YAAY,EAAE,wBAAwB,CAAC;WAChD,UAAU,CAMf;QAED,MAAM,IAAA,yBAAc,EAAC,wBAAwB,CAAC,CAAC;QAE/C,MAAM,OAAO,GAAG,mBAAmB,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;QAC5E,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC5B,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;YAC3B,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;SACnC,CAAC,CAAC;QACH,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CACrD,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,IAAI,KAAK,CACpC,CAAC;QACF,IAAA,aAAM,EAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,QAAQ,GAAG;YACf,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE;YAChC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE;SACjC,CAAC;QAIF,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,aAAK;SAE7B,CAAA;QAFK,UAAU;YAFf,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,QAAQ,CAAC;YACvB,IAAA,sBAAa,EAAC,eAAe,EAAE,qBAAqB,CAAC;WAChD,UAAU,CAEf;QAED,MAAM,IAAA,yBAAc,EAAC,qBAAqB,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,2BAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC9D,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC,GAAG,CAAC;YACf,OAAO,GAAG,CAAC,SAAS,CAAC;QACvB,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,CAAiB,EAAE,CAAiB,EAAE,EAAE,CACxD,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAA,aAAM,EAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QAEvC,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,aAAK;SAK7B,CAAA;QAHS;YADP,IAAA,aAAK,GAAE;;iDACc;QAFlB,UAAU;YADf,IAAA,sBAAa,EAAC,OAAO,EAAE,yBAAyB,CAAC;WAC5C,UAAU,CAKf;QAGD,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,aAAK;SAKhC,CAAA;QAHS;YADP,IAAA,aAAK,GAAE;;mDACa;QAFjB,aAAa;YADlB,IAAA,sBAAa,EAAC,UAAU,EAAE,yBAAyB,CAAC;WAC/C,aAAa,CAKlB;QAED,MAAM,IAAA,yBAAc,EAAC,yBAAyB,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAG,2BAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACrD,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,4FAA4F,EAAE,KAAK,IAAI,EAAE;QAE1G,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,aAAK;SAE5B,CAAA;QAFK,SAAS;YADd,IAAA,sBAAa,EAAC,YAAY,EAAE,kBAAkB,CAAC;WAC1C,SAAS,CAEd;QAED,MAAM,IAAA,yBAAc,EAAC,kBAAkB,CAAC,CAAC;QAGzC,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,aAAK;SAE3B,CAAA;QAFK,QAAQ;YADb,IAAA,sBAAa,EAAC,YAAY,EAAE,kBAAkB,CAAC;WAC1C,QAAQ,CAEb;QAED,MAAM,KAAK,GAAG,IAAA,gBAAQ,EAAC,IAAA,sBAAc,EAAC,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC;QAClE,IAAA,aAAM,EAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;YAChD,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE,EAAE,EAAE,EAAE,kBAAkB,EAAE;SACpC,CAAC,CAAC;QACH,IAAA,aAAM,EAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;YAClD,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE,EAAE,EAAE,EAAE,kBAAkB,EAAE;SACpC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QAEzE,IAAM,MAAM,GAAZ,MAAM,MAAO,SAAQ,aAAK;SAQzB,CAAA;QANS;YADP,IAAA,aAAK,EAAC,QAAQ,CAAC;;8CACO;QAGf;YADP,IAAA,aAAK,EAAC,IAAA,2BAAW,EAAC,2BAAW,CAAC,CAAC;;6CACV;QALlB,MAAM;YADX,IAAA,sBAAa,EAAC,QAAQ,EAAE,oBAAoB,CAAC;WACxC,MAAM,CAQX;QACD,MAAM,IAAA,yBAAc,EAAC,oBAAoB,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,2BAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;QAC/C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAA,aAAM,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,2BAAW,CAAC,CAAC;QAC3C,IAAA,aAAM,EAAC,SAAS,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,SAAS,mBAAmB,CAAC,QAAgB,EAAE,SAAiB;IAC9D,MAAM,MAAM,GAAG,2BAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;AAC9C,CAAC;AAED,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QAGrF,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,aAAK;SAE7B,CAAA;QAFK,UAAU;YAFf,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;YACrC,IAAA,sBAAa,EAAC,oBAAoB,EAAE,yBAAyB,CAAC;WACzD,UAAU,CAEf;QAED,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAA,yBAAc,EAAC,yBAAyB,CAAC;YACzC,IAAA,yBAAc,EAAC,yBAAyB,CAAC;SAC1C,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,2BAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACjD,IAAA,aAAM,EAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CACxE,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QAGrE,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,aAAK;SAE7B,CAAA;QAFK,UAAU;YAFf,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;YACtD,IAAA,sBAAa,EAAC,iBAAiB,EAAE,sBAAsB,CAAC;WACnD,UAAU,CAEf;QAED,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAA,yBAAc,EAAC,sBAAsB,CAAC;YACtC,IAAA,yBAAc,EAAC,sBAAsB,CAAC;SACvC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,2BAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACjD,IAAA,aAAM,EAAC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const chai_1 = require("chai");
13
+ const interface_database_1 = require("@antelopejs/interface-database");
14
+ const database_1 = require("../database");
15
+ const model_1 = require("../model");
16
+ const autodate_1 = require("../modifiers/autodate");
17
+ const common_1 = require("../modifiers/common");
18
+ const hash_1 = require("../modifiers/hash");
19
+ const schema_1 = require("../schema");
20
+ const table_1 = require("../table");
21
+ const hash_rows_1 = require("./helpers/hash-rows");
22
+ const SCHEMA_ID = "hash-upgrade-schema";
23
+ const WRONG_PASSWORD = "not the password";
24
+ let Account = class Account extends table_1.Table.with(hash_1.HashModifier) {
25
+ };
26
+ __decorate([
27
+ (0, table_1.Field)("string"),
28
+ __metadata("design:type", String)
29
+ ], Account.prototype, "name", void 0);
30
+ __decorate([
31
+ (0, autodate_1.UpdateTime)(),
32
+ (0, table_1.Field)("date"),
33
+ __metadata("design:type", Date)
34
+ ], Account.prototype, "updatedAt", void 0);
35
+ __decorate([
36
+ (0, hash_1.Hashed)(),
37
+ (0, table_1.Field)("string"),
38
+ __metadata("design:type", String)
39
+ ], Account.prototype, "password", void 0);
40
+ Account = __decorate([
41
+ (0, schema_1.RegisterTable)("hash_upgrade_accounts", SCHEMA_ID)
42
+ ], Account);
43
+ const AccountModel = (0, model_1.BasicDataModel)(Account, "hash_upgrade_accounts");
44
+ (0, hash_rows_1.scryptSuite)("Integration - upgrade of stored hashes", () => {
45
+ let model;
46
+ before(async () => {
47
+ await (0, database_1.RegisterSchema)(SCHEMA_ID);
48
+ const instance = interface_database_1.Schema.get(SCHEMA_ID)?.instance();
49
+ if (!instance)
50
+ throw new Error("Hash upgrade schema not found");
51
+ model = new AccountModel(instance);
52
+ });
53
+ async function storedRowFrom0_1_11() {
54
+ const _id = `from-0.1.11-${Math.random()}`;
55
+ await model.table
56
+ .insert(structuredClone({ ...hash_rows_1.ROW_FROM_0_1_11, _id }))
57
+ .run();
58
+ return _id;
59
+ }
60
+ async function storedCurrentRow() {
61
+ const [id] = await model.insert({ name: "Current", password: hash_rows_1.PASSWORD });
62
+ return id;
63
+ }
64
+ async function reload(id) {
65
+ const account = await model.get(id);
66
+ if (!account)
67
+ throw new Error(`Row ${id} not found`);
68
+ return account;
69
+ }
70
+ async function expectVerifies(account) {
71
+ (0, chai_1.expect)(account.testHash("password", hash_rows_1.PASSWORD)).to.equal(true);
72
+ (0, chai_1.expect)(await account.testHashAsync("password", hash_rows_1.PASSWORD)).to.equal(true);
73
+ (0, chai_1.expect)(account.testHash("password", WRONG_PASSWORD)).to.equal(false);
74
+ (0, chai_1.expect)(await account.testHashAsync("password", WRONG_PASSWORD)).to.equal(false);
75
+ }
76
+ it("verifies, flags, re-hashes and saves a row written by 0.1.11", async () => {
77
+ const id = await storedRowFrom0_1_11();
78
+ const before = await reload(id);
79
+ await expectVerifies(before);
80
+ (0, chai_1.expect)(before.isHashOutdated("password")).to.equal(true);
81
+ before.password = hash_rows_1.PASSWORD;
82
+ await model.update(before);
83
+ const after = await reload(id);
84
+ (0, chai_1.expect)(after.password).to.match(/^\$scrypt\$ln=15,r=8,p=3\$/);
85
+ await expectVerifies(after);
86
+ (0, chai_1.expect)(after.isHashOutdated("password")).to.equal(false);
87
+ });
88
+ it("re-hashes through a partial update of the hashed field", async () => {
89
+ const id = await storedRowFrom0_1_11();
90
+ await model.update(id, { password: hash_rows_1.PASSWORD });
91
+ const after = await reload(id);
92
+ await expectVerifies(after);
93
+ (0, chai_1.expect)(after.isHashOutdated("password")).to.equal(false);
94
+ (0, chai_1.expect)(after.name).to.equal(hash_rows_1.ROW_FROM_0_1_11.name);
95
+ });
96
+ for (const [kind, store] of [
97
+ ["from 0.1.11", storedRowFrom0_1_11],
98
+ ["current", storedCurrentRow],
99
+ ]) {
100
+ it(`a partial update of another field keeps the hash of a ${kind} row`, async () => {
101
+ const id = await store();
102
+ const stored = (await reload(id)).password;
103
+ await model.update(id, { name: "Renamed" });
104
+ const after = await reload(id);
105
+ (0, chai_1.expect)(after.name).to.equal("Renamed");
106
+ (0, chai_1.expect)(after.password).to.equal(stored);
107
+ await expectVerifies(after);
108
+ });
109
+ it(`a whole-row update of another field keeps the hash of a ${kind} row`, async () => {
110
+ const id = await store();
111
+ const account = await reload(id);
112
+ const stored = account.password;
113
+ account.name = "Renamed";
114
+ await model.update(account);
115
+ const after = await reload(id);
116
+ (0, chai_1.expect)(after.name).to.equal("Renamed");
117
+ (0, chai_1.expect)(after.password).to.equal(stored);
118
+ await expectVerifies(after);
119
+ });
120
+ it(`lock() then a whole-row update keeps the hash of a ${kind} row`, async () => {
121
+ const id = await store();
122
+ const account = await reload(id);
123
+ const stored = account.password;
124
+ (0, common_1.lock)(account, hash_1.HashModifier, undefined);
125
+ await model.update(account);
126
+ const after = await reload(id);
127
+ (0, chai_1.expect)(after.password).to.equal(stored);
128
+ await expectVerifies(after);
129
+ });
130
+ }
131
+ });
132
+ //# sourceMappingURL=hash_upgrade.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash_upgrade.test.js","sourceRoot":"","sources":["../../src/tests/hash_upgrade.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ export declare const PASSWORD = "correct horse battery staple";
2
+ /**
3
+ * `describe` for tests that spend several scrypt runs. One run takes hundreds of
4
+ * milliseconds on a busy machine, which passes mocha's 2 s limit in a few runs.
5
+ */
6
+ export declare function scryptSuite(title: string, body: () => void): void;
7
+ /** A row as `@Hashed()` stored it in the published 0.1.11: a bare salted SHA-256. */
8
+ export declare const ROW_FROM_0_1_11: {
9
+ _id: string;
10
+ email: string;
11
+ name: string;
12
+ _internal: {
13
+ meta: {
14
+ HashModifier: {
15
+ salt: string;
16
+ };
17
+ };
18
+ data: {
19
+ password: string;
20
+ };
21
+ };
22
+ };
23
+ /**
24
+ * A row as the published 0.1.11 stored `@Hashed({ algorithm: "sha256" })` on
25
+ * `password` and `@Hashed({ algorithm: "md5" })` on `checksum`, set to `{ a: 1 }`.
26
+ */
27
+ export declare const FINGERPRINT_ROW_FROM_0_1_11: {
28
+ _id: string;
29
+ _internal: {
30
+ meta: {
31
+ HashModifier: {
32
+ salt: string;
33
+ };
34
+ };
35
+ data: {
36
+ password: string;
37
+ checksum: string;
38
+ };
39
+ };
40
+ };
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FINGERPRINT_ROW_FROM_0_1_11 = exports.ROW_FROM_0_1_11 = exports.PASSWORD = void 0;
4
+ exports.scryptSuite = scryptSuite;
5
+ exports.PASSWORD = "correct horse battery staple";
6
+ const SCRYPT_SUITE_TIMEOUT_MS = 30_000;
7
+ /**
8
+ * `describe` for tests that spend several scrypt runs. One run takes hundreds of
9
+ * milliseconds on a busy machine, which passes mocha's 2 s limit in a few runs.
10
+ */
11
+ function scryptSuite(title, body) {
12
+ describe(title, function () {
13
+ this.timeout(SCRYPT_SUITE_TIMEOUT_MS);
14
+ body();
15
+ });
16
+ }
17
+ /** A row as `@Hashed()` stored it in the published 0.1.11: a bare salted SHA-256. */
18
+ exports.ROW_FROM_0_1_11 = {
19
+ _id: "row-from-0.1.11",
20
+ email: "legacy@example.test",
21
+ name: "Legacy",
22
+ _internal: {
23
+ meta: { HashModifier: { salt: "BMNyCHwpLNt2tkqkyB5rwOj1q2wfDIo6" } },
24
+ data: { password: "nPamXXaKC8N+8W7xqxTSo8r+pS9jXMkjJu2XMZtUR+A=" },
25
+ },
26
+ };
27
+ /**
28
+ * A row as the published 0.1.11 stored `@Hashed({ algorithm: "sha256" })` on
29
+ * `password` and `@Hashed({ algorithm: "md5" })` on `checksum`, set to `{ a: 1 }`.
30
+ */
31
+ exports.FINGERPRINT_ROW_FROM_0_1_11 = {
32
+ _id: "fingerprint-from-0.1.11",
33
+ _internal: {
34
+ meta: { HashModifier: { salt: "lGSUI2bFDjUE9tTMDmgi4epfFNLsU0xY" } },
35
+ data: {
36
+ password: "UsoNNNsm8q4tIZffzzw9QX58b98ksdLC6JN+a1FN93g=",
37
+ checksum: "NbsXtgSCNhwxQV/eBQ+LKA==",
38
+ },
39
+ },
40
+ };
41
+ //# sourceMappingURL=hash-rows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash-rows.js","sourceRoot":"","sources":["../../../src/tests/helpers/hash-rows.ts"],"names":[],"mappings":";;;AAQA,kCAKC;AAbY,QAAA,QAAQ,GAAG,8BAA8B,CAAC;AAEvD,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAEvC;;;GAGG;AACH,SAAgB,WAAW,CAAC,KAAa,EAAE,IAAgB;IACzD,QAAQ,CAAC,KAAK,EAAE;QACd,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QACtC,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;AACL,CAAC;AAED,qFAAqF;AACxE,QAAA,eAAe,GAAG;IAC7B,GAAG,EAAE,iBAAiB;IACtB,KAAK,EAAE,qBAAqB;IAC5B,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE;QACT,IAAI,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,EAAE;QACpE,IAAI,EAAE,EAAE,QAAQ,EAAE,8CAA8C,EAAE;KACnE;CACF,CAAC;AAEF;;;GAGG;AACU,QAAA,2BAA2B,GAAG;IACzC,GAAG,EAAE,yBAAyB;IAC9B,SAAS,EAAE;QACT,IAAI,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,EAAE;QACpE,IAAI,EAAE;YACJ,QAAQ,EAAE,8CAA8C;YACxD,QAAQ,EAAE,0BAA0B;SACrC;KACF;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"other-instance.js","sourceRoot":"","sources":["../../../src/tests/helpers/other-instance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"other-instance.js","sourceRoot":"","sources":["../../../src/tests/helpers/other-instance.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,9 @@ const encryption_1 = require("../modifiers/encryption");
20
20
  const localization_1 = require("../modifiers/localization");
21
21
  const common_1 = require("../modifiers/common");
22
22
  const codec_helpers_1 = require("./codec_helpers");
23
+ function unlockAny(table, row, field) {
24
+ return (0, common_1.unlockrequest)(table, row, field, []);
25
+ }
23
26
  function getDatabase(schemaId) {
24
27
  const instance = interface_database_1.Schema.get(schemaId)?.instance();
25
28
  if (!instance)
@@ -75,14 +78,17 @@ describe("Integration - real database operations", () => {
75
78
  (0, chai_1.expect)(retrievedUserFromModel?.secretData).to.deep.equal({
76
79
  token: "secret-token-123",
77
80
  });
78
- (0, chai_1.expect)(retrievedUserFromDatabase?.secretData).to.not.deep.equal({
81
+ (0, chai_1.expect)(retrievedUserFromDatabase).to.not.have.deep.property("secretData", {
79
82
  token: "secret-token-123",
80
83
  });
81
84
  if (retrievedUserFromModel?.testHash) {
82
85
  const isPasswordValid = retrievedUserFromModel.testHash("password", "securePassword123");
83
86
  (0, chai_1.expect)(isPasswordValid).to.equal(true);
84
87
  }
85
- const dbUser = await schemaInstance.table("users").get(userId).run();
88
+ const dbUser = await schemaInstance
89
+ .table("users")
90
+ .get(userId)
91
+ .run();
86
92
  (0, chai_1.expect)(dbUser).to.have.property("email").that.equals("test@example.com");
87
93
  (0, chai_1.expect)(dbUser).to.have.property("name").that.equals("John Doe");
88
94
  });
@@ -186,6 +192,11 @@ describe("Integration - real database operations", () => {
186
192
  ]))
187
193
  .run();
188
194
  (0, chai_1.expect)(frenchTitles).to.deep.equal(["Only English"]);
195
+ const ids = await LocalizedContent.table(schemaInstance)
196
+ .filter((row) => row.key("_id").eq("content-untranslated"))
197
+ .map((row) => unlockAny(LocalizedContent, row, "_id"))
198
+ .run();
199
+ (0, chai_1.expect)(ids).to.deep.equal(["content-untranslated"]);
189
200
  });
190
201
  it("manages encrypted sensitive data", async () => {
191
202
  let SensitiveData = class SensitiveData extends table_1.Table.with(encryption_1.EncryptionModifier) {
@@ -221,8 +232,8 @@ describe("Integration - real database operations", () => {
221
232
  .get(dataId)
222
233
  .run();
223
234
  (0, chai_1.expect)(dbData).to.have.property("userId").that.equals("user123");
224
- (0, chai_1.expect)(dbData?.creditCard).to.not.equal("4111-1111-1111-1111");
225
- (0, chai_1.expect)(dbData?.ssn).to.not.equal("123-45-6789");
235
+ (0, chai_1.expect)(dbData).to.not.have.property("creditCard", "4111-1111-1111-1111");
236
+ (0, chai_1.expect)(dbData).to.not.have.property("ssn", "123-45-6789");
226
237
  });
227
238
  });
228
239
  describe("Integration - real database operations", () => {