@kollors/deep-json-server 1.0.0-beta.2 → 1.0.0-beta.3
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 +5 -3
- package/README.ru.md +5 -3
- package/dist/src/auth/password.js +1 -1
- package/dist/src/auth/password.js.map +1 -1
- package/dist/src/auth/service.d.ts +1 -1
- package/dist/src/auth/service.js +2 -2
- package/dist/src/auth/service.js.map +1 -1
- package/dist/src/cli/index.js +8 -2
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/core/constants.d.ts +1 -1
- package/dist/src/core/constants.js +1 -1
- package/dist/src/core/database.d.ts +4 -4
- package/dist/src/core/database.js +15 -12
- package/dist/src/core/database.js.map +1 -1
- package/dist/src/core/engine.d.ts +3 -1
- package/dist/src/core/engine.js +33 -24
- package/dist/src/core/engine.js.map +1 -1
- package/dist/src/core/lifecycle/mutation.d.ts +4 -4
- package/dist/src/core/lifecycle/mutation.js +36 -11
- package/dist/src/core/lifecycle/mutation.js.map +1 -1
- package/dist/src/core/lifecycle/options.d.ts +2 -2
- package/dist/src/core/lifecycle/options.js.map +1 -1
- package/dist/src/core/model/infer.d.ts +7 -0
- package/dist/src/core/model/infer.js +88 -0
- package/dist/src/core/model/infer.js.map +1 -0
- package/dist/src/core/model/load.d.ts +9 -0
- package/dist/src/core/model/load.js +215 -0
- package/dist/src/core/model/load.js.map +1 -0
- package/dist/src/core/model/policy.d.ts +15 -0
- package/dist/src/core/model/policy.js +29 -0
- package/dist/src/core/model/policy.js.map +1 -0
- package/dist/src/core/model/tree.d.ts +68 -0
- package/dist/src/core/model/tree.js +168 -0
- package/dist/src/core/model/tree.js.map +1 -0
- package/dist/src/core/model/types.d.ts +83 -0
- package/dist/src/core/model/types.js +2 -0
- package/dist/src/core/model/types.js.map +1 -0
- package/dist/src/core/model/validation.d.ts +24 -0
- package/dist/src/core/model/validation.js +96 -0
- package/dist/src/core/model/validation.js.map +1 -0
- package/dist/src/core/model.d.ts +6 -146
- package/dist/src/core/model.js +6 -534
- package/dist/src/core/model.js.map +1 -1
- package/dist/src/core/mutations/write.d.ts +33 -0
- package/dist/src/core/mutations/write.js +46 -12
- package/dist/src/core/mutations/write.js.map +1 -1
- package/dist/src/core/paths.d.ts +0 -8
- package/dist/src/core/paths.js +3 -19
- package/dist/src/core/paths.js.map +1 -1
- package/dist/src/core/query/execute.js +2 -2
- package/dist/src/core/query/execute.js.map +1 -1
- package/dist/src/core/query/filter.js +1 -1
- package/dist/src/core/query/filter.js.map +1 -1
- package/dist/src/core/query/options.js +1 -1
- package/dist/src/core/query/options.js.map +1 -1
- package/dist/src/core/records.js +5 -4
- package/dist/src/core/records.js.map +1 -1
- package/dist/src/core/relation-metadata.js +1 -1
- package/dist/src/core/relation-metadata.js.map +1 -1
- package/dist/src/core/snapshot.d.ts +10 -0
- package/dist/src/core/snapshot.js +15 -0
- package/dist/src/core/snapshot.js.map +1 -0
- package/dist/src/core/types.d.ts +5 -0
- package/dist/src/core/utils.d.ts +4 -0
- package/dist/src/core/utils.js +8 -0
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/files/contract.js +3 -1
- package/dist/src/files/contract.js.map +1 -1
- package/dist/src/graphql/preflight.js +2 -1
- package/dist/src/graphql/preflight.js.map +1 -1
- package/dist/src/graphql/resolvers.js +6 -3
- package/dist/src/graphql/resolvers.js.map +1 -1
- package/dist/src/graphql/schema.js +3 -3
- package/dist/src/graphql/schema.js.map +1 -1
- package/dist/src/openapi/document.js +7 -7
- package/dist/src/openapi/document.js.map +1 -1
- package/dist/src/rest/options.d.ts +2 -2
- package/dist/src/rest/options.js +3 -3
- package/dist/src/rest/options.js.map +1 -1
- package/dist/src/rest/projection.d.ts +6 -3
- package/dist/src/rest/projection.js +17 -10
- package/dist/src/rest/projection.js.map +1 -1
- package/dist/src/rest/routes.js +6 -6
- package/dist/src/rest/routes.js.map +1 -1
- package/dist/src/server/bootstrap.js +1 -1
- package/dist/src/server/bootstrap.js.map +1 -1
- package/dist/src/server/config.d.ts +10 -6
- package/dist/src/server/config.js +39 -37
- package/dist/src/server/config.js.map +1 -1
- package/dist/src/server/http.d.ts +1 -1
- package/dist/src/server/http.js +1 -1
- package/dist/src/server/input-paths.d.ts +8 -0
- package/dist/src/server/input-paths.js +19 -0
- package/dist/src/server/input-paths.js.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/core/engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/core/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import type { Entity, Model } from '../model.js';
|
|
2
|
-
import type { DatabaseData, JsonObject } from '../types.js';
|
|
2
|
+
import type { DatabaseData, DatabaseSnapshot, JsonObject, RecordSnapshot } from '../types.js';
|
|
3
3
|
import { type Actor } from './options.js';
|
|
4
4
|
/** Проверяет владельцев и заполняет поля дат и авторов внутри транзакции. */
|
|
5
5
|
export declare class RecordMutation {
|
|
6
6
|
private data;
|
|
7
7
|
private model;
|
|
8
8
|
private actor;
|
|
9
|
-
readonly before:
|
|
9
|
+
readonly before: DatabaseSnapshot;
|
|
10
10
|
readonly now: string;
|
|
11
11
|
private originals;
|
|
12
12
|
private touched;
|
|
13
13
|
private enabled;
|
|
14
|
-
constructor(data: DatabaseData, model: Model, actor: Actor | undefined, before:
|
|
14
|
+
constructor(data: DatabaseData, model: Model, actor: Actor | undefined, before: DatabaseSnapshot);
|
|
15
15
|
/** Проверяет владельца исходной записи или права администратора; данные не меняет.
|
|
16
16
|
* @example Совпадающие createdById и actor.id → undefined; чужая запись без прав администратора → FORBIDDEN.
|
|
17
17
|
*/
|
|
18
|
-
check(entity: Entity, record:
|
|
18
|
+
check(entity: Entity, record: RecordSnapshot): void;
|
|
19
19
|
/** Отмечает запись изменённой и при необходимости восстанавливает её каскад в черновике.
|
|
20
20
|
* @example Удалённая запись после успешного вызова → deletedAt: null; конфликт восстановления → ошибка.
|
|
21
21
|
*/
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { domainError } from '../errors.js';
|
|
3
|
-
import {
|
|
3
|
+
import { cloneSnapshot } from '../snapshot.js';
|
|
4
|
+
import { defined, isEqual, isObject, isSafeKey } from '../utils.js';
|
|
4
5
|
import { canChangeRecord, DELETION_META } from './options.js';
|
|
5
6
|
const keyOf = (entity, record) => JSON.stringify([entity.collection, String(record[entity.primary])]);
|
|
6
7
|
/** Проверяет владельцев и заполняет поля дат и авторов внутри транзакции. */
|
|
@@ -107,7 +108,13 @@ export class RecordMutation {
|
|
|
107
108
|
for (const [field, node] of Object.entries(entity.root.children)) {
|
|
108
109
|
if (node.virtual || node.relation || node.base !== 'object' || !Object.hasOwn(old, field) || isEqual(old[field], row[field]))
|
|
109
110
|
continue;
|
|
110
|
-
patches.push({
|
|
111
|
+
patches.push({
|
|
112
|
+
collection: entity.collection,
|
|
113
|
+
key: defined(row[entity.primary], entity.primary),
|
|
114
|
+
field,
|
|
115
|
+
before: cloneSnapshot(defined(old[field], field)),
|
|
116
|
+
...(row[field] !== undefined ? { after: structuredClone(row[field]) } : {}),
|
|
117
|
+
});
|
|
111
118
|
}
|
|
112
119
|
}
|
|
113
120
|
const deletion = this.deletion(initial.value);
|
|
@@ -132,11 +139,11 @@ export class RecordMutation {
|
|
|
132
139
|
if (field.system && !field.internal && !field.virtual && !Object.hasOwn(record, name))
|
|
133
140
|
record[name] = null;
|
|
134
141
|
if (entity.timestamps) {
|
|
135
|
-
record.createdAt = original?.createdAt ?? (original ? null : this.now);
|
|
142
|
+
record.createdAt = cloneSnapshot(original?.createdAt ?? (original ? null : this.now));
|
|
136
143
|
record.updatedAt = this.now;
|
|
137
144
|
}
|
|
138
145
|
if (this.model.options.auth) {
|
|
139
|
-
record.createdById = original?.createdById ?? (original ? null : (this.actor?.id ?? null));
|
|
146
|
+
record.createdById = cloneSnapshot(original?.createdById ?? (original ? null : (this.actor?.id ?? null)));
|
|
140
147
|
record.updatedById = this.actor?.id ?? null;
|
|
141
148
|
}
|
|
142
149
|
}
|
|
@@ -153,14 +160,32 @@ export class RecordMutation {
|
|
|
153
160
|
if (raw == null)
|
|
154
161
|
return undefined;
|
|
155
162
|
try {
|
|
156
|
-
const value = JSON.parse(raw);
|
|
157
|
-
if (!isObject(value) ||
|
|
158
|
-
typeof value.id !== 'string' ||
|
|
159
|
-
typeof value.root !== 'boolean' ||
|
|
160
|
-
(value.patches !== undefined &&
|
|
161
|
-
(!Array.isArray(value.patches) || value.patches.some((p) => !isObject(p) || typeof p.collection !== 'string' || typeof p.field !== 'string' || !Object.hasOwn(p, 'before')))))
|
|
163
|
+
const value = JSON.parse(typeof raw === 'string' ? raw : '');
|
|
164
|
+
if (!isObject(value) || typeof value.id !== 'string' || typeof value.root !== 'boolean')
|
|
162
165
|
throw new Error();
|
|
163
|
-
|
|
166
|
+
let patches;
|
|
167
|
+
if (value.patches !== undefined) {
|
|
168
|
+
if (!Array.isArray(value.patches))
|
|
169
|
+
throw new Error();
|
|
170
|
+
patches = value.patches.map((patch) => {
|
|
171
|
+
if (!isObject(patch) ||
|
|
172
|
+
typeof patch.collection !== 'string' ||
|
|
173
|
+
typeof patch.field !== 'string' ||
|
|
174
|
+
!isSafeKey(patch.field) ||
|
|
175
|
+
!['string', 'number'].includes(typeof patch.key) ||
|
|
176
|
+
!Object.hasOwn(patch, 'before'))
|
|
177
|
+
throw new Error();
|
|
178
|
+
// После JSON.parse каждое значение уже принадлежит JSON; проверяем отсутствующие поля отдельно.
|
|
179
|
+
return {
|
|
180
|
+
collection: patch.collection,
|
|
181
|
+
key: patch.key,
|
|
182
|
+
field: patch.field,
|
|
183
|
+
before: patch.before,
|
|
184
|
+
...(Object.hasOwn(patch, 'after') ? { after: patch.after } : {}),
|
|
185
|
+
};
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
return { id: value.id, root: value.root, ...(patches ? { patches } : {}) };
|
|
164
189
|
}
|
|
165
190
|
catch {
|
|
166
191
|
throw domainError('INVALID_INPUT', 'Invalid deletion metadata');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutation.js","sourceRoot":"","sources":["../../../../src/core/lifecycle/mutation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"mutation.js","sourceRoot":"","sources":["../../../../src/core/lifecycle/mutation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAc,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAc1E,MAAM,KAAK,GAAG,CAAC,MAAc,EAAE,MAAsB,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAE9H,6EAA6E;AAC7E,MAAM,OAAO,cAAc;IAMf,IAAI;IACJ,KAAK;IACL,KAAK;IACJ,MAAM;IARR,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAChC,SAAS,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC9C,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5B,OAAO,CAAU;IACzB,YACU,IAAkB,EAClB,KAAY,EACZ,KAAwB,EACvB,MAAwB;oBAHzB,IAAI;qBACJ,KAAK;qBACL,KAAK;sBACJ,MAAM;QAEf,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,WAAW,CAAC,iBAAiB,EAAE,yBAAyB,CAAC,CAAC;QAClG,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;QAC7G,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,QAAQ;YAAE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE;gBAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IACpJ,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,MAAc,EAAE,MAAsB;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,MAAM,WAAW,CAAC,WAAW,EAAE,2DAA2D,CAAC,CAAC;IACjL,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,MAAc,EAAE,MAAkB;QACtC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI;YAAE,OAAO;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,QAAQ,EAAE,IAAI,EAAE,CAAC;YACnB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;gBACrC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;oBACpD,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,QAAQ,CAAC,EAAE;wBAAE,SAAS;oBACnG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBACvB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACzB,CAAC;YACH,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;gBAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC5D,MAAM,GAAG,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7H,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC;oBAAE,MAAM,WAAW,CAAC,UAAU,EAAE,0CAA0C,CAAC,CAAC;gBAClK,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACvB,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;IACD;;OAEG;IACK,KAAK,CAAC,MAAc,EAAE,MAAkB;QAC9C,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI;YAAE,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;QACvD,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD;;OAEG;IACH,WAAW,CAAC,OAA8C,EAAE,OAAwB;QAClF,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;QACxB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;YACtC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;gBACxD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU;oBAAE,SAAS;gBACzD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC3B,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;gBAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI;oBAAE,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI,CAAC;gBACzE,MAAM,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YACjF,CAAC;IACL,CAAC;IACD;;OAEG;IACH,aAAa,CAAC,OAA8C;QAC1D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU;YAAE,OAAO;QACvC,MAAM,OAAO,GAAY,EAAE,CAAC;QAC5B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;YACtC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;gBACrD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;gBACnD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,IAAI,IAAI;oBAAE,SAAS;gBAC5C,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACjE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;wBAAE,SAAS;oBACvI,OAAO,CAAC,IAAI,CAAC;wBACX,UAAU,EAAE,MAAM,CAAC,UAAU;wBAC7B,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;wBACjD,KAAK;wBACL,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;wBACjD,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC5E,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAa,CAAC;QAC1D,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD;;OAEG;IACH,MAAM;QACJ,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;YAClC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;gBACxD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACzC,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;oBAAE,SAAS;gBAC9E,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAAE,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;wBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBAC7K,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBACtB,MAAM,CAAC,SAAS,GAAG,aAAa,CAAC,QAAQ,EAAE,SAAS,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBACtF,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;gBAC9B,CAAC;gBACD,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;oBAC5B,MAAM,CAAC,WAAW,GAAG,aAAa,CAAC,QAAQ,EAAE,WAAW,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC1G,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI,CAAC;gBAC9C,CAAC;YACH,CAAC;YACD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE;gBAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACxH,CAAC;IACH,CAAC;IACD;;OAEG;IACK,QAAQ,CAAC,MAAkB;QACjC,MAAM,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QAClC,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,SAAS,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,KAAK,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,EAAE,CAAC;YAC3G,IAAI,OAA4B,CAAC;YACjC,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;oBAAE,MAAM,IAAI,KAAK,EAAE,CAAC;gBACrD,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAc,EAAS,EAAE;oBACpD,IACE,CAAC,QAAQ,CAAC,KAAK,CAAC;wBAChB,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;wBACpC,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;wBAC/B,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;wBACvB,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC;wBAChD,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC;wBAE/B,MAAM,IAAI,KAAK,EAAE,CAAC;oBACpB,gGAAgG;oBAChG,OAAO;wBACL,UAAU,EAAE,KAAK,CAAC,UAAU;wBAC5B,GAAG,EAAE,KAAK,CAAC,GAAsB;wBACjC,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,MAAM,EAAE,KAAK,CAAC,MAAmB;wBACjC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC9E,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC7E,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,WAAW,CAAC,eAAe,EAAE,2BAA2B,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { JsonObject } from '../types.js';
|
|
1
|
+
import type { JsonObject, RecordSnapshot } from '../types.js';
|
|
2
2
|
export interface RecordOptions {
|
|
3
3
|
timestamps?: boolean;
|
|
4
4
|
softDelete?: boolean;
|
|
@@ -21,7 +21,7 @@ export declare const AUDIT_FIELDS: readonly ['createdAt', 'updatedAt', 'deletedA
|
|
|
21
21
|
/** Проверяет право пользователя изменять существующую запись.
|
|
22
22
|
* @example Владелец записи { createdById: '1' } с actor.id = '1' → true; другой обычный пользователь → false.
|
|
23
23
|
*/
|
|
24
|
-
export declare function canChangeRecord(actor: Actor | undefined, record:
|
|
24
|
+
export declare function canChangeRecord(actor: Actor | undefined, record: RecordSnapshot): boolean;
|
|
25
25
|
/** Возвращает доступные пользователю операции над записью.
|
|
26
26
|
* @example recordActions(undefined, { createdById: '1' }) → все флаги false; владелец → все флаги true.
|
|
27
27
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../src/core/lifecycle/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAmBvC,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;AAC3C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,CAAU,CAAC;AAC1H;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAwB,EAAE,
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../src/core/lifecycle/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAmBvC,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;AAC3C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,CAAU,CAAC;AAC1H;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAwB,EAAE,MAAsB;IAC9E,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;AACzE,CAAC;AACD;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAwB,EAAE,MAAkB;IACxE,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAChE,CAAC;AACD;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAO,GAAkB,EAAE;IACvD,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;AACnM,CAAC;AACD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3K,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type RecordOptions } from '../lifecycle/options.js';
|
|
2
|
+
import type { DatabaseSnapshot } from '../types.js';
|
|
3
|
+
import type { Model } from './types.js';
|
|
4
|
+
/** Выводит поля и связи из значений коллекций, не меняя переданные записи.
|
|
5
|
+
* @example inferModel({ users: [{ id: '1', name: 'Анна' }] }) → модель со строковыми id и name.
|
|
6
|
+
*/
|
|
7
|
+
export declare function inferModel(database: DatabaseSnapshot, settings?: RecordOptions): Model;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { recordOptions } from '../lifecycle/options.js';
|
|
2
|
+
import { getRelationMetadata } from '../relation-metadata.js';
|
|
3
|
+
import { defined, isObject, isSafeKey, singularize, toPascalCase } from '../utils.js';
|
|
4
|
+
import { addField, childName, linkRelation, markRelationKeys, NAME, newNode, systemFields } from './tree.js';
|
|
5
|
+
/** Выводит поля и связи из значений коллекций, не меняя переданные записи.
|
|
6
|
+
* @example inferModel({ users: [{ id: '1', name: 'Анна' }] }) → модель со строковыми id и name.
|
|
7
|
+
*/
|
|
8
|
+
export function inferModel(database, settings = {}) {
|
|
9
|
+
const options = recordOptions(settings);
|
|
10
|
+
const valueType = (value) => (isObject(value) ? 'object' : ['string', 'number', 'boolean'].includes(typeof value) ? typeof value : 'string');
|
|
11
|
+
const model = { entities: [], byName: new Map(), byCollection: new Map(), explicit: false, options };
|
|
12
|
+
for (const [collection, records] of Object.entries(database)) {
|
|
13
|
+
const name = toPascalCase(singularize(collection));
|
|
14
|
+
const entity = {
|
|
15
|
+
timestamps: options.timestamps,
|
|
16
|
+
softDelete: options.softDelete,
|
|
17
|
+
name,
|
|
18
|
+
collection,
|
|
19
|
+
api: [],
|
|
20
|
+
primary: 'id',
|
|
21
|
+
fields: Object.create(null),
|
|
22
|
+
root: newNode('', { type: 'object' }),
|
|
23
|
+
};
|
|
24
|
+
systemFields(entity, options);
|
|
25
|
+
const observed = new Map();
|
|
26
|
+
const scan = (record, prefix = '') => {
|
|
27
|
+
for (const [key, value] of Object.entries(record)) {
|
|
28
|
+
if (!NAME.test(key) || !isSafeKey(key) || (!prefix && entity.fields[key]?.system))
|
|
29
|
+
continue;
|
|
30
|
+
const path = prefix + key;
|
|
31
|
+
const sample = Array.isArray(value) ? value.find((v) => v !== null) : value;
|
|
32
|
+
const base = valueType(sample);
|
|
33
|
+
const type = base + (Array.isArray(value) ? '[]' : '');
|
|
34
|
+
const types = observed.get(path) ?? new Set();
|
|
35
|
+
for (const element of Array.isArray(value) ? value : [value]) {
|
|
36
|
+
if (element == null)
|
|
37
|
+
continue;
|
|
38
|
+
types.add(valueType(element) + (Array.isArray(value) ? '[]' : ''));
|
|
39
|
+
}
|
|
40
|
+
observed.set(path, types);
|
|
41
|
+
const node = entity.fields[path] ?? addField(entity, path, { type });
|
|
42
|
+
if (types.size) {
|
|
43
|
+
node.mixed = node.mixed || types.size > 1 || (Array.isArray(value) && value.some(isObject) && value.some((item) => !isObject(item)));
|
|
44
|
+
node.base = [...types].some((type) => type.startsWith('object')) ? 'object' : defined([...types].sort()[0], 'observed field type').replace(/\[\]$/, '');
|
|
45
|
+
node.many = [...types].every((type) => type.endsWith('[]'));
|
|
46
|
+
node.type = node.base + (node.many ? '[]' : '');
|
|
47
|
+
}
|
|
48
|
+
if (isObject(value))
|
|
49
|
+
scan(value, `${path}.`);
|
|
50
|
+
if (Array.isArray(value))
|
|
51
|
+
value.filter(isObject).forEach((v) => {
|
|
52
|
+
scan(v, `${path}.`);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
records.forEach((scanRecord) => {
|
|
57
|
+
scan(scanRecord);
|
|
58
|
+
});
|
|
59
|
+
const id = entity.fields.id ?? addField(entity, 'id', { type: 'string' });
|
|
60
|
+
id.primary = true;
|
|
61
|
+
model.entities.push(entity);
|
|
62
|
+
model.byCollection.set(collection, entity);
|
|
63
|
+
model.byName.set(name, entity);
|
|
64
|
+
}
|
|
65
|
+
const resources = Object.keys(database);
|
|
66
|
+
for (const entity of model.entities)
|
|
67
|
+
for (const field of Object.values(entity.fields)) {
|
|
68
|
+
if (field.mixed || field.system)
|
|
69
|
+
continue;
|
|
70
|
+
const relation = getRelationMetadata(childName(field), resources, entity.collection);
|
|
71
|
+
if (!relation)
|
|
72
|
+
continue;
|
|
73
|
+
const target = defined(model.byCollection.get(relation.targetResource), relation.targetResource);
|
|
74
|
+
const prefix = field.path.includes('.') ? field.path.slice(0, field.path.lastIndexOf('.') + 1) : '';
|
|
75
|
+
const path = prefix + relation.relationName;
|
|
76
|
+
if (!entity.fields[path]) {
|
|
77
|
+
const node = addField(entity, path, { type: target.name + (relation.isMany ? '[]' : ''), source: field.path, target: 'id' });
|
|
78
|
+
linkRelation(node, target, field.path, 'id');
|
|
79
|
+
}
|
|
80
|
+
if (!target.fields[relation.reverseRelationName]) {
|
|
81
|
+
const reverse = addField(target, relation.reverseRelationName, { type: `${entity.name}[]`, source: 'id', target: field.path });
|
|
82
|
+
linkRelation(reverse, entity, 'id', field.path);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
markRelationKeys(model);
|
|
86
|
+
return model;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=infer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infer.js","sourceRoot":"","sources":["../../../../src/core/model/infer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ApiFormat, Model, ModelOptions } from './types.js';
|
|
2
|
+
/** Проверяет список форматов и возвращает его независимую копию.
|
|
3
|
+
* @example apiFormats(['graphql'], [], 'api') → ['graphql']; apiFormats(['unknown'], [], 'api') → ошибка.
|
|
4
|
+
*/
|
|
5
|
+
export declare function apiFormats(value: unknown, fallback: ApiFormat[], label: string): ApiFormat[];
|
|
6
|
+
/** Загружает описание из объекта или JSON-файла, проверяет поля и сопоставляет связи.
|
|
7
|
+
* @example loadModel(undefined) → Promise<undefined>; корректное описание → Promise<Model>.
|
|
8
|
+
*/
|
|
9
|
+
export declare function loadModel(source: unknown, settings?: ModelOptions): Promise<Model | undefined>;
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { recordOptions } from '../lifecycle/options.js';
|
|
3
|
+
import { assertKnownKeys, isObject, isSafeKey } from '../utils.js';
|
|
4
|
+
import { addField, fieldAt, linkRelation, markRelationKeys, NAME, newNode, pathParts, systemFields } from './tree.js';
|
|
5
|
+
import { createValidator, entityValidators, valueSchema } from './validation.js';
|
|
6
|
+
/** Проверяет список форматов и возвращает его независимую копию.
|
|
7
|
+
* @example apiFormats(['graphql'], [], 'api') → ['graphql']; apiFormats(['unknown'], [], 'api') → ошибка.
|
|
8
|
+
*/
|
|
9
|
+
export function apiFormats(value, fallback, label) {
|
|
10
|
+
if (value === undefined)
|
|
11
|
+
return [...fallback];
|
|
12
|
+
if (!Array.isArray(value) || value.some((format) => !['openapi', 'graphql'].includes(format)) || new Set(value).size !== value.length)
|
|
13
|
+
throw new Error(`Invalid api for ${label}`);
|
|
14
|
+
return [...value];
|
|
15
|
+
}
|
|
16
|
+
const PRIMITIVES = new Set(['string', 'number', 'boolean', 'object']);
|
|
17
|
+
const FIELD_KEYS = new Set([
|
|
18
|
+
'type',
|
|
19
|
+
'description',
|
|
20
|
+
'example',
|
|
21
|
+
'required',
|
|
22
|
+
'nullable',
|
|
23
|
+
'default',
|
|
24
|
+
'enum',
|
|
25
|
+
'primary',
|
|
26
|
+
'generated',
|
|
27
|
+
'readOnly',
|
|
28
|
+
'writeOnly',
|
|
29
|
+
'minLength',
|
|
30
|
+
'maxLength',
|
|
31
|
+
'pattern',
|
|
32
|
+
'format',
|
|
33
|
+
'minimum',
|
|
34
|
+
'maximum',
|
|
35
|
+
'source',
|
|
36
|
+
'target',
|
|
37
|
+
'onDelete',
|
|
38
|
+
]);
|
|
39
|
+
/** Проверяет свойства описания поля и совместимость ограничений с его типом.
|
|
40
|
+
* @example { type: 'string', minLength: 1 } → допустимо; { type: 'number', minLength: 1 } → ошибка.
|
|
41
|
+
*/
|
|
42
|
+
function checkField(path, field) {
|
|
43
|
+
if (!isObject(field))
|
|
44
|
+
throw new Error(`Field ${path} must be an object`);
|
|
45
|
+
assertKnownKeys(field, FIELD_KEYS, path);
|
|
46
|
+
if (typeof field.type !== 'string' || !/^[A-Za-z][A-Za-z0-9_]*(\[\])?$/.test(field.type))
|
|
47
|
+
throw new Error(`Invalid type at ${path}`);
|
|
48
|
+
for (const key of ['required', 'nullable', 'primary', 'readOnly', 'writeOnly'])
|
|
49
|
+
if (field[key] !== undefined && typeof field[key] !== 'boolean')
|
|
50
|
+
throw new Error(`${path}.${key} must be boolean`);
|
|
51
|
+
for (const key of ['description', 'pattern', 'source', 'target'])
|
|
52
|
+
if (field[key] !== undefined && typeof field[key] !== 'string')
|
|
53
|
+
throw new Error(`${path}.${key} must be string`);
|
|
54
|
+
for (const key of ['minLength', 'maxLength', 'minimum', 'maximum'])
|
|
55
|
+
if (field[key] !== undefined && (typeof field[key] !== 'number' || !Number.isFinite(field[key])))
|
|
56
|
+
throw new Error(`${path}.${key} must be finite`);
|
|
57
|
+
for (const key of ['minLength', 'maxLength'])
|
|
58
|
+
if (field[key] !== undefined && (!Number.isSafeInteger(field[key]) || field[key] < 0))
|
|
59
|
+
throw new Error(`${path}.${key} must be nonnegative integer`);
|
|
60
|
+
if (field.readOnly && field.writeOnly)
|
|
61
|
+
throw new Error(`${path}: readOnly and writeOnly conflict`);
|
|
62
|
+
if (field.enum !== undefined && (!Array.isArray(field.enum) || !field.enum.length))
|
|
63
|
+
throw new Error(`${path}: enum must be nonempty array`);
|
|
64
|
+
if (field.generated !== undefined && !['uuid', 'increment'].includes(String(field.generated)))
|
|
65
|
+
throw new Error(`${path}: invalid generated`);
|
|
66
|
+
if (field.generated && (field.default !== undefined || field.writeOnly || field.nullable))
|
|
67
|
+
throw new Error(`${path}: generated conflicts with default, writeOnly or nullable`);
|
|
68
|
+
if (field.generated && field.type !== (field.generated === 'uuid' ? 'string' : 'number'))
|
|
69
|
+
throw new Error(`${path}: generated type mismatch`);
|
|
70
|
+
if (field.primary && (field.nullable || field.required === false || field.writeOnly || !['string', 'number'].includes(field.type) || path.includes('.')))
|
|
71
|
+
throw new Error(`${path}: invalid primary key`);
|
|
72
|
+
if (field.onDelete !== undefined && !['restrict', 'cascade'].includes(String(field.onDelete)))
|
|
73
|
+
throw new Error(`${path}: invalid onDelete`);
|
|
74
|
+
if (field.format !== undefined && !['date', 'date-time', 'email', 'uri', 'uuid'].includes(String(field.format)))
|
|
75
|
+
throw new Error(`${path}: unknown format`);
|
|
76
|
+
const base = field.type.replace(/\[\]$/, '');
|
|
77
|
+
if (base === 'object' && field.enum !== undefined)
|
|
78
|
+
throw new Error(`${path}: enum is supported only for primitive fields`);
|
|
79
|
+
if (['minLength', 'maxLength', 'pattern', 'format'].some((k) => field[k] !== undefined) && base !== 'string')
|
|
80
|
+
throw new Error(`${path}: string constraint on non-string field`);
|
|
81
|
+
if (['minimum', 'maximum'].some((k) => field[k] !== undefined) && base !== 'number')
|
|
82
|
+
throw new Error(`${path}: number constraint on non-number field`);
|
|
83
|
+
if (typeof field.pattern === 'string')
|
|
84
|
+
new RegExp(field.pattern, 'u');
|
|
85
|
+
if (typeof field.minimum === 'number' && typeof field.maximum === 'number' && field.minimum > field.maximum)
|
|
86
|
+
throw new Error(`${path}: minimum exceeds maximum`);
|
|
87
|
+
if (typeof field.minLength === 'number' && typeof field.maxLength === 'number' && field.minLength > field.maxLength)
|
|
88
|
+
throw new Error(`${path}: minLength exceeds maxLength`);
|
|
89
|
+
}
|
|
90
|
+
/** Загружает описание из объекта или JSON-файла, проверяет поля и сопоставляет связи.
|
|
91
|
+
* @example loadModel(undefined) → Promise<undefined>; корректное описание → Promise<Model>.
|
|
92
|
+
*/
|
|
93
|
+
export async function loadModel(source, settings = {}) {
|
|
94
|
+
if (source === undefined)
|
|
95
|
+
return undefined;
|
|
96
|
+
const schema = typeof source === 'string' ? JSON.parse(await readFile(source, 'utf8')) : structuredClone(source);
|
|
97
|
+
const ajv = createValidator();
|
|
98
|
+
if (!isObject(schema) || !Object.keys(schema).length)
|
|
99
|
+
throw new Error('Model schema must be a nonempty object');
|
|
100
|
+
assertKnownKeys(schema, new Set(['models', 'api', 'timestamps', 'softDelete']), 'schema');
|
|
101
|
+
if (!isObject(schema.models) || !Object.keys(schema.models).length)
|
|
102
|
+
throw new Error('schema.models must be a nonempty object');
|
|
103
|
+
const options = recordOptions({ auth: settings.auth, timestamps: schema.timestamps, softDelete: schema.softDelete });
|
|
104
|
+
const defaults = apiFormats(schema.api, apiFormats(settings.api, ['openapi', 'graphql'], 'defaults'), 'schema');
|
|
105
|
+
const model = { entities: [], byName: new Map(), byCollection: new Map(), explicit: true, options };
|
|
106
|
+
for (const [name, definition] of Object.entries(schema.models)) {
|
|
107
|
+
if (!NAME.test(name) || !isSafeKey(name) || PRIMITIVES.has(name) || !isObject(definition))
|
|
108
|
+
throw new Error(`Invalid model ${name}`);
|
|
109
|
+
assertKnownKeys(definition, new Set(['collection', 'api', 'fields', 'timestamps', 'softDelete']), name);
|
|
110
|
+
if (typeof definition.collection !== 'string' || !/^[A-Za-z][A-Za-z0-9_-]*$/.test(definition.collection) || !isSafeKey(definition.collection))
|
|
111
|
+
throw new Error(`Invalid collection for ${name}`);
|
|
112
|
+
if (model.byCollection.has(definition.collection))
|
|
113
|
+
throw new Error(`Duplicate collection ${definition.collection}`);
|
|
114
|
+
const api = apiFormats(definition.api, defaults, name);
|
|
115
|
+
if (!isObject(definition.fields))
|
|
116
|
+
throw new Error(`${name}.fields must be an object`);
|
|
117
|
+
const flags = recordOptions({ timestamps: definition.timestamps, softDelete: definition.softDelete });
|
|
118
|
+
const entity = {
|
|
119
|
+
timestamps: definition.timestamps === undefined ? options.timestamps : flags.timestamps,
|
|
120
|
+
softDelete: definition.softDelete === undefined ? options.softDelete : flags.softDelete,
|
|
121
|
+
name,
|
|
122
|
+
collection: definition.collection,
|
|
123
|
+
api,
|
|
124
|
+
primary: '',
|
|
125
|
+
fields: Object.create(null),
|
|
126
|
+
root: newNode('', { type: 'object' }),
|
|
127
|
+
};
|
|
128
|
+
for (const [path, field] of Object.entries(definition.fields).sort(([a], [b]) => a.split('.').length - b.split('.').length)) {
|
|
129
|
+
checkField(path, field);
|
|
130
|
+
addField(entity, path, field);
|
|
131
|
+
if (field.primary) {
|
|
132
|
+
if (entity.primary)
|
|
133
|
+
throw new Error(`${name}: only one primary key is supported`);
|
|
134
|
+
entity.primary = path;
|
|
135
|
+
fieldAt(entity, path).required = true;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (!entity.primary)
|
|
139
|
+
throw new Error(`${name}: primary key is required`);
|
|
140
|
+
systemFields(entity, options);
|
|
141
|
+
entityValidators.set(entity, ajv);
|
|
142
|
+
model.entities.push(entity);
|
|
143
|
+
model.byName.set(name, entity);
|
|
144
|
+
model.byCollection.set(entity.collection, entity);
|
|
145
|
+
}
|
|
146
|
+
for (const entity of model.entities)
|
|
147
|
+
for (const node of Object.values(entity.fields)) {
|
|
148
|
+
if (PRIMITIVES.has(node.base)) {
|
|
149
|
+
if (node.source !== undefined || node.target !== undefined || node.onDelete !== undefined)
|
|
150
|
+
throw new Error(`${entity.name}.${node.path}: relation metadata on primitive`);
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
const target = model.byName.get(node.base);
|
|
154
|
+
if (!target)
|
|
155
|
+
throw new Error(`Unknown model ${node.base}`);
|
|
156
|
+
if (node.generated || node.default !== undefined || node.enum || node.primary || node.readOnly || node.writeOnly)
|
|
157
|
+
throw new Error(`${entity.name}.${node.path}: invalid relation options`);
|
|
158
|
+
const relation = linkRelation(node, target, node.source ?? entity.primary, node.target ?? target.primary);
|
|
159
|
+
pathParts(relation.source);
|
|
160
|
+
pathParts(relation.target);
|
|
161
|
+
}
|
|
162
|
+
// Выводим отсутствующие поля ключей из связей, без образцов записей.
|
|
163
|
+
let pending = model.entities.flatMap((entity) => Object.values(entity.fields)
|
|
164
|
+
.filter((node) => !!node.relation)
|
|
165
|
+
.map((node) => ({ entity, node })));
|
|
166
|
+
while (pending.length) {
|
|
167
|
+
let progress = false;
|
|
168
|
+
pending = pending.filter(({ entity, node }) => {
|
|
169
|
+
const target = node.relation;
|
|
170
|
+
const targetField = target.fields[node.target];
|
|
171
|
+
const sourceField = entity.fields[node.source];
|
|
172
|
+
if (sourceField && targetField)
|
|
173
|
+
return false;
|
|
174
|
+
if (!sourceField && targetField && ['string', 'number'].includes(targetField.base) && !targetField.relation) {
|
|
175
|
+
addField(entity, node.source, { type: targetField.base + (node.many && node.target === target.primary ? '[]' : ''), ...(node.nullable ? { nullable: true } : {}) }, true);
|
|
176
|
+
progress = true;
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
return true;
|
|
180
|
+
});
|
|
181
|
+
if (pending.length && !progress)
|
|
182
|
+
throw new Error(`Declare ambiguous relation keys: ${pending.map(({ entity, node }) => `${entity.name}.${node.path}`).join(', ')}`);
|
|
183
|
+
}
|
|
184
|
+
for (const entity of model.entities)
|
|
185
|
+
for (const node of Object.values(entity.fields)) {
|
|
186
|
+
if (node.generated && node.path.includes('.'))
|
|
187
|
+
throw new Error(`Generated fields must be root fields: ${entity.name}.${node.path}`);
|
|
188
|
+
if (node.relation) {
|
|
189
|
+
const sourceField = entity.fields[node.source];
|
|
190
|
+
const targetField = node.relation.fields[node.target];
|
|
191
|
+
if (!sourceField || !targetField || sourceField.relation || targetField.relation || !['string', 'number'].includes(sourceField.base) || sourceField.base !== targetField.base)
|
|
192
|
+
throw new Error(`Incompatible relation keys: ${entity.name}.${node.path}`);
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
const schema = valueSchema(node);
|
|
196
|
+
const validate = ajv.compile(schema);
|
|
197
|
+
for (const key of ['default', 'example'])
|
|
198
|
+
if (node[key] !== undefined && !validate(structuredClone(node[key])))
|
|
199
|
+
throw new Error(`Invalid ${key}: ${entity.name}.${node.path}`);
|
|
200
|
+
ajv.removeSchema(schema);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
markRelationKeys(model);
|
|
204
|
+
for (const entity of model.entities) {
|
|
205
|
+
const check = (node, inArray = false, protectedParent = false) => {
|
|
206
|
+
if (inArray && node.readOnly && !protectedParent)
|
|
207
|
+
throw new Error(`Read-only fields inside arrays require a readOnly parent: ${entity.name}.${node.path}`);
|
|
208
|
+
for (const child of Object.values(node.children))
|
|
209
|
+
check(child, inArray || node.many, protectedParent || !!node.readOnly);
|
|
210
|
+
};
|
|
211
|
+
check(entity.root);
|
|
212
|
+
}
|
|
213
|
+
return model;
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=load.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../../../src/core/model/load.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { WriteMode } from '../operations.js';
|
|
2
|
+
import type { Model, Node } from './types.js';
|
|
3
|
+
export type InputMode = 'stored' | WriteMode;
|
|
4
|
+
/** Определяет доступность поля для выбранного режима записи, учитывая защищённые дочерние поля.
|
|
5
|
+
* @example writable({ readOnly: true, … }, 'update') → false.
|
|
6
|
+
*/
|
|
7
|
+
export declare function writable(node: Node, mode: InputMode, relations?: boolean): boolean;
|
|
8
|
+
/** Проверяет наличие явной модели и доступность выбранного формата для её связей.
|
|
9
|
+
* @example assertApi(undefined, 'graphql') → ошибка; согласованная модель → undefined.
|
|
10
|
+
*/
|
|
11
|
+
export declare function assertApi(model: Model | undefined, api: 'graphql' | 'openapi'): asserts model is Model;
|
|
12
|
+
/** Определяет обязательность поля в теле операции, независимо от формата API.
|
|
13
|
+
* @example Обязательное поле без default: create → true; корневое update → false.
|
|
14
|
+
*/
|
|
15
|
+
export declare function requiredInput(node: Node, mode: InputMode, root?: boolean, relations?: boolean): boolean;
|