@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.
- package/API.md +97 -0
- package/CHANGELOG.md +807 -0
- package/README.md +43 -0
- package/jest.config.js +12 -0
- package/lib/belongs-to/belongs-to-directive-ddb-fields-transformer.d.ts +11 -0
- package/lib/belongs-to/belongs-to-directive-ddb-fields-transformer.d.ts.map +1 -0
- package/lib/belongs-to/belongs-to-directive-ddb-fields-transformer.js +37 -0
- package/lib/belongs-to/belongs-to-directive-ddb-fields-transformer.js.map +1 -0
- package/lib/belongs-to/belongs-to-directive-ddb-references-transformer.d.ts +11 -0
- package/lib/belongs-to/belongs-to-directive-ddb-references-transformer.d.ts.map +1 -0
- package/lib/belongs-to/belongs-to-directive-ddb-references-transformer.js +37 -0
- package/lib/belongs-to/belongs-to-directive-ddb-references-transformer.js.map +1 -0
- package/lib/belongs-to/belongs-to-directive-sql-transformer.d.ts +11 -0
- package/lib/belongs-to/belongs-to-directive-sql-transformer.d.ts.map +1 -0
- package/lib/belongs-to/belongs-to-directive-sql-transformer.js +32 -0
- package/lib/belongs-to/belongs-to-directive-sql-transformer.js.map +1 -0
- package/lib/belongs-to/belongs-to-directive-transformer-factory.d.ts +5 -0
- package/lib/belongs-to/belongs-to-directive-transformer-factory.d.ts.map +1 -0
- package/lib/belongs-to/belongs-to-directive-transformer-factory.js +32 -0
- package/lib/belongs-to/belongs-to-directive-transformer-factory.js.map +1 -0
- package/lib/data-source-based-directive-transformer.d.ts +11 -0
- package/lib/data-source-based-directive-transformer.d.ts.map +1 -0
- package/lib/data-source-based-directive-transformer.js +3 -0
- package/lib/data-source-based-directive-transformer.js.map +1 -0
- package/lib/graphql-belongs-to-transformer.d.ts +13 -0
- package/lib/graphql-belongs-to-transformer.d.ts.map +1 -0
- package/lib/graphql-belongs-to-transformer.js +139 -0
- package/lib/graphql-belongs-to-transformer.js.map +1 -0
- package/lib/graphql-has-many-transformer.d.ts +13 -0
- package/lib/graphql-has-many-transformer.d.ts.map +1 -0
- package/lib/graphql-has-many-transformer.js +120 -0
- package/lib/graphql-has-many-transformer.js.map +1 -0
- package/lib/graphql-has-one-transformer.d.ts +13 -0
- package/lib/graphql-has-one-transformer.d.ts.map +1 -0
- package/lib/graphql-has-one-transformer.js +132 -0
- package/lib/graphql-has-one-transformer.js.map +1 -0
- package/lib/graphql-many-to-many-transformer.d.ts +22 -0
- package/lib/graphql-many-to-many-transformer.d.ts.map +1 -0
- package/lib/graphql-many-to-many-transformer.js +384 -0
- package/lib/graphql-many-to-many-transformer.js.map +1 -0
- package/lib/has-many/has-many-directive-ddb-fields-transformer.d.ts +11 -0
- package/lib/has-many/has-many-directive-ddb-fields-transformer.d.ts.map +1 -0
- package/lib/has-many/has-many-directive-ddb-fields-transformer.js +36 -0
- package/lib/has-many/has-many-directive-ddb-fields-transformer.js.map +1 -0
- package/lib/has-many/has-many-directive-ddb-references-transformer.d.ts +11 -0
- package/lib/has-many/has-many-directive-ddb-references-transformer.d.ts.map +1 -0
- package/lib/has-many/has-many-directive-ddb-references-transformer.js +52 -0
- package/lib/has-many/has-many-directive-ddb-references-transformer.js.map +1 -0
- package/lib/has-many/has-many-directive-sql-transformer.d.ts +11 -0
- package/lib/has-many/has-many-directive-sql-transformer.d.ts.map +1 -0
- package/lib/has-many/has-many-directive-sql-transformer.js +32 -0
- package/lib/has-many/has-many-directive-sql-transformer.js.map +1 -0
- package/lib/has-many/has-many-directive-transformer-factory.d.ts +5 -0
- package/lib/has-many/has-many-directive-transformer-factory.d.ts.map +1 -0
- package/lib/has-many/has-many-directive-transformer-factory.js +32 -0
- package/lib/has-many/has-many-directive-transformer-factory.js.map +1 -0
- package/lib/has-one/has-one-directive-ddb-fields-transformer.d.ts +11 -0
- package/lib/has-one/has-one-directive-ddb-fields-transformer.d.ts.map +1 -0
- package/lib/has-one/has-one-directive-ddb-fields-transformer.js +34 -0
- package/lib/has-one/has-one-directive-ddb-fields-transformer.js.map +1 -0
- package/lib/has-one/has-one-directive-ddb-references-transformer.d.ts +11 -0
- package/lib/has-one/has-one-directive-ddb-references-transformer.d.ts.map +1 -0
- package/lib/has-one/has-one-directive-ddb-references-transformer.js +52 -0
- package/lib/has-one/has-one-directive-ddb-references-transformer.js.map +1 -0
- package/lib/has-one/has-one-directive-sql-transformer.d.ts +11 -0
- package/lib/has-one/has-one-directive-sql-transformer.d.ts.map +1 -0
- package/lib/has-one/has-one-directive-sql-transformer.js +32 -0
- package/lib/has-one/has-one-directive-sql-transformer.js.map +1 -0
- package/lib/has-one/has-one-directive-transformer-factory.d.ts +5 -0
- package/lib/has-one/has-one-directive-transformer-factory.d.ts.map +1 -0
- package/lib/has-one/has-one-directive-transformer-factory.js +32 -0
- package/lib/has-one/has-one-directive-transformer-factory.js.map +1 -0
- package/lib/index.d.ts +6 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +16 -0
- package/lib/index.js.map +1 -0
- package/lib/resolver/ddb-generator.d.ts +14 -0
- package/lib/resolver/ddb-generator.d.ts.map +1 -0
- package/lib/resolver/ddb-generator.js +188 -0
- package/lib/resolver/ddb-generator.js.map +1 -0
- package/lib/resolver/ddb-references-generator.d.ts +11 -0
- package/lib/resolver/ddb-references-generator.d.ts.map +1 -0
- package/lib/resolver/ddb-references-generator.js +216 -0
- package/lib/resolver/ddb-references-generator.js.map +1 -0
- package/lib/resolver/generator-factory.d.ts +4 -0
- package/lib/resolver/generator-factory.d.ts.map +1 -0
- package/lib/resolver/generator-factory.js +18 -0
- package/lib/resolver/generator-factory.js.map +1 -0
- package/lib/resolver/generator.d.ts +8 -0
- package/lib/resolver/generator.d.ts.map +1 -0
- package/lib/resolver/generator.js +7 -0
- package/lib/resolver/generator.js.map +1 -0
- package/lib/resolver/rds-generator.d.ts +16 -0
- package/lib/resolver/rds-generator.d.ts.map +1 -0
- package/lib/resolver/rds-generator.js +148 -0
- package/lib/resolver/rds-generator.js.map +1 -0
- package/lib/resolvers.d.ts +8 -0
- package/lib/resolvers.d.ts.map +1 -0
- package/lib/resolvers.js +246 -0
- package/lib/resolvers.js.map +1 -0
- package/lib/schema.d.ts +15 -0
- package/lib/schema.d.ts.map +1 -0
- package/lib/schema.js +379 -0
- package/lib/schema.js.map +1 -0
- package/lib/types.d.ts +79 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +3 -0
- package/lib/types.js.map +1 -0
- package/lib/utils.d.ts +43 -0
- package/lib/utils.d.ts.map +1 -0
- package/lib/utils.js +465 -0
- package/lib/utils.js.map +1 -0
- package/package.json +49 -0
package/lib/utils.js
ADDED
|
@@ -0,0 +1,465 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getOverrideIndexName = exports.getObjectPrimaryKey = exports.registerManyToManyForeignKeyMappings = exports.registerHasManyForeignKeyMappings = exports.registerHasOneForeignKeyMappings = exports.validateDisallowedDataStoreRelationships = exports.getBackendConnectionAttributeName = exports.getSortKeyConnectionAttributeName = exports.getManyToManyConnectionAttributeName = exports.getConnectionAttributeName = exports.validateRelatedModelDirective = exports.getBelongsToReferencesNodes = exports.getReferencesNodes = exports.getFieldsNodes = exports.getRelatedType = exports.validateModelDirective = exports.getModelDirective = exports.validateReferencesBidirectionality = exports.validateReferencesRelationalFieldNullability = exports.ensureReferencesArray = exports.ensureFieldsArray = exports.getRelatedTypeIndex = exports.validateChildReferencesFields = exports.validateParentReferencesFields = void 0;
|
|
4
|
+
const graphql_transformer_core_1 = require("@aws-amplify/graphql-transformer-core");
|
|
5
|
+
const graphql_1 = require("graphql");
|
|
6
|
+
const graphql_transformer_common_1 = require("graphql-transformer-common");
|
|
7
|
+
const graphql_directives_1 = require("@aws-amplify/graphql-directives");
|
|
8
|
+
const validateParentReferencesFields = (config, ctx) => {
|
|
9
|
+
const { directiveName, object, references, relatedType } = config;
|
|
10
|
+
const enums = ctx.output.getTypeDefinitionsOfKind(graphql_1.Kind.ENUM_TYPE_DEFINITION);
|
|
11
|
+
const primaryKeys = (0, graphql_transformer_core_1.getPrimaryKeyFields)(object);
|
|
12
|
+
if (primaryKeys.length !== references.length) {
|
|
13
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`The number of references provided to @${directiveName} must match the number of primary keys on ${object.name.value}.`);
|
|
14
|
+
}
|
|
15
|
+
for (const reference of references) {
|
|
16
|
+
const fieldNode = relatedType.fields.find((field) => field.name.value === reference);
|
|
17
|
+
if (!fieldNode) {
|
|
18
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`${reference} is not a field in ${relatedType.name.value}`);
|
|
19
|
+
}
|
|
20
|
+
if (!(0, graphql_transformer_common_1.isScalarOrEnum)(fieldNode.type, enums)) {
|
|
21
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`All reference fields provided to @${directiveName} must be scalar or enum fields.`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
exports.validateParentReferencesFields = validateParentReferencesFields;
|
|
26
|
+
const validateChildReferencesFields = (config, ctx) => {
|
|
27
|
+
const { directiveName, object, references, relatedType } = config;
|
|
28
|
+
const enums = ctx.output.getTypeDefinitionsOfKind(graphql_1.Kind.ENUM_TYPE_DEFINITION);
|
|
29
|
+
const primaryKeys = (0, graphql_transformer_core_1.getPrimaryKeyFields)(relatedType);
|
|
30
|
+
if (primaryKeys.length !== references.length) {
|
|
31
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`The number of references provided to @${directiveName} must match the number of primary keys on ${relatedType.name.value}.`);
|
|
32
|
+
}
|
|
33
|
+
for (const reference of references) {
|
|
34
|
+
const fieldNode = object.fields.find((field) => field.name.value === reference);
|
|
35
|
+
if (!fieldNode) {
|
|
36
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`${reference} is not a field in ${object.name.value}`);
|
|
37
|
+
}
|
|
38
|
+
if (!(0, graphql_transformer_common_1.isScalarOrEnum)(fieldNode.type, enums)) {
|
|
39
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`All reference fields provided to @${directiveName} must be scalar or enum fields.`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
exports.validateChildReferencesFields = validateChildReferencesFields;
|
|
44
|
+
const getRelatedTypeIndex = (config, ctx, indexName) => {
|
|
45
|
+
const { directiveName, field, fieldNodes } = config;
|
|
46
|
+
const relatedType = ctx.output.getType(config.relatedType.name.value);
|
|
47
|
+
const fieldMap = new Map();
|
|
48
|
+
let partitionFieldName;
|
|
49
|
+
const sortFieldNames = [];
|
|
50
|
+
const sortFields = [];
|
|
51
|
+
for (const relatedTypeField of relatedType.fields) {
|
|
52
|
+
fieldMap.set(relatedTypeField.name.value, relatedTypeField);
|
|
53
|
+
for (const directive of relatedTypeField.directives) {
|
|
54
|
+
const relatedDirectiveName = directive.name.value;
|
|
55
|
+
const name = getIndexName(directive);
|
|
56
|
+
if ((!indexName && relatedDirectiveName === 'primaryKey') || (indexName && indexName === name && relatedDirectiveName === 'index')) {
|
|
57
|
+
partitionFieldName = relatedTypeField.name.value;
|
|
58
|
+
for (const argument of directive.arguments) {
|
|
59
|
+
if (argument.name.value === 'sortKeyFields') {
|
|
60
|
+
if (argument.value.kind === graphql_1.Kind.STRING) {
|
|
61
|
+
sortFieldNames.push(argument.value.value);
|
|
62
|
+
}
|
|
63
|
+
else if (argument.value.kind === graphql_1.Kind.LIST) {
|
|
64
|
+
for (const keyField of argument.value.values) {
|
|
65
|
+
sortFieldNames.push(keyField.value);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (partitionFieldName === undefined) {
|
|
75
|
+
if (indexName) {
|
|
76
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`Index ${indexName} does not exist for model ${relatedType.name.value}`);
|
|
77
|
+
}
|
|
78
|
+
partitionFieldName = 'id';
|
|
79
|
+
}
|
|
80
|
+
const partitionField = fieldMap.get(partitionFieldName);
|
|
81
|
+
if (!partitionField) {
|
|
82
|
+
throw new Error(`Expected partition field ${partitionFieldName} to be found in map.`);
|
|
83
|
+
}
|
|
84
|
+
for (const sortFieldName of sortFieldNames) {
|
|
85
|
+
const sortField = fieldMap.get(sortFieldName);
|
|
86
|
+
if (!sortField) {
|
|
87
|
+
throw new Error(`Expected sort field ${sortFieldName} to be found in map.`);
|
|
88
|
+
}
|
|
89
|
+
sortFields.push(sortField);
|
|
90
|
+
}
|
|
91
|
+
if (fieldNodes.length > 0) {
|
|
92
|
+
if ((0, graphql_transformer_common_1.getBaseType)(fieldNodes[0].type) !== (0, graphql_transformer_common_1.getBaseType)(partitionField.type)) {
|
|
93
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`${fieldNodes[0].name.value} field is not of type ${(0, graphql_transformer_common_1.getBaseType)(partitionField.type)}`);
|
|
94
|
+
}
|
|
95
|
+
if (fieldNodes.length > 1) {
|
|
96
|
+
if (sortFields.length !== fieldNodes.length - 1) {
|
|
97
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`Invalid @${directiveName} directive on ${field.name.value}. Partial sort keys are not accepted.`);
|
|
98
|
+
}
|
|
99
|
+
for (let i = 0; i < sortFields.length; i++) {
|
|
100
|
+
const sortField = sortFields[i];
|
|
101
|
+
const fieldNode = fieldNodes[i + 1];
|
|
102
|
+
if ((0, graphql_transformer_common_1.getBaseType)(fieldNode.type) !== (0, graphql_transformer_common_1.getBaseType)(sortField.type)) {
|
|
103
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`${fieldNode.name.value} field is not of type ${(0, graphql_transformer_common_1.getBaseType)(sortField.type)}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return [partitionField, ...sortFields];
|
|
109
|
+
};
|
|
110
|
+
exports.getRelatedTypeIndex = getRelatedTypeIndex;
|
|
111
|
+
const ensureFieldsArray = (config) => {
|
|
112
|
+
if (config.references) {
|
|
113
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`'references' defined on ${config.object.name.value}.${config.field.name.value} @${config.directive}. Expecting 'fields' only.`);
|
|
114
|
+
}
|
|
115
|
+
if (!config.fields) {
|
|
116
|
+
config.fields = [];
|
|
117
|
+
}
|
|
118
|
+
else if (!Array.isArray(config.fields)) {
|
|
119
|
+
config.fields = [config.fields];
|
|
120
|
+
}
|
|
121
|
+
else if (config.fields.length === 0) {
|
|
122
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`No fields passed to @${config.directiveName} directive.`);
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
exports.ensureFieldsArray = ensureFieldsArray;
|
|
126
|
+
const ensureReferencesArray = (config) => {
|
|
127
|
+
if (config.fields) {
|
|
128
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`'fields' defined on ${config.object.name.value}.${config.field.name.value} @${config.directive}. Expecting 'references' only.`);
|
|
129
|
+
}
|
|
130
|
+
if (!config.references) {
|
|
131
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`Reference fields must be passed to @${config.directiveName} directive for SQL models.`);
|
|
132
|
+
}
|
|
133
|
+
else if (!Array.isArray(config.references)) {
|
|
134
|
+
config.references = [config.references];
|
|
135
|
+
}
|
|
136
|
+
else if (config.references.length === 0) {
|
|
137
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`No reference fields passed to @${config.directiveName} directive.`);
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
exports.ensureReferencesArray = ensureReferencesArray;
|
|
141
|
+
const getReferencesAssociatedField = (config) => {
|
|
142
|
+
var _a;
|
|
143
|
+
const { object } = config;
|
|
144
|
+
const expectedBidirectionalErrorMessages = () => {
|
|
145
|
+
const associatedDirectiveTypes = getAssociatedRelationalDirectiveTypes(config.directiveName);
|
|
146
|
+
const primaryType = config.directiveName == graphql_directives_1.BelongsToDirective.name ? config.relatedType.name.value : config.object.name.value;
|
|
147
|
+
const associatedDirectiveDescription = associatedDirectiveTypes.map((directiveName) => `@${directiveName}`).join(' or ');
|
|
148
|
+
return (`Add a ${associatedDirectiveDescription} field in ${config.relatedType.name.value} to match the @${config.directiveName} ` +
|
|
149
|
+
`field ${config.object.name.value}.${config.field.name.value}, and ensure the number and type of reference fields match the ` +
|
|
150
|
+
`number and type of primary key fields in ${primaryType}.`);
|
|
151
|
+
};
|
|
152
|
+
const associatedConnection = (_a = config.relatedType.fields) === null || _a === void 0 ? void 0 : _a.flatMap((associatedField) => {
|
|
153
|
+
var _a, _b, _c;
|
|
154
|
+
if ((0, graphql_transformer_common_1.getBaseType)(associatedField.type) !== object.name.value) {
|
|
155
|
+
return [];
|
|
156
|
+
}
|
|
157
|
+
const associatedRelationalDirective = (_a = associatedField.directives) === null || _a === void 0 ? void 0 : _a.find((directive) => {
|
|
158
|
+
return getAssociatedRelationalDirectiveTypes(config.directiveName)
|
|
159
|
+
.map((directiveType) => directiveType)
|
|
160
|
+
.includes(directive.name.value);
|
|
161
|
+
});
|
|
162
|
+
if (!associatedRelationalDirective) {
|
|
163
|
+
return [];
|
|
164
|
+
}
|
|
165
|
+
const associatedDirectiveReferencesArgNode = (_c = (_b = associatedRelationalDirective.arguments) === null || _b === void 0 ? void 0 : _b.find((arg) => arg.name.value === 'references')) === null || _c === void 0 ? void 0 : _c.value;
|
|
166
|
+
const getReferencesFromArgNode = (argument) => {
|
|
167
|
+
if (argument.kind === 'ListValue') {
|
|
168
|
+
return argument.values.map((value) => value.value);
|
|
169
|
+
}
|
|
170
|
+
return [argument.value];
|
|
171
|
+
};
|
|
172
|
+
const associatedReferences = getReferencesFromArgNode(associatedDirectiveReferencesArgNode);
|
|
173
|
+
const expectedReferenceFields = config.referenceNodes.map((node) => node.name.value).join(',');
|
|
174
|
+
const actualAssociatedReferenceFields = associatedReferences.join(',');
|
|
175
|
+
if (expectedReferenceFields !== actualAssociatedReferenceFields) {
|
|
176
|
+
return [];
|
|
177
|
+
}
|
|
178
|
+
return [
|
|
179
|
+
{
|
|
180
|
+
associatedField,
|
|
181
|
+
associatedReferences,
|
|
182
|
+
associatedRelationalDirective,
|
|
183
|
+
},
|
|
184
|
+
];
|
|
185
|
+
});
|
|
186
|
+
if (!associatedConnection || associatedConnection.length === 0) {
|
|
187
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`Uni-directional relationships are not supported. ${expectedBidirectionalErrorMessages()}`);
|
|
188
|
+
}
|
|
189
|
+
return associatedConnection[0];
|
|
190
|
+
};
|
|
191
|
+
const referenceFieldTypeMatchesPrimaryKey = (a, b) => {
|
|
192
|
+
const areEquivalentTypes = (c, d) => {
|
|
193
|
+
const matching = ['ID', 'String'];
|
|
194
|
+
return c === d || (matching.includes(c) && matching.includes(d));
|
|
195
|
+
};
|
|
196
|
+
const typeA = (0, graphql_transformer_common_1.unwrapNonNull)(a.type).name.value;
|
|
197
|
+
const typeB = (0, graphql_transformer_common_1.unwrapNonNull)(b.type).name.value;
|
|
198
|
+
return areEquivalentTypes(typeA, typeB);
|
|
199
|
+
};
|
|
200
|
+
const validateReferencesRelationalFieldNullability = (config) => {
|
|
201
|
+
const { field, object, relatedType } = config;
|
|
202
|
+
const fieldType = field.type;
|
|
203
|
+
const relatedTypeName = relatedType.name.value;
|
|
204
|
+
if (fieldType.kind === graphql_1.Kind.NON_NULL_TYPE) {
|
|
205
|
+
const fieldDescription = `${object.name.value}.${field.name.value}: ` +
|
|
206
|
+
`${config.directiveName === graphql_directives_1.HasManyDirective.name ? `[${relatedTypeName}]` : relatedTypeName}`;
|
|
207
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`@${config.directiveName} fields must not be required. Change '${fieldDescription}!' to '${fieldDescription}'`);
|
|
208
|
+
}
|
|
209
|
+
if (fieldType.kind === graphql_1.Kind.LIST_TYPE && fieldType.type.kind === graphql_1.Kind.NON_NULL_TYPE) {
|
|
210
|
+
const fieldDescription = (typeDescription) => {
|
|
211
|
+
return `${config.object.name.value}.${config.field.name.value}: ${typeDescription}`;
|
|
212
|
+
};
|
|
213
|
+
const relatedTypeIs = config.directiveName === graphql_directives_1.HasManyDirective.name ? `[${relatedTypeName}!]` : `${relatedTypeName}!`;
|
|
214
|
+
const relatedTypeShould = config.directiveName === graphql_directives_1.HasManyDirective.name ? `[${relatedTypeName}]` : `${relatedTypeName}`;
|
|
215
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`@${config.directiveName} fields must not be required. Change '${fieldDescription(relatedTypeIs)}' to '${fieldDescription(relatedTypeShould)}'`);
|
|
216
|
+
}
|
|
217
|
+
};
|
|
218
|
+
exports.validateReferencesRelationalFieldNullability = validateReferencesRelationalFieldNullability;
|
|
219
|
+
const validateReferencesBidirectionality = (config) => {
|
|
220
|
+
const { directiveName, object, references, referenceNodes, relatedType } = config;
|
|
221
|
+
const { associatedReferences } = getReferencesAssociatedField(config);
|
|
222
|
+
const primaryModel = directiveName === 'belongsTo' ? relatedType : object;
|
|
223
|
+
const relatedModel = directiveName === 'belongsTo' ? object : relatedType;
|
|
224
|
+
const primaryKeys = (0, graphql_transformer_core_1.getPrimaryKeyFieldNodes)(primaryModel);
|
|
225
|
+
const primaryModelName = primaryModel.name.value;
|
|
226
|
+
const relatedModelName = relatedModel.name.value;
|
|
227
|
+
if (!(references.length === associatedReferences.length) ||
|
|
228
|
+
!references.every((reference, index) => reference === associatedReferences[index])) {
|
|
229
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`The number and type of the reference fields [${associatedReferences.join(',')}] defined for the ${directiveName} relationship ` +
|
|
230
|
+
`between ${primaryModelName} and ${relatedModelName} must match the number and type of the primary key fields in ` +
|
|
231
|
+
`${primaryModelName}.`);
|
|
232
|
+
}
|
|
233
|
+
primaryKeys
|
|
234
|
+
.map((key, index) => [key, referenceNodes[index]])
|
|
235
|
+
.forEach(([primaryKey, referenceField]) => {
|
|
236
|
+
if (!referenceFieldTypeMatchesPrimaryKey(primaryKey, referenceField)) {
|
|
237
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`Type mismatch between primary key field(s) of ${primaryModelName}` +
|
|
238
|
+
` and reference fields of ${relatedModelName}.` +
|
|
239
|
+
` Type of ${primaryModelName}.${primaryKey.name.value} does not match type of ${relatedModelName}.${referenceField.name.value}`);
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
};
|
|
243
|
+
exports.validateReferencesBidirectionality = validateReferencesBidirectionality;
|
|
244
|
+
const getModelDirective = (objectType) => {
|
|
245
|
+
return objectType.directives.find((directive) => directive.name.value === 'model');
|
|
246
|
+
};
|
|
247
|
+
exports.getModelDirective = getModelDirective;
|
|
248
|
+
const validateModelDirective = (config) => {
|
|
249
|
+
if (!(0, exports.getModelDirective)(config.object)) {
|
|
250
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`@${config.directiveName} must be on an @model object type field.`);
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
exports.validateModelDirective = validateModelDirective;
|
|
254
|
+
const getRelatedType = (config, ctx) => {
|
|
255
|
+
const { field } = config;
|
|
256
|
+
const relatedTypeName = (0, graphql_transformer_common_1.getBaseType)(field.type);
|
|
257
|
+
const relatedType = ctx.inputDocument.definitions.find((d) => d.kind === graphql_1.Kind.OBJECT_TYPE_DEFINITION && d.name.value === relatedTypeName);
|
|
258
|
+
if (!relatedType) {
|
|
259
|
+
const outputRelatedType = ctx.output.getObject(relatedTypeName);
|
|
260
|
+
if (outputRelatedType) {
|
|
261
|
+
return outputRelatedType;
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
throw new Error(`Could not find related type with name ${relatedTypeName} while processing relationships.`);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
return relatedType;
|
|
268
|
+
};
|
|
269
|
+
exports.getRelatedType = getRelatedType;
|
|
270
|
+
const getFieldsNodes = (config, ctx) => {
|
|
271
|
+
const { directiveName, fields, object } = config;
|
|
272
|
+
const enums = ctx.output.getTypeDefinitionsOfKind(graphql_1.Kind.ENUM_TYPE_DEFINITION);
|
|
273
|
+
return fields.map((fieldName) => {
|
|
274
|
+
const fieldNode = object.fields.find((field) => field.name.value === fieldName);
|
|
275
|
+
if (!fieldNode) {
|
|
276
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`${fieldName} is not a field in ${object.name.value}`);
|
|
277
|
+
}
|
|
278
|
+
if (!(0, graphql_transformer_common_1.isScalarOrEnum)(fieldNode.type, enums)) {
|
|
279
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`All fields provided to @${directiveName} must be scalar or enum fields.`);
|
|
280
|
+
}
|
|
281
|
+
return fieldNode;
|
|
282
|
+
});
|
|
283
|
+
};
|
|
284
|
+
exports.getFieldsNodes = getFieldsNodes;
|
|
285
|
+
const getAssociatedRelationalDirectiveTypes = (sourceRelationalDirectiveType) => {
|
|
286
|
+
switch (sourceRelationalDirectiveType) {
|
|
287
|
+
case graphql_directives_1.HasOneDirective.name:
|
|
288
|
+
case graphql_directives_1.HasManyDirective.name:
|
|
289
|
+
return [graphql_directives_1.BelongsToDirective.name];
|
|
290
|
+
case graphql_directives_1.BelongsToDirective.name:
|
|
291
|
+
return [graphql_directives_1.HasOneDirective.name, graphql_directives_1.HasManyDirective.name];
|
|
292
|
+
default:
|
|
293
|
+
throw new Error(`Unexpected directive type ${sourceRelationalDirectiveType}`);
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
const getReferencesNodes = (config, ctx) => {
|
|
297
|
+
const { directiveName, references, relatedType } = config;
|
|
298
|
+
const enums = ctx.output.getTypeDefinitionsOfKind(graphql_1.Kind.ENUM_TYPE_DEFINITION);
|
|
299
|
+
const referenceNodes = references.map((fieldName) => {
|
|
300
|
+
const fieldNode = relatedType.fields.find((field) => field.name.value === fieldName);
|
|
301
|
+
if (!fieldNode) {
|
|
302
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`${fieldName} is not a field in ${relatedType.name.value}`);
|
|
303
|
+
}
|
|
304
|
+
if (!(0, graphql_transformer_common_1.isScalarOrEnum)(fieldNode.type, enums)) {
|
|
305
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`All references provided to @${directiveName} must be scalar or enum fields.`);
|
|
306
|
+
}
|
|
307
|
+
return fieldNode;
|
|
308
|
+
});
|
|
309
|
+
const firstReferenceNodeIsNonNull = referenceNodes[0].type.kind === graphql_1.Kind.NON_NULL_TYPE;
|
|
310
|
+
referenceNodes.slice(1).forEach((referenceNode) => {
|
|
311
|
+
const isNonNull = referenceNode.type.kind === graphql_1.Kind.NON_NULL_TYPE;
|
|
312
|
+
if (isNonNull !== firstReferenceNodeIsNonNull) {
|
|
313
|
+
const nonNullReferenceFields = referenceNodes
|
|
314
|
+
.filter((node) => node.type.kind === graphql_1.Kind.NON_NULL_TYPE)
|
|
315
|
+
.map((node) => `'${node.name.value}'`)
|
|
316
|
+
.join(', ');
|
|
317
|
+
const nullableReferenceFields = referenceNodes
|
|
318
|
+
.filter((node) => node.type.kind !== graphql_1.Kind.NON_NULL_TYPE)
|
|
319
|
+
.map((node) => `'${node.name.value}'`)
|
|
320
|
+
.join(', ');
|
|
321
|
+
const referencesDescription = '[' + references.map((reference) => `'${reference}'`).join(', ') + ']';
|
|
322
|
+
const fieldDescription = `@${directiveName}(references: ${referencesDescription}) ${config.object.name.value}.${config.field.name.value}`;
|
|
323
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`Reference fields defined on related type: '${relatedType.name.value}' for ${fieldDescription} relationship have inconsistent nullability.` +
|
|
324
|
+
`\nRequired fields: ${nonNullReferenceFields}` +
|
|
325
|
+
`\nNullable fields: ${nullableReferenceFields}` +
|
|
326
|
+
`\nUpdate reference fields on type '${relatedType.name.value}' to have consistent nullability -- either all required or all nullable.`);
|
|
327
|
+
}
|
|
328
|
+
});
|
|
329
|
+
return referenceNodes;
|
|
330
|
+
};
|
|
331
|
+
exports.getReferencesNodes = getReferencesNodes;
|
|
332
|
+
const getBelongsToReferencesNodes = (config, ctx) => {
|
|
333
|
+
const { directiveName, references, object } = config;
|
|
334
|
+
const enums = ctx.output.getTypeDefinitionsOfKind(graphql_1.Kind.ENUM_TYPE_DEFINITION);
|
|
335
|
+
return references.map((fieldName) => {
|
|
336
|
+
const fieldNode = object.fields.find((field) => field.name.value === fieldName);
|
|
337
|
+
if (!fieldNode) {
|
|
338
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`${fieldName} is not a field in ${object.name.value}`);
|
|
339
|
+
}
|
|
340
|
+
if (!(0, graphql_transformer_common_1.isScalarOrEnum)(fieldNode.type, enums)) {
|
|
341
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`All references provided to @${directiveName} must be scalar or enum fields.`);
|
|
342
|
+
}
|
|
343
|
+
return fieldNode;
|
|
344
|
+
});
|
|
345
|
+
};
|
|
346
|
+
exports.getBelongsToReferencesNodes = getBelongsToReferencesNodes;
|
|
347
|
+
const validateRelatedModelDirective = (config) => {
|
|
348
|
+
if (!(0, exports.getModelDirective)(config.relatedType)) {
|
|
349
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`Object type ${config.relatedType.name.value} must be annotated with @model.`);
|
|
350
|
+
}
|
|
351
|
+
};
|
|
352
|
+
exports.validateRelatedModelDirective = validateRelatedModelDirective;
|
|
353
|
+
const getIndexName = (directive) => {
|
|
354
|
+
for (const argument of directive.arguments) {
|
|
355
|
+
if (argument.name.value === 'name') {
|
|
356
|
+
return argument.value.value;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
return undefined;
|
|
360
|
+
};
|
|
361
|
+
const getConnectionAttributeName = (transformParameters, type, field, relatedTypeField) => {
|
|
362
|
+
const nameSuffix = transformParameters.respectPrimaryKeyAttributesOnConnectionField ? relatedTypeField : 'id';
|
|
363
|
+
return (0, graphql_transformer_common_1.toCamelCase)([type, field, nameSuffix]);
|
|
364
|
+
};
|
|
365
|
+
exports.getConnectionAttributeName = getConnectionAttributeName;
|
|
366
|
+
const getManyToManyConnectionAttributeName = (transformParameters, field, relatedTypeField) => {
|
|
367
|
+
const nameSuffix = transformParameters.respectPrimaryKeyAttributesOnConnectionField ? (0, graphql_transformer_common_1.toPascalCase)([relatedTypeField]) : 'ID';
|
|
368
|
+
return `${(0, graphql_transformer_common_1.toCamelCase)([field])}${nameSuffix}`;
|
|
369
|
+
};
|
|
370
|
+
exports.getManyToManyConnectionAttributeName = getManyToManyConnectionAttributeName;
|
|
371
|
+
const getSortKeyConnectionAttributeName = (type, field, relatedTypeField) => {
|
|
372
|
+
return (0, graphql_transformer_common_1.toCamelCase)([type, field, relatedTypeField]);
|
|
373
|
+
};
|
|
374
|
+
exports.getSortKeyConnectionAttributeName = getSortKeyConnectionAttributeName;
|
|
375
|
+
const getBackendConnectionAttributeName = (transformParameters, resourceHelper, type, field, relatedTypeField) => {
|
|
376
|
+
return (0, exports.getConnectionAttributeName)(transformParameters, resourceHelper.getModelNameMapping(type), field, relatedTypeField);
|
|
377
|
+
};
|
|
378
|
+
exports.getBackendConnectionAttributeName = getBackendConnectionAttributeName;
|
|
379
|
+
const validateDisallowedDataStoreRelationships = (config, ctx) => {
|
|
380
|
+
if (!ctx.isProjectUsingDataStore()) {
|
|
381
|
+
return;
|
|
382
|
+
}
|
|
383
|
+
const modelType = config.object.name.value;
|
|
384
|
+
const relatedType = ctx.output.getType(config.relatedType.name.value);
|
|
385
|
+
if (!relatedType) {
|
|
386
|
+
throw new Error(`Expected related type ${config.relatedType.name.value} to be found in output, but did not.`);
|
|
387
|
+
}
|
|
388
|
+
if (modelType === relatedType.name.value) {
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
const hasUnsupportedConnectionFields = relatedType.fields.some((field) => (0, graphql_transformer_common_1.getBaseType)(field.type) === modelType &&
|
|
392
|
+
field.directives.some((directive) => directive.name.value === 'hasOne' || directive.name.value === 'hasMany'));
|
|
393
|
+
if (hasUnsupportedConnectionFields) {
|
|
394
|
+
throw new graphql_transformer_core_1.InvalidDirectiveError(`${modelType} and ${relatedType.name.value} cannot refer to each other via @hasOne or @hasMany when DataStore is in use. Use @belongsTo instead. See https://docs.amplify.aws/cli/graphql/data-modeling/#belongs-to-relationship`);
|
|
395
|
+
}
|
|
396
|
+
};
|
|
397
|
+
exports.validateDisallowedDataStoreRelationships = validateDisallowedDataStoreRelationships;
|
|
398
|
+
const registerHasOneForeignKeyMappings = ({ transformParameters, resourceHelper, thisTypeName, thisFieldName, relatedType, }) => {
|
|
399
|
+
if (resourceHelper.isModelRenamed(thisTypeName)) {
|
|
400
|
+
const currAttrName = (0, exports.getConnectionAttributeName)(transformParameters, thisTypeName, thisFieldName, (0, exports.getObjectPrimaryKey)(relatedType).name.value);
|
|
401
|
+
const origAttrName = (0, exports.getBackendConnectionAttributeName)(transformParameters, resourceHelper, thisTypeName, thisFieldName, (0, exports.getObjectPrimaryKey)(relatedType).name.value);
|
|
402
|
+
const modelFieldMap = resourceHelper.getModelFieldMap(thisTypeName);
|
|
403
|
+
modelFieldMap.addMappedField({ currentFieldName: currAttrName, originalFieldName: origAttrName });
|
|
404
|
+
['create', 'update', 'delete', 'get', 'list', 'sync'].forEach((op) => {
|
|
405
|
+
const opFieldName = (0, graphql_transformer_core_1.getFieldNameFor)(op, thisTypeName);
|
|
406
|
+
const opTypeName = op === 'create' || op === 'update' || op === 'delete' ? 'Mutation' : 'Query';
|
|
407
|
+
const opIsList = op === 'list' || op === 'sync';
|
|
408
|
+
modelFieldMap.addResolverReference({ typeName: opTypeName, fieldName: opFieldName, isList: opIsList });
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
resourceHelper
|
|
412
|
+
.getModelFieldMap(relatedType.name.value)
|
|
413
|
+
.addResolverReference({ typeName: thisTypeName, fieldName: thisFieldName, isList: false });
|
|
414
|
+
};
|
|
415
|
+
exports.registerHasOneForeignKeyMappings = registerHasOneForeignKeyMappings;
|
|
416
|
+
const registerHasManyForeignKeyMappings = ({ transformParameters, resourceHelper, thisTypeName, thisFieldName, relatedType, }) => {
|
|
417
|
+
if (!resourceHelper.isModelRenamed(thisTypeName)) {
|
|
418
|
+
return;
|
|
419
|
+
}
|
|
420
|
+
const currAttrName = (0, exports.getConnectionAttributeName)(transformParameters, thisTypeName, thisFieldName, (0, exports.getObjectPrimaryKey)(relatedType).name.value);
|
|
421
|
+
const origAttrName = (0, exports.getBackendConnectionAttributeName)(transformParameters, resourceHelper, thisTypeName, thisFieldName, (0, exports.getObjectPrimaryKey)(relatedType).name.value);
|
|
422
|
+
const modelFieldMap = resourceHelper.getModelFieldMap(relatedType.name.value);
|
|
423
|
+
modelFieldMap
|
|
424
|
+
.addMappedField({ currentFieldName: currAttrName, originalFieldName: origAttrName })
|
|
425
|
+
.addResolverReference({ typeName: thisTypeName, fieldName: thisFieldName, isList: true });
|
|
426
|
+
['create', 'update', 'delete', 'get', 'list', 'sync'].forEach((op) => {
|
|
427
|
+
const opFieldName = (0, graphql_transformer_core_1.getFieldNameFor)(op, relatedType.name.value);
|
|
428
|
+
const opTypeName = op === 'create' || op === 'update' || op === 'delete' ? 'Mutation' : 'Query';
|
|
429
|
+
const opIsList = op === 'list' || op === 'sync';
|
|
430
|
+
modelFieldMap.addResolverReference({ typeName: opTypeName, fieldName: opFieldName, isList: opIsList });
|
|
431
|
+
});
|
|
432
|
+
};
|
|
433
|
+
exports.registerHasManyForeignKeyMappings = registerHasManyForeignKeyMappings;
|
|
434
|
+
const registerManyToManyForeignKeyMappings = ({ resourceHelper, typeName, referencedBy, fieldMap, }) => {
|
|
435
|
+
const modelFieldMap = resourceHelper.getModelFieldMap(typeName);
|
|
436
|
+
fieldMap.forEach(modelFieldMap.addMappedField);
|
|
437
|
+
referencedBy.forEach(modelFieldMap.addResolverReference);
|
|
438
|
+
['create', 'update', 'delete', 'get', 'list', 'sync'].forEach((op) => {
|
|
439
|
+
const opFieldName = (0, graphql_transformer_core_1.getFieldNameFor)(op, typeName);
|
|
440
|
+
const opTypeName = op === 'create' || op === 'update' || op === 'delete' ? 'Mutation' : 'Query';
|
|
441
|
+
const opIsList = op === 'list' || op === 'sync';
|
|
442
|
+
modelFieldMap.addResolverReference({ typeName: opTypeName, fieldName: opFieldName, isList: opIsList });
|
|
443
|
+
});
|
|
444
|
+
};
|
|
445
|
+
exports.registerManyToManyForeignKeyMappings = registerManyToManyForeignKeyMappings;
|
|
446
|
+
const getObjectPrimaryKey = (object) => {
|
|
447
|
+
let primaryKey = (0, graphql_transformer_common_1.makeField)('id', [], (0, graphql_transformer_common_1.makeNonNullType)((0, graphql_transformer_common_1.makeNamedType)('ID')));
|
|
448
|
+
object.fields.forEach((objectField) => {
|
|
449
|
+
objectField.directives.forEach((directive) => {
|
|
450
|
+
if (directive.name.value === 'primaryKey') {
|
|
451
|
+
primaryKey = objectField;
|
|
452
|
+
}
|
|
453
|
+
});
|
|
454
|
+
});
|
|
455
|
+
return primaryKey;
|
|
456
|
+
};
|
|
457
|
+
exports.getObjectPrimaryKey = getObjectPrimaryKey;
|
|
458
|
+
const getOverrideIndexName = (config) => {
|
|
459
|
+
var _a;
|
|
460
|
+
const { associatedRelationalDirective } = getReferencesAssociatedField(config);
|
|
461
|
+
const overrideIndexArgument = (associatedRelationalDirective.arguments || []).find((argument) => argument.name.value === 'overrideIndexName');
|
|
462
|
+
return (_a = overrideIndexArgument === null || overrideIndexArgument === void 0 ? void 0 : overrideIndexArgument.value) === null || _a === void 0 ? void 0 : _a.value;
|
|
463
|
+
};
|
|
464
|
+
exports.getOverrideIndexName = getOverrideIndexName;
|
|
465
|
+
//# sourceMappingURL=utils.js.map
|
package/lib/utils.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@marlonjd/graphql-relational-transformer-stack-limits",
|
|
3
|
+
"version": "3.1.13-stack-limits.3",
|
|
4
|
+
"description": "Amplify GraphQL relational modeling transformers",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/aws-amplify/amplify-category-api.git",
|
|
8
|
+
"directory": "packages/amplify-graphql-relational-transformer"
|
|
9
|
+
},
|
|
10
|
+
"author": "Amazon Web Services",
|
|
11
|
+
"license": "Apache-2.0",
|
|
12
|
+
"main": "lib/index.js",
|
|
13
|
+
"types": "lib/index.d.ts",
|
|
14
|
+
"keywords": [
|
|
15
|
+
"graphql",
|
|
16
|
+
"cloudformation",
|
|
17
|
+
"aws",
|
|
18
|
+
"amplify",
|
|
19
|
+
"transformer"
|
|
20
|
+
],
|
|
21
|
+
"publishConfig": {
|
|
22
|
+
"access": "public"
|
|
23
|
+
},
|
|
24
|
+
"scripts": {
|
|
25
|
+
"build": "tsc",
|
|
26
|
+
"watch": "tsc -w",
|
|
27
|
+
"clean": "rimraf ./lib",
|
|
28
|
+
"test": "jest",
|
|
29
|
+
"extract-api": "ts-node ../../scripts/extract-api.ts"
|
|
30
|
+
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@aws-amplify/graphql-directives": "2.8.0",
|
|
33
|
+
"@aws-amplify/graphql-index-transformer": "3.1.1",
|
|
34
|
+
"@aws-amplify/graphql-model-transformer": "3.4.1",
|
|
35
|
+
"@aws-amplify/graphql-transformer-core": "3.5.1",
|
|
36
|
+
"@aws-amplify/graphql-transformer-interfaces": "4.3.0",
|
|
37
|
+
"graphql": "^15.5.0",
|
|
38
|
+
"graphql-mapping-template": "5.0.2",
|
|
39
|
+
"graphql-transformer-common": "5.1.4",
|
|
40
|
+
"immer": "^9.0.12"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"@aws-amplify/graphql-transformer-test-utils": "1.1.1"
|
|
44
|
+
},
|
|
45
|
+
"peerDependencies": {
|
|
46
|
+
"aws-cdk-lib": "^2.224.0",
|
|
47
|
+
"constructs": "^10.3.0"
|
|
48
|
+
}
|
|
49
|
+
}
|