@aws-amplify/graphql-model-transformer 0.10.0-apiext2.0 → 0.10.0-apiext3.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.
@@ -1,77 +0,0 @@
1
- import { DirectiveWrapper } from '@aws-amplify/graphql-transformer-core';
2
- import { DirectiveNode, DocumentNode, EnumTypeDefinitionNode, FieldDefinitionNode, InputObjectTypeDefinitionNode, InputValueDefinitionNode, Location, NamedTypeNode, ObjectTypeDefinitionNode, StringValueNode, TypeNode } from 'graphql';
3
- export declare class GenericFieldWrapper {
4
- protected type: TypeNode;
5
- readonly directives: DirectiveWrapper[];
6
- loc?: Location;
7
- name: string;
8
- constructor(field: FieldDefinitionNode | InputValueDefinitionNode);
9
- isList: () => boolean;
10
- isNonNullable: () => boolean;
11
- makeNullable: () => boolean;
12
- makeNonNullable: () => boolean;
13
- wrapListType: () => GenericFieldWrapper;
14
- unWrapListType: () => boolean;
15
- private isListType;
16
- getBaseType: () => NamedTypeNode;
17
- getTypeName: () => string;
18
- isScalar: () => boolean;
19
- }
20
- export declare class InputFieldWrapper extends GenericFieldWrapper {
21
- protected field: InputValueDefinitionNode;
22
- readonly argumenets?: InputValueDefinitionNode[];
23
- readonly description?: StringValueNode;
24
- type: TypeNode;
25
- readonly name: string;
26
- readonly loc?: Location;
27
- constructor(field: InputValueDefinitionNode);
28
- serialize: () => InputValueDefinitionNode;
29
- static fromField: (name: string, field: FieldDefinitionNode, document: DocumentNode) => InputFieldWrapper;
30
- static create: (name: string, type: string, isNullable?: boolean, isList?: boolean) => InputFieldWrapper;
31
- }
32
- export declare class FieldWrapper extends GenericFieldWrapper {
33
- readonly argumenets?: InputValueDefinitionNode[];
34
- readonly description?: StringValueNode;
35
- readonly loc?: Location;
36
- constructor(field: FieldDefinitionNode);
37
- serialize: () => FieldDefinitionNode;
38
- static create: (name: string, type: string, isNullable?: boolean, isList?: boolean) => FieldWrapper;
39
- }
40
- export declare class ObjectDefinitionWrapper {
41
- private node;
42
- readonly directives?: DirectiveWrapper[];
43
- readonly fields: FieldWrapper[];
44
- readonly name: string;
45
- constructor(node: ObjectTypeDefinitionNode);
46
- serialize: () => ObjectTypeDefinitionNode;
47
- hasField: (name: string) => boolean;
48
- getField: (name: string) => FieldWrapper;
49
- addField: (field: FieldWrapper) => void;
50
- removeField: (field: FieldWrapper) => void;
51
- static create: (name: string, fields?: FieldDefinitionNode[], directives?: DirectiveNode[]) => ObjectDefinitionWrapper;
52
- }
53
- export declare class InputObjectDefinitionWrapper {
54
- private node;
55
- readonly directives?: DirectiveWrapper[];
56
- readonly fields: InputFieldWrapper[];
57
- readonly name: string;
58
- constructor(node: InputObjectTypeDefinitionNode);
59
- serialize: () => InputObjectTypeDefinitionNode;
60
- hasField: (name: string) => boolean;
61
- getField: (name: string) => InputFieldWrapper;
62
- addField: (field: InputFieldWrapper) => void;
63
- removeField: (field: InputFieldWrapper) => void;
64
- static create: (name: string, fields?: InputValueDefinitionNode[], directives?: DirectiveNode[]) => InputObjectDefinitionWrapper;
65
- static fromObject: (name: string, def: ObjectTypeDefinitionNode, document: DocumentNode) => InputObjectDefinitionWrapper;
66
- }
67
- export declare class EnumWrapper {
68
- private node;
69
- readonly name: string;
70
- values: string[];
71
- directives: DirectiveWrapper[];
72
- constructor(node: EnumTypeDefinitionNode);
73
- addValue: (value: string) => void;
74
- serialize: () => EnumTypeDefinitionNode;
75
- static create: (name: string, values?: string[]) => EnumWrapper;
76
- }
77
- //# sourceMappingURL=object-definition-wrapper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"object-definition-wrapper.d.ts","sourceRoot":"","sources":["../../src/wrappers/object-definition-wrapper.ts"],"names":[],"mappings":"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"}
@@ -1,354 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EnumWrapper = exports.InputObjectDefinitionWrapper = exports.ObjectDefinitionWrapper = exports.FieldWrapper = exports.InputFieldWrapper = exports.GenericFieldWrapper = 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
- class GenericFieldWrapper {
8
- constructor(field) {
9
- this.isList = () => {
10
- return this.isListType(this.type);
11
- };
12
- this.isNonNullable = () => {
13
- return this.type.kind === 'NonNullType';
14
- };
15
- this.makeNullable = () => {
16
- if (this.isNonNullable()) {
17
- this.type = this.type.type;
18
- return true;
19
- }
20
- return false;
21
- };
22
- this.makeNonNullable = () => {
23
- if (!this.isNonNullable()) {
24
- this.type = { kind: 'NonNullType', type: this.type };
25
- return true;
26
- }
27
- return false;
28
- };
29
- this.wrapListType = () => {
30
- if (!this.isList()) {
31
- this.type = {
32
- kind: 'ListType',
33
- type: this.type,
34
- };
35
- }
36
- return this;
37
- };
38
- this.unWrapListType = () => {
39
- if (!this.isList()) {
40
- this.type = this.type.type;
41
- return true;
42
- }
43
- return false;
44
- };
45
- this.isListType = (type) => {
46
- if (type.kind === graphql_1.Kind.NON_NULL_TYPE) {
47
- return (0, graphql_1.isListType)(type.type);
48
- }
49
- else {
50
- return type.kind === graphql_1.Kind.LIST_TYPE;
51
- }
52
- };
53
- this.getBaseType = () => {
54
- let node = this.type;
55
- while (node.kind === graphql_1.Kind.LIST_TYPE || node.kind === graphql_1.Kind.NON_NULL_TYPE) {
56
- node = node.type;
57
- }
58
- return node;
59
- };
60
- this.getTypeName = () => {
61
- return this.getBaseType().name.value;
62
- };
63
- this.isScalar = () => {
64
- const typeName = this.getTypeName();
65
- return Object.keys(graphql_transformer_common_1.DEFAULT_SCALARS).includes(typeName);
66
- };
67
- this.type = field.type;
68
- this.name = field.name.value;
69
- this.loc = field.loc;
70
- this.directives = (field.directives || []).map(d => new graphql_transformer_core_1.DirectiveWrapper(d));
71
- }
72
- }
73
- exports.GenericFieldWrapper = GenericFieldWrapper;
74
- class InputFieldWrapper extends GenericFieldWrapper {
75
- constructor(field) {
76
- super(field);
77
- this.field = field;
78
- this.serialize = () => {
79
- var _a;
80
- return {
81
- ...this.field,
82
- kind: 'InputValueDefinition',
83
- name: { kind: 'Name', value: this.name },
84
- type: this.type,
85
- description: this.description,
86
- directives: (_a = this.directives) === null || _a === void 0 ? void 0 : _a.map(d => d.serialize()),
87
- };
88
- };
89
- this.type = field.type;
90
- this.name = field.name.value;
91
- }
92
- }
93
- exports.InputFieldWrapper = InputFieldWrapper;
94
- InputFieldWrapper.fromField = (name, field, document) => {
95
- const autoGeneratableFieldsWithType = {
96
- id: ['ID'],
97
- createdAt: ['AWSDateTime', 'String'],
98
- updatedAt: ['AWSDateTime', 'String'],
99
- };
100
- let type;
101
- if (Object.keys(autoGeneratableFieldsWithType).indexOf(name) !== -1 &&
102
- autoGeneratableFieldsWithType[name].indexOf((0, graphql_transformer_common_1.unwrapNonNull)(field.type).name.value) !== -1) {
103
- type = (0, graphql_transformer_common_1.unwrapNonNull)(field.type);
104
- }
105
- else {
106
- type =
107
- (0, graphql_transformer_common_1.isScalar)(field.type) || (0, graphql_transformer_common_1.isEnum)(field.type, document)
108
- ? field.type
109
- : (0, graphql_transformer_common_1.withNamedNodeNamed)(field.type, graphql_transformer_common_1.ModelResourceIDs.NonModelInputObjectName((0, graphql_transformer_common_1.getBaseType)(field.type)));
110
- }
111
- return new InputFieldWrapper({
112
- kind: 'InputValueDefinition',
113
- name: { kind: 'Name', value: name },
114
- type,
115
- });
116
- };
117
- InputFieldWrapper.create = (name, type, isNullable = false, isList = false) => {
118
- const field = new InputFieldWrapper({
119
- kind: 'InputValueDefinition',
120
- name: {
121
- kind: 'Name',
122
- value: name,
123
- },
124
- type: {
125
- kind: 'NamedType',
126
- name: {
127
- value: type,
128
- kind: 'Name',
129
- },
130
- },
131
- });
132
- if (!isNullable) {
133
- field.makeNonNullable();
134
- }
135
- if (isList) {
136
- field.wrapListType();
137
- }
138
- return field;
139
- };
140
- class FieldWrapper extends GenericFieldWrapper {
141
- constructor(field) {
142
- super(field);
143
- this.serialize = () => {
144
- var _a;
145
- return {
146
- kind: 'FieldDefinition',
147
- name: { kind: 'Name', value: this.name },
148
- type: this.type,
149
- arguments: this.argumenets,
150
- description: this.description,
151
- directives: (_a = this.directives) === null || _a === void 0 ? void 0 : _a.map(d => d.serialize()),
152
- };
153
- };
154
- this.argumenets = [...(field.arguments || [])];
155
- this.description = field.description;
156
- this.loc = field.loc;
157
- }
158
- }
159
- exports.FieldWrapper = FieldWrapper;
160
- FieldWrapper.create = (name, type, isNullable = false, isList = false) => {
161
- const field = new FieldWrapper({
162
- kind: 'FieldDefinition',
163
- name: {
164
- kind: 'Name',
165
- value: name,
166
- },
167
- type: {
168
- kind: 'NamedType',
169
- name: {
170
- value: type,
171
- kind: 'Name',
172
- },
173
- },
174
- });
175
- if (!isNullable) {
176
- field.makeNonNullable();
177
- }
178
- if (isList) {
179
- field.wrapListType().makeNonNullable();
180
- }
181
- return field;
182
- };
183
- class ObjectDefinitionWrapper {
184
- constructor(node) {
185
- this.node = node;
186
- this.serialize = () => {
187
- var _a;
188
- return {
189
- ...this.node,
190
- name: {
191
- kind: 'Name',
192
- value: this.name,
193
- },
194
- fields: this.fields.map(f => f.serialize()),
195
- directives: (_a = this.directives) === null || _a === void 0 ? void 0 : _a.map(d => d.serialize()),
196
- };
197
- };
198
- this.hasField = (name) => {
199
- const field = this.fields.find(f => f.name === name);
200
- return field ? true : false;
201
- };
202
- this.getField = (name) => {
203
- const field = this.fields.find(f => f.name === name);
204
- if (!field) {
205
- throw new Error(`Field ${name} missing in type ${this.name}`);
206
- }
207
- return field;
208
- };
209
- this.addField = (field) => {
210
- if (this.hasField(field.name)) {
211
- throw new Error(`type ${this.name} has already a field with name ${field.name}`);
212
- }
213
- this.fields.push(field);
214
- };
215
- this.removeField = (field) => {
216
- if (this.hasField(field.name)) {
217
- throw new Error(`type ${this.name} does not have the field with name ${field.name}`);
218
- }
219
- const index = this.fields.indexOf(field);
220
- this.fields.splice(index, 1);
221
- };
222
- this.directives = (node.directives || []).map(d => new graphql_transformer_core_1.DirectiveWrapper(d));
223
- this.fields = (node.fields || []).map(f => new FieldWrapper(f));
224
- this.name = node.name.value;
225
- }
226
- }
227
- exports.ObjectDefinitionWrapper = ObjectDefinitionWrapper;
228
- ObjectDefinitionWrapper.create = (name, fields = [], directives = []) => {
229
- return new ObjectDefinitionWrapper({
230
- kind: 'ObjectTypeDefinition',
231
- name: {
232
- kind: 'Name',
233
- value: name,
234
- },
235
- fields: fields,
236
- directives: directives,
237
- });
238
- };
239
- class InputObjectDefinitionWrapper {
240
- constructor(node) {
241
- this.node = node;
242
- this.serialize = () => {
243
- var _a;
244
- return {
245
- ...this.node,
246
- fields: this.fields.map(f => f.serialize()),
247
- directives: (_a = this.directives) === null || _a === void 0 ? void 0 : _a.map(d => d.serialize()),
248
- };
249
- };
250
- this.hasField = (name) => {
251
- const field = this.fields.find(f => f.name === name);
252
- return field ? true : false;
253
- };
254
- this.getField = (name) => {
255
- const field = this.fields.find(f => f.name === name);
256
- if (!field) {
257
- throw new Error(`Field ${name} missing in type ${this.name}`);
258
- }
259
- return field;
260
- };
261
- this.addField = (field) => {
262
- if (this.hasField(field.name)) {
263
- throw new Error(`type ${this.name} has already a field with name ${field.name}`);
264
- }
265
- this.fields.push(field);
266
- };
267
- this.removeField = (field) => {
268
- if (!this.hasField(field.name)) {
269
- throw new Error(`type ${this.name} does not have the field with name ${field.name}`);
270
- }
271
- const index = this.fields.indexOf(field);
272
- this.fields.splice(index, 1);
273
- };
274
- this.directives = (node.directives || []).map(d => new graphql_transformer_core_1.DirectiveWrapper(d));
275
- this.fields = (node.fields || []).map(f => new InputFieldWrapper(f));
276
- this.name = node.name.value;
277
- }
278
- }
279
- exports.InputObjectDefinitionWrapper = InputObjectDefinitionWrapper;
280
- InputObjectDefinitionWrapper.create = (name, fields = [], directives = []) => {
281
- const wrappedObj = new InputObjectDefinitionWrapper({
282
- kind: 'InputObjectTypeDefinition',
283
- name: {
284
- kind: 'Name',
285
- value: name,
286
- },
287
- fields: [],
288
- directives: directives,
289
- });
290
- for (let field of fields) {
291
- const fieldWrapper = new InputFieldWrapper(field);
292
- wrappedObj.addField(fieldWrapper);
293
- }
294
- return wrappedObj;
295
- };
296
- InputObjectDefinitionWrapper.fromObject = (name, def, document) => {
297
- const inputObj = {
298
- kind: 'InputObjectTypeDefinition',
299
- name: { kind: 'Name', value: name },
300
- fields: [],
301
- directives: [],
302
- };
303
- const wrappedInput = new InputObjectDefinitionWrapper(inputObj);
304
- for (let f of def.fields || []) {
305
- const wrappedField = InputFieldWrapper.fromField(f.name.value, f, document);
306
- wrappedInput.fields.push(wrappedField);
307
- }
308
- return wrappedInput;
309
- };
310
- class EnumWrapper {
311
- constructor(node) {
312
- var _a;
313
- this.node = node;
314
- this.addValue = (value) => {
315
- this.values.push(value);
316
- };
317
- this.serialize = () => {
318
- return {
319
- ...this.node,
320
- name: {
321
- kind: 'Name',
322
- value: this.name,
323
- },
324
- directives: this.directives.map(d => d.serialize()),
325
- values: this.values.map(value => ({
326
- kind: 'EnumValueDefinition',
327
- name: {
328
- kind: 'Name',
329
- value: value,
330
- },
331
- })),
332
- };
333
- };
334
- this.name = node.name.value;
335
- this.values = ((_a = node.values) === null || _a === void 0 ? void 0 : _a.map(v => v.name.value)) || [];
336
- this.directives = (node.directives || []).map(d => new graphql_transformer_core_1.DirectiveWrapper(d));
337
- }
338
- }
339
- exports.EnumWrapper = EnumWrapper;
340
- EnumWrapper.create = (name, values = []) => {
341
- const wrappedEnum = new EnumWrapper({
342
- kind: 'EnumTypeDefinition',
343
- name: {
344
- kind: 'Name',
345
- value: name,
346
- },
347
- values: [],
348
- });
349
- values.forEach(val => {
350
- wrappedEnum.addValue(val);
351
- });
352
- return wrappedEnum;
353
- };
354
- //# sourceMappingURL=object-definition-wrapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"object-definition-wrapper.js","sourceRoot":"","sources":["../../src/wrappers/object-definition-wrapper.ts"],"names":[],"mappings":"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"}