@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.
- package/README.md +17 -13
- package/dist/antelope.test.js +1 -1
- package/dist/common.d.ts +48 -2
- package/dist/common.js +51 -5
- package/dist/common.js.map +1 -1
- package/dist/database.js +18 -3
- package/dist/database.js.map +1 -1
- package/dist/internal/bound-schema.d.ts +8 -0
- package/dist/internal/bound-schema.js +14 -0
- package/dist/internal/bound-schema.js.map +1 -0
- package/dist/model.d.ts +21 -8
- package/dist/model.js +34 -15
- package/dist/model.js.map +1 -1
- package/dist/modifiers/autodate.d.ts +2 -2
- package/dist/modifiers/autodate.js.map +1 -1
- package/dist/modifiers/common.d.ts +37 -20
- package/dist/modifiers/common.js +81 -68
- package/dist/modifiers/common.js.map +1 -1
- package/dist/modifiers/encryption.js +26 -14
- package/dist/modifiers/encryption.js.map +1 -1
- package/dist/modifiers/hash.d.ts +46 -4
- package/dist/modifiers/hash.js +175 -14
- package/dist/modifiers/hash.js.map +1 -1
- package/dist/modifiers/internal/kinds.d.ts +15 -1
- package/dist/modifiers/internal/kinds.js +35 -0
- package/dist/modifiers/internal/kinds.js.map +1 -1
- package/dist/modifiers/internal/records.d.ts +40 -5
- package/dist/modifiers/internal/records.js +70 -1
- package/dist/modifiers/internal/records.js.map +1 -1
- package/dist/modifiers/localization.js +12 -7
- package/dist/modifiers/localization.js.map +1 -1
- package/dist/relation.d.ts +5 -0
- package/dist/relation.js +11 -0
- package/dist/relation.js.map +1 -1
- package/dist/schema.js +5 -6
- package/dist/schema.js.map +1 -1
- package/dist/table.d.ts +3 -2
- package/dist/table.js +29 -13
- package/dist/table.js.map +1 -1
- package/dist/tests/cross_instance.test.js +5 -2
- package/dist/tests/cross_instance.test.js.map +1 -1
- package/dist/tests/database.test.js +42 -2
- package/dist/tests/database.test.js.map +1 -1
- package/dist/tests/hash_upgrade.test.d.ts +1 -0
- package/dist/tests/hash_upgrade.test.js +132 -0
- package/dist/tests/hash_upgrade.test.js.map +1 -0
- package/dist/tests/helpers/hash-rows.d.ts +40 -0
- package/dist/tests/helpers/hash-rows.js +41 -0
- package/dist/tests/helpers/hash-rows.js.map +1 -0
- package/dist/tests/helpers/other-instance.js.map +1 -1
- package/dist/tests/integration.test.js +15 -4
- package/dist/tests/integration.test.js.map +1 -1
- package/dist/tests/metadata_inheritance.test.d.ts +1 -0
- package/dist/tests/metadata_inheritance.test.js +212 -0
- package/dist/tests/metadata_inheritance.test.js.map +1 -0
- package/dist/tests/modifiers/encryption_date_marker.test.d.ts +1 -0
- package/dist/tests/modifiers/encryption_date_marker.test.js +78 -0
- package/dist/tests/modifiers/encryption_date_marker.test.js.map +1 -0
- package/dist/tests/modifiers/hash.test.js +295 -0
- package/dist/tests/modifiers/hash.test.js.map +1 -1
- package/dist/tests/modifiers/inherited_names.test.d.ts +1 -0
- package/dist/tests/modifiers/inherited_names.test.js +96 -0
- package/dist/tests/modifiers/inherited_names.test.js.map +1 -0
- package/dist/tests/own_key_lookups.test.d.ts +1 -0
- package/dist/tests/own_key_lookups.test.js +49 -0
- package/dist/tests/own_key_lookups.test.js.map +1 -0
- package/dist/tests/partial_update.test.d.ts +1 -0
- package/dist/tests/partial_update.test.js +55 -0
- package/dist/tests/partial_update.test.js.map +1 -0
- package/dist/tests/row_forms.test.d.ts +1 -0
- package/dist/tests/row_forms.test.js +59 -0
- package/dist/tests/row_forms.test.js.map +1 -0
- package/dist/tests/stored_metadata.test.d.ts +1 -0
- package/dist/tests/stored_metadata.test.js +91 -0
- package/dist/tests/stored_metadata.test.js.map +1 -0
- package/dist/tests/subclass_schema_binding.test.d.ts +1 -0
- package/dist/tests/subclass_schema_binding.test.js +115 -0
- package/dist/tests/subclass_schema_binding.test.js.map +1 -0
- package/dist/tests/table.test.js +16 -0
- package/dist/tests/table.test.js.map +1 -1
- package/docs/1.introduction.md +24 -20
- package/docs/2.table-definitions.md +63 -41
- package/docs/3.table-modifiers.md +128 -98
- package/docs/4.data-models.md +63 -52
- package/docs/5.parameter-decoration.md +28 -24
- package/docs/tsconfig.json +3 -0
- package/package.json +10 -9
- 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
|
|
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.
|
|
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,
|
|
43
|
-
|
|
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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
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
|
-
|
|
109
|
-
|
|
110
|
-
|
|
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":";;;;;;
|
|
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
|
|
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]
|
|
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]
|
|
241
|
-
|
|
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":";;;;;;;;;;;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,
|
|
1
|
+
{"version":3,"file":"database.test.js","sourceRoot":"","sources":["../../src/tests/database.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":";;;;;AA+DA,kDAmCC;AAlGD,8DAAiC;AACjC,qCAAuC;AACvC,0DAA6B;AAa7B,SAAS,YAAY,CACnB,SAAwB;IAExB,OAAO,CACL,kBAAkB,IAAI,SAAS;QAC/B,OAAO,SAAS,CAAC,gBAAgB,KAAK,UAAU;QAChD,kBAAkB,IAAI,SAAS;QAC/B,OAAO,SAAS,CAAC,gBAAgB,KAAK,UAAU,CACjD,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,SAAiB;IACnC,OAAO,MAAM,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,UAAU,CAAC;AACrE,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,CACL,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC,IAAI,KAAK,KAAK,IAAI,CAC7E,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,MAAc;IAC/B,MAAM,QAAQ,
|
|
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
|
|
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
|
|
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
|
|
225
|
-
(0, chai_1.expect)(dbData
|
|
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", () => {
|