-
Notifications
You must be signed in to change notification settings - Fork 81
/
api-types.ts
42 lines (37 loc) · 1.07 KB
/
api-types.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import fs from 'fs';
import {apiConfigs} from './helpers/api-configs';
import {preset} from './preset';
import {getSchemaData} from './helpers/get-schema-data';
import type {ShopifyApiTypesOptions} from './types';
export const shopifyApiTypes = ({
apiType,
apiVersion,
outputDir = '.',
documents = ['**/*.{ts,tsx}', '!**/node_modules'],
module,
}: ShopifyApiTypesOptions) => {
const config = apiConfigs[apiType];
const {schema, schemaFile} = getSchemaData(outputDir, apiType, apiVersion);
const schemaFileExists = fs.existsSync(`${schemaFile}`);
return {
...(schemaFileExists
? {}
: {
[schemaFile]: {
schema,
plugins: ['introspection'],
config: {minify: true},
},
}),
[`${outputDir}/${config.typesFile}`]: {
schema: schemaFileExists ? schemaFile : schema,
plugins: ['typescript'],
},
[`${outputDir}/${config.queryTypesFile}`]: {
schema: schemaFileExists ? schemaFile : schema,
preset,
documents,
presetConfig: {apiType, module},
},
};
};