@aws-amplify/api-graphql 4.0.1 → 4.0.2-unstable.b778a9e.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.
Files changed (110) hide show
  1. package/dist/cjs/internals/APIClient.js +503 -0
  2. package/dist/cjs/internals/APIClient.js.map +1 -0
  3. package/dist/cjs/internals/InternalGraphQLAPI.js +1 -1
  4. package/dist/cjs/internals/InternalGraphQLAPI.js.map +1 -1
  5. package/dist/cjs/internals/generateClient.js +33 -0
  6. package/dist/cjs/internals/generateClient.js.map +1 -0
  7. package/dist/cjs/internals/generateModelsProperty.js +43 -0
  8. package/dist/cjs/internals/generateModelsProperty.js.map +1 -0
  9. package/dist/cjs/internals/index.js +3 -1
  10. package/dist/cjs/internals/index.js.map +1 -1
  11. package/dist/cjs/internals/operations/get.js +61 -0
  12. package/dist/cjs/internals/operations/get.js.map +1 -0
  13. package/dist/cjs/internals/operations/list.js +73 -0
  14. package/dist/cjs/internals/operations/list.js.map +1 -0
  15. package/dist/cjs/internals/operations/observeQuery.js +121 -0
  16. package/dist/cjs/internals/operations/observeQuery.js.map +1 -0
  17. package/dist/cjs/internals/operations/subscription.js +29 -0
  18. package/dist/cjs/internals/operations/subscription.js.map +1 -0
  19. package/dist/cjs/internals/server/generateClient.js +32 -0
  20. package/dist/cjs/internals/server/generateClient.js.map +1 -0
  21. package/dist/cjs/internals/server/generateModelsProperty.js +47 -0
  22. package/dist/cjs/internals/server/generateModelsProperty.js.map +1 -0
  23. package/dist/cjs/internals/server/index.js +9 -0
  24. package/dist/cjs/internals/server/index.js.map +1 -0
  25. package/dist/cjs/internals/types.js +4 -0
  26. package/dist/cjs/internals/types.js.map +1 -0
  27. package/dist/cjs/types/index.js +3 -1
  28. package/dist/cjs/types/index.js.map +1 -1
  29. package/dist/cjs/utils/findIndexByFields.js +25 -0
  30. package/dist/cjs/utils/findIndexByFields.js.map +1 -0
  31. package/dist/cjs/utils/index.js +5 -1
  32. package/dist/cjs/utils/index.js.map +1 -1
  33. package/dist/cjs/utils/resolveOwnerFields.js +42 -0
  34. package/dist/cjs/utils/resolveOwnerFields.js.map +1 -0
  35. package/dist/cjs/utils/resolvePKFields.js +17 -0
  36. package/dist/cjs/utils/resolvePKFields.js.map +1 -0
  37. package/dist/esm/index.mjs +1 -1
  38. package/dist/esm/internals/APIClient.d.ts +121 -0
  39. package/dist/esm/internals/APIClient.mjs +493 -0
  40. package/dist/esm/internals/APIClient.mjs.map +1 -0
  41. package/dist/esm/internals/InternalGraphQLAPI.mjs +1 -1
  42. package/dist/esm/internals/InternalGraphQLAPI.mjs.map +1 -1
  43. package/dist/esm/internals/generateClient.d.ts +12 -0
  44. package/dist/esm/internals/generateClient.mjs +31 -0
  45. package/dist/esm/internals/generateClient.mjs.map +1 -0
  46. package/dist/esm/internals/generateModelsProperty.d.ts +4 -0
  47. package/dist/esm/internals/generateModelsProperty.mjs +41 -0
  48. package/dist/esm/internals/generateModelsProperty.mjs.map +1 -0
  49. package/dist/esm/internals/index.d.ts +1 -0
  50. package/dist/esm/internals/index.mjs +1 -0
  51. package/dist/esm/internals/index.mjs.map +1 -1
  52. package/dist/esm/internals/operations/get.d.ts +2 -0
  53. package/dist/esm/internals/operations/get.mjs +59 -0
  54. package/dist/esm/internals/operations/get.mjs.map +1 -0
  55. package/dist/esm/internals/operations/list.d.ts +2 -0
  56. package/dist/esm/internals/operations/list.mjs +71 -0
  57. package/dist/esm/internals/operations/list.mjs.map +1 -0
  58. package/dist/esm/internals/operations/observeQuery.d.ts +2 -0
  59. package/dist/esm/internals/operations/observeQuery.mjs +122 -0
  60. package/dist/esm/internals/operations/observeQuery.mjs.map +1 -0
  61. package/dist/esm/internals/operations/subscription.d.ts +1 -0
  62. package/dist/esm/internals/operations/subscription.mjs +27 -0
  63. package/dist/esm/internals/operations/subscription.mjs.map +1 -0
  64. package/dist/esm/internals/server/generateClient.d.ts +11 -0
  65. package/dist/esm/internals/server/generateClient.mjs +34 -0
  66. package/dist/esm/internals/server/generateClient.mjs.map +1 -0
  67. package/dist/esm/internals/server/generateModelsProperty.d.ts +3 -0
  68. package/dist/esm/internals/server/generateModelsProperty.mjs +45 -0
  69. package/dist/esm/internals/server/generateModelsProperty.mjs.map +1 -0
  70. package/dist/esm/internals/server/index.d.ts +1 -0
  71. package/dist/esm/internals/server/index.mjs +2 -0
  72. package/dist/esm/internals/server/index.mjs.map +1 -0
  73. package/dist/esm/internals/types.d.ts +17 -0
  74. package/dist/esm/internals/types.mjs +2 -0
  75. package/dist/esm/internals/types.mjs.map +1 -0
  76. package/dist/esm/types/index.d.ts +22 -2
  77. package/dist/esm/types/index.mjs +3 -1
  78. package/dist/esm/types/index.mjs.map +1 -1
  79. package/dist/esm/utils/findIndexByFields.d.ts +9 -0
  80. package/dist/esm/utils/findIndexByFields.mjs +22 -0
  81. package/dist/esm/utils/findIndexByFields.mjs.map +1 -0
  82. package/dist/esm/utils/index.d.ts +2 -0
  83. package/dist/esm/utils/index.mjs +2 -0
  84. package/dist/esm/utils/index.mjs.map +1 -1
  85. package/dist/esm/utils/resolveOwnerFields.d.ts +12 -0
  86. package/dist/esm/utils/resolveOwnerFields.mjs +39 -0
  87. package/dist/esm/utils/resolveOwnerFields.mjs.map +1 -0
  88. package/dist/esm/utils/resolvePKFields.d.ts +13 -0
  89. package/dist/esm/utils/resolvePKFields.mjs +14 -0
  90. package/dist/esm/utils/resolvePKFields.mjs.map +1 -0
  91. package/internals/server/package.json +8 -0
  92. package/package.json +15 -9
  93. package/src/internals/APIClient.ts +724 -0
  94. package/src/internals/InternalGraphQLAPI.ts +1 -1
  95. package/src/internals/generateClient.ts +33 -0
  96. package/src/internals/generateModelsProperty.ts +70 -0
  97. package/src/internals/index.ts +1 -0
  98. package/src/internals/operations/get.ts +121 -0
  99. package/src/internals/operations/list.ts +111 -0
  100. package/src/internals/operations/observeQuery.ts +140 -0
  101. package/src/internals/operations/subscription.ts +59 -0
  102. package/src/internals/server/generateClient.ts +45 -0
  103. package/src/internals/server/generateModelsProperty.ts +70 -0
  104. package/src/internals/server/index.ts +4 -0
  105. package/src/internals/types.ts +21 -0
  106. package/src/types/index.ts +28 -2
  107. package/src/utils/findIndexByFields.ts +29 -0
  108. package/src/utils/index.ts +2 -0
  109. package/src/utils/resolveOwnerFields.ts +65 -0
  110. package/src/utils/resolvePKFields.ts +22 -0
