@aws-amplify/data-schema 1.3.9 → 1.4.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/dist/cjs/ModelType.js +5 -0
- package/dist/cjs/ModelType.js.map +1 -1
- package/dist/cjs/SchemaProcessor.js +58 -1
- package/dist/cjs/SchemaProcessor.js.map +1 -1
- package/dist/cjs/runtime/addSchemaToClient.js +1 -0
- package/dist/cjs/runtime/addSchemaToClient.js.map +1 -1
- package/dist/cjs/runtime/addSchemaToClientWithInstance.js +1 -0
- package/dist/cjs/runtime/addSchemaToClientWithInstance.js.map +1 -1
- package/dist/cjs/runtime/internals/APIClient.js +63 -42
- package/dist/cjs/runtime/internals/APIClient.js.map +1 -1
- package/dist/cjs/runtime/internals/cancellation.js +48 -0
- package/dist/cjs/runtime/internals/cancellation.js.map +1 -0
- package/dist/cjs/runtime/internals/clientUtils.js +45 -3
- package/dist/cjs/runtime/internals/clientUtils.js.map +1 -1
- package/dist/cjs/runtime/internals/index.js +3 -1
- package/dist/cjs/runtime/internals/index.js.map +1 -1
- package/dist/cjs/runtime/internals/operations/custom.js +91 -85
- package/dist/cjs/runtime/internals/operations/custom.js.map +1 -1
- package/dist/cjs/runtime/internals/operations/get.js +71 -65
- package/dist/cjs/runtime/internals/operations/get.js.map +1 -1
- package/dist/cjs/runtime/internals/operations/indexQuery.js +66 -60
- package/dist/cjs/runtime/internals/operations/indexQuery.js.map +1 -1
- package/dist/cjs/runtime/internals/operations/list.js +90 -84
- package/dist/cjs/runtime/internals/operations/list.js.map +1 -1
- package/dist/cjs/runtime/internals/server/generateModelsProperty.js +3 -3
- package/dist/cjs/runtime/internals/server/generateModelsProperty.js.map +1 -1
- package/dist/cjs/runtime/internals/utils/clientProperties/generateModelsProperty.js +3 -3
- package/dist/cjs/runtime/internals/utils/clientProperties/generateModelsProperty.js.map +1 -1
- package/dist/cjs/runtime/utils/index.js +3 -1
- package/dist/cjs/runtime/utils/index.js.map +1 -1
- package/dist/cjs/runtime/utils/selfAwareAsync.js +40 -0
- package/dist/cjs/runtime/utils/selfAwareAsync.js.map +1 -0
- package/dist/esm/Authorization.d.ts +1 -1
- package/dist/esm/ClientSchema/Core/ClientModel.d.ts +20 -1
- package/dist/esm/ClientSchema/utilities/ResolveField.d.ts +5 -1
- package/dist/esm/ModelType.d.ts +6 -0
- package/dist/esm/ModelType.mjs +5 -0
- package/dist/esm/ModelType.mjs.map +1 -1
- package/dist/esm/SchemaProcessor.mjs +58 -1
- package/dist/esm/SchemaProcessor.mjs.map +1 -1
- package/dist/esm/runtime/addSchemaToClient.mjs +2 -0
- package/dist/esm/runtime/addSchemaToClient.mjs.map +1 -1
- package/dist/esm/runtime/addSchemaToClientWithInstance.mjs +2 -0
- package/dist/esm/runtime/addSchemaToClientWithInstance.mjs.map +1 -1
- package/dist/esm/runtime/bridge-types.d.ts +2 -2
- package/dist/esm/runtime/client/index.d.ts +18 -10
- package/dist/esm/runtime/internals/APIClient.d.ts +2 -2
- package/dist/esm/runtime/internals/APIClient.mjs +64 -42
- package/dist/esm/runtime/internals/APIClient.mjs.map +1 -1
- package/dist/esm/runtime/internals/cancellation.d.ts +10 -0
- package/dist/esm/runtime/internals/cancellation.mjs +44 -0
- package/dist/esm/runtime/internals/cancellation.mjs.map +1 -0
- package/dist/esm/runtime/internals/clientUtils.d.ts +78 -1
- package/dist/esm/runtime/internals/clientUtils.mjs +45 -3
- package/dist/esm/runtime/internals/clientUtils.mjs.map +1 -1
- package/dist/esm/runtime/internals/index.d.ts +1 -0
- package/dist/esm/runtime/internals/index.mjs +1 -0
- package/dist/esm/runtime/internals/index.mjs.map +1 -1
- package/dist/esm/runtime/internals/operations/custom.d.ts +1 -1
- package/dist/esm/runtime/internals/operations/custom.mjs +91 -85
- package/dist/esm/runtime/internals/operations/custom.mjs.map +1 -1
- package/dist/esm/runtime/internals/operations/get.d.ts +1 -1
- package/dist/esm/runtime/internals/operations/get.mjs +71 -65
- package/dist/esm/runtime/internals/operations/get.mjs.map +1 -1
- package/dist/esm/runtime/internals/operations/indexQuery.d.ts +1 -1
- package/dist/esm/runtime/internals/operations/indexQuery.mjs +66 -60
- package/dist/esm/runtime/internals/operations/indexQuery.mjs.map +1 -1
- package/dist/esm/runtime/internals/operations/list.d.ts +1 -1
- package/dist/esm/runtime/internals/operations/list.mjs +90 -84
- package/dist/esm/runtime/internals/operations/list.mjs.map +1 -1
- package/dist/esm/runtime/internals/server/generateModelsProperty.mjs +4 -4
- package/dist/esm/runtime/internals/server/generateModelsProperty.mjs.map +1 -1
- package/dist/esm/runtime/internals/utils/clientProperties/generateModelsProperty.mjs +4 -4
- package/dist/esm/runtime/internals/utils/clientProperties/generateModelsProperty.mjs.map +1 -1
- package/dist/esm/runtime/utils/index.d.ts +1 -0
- package/dist/esm/runtime/utils/index.mjs +1 -0
- package/dist/esm/runtime/utils/index.mjs.map +1 -1
- package/dist/esm/runtime/utils/selfAwareAsync.d.ts +19 -0
- package/dist/esm/runtime/utils/selfAwareAsync.mjs +37 -0
- package/dist/esm/runtime/utils/selfAwareAsync.mjs.map +1 -0
- package/dist/esm/util/Filters.d.ts +42 -3
- package/dist/meta/cjs.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/ClientSchema/Core/ClientModel.ts +29 -0
- package/src/ClientSchema/utilities/ResolveField.ts +26 -6
- package/src/ModelType.ts +31 -0
- package/src/SchemaProcessor.ts +77 -2
- package/src/runtime/addSchemaToClient.ts +2 -0
- package/src/runtime/addSchemaToClientWithInstance.ts +2 -0
- package/src/runtime/bridge-types.ts +2 -2
- package/src/runtime/client/index.ts +230 -184
- package/src/runtime/internals/APIClient.ts +67 -23
- package/src/runtime/internals/cancellation.ts +57 -0
- package/src/runtime/internals/clientUtils.ts +61 -1
- package/src/runtime/internals/index.ts +1 -0
- package/src/runtime/internals/operations/custom.ts +117 -109
- package/src/runtime/internals/operations/get.ts +111 -95
- package/src/runtime/internals/operations/indexQuery.ts +100 -94
- package/src/runtime/internals/operations/list.ts +132 -119
- package/src/runtime/internals/server/generateModelsProperty.ts +31 -28
- package/src/runtime/internals/utils/clientProperties/generateModelsProperty.ts +36 -33
- package/src/runtime/utils/index.ts +1 -0
- package/src/runtime/utils/selfAwareAsync.ts +39 -0
- package/src/util/Filters.ts +47 -3
|
@@ -9,13 +9,16 @@ import {
|
|
|
9
9
|
ModelIntrospectionSchema,
|
|
10
10
|
} from '../../../bridge-types';
|
|
11
11
|
|
|
12
|
-
import { ModelOperation
|
|
12
|
+
import { ModelOperation } from '../../APIClient';
|
|
13
13
|
import { listFactory } from '../../operations/list';
|
|
14
14
|
import { indexQueryFactory } from '../../operations/indexQuery';
|
|
15
15
|
import { getFactory } from '../../operations/get';
|
|
16
16
|
import { subscriptionFactory } from '../../operations/subscription';
|
|
17
17
|
import { observeQueryFactory } from '../../operations/observeQuery';
|
|
18
|
-
import {
|
|
18
|
+
import {
|
|
19
|
+
getSecondaryIndexesFromSchemaModel,
|
|
20
|
+
excludeDisabledOps,
|
|
21
|
+
} from '../../clientUtils';
|
|
19
22
|
|
|
20
23
|
export function generateModelsProperty<T extends Record<any, any> = never>(
|
|
21
24
|
client: BaseClient,
|
|
@@ -38,38 +41,38 @@ export function generateModelsProperty<T extends Record<any, any> = never>(
|
|
|
38
41
|
|
|
39
42
|
models[name] = {} as Record<string, any>;
|
|
40
43
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
+
const enabledModelOps = excludeDisabledOps(modelIntrospection, name);
|
|
45
|
+
|
|
46
|
+
Object.entries(enabledModelOps).forEach(([key, { operationPrefix }]) => {
|
|
47
|
+
const operation = key as ModelOperation;
|
|
44
48
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
);
|
|
49
|
+
if (operation === 'LIST') {
|
|
50
|
+
models[name][operationPrefix] = listFactory(
|
|
51
|
+
client,
|
|
52
|
+
modelIntrospection,
|
|
53
|
+
model,
|
|
54
|
+
getInternals,
|
|
55
|
+
);
|
|
56
|
+
} else if (SUBSCRIPTION_OPS.includes(operation)) {
|
|
57
|
+
models[name][operationPrefix] = subscriptionFactory(
|
|
58
|
+
client as BaseBrowserClient,
|
|
59
|
+
modelIntrospection,
|
|
60
|
+
model,
|
|
61
|
+
operation,
|
|
62
|
+
getInternals,
|
|
63
|
+
);
|
|
64
|
+
} else if (operation === 'OBSERVEQUERY') {
|
|
65
|
+
models[name][operationPrefix] = observeQueryFactory(models, model);
|
|
66
|
+
} else {
|
|
67
|
+
models[name][operationPrefix] = getFactory(
|
|
68
|
+
client,
|
|
69
|
+
modelIntrospection,
|
|
70
|
+
model,
|
|
71
|
+
operation,
|
|
72
|
+
getInternals,
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
73
76
|
|
|
74
77
|
const secondaryIdxs = getSecondaryIndexesFromSchemaModel(model);
|
|
75
78
|
|
|
@@ -5,3 +5,4 @@ export { resolvePKFields } from './resolvePKFields';
|
|
|
5
5
|
export { findIndexByFields } from './findIndexByFields';
|
|
6
6
|
export { resolveOwnerFields } from './resolveOwnerFields';
|
|
7
7
|
export { capitalize } from './stringTransformation';
|
|
8
|
+
export { selfAwareAsync } from './selfAwareAsync';
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Executes an `async` resolver function, providing the `Promise`-to-be-returned as the
|
|
3
|
+
* first argument to the resolver so that the resolver can refer to the `Promise` that
|
|
4
|
+
* external callers will see.
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* const outer = selfAwareAsync(async inner => {
|
|
8
|
+
* console.log(outer === inner); // true
|
|
9
|
+
* });
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* This utility exists to reduce boilerplate in cases where promise resolving code needs
|
|
13
|
+
* to track or register its "own" `Promise` *as seen by the caller* in some way. E.g.,
|
|
14
|
+
* when mapping `Promise` chains for `client.cancel()`.
|
|
15
|
+
*
|
|
16
|
+
* @param resolver
|
|
17
|
+
* @returns
|
|
18
|
+
*/
|
|
19
|
+
export function selfAwareAsync<T>(
|
|
20
|
+
resolver: (promise: Promise<T>) => Promise<T>,
|
|
21
|
+
): Promise<T> {
|
|
22
|
+
let resolve: (value: T) => void;
|
|
23
|
+
let reject: (reason?: any) => void;
|
|
24
|
+
|
|
25
|
+
const resultPromise = new Promise<T>((res, rej) => {
|
|
26
|
+
resolve = res;
|
|
27
|
+
reject = rej;
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
resolver(resultPromise)
|
|
31
|
+
.then((result) => {
|
|
32
|
+
resolve(result);
|
|
33
|
+
})
|
|
34
|
+
.catch((error) => {
|
|
35
|
+
reject(error);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
return resultPromise;
|
|
39
|
+
}
|
package/src/util/Filters.ts
CHANGED
|
@@ -6,9 +6,12 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
-
* Filters
|
|
9
|
+
* CRUDL Filters
|
|
10
|
+
*
|
|
11
|
+
* reference: https://github.com/aws-amplify/amplify-category-api/blob/a655e71115e0e8e3597b4c2ef1b2940a79fdcaa1/packages/amplify-graphql-model-transformer/src/definitions.ts
|
|
10
12
|
*/
|
|
11
13
|
|
|
14
|
+
// Filter options that can be used on string-like fields (string, ID, AWSDateTime, etc.).
|
|
12
15
|
export type StringFilter<T extends string = string> = {
|
|
13
16
|
attributeExists?: boolean;
|
|
14
17
|
beginsWith?: string;
|
|
@@ -24,6 +27,7 @@ export type StringFilter<T extends string = string> = {
|
|
|
24
27
|
size?: SizeFilter;
|
|
25
28
|
};
|
|
26
29
|
|
|
30
|
+
// Filter options that can be used on numeric fields (int, float, AWSTimestamp).
|
|
27
31
|
export type NumericFilter = {
|
|
28
32
|
attributeExists?: boolean;
|
|
29
33
|
between?: [number, number];
|
|
@@ -35,6 +39,12 @@ export type NumericFilter = {
|
|
|
35
39
|
ne?: number;
|
|
36
40
|
};
|
|
37
41
|
|
|
42
|
+
export type BooleanFilters = {
|
|
43
|
+
attributeExists?: boolean;
|
|
44
|
+
eq?: boolean;
|
|
45
|
+
ne?: boolean;
|
|
46
|
+
};
|
|
47
|
+
|
|
38
48
|
/**
|
|
39
49
|
* Filter options that can be used on fields where size checks are supported.
|
|
40
50
|
*/
|
|
@@ -48,8 +58,39 @@ export type SizeFilter = {
|
|
|
48
58
|
ne?: number;
|
|
49
59
|
};
|
|
50
60
|
|
|
51
|
-
|
|
52
|
-
|
|
61
|
+
/**
|
|
62
|
+
* Subscription Filters
|
|
63
|
+
*
|
|
64
|
+
* reference: https://github.com/aws-amplify/amplify-category-api/blob/a655e71115e0e8e3597b4c2ef1b2940a79fdcaa1/packages/amplify-graphql-model-transformer/src/definitions.ts
|
|
65
|
+
*/
|
|
66
|
+
export type SubscriptionStringFilter = {
|
|
67
|
+
beginsWith?: string;
|
|
68
|
+
between?: [string, string];
|
|
69
|
+
contains?: string;
|
|
70
|
+
eq?: string;
|
|
71
|
+
ge?: string;
|
|
72
|
+
gt?: string;
|
|
73
|
+
le?: string;
|
|
74
|
+
lt?: string;
|
|
75
|
+
ne?: string;
|
|
76
|
+
notContains?: string;
|
|
77
|
+
in?: string[];
|
|
78
|
+
notIn?: string[];
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export type SubscriptionNumericFilter = {
|
|
82
|
+
between?: [number, number];
|
|
83
|
+
in?: number[];
|
|
84
|
+
notIn?: number[];
|
|
85
|
+
eq?: number;
|
|
86
|
+
ge?: number;
|
|
87
|
+
gt?: number;
|
|
88
|
+
le?: number;
|
|
89
|
+
lt?: number;
|
|
90
|
+
ne?: number;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
export type SubscriptionBooleanFilters = {
|
|
53
94
|
eq?: boolean;
|
|
54
95
|
ne?: boolean;
|
|
55
96
|
};
|
|
@@ -88,6 +129,9 @@ export type BooleanFilters = {
|
|
|
88
129
|
* beginsWith: {sk1: string; sk2: number};
|
|
89
130
|
* }
|
|
90
131
|
* ```
|
|
132
|
+
*
|
|
133
|
+
* reference: https://github.com/aws-amplify/amplify-category-api/blob/a655e71115e0e8e3597b4c2ef1b2940a79fdcaa1/packages/graphql-transformer-common/src/dynamodbUtils.ts#L32-L36
|
|
134
|
+
*
|
|
91
135
|
* */
|
|
92
136
|
export type ModelPrimaryCompositeKeyInput<
|
|
93
137
|
SkIr extends Record<string, string | number>,
|