@marlonjd/graphql-relational-transformer-stack-limits 3.1.13-stack-limits.3

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 (113) hide show
  1. package/API.md +97 -0
  2. package/CHANGELOG.md +807 -0
  3. package/README.md +43 -0
  4. package/jest.config.js +12 -0
  5. package/lib/belongs-to/belongs-to-directive-ddb-fields-transformer.d.ts +11 -0
  6. package/lib/belongs-to/belongs-to-directive-ddb-fields-transformer.d.ts.map +1 -0
  7. package/lib/belongs-to/belongs-to-directive-ddb-fields-transformer.js +37 -0
  8. package/lib/belongs-to/belongs-to-directive-ddb-fields-transformer.js.map +1 -0
  9. package/lib/belongs-to/belongs-to-directive-ddb-references-transformer.d.ts +11 -0
  10. package/lib/belongs-to/belongs-to-directive-ddb-references-transformer.d.ts.map +1 -0
  11. package/lib/belongs-to/belongs-to-directive-ddb-references-transformer.js +37 -0
  12. package/lib/belongs-to/belongs-to-directive-ddb-references-transformer.js.map +1 -0
  13. package/lib/belongs-to/belongs-to-directive-sql-transformer.d.ts +11 -0
  14. package/lib/belongs-to/belongs-to-directive-sql-transformer.d.ts.map +1 -0
  15. package/lib/belongs-to/belongs-to-directive-sql-transformer.js +32 -0
  16. package/lib/belongs-to/belongs-to-directive-sql-transformer.js.map +1 -0
  17. package/lib/belongs-to/belongs-to-directive-transformer-factory.d.ts +5 -0
  18. package/lib/belongs-to/belongs-to-directive-transformer-factory.d.ts.map +1 -0
  19. package/lib/belongs-to/belongs-to-directive-transformer-factory.js +32 -0
  20. package/lib/belongs-to/belongs-to-directive-transformer-factory.js.map +1 -0
  21. package/lib/data-source-based-directive-transformer.d.ts +11 -0
  22. package/lib/data-source-based-directive-transformer.d.ts.map +1 -0
  23. package/lib/data-source-based-directive-transformer.js +3 -0
  24. package/lib/data-source-based-directive-transformer.js.map +1 -0
  25. package/lib/graphql-belongs-to-transformer.d.ts +13 -0
  26. package/lib/graphql-belongs-to-transformer.d.ts.map +1 -0
  27. package/lib/graphql-belongs-to-transformer.js +139 -0
  28. package/lib/graphql-belongs-to-transformer.js.map +1 -0
  29. package/lib/graphql-has-many-transformer.d.ts +13 -0
  30. package/lib/graphql-has-many-transformer.d.ts.map +1 -0
  31. package/lib/graphql-has-many-transformer.js +120 -0
  32. package/lib/graphql-has-many-transformer.js.map +1 -0
  33. package/lib/graphql-has-one-transformer.d.ts +13 -0
  34. package/lib/graphql-has-one-transformer.d.ts.map +1 -0
  35. package/lib/graphql-has-one-transformer.js +132 -0
  36. package/lib/graphql-has-one-transformer.js.map +1 -0
  37. package/lib/graphql-many-to-many-transformer.d.ts +22 -0
  38. package/lib/graphql-many-to-many-transformer.d.ts.map +1 -0
  39. package/lib/graphql-many-to-many-transformer.js +384 -0
  40. package/lib/graphql-many-to-many-transformer.js.map +1 -0
  41. package/lib/has-many/has-many-directive-ddb-fields-transformer.d.ts +11 -0
  42. package/lib/has-many/has-many-directive-ddb-fields-transformer.d.ts.map +1 -0
  43. package/lib/has-many/has-many-directive-ddb-fields-transformer.js +36 -0
  44. package/lib/has-many/has-many-directive-ddb-fields-transformer.js.map +1 -0
  45. package/lib/has-many/has-many-directive-ddb-references-transformer.d.ts +11 -0
  46. package/lib/has-many/has-many-directive-ddb-references-transformer.d.ts.map +1 -0
  47. package/lib/has-many/has-many-directive-ddb-references-transformer.js +52 -0
  48. package/lib/has-many/has-many-directive-ddb-references-transformer.js.map +1 -0
  49. package/lib/has-many/has-many-directive-sql-transformer.d.ts +11 -0
  50. package/lib/has-many/has-many-directive-sql-transformer.d.ts.map +1 -0
  51. package/lib/has-many/has-many-directive-sql-transformer.js +32 -0
  52. package/lib/has-many/has-many-directive-sql-transformer.js.map +1 -0
  53. package/lib/has-many/has-many-directive-transformer-factory.d.ts +5 -0
  54. package/lib/has-many/has-many-directive-transformer-factory.d.ts.map +1 -0
  55. package/lib/has-many/has-many-directive-transformer-factory.js +32 -0
  56. package/lib/has-many/has-many-directive-transformer-factory.js.map +1 -0
  57. package/lib/has-one/has-one-directive-ddb-fields-transformer.d.ts +11 -0
  58. package/lib/has-one/has-one-directive-ddb-fields-transformer.d.ts.map +1 -0
  59. package/lib/has-one/has-one-directive-ddb-fields-transformer.js +34 -0
  60. package/lib/has-one/has-one-directive-ddb-fields-transformer.js.map +1 -0
  61. package/lib/has-one/has-one-directive-ddb-references-transformer.d.ts +11 -0
  62. package/lib/has-one/has-one-directive-ddb-references-transformer.d.ts.map +1 -0
  63. package/lib/has-one/has-one-directive-ddb-references-transformer.js +52 -0
  64. package/lib/has-one/has-one-directive-ddb-references-transformer.js.map +1 -0
  65. package/lib/has-one/has-one-directive-sql-transformer.d.ts +11 -0
  66. package/lib/has-one/has-one-directive-sql-transformer.d.ts.map +1 -0
  67. package/lib/has-one/has-one-directive-sql-transformer.js +32 -0
  68. package/lib/has-one/has-one-directive-sql-transformer.js.map +1 -0
  69. package/lib/has-one/has-one-directive-transformer-factory.d.ts +5 -0
  70. package/lib/has-one/has-one-directive-transformer-factory.d.ts.map +1 -0
  71. package/lib/has-one/has-one-directive-transformer-factory.js +32 -0
  72. package/lib/has-one/has-one-directive-transformer-factory.js.map +1 -0
  73. package/lib/index.d.ts +6 -0
  74. package/lib/index.d.ts.map +1 -0
  75. package/lib/index.js +16 -0
  76. package/lib/index.js.map +1 -0
  77. package/lib/resolver/ddb-generator.d.ts +14 -0
  78. package/lib/resolver/ddb-generator.d.ts.map +1 -0
  79. package/lib/resolver/ddb-generator.js +188 -0
  80. package/lib/resolver/ddb-generator.js.map +1 -0
  81. package/lib/resolver/ddb-references-generator.d.ts +11 -0
  82. package/lib/resolver/ddb-references-generator.d.ts.map +1 -0
  83. package/lib/resolver/ddb-references-generator.js +216 -0
  84. package/lib/resolver/ddb-references-generator.js.map +1 -0
  85. package/lib/resolver/generator-factory.d.ts +4 -0
  86. package/lib/resolver/generator-factory.d.ts.map +1 -0
  87. package/lib/resolver/generator-factory.js +18 -0
  88. package/lib/resolver/generator-factory.js.map +1 -0
  89. package/lib/resolver/generator.d.ts +8 -0
  90. package/lib/resolver/generator.d.ts.map +1 -0
  91. package/lib/resolver/generator.js +7 -0
  92. package/lib/resolver/generator.js.map +1 -0
  93. package/lib/resolver/rds-generator.d.ts +16 -0
  94. package/lib/resolver/rds-generator.d.ts.map +1 -0
  95. package/lib/resolver/rds-generator.js +148 -0
  96. package/lib/resolver/rds-generator.js.map +1 -0
  97. package/lib/resolvers.d.ts +8 -0
  98. package/lib/resolvers.d.ts.map +1 -0
  99. package/lib/resolvers.js +246 -0
  100. package/lib/resolvers.js.map +1 -0
  101. package/lib/schema.d.ts +15 -0
  102. package/lib/schema.d.ts.map +1 -0
  103. package/lib/schema.js +379 -0
  104. package/lib/schema.js.map +1 -0
  105. package/lib/types.d.ts +79 -0
  106. package/lib/types.d.ts.map +1 -0
  107. package/lib/types.js +3 -0
  108. package/lib/types.js.map +1 -0
  109. package/lib/utils.d.ts +43 -0
  110. package/lib/utils.d.ts.map +1 -0
  111. package/lib/utils.js +465 -0
  112. package/lib/utils.js.map +1 -0
  113. package/package.json +49 -0
