@aws-amplify/graphql-model-transformer 1.4.0-rds.3 → 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.
Files changed (218) hide show
  1. package/CHANGELOG.md +24 -8
  2. package/lib/definitions.d.ts.map +1 -1
  3. package/lib/definitions.js +28 -2
  4. package/lib/definitions.js.map +1 -1
  5. package/lib/graphql-model-transformer.d.ts.map +1 -1
  6. package/lib/graphql-model-transformer.js +38 -36
  7. package/lib/graphql-model-transformer.js.map +1 -1
  8. package/lib/graphql-types/common.d.ts.map +1 -1
  9. package/lib/graphql-types/common.js +16 -18
  10. package/lib/graphql-types/common.js.map +1 -1
  11. package/lib/graphql-types/mutation.d.ts.map +1 -1
  12. package/lib/graphql-types/mutation.js +12 -12
  13. package/lib/graphql-types/mutation.js.map +1 -1
  14. package/lib/graphql-types/query.d.ts.map +1 -1
  15. package/lib/graphql-types/query.js.map +1 -1
  16. package/lib/rds-lambda.zip +0 -0
  17. package/lib/rds-notification-lambda.zip +0 -0
  18. package/lib/rds-patching-lambda.zip +0 -0
  19. package/lib/resolvers/common.d.ts.map +1 -1
  20. package/lib/resolvers/common.js.map +1 -1
  21. package/lib/resolvers/dynamodb/mutation.d.ts.map +1 -1
  22. package/lib/resolvers/dynamodb/mutation.js +10 -8
  23. package/lib/resolvers/dynamodb/mutation.js.map +1 -1
  24. package/lib/resolvers/dynamodb/query.d.ts.map +1 -1
  25. package/lib/resolvers/dynamodb/query.js +1 -4
  26. package/lib/resolvers/dynamodb/query.js.map +1 -1
  27. package/lib/resolvers/dynamodb/subscriptions.d.ts.map +1 -1
  28. package/lib/resolvers/dynamodb/subscriptions.js.map +1 -1
  29. package/lib/resolvers/generators/dynamodb-vtl-generator.d.ts.map +1 -1
  30. package/lib/resolvers/generators/dynamodb-vtl-generator.js.map +1 -1
  31. package/lib/resolvers/generators/rds-vtl-generator.d.ts.map +1 -1
  32. package/lib/resolvers/generators/rds-vtl-generator.js.map +1 -1
  33. package/lib/resolvers/generators/vtl-generator.d.ts.map +1 -1
  34. package/lib/resolvers/index.d.ts.map +1 -1
  35. package/lib/resolvers/index.js.map +1 -1
  36. package/lib/resolvers/rds/mutation.d.ts.map +1 -1
  37. package/lib/resolvers/rds/mutation.js.map +1 -1
  38. package/lib/resolvers/rds/query.d.ts.map +1 -1
  39. package/lib/resolvers/rds/query.js.map +1 -1
  40. package/lib/resolvers/rds/resolver.d.ts +2 -2
  41. package/lib/resolvers/rds/resolver.d.ts.map +1 -1
  42. package/lib/resolvers/rds/resolver.js +82 -82
  43. package/lib/resolvers/rds/resolver.js.map +1 -1
  44. package/lib/resources/dynamo-model-resource-generator.d.ts +1 -1
  45. package/lib/resources/dynamo-model-resource-generator.d.ts.map +1 -1
  46. package/lib/resources/dynamo-model-resource-generator.js +2 -2
  47. package/lib/resources/dynamo-model-resource-generator.js.map +1 -1
  48. package/lib/resources/model-resource-generator.d.ts.map +1 -1
  49. package/lib/resources/model-resource-generator.js +15 -7
  50. package/lib/resources/model-resource-generator.js.map +1 -1
  51. package/lib/resources/rds-model-resource-generator.d.ts.map +1 -1
  52. package/lib/resources/rds-model-resource-generator.js +1 -1
  53. package/lib/resources/rds-model-resource-generator.js.map +1 -1
  54. package/package.json +17 -8
  55. package/publish-notification-lambda/node_modules/.package-lock.json +10 -10
  56. package/publish-notification-lambda/node_modules/@smithy/protocol-http/package.json +3 -3
  57. package/publish-notification-lambda/node_modules/@smithy/types/package.json +2 -2
  58. package/publish-notification-lambda/node_modules/@types/node/README.md +1 -1
  59. package/publish-notification-lambda/node_modules/@types/node/package.json +2 -2
  60. package/publish-notification-lambda/package-lock.json +10 -10
  61. package/publish-notification-lambda/src/index.ts +2 -2
  62. package/publish-notification-lambda/tsconfig.json +9 -9
  63. package/rds-lambda/handler.ts +17 -4
  64. package/rds-lambda/node_modules/.package-lock.json +373 -374
  65. package/rds-lambda/node_modules/@babel/compat-data/README.md +1 -1
  66. package/rds-lambda/node_modules/@babel/compat-data/data/corejs2-built-ins.json +146 -0
  67. package/rds-lambda/node_modules/@babel/compat-data/data/native-modules.json +1 -1
  68. package/rds-lambda/node_modules/@babel/compat-data/data/plugin-bugfixes.json +17 -0
  69. package/rds-lambda/node_modules/@babel/compat-data/data/plugins.json +76 -9
  70. package/rds-lambda/node_modules/@babel/compat-data/package.json +4 -4
  71. package/rds-lambda/node_modules/@babel/core/README.md +1 -1
  72. package/rds-lambda/node_modules/@babel/core/package.json +10 -10
  73. package/rds-lambda/node_modules/@babel/generator/README.md +1 -1
  74. package/rds-lambda/node_modules/@babel/generator/package.json +4 -3
  75. package/rds-lambda/node_modules/@babel/helper-compilation-targets/README.md +1 -1
  76. package/rds-lambda/node_modules/@babel/helper-compilation-targets/package.json +5 -5
  77. package/rds-lambda/node_modules/@babel/helper-module-transforms/README.md +1 -1
  78. package/rds-lambda/node_modules/@babel/helper-module-transforms/package.json +10 -6
  79. package/rds-lambda/node_modules/@babel/helper-split-export-declaration/README.md +1 -1
  80. package/rds-lambda/node_modules/@babel/helper-split-export-declaration/package.json +1 -1
  81. package/rds-lambda/node_modules/@babel/helpers/README.md +1 -1
  82. package/rds-lambda/node_modules/@babel/helpers/package.json +3 -3
  83. package/rds-lambda/node_modules/@babel/parser/README.md +1 -1
  84. package/rds-lambda/node_modules/@babel/parser/package.json +2 -2
  85. package/rds-lambda/node_modules/@babel/traverse/README.md +1 -1
  86. package/rds-lambda/node_modules/@babel/traverse/package.json +4 -4
  87. package/rds-lambda/node_modules/@jest/console/package.json +6 -6
  88. package/rds-lambda/node_modules/@jest/core/package.json +21 -21
  89. package/rds-lambda/node_modules/@jest/environment/package.json +5 -5
  90. package/rds-lambda/node_modules/@jest/expect/package.json +6 -6
  91. package/rds-lambda/node_modules/@jest/expect-utils/package.json +5 -5
  92. package/rds-lambda/node_modules/@jest/fake-timers/package.json +7 -7
  93. package/rds-lambda/node_modules/@jest/globals/package.json +6 -6
  94. package/rds-lambda/node_modules/@jest/reporters/package.json +14 -14
  95. package/rds-lambda/node_modules/@jest/schemas/package.json +3 -3
  96. package/rds-lambda/node_modules/@jest/source-map/package.json +3 -3
  97. package/rds-lambda/node_modules/@jest/test-result/package.json +6 -6
  98. package/rds-lambda/node_modules/@jest/test-sequencer/package.json +5 -5
  99. package/rds-lambda/node_modules/@jest/transform/package.json +7 -7
  100. package/rds-lambda/node_modules/@jest/types/package.json +5 -5
  101. package/rds-lambda/node_modules/@sinclair/typebox/package.json +3 -8
  102. package/rds-lambda/node_modules/@sinclair/typebox/readme.md +487 -300
  103. package/rds-lambda/node_modules/@smithy/protocol-http/package.json +3 -3
  104. package/rds-lambda/node_modules/@smithy/types/package.json +2 -2
  105. package/rds-lambda/node_modules/@types/jest/README.md +1 -1
  106. package/rds-lambda/node_modules/@types/jest/package.json +2 -2
  107. package/rds-lambda/node_modules/@types/node/README.md +1 -1
  108. package/rds-lambda/node_modules/@types/node/package.json +2 -2
  109. package/rds-lambda/node_modules/babel-jest/package.json +4 -4
  110. package/rds-lambda/node_modules/caniuse-lite/package.json +1 -1
  111. package/rds-lambda/node_modules/collect-v8-coverage/CHANGELOG.md +7 -0
  112. package/rds-lambda/node_modules/collect-v8-coverage/package.json +18 -20
  113. package/rds-lambda/node_modules/commander/Readme.md +7 -2
  114. package/rds-lambda/node_modules/commander/package.json +17 -17
  115. package/rds-lambda/node_modules/electron-to-chromium/full-chromium-versions.json +1 -1
  116. package/rds-lambda/node_modules/electron-to-chromium/full-versions.json +1 -1
  117. package/rds-lambda/node_modules/electron-to-chromium/package.json +1 -1
  118. package/rds-lambda/node_modules/electron-to-chromium/versions.json +1 -1
  119. package/rds-lambda/node_modules/expect/package.json +10 -9
  120. package/rds-lambda/node_modules/jest/package.json +7 -7
  121. package/rds-lambda/node_modules/jest-circus/package.json +15 -14
  122. package/rds-lambda/node_modules/jest-cli/package.json +10 -9
  123. package/rds-lambda/node_modules/jest-config/package.json +14 -14
  124. package/rds-lambda/node_modules/jest-diff/package.json +4 -4
  125. package/rds-lambda/node_modules/jest-each/package.json +5 -5
  126. package/rds-lambda/node_modules/jest-environment-node/package.json +8 -8
  127. package/rds-lambda/node_modules/jest-haste-map/package.json +5 -5
  128. package/rds-lambda/node_modules/jest-leak-detector/package.json +3 -3
  129. package/rds-lambda/node_modules/jest-matcher-utils/package.json +5 -5
  130. package/rds-lambda/node_modules/jest-message-util/package.json +4 -4
  131. package/rds-lambda/node_modules/jest-mock/package.json +6 -6
  132. package/rds-lambda/node_modules/jest-resolve/package.json +7 -7
  133. package/rds-lambda/node_modules/jest-resolve-dependencies/package.json +8 -8
  134. package/rds-lambda/node_modules/jest-runner/package.json +20 -20
  135. package/rds-lambda/node_modules/jest-runtime/package.json +17 -17
  136. package/rds-lambda/node_modules/jest-snapshot/node_modules/semver/package.json +3 -3
  137. package/rds-lambda/node_modules/jest-snapshot/package.json +15 -17
  138. package/rds-lambda/node_modules/jest-util/package.json +3 -3
  139. package/rds-lambda/node_modules/jest-validate/package.json +4 -4
  140. package/rds-lambda/node_modules/jest-watcher/package.json +5 -5
  141. package/rds-lambda/node_modules/jest-worker/package.json +6 -6
  142. package/rds-lambda/node_modules/knex/CHANGELOG.md +63 -21
  143. package/rds-lambda/node_modules/knex/CONTRIBUTING.md +1 -1
  144. package/rds-lambda/node_modules/knex/LICENSE +22 -22
  145. package/rds-lambda/node_modules/knex/README.md +32 -31
  146. package/rds-lambda/node_modules/knex/UPGRADING.md +94 -82
  147. package/rds-lambda/node_modules/knex/knex.mjs +11 -0
  148. package/rds-lambda/node_modules/knex/lib/dialects/oracle/DEAD_CODE.md +3 -3
  149. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/cjs.stub +15 -15
  150. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/coffee.stub +13 -13
  151. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/eg.stub +14 -14
  152. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/js-schema.stub +22 -22
  153. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/js.stub +22 -22
  154. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/knexfile-coffee.stub +34 -34
  155. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/knexfile-eg.stub +43 -43
  156. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/knexfile-js.stub +47 -47
  157. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/knexfile-ls.stub +35 -35
  158. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/knexfile-ts.stub +47 -47
  159. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/ls.stub +14 -14
  160. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/mjs.stub +23 -23
  161. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/ts-schema.stub +21 -21
  162. package/rds-lambda/node_modules/knex/lib/migrations/migrate/stub/ts.stub +21 -21
  163. package/rds-lambda/node_modules/knex/lib/migrations/seed/stub/coffee.stub +9 -9
  164. package/rds-lambda/node_modules/knex/lib/migrations/seed/stub/eg.stub +11 -11
  165. package/rds-lambda/node_modules/knex/lib/migrations/seed/stub/js.stub +13 -13
  166. package/rds-lambda/node_modules/knex/lib/migrations/seed/stub/ls.stub +11 -11
  167. package/rds-lambda/node_modules/knex/lib/migrations/seed/stub/mjs.stub +12 -12
  168. package/rds-lambda/node_modules/knex/lib/migrations/seed/stub/ts.stub +13 -13
  169. package/rds-lambda/node_modules/knex/package.json +21 -18
  170. package/rds-lambda/node_modules/knex/scripts/docker-compose.yml +2 -2
  171. package/rds-lambda/node_modules/knex/scripts/next-release-howto.md +1 -1
  172. package/rds-lambda/node_modules/knex/scripts/oracledb-install-driver-libs.sh +82 -82
  173. package/rds-lambda/node_modules/knex/scripts/release.sh +36 -34
  174. package/rds-lambda/node_modules/knex/scripts/stress-test/README.txt +18 -18
  175. package/rds-lambda/node_modules/knex/scripts/stress-test/docker-compose.yml +16 -16
  176. package/rds-lambda/node_modules/node-releases/data/processed/envs.json +1 -1
  177. package/rds-lambda/node_modules/node-releases/package.json +1 -1
  178. package/rds-lambda/node_modules/pg-connection-string/package.json +2 -2
  179. package/rds-lambda/node_modules/pretty-format/package.json +5 -5
  180. package/rds-lambda/node_modules/semver/package.json +19 -9
  181. package/rds-lambda/node_modules/ts-jest/.ts-jest-digest +1 -1
  182. package/rds-lambda/node_modules/ts-jest/CHANGELOG.md +9 -0
  183. package/rds-lambda/node_modules/ts-jest/node_modules/semver/package.json +3 -3
  184. package/rds-lambda/node_modules/ts-jest/package.json +12 -12
  185. package/rds-lambda/package-lock.json +373 -374
  186. package/rds-patching-lambda/node_modules/.package-lock.json +10 -10
  187. package/rds-patching-lambda/node_modules/@smithy/protocol-http/package.json +3 -3
  188. package/rds-patching-lambda/node_modules/@smithy/types/package.json +2 -2
  189. package/rds-patching-lambda/node_modules/@types/node/README.md +1 -1
  190. package/rds-patching-lambda/node_modules/@types/node/package.json +2 -2
  191. package/rds-patching-lambda/package-lock.json +10 -10
  192. package/rds-patching-lambda/src/index.ts +2 -4
  193. package/rds-patching-lambda/tsconfig.json +9 -9
  194. package/src/__tests__/model-transformer.test.ts +175 -145
  195. package/src/__tests__/test-utils/helpers.ts +1 -1
  196. package/src/definitions.ts +30 -2
  197. package/src/graphql-model-transformer.ts +81 -75
  198. package/src/graphql-types/common.ts +41 -41
  199. package/src/graphql-types/mutation.ts +13 -13
  200. package/src/graphql-types/query.ts +1 -0
  201. package/src/index.ts +1 -0
  202. package/src/resolvers/common.ts +1 -12
  203. package/src/resolvers/dynamodb/mutation.ts +16 -13
  204. package/src/resolvers/dynamodb/query.ts +7 -12
  205. package/src/resolvers/dynamodb/subscriptions.ts +1 -3
  206. package/src/resolvers/generators/dynamodb-vtl-generator.ts +18 -8
  207. package/src/resolvers/generators/rds-vtl-generator.ts +11 -4
  208. package/src/resolvers/generators/vtl-generator.ts +5 -5
  209. package/src/resolvers/index.ts +1 -3
  210. package/src/resolvers/rds/mutation.ts +76 -70
  211. package/src/resolvers/rds/query.ts +4 -12
  212. package/src/resolvers/rds/resolver.ts +124 -130
  213. package/src/resources/dynamo-model-resource-generator.ts +14 -28
  214. package/src/resources/model-resource-generator.ts +65 -27
  215. package/src/resources/rds-model-resource-generator.ts +5 -15
  216. package/tsconfig.json +4 -4
  217. package/tsconfig.tsbuildinfo +1 -1
  218. package/rds-lambda/node_modules/semver/CHANGELOG.md +0 -70
