@antelopejs/interface-database-decorators 0.1.9 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/README.md +1 -1
  2. package/dist/antelope.test.js +1 -1
  3. package/dist/common.d.ts +2 -1
  4. package/dist/common.js +5 -1
  5. package/dist/common.js.map +1 -1
  6. package/dist/database.js +1 -0
  7. package/dist/database.js.map +1 -1
  8. package/dist/model.js +29 -26
  9. package/dist/model.js.map +1 -1
  10. package/dist/modifiers/common.d.ts +24 -4
  11. package/dist/modifiers/common.js +92 -114
  12. package/dist/modifiers/common.js.map +1 -1
  13. package/dist/modifiers/encryption.js +14 -9
  14. package/dist/modifiers/encryption.js.map +1 -1
  15. package/dist/modifiers/internal/kinds.d.ts +12 -0
  16. package/dist/modifiers/internal/kinds.js +29 -0
  17. package/dist/modifiers/internal/kinds.js.map +1 -0
  18. package/dist/modifiers/internal/records.d.ts +29 -0
  19. package/dist/modifiers/internal/records.js +42 -0
  20. package/dist/modifiers/internal/records.js.map +1 -0
  21. package/dist/modifiers/localization.d.ts +19 -1
  22. package/dist/modifiers/localization.js +41 -6
  23. package/dist/modifiers/localization.js.map +1 -1
  24. package/dist/schema.js +1 -2
  25. package/dist/schema.js.map +1 -1
  26. package/dist/table.d.ts +8 -0
  27. package/dist/table.js +21 -6
  28. package/dist/table.js.map +1 -1
  29. package/dist/tests/codec_helpers.d.ts +6 -2
  30. package/dist/tests/codec_helpers.js +18 -14
  31. package/dist/tests/codec_helpers.js.map +1 -1
  32. package/dist/tests/common.test.js +38 -46
  33. package/dist/tests/common.test.js.map +1 -1
  34. package/dist/tests/cross_instance.test.js +27 -2
  35. package/dist/tests/cross_instance.test.js.map +1 -1
  36. package/dist/tests/database.test.js +247 -226
  37. package/dist/tests/database.test.js.map +1 -1
  38. package/dist/tests/helpers/other-instance.d.ts +1 -1
  39. package/dist/tests/helpers/other-instance.js +41 -9
  40. package/dist/tests/helpers/other-instance.js.map +1 -1
  41. package/dist/tests/integration.test.js +485 -469
  42. package/dist/tests/integration.test.js.map +1 -1
  43. package/dist/tests/model.test.js +293 -308
  44. package/dist/tests/model.test.js.map +1 -1
  45. package/dist/tests/modifiers/autodate.test.js +80 -86
  46. package/dist/tests/modifiers/autodate.test.js.map +1 -1
  47. package/dist/tests/modifiers/common.test.js +181 -195
  48. package/dist/tests/modifiers/common.test.js.map +1 -1
  49. package/dist/tests/modifiers/encryption.test.js +149 -155
  50. package/dist/tests/modifiers/encryption.test.js.map +1 -1
  51. package/dist/tests/modifiers/hash.test.js +91 -99
  52. package/dist/tests/modifiers/hash.test.js.map +1 -1
  53. package/dist/tests/modifiers/localization.test.js +186 -159
  54. package/dist/tests/modifiers/localization.test.js.map +1 -1
  55. package/dist/tests/relation.test.js +92 -97
  56. package/dist/tests/relation.test.js.map +1 -1
  57. package/dist/tests/schema.test.js +101 -106
  58. package/dist/tests/schema.test.js.map +1 -1
  59. package/dist/tests/table.test.js +124 -132
  60. package/dist/tests/table.test.js.map +1 -1
  61. package/docs/1.introduction.md +56 -2
  62. package/docs/2.table-definitions.md +15 -0
  63. package/docs/3.table-modifiers.md +10 -4
  64. package/docs/4.data-models.md +12 -0
  65. package/docs/5.parameter-decoration.md +4 -0
  66. package/docs/assets/model-conversion.svg +21 -0
  67. package/package.json +16 -5
  68. package/skills/database-decorators-interface/SKILL.md +4 -0
  69. package/skills/database-decorators-interface/cases.json +71 -0
@@ -11,242 +11,263 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  const chai_1 = require("chai");
13
13
  const interface_database_1 = require("@antelopejs/interface-database");
