@wix/graphql-codegen-ts-builders 1.0.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.
- package/README.md +207 -0
- package/dist/es/src/documents-to-operations.d.ts +18 -0
- package/dist/es/src/documents-to-operations.d.ts.map +1 -0
- package/dist/es/src/documents-to-operations.js +200 -0
- package/dist/es/src/documents-to-operations.js.map +1 -0
- package/dist/es/src/helpers.d.ts +10 -0
- package/dist/es/src/helpers.d.ts.map +1 -0
- package/dist/es/src/helpers.js +84 -0
- package/dist/es/src/helpers.js.map +1 -0
- package/dist/es/src/index.d.ts +24 -0
- package/dist/es/src/index.d.ts.map +1 -0
- package/dist/es/src/index.js +362 -0
- package/dist/es/src/index.js.map +1 -0
- package/dist/es/src/mock-value-generator.d.ts +51 -0
- package/dist/es/src/mock-value-generator.d.ts.map +1 -0
- package/dist/es/src/mock-value-generator.js +370 -0
- package/dist/es/src/mock-value-generator.js.map +1 -0
- package/dist/es/src/types.d.ts +87 -0
- package/dist/es/src/types.d.ts.map +1 -0
- package/dist/es/src/types.js +6 -0
- package/dist/es/src/types.js.map +1 -0
- package/dist/es/src/utility-types.d.ts +10 -0
- package/dist/es/src/utility-types.d.ts.map +1 -0
- package/dist/es/src/utility-types.js +12 -0
- package/dist/es/src/utility-types.js.map +1 -0
- package/dist/src/documents-to-operations.d.ts +18 -0
- package/dist/src/documents-to-operations.d.ts.map +1 -0
- package/dist/src/documents-to-operations.js +207 -0
- package/dist/src/documents-to-operations.js.map +1 -0
- package/dist/src/helpers.d.ts +10 -0
- package/dist/src/helpers.d.ts.map +1 -0
- package/dist/src/helpers.js +96 -0
- package/dist/src/helpers.js.map +1 -0
- package/dist/src/index.d.ts +24 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +366 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/mock-value-generator.d.ts +51 -0
- package/dist/src/mock-value-generator.d.ts.map +1 -0
- package/dist/src/mock-value-generator.js +377 -0
- package/dist/src/mock-value-generator.js.map +1 -0
- package/dist/src/types.d.ts +87 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +9 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utility-types.d.ts +10 -0
- package/dist/src/utility-types.d.ts.map +1 -0
- package/dist/src/utility-types.js +16 -0
- package/dist/src/utility-types.js.map +1 -0
- package/package.json +76 -0
package/README.md
ADDED
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
# @wix/graphql-codegen-ts-builders
|
|
2
|
+
|
|
3
|
+
## Description
|
|
4
|
+
|
|
5
|
+
Enhance your [GraphQL Codegen](https://github.com/dotansimha/graphql-code-generator) workflow with this plugin that generates mock data builders based on your schema and user code operations. This plugin builds upon the capabilities of the existing [graphql-codegen-typescript-mock-data](https://github.com/ardeois/graphql-codegen-typescript-mock-data/tree/main) library.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
Install the plugin using:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
yarn add -D @wix/graphql-codegen-ts-builders
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Configuration
|
|
16
|
+
|
|
17
|
+
Customize the behavior of the mock data builders with the following configuration options:
|
|
18
|
+
|
|
19
|
+
### terminateCircularRelationships (`boolean`, defaultValue: `false`)
|
|
20
|
+
|
|
21
|
+
### listElementCount (`number`, defaultValue: `1`)
|
|
22
|
+
|
|
23
|
+
Specify the number of elements to generate for lists.
|
|
24
|
+
|
|
25
|
+
<br />For more configuration options, refer to the [graphql-codegen-typescript-mock-data](https://github.com/ardeois/graphql-codegen-typescript-mock-data/tree/main)
|
|
26
|
+
|
|
27
|
+
## Usage
|
|
28
|
+
|
|
29
|
+
Install required packages:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
yarn add -D graphql typescript @graphql-codegen/cli @graphql-codegen/client-preset @wix/graphql-codegen-ts-builders
|
|
33
|
+
```
|
|
34
|
+
Then, add the codegen script to your package.json:
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"scripts": {
|
|
39
|
+
"codegen": "graphql-codegen --config ${your-config-file}"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
Now, let's create a configuration file:
|
|
44
|
+
|
|
45
|
+
## Configuration
|
|
46
|
+
|
|
47
|
+
Create the following ```codegen.ts``` configuration file:
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
import type { CodegenConfig } from '@graphql-codegen/cli';
|
|
51
|
+
|
|
52
|
+
const config: CodegenConfig = {
|
|
53
|
+
overwrite: true,
|
|
54
|
+
schema: 'https://www.wix.com/graphql-server/graphql',
|
|
55
|
+
documents: ['src/**/*.ts'],
|
|
56
|
+
ignoreNoDocuments: true,
|
|
57
|
+
generates: {
|
|
58
|
+
'./src/gql/': {
|
|
59
|
+
preset: 'client',
|
|
60
|
+
plugins: ['@wix/graphql-codegen-ts-builders']
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
export default config;
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Example Code
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
import { graphql } from './gql';
|
|
72
|
+
import { aGetProductOperationResponse } from './gql/graphql';
|
|
73
|
+
|
|
74
|
+
const getProductQuery = graphql(`
|
|
75
|
+
query getProduct($id: ID!) {
|
|
76
|
+
metroinspectorV1ProductsProduct(id: $id) {
|
|
77
|
+
id
|
|
78
|
+
title
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
`);
|
|
82
|
+
|
|
83
|
+
const response1 = aGetProductOperationResponse();
|
|
84
|
+
const response2 = aGetProductOperationResponse({ getProduct: { metroinspectorV1ProductsProduct: { id: "12345"} } });
|
|
85
|
+
|
|
86
|
+
console.log(response1);
|
|
87
|
+
// => { getProduct: { metroinspectorV1ProductsProduct: { id: "000", title: "abc" } } }
|
|
88
|
+
|
|
89
|
+
console.log(response2);
|
|
90
|
+
// => { getProduct: { metroinspectorV1ProductsProduct: { id: "12345", title: "abc" } } }
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## More Code Examples
|
|
94
|
+
|
|
95
|
+
**schema.graphql**
|
|
96
|
+
|
|
97
|
+
```graphql
|
|
98
|
+
type Address {
|
|
99
|
+
street: String
|
|
100
|
+
city: String
|
|
101
|
+
postalCode: Int
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
type PersonalInfo {
|
|
105
|
+
id: ID
|
|
106
|
+
name: String
|
|
107
|
+
age: Int
|
|
108
|
+
address: Address
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
type Query {
|
|
112
|
+
getPersonalInfo(id: ID): PersonalInfo
|
|
113
|
+
queryPersonalInfo: [PersonalInfo]
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
type Mutation {
|
|
117
|
+
updatePersonalInfo: PersonalInfo
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Builders Reuse
|
|
122
|
+
|
|
123
|
+
Using the same builder for different operations and getting the relevant result
|
|
124
|
+
|
|
125
|
+
**index.ts**
|
|
126
|
+
```typescript
|
|
127
|
+
import { graphql } from './gql';
|
|
128
|
+
import { aPersonalInfo, aGetPersonalInfoOperationResponse, aQueryPersonalInfoOperationResponse } from './gql/graphql';
|
|
129
|
+
|
|
130
|
+
const getPersonalInfo = graphql(`
|
|
131
|
+
query getPersonalInfo($id: ID!) {
|
|
132
|
+
getPersonalInfo(id: $id) {
|
|
133
|
+
id
|
|
134
|
+
name
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
`);
|
|
138
|
+
|
|
139
|
+
const queryPersonalInfo = graphql(`
|
|
140
|
+
query queryPersonalInfo {
|
|
141
|
+
queryPersonalInfo {
|
|
142
|
+
id
|
|
143
|
+
name
|
|
144
|
+
address {
|
|
145
|
+
street
|
|
146
|
+
city
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
`);
|
|
151
|
+
|
|
152
|
+
const personalInfo = aPersonalInfo({ name: 'joe' });
|
|
153
|
+
|
|
154
|
+
const response1 = aGetPersonalInfoOperationResponse({ getPersonalInfo: personalInfo });
|
|
155
|
+
|
|
156
|
+
const response2 = aQueryPersonalInfoOperationResponse({ queryPersonalInfo: [ personalInfo ] });
|
|
157
|
+
|
|
158
|
+
console.log(personalInfo);
|
|
159
|
+
// => { id: '123', name: 'joe', age: 23, address: { street: 'a', city: 'b', postalCode: '555' } }
|
|
160
|
+
|
|
161
|
+
console.log(response1);
|
|
162
|
+
// => { getPersonalInfo: { id: '123', name: 'joe' } }
|
|
163
|
+
|
|
164
|
+
console.log(response2);
|
|
165
|
+
// => { queryPersonalInfo: [ { id: '123', name: 'joe', address: { street: 'a', city: 'b' } } ] }
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Using Fragments
|
|
169
|
+
|
|
170
|
+
**index.ts**
|
|
171
|
+
```typescript
|
|
172
|
+
import { graphql } from './gql';
|
|
173
|
+
import { anAddress, aGetPersonalInfoOperationResponse, aQueryPersonalInfoOperationResponse } from './gql/graphql';
|
|
174
|
+
|
|
175
|
+
const addressFragment = graphql(`
|
|
176
|
+
fragment AddressFragment on Address {
|
|
177
|
+
city
|
|
178
|
+
street
|
|
179
|
+
}
|
|
180
|
+
`);
|
|
181
|
+
|
|
182
|
+
const getPersonalInfo = graphql(`
|
|
183
|
+
query getPersonalInfo($id: ID!) {
|
|
184
|
+
getPersonalInfo(id: $id) {
|
|
185
|
+
id
|
|
186
|
+
name
|
|
187
|
+
address {
|
|
188
|
+
...AddressFragment
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
`);
|
|
193
|
+
|
|
194
|
+
const address = anAddress({ city: 'Tel Aviv-Yafo' });
|
|
195
|
+
|
|
196
|
+
const response = aGetPersonalInfoOperationResponse({ getPersonalInfo: { id: '777', address } });
|
|
197
|
+
|
|
198
|
+
console.log(address);
|
|
199
|
+
// => { street: 'a', city: 'Tel Aviv-Yafo', postalCode: '555' }
|
|
200
|
+
|
|
201
|
+
console.log(response);
|
|
202
|
+
// => { getPersonalInfo: { id: '777', name: 'joe', address: { street: 'a', city: 'Tel Aviv-Yafo' } } }
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## Next Features
|
|
206
|
+
|
|
207
|
+
- Field alias support
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Types } from '@graphql-codegen/plugin-helpers';
|
|
2
|
+
import { FieldNode, FragmentDefinitionNode, GraphQLObjectType, GraphQLOutputType, GraphQLSchema } from 'graphql';
|
|
3
|
+
import { OperationInfo, OperationData, FragmentData, TypeData } from './types';
|
|
4
|
+
type DocumentFile = Types.DocumentFile;
|
|
5
|
+
export interface DocumentsToOperationsResult {
|
|
6
|
+
operations: OperationData[];
|
|
7
|
+
fragments: FragmentData[];
|
|
8
|
+
}
|
|
9
|
+
export interface SimplifyOperationsDataResult {
|
|
10
|
+
queries: OperationInfo[];
|
|
11
|
+
mutations: OperationInfo[];
|
|
12
|
+
}
|
|
13
|
+
export declare function getTypeName(type: GraphQLOutputType): string;
|
|
14
|
+
export declare function selectionNodeToTypeData(node: FieldNode | FragmentDefinitionNode, schema: GraphQLSchema, typeName: string, parentType: GraphQLObjectType): TypeData;
|
|
15
|
+
export declare function documentsToOperations(documents: DocumentFile[], schema: GraphQLSchema): DocumentsToOperationsResult;
|
|
16
|
+
export declare function simplifyOperationsData(operationsData: OperationData[], fragments?: FragmentData[]): SimplifyOperationsDataResult;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=documents-to-operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documents-to-operations.d.ts","sourceRoot":"","sources":["../../../src/documents-to-operations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAExD,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EAQd,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,EACZ,QAAQ,EAIT,MAAM,SAAS,CAAC;AAEjB,KAAK,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;AAEvC,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,SAAS,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAM3D;AAcD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,SAAS,GAAG,sBAAsB,EACxC,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,iBAAiB,GAC5B,QAAQ,CAqEV;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,YAAY,EAAE,EACzB,MAAM,EAAE,aAAa,GACpB,2BAA2B,CAuG7B;AAED,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,aAAa,EAAE,EAC/B,SAAS,GAAE,YAAY,EAAO,GAC7B,4BAA4B,CAsB9B"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { __assign, __rest, __spreadArray } from "tslib";
|
|
2
|
+
import { isListType, isNonNullType, isObjectType, Kind, parse, visit, } from 'graphql';
|
|
3
|
+
import { OperationKind, } from './types';
|
|
4
|
+
export function getTypeName(type) {
|
|
5
|
+
return isListType(type)
|
|
6
|
+
? isNonNullType(type.ofType)
|
|
7
|
+
? getTypeName(type.ofType)
|
|
8
|
+
: type.ofType.name
|
|
9
|
+
: type.name;
|
|
10
|
+
}
|
|
11
|
+
function getRootType(operation, schema) {
|
|
12
|
+
switch (operation) {
|
|
13
|
+
case 'query':
|
|
14
|
+
return schema.getQueryType();
|
|
15
|
+
case 'mutation':
|
|
16
|
+
return schema.getMutationType();
|
|
17
|
+
case 'subscription':
|
|
18
|
+
return schema.getSubscriptionType();
|
|
19
|
+
}
|
|
20
|
+
throw new Error("Unknown operation type: ".concat(operation));
|
|
21
|
+
}
|
|
22
|
+
export function selectionNodeToTypeData(node, schema, typeName, parentType) {
|
|
23
|
+
var typeData = {
|
|
24
|
+
name: typeName,
|
|
25
|
+
selections: [],
|
|
26
|
+
fragments: [],
|
|
27
|
+
};
|
|
28
|
+
var _a = node.selectionSet.selections.reduce(function (selectionsAndFragments, selectionNode) {
|
|
29
|
+
if (selectionNode.kind !== Kind.FIELD &&
|
|
30
|
+
selectionNode.kind !== Kind.FRAGMENT_SPREAD) {
|
|
31
|
+
return selectionsAndFragments;
|
|
32
|
+
}
|
|
33
|
+
if (selectionNode.kind === Kind.FRAGMENT_SPREAD) {
|
|
34
|
+
selectionsAndFragments.fragments.push(selectionNode.name.value);
|
|
35
|
+
return selectionsAndFragments;
|
|
36
|
+
}
|
|
37
|
+
var fieldType = (isListType(parentType)
|
|
38
|
+
? parentType.ofType
|
|
39
|
+
: parentType).getFields()[selectionNode.name.value].type;
|
|
40
|
+
var fieldTypeNme = getTypeName(fieldType);
|
|
41
|
+
var fieldTypeData = {
|
|
42
|
+
name: fieldTypeNme,
|
|
43
|
+
selections: [],
|
|
44
|
+
fragments: [],
|
|
45
|
+
};
|
|
46
|
+
selectionsAndFragments.selections.push({
|
|
47
|
+
name: selectionNode.name.value,
|
|
48
|
+
type: fieldTypeData,
|
|
49
|
+
isList: isListType(fieldType),
|
|
50
|
+
});
|
|
51
|
+
if (isObjectType(fieldType) ||
|
|
52
|
+
(isListType(fieldType) && isObjectType(fieldType.ofType))) {
|
|
53
|
+
var result = selectionNodeToTypeData(selectionNode, schema, fieldTypeNme, fieldType);
|
|
54
|
+
fieldTypeData.selections = result.selections;
|
|
55
|
+
fieldTypeData.fragments = result.fragments;
|
|
56
|
+
}
|
|
57
|
+
return selectionsAndFragments;
|
|
58
|
+
}, { selections: [], fragments: [] }), selections = _a.selections, fragments = _a.fragments;
|
|
59
|
+
typeData.selections = selections;
|
|
60
|
+
typeData.fragments = fragments;
|
|
61
|
+
return typeData;
|
|
62
|
+
}
|
|
63
|
+
export function documentsToOperations(documents, schema) {
|
|
64
|
+
var operationsData = [];
|
|
65
|
+
var fragmentsData = [];
|
|
66
|
+
documents.forEach(function (doc) {
|
|
67
|
+
if (!doc.rawSDL) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
var astNode = parse(doc.rawSDL);
|
|
71
|
+
var visitor = {
|
|
72
|
+
schema: schema,
|
|
73
|
+
unnamedCounter: 0,
|
|
74
|
+
convertName: function (name, _a) {
|
|
75
|
+
var _b = _a === void 0 ? { prefix: '' } : _a, prefix = _b.prefix;
|
|
76
|
+
return "".concat(prefix).concat(name);
|
|
77
|
+
},
|
|
78
|
+
handleAnonymousOperation: function (node) {
|
|
79
|
+
var _a;
|
|
80
|
+
var name = (_a = node.name) === null || _a === void 0 ? void 0 : _a.value;
|
|
81
|
+
if (name) {
|
|
82
|
+
return this.convertName(name);
|
|
83
|
+
}
|
|
84
|
+
return this.convertName(String(this.unnamedCounter++), {
|
|
85
|
+
prefix: 'Unnamed_',
|
|
86
|
+
});
|
|
87
|
+
},
|
|
88
|
+
FragmentDefinition: function (node) {
|
|
89
|
+
var fragmentTypeName = node.typeCondition.name.value;
|
|
90
|
+
var type = schema.getType(fragmentTypeName);
|
|
91
|
+
var typeData = selectionNodeToTypeData(node, schema, fragmentTypeName, type);
|
|
92
|
+
var fragmentData = {
|
|
93
|
+
name: node.name.value,
|
|
94
|
+
rootTypeName: fragmentTypeName,
|
|
95
|
+
selections: typeData.selections,
|
|
96
|
+
fragments: typeData.fragments,
|
|
97
|
+
};
|
|
98
|
+
fragmentsData.push(fragmentData);
|
|
99
|
+
return fragmentData;
|
|
100
|
+
},
|
|
101
|
+
OperationDefinition: function (node) {
|
|
102
|
+
var name = this.handleAnonymousOperation(node);
|
|
103
|
+
var operationRootType = getRootType(node.operation, this.schema);
|
|
104
|
+
if (!operationRootType) {
|
|
105
|
+
throw new Error("Unable to find root schema type for operation type \"".concat(node.operation, "\"!"));
|
|
106
|
+
}
|
|
107
|
+
var operation = node.selectionSet.selections.reduce(function (operationData, field) {
|
|
108
|
+
var _a;
|
|
109
|
+
field = field;
|
|
110
|
+
var fieldName = field.name.value;
|
|
111
|
+
var graphqlField = operationRootType.getFields()[fieldName];
|
|
112
|
+
var fieldType = graphqlField.type;
|
|
113
|
+
var fieldTypeName = getTypeName(fieldType);
|
|
114
|
+
operationData.selections.push({
|
|
115
|
+
name: fieldName,
|
|
116
|
+
type: selectionNodeToTypeData(field, schema, fieldTypeName, fieldType),
|
|
117
|
+
typeNode: (_a = graphqlField.astNode) === null || _a === void 0 ? void 0 : _a.type,
|
|
118
|
+
isList: isListType(fieldType),
|
|
119
|
+
});
|
|
120
|
+
return operationData;
|
|
121
|
+
}, {
|
|
122
|
+
name: name,
|
|
123
|
+
kind: OperationKind.QUERY,
|
|
124
|
+
selections: [],
|
|
125
|
+
});
|
|
126
|
+
operationsData.push(operation);
|
|
127
|
+
return operation;
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
visit(astNode, visitor);
|
|
131
|
+
});
|
|
132
|
+
return {
|
|
133
|
+
operations: operationsData,
|
|
134
|
+
fragments: fragmentsData,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
export function simplifyOperationsData(operationsData, fragments) {
|
|
138
|
+
if (fragments === void 0) { fragments = []; }
|
|
139
|
+
return operationsData.reduce(function (operations, operation) {
|
|
140
|
+
var simplifiedOperation = {
|
|
141
|
+
name: operation.name,
|
|
142
|
+
type: operation.kind,
|
|
143
|
+
selections: simplifySelections(operation.selections, fragments),
|
|
144
|
+
};
|
|
145
|
+
if (operation.kind === OperationKind.QUERY) {
|
|
146
|
+
operations.queries.push(simplifiedOperation);
|
|
147
|
+
}
|
|
148
|
+
else if (operation.kind === OperationKind.MUTATION) {
|
|
149
|
+
operations.mutations.push(simplifiedOperation);
|
|
150
|
+
}
|
|
151
|
+
return operations;
|
|
152
|
+
}, {
|
|
153
|
+
queries: [],
|
|
154
|
+
mutations: [],
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
function simplifySelections(selections, fragments) {
|
|
158
|
+
if (fragments === void 0) { fragments = []; }
|
|
159
|
+
return selections.map(function (_a) {
|
|
160
|
+
var type = _a.type, info = __rest(_a, ["type"]);
|
|
161
|
+
if (type.selections.length === 0 && type.fragments.length === 0) {
|
|
162
|
+
return __assign(__assign({}, info), { type: {
|
|
163
|
+
name: type.name,
|
|
164
|
+
selections: [],
|
|
165
|
+
} });
|
|
166
|
+
}
|
|
167
|
+
var typeSelections = __spreadArray([], type.selections, true);
|
|
168
|
+
if (type.fragments.length > 0) {
|
|
169
|
+
for (var _i = 0, _b = type.fragments; _i < _b.length; _i++) {
|
|
170
|
+
var fragName = _b[_i];
|
|
171
|
+
typeSelections.push.apply(typeSelections, resolveFragmentSelections(fragName, fragments));
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return __assign(__assign({}, info), { type: {
|
|
175
|
+
name: type.name,
|
|
176
|
+
selections: simplifySelections(typeSelections, fragments),
|
|
177
|
+
} });
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
function resolveFragmentSelections(fragmentName, fragments) {
|
|
181
|
+
var fragment = fragments.find(function (_a) {
|
|
182
|
+
var name = _a.name;
|
|
183
|
+
return name === fragmentName;
|
|
184
|
+
});
|
|
185
|
+
if (!fragment) {
|
|
186
|
+
return [];
|
|
187
|
+
}
|
|
188
|
+
var selections = [];
|
|
189
|
+
if (fragment.selections.length > 0) {
|
|
190
|
+
selections.push.apply(selections, fragment.selections);
|
|
191
|
+
}
|
|
192
|
+
if (fragment.fragments.length > 0) {
|
|
193
|
+
for (var _i = 0, _a = fragment.fragments; _i < _a.length; _i++) {
|
|
194
|
+
var fragName = _a[_i];
|
|
195
|
+
selections.push.apply(selections, resolveFragmentSelections(fragName, fragments));
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return selections;
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=documents-to-operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documents-to-operations.js","sourceRoot":"","sources":["../../../src/documents-to-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { OperationInfo, TypeInfo, PickedFields, NamingConvention } from './types';
|
|
2
|
+
export declare function hashedString(value: string): number;
|
|
3
|
+
export declare function convertName(value: string, fn: (v: string) => string, transformUnderscore: boolean): string;
|
|
4
|
+
export declare function createNameConverter(convention: NamingConvention, transformUnderscore: boolean): (value: string, prefix?: string) => string;
|
|
5
|
+
export declare function toMockName(typedName: string, casedName: string, prefix?: string): string;
|
|
6
|
+
export declare function toOperationMockName(operation: OperationInfo): string;
|
|
7
|
+
export declare function operationToOperationType(operation: OperationInfo): string;
|
|
8
|
+
export declare function calculatePickedFields(type: TypeInfo): PickedFields;
|
|
9
|
+
export declare function calculatePickedFieldsNames(type: TypeInfo): string[];
|
|
10
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/helpers.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,UAazC;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EACzB,mBAAmB,EAAE,OAAO,GAC3B,MAAM,CASR;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,gBAAgB,EAC5B,mBAAmB,EAAE,OAAO,WAEb,MAAM,6BAUtB;AAED,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,UAOhB;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,aAAa,UAK3D;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,aAAa,GAAG,MAAM,CAqBzE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,QAAQ,GAAG,YAAY,CAUlE;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CAcnE"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import a from 'indefinite';
|
|
2
|
+
import { sentenceCase } from 'sentence-case';
|
|
3
|
+
import { resolveExternalModuleAndFn } from '@graphql-codegen/plugin-helpers';
|
|
4
|
+
export function hashedString(value) {
|
|
5
|
+
var hash = 0;
|
|
6
|
+
if (value.length === 0) {
|
|
7
|
+
return hash;
|
|
8
|
+
}
|
|
9
|
+
for (var i = 0; i < value.length; i++) {
|
|
10
|
+
var char = value.charCodeAt(i);
|
|
11
|
+
// eslint-disable-next-line no-bitwise
|
|
12
|
+
hash = (hash << 5) - hash + char;
|
|
13
|
+
// eslint-disable-next-line no-bitwise
|
|
14
|
+
hash = hash & hash; // Convert to 32bit integer
|
|
15
|
+
}
|
|
16
|
+
return hash;
|
|
17
|
+
}
|
|
18
|
+
export function convertName(value, fn, transformUnderscore) {
|
|
19
|
+
if (transformUnderscore) {
|
|
20
|
+
return fn(value);
|
|
21
|
+
}
|
|
22
|
+
return value
|
|
23
|
+
.split('_')
|
|
24
|
+
.map(function (s) { return fn(s); })
|
|
25
|
+
.join('_');
|
|
26
|
+
}
|
|
27
|
+
export function createNameConverter(convention, transformUnderscore) {
|
|
28
|
+
return function (value, prefix) {
|
|
29
|
+
if (prefix === void 0) { prefix = ''; }
|
|
30
|
+
if (convention === 'keep') {
|
|
31
|
+
return "".concat(prefix).concat(value);
|
|
32
|
+
}
|
|
33
|
+
return "".concat(prefix).concat(convertName(value, resolveExternalModuleAndFn(convention), transformUnderscore));
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export function toMockName(typedName, casedName, prefix) {
|
|
37
|
+
if (prefix) {
|
|
38
|
+
return "".concat(prefix).concat(casedName);
|
|
39
|
+
}
|
|
40
|
+
var firstWord = sentenceCase(typedName).split(' ')[0];
|
|
41
|
+
return "".concat(a(firstWord, { articleOnly: true })).concat(casedName);
|
|
42
|
+
}
|
|
43
|
+
export function toOperationMockName(operation) {
|
|
44
|
+
return "".concat(operation.name.slice(0, 1).toUpperCase()).concat(operation.name.slice(1, operation.name.length), "Operation");
|
|
45
|
+
}
|
|
46
|
+
export function operationToOperationType(operation) {
|
|
47
|
+
var operationType = "export type ".concat(toOperationMockName(operation), " = DeepPick<{\n");
|
|
48
|
+
var fields = operation.selections.reduce(function (operationFields, _a) {
|
|
49
|
+
var name = _a.name, type = _a.type, isList = _a.isList;
|
|
50
|
+
operationFields += " ".concat(name, ": ").concat(isList ? "".concat(type.name, "[]") : type.name, ";\n");
|
|
51
|
+
return operationFields;
|
|
52
|
+
}, "");
|
|
53
|
+
var pickedFieldsNames = calculatePickedFieldsNames(operation);
|
|
54
|
+
return "".concat(operationType).concat(fields, "}, ").concat(pickedFieldsNames
|
|
55
|
+
.map(function (x) { return "'".concat(x, "'\n"); })
|
|
56
|
+
.join(' | '), ">");
|
|
57
|
+
}
|
|
58
|
+
export function calculatePickedFields(type) {
|
|
59
|
+
return type.selections.reduce(function (pickedFields, selection) {
|
|
60
|
+
if (selection.type.selections.length === 0) {
|
|
61
|
+
pickedFields.set(selection.name, undefined);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
pickedFields.set(selection.name, calculatePickedFields(selection.type));
|
|
65
|
+
}
|
|
66
|
+
return pickedFields;
|
|
67
|
+
}, new Map());
|
|
68
|
+
}
|
|
69
|
+
export function calculatePickedFieldsNames(type) {
|
|
70
|
+
return type.selections.reduce(function (pickedFields, selection) {
|
|
71
|
+
if (selection.type.selections.length === 0) {
|
|
72
|
+
pickedFields.push(selection.name);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
var nestedPickedFields = calculatePickedFieldsNames(selection.type);
|
|
76
|
+
for (var _i = 0, nestedPickedFields_1 = nestedPickedFields; _i < nestedPickedFields_1.length; _i++) {
|
|
77
|
+
var fieldName = nestedPickedFields_1[_i];
|
|
78
|
+
pickedFields.push("".concat(selection.name, ".").concat(fieldName));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return pickedFields;
|
|
82
|
+
}, []);
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,YAAY,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAQ7E,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,OAAO,IAAI,CAAC;KACb;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,IAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACjC,sCAAsC;QACtC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;QACjC,sCAAsC;QACtC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,2BAA2B;KAChD;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,KAAa,EACb,EAAyB,EACzB,mBAA4B;IAE5B,IAAI,mBAAmB,EAAE;QACvB,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;KAClB;IAED,OAAO,KAAK;SACT,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,EAAE,CAAC,CAAC,CAAC,EAAL,CAAK,CAAC;SACjB,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,UAA4B,EAC5B,mBAA4B;IAE5B,OAAO,UAAC,KAAa,EAAE,MAAW;QAAX,uBAAA,EAAA,WAAW;QAChC,IAAI,UAAU,KAAK,MAAM,EAAE;YACzB,OAAO,UAAG,MAAM,SAAG,KAAK,CAAE,CAAC;SAC5B;QACD,OAAO,UAAG,MAAM,SAAG,WAAW,CAC5B,KAAK,EACL,0BAA0B,CAAC,UAAU,CAAC,EACtC,mBAAmB,CACpB,CAAE,CAAC;IACN,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,SAAiB,EACjB,SAAiB,EACjB,MAAe;IAEf,IAAI,MAAM,EAAE;QACV,OAAO,UAAG,MAAM,SAAG,SAAS,CAAE,CAAC;KAChC;IACD,IAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,OAAO,UAAG,CAAC,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,SAAG,SAAS,CAAE,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,SAAwB;IAC1D,OAAO,UAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,SAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CACvE,CAAC,EACD,SAAS,CAAC,IAAI,CAAC,MAAM,CACtB,cAAW,CAAC;AACf,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,SAAwB;IAC/D,IAAM,aAAa,GAAG,sBAAe,mBAAmB,CACtD,SAAS,CACV,oBAAiB,CAAC;IAEnB,IAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CACxC,UAAC,eAAe,EAAE,EAAsB;YAApB,IAAI,UAAA,EAAE,IAAI,UAAA,EAAE,MAAM,YAAA;QACpC,eAAe,IAAI,YAAK,IAAI,eAC1B,MAAM,CAAC,CAAC,CAAC,UAAG,IAAI,CAAC,IAAI,OAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,QAClC,CAAC;QAEN,OAAO,eAAe,CAAC;IACzB,CAAC,EACD,EAAE,CACH,CAAC;IAEF,IAAM,iBAAiB,GAAG,0BAA0B,CAAC,SAAS,CAAC,CAAC;IAEhE,OAAO,UAAG,aAAa,SAAG,MAAM,gBAAM,iBAAiB;SACpD,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,WAAI,CAAC,QAAK,EAAV,CAAU,CAAC;SACtB,IAAI,CAAC,KAAK,CAAC,MAAG,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAc;IAClD,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAC,YAAY,EAAE,SAAS;QACpD,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1C,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;SAC7C;aAAM;YACL,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;SACzE;QAED,OAAO,YAAY,CAAC;IACtB,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,IAAc;IACvD,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAC,YAAY,EAAE,SAAS;QACpD,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1C,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SACnC;aAAM;YACL,IAAM,kBAAkB,GAAG,0BAA0B,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAEtE,KAAwB,UAAkB,EAAlB,yCAAkB,EAAlB,gCAAkB,EAAlB,IAAkB,EAAE;gBAAvC,IAAM,SAAS,2BAAA;gBAClB,YAAY,CAAC,IAAI,CAAC,UAAG,SAAS,CAAC,IAAI,cAAI,SAAS,CAAE,CAAC,CAAC;aACrD;SACF;QAED,OAAO,YAAY,CAAC;IACtB,CAAC,EAAE,EAAc,CAAC,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { NamingConvention, ScalarMap, TypeFieldMap } from './types';
|
|
2
|
+
import { PluginFunction } from '@graphql-codegen/plugin-helpers';
|
|
3
|
+
export interface TypescriptMocksPluginConfig {
|
|
4
|
+
typesFile?: string;
|
|
5
|
+
enumValues?: NamingConvention;
|
|
6
|
+
typeNames?: NamingConvention;
|
|
7
|
+
addTypename?: boolean;
|
|
8
|
+
prefix?: string;
|
|
9
|
+
scalars?: ScalarMap;
|
|
10
|
+
terminateCircularRelationships?: boolean;
|
|
11
|
+
typesPrefix?: string;
|
|
12
|
+
enumsPrefix?: string;
|
|
13
|
+
transformUnderscore?: boolean;
|
|
14
|
+
listElementCount?: number;
|
|
15
|
+
dynamicValues?: boolean;
|
|
16
|
+
generateLibrary?: 'casual' | 'faker';
|
|
17
|
+
fieldGeneration?: TypeFieldMap;
|
|
18
|
+
locale?: string;
|
|
19
|
+
enumsAsTypes?: boolean;
|
|
20
|
+
useImplementingTypes?: boolean;
|
|
21
|
+
defaultNullableToNull?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export declare const plugin: PluginFunction<TypescriptMocksPluginConfig>;
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,gBAAgB,EAChB,SAAS,EACT,YAAY,EAGb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAY,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAkH3E,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACrC,eAAe,CAAC,EAAE,YAAY,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAKD,eAAO,MAAM,MAAM,EAAE,cAAc,CAAC,2BAA2B,CA2Y9D,CAAC"}
|