@antelopejs/interface-data-api 0.5.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 +57 -37
- package/dist/components.js +36 -68
- package/dist/components.js.map +1 -1
- package/dist/index.d.ts +44 -60
- package/dist/index.js +22 -10
- package/dist/index.js.map +1 -1
- package/dist/internal/computed.js +12 -4
- package/dist/internal/computed.js.map +1 -1
- package/dist/internal/controller-types.d.ts +19 -4
- package/dist/internal/default-filter.js +11 -1
- package/dist/internal/default-filter.js.map +1 -1
- package/dist/internal/deferred-joined-stream.js +40 -27
- package/dist/internal/deferred-joined-stream.js.map +1 -1
- 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 +22 -6
- package/dist/internal/filters.d.ts +3 -1
- package/dist/internal/filters.js +9 -2
- package/dist/internal/filters.js.map +1 -1
- package/dist/internal/foreign.js +1 -1
- package/dist/internal/foreign.js.map +1 -1
- package/dist/internal/guards.d.ts +20 -1
- package/dist/internal/guards.js +42 -0
- package/dist/internal/guards.js.map +1 -1
- package/dist/internal/joined.js +1 -1
- package/dist/internal/joined.js.map +1 -1
- package/dist/internal/list.d.ts +2 -2
- package/dist/internal/list.js +10 -6
- package/dist/internal/list.js.map +1 -1
- package/dist/internal/meta-records.d.ts +2 -0
- package/dist/internal/meta-records.js +10 -5
- package/dist/internal/meta-records.js.map +1 -1
- package/dist/internal/properties.d.ts +2 -2
- package/dist/internal/properties.js +6 -4
- package/dist/internal/properties.js.map +1 -1
- 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/tables.d.ts +12 -2
- package/dist/internal/tables.js +11 -0
- package/dist/internal/tables.js.map +1 -1
- package/dist/internal/validation.d.ts +4 -3
- package/dist/internal/validation.js +18 -6
- package/dist/internal/validation.js.map +1 -1
- package/dist/metadata.d.ts +13 -13
- package/dist/metadata.js +29 -31
- package/dist/metadata.js.map +1 -1
- package/dist/tests/components/access_control.test.js +11 -3
- package/dist/tests/components/access_control.test.js.map +1 -1
- package/dist/tests/components/computed.test.js +14 -3
- package/dist/tests/components/computed.test.js.map +1 -1
- package/dist/tests/components/cross_instance.test.js +2 -2
- package/dist/tests/components/cross_instance.test.js.map +1 -1
- package/dist/tests/components/deferred_joined.test.js +1 -1
- 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 +3 -3
- package/dist/tests/components/filter_options.test.js.map +1 -1
- package/dist/tests/components/foreign_computed.test.js +15 -4
- package/dist/tests/components/foreign_computed.test.js.map +1 -1
- package/dist/tests/components/foreign_joined.test.js +16 -4
- package/dist/tests/components/foreign_joined.test.js.map +1 -1
- package/dist/tests/components/joined.test.js +26 -8
- package/dist/tests/components/joined.test.js.map +1 -1
- package/dist/tests/components/listable.test.js +31 -12
- package/dist/tests/components/listable.test.js.map +1 -1
- package/dist/tests/components/localized_sort.test.js +5 -1
- package/dist/tests/components/localized_sort.test.js.map +1 -1
- package/dist/tests/components/mandatory.test.js +1 -1
- package/dist/tests/components/mandatory.test.js.map +1 -1
- package/dist/tests/components/modifier_key.test.js +12 -4
- package/dist/tests/components/modifier_key.test.js.map +1 -1
- package/dist/tests/components/parse_body.test.js +17 -16
- package/dist/tests/components/parse_body.test.js.map +1 -1
- package/dist/tests/components/parsed_value.test.js +2 -2
- package/dist/tests/components/parsed_value.test.js.map +1 -1
- package/dist/tests/components/partial_edit.test.js +8 -3
- package/dist/tests/components/partial_edit.test.js.map +1 -1
- package/dist/tests/components/per_action_access.test.js +11 -3
- 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 +1 -1
- 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.js +8 -4
- 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/inheritance.test.js +6 -2
- 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 +14 -5
- package/dist/tests/index/routes.test.js.map +1 -1
- package/dist/tests/integration.test.js +24 -11
- 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 +21 -9
- package/dist/tests/internal/http.js +24 -3
- package/dist/tests/internal/http.js.map +1 -1
- package/dist/tests/internal/shop-schema.d.ts +28 -20
- package/dist/tests/utils.d.ts +5 -7
- package/dist/tests/utils.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 +150 -133
- package/docs/4.access-rights.md +48 -44
- package/docs/5.validators.md +54 -45
- package/docs/6.listable.md +53 -49
- package/docs/7.foreign-keys.md +55 -48
- package/docs/8.filters.md +64 -57
- package/docs/9.modifiers.md +29 -25
- package/package.json +24 -14
- package/skills/data-api-interface/SKILL.md +9 -3
|
@@ -24,6 +24,14 @@ export type FieldValue = string | number | boolean | null | Date | FieldValue[]
|
|
|
24
24
|
export interface FieldValues {
|
|
25
25
|
[field: string]: FieldValue | undefined;
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* The fields of a table row a route holds, by name. The table class decides
|
|
29
|
+
* what they hold: a relation holds a row instance, and a getter's result is
|
|
30
|
+
* what the getter returned. Read a field through a guard.
|
|
31
|
+
*/
|
|
32
|
+
export interface RowFields {
|
|
33
|
+
[field: string]: unknown;
|
|
34
|
+
}
|
|
27
35
|
/** Parse outcome accepting the field value, carrying the value to write. */
|
|
28
36
|
export interface FieldParseSuccess {
|
|
29
37
|
success: true;
|
|
@@ -140,10 +148,11 @@ export interface FieldData {
|
|
|
140
148
|
* In-database computed field expression.
|
|
141
149
|
*
|
|
142
150
|
* Receives the row proxy and the schema instance of the controller's table.
|
|
143
|
-
* May return a row-local expression (built from `row`)
|
|
144
|
-
* (ex: an aggregate over another table).
|
|
151
|
+
* May return a row-local expression (built from `row`), a per-row subquery
|
|
152
|
+
* (ex: an aggregate over another table), or a constant. A value proxy is
|
|
153
|
+
* invariant in its value, so the proxy and the query take any value.
|
|
145
154
|
*/
|
|
146
|
-
export type ComputedExpression = (row: ValueProxy<
|
|
155
|
+
export type ComputedExpression = (row: ValueProxy<FieldValues>, db: SchemaInstance<any>) => ValueProxy<any> | Query<any> | FieldValue;
|
|
147
156
|
/**
|
|
148
157
|
* Computed field options.
|
|
149
158
|
*/
|
|
@@ -152,7 +161,7 @@ export interface ComputedOptions {
|
|
|
152
161
|
* Fallback merged over the computed value when the expression yields null
|
|
153
162
|
* (ex: `0` for an aggregate count over an empty set).
|
|
154
163
|
*/
|
|
155
|
-
default?:
|
|
164
|
+
default?: FieldValue;
|
|
156
165
|
}
|
|
157
166
|
/**
|
|
158
167
|
* Computed field information.
|
|
@@ -160,8 +169,15 @@ export interface ComputedOptions {
|
|
|
160
169
|
export interface ComputedFieldData extends ComputedOptions {
|
|
161
170
|
expr: ComputedExpression;
|
|
162
171
|
}
|
|
172
|
+
/** The comparisons the default filter applies. */
|
|
163
173
|
export type Comparison = "eq" | "ne" | "gt" | "ge" | "lt" | "le";
|
|
164
|
-
|
|
174
|
+
/**
|
|
175
|
+
* One filter of a list request: the value, and the mode to compare it with.
|
|
176
|
+
* The mode is text: what the request sent, or what the route wrote. The
|
|
177
|
+
* default filter refuses a mode that is not a {@link Comparison}. A custom
|
|
178
|
+
* filter defines its own modes.
|
|
179
|
+
*/
|
|
180
|
+
export type FilterValue = [value: string, mode: string];
|
|
165
181
|
/**
|
|
166
182
|
* The filters of one field in a list request: one {@link FilterValue}, or
|
|
167
183
|
* several a row must all pass (`?filter_age=ge:18&filter_age=lt:65`).
|
|
@@ -170,7 +186,7 @@ export type FieldFilter = FilterValue | FilterValue[];
|
|
|
170
186
|
/**
|
|
171
187
|
* Filter callback.
|
|
172
188
|
*/
|
|
173
|
-
export type FilterFunction<T extends Record<string, any>, U extends Record<string, any> =
|
|
189
|
+
export type FilterFunction<T extends Record<string, any>, U extends Record<string, any> = FieldValues> = (context: RequestContext & {
|
|
174
190
|
this: T;
|
|
175
191
|
}, proxy: ValueProxy<any>, key: string, ...rest: [value: FilterValue[0], mode: FilterValue[1], row: ValueProxy<U>]) => ValueProxyOrValue<boolean>;
|
|
176
192
|
export interface ReadableAccessFields {
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
/** @internal @packageDocumentation */
|
|
2
|
-
import {
|
|
2
|
+
import type { FieldFilter, FilterValue } from "./field-types";
|
|
3
|
+
/** The filters of one field as a list, whether it holds one or several. */
|
|
4
|
+
export declare function FilterValuesOf(filter: FieldFilter): FilterValue[];
|
|
3
5
|
export declare function parseFilter(searchVal: string): FilterValue;
|
|
4
6
|
export declare function copyFilter(filter: FieldFilter): FieldFilter;
|
package/dist/internal/filters.js
CHANGED
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/** @internal @packageDocumentation */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.FilterValuesOf = FilterValuesOf;
|
|
4
5
|
exports.parseFilter = parseFilter;
|
|
5
6
|
exports.copyFilter = copyFilter;
|
|
6
|
-
|
|
7
|
+
function isFilterList(filter) {
|
|
8
|
+
return Array.isArray(filter[0]);
|
|
9
|
+
}
|
|
10
|
+
/** The filters of one field as a list, whether it holds one or several. */
|
|
11
|
+
function FilterValuesOf(filter) {
|
|
12
|
+
return isFilterList(filter) ? filter : [filter];
|
|
13
|
+
}
|
|
7
14
|
function parseFilter(searchVal) {
|
|
8
15
|
const match = searchVal.match(/([^:]+):(.*)/);
|
|
9
16
|
return match ? [match[2], match[1]] : [searchVal, "eq"];
|
|
10
17
|
}
|
|
11
18
|
function copyFilter(filter) {
|
|
12
|
-
const copies =
|
|
19
|
+
const copies = FilterValuesOf(filter).map((value) => [...value]);
|
|
13
20
|
return copies.length === 1 ? copies[0] : copies;
|
|
14
21
|
}
|
|
15
22
|
//# sourceMappingURL=filters.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/internal/filters.ts"],"names":[],"mappings":";AAAA,sCAAsC;;
|
|
1
|
+
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/internal/filters.ts"],"names":[],"mappings":";AAAA,sCAAsC;;AAStC,wCAEC;AAED,kCAGC;AAED,gCAGC;AAjBD,SAAS,YAAY,CAAC,MAAmB;IACvC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,2EAA2E;AAC3E,SAAgB,cAAc,CAAC,MAAmB;IAChD,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,SAAgB,WAAW,CAAC,SAAiB;IAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC9C,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED,SAAgB,UAAU,CAAC,MAAmB;IAC5C,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAe,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAC9E,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAClD,CAAC"}
|
package/dist/internal/foreign.js
CHANGED
|
@@ -51,7 +51,7 @@ function Foreign(db, meta, query, pluck) {
|
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
53
|
else {
|
|
54
|
-
let foreignObject = (0, tables_1.Get)(remote, obj.key(name), index);
|
|
54
|
+
let foreignObject = (0, tables_1.Get)(remote, obj.key(name).cast(), index);
|
|
55
55
|
if (targetJoined && targetJoined.length > 0) {
|
|
56
56
|
foreignObject = applyForeignJoinedDatum(db, foreignObject, targetJoined);
|
|
57
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"foreign.js","sourceRoot":"","sources":["../../src/internal/foreign.ts"],"names":[],"mappings":";AAAA,sCAAsC;;AAiCtC,
|
|
1
|
+
{"version":3,"file":"foreign.js","sourceRoot":"","sources":["../../src/internal/foreign.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
/** @internal @packageDocumentation */
|
|
2
|
-
import type {
|
|
2
|
+
import type { Class } from "@antelopejs/interface-core/decorators";
|
|
3
|
+
import type { WriteDocument, WriteValue } from "@antelopejs/interface-database/common";
|
|
4
|
+
import type { FieldValue, FieldValues, RowFields } from "./field-types";
|
|
3
5
|
/** Whether a value is a string. */
|
|
4
6
|
export declare function isString(value: unknown): value is string;
|
|
5
7
|
/** Whether `typeof` calls a value an object and it is not `null`: arrays qualify, functions do not (the predicate `object` still types a function as one). */
|
|
6
8
|
export declare function isObject(value: unknown): value is object;
|
|
7
9
|
/** Whether a value is a function, whatever its parameters. */
|
|
8
10
|
export declare function isFunction(value: unknown): value is Function;
|
|
11
|
+
/**
|
|
12
|
+
* Whether a value is a class: a function with an object `prototype`, which
|
|
13
|
+
* arrow functions, methods and bound functions lack. A generator function
|
|
14
|
+
* has one too, a language limit this check shares with every `prototype`
|
|
15
|
+
* test.
|
|
16
|
+
*/
|
|
17
|
+
export declare function isClass(value: unknown): value is Class<object>;
|
|
9
18
|
/** Whether a value is a number. */
|
|
10
19
|
export declare function isNumber(value: unknown): value is number;
|
|
11
20
|
/** Whether a value is a boolean. */
|
|
@@ -18,3 +27,13 @@ export declare function isBoolean(value: unknown): value is boolean;
|
|
|
18
27
|
export declare function isFieldValue(value: unknown): value is FieldValue;
|
|
19
28
|
/** Whether a value is {@link FieldValues}: a plain object holding field values. */
|
|
20
29
|
export declare function isFieldValues(value: unknown): value is FieldValues;
|
|
30
|
+
/**
|
|
31
|
+
* Whether a value is a {@link WriteValue}: `null`, text, a number, a boolean,
|
|
32
|
+
* `undefined`, or an object whose own enumerable values are write values, all
|
|
33
|
+
* the way down. A `bigint`, a `symbol` or a function anywhere fails. An object
|
|
34
|
+
* is read by its own values whatever its prototype, as the type reads it, and
|
|
35
|
+
* an object met again, as in a cycle, is read once.
|
|
36
|
+
*/
|
|
37
|
+
export declare function isWriteValue(value: unknown): value is WriteValue;
|
|
38
|
+
/** Whether every own field of a row holds a {@link WriteValue}. */
|
|
39
|
+
export declare function isWriteDocument(row: RowFields): row is WriteDocument;
|
package/dist/internal/guards.js
CHANGED
|
@@ -4,10 +4,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.isString = isString;
|
|
5
5
|
exports.isObject = isObject;
|
|
6
6
|
exports.isFunction = isFunction;
|
|
7
|
+
exports.isClass = isClass;
|
|
7
8
|
exports.isNumber = isNumber;
|
|
8
9
|
exports.isBoolean = isBoolean;
|
|
9
10
|
exports.isFieldValue = isFieldValue;
|
|
10
11
|
exports.isFieldValues = isFieldValues;
|
|
12
|
+
exports.isWriteValue = isWriteValue;
|
|
13
|
+
exports.isWriteDocument = isWriteDocument;
|
|
11
14
|
/** Whether a value is a string. */
|
|
12
15
|
function isString(value) {
|
|
13
16
|
return typeof value === "string";
|
|
@@ -20,6 +23,15 @@ function isObject(value) {
|
|
|
20
23
|
function isFunction(value) {
|
|
21
24
|
return typeof value === "function";
|
|
22
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Whether a value is a class: a function with an object `prototype`, which
|
|
28
|
+
* arrow functions, methods and bound functions lack. A generator function
|
|
29
|
+
* has one too, a language limit this check shares with every `prototype`
|
|
30
|
+
* test.
|
|
31
|
+
*/
|
|
32
|
+
function isClass(value) {
|
|
33
|
+
return isFunction(value) && isObject(value.prototype);
|
|
34
|
+
}
|
|
23
35
|
/** Whether a value is a number. */
|
|
24
36
|
function isNumber(value) {
|
|
25
37
|
return typeof value === "number";
|
|
@@ -71,4 +83,34 @@ function isFieldValues(value) {
|
|
|
71
83
|
!Array.isArray(value) &&
|
|
72
84
|
!(value instanceof Date));
|
|
73
85
|
}
|
|
86
|
+
/** The `typeof` answers of the primitives a {@link WriteValue} may be. */
|
|
87
|
+
const STORED_PRIMITIVES = new Set(["string", "number", "boolean", "undefined"]);
|
|
88
|
+
/**
|
|
89
|
+
* Whether a value is a {@link WriteValue}: `null`, text, a number, a boolean,
|
|
90
|
+
* `undefined`, or an object whose own enumerable values are write values, all
|
|
91
|
+
* the way down. A `bigint`, a `symbol` or a function anywhere fails. An object
|
|
92
|
+
* is read by its own values whatever its prototype, as the type reads it, and
|
|
93
|
+
* an object met again, as in a cycle, is read once.
|
|
94
|
+
*/
|
|
95
|
+
function isWriteValue(value) {
|
|
96
|
+
const seen = new Set();
|
|
97
|
+
const pending = [value];
|
|
98
|
+
while (pending.length > 0) {
|
|
99
|
+
const current = pending.pop();
|
|
100
|
+
if (current === null || STORED_PRIMITIVES.has(typeof current))
|
|
101
|
+
continue;
|
|
102
|
+
if (!isObject(current))
|
|
103
|
+
return false;
|
|
104
|
+
if (seen.has(current))
|
|
105
|
+
continue;
|
|
106
|
+
seen.add(current);
|
|
107
|
+
for (const member of Object.values(current))
|
|
108
|
+
pending.push(member);
|
|
109
|
+
}
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
/** Whether every own field of a row holds a {@link WriteValue}. */
|
|
113
|
+
function isWriteDocument(row) {
|
|
114
|
+
return Object.values(row).every(isWriteValue);
|
|
115
|
+
}
|
|
74
116
|
//# sourceMappingURL=guards.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guards.js","sourceRoot":"","sources":["../../src/internal/guards.ts"],"names":[],"mappings":";AAAA,sCAAsC;;
|
|
1
|
+
{"version":3,"file":"guards.js","sourceRoot":"","sources":["../../src/internal/guards.ts"],"names":[],"mappings":"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"}
|
package/dist/internal/joined.js
CHANGED
|
@@ -47,7 +47,7 @@ function addAll(target, names) {
|
|
|
47
47
|
*/
|
|
48
48
|
function splitJoinedFields(meta, sorting, filters) {
|
|
49
49
|
const split = { filter: new Set(), sort: new Set() };
|
|
50
|
-
const filterNames = Object.keys(meta.filters).filter((name) => filters && name
|
|
50
|
+
const filterNames = Object.keys(meta.filters).filter((name) => filters && Object.hasOwn(filters, name));
|
|
51
51
|
const hasComputedFilter = filterNames.some((name) => meta.fields[name]?.computed);
|
|
52
52
|
const sortField = sorting?.[0];
|
|
53
53
|
const hasComputedSort = !!sortField && !!meta.fields[sortField]?.computed;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"joined.js","sourceRoot":"","sources":["../../src/internal/joined.ts"],"names":[],"mappings":";AAAA,sCAAsC;;AAiEtC,8CA2BC;AAOD,oDAYC;AAsBD,wBAmEC;AAtMD,uEAMwC;AAGxC,qCAAgF;AAShF,SAAS,mBAAmB,CAAC,IAAiB;IAC5C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,SAAS;QAC5B,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QACvB,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,UAAU,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QACnF,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG;gBACN,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,MAAM,EAAE,EAAE;aACX,CAAC;YACF,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AACrC,CAAC;AAOD,SAAS,MAAM,CAAC,MAAmB,EAAE,KAAe;IAClD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,iBAAiB,CAC/B,IAAiB,EACjB,OAA8C,EAC9C,OAAqC;IAErC,MAAM,KAAK,GAAqB,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;IACvE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAClD,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"joined.js","sourceRoot":"","sources":["../../src/internal/joined.ts"],"names":[],"mappings":"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"}
|
package/dist/internal/list.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import type { RequestContext } from "@antelopejs/interface-api";
|
|
3
3
|
import type { Datum, SchemaInstance, Stream, Table } from "@antelopejs/interface-database";
|
|
4
4
|
import type { Query } from "../components";
|
|
5
|
-
import { type DataAPIMeta } from "../metadata";
|
|
5
|
+
import { type DataAPIMeta, type DataControllerInstance } from "../metadata";
|
|
6
6
|
type ListPageOptions = Query.ListPageOptions;
|
|
7
7
|
/** The arguments {@link Query.List} takes after the request context. */
|
|
8
8
|
interface ListArguments {
|
|
@@ -11,6 +11,6 @@ interface ListArguments {
|
|
|
11
11
|
db?: Parameters<typeof Query.List>[6];
|
|
12
12
|
options?: Parameters<typeof Query.List>[7];
|
|
13
13
|
}
|
|
14
|
-
export declare function List<T extends Record<string, any>>(obj:
|
|
14
|
+
export declare function List<T extends Record<string, any>>(obj: DataControllerInstance, meta: DataAPIMeta, request: Table<T>, reqCtx: RequestContext, { sorting, filters, db, options }: ListArguments): [sorted: Stream<T>, total: Datum<number>, deferredJoined: Set<string>];
|
|
15
15
|
export declare function ListPage(db: SchemaInstance<any>, meta: DataAPIMeta, query: Stream<any>, options: ListPageOptions): Stream<any>;
|
|
16
16
|
export {};
|
package/dist/internal/list.js
CHANGED
|
@@ -33,13 +33,19 @@ function isHeldByKeyedModifier(meta, field) {
|
|
|
33
33
|
const keyed = new Set(Array.from(meta.modifierKeys.keys(), (modifier) => modifier.name));
|
|
34
34
|
return ((0, common_1.getMetadata)(meta.tableClass, common_2.ModifiersStaticMetadata).fields[field]?.some(({ id }) => keyed.has(id)) ?? false);
|
|
35
35
|
}
|
|
36
|
+
/** The filters a request holds for a field, none when it holds none. */
|
|
37
|
+
function filterValuesIn(filters, field) {
|
|
38
|
+
return filters && Object.hasOwn(filters, field)
|
|
39
|
+
? (0, metadata_1.FilterValuesOf)(filters[field])
|
|
40
|
+
: [];
|
|
41
|
+
}
|
|
36
42
|
/**
|
|
37
43
|
* The rows {@link List} starts from: the index lookup serving the one field
|
|
38
44
|
* filtered once with `eq` on a single-field index, else the whole table.
|
|
39
45
|
*/
|
|
40
46
|
function indexedSource(meta, request, filterList, filters) {
|
|
41
47
|
const indexed = filterList.find(([field]) => {
|
|
42
|
-
const fieldFilters = filters
|
|
48
|
+
const fieldFilters = filterValuesIn(filters, field);
|
|
43
49
|
return (fieldFilters.length === 1 &&
|
|
44
50
|
fieldFilters[0][1] === "eq" &&
|
|
45
51
|
meta.fields[field]?.indexable);
|
|
@@ -47,9 +53,7 @@ function indexedSource(meta, request, filterList, filters) {
|
|
|
47
53
|
const indexName = indexed
|
|
48
54
|
? meta.fields[indexed].dbName || indexed
|
|
49
55
|
: undefined;
|
|
50
|
-
const equality = indexed
|
|
51
|
-
? (0, metadata_1.FilterValuesOf)(filters?.[indexed] ?? [])[0]
|
|
52
|
-
: undefined;
|
|
56
|
+
const equality = indexed ? filterValuesIn(filters, indexed)[0] : undefined;
|
|
53
57
|
const source = indexName
|
|
54
58
|
? request.getAll(equality?.[0] ?? "", indexName)
|
|
55
59
|
: request;
|
|
@@ -103,7 +107,7 @@ function materializeSortFields(stream, sortField, { db, meta, joinedSplit, filte
|
|
|
103
107
|
: joined;
|
|
104
108
|
}
|
|
105
109
|
function List(obj, meta, request, reqCtx, { sorting, filters, db, options }) {
|
|
106
|
-
const filterList = Object.entries(meta.filters).filter(([name]) => filters && name
|
|
110
|
+
const filterList = Object.entries(meta.filters).filter(([name]) => filters && Object.hasOwn(filters, name));
|
|
107
111
|
const { indexFilter, source } = indexedSource(meta, request, filterList, filters);
|
|
108
112
|
const joinedSplit = (0, joined_1.splitJoinedFields)(meta, sorting, filters);
|
|
109
113
|
const filtering = materializeFilterFields(source, meta, db, joinedSplit, {
|
|
@@ -146,7 +150,7 @@ function List(obj, meta, request, reqCtx, { sorting, filters, db, options }) {
|
|
|
146
150
|
});
|
|
147
151
|
}
|
|
148
152
|
function pageComputedFields(meta, options) {
|
|
149
|
-
const merged = new Set(Object.keys(options.filters ?? {}).filter((name) =>
|
|
153
|
+
const merged = new Set(Object.keys(options.filters ?? {}).filter((name) => Object.hasOwn(meta.filters, name)));
|
|
150
154
|
if (options.sortKey)
|
|
151
155
|
merged.add(options.sortKey);
|
|
152
156
|
const names = Object.entries(meta.fields)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/internal/list.ts"],"names":[],"mappings":";AAAA,sCAAsC;;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/internal/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
import type { FieldData, ForeignJoinedRef } from "./field-types";
|
|
3
3
|
/** Copies into `dst` the entries of `src` it lacks. */
|
|
4
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;
|
|
5
7
|
/** Rebuilds the fields each list mode plucks from the fields' listable modes. */
|
|
6
8
|
export declare function rebuildPluck(pluck: Record<string, Set<string>>, fields: Record<string, FieldData>): void;
|
|
7
9
|
/**
|
|
@@ -2,17 +2,22 @@
|
|
|
2
2
|
/** @internal @packageDocumentation */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.merge = merge;
|
|
5
|
+
exports.ownEntry = ownEntry;
|
|
5
6
|
exports.rebuildPluck = rebuildPluck;
|
|
6
7
|
exports.targetJoinedFields = targetJoinedFields;
|
|
7
8
|
exports.listedNames = listedNames;
|
|
8
9
|
/** Copies into `dst` the entries of `src` it lacks. */
|
|
9
10
|
function merge(src, dst) {
|
|
10
11
|
for (const key in src) {
|
|
11
|
-
if (!(key
|
|
12
|
+
if (!Object.hasOwn(dst, key)) {
|
|
12
13
|
dst[key] = src[key];
|
|
13
14
|
}
|
|
14
15
|
}
|
|
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
|
+
}
|
|
16
21
|
/** Rebuilds the fields each list mode plucks from the fields' listable modes. */
|
|
17
22
|
function rebuildPluck(pluck, fields) {
|
|
18
23
|
for (const set of Object.values(pluck)) {
|
|
@@ -21,11 +26,11 @@ function rebuildPluck(pluck, fields) {
|
|
|
21
26
|
for (const [_, field] of Object.entries(fields)) {
|
|
22
27
|
if (field.listable) {
|
|
23
28
|
for (const [mode, names] of Object.entries(field.listable)) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
29
|
+
const modeNames = Object.hasOwn(pluck, mode) ? pluck[mode] : undefined;
|
|
30
|
+
const set = modeNames ?? new Set();
|
|
31
|
+
pluck[mode] = set;
|
|
27
32
|
for (const name of names) {
|
|
28
|
-
|
|
33
|
+
set.add(name);
|
|
29
34
|
}
|
|
30
35
|
}
|
|
31
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-records.js","sourceRoot":"","sources":["../../src/internal/meta-records.ts"],"names":[],"mappings":";AAAA,sCAAsC;;AAKtC,sBASC;AAGD,oCAmBC;AAMD,gDAsBC;AAOD,kCAcC;
|
|
1
|
+
{"version":3,"file":"meta-records.js","sourceRoot":"","sources":["../../src/internal/meta-records.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/** @internal @packageDocumentation */
|
|
2
2
|
import type { Query } from "../components";
|
|
3
|
-
import type { DataAPIMeta } from "../metadata";
|
|
4
|
-
export declare function WriteProperties(obj:
|
|
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;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
/** @internal @packageDocumentation */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.WriteProperties = WriteProperties;
|
|
5
|
+
const prototypes_1 = require("./prototypes");
|
|
5
6
|
function writableInBody(writable, bodyData) {
|
|
6
7
|
return {
|
|
7
8
|
props: writable.props.filter(([key]) => Object.hasOwn(bodyData, key)),
|
|
@@ -9,7 +10,8 @@ function writableInBody(writable, bodyData) {
|
|
|
9
10
|
};
|
|
10
11
|
}
|
|
11
12
|
function writeTargetDefaults(instance, meta, dbData) {
|
|
12
|
-
|
|
13
|
+
const defaults = Object.entries(new meta.target());
|
|
14
|
+
for (const [key, value] of defaults) {
|
|
13
15
|
if (value !== undefined) {
|
|
14
16
|
instance[key] = value;
|
|
15
17
|
if (key in meta.fields) {
|
|
@@ -23,9 +25,9 @@ function WriteProperties(obj, meta, bodyData, action, existingDBData) {
|
|
|
23
25
|
const writable = existingDBData
|
|
24
26
|
? writableInBody(actionWritable, bodyData)
|
|
25
27
|
: actionWritable;
|
|
26
|
-
const instance = { ...obj };
|
|
28
|
+
const instance = (0, prototypes_1.fieldsOf)({ ...obj });
|
|
27
29
|
const dbData = existingDBData || {};
|
|
28
|
-
Object.setPrototypeOf(dbData, meta.tableClass
|
|
30
|
+
Object.setPrototypeOf(dbData, (0, prototypes_1.prototypeOf)(meta.tableClass));
|
|
29
31
|
if (!existingDBData) {
|
|
30
32
|
writeTargetDefaults(instance, meta, dbData);
|
|
31
33
|
}
|
|
@@ -34,7 +36,7 @@ function WriteProperties(obj, meta, bodyData, action, existingDBData) {
|
|
|
34
36
|
dbData[field.dbName || key] = bodyData[key];
|
|
35
37
|
}
|
|
36
38
|
instance.table = dbData;
|
|
37
|
-
Object.setPrototypeOf(instance, meta.target
|
|
39
|
+
Object.setPrototypeOf(instance, (0, prototypes_1.prototypeOf)(meta.target));
|
|
38
40
|
for (const [key, field] of writable.setters) {
|
|
39
41
|
field.desc?.set?.apply(instance, [bodyData[key]]);
|
|
40
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"properties.js","sourceRoot":"","sources":["../../src/internal/properties.ts"],"names":[],"mappings":";AAAA,sCAAsC;;
|
|
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>;
|