14
- const schema_1 = require("@antelopejs/interface-database-decorators/schema");
15
- const database_1 = require("@antelopejs/interface-database-decorators/database");
16
- const model_1 = require("@antelopejs/interface-database-decorators/model");
17
- const table_1 = require("@antelopejs/interface-database-decorators/table");
14
+ const schema_1 = require("../schema");
15
+ const database_1 = require("../database");
16
+ const model_1 = require("../model");
17
+ const table_1 = require("../table");
18
18
  const codec_helpers_1 = require("./codec_helpers");
19
19
  describe("Database - initialization", () => {
20
- it("creates a schema", async () => CreateSchemaTest());
21
- it("creates tables with default primary key", async () => CreateTablesWithDefaultPrimaryKeyTest());
22
- it("creates tables with indexes", async () => CreateTablesWithIndexesTest());
23
- it("creates tables with grouped indexes", async () => CreateTablesWithGroupedIndexesTest());
24
- it("marks a single-field index as cross-instance", async () => MarksSingleFieldIndexCrossInstanceTest());
25
- it("marks a group index as cross-instance when one member sets it", async () => MarksGroupIndexCrossInstanceTest());
26
- it("leaves index definitions unchanged without crossInstance", async () => LeavesIndexDefinitionsUnchangedTest());
27
- it("creates tables with fixture data", async () => CreateTablesWithFixtureDataTest());
28
- it("handles multiple tables", async () => HandleMultipleTablesTest());
29
- it("binds a table class registered after RegisterSchema ran to that schema (module hot reload)", async () => BindsLateRegisteredTableTest());
30
- it("populates TableDefinition.fields from @Field declarations", () => PopulatesTableDefinitionFieldsTest());
20
+ it("creates a schema", async () => {
21
+ let _TestTable = class _TestTable extends table_1.Table {
22
+ };
23
+ _TestTable = __decorate([
24
+ (0, schema_1.RegisterTable)("test_table", "test-new-schema")
25
+ ], _TestTable);
26
+ await (0, database_1.RegisterSchema)("test-new-schema");
27
+ const schema = interface_database_1.Schema.get("test-new-schema");
28
+ (0, chai_1.expect)(schema).to.not.equal(undefined);
29
+ });
30
+ it("creates tables with default primary key", async () => {
31
+ let _TestTable = class _TestTable extends table_1.Table {
32
+ };
33
+ _TestTable = __decorate([
34
+ (0, schema_1.RegisterTable)("pk_table", "test-pk-schema")
35
+ ], _TestTable);
36
+ await (0, database_1.RegisterSchema)("test-pk-schema");
37
+ const schema = interface_database_1.Schema.get("test-pk-schema");
38
+ (0, chai_1.expect)(schema).to.not.equal(undefined);
39
+ });
40
+ it("creates tables with indexes", async () => {
41
+ let _TestTable = class _TestTable extends table_1.Table {
42
+ };
43
+ __decorate([
44
+ (0, table_1.Index)(),
45
+ __metadata("design:type", String)
46
+ ], _TestTable.prototype, "name", void 0);
47
+ __decorate([
48
+ (0, table_1.Index)(),
49
+ __metadata("design:type", String)
50
+ ], _TestTable.prototype, "email", void 0);
51
+ _TestTable = __decorate([
52
+ (0, schema_1.RegisterTable)("idx_table", "test-idx-schema")
53
+ ], _TestTable);
54
+ await (0, database_1.RegisterSchema)("test-idx-schema");
55
+ const schema = interface_database_1.Schema.get("test-idx-schema");
56
+ (0, chai_1.expect)(schema).to.not.equal(undefined);
57
+ });
58
+ it("creates tables with grouped indexes", async () => {
59
+ let _TestTable = class _TestTable extends table_1.Table {
60
+ };
61
+ __decorate([
62
+ (0, table_1.Index)({ group: "user_search" }),
63
+ __metadata("design:type", String)
64
+ ], _TestTable.prototype, "name", void 0);
65
+ __decorate([
66
+ (0, table_1.Index)({ group: "user_search" }),
67
+ __metadata("design:type", String)
68
+ ], _TestTable.prototype, "email", void 0);
69
+ __decorate([
70
+ (0, table_1.Index)({ group: "age_range" }),
71
+ __metadata("design:type", Number)
72
+ ], _TestTable.prototype, "age", void 0);
73
+ _TestTable = __decorate([
74
+ (0, schema_1.RegisterTable)("grp_table", "test-grp-schema")
75
+ ], _TestTable);
76
+ await (0, database_1.RegisterSchema)("test-grp-schema");
77
+ const schema = interface_database_1.Schema.get("test-grp-schema");
78
+ (0, chai_1.expect)(schema).to.not.equal(undefined);
79
+ });
80
+ it("marks a single-field index as cross-instance", async () => {
81
+ let _TestTable = class _TestTable extends table_1.Table {
82
+ };
83
+ __decorate([
84
+ (0, table_1.Index)({ crossInstance: true }),
85
+ __metadata("design:type", String)
86
+ ], _TestTable.prototype, "email", void 0);
87
+ __decorate([
88
+ (0, table_1.Index)(),
89
+ __metadata("design:type", String)
90
+ ], _TestTable.prototype, "name", void 0);
91
+ _TestTable = __decorate([
92
+ (0, schema_1.RegisterTable)("cross_single", "test-cross-single-schema")
93
+ ], _TestTable);
94
+ await (0, database_1.RegisterSchema)("test-cross-single-schema");
95
+ const indexes = getIndexDefinitions("test-cross-single-schema", "cross_single");
96
+ (0, chai_1.expect)(indexes).to.deep.equal({
97
+ email: { fields: undefined, crossInstance: true },
98
+ name: { fields: undefined },
99
+ });
100
+ });
101
+ it("marks a group index as cross-instance when one member sets it", async () => {
102
+ let _TestTable = class _TestTable extends table_1.Table {
103
+ };
104
+ __decorate([
105
+ (0, table_1.Index)({ group: "user_search" }),
106
+ __metadata("design:type", String)
107
+ ], _TestTable.prototype, "name", void 0);
108
+ __decorate([
109
+ (0, table_1.Index)({ group: "user_search", crossInstance: true }),
110
+ __metadata("design:type", String)
111
+ ], _TestTable.prototype, "email", void 0);
112
+ __decorate([
113
+ (0, table_1.Index)({ group: "age_range" }),
114
+ __metadata("design:type", Number)
115
+ ], _TestTable.prototype, "age", void 0);
116
+ _TestTable = __decorate([
117
+ (0, schema_1.RegisterTable)("cross_group", "test-cross-group-schema")
118
+ ], _TestTable);
119
+ await (0, database_1.RegisterSchema)("test-cross-group-schema");
120
+ const indexes = getIndexDefinitions("test-cross-group-schema", "cross_group");
121
+ (0, chai_1.expect)(indexes).to.deep.equal({
122
+ user_search: { fields: ["name", "email"], crossInstance: true },
123
+ age_range: { fields: ["age"] },
124
+ });
125
+ });
126
+ it("marks a group index as unique when one member sets it", async () => {
127
+ let _TestTable = class _TestTable extends table_1.Table {
128
+ };
129
+ __decorate([
130
+ (0, table_1.Index)({ unique: true }),
131
+ __metadata("design:type", String)
132
+ ], _TestTable.prototype, "slug", void 0);
133
+ __decorate([
134
+ (0, table_1.Index)({ group: "full_name" }),
135
+ __metadata("design:type", String)
136
+ ], _TestTable.prototype, "lastName", void 0);
137
+ __decorate([
138
+ (0, table_1.Index)({ group: "full_name", unique: true }),
139
+ __metadata("design:type", String)
140
+ ], _TestTable.prototype, "firstName", void 0);
141
+ __decorate([
142
+ (0, table_1.Index)(),
143
+ __metadata("design:type", Number)
144
+ ], _TestTable.prototype, "age", void 0);
145
+ _TestTable = __decorate([
146
+ (0, schema_1.RegisterTable)("unique_group", "test-unique-group-schema")
147
+ ], _TestTable);
148
+ await (0, database_1.RegisterSchema)("test-unique-group-schema");
149
+ const indexes = getIndexDefinitions("test-unique-group-schema", "unique_group");
150
+ (0, chai_1.expect)(indexes).to.deep.equal({
151
+ slug: { fields: undefined, unique: true },
152
+ full_name: { fields: ["lastName", "firstName"], unique: true },
153
+ age: { fields: undefined },
154
+ });
155
+ });
31
156
  });