@@ -0,0 +1,384 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ManyToManyTransformer = void 0;
7
+ const graphql_transformer_core_1 = require("@aws-amplify/graphql-transformer-core");
8
+ const graphql_directives_1 = require("@aws-amplify/graphql-directives");
9
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
10
+ const graphql_1 = require("graphql");
11
+ const graphql_transformer_common_1 = require("graphql-transformer-common");
12
+ const immer_1 = __importDefault(require("immer"));
13
+ const utils_1 = require("./utils");
14
+ const resolvers_1 = require("./resolvers");
15
+ const schema_1 = require("./schema");
16
+ const ddb_generator_1 = require("./resolver/ddb-generator");
17
+ class ManyToManyTransformer extends graphql_transformer_core_1.TransformerPluginBase {
18
+ constructor(modelTransformer, indexTransformer, hasOneTransformer, authProvider) {
19
+ super('amplify-many-to-many-transformer', graphql_directives_1.ManyToManyDirective.definition);
20
+ this.relationMap = new Map();
21
+ this.directiveList = [];
22
+ this.field = (parent, definition, directive, context) => {
23
+ const directiveWrapped = new graphql_transformer_core_1.DirectiveWrapper(directive);
24
+ const args = directiveWrapped.getArguments({
25
+ directiveName: graphql_directives_1.ManyToManyDirective.name,
26
+ object: parent,
27
+ field: definition,
28
+ directive,
29
+ limit: graphql_directives_1.ManyToManyDirective.defaults.limit,
30
+ }, (0, graphql_transformer_core_1.generateGetArgumentsInput)(context.transformParameters));
31
+ (0, utils_1.validateModelDirective)(args);
32
+ args.connectionFields = [];
33
+ if (!(0, graphql_transformer_common_1.isListType)(definition.type)) {
34
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`@${graphql_directives_1.ManyToManyDirective.name} must be used with a list.`);
35
+ }
36
+ addDirectiveToRelationMap(this.relationMap, args);
37
+ this.directiveList.push(args);
38
+ this.relationMap.forEach((manyToManyRelation, _) => addJoinTableToDatasourceStrategies(context, manyToManyRelation));
39
+ };
40
+ this.mutateSchema = (context) => {
41
+ const manyToManyMap = new Map();
42
+ const newDocument = (0, immer_1.default)(context.inputDocument, (draftDoc) => {
43
+ var _a;
44
+ const filteredDefs = (_a = draftDoc === null || draftDoc === void 0 ? void 0 : draftDoc.definitions) === null || _a === void 0 ? void 0 : _a.filter((def) => def.kind === 'ObjectTypeExtension' || def.kind === 'ObjectTypeDefinition');
45
+ const objectDefs = filteredDefs;
46
+ objectDefs === null || objectDefs === void 0 ? void 0 : objectDefs.forEach((def) => {
47
+ var _a;
48
+ (_a = def === null || def === void 0 ? void 0 : def.fields) === null || _a === void 0 ? void 0 : _a.forEach((field) => {
49
+ var _a, _b;
50
+ (_b = (_a = field === null || field === void 0 ? void 0 : field.directives) === null || _a === void 0 ? void 0 : _a.filter((dir) => dir.name.value === graphql_directives_1.ManyToManyDirective.name)) === null || _b === void 0 ? void 0 : _b.forEach((dir) => {
51
+ var _a, _b, _c, _d, _e, _f, _g;
52
+ const relationArg = (_a = dir === null || dir === void 0 ? void 0 : dir.arguments) === null || _a === void 0 ? void 0 : _a.find((arg) => arg.name.value === 'relationName');
53
+ if (((_b = relationArg === null || relationArg === void 0 ? void 0 : relationArg.value) === null || _b === void 0 ? void 0 : _b.kind) === 'StringValue') {
54
+ const relationName = relationArg.value.value;
55
+ const manyToManyContext = {
56
+ model: def,
57
+ field,
58
+ directive: dir,
59
+ modelAuthDirectives: (_d = (_c = def === null || def === void 0 ? void 0 : def.directives) === null || _c === void 0 ? void 0 : _c.filter((authDir) => authDir.name.value === 'auth')) !== null && _d !== void 0 ? _d : [],
60
+ fieldAuthDirectives: (_f = (_e = def === null || def === void 0 ? void 0 : def.directives) === null || _e === void 0 ? void 0 : _e.filter((authDir) => authDir.name.value === 'auth')) !== null && _f !== void 0 ? _f : [],
61
+ relationName,
62
+ };
63
+ if (!manyToManyMap.has(relationName)) {
64
+ manyToManyMap.set(relationName, []);
65
+ }
66
+ (_g = manyToManyMap.get(relationName)) === null || _g === void 0 ? void 0 : _g.push(manyToManyContext);
67
+ }
68
+ });
69
+ });
70
+ });
71
+ manyToManyMap.forEach((value, key) => {
72
+ if (value.length !== 2) {
73
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`relationNames should have 2 occurrences. '${key}' has '${value.length}' occurrences`);
74
+ }
75
+ });
76
+ manyToManyMap.forEach((value, key) => {
77
+ var _a, _b, _c, _d;
78
+ const manyToManyOne = value[0];
79
+ const manyToManyTwo = value[1];
80
+ const d1origTypeName = context.schemaHelper.getTypeMapping(manyToManyOne.model.name.value);
81
+ const d2origTypeName = context.schemaHelper.getTypeMapping(manyToManyTwo.model.name.value);
82
+ const d1TypeName = manyToManyOne.model.name.value;
83
+ const d2TypeName = manyToManyTwo.model.name.value;
84
+ const d1FieldName = d1TypeName.charAt(0).toLowerCase() + d1TypeName.slice(1);
85
+ const d2FieldName = d2TypeName.charAt(0).toLowerCase() + d2TypeName.slice(1);
86
+ const d1FieldNameOrig = d1origTypeName.charAt(0).toLowerCase() + d1origTypeName.slice(1);
87
+ const d2FieldNameOrig = d2origTypeName.charAt(0).toLowerCase() + d2origTypeName.slice(1);
88
+ const d1PartitionKey = (0, schema_1.getPartitionKeyFieldNoContext)(manyToManyOne.model);
89
+ const d1SortKeys = (0, schema_1.getSortKeyFieldsNoContext)(manyToManyOne.model);
90
+ const d2PartitionKey = (0, schema_1.getPartitionKeyFieldNoContext)(manyToManyTwo.model);
91
+ const d2SortKeys = (0, schema_1.getSortKeyFieldsNoContext)(manyToManyTwo.model);
92
+ const d1IndexName = `by${d1origTypeName}`;
93
+ const d2IndexName = `by${d2origTypeName}`;
94
+ const d1FieldNameId = (0, utils_1.getManyToManyConnectionAttributeName)(context.transformParameters, d1FieldName, (0, utils_1.getObjectPrimaryKey)(manyToManyOne.model).name.value);
95
+ const d1SortFieldNames = d1SortKeys.map((node) => `${d1FieldNameOrig}${node.name.value}`);
96
+ const d2FieldNameId = (0, utils_1.getManyToManyConnectionAttributeName)(context.transformParameters, d2FieldName, (0, utils_1.getObjectPrimaryKey)(manyToManyTwo.model).name.value);
97
+ const d2SortFieldNames = d2SortKeys.map((node) => `${d2FieldNameOrig}${node.name.value}`);
98
+ const joinModelDirective = (0, graphql_transformer_common_1.makeDirective)('model', []);
99
+ const d1IndexDirective = (0, graphql_transformer_common_1.makeDirective)('index', [
100
+ (0, graphql_transformer_common_1.makeArgument)('name', (0, graphql_transformer_common_1.makeValueNode)(d1IndexName)),
101
+ (0, graphql_transformer_common_1.makeArgument)('sortKeyFields', (0, graphql_transformer_common_1.makeValueNode)([...d1SortFieldNames])),
102
+ ]);
103
+ const d2IndexDirective = (0, graphql_transformer_common_1.makeDirective)('index', [
104
+ (0, graphql_transformer_common_1.makeArgument)('name', (0, graphql_transformer_common_1.makeValueNode)(d2IndexName)),
105
+ (0, graphql_transformer_common_1.makeArgument)('sortKeyFields', (0, graphql_transformer_common_1.makeValueNode)([...d2SortFieldNames])),
106
+ ]);
107
+ const d1HasOneDirective = (0, graphql_transformer_common_1.makeDirective)('hasOne', [(0, graphql_transformer_common_1.makeArgument)('fields', (0, graphql_transformer_common_1.makeValueNode)([d1FieldNameId, ...d1SortFieldNames]))]);
108
+ const d2HasOneDirective = (0, graphql_transformer_common_1.makeDirective)('hasOne', [(0, graphql_transformer_common_1.makeArgument)('fields', (0, graphql_transformer_common_1.makeValueNode)([d2FieldNameId, ...d2SortFieldNames]))]);
109
+ const d1RelatedField = (0, graphql_transformer_common_1.makeField)(d1FieldNameId, [], (0, graphql_transformer_common_1.wrapNonNull)((0, graphql_transformer_common_1.makeNamedType)((0, graphql_transformer_common_1.getBaseType)(d1PartitionKey.type))), [
110
+ d1IndexDirective,
111
+ ]);
112
+ const d1RelatedSortKeyFields = d1SortKeys.map((node) => (0, graphql_transformer_common_1.makeField)(`${d1FieldName}${node.name.value}`, [], (0, graphql_transformer_common_1.wrapNonNull)((0, graphql_transformer_common_1.makeNamedType)((0, graphql_transformer_common_1.getBaseType)(node.type)))));
113
+ const d2RelatedField = (0, graphql_transformer_common_1.makeField)(d2FieldNameId, [], (0, graphql_transformer_common_1.wrapNonNull)((0, graphql_transformer_common_1.makeNamedType)((0, graphql_transformer_common_1.getBaseType)(d2PartitionKey.type))), [
114
+ d2IndexDirective,
115
+ ]);
116
+ const d2RelatedSortKeyFields = d2SortKeys.map((node) => (0, graphql_transformer_common_1.makeField)(`${d2FieldName}${node.name.value}`, [], (0, graphql_transformer_common_1.wrapNonNull)((0, graphql_transformer_common_1.makeNamedType)((0, graphql_transformer_common_1.getBaseType)(node.type)))));
117
+ const d1Field = (0, graphql_transformer_common_1.makeField)(d1FieldName, [], (0, graphql_transformer_common_1.wrapNonNull)((0, graphql_transformer_common_1.makeNamedType)(d1TypeName)), [d1HasOneDirective]);
118
+ const d2Field = (0, graphql_transformer_common_1.makeField)(d2FieldName, [], (0, graphql_transformer_common_1.wrapNonNull)((0, graphql_transformer_common_1.makeNamedType)(d2TypeName)), [d2HasOneDirective]);
119
+ const joinTableDirectives = [joinModelDirective];
120
+ const joinTableAuthDirective = createJoinTableAuthDirective(manyToManyOne.model, manyToManyTwo.model);
121
+ if (joinTableAuthDirective) {
122
+ joinTableDirectives.push(joinTableAuthDirective);
123
+ }
124
+ const joinType = {
125
+ ...(0, graphql_transformer_common_1.blankObject)(manyToManyOne.relationName),
126
+ fields: [
127
+ (0, graphql_transformer_common_1.makeField)('id', [], (0, graphql_transformer_common_1.wrapNonNull)((0, graphql_transformer_common_1.makeNamedType)('ID'))),
128
+ d1RelatedField,
129
+ ...d1RelatedSortKeyFields,
130
+ d2RelatedField,
131
+ ...d2RelatedSortKeyFields,
132
+ d1Field,
133
+ d2Field,
134
+ ],
135
+ directives: joinTableDirectives,
136
+ };
137
+ const d1SortKeyNames = d1SortKeys.map((field) => field.name.value);
138
+ const d2SortKeyNames = d2SortKeys.map((field) => field.name.value);
139
+ const hasManyOne = (0, graphql_transformer_common_1.makeDirective)('hasMany', [
140
+ (0, graphql_transformer_common_1.makeArgument)('indexName', (0, graphql_transformer_common_1.makeValueNode)(d1IndexName)),
141
+ (0, graphql_transformer_common_1.makeArgument)('fields', (0, graphql_transformer_common_1.makeValueNode)([d1PartitionKey.name.value, ...d1SortKeyNames])),
142
+ ]);
143
+ const hasManyTwo = (0, graphql_transformer_common_1.makeDirective)('hasMany', [
144
+ (0, graphql_transformer_common_1.makeArgument)('indexName', (0, graphql_transformer_common_1.makeValueNode)(d2IndexName)),
145
+ (0, graphql_transformer_common_1.makeArgument)('fields', (0, graphql_transformer_common_1.makeValueNode)([d2PartitionKey.name.value, ...d2SortKeyNames])),
146
+ ]);
147
+ (_b = (_a = manyToManyOne === null || manyToManyOne === void 0 ? void 0 : manyToManyOne.field) === null || _a === void 0 ? void 0 : _a.directives) === null || _b === void 0 ? void 0 : _b.push(hasManyOne);
148
+ (_d = (_c = manyToManyTwo === null || manyToManyTwo === void 0 ? void 0 : manyToManyTwo.field) === null || _c === void 0 ? void 0 : _c.directives) === null || _d === void 0 ? void 0 : _d.push(hasManyTwo);
149
+ let baseTypeD1 = manyToManyOne.field.type;
150
+ let baseTypeD2 = manyToManyOne.field.type;
151
+ while (baseTypeD1.kind !== 'NamedType') {
152
+ baseTypeD1 = baseTypeD1.type;
153
+ }
154
+ while (baseTypeD2.kind !== 'NamedType') {
155
+ baseTypeD2 = baseTypeD2.type;
156
+ }
157
+ baseTypeD1.name.value = manyToManyOne.relationName;
158
+ baseTypeD2.name.value = manyToManyTwo.relationName;
159
+ draftDoc.definitions.push(joinType);
160
+ });
161
+ });
162
+ return newDocument;
163
+ };
164
+ this.validate = (ctx) => {
165
+ this.relationMap.forEach((relation) => {
166
+ const { directive1, directive2, name } = relation;
167
+ if (!directive2) {
168
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`@${graphql_directives_1.ManyToManyDirective.name} relation '${name}' must be used in exactly two locations.`);
169
+ }
170
+ const d1ExpectedType = (0, graphql_transformer_common_1.getBaseType)(directive1.field.type);
171
+ const d2ExpectedType = (0, graphql_transformer_common_1.getBaseType)(directive2.field.type);
172
+ if ((0, graphql_transformer_core_1.isSqlModel)(ctx, d1ExpectedType) || (0, graphql_transformer_core_1.isSqlModel)(ctx, d2ExpectedType)) {
173
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`@${graphql_directives_1.ManyToManyDirective.name} directive cannot be used on a SQL model.`);
174
+ }
175
+ const d1Strategy = (0, graphql_transformer_core_1.getModelDataSourceStrategy)(ctx, d1ExpectedType);
176
+ const d2Strategy = (0, graphql_transformer_core_1.getModelDataSourceStrategy)(ctx, d2ExpectedType);
177
+ if (((0, graphql_transformer_core_1.isDefaultDynamoDbModelDataSourceStrategy)(d1Strategy) && !(0, graphql_transformer_core_1.isDefaultDynamoDbModelDataSourceStrategy)(d2Strategy)) ||
178
+ ((0, graphql_transformer_core_1.isAmplifyDynamoDbModelDataSourceStrategy)(d1Strategy) && !(0, graphql_transformer_core_1.isAmplifyDynamoDbModelDataSourceStrategy)(d2Strategy))) {
179
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`@${graphql_directives_1.ManyToManyDirective.name} directive cannot be used to relate models with a different DynamoDB-based strategies.`);
180
+ }
181
+ if (d1ExpectedType !== directive2.object.name.value) {
182
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`@${graphql_directives_1.ManyToManyDirective.name} relation '${name}' expects '${d1ExpectedType}' but got '${directive2.object.name.value}'.`);
183
+ }
184
+ if (d2ExpectedType !== directive1.object.name.value) {
185
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`@${graphql_directives_1.ManyToManyDirective.name} relation '${name}' expects '${d2ExpectedType}' but got '${directive1.object.name.value}'.`);
186
+ }
187
+ if (ctx.output.hasType(name)) {
188
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`@${graphql_directives_1.ManyToManyDirective.name} relation name '${name}' (derived from '${directive1.relationName}') already exists as a type in the schema.`);
189
+ }
190
+ });
191
+ };
192
+ this.prepare = (ctx) => {
193
+ const context = ctx;
194
+ if (!ctx.metadata.has('joinTypeList')) {
195
+ ctx.metadata.set('joinTypeList', []);
196
+ }
197
+ this.relationMap.forEach((relation) => {
198
+ const { directive1, directive2, name } = relation;
199
+ ctx.metadata.get('joinTypeList').push(name);
200
+ const d1origTypeName = ctx.resourceHelper.getModelNameMapping(directive1.object.name.value);
201
+ const d2origTypeName = ctx.resourceHelper.getModelNameMapping(directive2.object.name.value);
202
+ const d1TypeName = directive1.object.name.value;
203
+ const d2TypeName = directive2.object.name.value;
204
+ const d1FieldName = d1TypeName.charAt(0).toLowerCase() + d1TypeName.slice(1);
205
+ const d2FieldName = d2TypeName.charAt(0).toLowerCase() + d2TypeName.slice(1);
206
+ const d1FieldNameOrig = d1origTypeName.charAt(0).toLowerCase() + d1origTypeName.slice(1);
207
+ const d2FieldNameOrig = d2origTypeName.charAt(0).toLowerCase() + d2origTypeName.slice(1);
208
+ const d1PartitionKey = (0, schema_1.getPartitionKeyField)(context, directive1.object);
209
+ const d1SortKeys = (0, schema_1.getSortKeyFields)(context, directive1.object);
210
+ const d2PartitionKey = (0, schema_1.getPartitionKeyField)(context, directive2.object);
211
+ const d2SortKeys = (0, schema_1.getSortKeyFields)(context, directive2.object);
212
+ const d1IndexName = `by${d1origTypeName}`;
213
+ const d2IndexName = `by${d2origTypeName}`;
214
+ const d1FieldNameId = (0, utils_1.getManyToManyConnectionAttributeName)(ctx.transformParameters, d1FieldName, (0, utils_1.getObjectPrimaryKey)(directive1.object).name.value);
215
+ const d1SortFieldNames = d1SortKeys.map((node) => `${d1FieldNameOrig}${node.name.value}`);
216
+ const d2FieldNameId = (0, utils_1.getManyToManyConnectionAttributeName)(ctx.transformParameters, d2FieldName, (0, utils_1.getObjectPrimaryKey)(directive2.object).name.value);
217
+ const d1FieldNameIdOrig = (0, utils_1.getManyToManyConnectionAttributeName)(ctx.transformParameters, d1FieldNameOrig, (0, utils_1.getObjectPrimaryKey)(directive1.object).name.value);
218
+ const d2FieldNameIdOrig = (0, utils_1.getManyToManyConnectionAttributeName)(ctx.transformParameters, d2FieldNameOrig, (0, utils_1.getObjectPrimaryKey)(directive2.object).name.value);
219
+ const d2SortFieldNames = d2SortKeys.map((node) => `${d2FieldNameOrig}${node.name.value}`);
220
+ const joinModelDirective = (0, graphql_transformer_common_1.makeDirective)('model', []);
221
+ const d1IndexDirective = (0, graphql_transformer_common_1.makeDirective)('index', [
222
+ (0, graphql_transformer_common_1.makeArgument)('name', (0, graphql_transformer_common_1.makeValueNode)(d1IndexName)),
223
+ (0, graphql_transformer_common_1.makeArgument)('sortKeyFields', (0, graphql_transformer_common_1.makeValueNode)([...d1SortFieldNames])),
224
+ ]);
225
+ const d2IndexDirective = (0, graphql_transformer_common_1.makeDirective)('index', [
226
+ (0, graphql_transformer_common_1.makeArgument)('name', (0, graphql_transformer_common_1.makeValueNode)(d2IndexName)),
227
+ (0, graphql_transformer_common_1.makeArgument)('sortKeyFields', (0, graphql_transformer_common_1.makeValueNode)([...d2SortFieldNames])),
228
+ ]);
229
+ const d1HasOneDirective = (0, graphql_transformer_common_1.makeDirective)('hasOne', [(0, graphql_transformer_common_1.makeArgument)('fields', (0, graphql_transformer_common_1.makeValueNode)([d1FieldNameId, ...d1SortFieldNames]))]);
230
+ const d2HasOneDirective = (0, graphql_transformer_common_1.makeDirective)('hasOne', [(0, graphql_transformer_common_1.makeArgument)('fields', (0, graphql_transformer_common_1.makeValueNode)([d2FieldNameId, ...d2SortFieldNames]))]);
231
+ const d1RelatedField = (0, graphql_transformer_common_1.makeField)(d1FieldNameId, [], (0, graphql_transformer_common_1.wrapNonNull)((0, graphql_transformer_common_1.makeNamedType)((0, graphql_transformer_common_1.getBaseType)(d1PartitionKey.type))), [d1IndexDirective]);
232
+ const d1RelatedSortKeyFields = d1SortKeys.map((node) => (0, graphql_transformer_common_1.makeField)(`${d1FieldName}${node.name.value}`, [], (0, graphql_transformer_common_1.wrapNonNull)((0, graphql_transformer_common_1.makeNamedType)((0, graphql_transformer_common_1.getBaseType)(node.type)))));
233
+ const d2RelatedField = (0, graphql_transformer_common_1.makeField)(d2FieldNameId, [], (0, graphql_transformer_common_1.wrapNonNull)((0, graphql_transformer_common_1.makeNamedType)((0, graphql_transformer_common_1.getBaseType)(d2PartitionKey.type))), [d2IndexDirective]);
234
+ const d2RelatedSortKeyFields = d2SortKeys.map((node) => (0, graphql_transformer_common_1.makeField)(`${d2FieldName}${node.name.value}`, [], (0, graphql_transformer_common_1.wrapNonNull)((0, graphql_transformer_common_1.makeNamedType)((0, graphql_transformer_common_1.getBaseType)(node.type)))));
235
+ const d1Field = (0, graphql_transformer_common_1.makeField)(d1FieldName, [], (0, graphql_transformer_common_1.wrapNonNull)((0, graphql_transformer_common_1.makeNamedType)(d1TypeName)), [d1HasOneDirective]);
236
+ const d2Field = (0, graphql_transformer_common_1.makeField)(d2FieldName, [], (0, graphql_transformer_common_1.wrapNonNull)((0, graphql_transformer_common_1.makeNamedType)(d2TypeName)), [d2HasOneDirective]);
237
+ const joinTableDirectives = [joinModelDirective];
238
+ const joinTableAuthDirective = createJoinTableAuthDirective(directive1.object, directive2.object);
239
+ if (joinTableAuthDirective) {
240
+ joinTableDirectives.push(joinTableAuthDirective);
241
+ }
242
+ const joinType = {
243
+ ...(0, graphql_transformer_common_1.blankObject)(name),
244
+ fields: [
245
+ (0, graphql_transformer_common_1.makeField)('id', [], (0, graphql_transformer_common_1.wrapNonNull)((0, graphql_transformer_common_1.makeNamedType)('ID'))),
246
+ d1RelatedField,
247
+ ...d1RelatedSortKeyFields,
248
+ d2RelatedField,
249
+ ...d2RelatedSortKeyFields,
250
+ d1Field,
251
+ d2Field,
252
+ ],
253
+ directives: joinTableDirectives,
254
+ };
255
+ ctx.output.addObject(joinType);
256
+ directive1.indexName = d1IndexName;
257
+ directive2.indexName = d2IndexName;
258
+ directive1.fields = [d1PartitionKey.name.value, ...d1SortKeys.map((node) => `${node.name.value}`)];
259
+ directive2.fields = [d2PartitionKey.name.value, ...d2SortKeys.map((node) => `${node.name.value}`)];
260
+ directive1.fieldNodes = [d1PartitionKey, ...d1SortKeys];
261
+ directive2.fieldNodes = [d2PartitionKey, ...d2SortKeys];
262
+ directive1.relatedType = joinType;
263
+ directive2.relatedType = joinType;
264
+ directive1.relatedTypeIndex = [d1RelatedField];
265
+ directive2.relatedTypeIndex = [d2RelatedField];
266
+ this.modelTransformer.object(joinType, joinModelDirective, context);
267
+ this.hasOneTransformer.field(joinType, d1Field, d1HasOneDirective, context);
268
+ this.hasOneTransformer.field(joinType, d2Field, d2HasOneDirective, context);
269
+ if (joinTableAuthDirective) {
270
+ this.authProvider.object(joinType, joinTableAuthDirective, context);
271
+ }
272
+ const d1IndexDirectiveOrig = (0, graphql_transformer_common_1.makeDirective)('index', [
273
+ (0, graphql_transformer_common_1.makeArgument)('name', (0, graphql_transformer_common_1.makeValueNode)(d1IndexName)),
274
+ (0, graphql_transformer_common_1.makeArgument)('sortKeyFields', (0, graphql_transformer_common_1.makeValueNode)([...d1SortFieldNames])),
275
+ ]);
276
+ const d2IndexDirectiveOrig = (0, graphql_transformer_common_1.makeDirective)('index', [
277
+ (0, graphql_transformer_common_1.makeArgument)('name', (0, graphql_transformer_common_1.makeValueNode)(d2IndexName)),
278
+ (0, graphql_transformer_common_1.makeArgument)('sortKeyFields', (0, graphql_transformer_common_1.makeValueNode)([...d2SortFieldNames])),
279
+ ]);
280
+ const d1RelatedFieldOrig = (0, graphql_transformer_common_1.makeField)(d1FieldNameIdOrig, [], (0, graphql_transformer_common_1.wrapNonNull)((0, graphql_transformer_common_1.makeNamedType)((0, graphql_transformer_common_1.getBaseType)(d1PartitionKey.type))), [
281
+ d1IndexDirectiveOrig,
282
+ ]);
283
+ const d2RelatedFieldOrig = (0, graphql_transformer_common_1.makeField)(d2FieldNameIdOrig, [], (0, graphql_transformer_common_1.wrapNonNull)((0, graphql_transformer_common_1.makeNamedType)((0, graphql_transformer_common_1.getBaseType)(d2PartitionKey.type))), [
284
+ d2IndexDirectiveOrig,
285
+ ]);
286
+ const joinTypeOrig = {
287
+ ...(0, graphql_transformer_common_1.blankObject)(name),
288
+ fields: [
289
+ (0, graphql_transformer_common_1.makeField)('id', [], (0, graphql_transformer_common_1.wrapNonNull)((0, graphql_transformer_common_1.makeNamedType)('ID'))),
290
+ d1RelatedFieldOrig,
291
+ ...d1RelatedSortKeyFields,
292
+ d2RelatedFieldOrig,
293
+ ...d2RelatedSortKeyFields,
294
+ d1Field,
295
+ d2Field,
296
+ ],
297
+ directives: joinTableDirectives,
298
+ };
299
+ this.indexTransformer.field(joinTypeOrig, d1RelatedFieldOrig, d1IndexDirectiveOrig, context);
300
+ this.indexTransformer.field(joinTypeOrig, d2RelatedFieldOrig, d2IndexDirectiveOrig, context);
301
+ const renamedFields = [];
302
+ if (ctx.resourceHelper.isModelRenamed(directive1.object.name.value)) {
303
+ renamedFields.push({ originalFieldName: d1FieldNameIdOrig, currentFieldName: d1FieldNameId });
304
+ }
305
+ if (ctx.resourceHelper.isModelRenamed(directive2.object.name.value)) {
306
+ renamedFields.push({ originalFieldName: d2FieldNameIdOrig, currentFieldName: d2FieldNameId });
307
+ }
308
+ if (renamedFields.length && !(0, graphql_transformer_core_1.isSqlModel)(context, name)) {
309
+ (0, utils_1.registerManyToManyForeignKeyMappings)({
310
+ resourceHelper: ctx.resourceHelper,
311
+ typeName: name,
312
+ referencedBy: [
313
+ { typeName: directive1.object.name.value, fieldName: directive1.field.name.value, isList: true },
314
+ { typeName: directive2.object.name.value, fieldName: directive2.field.name.value, isList: true },
315
+ ],
316
+ fieldMap: renamedFields,
317
+ });
318
+ }
319
+ context.providerRegistry.registerDataSourceProvider(joinType, this.modelTransformer);
320
+ });
321
+ };
322
+ this.transformSchema = (ctx) => {
323
+ const context = ctx;
324
+ for (const config of this.directiveList) {
325
+ (0, schema_1.ensureHasManyConnectionField)(config, context);
326
+ (0, schema_1.extendTypeWithConnection)(config, context);
327
+ }
328
+ };
329
+ this.generateResolvers = (ctx) => {
330
+ if (this.directiveList.length === 0) {
331
+ return;
332
+ }
333
+ const context = ctx;
334
+ if (!context.transformParameters.allowGen1Patterns) {
335
+ aws_cdk_lib_1.Annotations.of(context.api).addWarning(`@${graphql_directives_1.ManyToManyDirective.name} is deprecated. This functionality will be removed in the next major release.`);
336
+ }
337
+ for (const config of this.directiveList) {
338
+ (0, resolvers_1.updateTableForConnection)(config, context);
339
+ new ddb_generator_1.DDBRelationalResolverGenerator().makeHasManyGetItemsConnectionWithKeyResolver(config, context);
340
+ }
341
+ };
342
+ this.modelTransformer = modelTransformer;
343
+ this.indexTransformer = indexTransformer;
344
+ this.hasOneTransformer = hasOneTransformer;
345
+ this.authProvider = authProvider;
346
+ }
347
+ }
348
+ exports.ManyToManyTransformer = ManyToManyTransformer;
349
+ const addJoinTableToDatasourceStrategies = (ctx, manyToManyRelation) => {
350
+ const { name: relationName, directive1: { object: { name: { value: typeName }, }, }, } = manyToManyRelation;
351
+ const parentStrategy = (0, graphql_transformer_core_1.getModelDataSourceStrategy)(ctx, typeName);
352
+ ctx.dataSourceStrategies[relationName] = parentStrategy;
353
+ };
354
+ function addDirectiveToRelationMap(map, directive) {
355
+ const { relationName } = directive;
356
+ const gqlName = getGraphqlRelationName(relationName);
357
+ let relation;
358
+ relation = map.get(gqlName);
359
+ if (relation === undefined) {
360
+ relation = { name: gqlName, directive1: directive };
361
+ map.set(gqlName, relation);
362
+ return;
363
+ }
364
+ if (relation.directive2) {
365
+ throw new graphql_transformer_core_1.InvalidDirectiveError(`@${graphql_directives_1.ManyToManyDirective.name} relation '${relationName}' must be used in exactly two locations.`);
366
+ }
367
+ relation.directive2 = directive;
368
+ }
369
+ function getGraphqlRelationName(name) {
370
+ return (0, graphql_transformer_common_1.graphqlName)((0, graphql_transformer_common_1.toUpper)(name));
371
+ }
372
+ function createJoinTableAuthDirective(table1, table2) {
373
+ var _a, _b, _c, _d, _e, _f, _g, _h;
374
+ const t1Auth = table1.directives.find((directive) => directive.name.value === 'auth');
375
+ const t2Auth = table2.directives.find((directive) => directive.name.value === 'auth');
376
+ const t1Rules = (_d = (_c = (_b = ((_a = t1Auth === null || t1Auth === void 0 ? void 0 : t1Auth.arguments) !== null && _a !== void 0 ? _a : []).find((arg) => arg.name.value === 'rules')) === null || _b === void 0 ? void 0 : _b.value) === null || _c === void 0 ? void 0 : _c.values) !== null && _d !== void 0 ? _d : [];
377
+ const t2Rules = (_h = (_g = (_f = ((_e = t2Auth === null || t2Auth === void 0 ? void 0 : t2Auth.arguments) !== null && _e !== void 0 ? _e : []).find((arg) => arg.name.value === 'rules')) === null || _f === void 0 ? void 0 : _f.value) === null || _g === void 0 ? void 0 : _g.values) !== null && _h !== void 0 ? _h : [];
378
+ const rules = [...t1Rules, ...t2Rules];
379
+ if (rules.length === 0) {
380
+ return;
381
+ }
382
+ return (0, graphql_transformer_common_1.makeDirective)('auth', [(0, graphql_transformer_common_1.makeArgument)('rules', { kind: graphql_1.Kind.LIST, values: rules })]);
383
+ }
384
+ //# sourceMappingURL=graphql-many-to-many-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-many-to-many-transformer.js","sourceRoot":"","sources":["../src/graphql-many-to-many-transformer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { TransformerContextProvider, TransformerPrepareStepContextProvider, TransformerTransformSchemaStepContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
2
+ import { DataSourceBasedDirectiveTransformer } from '../data-source-based-directive-transformer';
3
+ import { HasManyDirectiveConfiguration } from '../types';
4
+ export declare class HasManyDirectiveDDBFieldsTransformer implements DataSourceBasedDirectiveTransformer<HasManyDirectiveConfiguration> {
5
+ dbType: import("@aws-amplify/graphql-transformer-interfaces").ModelDataSourceStrategyDbType;
6
+ prepare: (context: TransformerPrepareStepContextProvider, config: HasManyDirectiveConfiguration) => void;
7
+ transformSchema: (context: TransformerTransformSchemaStepContextProvider, config: HasManyDirectiveConfiguration) => void;
8
+ generateResolvers: (context: TransformerContextProvider, config: HasManyDirectiveConfiguration) => void;
9
+ validate: (context: TransformerContextProvider, config: HasManyDirectiveConfiguration) => void;
10
+ }
11
+ //# sourceMappingURL=has-many-directive-ddb-fields-transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"has-many-directive-ddb-fields-transformer.d.ts","sourceRoot":"","sources":["../../src/has-many/has-many-directive-ddb-fields-transformer.ts"],"names":[],"mappings":"AACA,OAAO,EACL,0BAA0B,EAC1B,qCAAqC,EACrC,6CAA6C,EAC9C,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,mCAAmC,EAAE,MAAM,4CAA4C,CAAC;AAGjG,OAAO,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAC;AASzD,qBAAa,oCAAqC,YAAW,mCAAmC,CAAC,6BAA6B,CAAC;IAC7H,MAAM,sFAAe;IAErB,OAAO,YAAa,qCAAqC,UAAU,6BAA6B,KAAG,IAAI,CASrG;IAEF,eAAe,YAAa,6CAA6C,UAAU,6BAA6B,KAAG,IAAI,CAErH;IAEF,iBAAiB,YAAa,0BAA0B,UAAU,6BAA6B,KAAG,IAAI,CAIpG;IAEF,QAAQ,YAAa,0BAA0B,UAAU,6BAA6B,KAAG,IAAI,CAG3F;CACH"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HasManyDirectiveDDBFieldsTransformer = void 0;
4
+ const graphql_transformer_core_1 = require("@aws-amplify/graphql-transformer-core");
5
+ const generator_factory_1 = require("../resolver/generator-factory");
6
+ const resolvers_1 = require("../resolvers");
7
+ const utils_1 = require("../utils");
8
+ class HasManyDirectiveDDBFieldsTransformer {
9
+ constructor() {
10
+ this.dbType = graphql_transformer_core_1.DDB_DB_TYPE;
11
+ this.prepare = (context, config) => {
12
+ const modelName = config.object.name.value;
13
+ (0, utils_1.registerHasManyForeignKeyMappings)({
14
+ transformParameters: context.transformParameters,
15
+ resourceHelper: context.resourceHelper,
16
+ thisTypeName: modelName,
17
+ thisFieldName: config.field.name.value,
18
+ relatedType: config.relatedType,
19
+ });
20
+ };
21
+ this.transformSchema = (context, config) => {
22
+ config.relatedTypeIndex = (0, utils_1.getRelatedTypeIndex)(config, context, config.indexName);
23
+ };
24
+ this.generateResolvers = (context, config) => {
25
+ (0, resolvers_1.updateTableForConnection)(config, context);
26
+ const generator = (0, generator_factory_1.getGenerator)(this.dbType);
27
+ generator.makeHasManyGetItemsConnectionWithKeyResolver(config, context);
28
+ };
29
+ this.validate = (context, config) => {
30
+ (0, utils_1.ensureFieldsArray)(config);
31
+ config.fieldNodes = (0, utils_1.getFieldsNodes)(config, context);
32
+ };
33
+ }
34
+ }
35
+ exports.HasManyDirectiveDDBFieldsTransformer = HasManyDirectiveDDBFieldsTransformer;
36
+ //# sourceMappingURL=has-many-directive-ddb-fields-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"has-many-directive-ddb-fields-transformer.js","sourceRoot":"","sources":["../../src/has-many/has-many-directive-ddb-fields-transformer.ts"],"names":[],"mappings":";;;AAAA,oFAAoE;AAOpE,qEAA6D;AAC7D,4CAAwD;AAExD,oCAAqH;AAQrH,MAAa,oCAAoC;IAAjD;QACE,WAAM,GAAG,sCAAW,CAAC;QAErB,YAAO,GAAG,CAAC,OAA8C,EAAE,MAAqC,EAAQ,EAAE;YACxG,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3C,IAAA,yCAAiC,EAAC;gBAChC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;gBAChD,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,YAAY,EAAE,SAAS;gBACvB,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK;gBACtC,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,oBAAe,GAAG,CAAC,OAAsD,EAAE,MAAqC,EAAQ,EAAE;YACxH,MAAM,CAAC,gBAAgB,GAAG,IAAA,2BAAmB,EAAC,MAAM,EAAE,OAAqC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACjH,CAAC,CAAC;QAEF,sBAAiB,GAAG,CAAC,OAAmC,EAAE,MAAqC,EAAQ,EAAE;YACvG,IAAA,oCAAwB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC1C,MAAM,SAAS,GAAG,IAAA,gCAAY,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5C,SAAS,CAAC,4CAA4C,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1E,CAAC,CAAC;QAEF,aAAQ,GAAG,CAAC,OAAmC,EAAE,MAAqC,EAAQ,EAAE;YAC9F,IAAA,yBAAiB,EAAC,MAAM,CAAC,CAAC;YAC1B,MAAM,CAAC,UAAU,GAAG,IAAA,sBAAc,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC,CAAC;IACJ,CAAC;CAAA;AA5BD,oFA4BC"}
@@ -0,0 +1,11 @@
1
+ import { TransformerContextProvider, TransformerPrepareStepContextProvider, TransformerTransformSchemaStepContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
2
+ import { DataSourceBasedDirectiveTransformer } from '../data-source-based-directive-transformer';
3
+ import { HasManyDirectiveConfiguration } from '../types';
4
+ export declare class HasManyDirectiveDDBReferencesTransformer implements DataSourceBasedDirectiveTransformer<HasManyDirectiveConfiguration> {
5
+ dbType: import("@aws-amplify/graphql-transformer-interfaces").ModelDataSourceStrategyDbType;
6
+ prepare: (context: TransformerPrepareStepContextProvider, config: HasManyDirectiveConfiguration) => void;
7
+ transformSchema: (context: TransformerTransformSchemaStepContextProvider, config: HasManyDirectiveConfiguration) => void;
8
+ generateResolvers: (context: TransformerContextProvider, config: HasManyDirectiveConfiguration) => void;
9
+ validate: (context: TransformerContextProvider, config: HasManyDirectiveConfiguration) => void;
10
+ }
11
+ //# sourceMappingURL=has-many-directive-ddb-references-transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"has-many-directive-ddb-references-transformer.d.ts","sourceRoot":"","sources":["../../src/has-many/has-many-directive-ddb-references-transformer.ts"],"names":[],"mappings":"AACA,OAAO,EACL,0BAA0B,EAC1B,qCAAqC,EACrC,6CAA6C,EAC9C,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,mCAAmC,EAAE,MAAM,4CAA4C,CAAC;AAOjG,OAAO,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAC;AAiBzD,qBAAa,wCAAyC,YAAW,mCAAmC,CAAC,6BAA6B,CAAC;IACjI,MAAM,sFAAe;IAErB,OAAO,YAAa,qCAAqC,UAAU,6BAA6B,KAAG,IAAI,CAUrG;IAEF,eAAe,YAAa,6CAA6C,UAAU,6BAA6B,KAAG,IAAI,CAAO;IAE9H,iBAAiB,YAAa,0BAA0B,UAAU,6BAA6B,KAAG,IAAI,CAIpG;IAUF,QAAQ,YAAa,0BAA0B,UAAU,6BAA6B,KAAG,IAAI,CAoB3F;CACH"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HasManyDirectiveDDBReferencesTransformer = void 0;
4
+ const graphql_transformer_core_1 = require("@aws-amplify/graphql-transformer-core");
5
+ const ddb_references_generator_1 = require("../resolver/ddb-references-generator");
6
+ const resolvers_1 = require("../resolvers");
7
+ const utils_1 = require("../utils");
8
+ class HasManyDirectiveDDBReferencesTransformer {
9
+ constructor() {
10
+ this.dbType = graphql_transformer_core_1.DDB_DB_TYPE;
11
+ this.prepare = (context, config) => {
12
+ var _a, _b;
13
+ const modelName = config.object.name.value;
14
+ (0, resolvers_1.setFieldMappingResolverReference)(context, (_b = (_a = config.relatedType) === null || _a === void 0 ? void 0 : _a.name) === null || _b === void 0 ? void 0 : _b.value, modelName, config.field.name.value, true);
15
+ (0, utils_1.registerHasManyForeignKeyMappings)({
16
+ transformParameters: context.transformParameters,
17
+ resourceHelper: context.resourceHelper,
18
+ thisTypeName: modelName,
19
+ thisFieldName: config.field.name.value,
20
+ relatedType: config.relatedType,
21
+ });
22
+ };
23
+ this.transformSchema = (context, config) => { };
24
+ this.generateResolvers = (context, config) => {
25
+ (0, resolvers_1.updateTableForReferencesConnection)(config, context);
26
+ (0, resolvers_1.updateRelatedModelMutationResolversForCompositeSortKeys)(config, context);
27
+ new ddb_references_generator_1.DDBRelationalReferencesResolverGenerator().makeHasManyGetItemsConnectionWithKeyResolver(config, context);
28
+ };
29
+ this.validate = (context, config) => {
30
+ if (config.indexName) {
31
+ const mappedObjectName = context.resourceHelper.getModelNameMapping(config.object.name.value);
32
+ throw new Error(`Invalid @hasMany directive on ${mappedObjectName}.${config.field.name.value} - indexName is not supported with DynamoDB references.`);
33
+ }
34
+ (0, utils_1.ensureReferencesArray)(config);
35
+ (0, utils_1.validateParentReferencesFields)(config, context);
36
+ (0, utils_1.validateReferencesRelationalFieldNullability)(config);
37
+ const objectName = config.object.name.value;
38
+ const fieldName = config.field.name.value;
39
+ config.referenceNodes = (0, utils_1.getReferencesNodes)(config, context);
40
+ (0, utils_1.validateReferencesBidirectionality)(config);
41
+ const overrideIndexName = (0, utils_1.getOverrideIndexName)(config);
42
+ if (overrideIndexName) {
43
+ config.indexName = overrideIndexName;
44
+ }
45
+ else {
46
+ config.indexName = `gsi-${objectName}.${fieldName}`;
47
+ }
48
+ };
49
+ }
50
+ }
51
+ exports.HasManyDirectiveDDBReferencesTransformer = HasManyDirectiveDDBReferencesTransformer;
52
+ //# sourceMappingURL=has-many-directive-ddb-references-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"has-many-directive-ddb-references-transformer.js","sourceRoot":"","sources":["../../src/has-many/has-many-directive-ddb-references-transformer.ts"],"names":[],"mappings":";;;AAAA,oFAAoE;AAOpE,mFAAgG;AAChG,4CAIsB;AAEtB,oCAQkB;AAQlB,MAAa,wCAAwC;IAArD;QACE,WAAM,GAAG,sCAAW,CAAC;QAErB,YAAO,GAAG,CAAC,OAA8C,EAAE,MAAqC,EAAQ,EAAE;;YACxG,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3C,IAAA,4CAAgC,EAAC,OAAO,EAAE,MAAA,MAAA,MAAM,CAAC,WAAW,0CAAE,IAAI,0CAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACrH,IAAA,yCAAiC,EAAC;gBAChC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;gBAChD,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,YAAY,EAAE,SAAS;gBACvB,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK;gBACtC,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,oBAAe,GAAG,CAAC,OAAsD,EAAE,MAAqC,EAAQ,EAAE,GAAE,CAAC,CAAC;QAE9H,sBAAiB,GAAG,CAAC,OAAmC,EAAE,MAAqC,EAAQ,EAAE;YACvG,IAAA,8CAAkC,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACpD,IAAA,mEAAuD,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACzE,IAAI,mEAAwC,EAAE,CAAC,4CAA4C,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/G,CAAC,CAAC;QAUF,aAAQ,GAAG,CAAC,OAAmC,EAAE,MAAqC,EAAQ,EAAE;YAC9F,IAAI,MAAM,CAAC,SAAS,EAAE;gBACpB,MAAM,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9F,MAAM,IAAI,KAAK,CACb,iCAAiC,gBAAgB,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,yDAAyD,CACtI,CAAC;aACH;YACD,IAAA,6BAAqB,EAAC,MAAM,CAAC,CAAC;YAC9B,IAAA,sCAA8B,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAChD,IAAA,oDAA4C,EAAC,MAAM,CAAC,CAAC;YACrD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1C,MAAM,CAAC,cAAc,GAAG,IAAA,0BAAkB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC5D,IAAA,0CAAkC,EAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,iBAAiB,GAAG,IAAA,4BAAoB,EAAC,MAAM,CAAC,CAAC;YACvD,IAAI,iBAAiB,EAAE;gBACrB,MAAM,CAAC,SAAS,GAAG,iBAAiB,CAAC;aACtC;iBAAM;gBACL,MAAM,CAAC,SAAS,GAAG,OAAO,UAAU,IAAI,SAAS,EAAE,CAAC;aACrD;QACH,CAAC,CAAC;IACJ,CAAC;CAAA;AApDD,4FAoDC"}
@@ -0,0 +1,11 @@
1
+ import { TransformerContextProvider, TransformerPrepareStepContextProvider, TransformerTransformSchemaStepContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
2
+ import { DataSourceBasedDirectiveTransformer } from '../data-source-based-directive-transformer';
3
+ import { HasManyDirectiveConfiguration } from '../types';
4
+ export declare class HasManyDirectiveSQLTransformer implements DataSourceBasedDirectiveTransformer<HasManyDirectiveConfiguration> {
5
+ dbType: import("@aws-amplify/graphql-transformer-interfaces").ModelDataSourceStrategySqlDbType;
6
+ prepare: (context: TransformerPrepareStepContextProvider, config: HasManyDirectiveConfiguration) => void;
7
+ transformSchema: (context: TransformerTransformSchemaStepContextProvider, config: HasManyDirectiveConfiguration) => void;
8
+ generateResolvers: (context: TransformerContextProvider, config: HasManyDirectiveConfiguration) => void;
9
+ validate: (context: TransformerContextProvider, config: HasManyDirectiveConfiguration) => void;
10
+ }
11
+ //# sourceMappingURL=has-many-directive-sql-transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"has-many-directive-sql-transformer.d.ts","sourceRoot":"","sources":["../../src/has-many/has-many-directive-sql-transformer.ts"],"names":[],"mappings":"AACA,OAAO,EACL,0BAA0B,EAC1B,qCAAqC,EACrC,6CAA6C,EAC9C,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,mCAAmC,EAAE,MAAM,4CAA4C,CAAC;AAGjG,OAAO,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAC;AAazD,qBAAa,8BAA+B,YAAW,mCAAmC,CAAC,6BAA6B,CAAC;IACvH,MAAM,yFAAqC;IAE3C,OAAO,YAAa,qCAAqC,UAAU,6BAA6B,KAAG,IAAI,CAGrG;IAEF,eAAe,YAAa,6CAA6C,UAAU,6BAA6B,KAAG,IAAI,CAErH;IAEF,iBAAiB,YAAa,0BAA0B,UAAU,6BAA6B,KAAG,IAAI,CAGpG;IAEF,QAAQ,YAAa,0BAA0B,UAAU,6BAA6B,KAAG,IAAI,CAK3F;CACH"}