@@ -1,7 +1,14 @@
1
1
  import { ModelTransformer } from '@aws-amplify/graphql-model-transformer';
2
- import { ConflictHandlerType, GraphQLTransform, SyncConfig, validateModelSchema } from '@aws-amplify/graphql-transformer-core';
2
+ import {
3
+ ConflictHandlerType,
4
+ DatasourceType,
5
+ GraphQLTransform,
6
+ SyncConfig,
7
+ validateModelSchema,
8
+ } from '@aws-amplify/graphql-transformer-core';
3
9
  import { InputObjectTypeDefinitionNode, InputValueDefinitionNode, ListValueNode, NamedTypeNode, parse } from 'graphql';
4
10
  import { getBaseType } from 'graphql-transformer-common';
11
+ import { Template } from 'aws-cdk-lib/assertions';
5
12
  import {
6
13
  doNotExpectFields,
7
14
  expectFields,
@@ -13,7 +20,6 @@ import {
13
20
  verifyInputCount,
14
21
  verifyMatchingTypes,
15
22
  } from './test-utils/helpers';
16
- import { Template } from 'aws-cdk-lib/assertions';
17
23
 
18
24
  describe('ModelTransformer: ', () => {
19
25
  it('should successfully transform simple valid schema', async () => {
@@ -70,17 +76,17 @@ describe('ModelTransformer: ', () => {
70
76
  resolverConfig: {
71
77
  project: {
72
78
  ConflictDetection: 'VERSION',
73
- ConflictHandler: ConflictHandlerType.AUTOMERGE
74
- }
79
+ ConflictHandler: ConflictHandlerType.AUTOMERGE,
80
+ },
75
81
  },
76
82
  });
77
83
  const out = transformer.transform(alsoValidSchema);
78
84
  expect(out).toBeDefined();
79
-
85
+
80
86
  validateModelSchema(parse(out.schema));
81
87
  parse(out.schema);
82
88
  expect(out.schema).toMatchSnapshot();
83
- expect(out.schema).toContain("input NonModelTypeInput")
89
+ expect(out.schema).toContain('input NonModelTypeInput');
84
90
  });
85
91
 
86
92
  it('should support custom query overrides', () => {
@@ -111,7 +117,7 @@ describe('ModelTransformer: ', () => {
111
117
 
112
118
  // This id should always be optional.
113
119
  // aka a named type node aka name.value would not be set if it were a non null node
114
- const idField = createPostInput!.fields!.find(f => f.name.value === 'id');
120
+ const idField = createPostInput!.fields!.find((f) => f.name.value === 'id');
115
121
  expect((idField!.type as NamedTypeNode).name!.value).toEqual('ID');
116
122
  const queryType = getObjectType(parsed, 'Query');
117
123
  expect(queryType).toBeDefined();
@@ -120,7 +126,7 @@ describe('ModelTransformer: ', () => {
120
126
  const subscriptionType = getObjectType(parsed, 'Subscription');
121
127
  expect(subscriptionType).toBeDefined();
122
128
  expectFields(subscriptionType!, ['onCreatePost', 'onUpdatePost', 'onDeletePost']);
123
- const subField = subscriptionType!.fields!.find(f => f.name.value === 'onCreatePost');
129
+ const subField = subscriptionType!.fields!.find((f) => f.name.value === 'onCreatePost');
124
130
  expect(subField).toBeDefined();
125
131
  expect(subField!.directives!.length).toEqual(1);
126
132
  expect(subField!.directives![0].name!.value).toEqual('aws_subscribe');
@@ -331,10 +337,10 @@ describe('ModelTransformer: ', () => {
331
337
  validateModelSchema(schema);
332
338
 
333
339
  const createPostInput: InputObjectTypeDefinitionNode = schema.definitions.find(
334
- d => d.kind === 'InputObjectTypeDefinition' && d.name.value === 'CreatePostInput',
340
+ (d) => d.kind === 'InputObjectTypeDefinition' && d.name.value === 'CreatePostInput',
335
341
  )! as InputObjectTypeDefinitionNode;
336
342
  expect(createPostInput).toBeDefined();
337
- const defaultIdField: InputValueDefinitionNode = createPostInput.fields!.find(f => f.name.value === 'id')!;
343
+ const defaultIdField: InputValueDefinitionNode = createPostInput.fields!.find((f) => f.name.value === 'id')!;
338
344
  expect(defaultIdField).toBeDefined();
339
345
  expect(getBaseType(defaultIdField.type)).toEqual('ID');
340
346
  });
@@ -433,10 +439,10 @@ describe('ModelTransformer: ', () => {
433
439
  validateModelSchema(schema);
434
440
 
435
441
  const createPostInput: InputObjectTypeDefinitionNode = schema.definitions.find(
436
- d => d.kind === 'InputObjectTypeDefinition' && d.name.value === 'CreatePostInput',
442
+ (d) => d.kind === 'InputObjectTypeDefinition' && d.name.value === 'CreatePostInput',
437
443
  )! as InputObjectTypeDefinitionNode;
438
444
  expect(createPostInput).toBeDefined();
439
- const defaultIdField: InputValueDefinitionNode = createPostInput.fields!.find(f => f.name.value === 'id')!;
445
+ const defaultIdField: InputValueDefinitionNode = createPostInput.fields!.find((f) => f.name.value === 'id')!;
440
446
  expect(defaultIdField).toBeDefined();
441
447
  expect(getBaseType(defaultIdField.type)).toEqual('Int');
442
448
  // It should not add default value for ctx.arg.id as id is of type Int
@@ -723,8 +729,8 @@ describe('ModelTransformer: ', () => {
723
729
  resolverConfig: {
724
730
  project: {
725
731
  ConflictDetection: 'VERSION',
726
- ConflictHandler: ConflictHandlerType.AUTOMERGE
727
- }
732
+ ConflictHandler: ConflictHandlerType.AUTOMERGE,
733
+ },
728
734
  },
729
735
  });
730
736
  const result = transformer.transform(validSchema);
@@ -752,8 +758,8 @@ describe('ModelTransformer: ', () => {
752
758
  resolverConfig: {
753
759
  project: {
754
760
  ConflictDetection: 'VERSION',
755
- ConflictHandler: ConflictHandlerType.AUTOMERGE
756
- }
761
+ ConflictHandler: ConflictHandlerType.AUTOMERGE,
762
+ },
757
763
  },
758
764
  });
759
765
  const result = transformer.transform(validSchema);
@@ -781,8 +787,8 @@ describe('ModelTransformer: ', () => {
781
787
  resolverConfig: {
782
788
  project: {
783
789
  ConflictDetection: 'VERSION',
784
- ConflictHandler: ConflictHandlerType.AUTOMERGE
785
- }
790
+ ConflictHandler: ConflictHandlerType.AUTOMERGE,
791
+ },
786
792
  },
787
793
  });
788
794
 
@@ -809,8 +815,8 @@ describe('ModelTransformer: ', () => {
809
815
  resolverConfig: {
810
816
  project: {
811
817
  ConflictDetection: 'VERSION',
812
- ConflictHandler: ConflictHandlerType.AUTOMERGE
813
- }
818
+ ConflictHandler: ConflictHandlerType.AUTOMERGE,
819
+ },
814
820
  },
815
821
  });
816
822
  const result = transformer.transform(validSchema);
@@ -840,8 +846,8 @@ describe('ModelTransformer: ', () => {
840
846
  resolverConfig: {
841
847
  project: {
842
848
  ConflictDetection: 'VERSION',
843
- ConflictHandler: ConflictHandlerType.AUTOMERGE
844
- }
849
+ ConflictHandler: ConflictHandlerType.AUTOMERGE,
850
+ },
845
851
  },
846
852
  });
847
853
 
@@ -910,8 +916,8 @@ describe('ModelTransformer: ', () => {
910
916
  resolverConfig: {
911
917
  project: {
912
918
  ConflictDetection: 'VERSION',
913
- ConflictHandler: ConflictHandlerType.AUTOMERGE
914
- }
919
+ ConflictHandler: ConflictHandlerType.AUTOMERGE,
920
+ },
915
921
  },
916
922
  });
917
923
  const result = transformer.transform(validSchema);
@@ -1074,42 +1080,41 @@ describe('ModelTransformer: ', () => {
1074
1080
  const subscriptionType = getObjectType(parsed, 'Subscription');
1075
1081
  expect(subscriptionType).toBeDefined();
1076
1082
 
1077
- subscriptionType!.fields!.forEach(it => {
1083
+ subscriptionType!.fields!.forEach((it) => {
1078
1084
  expect(it.name.value.length <= 50).toBeTruthy();
1079
1085
  });
1080
1086
 
1081
1087
  const iamStackResource = out.stacks.ThisIsAVeryLongNameModelThatShouldNotGenerateIAMRoleNamesOver64Characters;
1082
1088
  expect(iamStackResource).toBeDefined();
1083
- Template.fromJSON(iamStackResource)
1084
- .hasResourceProperties('AWS::IAM::Role', {
1085
- AssumeRolePolicyDocument: {
1086
- Statement: [
1089
+ Template.fromJSON(iamStackResource).hasResourceProperties('AWS::IAM::Role', {
1090
+ AssumeRolePolicyDocument: {
1091
+ Statement: [
1092
+ {
1093
+ Action: 'sts:AssumeRole',
1094
+ Effect: 'Allow',
1095
+ Principal: {
1096
+ Service: 'appsync.amazonaws.com',
1097
+ },
1098
+ },
1099
+ ],
1100
+ Version: '2012-10-17',
1101
+ },
1102
+ RoleName: {
1103
+ 'Fn::Join': [
1104
+ '',
1105
+ [
1106
+ 'ThisIsAVeryLongNameM2d9fca-',
1087
1107
  {
1088
- Action: 'sts:AssumeRole',
1089
- Effect: 'Allow',
1090
- Principal: {
1091
- Service: 'appsync.amazonaws.com',
1092
- },
1108
+ Ref: 'referencetotransformerrootstackGraphQLAPI20497F53ApiId',
1109
+ },
1110
+ '-',
1111
+ {
1112
+ Ref: 'referencetotransformerrootstackenv10C5A902Ref',
1093
1113
  },
1094
1114
  ],
1095
- Version: '2012-10-17',
1096
- },
1097
- RoleName: {
1098
- 'Fn::Join': [
1099
- '',
1100
- [
1101
- 'ThisIsAVeryLongNameM2d9fca-',
1102
- {
1103
- Ref: 'referencetotransformerrootstackGraphQLAPI20497F53ApiId',
1104
- },
1105
- '-',
1106
- {
1107
- Ref: 'referencetotransformerrootstackenv10C5A902Ref',
1108
- },
1109
- ],
1110
- ],
1111
- },
1112
- });
1115
+ ],
1116
+ },
1117
+ });
1113
1118
 
1114
1119
  validateModelSchema(parsed);
1115
1120
  });
@@ -1137,7 +1142,7 @@ describe('ModelTransformer: ', () => {
1137
1142
 
1138
1143
  expectFieldsOnInputType(createTodoInput!, ['id', 'name']);
1139
1144
 
1140
- const idField = createTodoInput!.fields!.find(f => f.name.value === 'id');
1145
+ const idField = createTodoInput!.fields!.find((f) => f.name.value === 'id');
1141
1146
  expect((idField!.type as NamedTypeNode).name!.value).toEqual('ID');
1142
1147
  expect((idField!.type as NamedTypeNode).kind).toEqual('NamedType');
1143
1148
 
@@ -1159,8 +1164,10 @@ describe('ModelTransformer: ', () => {
1159
1164
  ConflictHandler: ConflictHandlerType.AUTOMERGE,
1160
1165
  },
1161
1166
  },
1162
- sandboxModeEnabled: true,
1163
1167
  transformers: [new ModelTransformer()],
1168
+ transformParameters: {
1169
+ sandboxModeEnabled: true,
1170
+ },
1164
1171
  });
1165
1172
  const out = transformer.transform(validSchema);
1166
1173
  expect(out).toBeDefined();
@@ -1173,54 +1180,53 @@ describe('ModelTransformer: ', () => {
1173
1180
  expect(out.resolvers['Query.syncTodos.req.vtl']).toMatchSnapshot();
1174
1181
  expect(out.resolvers['Query.syncTodos.res.vtl']).toMatchSnapshot();
1175
1182
  // ds table
1176
- Template.fromJSON(out.rootStack)
1177
- .hasResourceProperties('AWS::DynamoDB::Table', {
1178
- KeySchema: [
1179
- {
1180
- AttributeName: 'ds_pk',
1181
- KeyType: 'HASH',
1182
- },
1183
- {
1184
- AttributeName: 'ds_sk',
1185
- KeyType: 'RANGE',
1186
- },
1187
- ],
1188
- AttributeDefinitions: [
1189
- {
1190
- AttributeName: 'ds_pk',
1191
- AttributeType: 'S',
1192
- },
1193
- {
1194
- AttributeName: 'ds_sk',
1195
- AttributeType: 'S',
1196
- },
1197
- ],
1198
- BillingMode: 'PAY_PER_REQUEST',
1199
- StreamSpecification: {
1200
- StreamViewType: 'NEW_AND_OLD_IMAGES',
1183
+ Template.fromJSON(out.rootStack).hasResourceProperties('AWS::DynamoDB::Table', {
1184
+ KeySchema: [
1185
+ {
1186
+ AttributeName: 'ds_pk',
1187
+ KeyType: 'HASH',
1201
1188
  },
1202
- TableName: {
1203
- 'Fn::Join': [
1204
- '',
1205
- [
1206
- 'AmplifyDataStore-',
1207
- {
1208
- 'Fn::GetAtt': ['GraphQLAPI', 'ApiId'],
1209
- },
1210
- '-',
1211
- {
1212
- Ref: 'env',
1213
- },
1214
- ],
1215
- ],
1189
+ {
1190
+ AttributeName: 'ds_sk',
1191
+ KeyType: 'RANGE',
1216
1192
  },
1217
- TimeToLiveSpecification: {
1218
- AttributeName: '_ttl',
1219
- Enabled: true,
1193
+ ],
1194
+ AttributeDefinitions: [
1195
+ {
1196
+ AttributeName: 'ds_pk',
1197
+ AttributeType: 'S',
1220
1198
  },
1221
- });
1199
+ {
1200
+ AttributeName: 'ds_sk',
1201
+ AttributeType: 'S',
1202
+ },
1203
+ ],
1204
+ BillingMode: 'PAY_PER_REQUEST',
1205
+ StreamSpecification: {
1206
+ StreamViewType: 'NEW_AND_OLD_IMAGES',
1207
+ },
1208
+ TableName: {
1209
+ 'Fn::Join': [
1210
+ '',
1211
+ [
1212
+ 'AmplifyDataStore-',
1213
+ {
1214
+ 'Fn::GetAtt': ['GraphQLAPI', 'ApiId'],
1215
+ },
1216
+ '-',
1217
+ {
1218
+ Ref: 'env',
1219
+ },
1220
+ ],
1221
+ ],
1222
+ },
1223
+ TimeToLiveSpecification: {
1224
+ AttributeName: '_ttl',
1225
+ Enabled: true,
1226
+ },
1227
+ });
1222
1228
  });
1223
- it("the conflict detection of per model rule should be respected", () => {
1229
+ it('the conflict detection of per model rule should be respected', () => {
1224
1230
  const validSchema = `
1225
1231
  type Todo @model {
1226
1232
  name: String
@@ -1233,74 +1239,69 @@ describe('ModelTransformer: ', () => {
1233
1239
  const transformer = new GraphQLTransform({
1234
1240
  resolverConfig: {
1235
1241
  project: {
1236
- ConflictDetection: "VERSION",
1237
- ConflictHandler: ConflictHandlerType.AUTOMERGE
1242
+ ConflictDetection: 'VERSION',
1243
+ ConflictHandler: ConflictHandlerType.AUTOMERGE,
1238
1244
  },
1239
1245
  models: {
1240
1246
  Todo: {
1241
- ConflictDetection: "VERSION",
1247
+ ConflictDetection: 'VERSION',
1242
1248
  ConflictHandler: ConflictHandlerType.LAMBDA,
1243
1249
  LambdaConflictHandler: {
1244
- name: "myTodoConflictHandler"
1245
- }
1250
+ name: 'myTodoConflictHandler',
1251
+ },
1246
1252
  },
1247
1253
  Author: {
1248
- ConflictDetection: "VERSION",
1249
- ConflictHandler: ConflictHandlerType.AUTOMERGE
1250
- }
1251
- }
1254
+ ConflictDetection: 'VERSION',
1255
+ ConflictHandler: ConflictHandlerType.AUTOMERGE,
1256
+ },
1257
+ },
1258
+ },
1259
+ transformers: [new ModelTransformer()],
1260
+ transformParameters: {
1261
+ sandboxModeEnabled: true,
1252
1262
  },
1253
- sandboxModeEnabled: true,
1254
- transformers: [new ModelTransformer()]
1255
1263
  });
1256
1264
  const out = transformer.transform(validSchema);
1257
1265
  expect(out).toBeDefined();
1258
1266
  const schema = parse(out.schema);
1259
1267
  validateModelSchema(schema);
1260
1268
  // nested stacks for models
1261
- const todoStack = out.stacks["Todo"];
1262
- const authorStack = out.stacks["Author"];
1269
+ const todoStack = out.stacks['Todo'];
1270
+ const authorStack = out.stacks['Author'];
1263
1271
  // Todo stack should have lambda for conflict detect rather than auto merge
1264
- Template.fromJSON(todoStack).hasResourceProperties(
1265
- "AWS::AppSync::FunctionConfiguration",
1266
- {
1267
- SyncConfig: {
1268
- ConflictDetection: "VERSION",
1269
- ConflictHandler: "LAMBDA",
1270
- }
1271
- }
1272
- );
1272
+ Template.fromJSON(todoStack).hasResourceProperties('AWS::AppSync::FunctionConfiguration', {
1273
+ SyncConfig: {
1274
+ ConflictDetection: 'VERSION',
1275
+ ConflictHandler: 'LAMBDA',
1276
+ },
1277
+ });
1273
1278
  Template.fromJSON(todoStack).resourcePropertiesCountIs(
1274
- "AWS::AppSync::FunctionConfiguration",
1279
+ 'AWS::AppSync::FunctionConfiguration',
1275
1280
  {
1276
1281
  SyncConfig: {
1277
- ConflictDetection: "VERSION",
1278
- ConflictHandler: "AUTOMERGE",
1279
- }
1282
+ ConflictDetection: 'VERSION',
1283
+ ConflictHandler: 'AUTOMERGE',
1284
+ },
1280
1285
  },
1281
- 0
1286
+ 0,
1282
1287
  );
1283
1288
  // Author stack should have automerge for conflict detect rather than lambda
1284
1289
  Template.fromJSON(authorStack).resourcePropertiesCountIs(
1285
- "AWS::AppSync::FunctionConfiguration",
1290
+ 'AWS::AppSync::FunctionConfiguration',
1286
1291
  {
1287
1292
  SyncConfig: {
1288
- ConflictDetection: "VERSION",
1289
- ConflictHandler: "LAMBDA",
1290
- }
1293
+ ConflictDetection: 'VERSION',
1294
+ ConflictHandler: 'LAMBDA',
1295
+ },
1291
1296
  },
1292
- 0
1297
+ 0,
1293
1298
  );
1294
- Template.fromJSON(authorStack).hasResourceProperties(
1295
- "AWS::AppSync::FunctionConfiguration",
1296
- {
1297
- SyncConfig: {
1298
- ConflictDetection: "VERSION",
1299
- ConflictHandler: "AUTOMERGE",
1300
- }
1301
- }
1302
- );
1303
-
1299
+ Template.fromJSON(authorStack).hasResourceProperties('AWS::AppSync::FunctionConfiguration', {
1300
+ SyncConfig: {
1301
+ ConflictDetection: 'VERSION',
1302
+ ConflictHandler: 'AUTOMERGE',
1303
+ },
1304
+ });
1304
1305
  });
1305
1306
  it('should add the model parameters at the root sack', () => {
1306
1307
  const modelParams = {
@@ -1337,8 +1338,10 @@ describe('ModelTransformer: ', () => {
1337
1338
  name: String
1338
1339
  }`;
1339
1340
  const transformer = new GraphQLTransform({
1340
- sandboxModeEnabled: true,
1341
1341
  transformers: [new ModelTransformer()],
1342
+ transformParameters: {
1343
+ sandboxModeEnabled: true,
1344
+ },
1342
1345
  });
1343
1346
  const out = transformer.transform(validSchema);
1344
1347
 
@@ -1374,8 +1377,10 @@ describe('ModelTransformer: ', () => {
1374
1377
  },
1375
1378
  ],
1376
1379
  },
1377
- sandboxModeEnabled: true,
1378
1380
  transformers: [new ModelTransformer()],
1381
+ transformParameters: {
1382
+ sandboxModeEnabled: true,
1383
+ },
1379
1384
  });
1380
1385
  const out = transformer.transform(validSchema);
1381
1386
  expect(out).toBeDefined();
@@ -1386,12 +1391,12 @@ describe('ModelTransformer: ', () => {
1386
1391
  const postType = getObjectType(schema, 'Post')!;
1387
1392
  expect(postType).toBeDefined();
1388
1393
  expect(postType.directives).toBeDefined();
1389
- expect(postType.directives!.some(dir => dir.name.value === 'aws_api_key')).toEqual(true);
1394
+ expect(postType.directives!.some((dir) => dir.name.value === 'aws_api_key')).toEqual(true);
1390
1395
 
1391
1396
  const tagType = getObjectType(schema, 'Tag')!;
1392
1397
  expect(tagType).toBeDefined();
1393
1398
  expect(tagType.directives).toBeDefined();
1394
- expect(tagType.directives!.some(dir => dir.name.value === 'aws_api_key')).toEqual(true);
1399
+ expect(tagType.directives!.some((dir) => dir.name.value === 'aws_api_key')).toEqual(true);
1395
1400
 
1396
1401
  // check operations
1397
1402
  const queryType = getObjectType(schema, 'Query')!;
@@ -1402,7 +1407,7 @@ describe('ModelTransformer: ', () => {
1402
1407
  expect(subscriptionType).toBeDefined();
1403
1408
 
1404
1409
  for (const field of [...queryType.fields!, ...mutationType.fields!, ...subscriptionType.fields!]) {
1405
- expect(field.directives!.some(dir => dir.name.value === 'aws_api_key')).toEqual(true);
1410
+ expect(field.directives!.some((dir) => dir.name.value === 'aws_api_key')).toEqual(true);
1406
1411
  }
1407
1412
  });
1408
1413
 
@@ -1505,4 +1510,29 @@ describe('ModelTransformer: ', () => {
1505
1510
  const updateTodoIdField = getFieldOnInputType(updateTodoInput!, 'id');
1506
1511
  expect(updateTodoIdField.type.kind).toBe('NonNullType');
1507
1512
  });
1513
+
1514
+ it('should successfully transform simple rds valid schema', async () => {
1515
+ const validSchema = `
1516
+ type Post @model {
1517
+ id: ID!
1518
+ title: String!
1519
+ }
1520
+ `;
1521
+
1522
+ const transformer = new GraphQLTransform({
1523
+ transformers: [new ModelTransformer()],
1524
+ });
1525
+ const modelToDatasourceMap = new Map<string, DatasourceType>();
1526
+ modelToDatasourceMap.set('Post', {
1527
+ dbType: 'MySQL',
1528
+ provisionDB: false,
1529
+ });
1530
+ const out = transformer.transform(validSchema, {
1531
+ modelToDatasourceMap,
1532
+ });
1533
+ expect(out).toBeDefined();
1534
+
1535
+ validateModelSchema(parse(out.schema));
1536
+ parse(out.schema);
1537
+ });
1508
1538
  });
@@ -43,7 +43,7 @@ export function doNotExpectFields(type: ObjectTypeDefinitionNode, fields: string
43
43
  }
44
44
 
45
45
  export function verifyInputCount(doc: DocumentNode, type: string, count: number): boolean {
46
- return doc.definitions.filter(def => def.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION && def.name.value === type).length == count;
46
+ return doc.definitions.filter((def) => def.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION && def.name.value === type).length == count;
47
47
  }
48
48
 
49
49
  export function getFieldOnInputType(type: InputObjectTypeDefinitionNode, field: string): InputValueDefinitionNode {
@@ -5,8 +5,34 @@ export const FLOAT_CONDITIONS = ['ne', 'eq', 'le', 'lt', 'ge', 'gt', 'between'];
5
5
  export const BOOLEAN_CONDITIONS = ['ne', 'eq'];
6
6
  export const SIZE_CONDITIONS = ['ne', 'eq', 'le', 'lt', 'ge', 'gt', 'between'];
7
7
 
8
- export const SUBSCRIPTION_STRING_CONDITIONS = ['ne', 'eq', 'le', 'lt', 'ge', 'gt', 'contains', 'notContains', 'between', 'beginsWith', 'in', 'notIn'];
9
- export const SUBSCRIPTION_ID_CONDITIONS = ['ne', 'eq', 'le', 'lt', 'ge', 'gt', 'contains', 'notContains', 'between', 'beginsWith', 'in', 'notIn'];
8
+ export const SUBSCRIPTION_STRING_CONDITIONS = [
9
+ 'ne',
10
+ 'eq',
11
+ 'le',
12
+ 'lt',
13
+ 'ge',
14
+ 'gt',
15
+ 'contains',
16
+ 'notContains',
17
+ 'between',
18
+ 'beginsWith',
19
+ 'in',
20
+ 'notIn',
21
+ ];
22
+ export const SUBSCRIPTION_ID_CONDITIONS = [
23
+ 'ne',
24
+ 'eq',
25
+ 'le',
26
+ 'lt',
27
+ 'ge',
28
+ 'gt',
29
+ 'contains',
30
+ 'notContains',
31
+ 'between',
32
+ 'beginsWith',
33
+ 'in',
34
+ 'notIn',
35
+ ];
10
36
  export const SUBSCRIPTION_INT_CONDITIONS = ['ne', 'eq', 'le', 'lt', 'ge', 'gt', 'between', 'in', 'notIn'];
11
37
  export const SUBSCRIPTION_FLOAT_CONDITIONS = ['ne', 'eq', 'le', 'lt', 'ge', 'gt', 'between', 'in', 'notIn'];
12
38
  export const SUBSCRIPTION_BOOLEAN_CONDITIONS = ['ne', 'eq'];
@@ -18,5 +44,7 @@ export const FLOAT_FUNCTIONS = new Set<string>(['attributeExists', 'attributeTyp
18
44
  export const BOOLEAN_FUNCTIONS = new Set<string>(['attributeExists', 'attributeType']);
19
45
 
20
46
  export const ATTRIBUTE_TYPES = ['binary', 'binarySet', 'bool', 'list', 'map', 'number', 'numberSet', 'string', 'stringSet', '_null'];
47
+
21
48
  export const OPERATION_KEY = '__operation';
49
+
22
50
  export const API_KEY_DIRECTIVE = 'aws_api_key';