32
- async function CreateSchemaTest() {
33
- let _TestTable = class _TestTable extends table_1.Table {
34
- };
35
- _TestTable = __decorate([
36
- (0, schema_1.RegisterTable)("test_table", "test-new-schema")
37
- ], _TestTable);
38
- await (0, database_1.RegisterSchema)("test-new-schema");
39
- const schema = interface_database_1.Schema.get("test-new-schema");
40
- (0, chai_1.expect)(schema).to.not.equal(undefined);
41
- }
42
- async function CreateTablesWithDefaultPrimaryKeyTest() {
43
- let _TestTable = class _TestTable extends table_1.Table {
44
- };
45
- _TestTable = __decorate([
46
- (0, schema_1.RegisterTable)("pk_table", "test-pk-schema")
47
- ], _TestTable);
48
- await (0, database_1.RegisterSchema)("test-pk-schema");
49
- const schema = interface_database_1.Schema.get("test-pk-schema");
50
- (0, chai_1.expect)(schema).to.not.equal(undefined);
51
- }
52
- async function CreateTablesWithIndexesTest() {
53
- let _TestTable = class _TestTable extends table_1.Table {
54
- };
55
- __decorate([
56
- (0, table_1.Index)(),
57
- __metadata("design:type", String)
58
- ], _TestTable.prototype, "name", void 0);
59
- __decorate([
60
- (0, table_1.Index)(),
61
- __metadata("design:type", String)
62
- ], _TestTable.prototype, "email", void 0);
63
- _TestTable = __decorate([
64
- (0, schema_1.RegisterTable)("idx_table", "test-idx-schema")
65
- ], _TestTable);
66
- await (0, database_1.RegisterSchema)("test-idx-schema");
67
- const schema = interface_database_1.Schema.get("test-idx-schema");
68
- (0, chai_1.expect)(schema).to.not.equal(undefined);
69
- }
70
- async function CreateTablesWithGroupedIndexesTest() {
71
- let _TestTable = class _TestTable extends table_1.Table {
72
- };
73
- __decorate([
74
- (0, table_1.Index)({ group: "user_search" }),
75
- __metadata("design:type", String)
76
- ], _TestTable.prototype, "name", void 0);
77
- __decorate([
78
- (0, table_1.Index)({ group: "user_search" }),
79
- __metadata("design:type", String)
80
- ], _TestTable.prototype, "email", void 0);
81
- __decorate([
82
- (0, table_1.Index)({ group: "age_range" }),
83
- __metadata("design:type", Number)
84
- ], _TestTable.prototype, "age", void 0);
85
- _TestTable = __decorate([
86
- (0, schema_1.RegisterTable)("grp_table", "test-grp-schema")
87
- ], _TestTable);
88
- await (0, database_1.RegisterSchema)("test-grp-schema");
89
- const schema = interface_database_1.Schema.get("test-grp-schema");
90
- (0, chai_1.expect)(schema).to.not.equal(undefined);
91
- }
92
- async function MarksSingleFieldIndexCrossInstanceTest() {
93
- let _TestTable = class _TestTable extends table_1.Table {
94
- };
95
- __decorate([
96
- (0, table_1.Index)({ crossInstance: true }),
97
- __metadata("design:type", String)
98
- ], _TestTable.prototype, "email", void 0);
99
- __decorate([
100
- (0, table_1.Index)(),
101
- __metadata("design:type", String)
102
- ], _TestTable.prototype, "name", void 0);
103
- _TestTable = __decorate([
104
- (0, schema_1.RegisterTable)("cross_single", "test-cross-single-schema")
105
- ], _TestTable);
106
- await (0, database_1.RegisterSchema)("test-cross-single-schema");
107
- const indexes = getIndexDefinitions("test-cross-single-schema", "cross_single");
108
- (0, chai_1.expect)(indexes).to.deep.equal({
109
- email: { fields: undefined, crossInstance: true },
110
- name: { fields: undefined },
157
+ describe("Database - initialization", () => {
158
+ it("leaves index definitions unchanged without crossInstance", async () => {
159
+ let _TestTable = class _TestTable extends table_1.Table {
160
+ };
161
+ __decorate([
162
+ (0, table_1.Index)(),
163
+ __metadata("design:type", String)
164
+ ], _TestTable.prototype, "name", void 0);
165
+ __decorate([
166
+ (0, table_1.Index)({ group: "user_search" }),
167
+ __metadata("design:type", String)
168
+ ], _TestTable.prototype, "email", void 0);
169
+ _TestTable = __decorate([
170
+ (0, schema_1.RegisterTable)("cross_none", "test-cross-none-schema")
171
+ ], _TestTable);
172
+ await (0, database_1.RegisterSchema)("test-cross-none-schema");
173
+ const indexes = getIndexDefinitions("test-cross-none-schema", "cross_none");
174
+ (0, chai_1.expect)(indexes).to.deep.equal({
175
+ name: { fields: undefined },
176
+ user_search: { fields: ["email"] },
177
+ });
178
+ const hasCrossInstanceKey = Object.values(indexes).some((index) => "crossInstance" in index);
179
+ (0, chai_1.expect)(hasCrossInstanceKey).to.equal(false);
111
180
  });
112
- }
113
- async function MarksGroupIndexCrossInstanceTest() {
114
- let _TestTable = class _TestTable extends table_1.Table {
115
- };
116
- __decorate([
117
- (0, table_1.Index)({ group: "user_search" }),
118
- __metadata("design:type", String)
119
- ], _TestTable.prototype, "name", void 0);
120
- __decorate([
121
- (0, table_1.Index)({ group: "user_search", crossInstance: true }),
122
- __metadata("design:type", String)
123
- ], _TestTable.prototype, "email", void 0);
124
- __decorate([
125
- (0, table_1.Index)({ group: "age_range" }),
126
- __metadata("design:type", Number)
127
- ], _TestTable.prototype, "age", void 0);
128
- _TestTable = __decorate([
129
- (0, schema_1.RegisterTable)("cross_group", "test-cross-group-schema")
130
- ], _TestTable);
131
- await (0, database_1.RegisterSchema)("test-cross-group-schema");
132
- const indexes = getIndexDefinitions("test-cross-group-schema", "cross_group");
133
- (0, chai_1.expect)(indexes).to.deep.equal({
134
- user_search: { fields: ["name", "email"], crossInstance: true },
135
- age_range: { fields: ["age"] },
181
+ it("creates tables with fixture data", async () => {
182
+ const testData = [
183
+ { id: "1", name: "Test User 1" },
184
+ { id: "2", name: "Test User 2" },
185
+ ];
186
+ let _TestTable = class _TestTable extends table_1.Table {
187
+ };
188
+ _TestTable = __decorate([
189
+ (0, table_1.Fixture)(() => testData),
190
+ (0, schema_1.RegisterTable)("fixture_table", "test-fixture-schema")
191
+ ], _TestTable);
192
+ await (0, database_1.RegisterSchema)("test-fixture-schema");
193
+ const schema = interface_database_1.Schema.get("test-fixture-schema");
194
+ if (!schema)
195
+ throw new Error("Schema not found");
196
+ const result = await schema.instance().table("fixture_table");
197
+ for (const val of result) {
198
+ delete val._id;
199
+ delete val._instance;
200
+ }
201
+ const sortById = (a, b) => a.id.localeCompare(b.id);
202
+ (0, chai_1.expect)(result.sort(sortById)).to.deep.equal(testData.sort(sortById));
136
203
  });
137
- }
138
- async function LeavesIndexDefinitionsUnchangedTest() {
139
- let _TestTable = class _TestTable extends table_1.Table {
140
- };
141
- __decorate([
142
- (0, table_1.Index)(),
143
- __metadata("design:type", String)
144
- ], _TestTable.prototype, "name", void 0);
145
- __decorate([
146
- (0, table_1.Index)({ group: "user_search" }),
147
- __metadata("design:type", String)
148
- ], _TestTable.prototype, "email", void 0);
149
- _TestTable = __decorate([
150
- (0, schema_1.RegisterTable)("cross_none", "test-cross-none-schema")
151
- ], _TestTable);
152
- await (0, database_1.RegisterSchema)("test-cross-none-schema");
153
- const indexes = getIndexDefinitions("test-cross-none-schema", "cross_none");
154
- (0, chai_1.expect)(indexes).to.deep.equal({
155
- name: { fields: undefined },
156
- user_search: { fields: ["email"] },
204
+ it("handles multiple tables", async () => {
205
+ let _UserTable = class _UserTable extends table_1.Table {
206
+ };
207
+ __decorate([
208
+ (0, table_1.Index)(),
209
+ __metadata("design:type", String)
210
+ ], _UserTable.prototype, "email", void 0);
211
+ _UserTable = __decorate([
212
+ (0, schema_1.RegisterTable)("users", "test-multi-table-schema")
213
+ ], _UserTable);
214
+ let _ProductTable = class _ProductTable extends table_1.Table {
215
+ };
216
+ __decorate([
217
+ (0, table_1.Index)(),
218
+ __metadata("design:type", String)
219
+ ], _ProductTable.prototype, "name", void 0);
220
+ _ProductTable = __decorate([
221
+ (0, schema_1.RegisterTable)("products", "test-multi-table-schema")
222
+ ], _ProductTable);
223
+ await (0, database_1.RegisterSchema)("test-multi-table-schema");
224
+ const schema = interface_database_1.Schema.get("test-multi-table-schema");
225
+ (0, chai_1.expect)(schema).to.not.equal(undefined);
157
226
  });
158
- const hasCrossInstanceKey = Object.values(indexes).some((index) => "crossInstance" in index);
159
- (0, chai_1.expect)(hasCrossInstanceKey).to.equal(false);
160
- }
227
+ it("binds a table class registered after RegisterSchema ran to that schema (module hot reload)", async () => {
228
+ let _Declared = class _Declared extends table_1.Table {
229
+ };
230
+ _Declared = __decorate([
231
+ (0, schema_1.RegisterTable)("late_items", "test-late-schema")
232
+ ], _Declared);
233
+ await (0, database_1.RegisterSchema)("test-late-schema");
234
+ let Reloaded = class Reloaded extends table_1.Table {
235
+ };
236
+ Reloaded = __decorate([
237
+ (0, schema_1.RegisterTable)("late_items", "test-late-schema")
238
+ ], Reloaded);
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");
242
+ });
243
+ it("populates TableDefinition.fields from @Field declarations", async () => {
244
+ let _Order = class _Order extends table_1.Table {
245
+ };
246
+ __decorate([
247
+ (0, table_1.Field)("string"),
248
+ __metadata("design:type", String)
249
+ ], _Order.prototype, "status", void 0);
250
+ __decorate([
251
+ (0, table_1.Field)((0, codec_helpers_1.asFieldType)(codec_helpers_1.numberCodec)),
252
+ __metadata("design:type", Number)
253
+ ], _Order.prototype, "total", void 0);
254
+ _Order = __decorate([
255
+ (0, schema_1.RegisterTable)("orders", "test-fields-schema")
256
+ ], _Order);
257
+ await (0, database_1.RegisterSchema)("test-fields-schema");
258
+ const schema = interface_database_1.Schema.get("test-fields-schema");
259
+ if (!schema)
260
+ throw new Error("Schema not found");
261
+ const fields = schema.definition.orders.fields;
262
+ (0, chai_1.expect)(fields.status).to.equal("string");
263
+ (0, chai_1.expect)(fields.total).to.equal(codec_helpers_1.numberCodec);
264
+ (0, chai_1.expect)("untyped" in fields).to.equal(false);
265
+ });
266
+ });
161
267
  function getIndexDefinitions(schemaId, tableName) {
162
268
  const schema = interface_database_1.Schema.get(schemaId);
163
269
  if (!schema)
164
270
  throw new Error("Schema not found");
165
271
  return schema.definition[tableName].indexes;
166
272
  }
167
- async function CreateTablesWithFixtureDataTest() {
168
- const testData = [
169
- { id: "1", name: "Test User 1" },
170
- { id: "2", name: "Test User 2" },
171
- ];
172
- let _TestTable = class _TestTable extends table_1.Table {
173
- };
174
- _TestTable = __decorate([
175
- (0, table_1.Fixture)(() => testData),
176
- (0, schema_1.RegisterTable)("fixture_table", "test-fixture-schema")
177
- ], _TestTable);
178
- await (0, database_1.RegisterSchema)("test-fixture-schema");
179
- const schema = interface_database_1.Schema.get("test-fixture-schema");
180
- if (!schema)
181
- throw new Error("Schema not found");
182
- const result = await schema.instance().table("fixture_table");
183
- for (const val of result) {
184
- delete val._id;
185
- delete val._instance;
186
- }
187
- const sortById = (a, b) => a.id.localeCompare(b.id);
188
- (0, chai_1.expect)(result.sort(sortById)).to.deep.equal(testData.sort(sortById));
189
- }
190
- async function PopulatesTableDefinitionFieldsTest() {
191
- let _Order = class _Order extends table_1.Table {
192
- };
193
- __decorate([
194
- (0, table_1.Field)("string"),
195
- __metadata("design:type", String)
196
- ], _Order.prototype, "status", void 0);
197
- __decorate([
198
- (0, table_1.Field)((0, codec_helpers_1.asFieldType)(codec_helpers_1.numberCodec)),
199
- __metadata("design:type", Number)
200
- ], _Order.prototype, "total", void 0);
201
- _Order = __decorate([
202
- (0, schema_1.RegisterTable)("orders", "test-fields-schema")
203
- ], _Order);
204
- await (0, database_1.RegisterSchema)("test-fields-schema");
205
- const schema = interface_database_1.Schema.get("test-fields-schema");
206
- if (!schema)
207
- throw new Error("Schema not found");
208
- const fields = schema.definition.orders.fields;
209
- (0, chai_1.expect)(fields.status).to.equal("string");
210
- (0, chai_1.expect)(fields.total).to.equal(codec_helpers_1.numberCodec);
211
- (0, chai_1.expect)("untyped" in fields).to.equal(false);
212
- }
213
- async function HandleMultipleTablesTest() {
214
- let _UserTable = class _UserTable extends table_1.Table {
215
- };
216
- __decorate([
217
- (0, table_1.Index)(),
218
- __metadata("design:type", String)
219
- ], _UserTable.prototype, "email", void 0);
220
- _UserTable = __decorate([
221
- (0, schema_1.RegisterTable)("users", "test-multi-table-schema")
222
- ], _UserTable);
223
- let _ProductTable = class _ProductTable extends table_1.Table {
224
- };
225
- __decorate([
226
- (0, table_1.Index)(),
227
- __metadata("design:type", String)
228
- ], _ProductTable.prototype, "name", void 0);
229
- _ProductTable = __decorate([
230
- (0, schema_1.RegisterTable)("products", "test-multi-table-schema")
231
- ], _ProductTable);
232
- await (0, database_1.RegisterSchema)("test-multi-table-schema");
233
- const schema = interface_database_1.Schema.get("test-multi-table-schema");
234
- (0, chai_1.expect)(schema).to.not.equal(undefined);
235
- }
236
- async function BindsLateRegisteredTableTest() {
237
- let _Declared = class _Declared extends table_1.Table {
238
- };
239
- _Declared = __decorate([
240
- (0, schema_1.RegisterTable)("late_items", "test-late-schema")
241
- ], _Declared);
242
- await (0, database_1.RegisterSchema)("test-late-schema");
243
- let Reloaded = class Reloaded extends table_1.Table {
244
- };
245
- Reloaded = __decorate([
246
- (0, schema_1.RegisterTable)("late_items", "test-late-schema")
247
- ], Reloaded);
248
- const model = (0, model_1.GetModel)((0, model_1.BasicDataModel)(Reloaded), "late-instance");
249
- (0, chai_1.expect)(model.database.build()[0].options.id).to.equal("test-late-schema");
250
- (0, chai_1.expect)(Reloaded.table().build()[0].options.id).to.equal("test-late-schema");
251
- }
252
273
  //# 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":"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"}
@@ -1,4 +1,4 @@
1
- type ModuleRequire = (request: string) => unknown;
1
+ type ModuleRequire = (request: string) => object;
2
2
  /**
3
3
  * Evaluates built packages a second time, the way the core gives each
4
4
  * provider binding its own copy of an interface: every file under `folders`
@@ -7,7 +7,31 @@ exports.CreateOtherInstance = CreateOtherInstance;
7
7
  const node_module_1 = __importDefault(require("node:module"));
8
8
  const node_fs_1 = require("node:fs");
9
9
  const node_path_1 = __importDefault(require("node:path"));
10
- const internals = node_module_1.default;
10
+ function hasInternals(candidate) {
11
+ return ("_resolveFilename" in candidate &&
12
+ typeof candidate._resolveFilename === "function" &&
13
+ "_nodeModulePaths" in candidate &&
14
+ typeof candidate._nodeModulePaths === "function");
15
+ }
16
+ function isLoadable(candidate) {
17
+ return "load" in candidate && typeof candidate.load === "function";
18
+ }
19
+ function isModuleExports(value) {
20
+ return ((typeof value === "object" || typeof value === "function") && value !== null);
21
+ }
22
+ function exportsOf(loaded) {
23
+ const exported = loaded.exports;
24
+ if (!isModuleExports(exported)) {
25
+ throw new Error(`${loaded.filename} does not export an object or a function`);
26
+ }
27
+ return exported;
28
+ }
29
+ function resolveInternals() {
30
+ if (!hasInternals(node_module_1.default)) {
31
+ throw new Error("node:module does not expose its resolution internals");
32
+ }
33
+ return node_module_1.default;
34
+ }
11
35
  /**
12
36
  * Evaluates built packages a second time, the way the core gives each
13
37
  * provider binding its own copy of an interface: every file under `folders`
@@ -24,22 +48,30 @@ function CreateOtherInstance(folders) {
24
48
  const load = (filename, parent) => {
25
49
  const cached = modules.get(filename);
26
50
  if (cached) {
27
- return cached.exports;
51
+ return exportsOf(cached);
28
52
  }
29
53
  const loaded = new node_module_1.default(filename, parent);
30
54
  loaded.filename = filename;
31
- loaded.paths = internals._nodeModulePaths(node_path_1.default.dirname(filename));
32
- loaded.require = ((request) => requireFrom(loaded, request));
55
+ loaded.paths = resolveInternals()._nodeModulePaths(node_path_1.default.dirname(filename));
56
+ loaded.require = (request) => requireFrom(loaded, request);
33
57
  modules.set(filename, loaded);
58
+ if (!isLoadable(loaded)) {
59
+ throw new Error("node:module instances cannot load a file directly");
60
+ }
34
61
  loaded.load(filename);
35
- return loaded.exports;
62
+ return exportsOf(loaded);
36
63
  };
37
64
  const requireFrom = (parent, request) => {
38
- const filename = internals._resolveFilename(request, parent);
65
+ const filename = resolveInternals()._resolveFilename(request, parent);
39
66
  const isOwned = owned.some((root) => filename.startsWith(root));
40
- return isOwned
41
- ? load(filename, parent)
42
- : node_module_1.default.prototype.require.call(parent, request);
67
+ if (isOwned) {
68
+ return load(filename, parent);
69
+ }
70
+ const required = node_module_1.default.prototype.require.call(parent, request);
71
+ if (!isModuleExports(required)) {
72
+ throw new Error(`${request} does not export an object or a function`);
73
+ }
74
+ return required;
43
75
  };
44
76
  return (request) => requireFrom(module, request);
45
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"other-instance.js","sourceRoot":"","sources":["../../../src/tests/helpers/other-instance.ts"],"names":[],"mappings":";;;;;AA2BA,kDA4BC;AAvDD,8DAAiC;AACjC,qCAAuC;AACvC,0DAA6B;AAa7B,MAAM,SAAS,GAAG,qBAAoC,CAAC;AAEvD;;;;;;;;;GASG;AACH,SAAgB,mBAAmB,CAAC,OAAiB;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,sBAAY,EAAC,MAAM,CAAC,GAAG,mBAAI,CAAC,GAAG,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE1C,MAAM,IAAI,GAAG,CAAC,QAAgB,EAAE,MAAc,EAAW,EAAE;QACzD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,qBAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC3B,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,gBAAgB,CAAC,mBAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClE,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,OAAe,EAAE,EAAE,CACpC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAsB,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7B,MAAoC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,OAAe,EAAW,EAAE;QAC/D,MAAM,QAAQ,GAAG,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,OAAO,OAAO;YACZ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;YACxB,CAAC,CAAC,qBAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC,CAAC;IAEF,OAAO,CAAC,OAAe,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC"}
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,GAAG,MAAM,CAAC,OAAO,CAAC;IAChC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,GAAG,MAAM,CAAC,QAAQ,0CAA0C,CAC7D,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,CAAC,YAAY,CAAC,qBAAM,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,qBAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,mBAAmB,CAAC,OAAiB;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,sBAAY,EAAC,MAAM,CAAC,GAAG,mBAAI,CAAC,GAAG,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE1C,MAAM,IAAI,GAAG,CAAC,QAAgB,EAAE,MAAc,EAAU,EAAE;QACxD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,qBAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC3B,MAAM,CAAC,KAAK,GAAG,gBAAgB,EAAE,CAAC,gBAAgB,CAAC,mBAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3E,MAAM,CAAC,OAAO,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtB,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,OAAe,EAAU,EAAE;QAC9D,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACtE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,QAAQ,GAAG,qBAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,0CAA0C,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,OAAe,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC"}