@antelopejs/interface-data-api 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -22
- package/dist/antelope.test.js +1 -5
- package/dist/antelope.test.js.map +1 -1
- package/dist/components.d.ts +67 -39
- package/dist/components.js +106 -685
- package/dist/components.js.map +1 -1
- package/dist/index.d.ts +57 -68
- package/dist/index.js +114 -100
- package/dist/index.js.map +1 -1
- package/dist/internal/computed.d.ts +6 -0
- package/dist/internal/computed.js +51 -0
- package/dist/internal/computed.js.map +1 -0
- package/dist/internal/controller-types.d.ts +34 -0
- package/dist/internal/controller-types.js +4 -0
- package/dist/internal/controller-types.js.map +1 -0
- package/dist/internal/default-filter.d.ts +4 -0
- package/dist/internal/default-filter.js +29 -0
- package/dist/internal/default-filter.js.map +1 -0
- package/dist/internal/deferred-joined-stream.d.ts +11 -0
- package/dist/internal/deferred-joined-stream.js +125 -0
- package/dist/internal/deferred-joined-stream.js.map +1 -0
- package/dist/internal/extractors.d.ts +25 -0
- package/dist/internal/extractors.js +31 -0
- package/dist/internal/extractors.js.map +1 -0
- package/dist/internal/field-types.d.ts +199 -0
- package/dist/internal/field-types.js +4 -0
- package/dist/internal/field-types.js.map +1 -0
- package/dist/internal/filters.d.ts +6 -0
- package/dist/internal/filters.js +22 -0
- package/dist/internal/filters.js.map +1 -0
- package/dist/internal/foreign.d.ts +6 -0
- package/dist/internal/foreign.js +116 -0
- package/dist/internal/foreign.js.map +1 -0
- package/dist/internal/guards.d.ts +39 -0
- package/dist/internal/guards.js +116 -0
- package/dist/internal/guards.js.map +1 -0
- package/dist/internal/joined.d.ts +28 -0
- package/dist/internal/joined.js +127 -0
- package/dist/internal/joined.js.map +1 -0
- package/dist/internal/list.d.ts +16 -0
- package/dist/internal/list.js +182 -0
- package/dist/internal/list.js.map +1 -0
- package/dist/internal/meta-records.d.ts +19 -0
- package/dist/internal/meta-records.js +78 -0
- package/dist/internal/meta-records.js.map +1 -0
- package/dist/internal/properties.d.ts +4 -0
- package/dist/internal/properties.js +45 -0
- package/dist/internal/properties.js.map +1 -0
- package/dist/internal/prototypes.d.ts +14 -0
- package/dist/internal/prototypes.js +38 -0
- package/dist/internal/prototypes.js.map +1 -0
- package/dist/internal/read-properties.d.ts +3 -0
- package/dist/internal/read-properties.js +29 -0
- package/dist/internal/read-properties.js.map +1 -0
- package/dist/internal/table-reference.d.ts +11 -0
- package/dist/internal/table-reference.js +46 -0
- package/dist/internal/table-reference.js.map +1 -0
- package/dist/internal/tables.d.ts +28 -0
- package/dist/internal/tables.js +48 -0
- package/dist/internal/tables.js.map +1 -0
- package/dist/internal/validation.d.ts +12 -0
- package/dist/internal/validation.js +100 -0
- package/dist/internal/validation.js.map +1 -0
- package/dist/metadata.d.ts +27 -228
- package/dist/metadata.js +84 -213
- package/dist/metadata.js.map +1 -1
- package/dist/tests/components/access_control.test.js +28 -20
- package/dist/tests/components/access_control.test.js.map +1 -1
- package/dist/tests/components/computed.test.js +36 -27
- package/dist/tests/components/computed.test.js.map +1 -1
- package/dist/tests/components/cross_instance.test.js +8 -6
- package/dist/tests/components/cross_instance.test.js.map +1 -1
- package/dist/tests/components/deferred_joined.test.js +57 -54
- package/dist/tests/components/deferred_joined.test.js.map +1 -1
- package/dist/tests/components/extract_generic.test.d.ts +1 -0
- package/dist/tests/components/extract_generic.test.js +64 -0
- package/dist/tests/components/extract_generic.test.js.map +1 -0
- package/dist/tests/components/filter_comparisons.test.d.ts +1 -0
- package/dist/tests/components/filter_comparisons.test.js +34 -0
- package/dist/tests/components/filter_comparisons.test.js.map +1 -0
- package/dist/tests/components/filter_list_route.test.d.ts +1 -0
- package/dist/tests/components/filter_list_route.test.js +182 -0
- package/dist/tests/components/filter_list_route.test.js.map +1 -0
- package/dist/tests/components/filter_options.test.js +11 -10
- package/dist/tests/components/filter_options.test.js.map +1 -1
- package/dist/tests/components/foreign_computed.test.js +23 -14
- package/dist/tests/components/foreign_computed.test.js.map +1 -1
- package/dist/tests/components/foreign_joined.test.js +31 -27
- package/dist/tests/components/foreign_joined.test.js.map +1 -1
- package/dist/tests/components/joined.test.js +59 -45
- package/dist/tests/components/joined.test.js.map +1 -1
- package/dist/tests/components/listable.test.js +78 -58
- package/dist/tests/components/listable.test.js.map +1 -1
- package/dist/tests/components/localized_sort.test.js +14 -11
- package/dist/tests/components/localized_sort.test.js.map +1 -1
- package/dist/tests/components/mandatory.test.js +25 -25
- package/dist/tests/components/mandatory.test.js.map +1 -1
- package/dist/tests/components/modifier_key.test.js +27 -18
- package/dist/tests/components/modifier_key.test.js.map +1 -1
- package/dist/tests/components/parse_body.test.d.ts +1 -0
- package/dist/tests/components/parse_body.test.js +76 -0
- package/dist/tests/components/parse_body.test.js.map +1 -0
- package/dist/tests/components/parsed_value.test.js +23 -21
- package/dist/tests/components/parsed_value.test.js.map +1 -1
- package/dist/tests/components/partial_edit.test.js +38 -32
- package/dist/tests/components/partial_edit.test.js.map +1 -1
- package/dist/tests/components/per_action_access.test.js +20 -12
- package/dist/tests/components/per_action_access.test.js.map +1 -1
- package/dist/tests/components/prototype_named_filter.test.d.ts +1 -0
- package/dist/tests/components/prototype_named_filter.test.js +87 -0
- package/dist/tests/components/prototype_named_filter.test.js.map +1 -0
- package/dist/tests/components/validator.test.js +45 -37
- package/dist/tests/components/validator.test.js.map +1 -1
- package/dist/tests/components/written_row.test.d.ts +1 -0
- package/dist/tests/components/written_row.test.js +99 -0
- package/dist/tests/components/written_row.test.js.map +1 -0
- package/dist/tests/helpers/other-instance.d.ts +11 -1
- package/dist/tests/helpers/other-instance.js +35 -9
- package/dist/tests/helpers/other-instance.js.map +1 -1
- package/dist/tests/index/field_decorator_target.test.d.ts +1 -0
- package/dist/tests/index/field_decorator_target.test.js +20 -0
- package/dist/tests/index/field_decorator_target.test.js.map +1 -0
- package/dist/tests/index/get_guard.test.js +6 -6
- package/dist/tests/index/get_guard.test.js.map +1 -1
- package/dist/tests/index/inheritance.test.js +14 -9
- package/dist/tests/index/inheritance.test.js.map +1 -1
- package/dist/tests/index/metadata_names.test.d.ts +1 -0
- package/dist/tests/index/metadata_names.test.js +91 -0
- package/dist/tests/index/metadata_names.test.js.map +1 -0
- package/dist/tests/index/routes.test.js +49 -44
- package/dist/tests/index/routes.test.js.map +1 -1
- package/dist/tests/integration.test.d.ts +1 -1
- package/dist/tests/integration.test.js +66 -729
- package/dist/tests/integration.test.js.map +1 -1
- package/dist/tests/internal/controller-fields.test.d.ts +1 -0
- package/dist/tests/internal/controller-fields.test.js +25 -0
- package/dist/tests/internal/controller-fields.test.js.map +1 -0
- package/dist/tests/internal/http.d.ts +35 -0
- package/dist/tests/internal/http.js +56 -0
- package/dist/tests/internal/http.js.map +1 -0
- package/dist/tests/internal/shop-api.d.ts +1 -0
- package/dist/tests/internal/shop-api.js +331 -0
- package/dist/tests/internal/shop-api.js.map +1 -0
- package/dist/tests/internal/shop-schema.d.ts +162 -0
- package/dist/tests/internal/shop-schema.js +387 -0
- package/dist/tests/internal/shop-schema.js.map +1 -0
- package/dist/tests/utils.d.ts +8 -10
- package/dist/tests/utils.js +1 -3
- package/dist/tests/utils.js.map +1 -1
- package/dist/tests/utils.test.js +10 -11
- package/dist/tests/utils.test.js.map +1 -1
- package/docs/1.introduction.md +38 -35
- package/docs/10.joined.md +51 -40
- package/docs/11.computed.md +91 -47
- package/docs/2.data-controllers.md +50 -42
- package/docs/3.routes.md +156 -134
- package/docs/4.access-rights.md +48 -44
- package/docs/5.validators.md +65 -47
- package/docs/6.listable.md +53 -49
- package/docs/7.foreign-keys.md +55 -48
- package/docs/8.filters.md +65 -54
- package/docs/9.modifiers.md +29 -25
- package/package.json +34 -13
- package/skills/data-api-interface/SKILL.md +13 -3
- package/skills/data-api-interface/cases.json +99 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/internal/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** @internal @packageDocumentation */
|
|
2
|
+
import type { FieldData, ForeignJoinedRef } from "./field-types";
|
|
3
|
+
/** Copies into `dst` the entries of `src` it lacks. */
|
|
4
|
+
export declare function merge<Value>(src: Record<string, Value>, dst: Record<string, Value>): void;
|
|
5
|
+
/** The entry `table` holds under `key` itself, not one it inherits. */
|
|
6
|
+
export declare function ownEntry<Value>(table: Record<string, Value>, key: string): Value | undefined;
|
|
7
|
+
/** Rebuilds the fields each list mode plucks from the fields' listable modes. */
|
|
8
|
+
export declare function rebuildPluck(pluck: Record<string, Set<string>>, fields: Record<string, FieldData>): void;
|
|
9
|
+
/**
|
|
10
|
+
* The `@Joined` fields of a relation target that `pluck` names, or all of
|
|
11
|
+
* them when `pluck` is unset; `undefined` when there are none.
|
|
12
|
+
*/
|
|
13
|
+
export declare function targetJoinedFields(fields: Record<string, FieldData>, pluck?: string[]): ForeignJoinedRef[] | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* The database fields a listable field selects: itself (`true`), none
|
|
16
|
+
* (`false`) or the given ones, plus the field and its local key when it is
|
|
17
|
+
* joined and selects any.
|
|
18
|
+
*/
|
|
19
|
+
export declare function listedNames(name: string, requiredFields: boolean | string[], field: FieldData): string[];
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** @internal @packageDocumentation */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.merge = merge;
|
|
5
|
+
exports.ownEntry = ownEntry;
|
|
6
|
+
exports.rebuildPluck = rebuildPluck;
|
|
7
|
+
exports.targetJoinedFields = targetJoinedFields;
|
|
8
|
+
exports.listedNames = listedNames;
|
|
9
|
+
/** Copies into `dst` the entries of `src` it lacks. */
|
|
10
|
+
function merge(src, dst) {
|
|
11
|
+
for (const key in src) {
|
|
12
|
+
if (!Object.hasOwn(dst, key)) {
|
|
13
|
+
dst[key] = src[key];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/** The entry `table` holds under `key` itself, not one it inherits. */
|
|
18
|
+
function ownEntry(table, key) {
|
|
19
|
+
return Object.hasOwn(table, key) ? table[key] : undefined;
|
|
20
|
+
}
|
|
21
|
+
/** Rebuilds the fields each list mode plucks from the fields' listable modes. */
|
|
22
|
+
function rebuildPluck(pluck, fields) {
|
|
23
|
+
for (const set of Object.values(pluck)) {
|
|
24
|
+
set.clear();
|
|
25
|
+
}
|
|
26
|
+
for (const [_, field] of Object.entries(fields)) {
|
|
27
|
+
if (field.listable) {
|
|
28
|
+
for (const [mode, names] of Object.entries(field.listable)) {
|
|
29
|
+
const modeNames = Object.hasOwn(pluck, mode) ? pluck[mode] : undefined;
|
|
30
|
+
const set = modeNames ?? new Set();
|
|
31
|
+
pluck[mode] = set;
|
|
32
|
+
for (const name of names) {
|
|
33
|
+
set.add(name);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The `@Joined` fields of a relation target that `pluck` names, or all of
|
|
41
|
+
* them when `pluck` is unset; `undefined` when there are none.
|
|
42
|
+
*/
|
|
43
|
+
function targetJoinedFields(fields, pluck) {
|
|
44
|
+
const pluckSet = pluck ? new Set(pluck) : undefined;
|
|
45
|
+
const groups = [];
|
|
46
|
+
for (const [fieldName, field] of Object.entries(fields)) {
|
|
47
|
+
if (!field.joined || (pluckSet && !pluckSet.has(fieldName))) {
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
const j = field.joined;
|
|
51
|
+
groups.push({
|
|
52
|
+
name: fieldName,
|
|
53
|
+
table: j.table,
|
|
54
|
+
tableClass: j.tableClass,
|
|
55
|
+
localKey: j.localKey,
|
|
56
|
+
remoteField: j.remoteField,
|
|
57
|
+
remoteIndex: j.remoteIndex,
|
|
58
|
+
schemaName: j.schemaName,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
return groups.length > 0 ? groups : undefined;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The database fields a listable field selects: itself (`true`), none
|
|
65
|
+
* (`false`) or the given ones, plus the field and its local key when it is
|
|
66
|
+
* joined and selects any.
|
|
67
|
+
*/
|
|
68
|
+
function listedNames(name, requiredFields, field) {
|
|
69
|
+
const baseNames = requiredFields === true
|
|
70
|
+
? [name]
|
|
71
|
+
: requiredFields === false
|
|
72
|
+
? []
|
|
73
|
+
: requiredFields;
|
|
74
|
+
return baseNames.length > 0 && field.joined
|
|
75
|
+
? Array.from(new Set([...baseNames, name, field.joined.localKey]))
|
|
76
|
+
: baseNames;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=meta-records.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta-records.js","sourceRoot":"","sources":["../../src/internal/meta-records.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** @internal @packageDocumentation */
|
|
2
|
+
import type { Query } from "../components";
|
|
3
|
+
import type { DataAPIMeta, DataControllerInstance, RowFields } from "../metadata";
|
|
4
|
+
export declare function WriteProperties(obj: DataControllerInstance, meta: DataAPIMeta, bodyData: Parameters<typeof Query.WriteProperties>[2], action?: string, existingDBData?: Parameters<typeof Query.WriteProperties>[4]): RowFields;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** @internal @packageDocumentation */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.WriteProperties = WriteProperties;
|
|
5
|
+
const prototypes_1 = require("./prototypes");
|
|
6
|
+
function writableInBody(writable, bodyData) {
|
|
7
|
+
return {
|
|
8
|
+
props: writable.props.filter(([key]) => Object.hasOwn(bodyData, key)),
|
|
9
|
+
setters: writable.setters.filter(([key]) => Object.hasOwn(bodyData, key)),
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function writeTargetDefaults(instance, meta, dbData) {
|
|
13
|
+
const defaults = Object.entries(new meta.target());
|
|
14
|
+
for (const [key, value] of defaults) {
|
|
15
|
+
if (value !== undefined) {
|
|
16
|
+
instance[key] = value;
|
|
17
|
+
if (key in meta.fields) {
|
|
18
|
+
dbData[meta.fields[key].dbName || key] = value;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function WriteProperties(obj, meta, bodyData, action, existingDBData) {
|
|
24
|
+
const actionWritable = meta.writable[action ?? "_default"] ?? meta.writable._default;
|
|
25
|
+
const writable = existingDBData
|
|
26
|
+
? writableInBody(actionWritable, bodyData)
|
|
27
|
+
: actionWritable;
|
|
28
|
+
const instance = (0, prototypes_1.fieldsOf)({ ...obj });
|
|
29
|
+
const dbData = existingDBData || {};
|
|
30
|
+
Object.setPrototypeOf(dbData, (0, prototypes_1.prototypeOf)(meta.tableClass));
|
|
31
|
+
if (!existingDBData) {
|
|
32
|
+
writeTargetDefaults(instance, meta, dbData);
|
|
33
|
+
}
|
|
34
|
+
for (const [key, field] of writable.props) {
|
|
35
|
+
instance[key] = bodyData[key];
|
|
36
|
+
dbData[field.dbName || key] = bodyData[key];
|
|
37
|
+
}
|
|
38
|
+
instance.table = dbData;
|
|
39
|
+
Object.setPrototypeOf(instance, (0, prototypes_1.prototypeOf)(meta.target));
|
|
40
|
+
for (const [key, field] of writable.setters) {
|
|
41
|
+
field.desc?.set?.apply(instance, [bodyData[key]]);
|
|
42
|
+
}
|
|
43
|
+
return dbData;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=properties.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"properties.js","sourceRoot":"","sources":["../../src/internal/properties.ts"],"names":[],"mappings":";AAAA,sCAAsC;;AAqCtC,0CA4BC;AAxDD,6CAAqD;AAErD,SAAS,cAAc,CACrB,QAA8B,EAC9B,QAAqD;IAErD,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACrE,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;KAC1E,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,QAAmB,EACnB,IAAiB,EACjB,MAAiB;IAEjB,MAAM,QAAQ,GAAwB,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACxE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;QACpC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACtB,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC;YACjD,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAgB,eAAe,CAC7B,GAA2B,EAC3B,IAAiB,EACjB,QAAqD,EACrD,MAAe,EACf,cAA4D;IAE5D,MAAM,cAAc,GAClB,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAChE,MAAM,QAAQ,GAAG,cAAc;QAC7B,CAAC,CAAC,cAAc,CAAC,cAAc,EAAE,QAAQ,CAAC;QAC1C,CAAC,CAAC,cAAc,CAAC;IACnB,MAAM,QAAQ,GAAG,IAAA,qBAAQ,EAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;IACtC,MAAM,MAAM,GAAc,cAAc,IAAI,EAAE,CAAC;IAC/C,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAA,wBAAW,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5D,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,mBAAmB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC1C,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAA,wBAAW,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** @internal @packageDocumentation */
|
|
2
|
+
import type { Class } from "@antelopejs/interface-core/decorators";
|
|
3
|
+
import type { DataControllerInstance } from "./controller-types";
|
|
4
|
+
import type { RowFields } from "./field-types";
|
|
5
|
+
/**
|
|
6
|
+
* A controller instance read by field name: an object answers every string key,
|
|
7
|
+
* with `undefined` for a field it lacks, and inherited accessors run on the
|
|
8
|
+
* instance, because this is the instance itself.
|
|
9
|
+
*/
|
|
10
|
+
export declare function fieldsOf(instance: DataControllerInstance): RowFields;
|
|
11
|
+
/** The object the instances of a class inherit from. */
|
|
12
|
+
export declare function prototypeOf(target: Class): object;
|
|
13
|
+
/** The class an instance was built from, read from its prototype. */
|
|
14
|
+
export declare function classOf(instance: DataControllerInstance): Class<object>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** @internal @packageDocumentation */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.fieldsOf = fieldsOf;
|
|
5
|
+
exports.prototypeOf = prototypeOf;
|
|
6
|
+
exports.classOf = classOf;
|
|
7
|
+
const guards_1 = require("./guards");
|
|
8
|
+
/**
|
|
9
|
+
* A controller instance read by field name: an object answers every string key,
|
|
10
|
+
* with `undefined` for a field it lacks, and inherited accessors run on the
|
|
11
|
+
* instance, because this is the instance itself.
|
|
12
|
+
*/
|
|
13
|
+
function fieldsOf(instance) {
|
|
14
|
+
if (!holdsFields(instance)) {
|
|
15
|
+
throw new TypeError("A data controller must be an object.");
|
|
16
|
+
}
|
|
17
|
+
return instance;
|
|
18
|
+
}
|
|
19
|
+
function holdsFields(instance) {
|
|
20
|
+
return (0, guards_1.isObject)(instance);
|
|
21
|
+
}
|
|
22
|
+
/** The object the instances of a class inherit from. */
|
|
23
|
+
function prototypeOf(target) {
|
|
24
|
+
const prototype = target.prototype;
|
|
25
|
+
if (!(0, guards_1.isObject)(prototype)) {
|
|
26
|
+
throw new TypeError("A class prototype must be an object.");
|
|
27
|
+
}
|
|
28
|
+
return prototype;
|
|
29
|
+
}
|
|
30
|
+
/** The class an instance was built from, read from its prototype. */
|
|
31
|
+
function classOf(instance) {
|
|
32
|
+
const prototype = Object.getPrototypeOf(instance);
|
|
33
|
+
if (!(0, guards_1.isObject)(prototype) || !(0, guards_1.isClass)(prototype.constructor)) {
|
|
34
|
+
throw new TypeError("A data controller must be a class instance.");
|
|
35
|
+
}
|
|
36
|
+
return prototype.constructor;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=prototypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prototypes.js","sourceRoot":"","sources":["../../src/internal/prototypes.ts"],"names":[],"mappings":";AAAA,sCAAsC;;AAatC,4BAKC;AAOD,kCAMC;AAGD,0BAMC;AAlCD,qCAA6C;AAE7C;;;;GAIG;AACH,SAAgB,QAAQ,CAAC,QAAgC;IACvD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,WAAW,CAAC,QAAgC;IACnD,OAAO,IAAA,iBAAQ,EAAC,QAAQ,CAAC,CAAC;AAC5B,CAAC;AAED,wDAAwD;AACxD,SAAgB,WAAW,CAAC,MAAa;IACvC,MAAM,SAAS,GAAY,MAAM,CAAC,SAAS,CAAC;IAC5C,IAAI,CAAC,IAAA,iBAAQ,EAAC,SAAS,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,qEAAqE;AACrE,SAAgB,OAAO,CAAC,QAAgC;IACtD,MAAM,SAAS,GAAY,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC3D,IAAI,CAAC,IAAA,iBAAQ,EAAC,SAAS,CAAC,IAAI,CAAC,IAAA,gBAAO,EAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,SAAS,CAAC,WAAW,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/** @internal @packageDocumentation */
|
|
2
|
+
import type { DataAPIMeta, DataControllerInstance, RowFields } from "../metadata";
|
|
3
|
+
export declare function ReadProperties(obj: DataControllerInstance, meta: DataAPIMeta, dbData: RowFields, action?: string, onlyList?: boolean): Promise<RowFields>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** @internal @packageDocumentation */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.ReadProperties = ReadProperties;
|
|
5
|
+
const guards_1 = require("./guards");
|
|
6
|
+
const prototypes_1 = require("./prototypes");
|
|
7
|
+
async function ReadProperties(obj, meta, dbData, action, onlyList) {
|
|
8
|
+
const readable = meta.readable[action ?? "_default"] ?? meta.readable._default;
|
|
9
|
+
const instance = (0, prototypes_1.fieldsOf)({ ...obj });
|
|
10
|
+
const res = {};
|
|
11
|
+
for (const [key, field] of readable.props) {
|
|
12
|
+
if (onlyList && !field.listable) {
|
|
13
|
+
continue;
|
|
14
|
+
}
|
|
15
|
+
instance[key] = dbData[field.dbName || key];
|
|
16
|
+
res[key] = dbData[field.dbName || key];
|
|
17
|
+
}
|
|
18
|
+
instance.table = dbData;
|
|
19
|
+
Object.setPrototypeOf(instance, (0, prototypes_1.prototypeOf)(meta.target));
|
|
20
|
+
for (const [key, field] of readable.getters) {
|
|
21
|
+
if (onlyList && !field.listable) {
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
const val = field.desc?.get?.apply(instance);
|
|
25
|
+
res[key] = await ((0, guards_1.isFunction)(val) ? val() : val);
|
|
26
|
+
}
|
|
27
|
+
return res;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=read-properties.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-properties.js","sourceRoot":"","sources":["../../src/internal/read-properties.ts"],"names":[],"mappings":";AAAA,sCAAsC;;AAUtC,wCA4BC;AA/BD,qCAAsC;AACtC,6CAAqD;AAE9C,KAAK,UAAU,cAAc,CAClC,GAA2B,EAC3B,IAAiB,EACjB,MAAiB,EACjB,MAAe,EACf,QAAkB;IAElB,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAChE,MAAM,QAAQ,GAAG,IAAA,qBAAQ,EAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;IACtC,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC1C,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAChC,SAAS;QACX,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;QAC5C,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;IACzC,CAAC;IACD,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAA,wBAAW,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC5C,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAChC,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAY,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACtD,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAA,mBAAU,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** @internal @packageDocumentation */
|
|
2
|
+
import type { Class } from "@antelopejs/interface-core/decorators";
|
|
3
|
+
import { type Table } from "@antelopejs/interface-database-decorators";
|
|
4
|
+
interface ResolvedTableReference {
|
|
5
|
+
tableName: string;
|
|
6
|
+
tableClass?: Class<Table>;
|
|
7
|
+
/** `undefined` means same schema as the source DataAPI. */
|
|
8
|
+
schemaName?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function resolveTableReference(sourceSchemaName: string, table: string | Class<Table>, explicitSchema: string | undefined, contextLabel: string): ResolvedTableReference;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** @internal @packageDocumentation */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.resolveTableReference = resolveTableReference;
|
|
5
|
+
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
6
|
+
const guards_1 = require("./guards");
|
|
7
|
+
function readTableMetadata(table) {
|
|
8
|
+
const meta = (0, interface_database_decorators_1.getMetadata)(table, interface_database_decorators_1.DatumStaticMetadata);
|
|
9
|
+
return { schemaName: meta?.schemaName, tableName: meta?.tableName };
|
|
10
|
+
}
|
|
11
|
+
function resolveTableReference(sourceSchemaName, table, explicitSchema, contextLabel) {
|
|
12
|
+
if (!(0, guards_1.isString)(table)) {
|
|
13
|
+
const inferred = readTableMetadata(table);
|
|
14
|
+
const schemaName = explicitSchema ?? inferred.schemaName;
|
|
15
|
+
const tableName = inferred.tableName;
|
|
16
|
+
if (!schemaName || !tableName) {
|
|
17
|
+
throw new Error(`Unable to infer table name/schema for ${contextLabel}: pass @RegisterTable on the table class`);
|
|
18
|
+
}
|
|
19
|
+
if (explicitSchema &&
|
|
20
|
+
inferred.schemaName &&
|
|
21
|
+
explicitSchema !== inferred.schemaName) {
|
|
22
|
+
throw new Error(`Schema mismatch for ${contextLabel}: class registers in "${inferred.schemaName}" but option specifies "${explicitSchema}"`);
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
tableName,
|
|
26
|
+
tableClass: table,
|
|
27
|
+
schemaName: schemaName === sourceSchemaName ? undefined : schemaName,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
const targetSchema = explicitSchema ?? sourceSchemaName;
|
|
31
|
+
const databaseSchema = (0, interface_database_decorators_1.getTablesForSchema)(targetSchema);
|
|
32
|
+
if (!databaseSchema) {
|
|
33
|
+
throw new Error(`Schema "${targetSchema}" not found for ${contextLabel}`);
|
|
34
|
+
}
|
|
35
|
+
const tableClass = databaseSchema[table];
|
|
36
|
+
const isOtherSchema = targetSchema !== sourceSchemaName;
|
|
37
|
+
if (isOtherSchema && !tableClass) {
|
|
38
|
+
throw new Error(`Table "${table}" is not registered in schema "${targetSchema}" for ${contextLabel}: register its class with @RegisterTable before declaring the field`);
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
tableName: table,
|
|
42
|
+
tableClass,
|
|
43
|
+
schemaName: isOtherSchema ? targetSchema : undefined,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=table-reference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-reference.js","sourceRoot":"","sources":["../../src/internal/table-reference.ts"],"names":[],"mappings":";AAAA,sCAAsC;;AAwBtC,sDAgDC;AArED,6FAKmD;AAEnD,qCAAoC;AASpC,SAAS,iBAAiB,CAAC,KAAmB;IAC5C,MAAM,IAAI,GAAG,IAAA,2CAAW,EAAC,KAAK,EAAE,mDAAmB,CAAC,CAAC;IACrD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACtE,CAAC;AAED,SAAgB,qBAAqB,CACnC,gBAAwB,EACxB,KAA4B,EAC5B,cAAkC,EAClC,YAAoB;IAEpB,IAAI,CAAC,IAAA,iBAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,cAAc,IAAI,QAAQ,CAAC,UAAU,CAAC;QACzD,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,yCAAyC,YAAY,0CAA0C,CAChG,CAAC;QACJ,CAAC;QACD,IACE,cAAc;YACd,QAAQ,CAAC,UAAU;YACnB,cAAc,KAAK,QAAQ,CAAC,UAAU,EACtC,CAAC;YACD,MAAM,IAAI,KAAK,CACb,uBAAuB,YAAY,yBAAyB,QAAQ,CAAC,UAAU,2BAA2B,cAAc,GAAG,CAC5H,CAAC;QACJ,CAAC;QACD,OAAO;YACL,SAAS;YACT,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,UAAU,KAAK,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;SACrE,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,cAAc,IAAI,gBAAgB,CAAC;IACxD,MAAM,cAAc,GAAG,IAAA,kDAAkB,EAAC,YAAY,CAAC,CAAC;IACxD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,WAAW,YAAY,mBAAmB,YAAY,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,aAAa,GAAG,YAAY,KAAK,gBAAgB,CAAC;IACxD,IAAI,aAAa,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,UAAU,KAAK,kCAAkC,YAAY,SAAS,YAAY,qEAAqE,CACxJ,CAAC;IACJ,CAAC;IACD,OAAO;QACL,SAAS,EAAE,KAAK;QAChB,UAAU;QACV,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;KACrD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** @internal @packageDocumentation */
|
|
2
|
+
import type { Constructible } from "@antelopejs/interface-database-decorators/common";
|
|
3
|
+
import type { DataModel } from "@antelopejs/interface-database-decorators/model";
|
|
4
|
+
import type { SchemaInstance, Table, ValueProxy } from "@antelopejs/interface-database";
|
|
5
|
+
import type { ComputedFieldData, RowFields } from "../metadata";
|
|
6
|
+
export type TableRow = Parameters<ComputedFieldData["expr"]>[0];
|
|
7
|
+
/**
|
|
8
|
+
* The database model a controller holds under its `@ModelReference` field,
|
|
9
|
+
* typed by the table rows it reads.
|
|
10
|
+
*/
|
|
11
|
+
export type ModelInstance = InstanceType<DataModel<RowFields>> & {
|
|
12
|
+
constructor: DataModel<RowFields>;
|
|
13
|
+
};
|
|
14
|
+
/** Whether a value is a database model: its table, and its row conversion. */
|
|
15
|
+
export declare function isModelInstance(value: unknown): value is ModelInstance;
|
|
16
|
+
export interface TableTargetReference {
|
|
17
|
+
table: string;
|
|
18
|
+
tableClass?: Constructible;
|
|
19
|
+
schemaName?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function targetTable(sourceDb: SchemaInstance<any>, target: TableTargetReference): Table<any>;
|
|
22
|
+
/**
|
|
23
|
+
* The lookup side of a relation: `table` reduced to `fields`, with the
|
|
24
|
+
* internal fields the modifiers keep. A plucked table is a staged selection
|
|
25
|
+
* the database accepts wherever it takes a table, but its type is a stream.
|
|
26
|
+
*/
|
|
27
|
+
export declare function pluckedTable(table: Table<any>, ...fields: string[]): Table<any>;
|
|
28
|
+
export declare function Get<T extends object>(table: Table<T>, id: string | ValueProxy<string>, index?: string): import("@antelopejs/interface-database").SingleSelection<T> | import("@antelopejs/interface-database").Datum<T | null>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** @internal @packageDocumentation */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.isModelInstance = isModelInstance;
|
|
5
|
+
exports.targetTable = targetTable;
|
|
6
|
+
exports.pluckedTable = pluckedTable;
|
|
7
|
+
exports.Get = Get;
|
|
8
|
+
const interface_api_util_1 = require("@antelopejs/interface-api-util");
|
|
9
|
+
const guards_1 = require("./guards");
|
|
10
|
+
/** Whether a value is a database model: its table, and its row conversion. */
|
|
11
|
+
function isModelInstance(value) {
|
|
12
|
+
return ((0, guards_1.isObject)(value) &&
|
|
13
|
+
"table" in value &&
|
|
14
|
+
(0, guards_1.isObject)(value.table) &&
|
|
15
|
+
"database" in value &&
|
|
16
|
+
(0, guards_1.isObject)(value.database) &&
|
|
17
|
+
"fromDatabase" in value.constructor &&
|
|
18
|
+
(0, guards_1.isFunction)(value.constructor.fromDatabase));
|
|
19
|
+
}
|
|
20
|
+
function isTableClass(value) {
|
|
21
|
+
return ((0, guards_1.isFunction)(value) &&
|
|
22
|
+
"table" in value &&
|
|
23
|
+
(0, guards_1.isFunction)(value.table) &&
|
|
24
|
+
"with" in value &&
|
|
25
|
+
(0, guards_1.isFunction)(value.with));
|
|
26
|
+
}
|
|
27
|
+
function targetTable(sourceDb, target) {
|
|
28
|
+
if (!target.schemaName)
|
|
29
|
+
return sourceDb.table(target.table);
|
|
30
|
+
(0, interface_api_util_1.assert)(isTableClass(target.tableClass), 500, `Table "${target.table}" of schema "${target.schemaName}" has no registered table class`);
|
|
31
|
+
return target.tableClass.table();
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The lookup side of a relation: `table` reduced to `fields`, with the
|
|
35
|
+
* internal fields the modifiers keep. A plucked table is a staged selection
|
|
36
|
+
* the database accepts wherever it takes a table, but its type is a stream.
|
|
37
|
+
*/
|
|
38
|
+
function pluckedTable(table, ...fields) {
|
|
39
|
+
// SAFETY: pluck returns a Stream, which has none of Table's own methods; pluckedTable is only called in joined.ts and foreign.ts to build the right-hand side of lookup, and lookup reads that argument only through its stage list (build()), which the pluck stage extends.
|
|
40
|
+
return table.pluck("_internal", ...fields);
|
|
41
|
+
}
|
|
42
|
+
function Get(table, id, index) {
|
|
43
|
+
if (!index)
|
|
44
|
+
return table.get(id);
|
|
45
|
+
const key = (0, guards_1.isString)(id) ? id : id.cast();
|
|
46
|
+
return table.getAll(key, index).nth(0);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=tables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tables.js","sourceRoot":"","sources":["../../src/internal/tables.ts"],"names":[],"mappings":";AAAA,sCAAsC;;AA0BtC,0CAUC;AAoBD,kCAWC;AAOD,oCAMC;AAED,kBAQC;AAxFD,uEAAwD;AAWxD,qCAA0D;AAY1D,8EAA8E;AAC9E,SAAgB,eAAe,CAAC,KAAc;IAC5C,OAAO,CACL,IAAA,iBAAQ,EAAC,KAAK,CAAC;QACf,OAAO,IAAI,KAAK;QAChB,IAAA,iBAAQ,EAAC,KAAK,CAAC,KAAK,CAAC;QACrB,UAAU,IAAI,KAAK;QACnB,IAAA,iBAAQ,EAAC,KAAK,CAAC,QAAQ,CAAC;QACxB,cAAc,IAAI,KAAK,CAAC,WAAW;QACnC,IAAA,mBAAU,EAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAC3C,CAAC;AACJ,CAAC;AAQD,SAAS,YAAY,CACnB,KAAgC;IAEhC,OAAO,CACL,IAAA,mBAAU,EAAC,KAAK,CAAC;QACjB,OAAO,IAAI,KAAK;QAChB,IAAA,mBAAU,EAAC,KAAK,CAAC,KAAK,CAAC;QACvB,MAAM,IAAI,KAAK;QACf,IAAA,mBAAU,EAAC,KAAK,CAAC,IAAI,CAAC,CACvB,CAAC;AACJ,CAAC;AAED,SAAgB,WAAW,CACzB,QAA6B,EAC7B,MAA4B;IAE5B,IAAI,CAAC,MAAM,CAAC,UAAU;QAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5D,IAAA,2BAAM,EACJ,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,EAC/B,GAAG,EACH,UAAU,MAAM,CAAC,KAAK,gBAAgB,MAAM,CAAC,UAAU,iCAAiC,CACzF,CAAC;IACF,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,SAAgB,YAAY,CAC1B,KAAiB,EACjB,GAAG,MAAgB;IAEnB,8QAA8Q;IAC9Q,OAAO,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,MAAM,CAAe,CAAC;AAC3D,CAAC;AAED,SAAgB,GAAG,CACjB,KAAe,EACf,EAA+B,EAC/B,KAAc;IAEd,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,IAAA,iBAAQ,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAA6B,CAAC;IACrE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** @internal @packageDocumentation */
|
|
2
|
+
import type { ValueProxy } from "@antelopejs/interface-database";
|
|
3
|
+
import type { Validation } from "../components";
|
|
4
|
+
import type { DataAPIMeta, DataControllerInstance, RowFields } from "../metadata";
|
|
5
|
+
type RequestBody = Validation.RequestBody;
|
|
6
|
+
type WrittenBody = Validation.WrittenBody;
|
|
7
|
+
export declare function ParseBody(body: WrittenBody): RequestBody;
|
|
8
|
+
export declare function Lock(obj: DataControllerInstance, meta: DataAPIMeta, data: RowFields, written: string[]): void;
|
|
9
|
+
export declare function Unlock(obj: DataControllerInstance, meta: DataAPIMeta, dbData: RowFields): void;
|
|
10
|
+
export declare function UnlockRequest<T extends {}, K extends keyof T>(obj: DataControllerInstance, meta: DataAPIMeta, row: ValueProxy<T>, field: K): ValueProxy<T[K]>;
|
|
11
|
+
export declare function ClearInternal(meta: DataAPIMeta, obj: Parameters<typeof Validation.ClearInternal>[1]): void;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** @internal @packageDocumentation */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.ParseBody = ParseBody;
|
|
5
|
+
exports.Lock = Lock;
|
|
6
|
+
exports.Unlock = Unlock;
|
|
7
|
+
exports.UnlockRequest = UnlockRequest;
|
|
8
|
+
exports.ClearInternal = ClearInternal;
|
|
9
|
+
const interface_api_util_1 = require("@antelopejs/interface-api-util");
|
|
10
|
+
const common_1 = require("@antelopejs/interface-database-decorators/modifiers/common");
|
|
11
|
+
const prototypes_1 = require("./prototypes");
|
|
12
|
+
const guards_1 = require("./guards");
|
|
13
|
+
function ParseBody(body) {
|
|
14
|
+
let data = body;
|
|
15
|
+
if (Buffer.isBuffer(body)) {
|
|
16
|
+
try {
|
|
17
|
+
data = JSON.parse(body.toString());
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
(0, interface_api_util_1.assert)(false, 400, "Invalid JSON body.");
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
(0, interface_api_util_1.assert)((0, guards_1.isFieldValues)(data), 400, "The request body must be a JSON object.");
|
|
24
|
+
return data;
|
|
25
|
+
}
|
|
26
|
+
function Lock(obj, meta, data, written) {
|
|
27
|
+
for (const [modifier, field] of meta.modifierKeys.entries()) {
|
|
28
|
+
const keyed = modifier;
|
|
29
|
+
const key = (0, prototypes_1.fieldsOf)(obj)[field];
|
|
30
|
+
(0, common_1.lock)(data, keyed, written, key);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function Unlock(obj, meta, dbData) {
|
|
34
|
+
for (const [name, field] of Object.entries(meta.fields)) {
|
|
35
|
+
if (field.foreign && (0, guards_1.isObject)(dbData[name]) && field.foreign[1]) {
|
|
36
|
+
const foreignSchema = field.foreign[1];
|
|
37
|
+
dbData[name] = Array.isArray(dbData[name])
|
|
38
|
+
? dbData[name].map((entry) => (0, common_1.fromDatabase)(entry, foreignSchema))
|
|
39
|
+
: (0, common_1.fromDatabase)(dbData[name], field.foreign[1]);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
for (const [modifier, field] of meta.modifierKeys.entries()) {
|
|
43
|
+
const keyed = modifier;
|
|
44
|
+
const key = (0, prototypes_1.fieldsOf)(obj)[field];
|
|
45
|
+
(0, common_1.unlock)(dbData, keyed, undefined, key);
|
|
46
|
+
for (const [foreign, fieldData] of Object.entries(meta.fields)) {
|
|
47
|
+
const related = dbData[foreign];
|
|
48
|
+
if (fieldData.foreign && (0, guards_1.isObject)(related)) {
|
|
49
|
+
(0, common_1.unlock)(related, keyed, undefined, key);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function UnlockRequest(obj, meta, row, field) {
|
|
55
|
+
const modifiers = Array.from(meta.modifierKeys.entries()).map(([modifier, field]) => ({
|
|
56
|
+
modifier,
|
|
57
|
+
args: [(0, prototypes_1.fieldsOf)(obj)[field]],
|
|
58
|
+
}));
|
|
59
|
+
return (0, common_1.unlockrequest)(meta.tableClass, row, field, modifiers);
|
|
60
|
+
}
|
|
61
|
+
function ClearInternal(meta, obj) {
|
|
62
|
+
const results = Array.isArray(obj) ? obj : [obj];
|
|
63
|
+
const foreignFields = Object.entries(meta.fields).filter(([, field]) => field.foreign);
|
|
64
|
+
for (const entry of results) {
|
|
65
|
+
delete entry._internal;
|
|
66
|
+
for (const [name, { foreign }] of foreignFields) {
|
|
67
|
+
if (foreign &&
|
|
68
|
+
(0, guards_1.isObject)(entry[name]) &&
|
|
69
|
+
(!Array.isArray(entry[name]) ||
|
|
70
|
+
entry[name][0] === null ||
|
|
71
|
+
(0, guards_1.isObject)(entry[name][0]))) {
|
|
72
|
+
const processForeign = (data) => {
|
|
73
|
+
const plain = (0, common_1.toPlainData)(data);
|
|
74
|
+
if (!foreign?.[4]) {
|
|
75
|
+
return plain;
|
|
76
|
+
}
|
|
77
|
+
const targetJoined = foreign[6];
|
|
78
|
+
if (targetJoined?.length) {
|
|
79
|
+
const joinedNames = new Set(targetJoined.map((g) => g.name));
|
|
80
|
+
const physicalKeys = foreign[4].filter((k) => !joinedNames.has(k));
|
|
81
|
+
if (physicalKeys.length > 0 &&
|
|
82
|
+
physicalKeys.every((k) => plain[k] === null || plain[k] === undefined)) {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const plainPlucked = {};
|
|
87
|
+
for (const key of foreign[4]) {
|
|
88
|
+
const value = plain[key];
|
|
89
|
+
plainPlucked[key] = value;
|
|
90
|
+
}
|
|
91
|
+
return plainPlucked;
|
|
92
|
+
};
|
|
93
|
+
entry[name] = Array.isArray(entry[name])
|
|
94
|
+
? entry[name].map(processForeign)
|
|
95
|
+
: processForeign(entry[name]);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/internal/validation.ts"],"names":[],"mappings":"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"}
|