@@ -1,6 +1,7 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  import { AmplifyClassV6, ResourcesConfig } from '@aws-amplify/core';
4
+ import { ModelTypes } from '@aws-amplify/data-schema-types';
4
5
  import { Source, DocumentNode, GraphQLError } from 'graphql';
5
6
  export { OperationTypeNode } from 'graphql';
6
7
  import { Observable } from 'rxjs';
@@ -12,6 +13,11 @@ import {
12
13
  import { AmplifyServer } from '@aws-amplify/core/internals/adapter-core';
13
14
 
14
15
  export { CONTROL_MSG, ConnectionState } from './PubSub';
16
+
17
+ export { SelectionSet } from '@aws-amplify/data-schema-types';
18
+
19
+ export { CommonPublicClientOptions } from '../internals/types';
20
+
15
21
  /**
16
22
  * Loose/Unknown options for raw GraphQLAPICategory `graphql()`.
17
23
  */
@@ -349,25 +355,45 @@ export type GeneratedSubscription<InputType, OutputType> = string & {
349
355
  type FilteredKeys<T> = {
350
356
  [P in keyof T]: T[P] extends never ? never : P;
351
357
  }[keyof T];
358
+
352
359
  type ExcludeNeverFields<O> = {
353
360
  [K in FilteredKeys<O>]: O[K];
354
361
  };
355
362
 
356
363
  export const __amplify = Symbol('amplify');
364
+ export const __authMode = Symbol('authMode');
365
+ export const __authToken = Symbol('authToken');
357
366
 
358
367
  export type V6Client<T extends Record<any, any> = never> = ExcludeNeverFields<{
359
368
  [__amplify]: AmplifyClassV6;
369
+ [__authMode]?: GraphQLAuthMode;
370
+ [__authToken]?: string;
360
371
  graphql: GraphQLMethod;
361
372
  cancel: (promise: Promise<any>, message?: string) => boolean;
362
373
  isCancelError: (error: any) => boolean;
374
+ models: ModelTypes<T>;
363
375
  }>;
364
376
 
365
- export type V6ClientSSR<T extends Record<any, any> = never> =
377
+ export type V6ClientSSRRequest<T extends Record<any, any> = never> =
366
378
  ExcludeNeverFields<{
367
379
  [__amplify]: AmplifyClassV6;
380
+ [__authMode]?: GraphQLAuthMode;
381
+ [__authToken]?: string;
368
382
  graphql: GraphQLMethodSSR;
369
383
  cancel: (promise: Promise<any>, message?: string) => boolean;
370
384
  isCancelError: (error: any) => boolean;
385
+ models: ModelTypes<T, 'REQUEST'>;
386
+ }>;
387
+
388
+ export type V6ClientSSRCookies<T extends Record<any, any> = never> =
389
+ ExcludeNeverFields<{
390
+ [__amplify]: AmplifyClassV6;
391
+ [__authMode]?: GraphQLAuthMode;
392
+ [__authToken]?: string;
393
+ graphql: GraphQLMethod;
394
+ cancel: (promise: Promise<any>, message?: string) => boolean;
395
+ isCancelError: (error: any) => boolean;
396
+ models: ModelTypes<T, 'COOKIES'>;
371
397
  }>;
372
398
 
373
399
  export type GraphQLMethod = <
@@ -404,7 +430,7 @@ export type ServerClientGenerationParams = {
404
430
  amplify:
405
431
  | null // null expected when used with `generateServerClient`
406
432
  // closure expected with `generateServerClientUsingCookies`
407
- | ((fn: (amplify: any) => Promise<any>) => Promise<AmplifyClassV6>);
433
+ | ((fn: (amplify: AmplifyClassV6) => Promise<any>) => Promise<any>);
408
434
  // global env-sourced config use for retrieving modelIntro
409
435
  config: ResourcesConfig;
410
436
  };
@@ -0,0 +1,29 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * Iterates through a collection to find a matching item and returns the index.
5
+ *
6
+ * @param needle The item to search for
7
+ * @param haystack The collection to search
8
+ * @param keyFields The fields used to indicate a match
9
+ * @returns Index of `needle` in `haystack`, otherwise -1 if not found.
10
+ */
11
+ export function findIndexByFields<T>(
12
+ needle: T,
13
+ haystack: T[],
14
+ keyFields: Array<keyof T>
15
+ ): number {
16
+ const searchObject = Object.fromEntries(
17
+ keyFields.map(fieldName => [fieldName, needle[fieldName]])
18
+ );
19
+
20
+ for (let i = 0; i < haystack.length; i++) {
21
+ if (
22
+ Object.keys(searchObject).every(k => searchObject[k] === haystack[i][k])
23
+ ) {
24
+ return i;
25
+ }
26
+ }
27
+
28
+ return -1;
29
+ }
@@ -3,3 +3,5 @@
3
3
 
4
4
  export { resolveConfig } from './resolveConfig';
5
5
  export { resolveLibraryOptions } from './resolveLibraryOptions';
6
+ export { resolvePKFields } from './resolvePKFields';
7
+ export { findIndexByFields } from './findIndexByFields';
@@ -0,0 +1,65 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { ResourcesConfig } from '@aws-amplify/core';
4
+
5
+ type GraphQLConfig = Exclude<ResourcesConfig['API'], undefined>['GraphQL'];
6
+ type ModelIntrospectionSchema = Exclude<
7
+ Exclude<GraphQLConfig, undefined>['modelIntrospection'],
8
+ undefined
9
+ >;
10
+ type Model = ModelIntrospectionSchema['models'][string];
11
+
12
+ type AuthAttribute = {
13
+ type: 'auth';
14
+ properties: {
15
+ rules: AuthRule[];
16
+ };
17
+ };
18
+
19
+ /**
20
+ * Only the portions of an Auth rule we care about.
21
+ */
22
+ type AuthRule = {
23
+ allow: string;
24
+ ownerField?: string;
25
+ };
26
+
27
+ /**
28
+ * Given an introspection schema model, returns all owner fields.
29
+ *
30
+ * @param model Model from an introspection schema
31
+ * @returns List of owner field names
32
+ */
33
+ export function resolveOwnerFields(model: Model): string[] {
34
+ const ownerFields = new Set<string>();
35
+ for (const attr of model.attributes || []) {
36
+ if (isAuthAttribute(attr)) {
37
+ for (const rule of attr.properties.rules) {
38
+ if (rule.allow === 'owner') {
39
+ ownerFields.add(rule.ownerField || 'owner');
40
+ }
41
+ }
42
+ }
43
+ }
44
+ return Array.from(ownerFields);
45
+ }
46
+
47
+ /**
48
+ * Type guard that identifies an auth attribute with an attached rules list that
49
+ * specifies an `allow` attribute at a minimum.
50
+ *
51
+ * @param attribute Any object. Ideally a model introspection schema model attribute
52
+ * @returns True if given object is an auth attribute
53
+ */
54
+ function isAuthAttribute(attribute: any): attribute is AuthAttribute {
55
+ if (attribute?.type === 'auth') {
56
+ if (typeof attribute?.properties === 'object') {
57
+ if (Array.isArray(attribute?.properties?.rules)) {
58
+ return (attribute?.properties?.rules as Array<any>).every(
59
+ rule => !!rule.allow
60
+ );
61
+ }
62
+ }
63
+ }
64
+ return false;
65
+ }
@@ -0,0 +1,22 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { ResourcesConfig } from '@aws-amplify/core';
4
+
5
+ type GraphQLConfig = Exclude<ResourcesConfig['API'], undefined>['GraphQL'];
6
+ type ModelIntrospectionSchema = Exclude<
7
+ Exclude<GraphQLConfig, undefined>['modelIntrospection'],
8
+ undefined
9
+ >;
10
+ type SchemaModel = ModelIntrospectionSchema['models'][string];
11
+
12
+ /**
13
+ * Given a SchemaModel from a ModelIntrospectionSchema, returns the primary key
14
+ * as an array of field names.
15
+ *
16
+ * @param model The model object
17
+ * @returns Array of field names
18
+ */
19
+ export function resolvePKFields(model: SchemaModel) {
20
+ const { primaryKeyFieldName, sortKeyFieldNames } = model.primaryKeyInfo;
21
+ return [primaryKeyFieldName, ...sortKeyFieldNames];
22
+ }