@antelopejs/interface-database-decorators 0.1.10 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -7
- package/dist/common.js.map +1 -1
- package/dist/database.js +18 -2
- package/dist/database.js.map +1 -1
- package/dist/model.js +48 -29
- package/dist/model.js.map +1 -1
- package/dist/modifiers/common.d.ts +24 -4
- package/dist/modifiers/common.js +104 -130
- package/dist/modifiers/common.js.map +1 -1
- package/dist/modifiers/encryption.js +14 -9
- package/dist/modifiers/encryption.js.map +1 -1
- package/dist/modifiers/hash.d.ts +46 -4
- package/dist/modifiers/hash.js +172 -14
- package/dist/modifiers/hash.js.map +1 -1
- package/dist/modifiers/internal/kinds.d.ts +13 -0
- package/dist/modifiers/internal/kinds.js +33 -0
- package/dist/modifiers/internal/kinds.js.map +1 -0
- package/dist/modifiers/internal/records.d.ts +31 -0
- package/dist/modifiers/internal/records.js +56 -0
- package/dist/modifiers/internal/records.js.map +1 -0
- package/dist/modifiers/localization.js +4 -2
- package/dist/modifiers/localization.js.map +1 -1
- package/dist/schema.js +1 -2
- package/dist/schema.js.map +1 -1
- package/dist/table.js +21 -6
- package/dist/table.js.map +1 -1
- package/dist/tests/codec_helpers.d.ts +6 -2
- package/dist/tests/codec_helpers.js +18 -14
- package/dist/tests/codec_helpers.js.map +1 -1
- package/dist/tests/common.test.js +38 -46
- package/dist/tests/common.test.js.map +1 -1
- package/dist/tests/cross_instance.test.js +27 -2
- package/dist/tests/cross_instance.test.js.map +1 -1
- package/dist/tests/database.test.js +278 -256
- 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.d.ts +1 -1
- package/dist/tests/helpers/other-instance.js +41 -9
- package/dist/tests/helpers/other-instance.js.map +1 -1
- package/dist/tests/integration.test.js +485 -485
- package/dist/tests/integration.test.js.map +1 -1
- package/dist/tests/model.test.js +293 -308
- package/dist/tests/model.test.js.map +1 -1
- package/dist/tests/modifiers/autodate.test.js +80 -86
- package/dist/tests/modifiers/autodate.test.js.map +1 -1
- package/dist/tests/modifiers/common.test.js +181 -195
- package/dist/tests/modifiers/common.test.js.map +1 -1
- package/dist/tests/modifiers/encryption.test.js +149 -155
- package/dist/tests/modifiers/encryption.test.js.map +1 -1
- package/dist/tests/modifiers/hash.test.js +386 -99
- package/dist/tests/modifiers/hash.test.js.map +1 -1
- package/dist/tests/modifiers/localization.test.js +186 -196
- package/dist/tests/modifiers/localization.test.js.map +1 -1
- 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/relation.test.js +92 -97
- package/dist/tests/relation.test.js.map +1 -1
- package/dist/tests/schema.test.js +101 -106
- package/dist/tests/schema.test.js.map +1 -1
- package/dist/tests/table.test.js +124 -132
- package/dist/tests/table.test.js.map +1 -1
- package/docs/3.table-modifiers.md +36 -15
- package/package.json +14 -3
- package/skills/database-decorators-interface/SKILL.md +4 -2
- package/skills/database-decorators-interface/cases.json +71 -0
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<div align="center">
|
|
4
4
|
<a href="https://www.npmjs.com/package/@antelopejs/interface-database-decorators"><img alt="npm" src="https://img.shields.io/npm/v/@antelopejs/interface-database-decorators?style=for-the-badge&labelColor=000000&color=000000"></a>
|
|
5
5
|
<a href="./LICENSE"><img alt="License" src="https://img.shields.io/npm/l/@antelopejs/interface-database-decorators?style=for-the-badge&labelColor=000000&color=000000"></a>
|
|
6
|
-
<a href="https://discord.gg/
|
|
6
|
+
<a href="https://discord.gg/g4pFt6eXqu"><img alt="Discord" src="https://img.shields.io/badge/Discord-18181B?logo=discord&style=for-the-badge&color=000000"></a>
|
|
7
7
|
<a href="https://interfaces.antelopejs.com/docs/database-decorators"><img alt="Docs" src="https://img.shields.io/badge/Docs-18181B?style=for-the-badge&color=000000"></a>
|
|
8
8
|
</div>
|
|
9
9
|
|
|
@@ -90,13 +90,15 @@ export async function start() {
|
|
|
90
90
|
|
|
91
91
|
Requires AntelopeJS core `1.x` and the following peer dependencies:
|
|
92
92
|
|
|
93
|
-
<!-- docs-compat:
|
|
93
|
+
<!-- antelopejs-docs-compat:start -->
|
|
94
94
|
|
|
95
|
-
| Package |
|
|
96
|
-
| -------------------------------- | ----------------- |
|
|
97
|
-
| `@antelopejs/interface-api` | `>=0.0.15 <1.0.0` |
|
|
98
|
-
| `@antelopejs/interface-core` | `>=0.2.4 <1.0.0` |
|
|
99
|
-
| `@antelopejs/interface-database` | `>=0.1.11 <1.0.0` |
|
|
95
|
+
| Package | Supported | Tested with |
|
|
96
|
+
| -------------------------------- | ----------------- | ----------- |
|
|
97
|
+
| `@antelopejs/interface-api` | `>=0.0.15 <1.0.0` | `0.0.15` |
|
|
98
|
+
| `@antelopejs/interface-core` | `>=0.2.4 <1.0.0` | `0.2.4` |
|
|
99
|
+
| `@antelopejs/interface-database` | `>=0.1.11 <1.0.0` | `0.1.11` |
|
|
100
|
+
|
|
101
|
+
<!-- antelopejs-docs-compat:end -->
|
|
100
102
|
|
|
101
103
|
## Contributing
|
|
102
104
|
|
package/dist/common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":";;;AAqEA,kCAsBC;AA9DD;;GAEG;AACH,MAAa,mBAAmB;IACvB,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAC5B,iEAAiE,CAClE,CAAC;IAEK,SAAS,CAAU;IACnB,UAAU,CAAU;IACX,OAAO,GAAkC,EAAE,CAAC;IAC5C,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,GAA8B,EAAE,CAAC;IAChD,OAAO,GAAW,KAAK,CAAC;IACxB,SAAS,CAAkB;IAClC;;OAEG;IACI,MAAM,CAAe;IAE5B,QAAQ,CACN,GAAW,EACX,KAAa,EACb,kBAA2B,KAAK,EAChC,WAAoB,KAAK;QAEzB,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;;AAlCH,kDAmCC;AAED,SAAgB,WAAW,CACzB,MAAe,EACf,aAAuC,EACvC,UAAmB,IAAI;IAEvB,MAAM,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAE5D,CAAC;IACd,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":";;;AAqEA,kCAsBC;AA9DD;;GAEG;AACH,MAAa,mBAAmB;IACvB,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAC5B,iEAAiE,CAClE,CAAC;IAEK,SAAS,CAAU;IACnB,UAAU,CAAU;IACX,OAAO,GAAkC,EAAE,CAAC;IAC5C,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,GAA8B,EAAE,CAAC;IAChD,OAAO,GAAW,KAAK,CAAC;IACxB,SAAS,CAAkB;IAClC;;OAEG;IACI,MAAM,CAAe;IAE5B,QAAQ,CACN,GAAW,EACX,KAAa,EACb,kBAA2B,KAAK,EAChC,WAAoB,KAAK;QAEzB,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;;AAlCH,kDAmCC;AAED,SAAgB,WAAW,CACzB,MAAe,EACf,aAAuC,EACvC,UAAmB,IAAI;IAEvB,MAAM,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAE5D,CAAC;IACd,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,MAAM,SAAS,GAAkB,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,iBAAiB,GACrB,OAAO,IAAI,SAAS;QAClB,CAAC,CAAE,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,CAEtC;QAChB,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,QAAQ,GAAG,iBAAiB,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IAChE,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5D,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/dist/database.js
CHANGED
|
@@ -69,12 +69,28 @@ async function insertFixtureData(schema, tableName, tableClass, generator) {
|
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
71
|
const fixtureData = await generator(tableClass);
|
|
72
|
-
const rows = toFixtureRows(fixtureData, tableClass);
|
|
72
|
+
const rows = toFixtureRows(fixtureData, tableClass).map((row, position) => withStableId(row, tableName, position));
|
|
73
73
|
if (rows.length === 0) {
|
|
74
74
|
return;
|
|
75
75
|
}
|
|
76
76
|
const payload = rows.length === 1 ? rows[0] : rows;
|
|
77
|
-
|
|
77
|
+
const table = schema.instance().table(tableName);
|
|
78
|
+
try {
|
|
79
|
+
await table.insert(payload);
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
if ((await table.count()) === 0)
|
|
83
|
+
throw error;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Keys a fixture row that declares no id by its table and position, so two
|
|
88
|
+
* processes starting on an empty table write one row between them.
|
|
89
|
+
*/
|
|
90
|
+
function withStableId(row, tableName, position) {
|
|
91
|
+
return row._id === undefined
|
|
92
|
+
? { ...row, _id: `${tableName}:fixture:${position}` }
|
|
93
|
+
: row;
|
|
78
94
|
}
|
|
79
95
|
function toFixtureRows(fixtureData, tableClass) {
|
|
80
96
|
const entries = fixtureData
|
package/dist/database.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":";;;;;AAwBA,wCASC;AAjCD,8DAAiC;AAGjC,uEAA+E;AAG/E,qCAA8C;AAE9C,qCAA4D;AAC5D,+CAA6E;AAK7E;;;;;;;;;GASG;AACI,KAAK,UAAU,cAAc,CAAC,QAAgB;IACnD,MAAM,MAAM,GAAG,IAAA,2BAAkB,EAAC,QAAQ,CAAC,CAAC;IAC5C,IAAA,qBAAM,EAAC,MAAM,EAAE,oCAAoC,QAAQ,GAAG,CAAC,CAAC;IAEhE,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,IAAI,2BAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAChD,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE3B,MAAM,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,UAAU,CAAC,MAAmB,EAAE,MAAwB;IAC/D,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/C,IAAA,oBAAW,EAAC,UAAU,EAAE,4BAAmB,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAwB;IACrD,MAAM,UAAU,GAAqB,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7D,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,UAAU,EAAE,4BAAmB,CAAC,CAAC;QAC9D,UAAU,CAAC,SAAS,CAAC,GAAG;YACtB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,OAAO,EAAE,qBAAqB,CAAC,QAAQ,CAAC;SACzC,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,qBAAqB,
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
|
package/dist/model.js
CHANGED
|
@@ -11,13 +11,19 @@ const interface_database_1 = require("@antelopejs/interface-database");
|
|
|
11
11
|
const interface_api_1 = require("@antelopejs/interface-api");
|
|
12
12
|
const decorators_1 = require("@antelopejs/interface-core/decorators");
|
|
13
13
|
const common_1 = require("./modifiers/common");
|
|
14
|
+
const kinds_1 = require("./modifiers/internal/kinds");
|
|
15
|
+
const records_1 = require("./modifiers/internal/records");
|
|
14
16
|
const common_2 = require("./common");
|
|
15
17
|
function isCodec(type) {
|
|
16
18
|
return (typeof type === "object" &&
|
|
17
19
|
type !== null &&
|
|
18
20
|
!Array.isArray(type) &&
|
|
21
|
+
"decode" in type &&
|
|
19
22
|
typeof type.decode === "function");
|
|
20
23
|
}
|
|
24
|
+
function isInstanceIdProvider(value) {
|
|
25
|
+
return typeof value === "function";
|
|
26
|
+
}
|
|
21
27
|
function decodeFieldError(field, result) {
|
|
22
28
|
const message = result.left.map((e) => e.message).find(Boolean) ?? `invalid ${field}`;
|
|
23
29
|
return { field, message };
|
|
@@ -35,7 +41,10 @@ function BasicDataModel(dataType, tableName) {
|
|
|
35
41
|
const name = resolvedName;
|
|
36
42
|
const schemaName = metadata.schemaName;
|
|
37
43
|
const primaryKey = metadata.primary;
|
|
38
|
-
|
|
44
|
+
const toInstances = (dataR) =>
|
|
45
|
+
// SAFETY: Model.fromDatabase returns undefined only for a falsy row, and the rows a table read or an index lookup returns are stored records, never null or undefined; the cast removes that undefined from the element type.
|
|
46
|
+
dataR.map((row) => Model.fromDatabase(row));
|
|
47
|
+
const Model = class Model {
|
|
39
48
|
database;
|
|
40
49
|
static schemaName = schemaName;
|
|
41
50
|
/**
|
|
@@ -78,9 +87,7 @@ function BasicDataModel(dataType, tableName) {
|
|
|
78
87
|
const fields = metadata.fields;
|
|
79
88
|
const errors = [];
|
|
80
89
|
const partial = options?.partial === true;
|
|
81
|
-
const record =
|
|
82
|
-
? obj
|
|
83
|
-
: undefined;
|
|
90
|
+
const record = (0, kinds_1.isRecord)(obj) ? obj : undefined;
|
|
84
91
|
for (const [field, type] of Object.entries(fields)) {
|
|
85
92
|
if (!isCodec(type))
|
|
86
93
|
continue;
|
|
@@ -108,7 +115,7 @@ function BasicDataModel(dataType, tableName) {
|
|
|
108
115
|
* @returns Table class instance
|
|
109
116
|
*/
|
|
110
117
|
get(id) {
|
|
111
|
-
return this.table.get(id).then(Model.fromDatabase);
|
|
118
|
+
return this.table.get(id).then((row) => Model.fromDatabase(row));
|
|
112
119
|
}
|
|
113
120
|
/**
|
|
114
121
|
* Get multiple elements from the table using a given index.
|
|
@@ -120,7 +127,7 @@ function BasicDataModel(dataType, tableName) {
|
|
|
120
127
|
getBy(index, ...keys) {
|
|
121
128
|
return this.table
|
|
122
129
|
.getAll(keys.length === 1 ? keys[0] : keys, index)
|
|
123
|
-
.then((dataR) => dataR
|
|
130
|
+
.then((dataR) => toInstances(dataR));
|
|
124
131
|
}
|
|
125
132
|
/**
|
|
126
133
|
* Get all the elements from the table.
|
|
@@ -128,7 +135,7 @@ function BasicDataModel(dataType, tableName) {
|
|
|
128
135
|
* @returns Array of Table class instances.
|
|
129
136
|
*/
|
|
130
137
|
getAll() {
|
|
131
|
-
return this.table.then((dataR) => dataR
|
|
138
|
+
return this.table.then((dataR) => toInstances(dataR));
|
|
132
139
|
}
|
|
133
140
|
/**
|
|
134
141
|
* Insert some data into the table.
|
|
@@ -158,8 +165,8 @@ function BasicDataModel(dataType, tableName) {
|
|
|
158
165
|
.insert(Array.isArray(obj) ? obj.map(converter) : converter(obj))
|
|
159
166
|
.run();
|
|
160
167
|
}
|
|
161
|
-
async update(
|
|
162
|
-
const parsed = parseUpdateArgs(
|
|
168
|
+
async update(...args) {
|
|
169
|
+
const parsed = parseUpdateArgs(args);
|
|
163
170
|
if (parsed.options?.validate) {
|
|
164
171
|
const result = Model.validate(parsed.data, { partial: true });
|
|
165
172
|
if (!result.ok)
|
|
@@ -170,14 +177,18 @@ function BasicDataModel(dataType, tableName) {
|
|
|
170
177
|
(0, common_1.triggerEvent)(instance, "update");
|
|
171
178
|
return this.table
|
|
172
179
|
.get(parsed.id)
|
|
173
|
-
.update(Model.toDatabase(instance))
|
|
180
|
+
.update(withoutEmptyInternal(Model.toDatabase(instance)))
|
|
174
181
|
.run();
|
|
175
182
|
}
|
|
176
183
|
const instance = Model.fromPlainData(parsed.data);
|
|
177
184
|
(0, common_1.triggerEvent)(instance, "update");
|
|
185
|
+
// SAFETY: parsed.data is the DeepPartial<T> object the caller passed as the first argument (the id form was handled above), so reading the property named by the table's primary key is defined and gives undefined when absent; the next line asserts it is present.
|
|
178
186
|
const id = parsed.data[primaryKey];
|
|
179
187
|
(0, node_assert_1.default)(id !== undefined, "Missing primary key in object update.");
|
|
180
|
-
return this.table
|
|
188
|
+
return this.table
|
|
189
|
+
.get(id)
|
|
190
|
+
.update(withoutEmptyInternal(Model.toDatabase(instance)))
|
|
191
|
+
.run();
|
|
181
192
|
}
|
|
182
193
|
/**
|
|
183
194
|
* Delete an element from the table.
|
|
@@ -189,34 +200,40 @@ function BasicDataModel(dataType, tableName) {
|
|
|
189
200
|
return this.table.get(id).delete().run();
|
|
190
201
|
}
|
|
191
202
|
};
|
|
203
|
+
return Model;
|
|
192
204
|
}
|
|
193
205
|
const modelCache = new Map();
|
|
194
206
|
const UNDEFINED_INSTANCE_KEY = Symbol("undefined-instance");
|
|
195
207
|
function cacheKeyOf(instanceId) {
|
|
196
208
|
if (instanceId === undefined)
|
|
197
209
|
return UNDEFINED_INSTANCE_KEY;
|
|
198
|
-
if (typeof instanceId === "symbol")
|
|
199
|
-
return instanceId;
|
|
200
210
|
return instanceId;
|
|
201
211
|
}
|
|
212
|
+
/**
|
|
213
|
+
* Leaves out an `_internal` with nothing in it. The update writes that key as
|
|
214
|
+
* one value, and a modifier event creates it empty: writing it would erase what
|
|
215
|
+
* the row stores there.
|
|
216
|
+
*/
|
|
217
|
+
function withoutEmptyInternal(record) {
|
|
218
|
+
if (record._internal && (0, records_1.isEmptyInternal)(record._internal)) {
|
|
219
|
+
delete record._internal;
|
|
220
|
+
}
|
|
221
|
+
return record;
|
|
222
|
+
}
|
|
202
223
|
function makeValidationError(errors) {
|
|
203
224
|
const summary = errors.map((e) => `${e.field} (${e.message})`).join(", ");
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
225
|
+
return Object.assign(new Error(`validation failed: ${summary}`), { errors });
|
|
226
|
+
}
|
|
227
|
+
function isIdUpdate(args) {
|
|
228
|
+
return typeof args[0] === "string";
|
|
207
229
|
}
|
|
208
|
-
function parseUpdateArgs(
|
|
209
|
-
if (
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
data: objOrOptions,
|
|
213
|
-
options,
|
|
214
|
-
};
|
|
230
|
+
function parseUpdateArgs(args) {
|
|
231
|
+
if (isIdUpdate(args)) {
|
|
232
|
+
const [id, data, options] = args;
|
|
233
|
+
return { id, data, options };
|
|
215
234
|
}
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
options: objOrOptions,
|
|
219
|
-
};
|
|
235
|
+
const [data, options] = args;
|
|
236
|
+
return { data, options };
|
|
220
237
|
}
|
|
221
238
|
function schemaOf(cl) {
|
|
222
239
|
if (!cl.tableClass) {
|
|
@@ -236,14 +253,16 @@ function GetModel(cl, instanceId) {
|
|
|
236
253
|
(0, node_assert_1.default)(cache);
|
|
237
254
|
const key = cacheKeyOf(instanceId);
|
|
238
255
|
const cached = cache.get(key);
|
|
239
|
-
if (cached)
|
|
256
|
+
if (cached) {
|
|
257
|
+
// SAFETY: modelCache is private to this module, keyed by the class, and only this function fills it, with the `new cl(...)` result below, which is an M for that same cl.
|
|
240
258
|
return cached;
|
|
259
|
+
}
|
|
241
260
|
const model = new cl(schemaOf(cl).instance(instanceId));
|
|
242
261
|
cache.set(key, model);
|
|
243
262
|
return model;
|
|
244
263
|
}
|
|
245
264
|
exports.Model = (0, decorators_1.MakeParameterAndPropertyDecorator)((target, key, index, cl, instanceIdOrCallback) => {
|
|
246
|
-
if (
|
|
265
|
+
if (isInstanceIdProvider(instanceIdOrCallback)) {
|
|
247
266
|
(0, interface_api_1.SetParameterProvider)(target, key, index, (ctx) => {
|
|
248
267
|
return GetModel(cl, instanceIdOrCallback(ctx));
|
|
249
268
|
});
|
package/dist/model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,19 +45,39 @@ export declare class ModifiersStaticMetadata {
|
|
|
45
45
|
export declare class ModifiersDynamicMetadata {
|
|
46
46
|
static key: symbol;
|
|
47
47
|
staticMeta: ModifiersStaticMetadata;
|
|
48
|
+
/**
|
|
49
|
+
* Values assigned to a field before its modifiers could lock them, by field
|
|
50
|
+
* name. Reads return them; `unlock` and `lock` assign them again.
|
|
51
|
+
*/
|
|
48
52
|
floating: Record<string, any>;
|
|
49
53
|
fields: Record<string, Record<string, any[]>>;
|
|
50
54
|
constructor(target: any);
|
|
51
|
-
canGet(field:
|
|
52
|
-
get(field:
|
|
53
|
-
canSet(field:
|
|
54
|
-
set(field:
|
|
55
|
+
canGet(field: PropertyKey): boolean;
|
|
56
|
+
get(field: PropertyKey, internal: InternalType): any;
|
|
57
|
+
canSet(field: PropertyKey): boolean;
|
|
58
|
+
set(field: PropertyKey, internal: InternalType, value: unknown): void;
|
|
55
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Builds a table instance from unlocked plain data: each key is assigned, so
|
|
62
|
+
* modifiers lock the fields they can. Then runs the `fromPlainData` event.
|
|
63
|
+
*/
|
|
56
64
|
export declare function fromPlainData<T extends Constructible>(rawObject: Record<string, any>, TableClass: T): InstanceType<T>;
|
|
65
|
+
/**
|
|
66
|
+
* Converts a table instance to unlocked plain data, without `_internal`. A
|
|
67
|
+
* field still locked comes out `undefined`. Then runs the `toPlainData` event.
|
|
68
|
+
*/
|
|
57
69
|
export declare function toPlainData<T extends {
|
|
58
70
|
constructor: any;
|
|
59
71
|
}>(object: T): Record<string, any>;
|
|
72
|
+
/**
|
|
73
|
+
* Builds a table instance from a stored record, its modified fields still
|
|
74
|
+
* locked in `_internal`. Then runs the `fromDatabase` event.
|
|
75
|
+
*/
|
|
60
76
|
export declare function fromDatabase<T extends Constructible>(rawObject: any, TableClass: T): InstanceType<T>;
|
|
77
|
+
/**
|
|
78
|
+
* Converts a table instance to the locked record to store, `_internal`
|
|
79
|
+
* included and floating values left out. Then runs the `toDatabase` event.
|
|
80
|
+
*/
|
|
61
81
|
export declare function toDatabase<T extends {
|
|
62
82
|
constructor: any;
|
|
63
83
|
}>(object: T): Record<string, any>;
|