@eddeee888/gcg-typescript-resolver-files 0.0.4 → 0.0.6
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 +14 -19
- package/package.json +1 -1
- package/src/preset.d.ts +6 -6
- package/src/preset.js +29 -19
- package/src/preset.js.map +1 -1
- package/src/run/checkIfModuleIsWhitelisted.d.ts +7 -0
- package/src/run/checkIfModuleIsWhitelisted.js +16 -0
- package/src/run/checkIfModuleIsWhitelisted.js.map +1 -0
- package/src/run/visitNamedType.js +13 -8
- package/src/run/visitNamedType.js.map +1 -1
- package/src/types.d.ts +1 -0
package/README.md
CHANGED
|
@@ -10,21 +10,16 @@ yarn add -D @eddeee888/gcg-typescript-resolver-files
|
|
|
10
10
|
|
|
11
11
|
## Features
|
|
12
12
|
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
- Detects missing / wrong resolver exports and adds them to
|
|
16
|
-
-
|
|
13
|
+
- Generates opinionated folder/file structure with type-safety in mind to help finding query, mutation or object types easily
|
|
14
|
+
- Does _NOT_ overwrite existing resolver logic
|
|
15
|
+
- Detects missing / wrong resolver exports and adds them to resolver files
|
|
16
|
+
- Automatically sets up GraphQL Scalars with types and config from [graphql-scalars](https://github.com/Urigo/graphql-scalars) with ability to opt-out
|
|
17
17
|
|
|
18
18
|
## Example
|
|
19
19
|
|
|
20
20
|
```yml
|
|
21
21
|
schema: '**/*.graphqls'
|
|
22
22
|
generates:
|
|
23
|
-
src/graphql/resolvers/types.generated.ts:
|
|
24
|
-
plugins:
|
|
25
|
-
- typescript
|
|
26
|
-
- typescript-resolvers
|
|
27
|
-
|
|
28
23
|
src/graphql/resolvers:
|
|
29
24
|
preset: '@eddeee888/gcg-typescript-resolver-files'
|
|
30
25
|
presetConfig:
|
|
@@ -33,13 +28,13 @@ generates:
|
|
|
33
28
|
|
|
34
29
|
## Config
|
|
35
30
|
|
|
36
|
-
| Name
|
|
37
|
-
|
|
|
38
|
-
| `resolverTypesPath`
|
|
39
|
-
| `mode`
|
|
40
|
-
| `relativeTargetDir`
|
|
41
|
-
| `mainFile`
|
|
42
|
-
| `whitelistedModules`
|
|
43
|
-
| `
|
|
44
|
-
| `
|
|
45
|
-
| `
|
|
31
|
+
| Name | Type | Description |
|
|
32
|
+
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
33
|
+
| `resolverTypesPath` | `string` | (Required) Relative path to type file generated by `typescript-resolvers` plugin. |
|
|
34
|
+
| `mode` | `merged` or `modules` | (Default: `modules`) How files are collocated. `modules` detects containing dir of a schema file as "modules", then split resolvers into those modules. `merged` treats `baseOutputDir` as the one and only module and generates resolvers. |
|
|
35
|
+
| `relativeTargetDir` | `string` | Relative path to target dir. For `config.mode=merged`, files will be generated into `<baseOutputDir>/<relativeTargetDir>`. For `config.mode=modules`, files will be generated into `<baseOutputDir>/<moduleName>/<relativeTargetDir>` |
|
|
36
|
+
| `mainFile` | `string` | File that puts all generated resolvers together. Relative from `baseOutputDir` |
|
|
37
|
+
| `whitelistedModules` | `Array<string>` | (Only works with `config.mode=modules`) Whitelists modules to generate files and entries in main file. By default all modules are whitelisted. Useful for gradual migrations. |
|
|
38
|
+
| `blacklistedModules` | `Array<string>` | (Only works with `config.mode=modules`) Blacklists modules to avoid generate files and entries in main file. Useful for gradual migrations. |
|
|
39
|
+
| `externalResolvers` | `Record<string, string>` | Map of relative or absolute path (prefixed with `~`) to external or existing resolvers. e.g. `DateTime: ~graphql-scalars#DateTimeResolver`, `Query.me: '~@org/meResolver#default as meResolver'`, `User: 'otherResolvers#User as UserResolver'`. |
|
|
40
|
+
| `typesPluginsConfig` | `(@graphql-codegen/typescript).TypeScriptPluginConfig & (@graphql-codegen/typescript-resolvers).TypeScriptResolversPluginConfig` | Takes [typescript config](https://www.the-guild.dev/graphql/codegen/plugins/typescript/typescript) and [typescript-resolvers config](https://www.the-guild.dev/graphql/codegen/plugins/typescript/typescript-resolvers) to override the defaults |
|
package/package.json
CHANGED
package/src/preset.d.ts
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import * as typeScriptPlugin from '@graphql-codegen/typescript';
|
|
2
2
|
import * as typeScriptResolversPlugin from '@graphql-codegen/typescript-resolvers';
|
|
3
3
|
import type { Types } from '@graphql-codegen/plugin-helpers';
|
|
4
|
-
|
|
4
|
+
declare type ParsedTypesPluginsConfig = Omit<typeScriptPlugin.TypeScriptPluginConfig, 'scalars'> & Omit<typeScriptResolversPlugin.TypeScriptResolversPluginConfig, 'scalars'> & {
|
|
5
5
|
scalars: Record<string, string>;
|
|
6
|
-
}
|
|
6
|
+
};
|
|
7
7
|
interface ParsedPresetConfig {
|
|
8
8
|
resolverTypesPath: string;
|
|
9
9
|
relativeTargetDir: string;
|
|
10
10
|
mainFile: string;
|
|
11
11
|
mode: 'merged' | 'modules';
|
|
12
12
|
whitelistedModules: string[];
|
|
13
|
+
blacklistedModules: string[];
|
|
13
14
|
externalResolvers: Record<string, string>;
|
|
14
|
-
|
|
15
|
-
typeScriptResolversPluginConfig: typeScriptResolversPlugin.TypeScriptResolversPluginConfig;
|
|
15
|
+
typesPluginsConfig: ParsedTypesPluginsConfig;
|
|
16
16
|
}
|
|
17
17
|
export declare const preset: Types.OutputPreset<ParsedPresetConfig>;
|
|
18
18
|
export interface TypeScriptResolverFilesPresetConfig {
|
|
@@ -21,8 +21,8 @@ export interface TypeScriptResolverFilesPresetConfig {
|
|
|
21
21
|
mainFile?: string;
|
|
22
22
|
mode?: string;
|
|
23
23
|
whitelistedModules?: string[];
|
|
24
|
+
blacklistedModules?: string[];
|
|
24
25
|
externalResolvers?: Record<string, string>;
|
|
25
|
-
|
|
26
|
-
typeScriptResolversPluginConfig?: typeScriptResolversPlugin.TypeScriptResolversPluginConfig;
|
|
26
|
+
typesPluginsConfig?: typeScriptPlugin.TypeScriptPluginConfig & typeScriptResolversPlugin.TypeScriptResolversPluginConfig;
|
|
27
27
|
}
|
|
28
28
|
export {};
|
package/src/preset.js
CHANGED
|
@@ -8,6 +8,7 @@ const typeScriptResolversPlugin = require("@graphql-codegen/typescript-resolvers
|
|
|
8
8
|
const graphql_scalars_1 = require("graphql-scalars");
|
|
9
9
|
const utils_1 = require("./utils");
|
|
10
10
|
const run_1 = require("./run");
|
|
11
|
+
const graphql_1 = require("graphql");
|
|
11
12
|
const presetName = '@eddeee888/gcg-typescript-resolver-files';
|
|
12
13
|
exports.preset = {
|
|
13
14
|
buildGeneratesSection: ({ schema, schemaAst, presetConfig: rawPresetConfig, baseOutputDir, }) => {
|
|
@@ -19,15 +20,22 @@ exports.preset = {
|
|
|
19
20
|
throw new Error('Empty Sources. Make sure schema files are parsed correctly.');
|
|
20
21
|
}
|
|
21
22
|
const sourcesMap = (0, utils_1.parseSources)(sources);
|
|
22
|
-
const { resolverTypesPath: relativeResolverTypesPathFromBaseOutputDir, relativeTargetDir, mainFile, mode, whitelistedModules,
|
|
23
|
+
const { resolverTypesPath: relativeResolverTypesPathFromBaseOutputDir, relativeTargetDir, mainFile, mode, whitelistedModules, blacklistedModules, externalResolvers, typesPluginsConfig, } = validatePresetConfig(rawPresetConfig);
|
|
23
24
|
// typescript and typescript-resolvers
|
|
24
|
-
const { defaultScalarTypesMap, defaultScalarExternalResolvers } = Object.entries(
|
|
25
|
+
const { defaultScalarTypesMap, defaultScalarExternalResolvers } = Object.entries(schemaAst.getTypeMap()).reduce((res, [schemaType, namedType]) => {
|
|
26
|
+
if (!(0, graphql_1.isScalarType)(namedType)) {
|
|
27
|
+
return res;
|
|
28
|
+
}
|
|
29
|
+
const scalarResolver = graphql_scalars_1.resolvers[schemaType];
|
|
30
|
+
if (!scalarResolver) {
|
|
31
|
+
return res;
|
|
32
|
+
}
|
|
25
33
|
if (scalarResolver.extensions.codegenScalarType &&
|
|
26
34
|
typeof scalarResolver.extensions.codegenScalarType === 'string') {
|
|
27
|
-
res.defaultScalarTypesMap[
|
|
35
|
+
res.defaultScalarTypesMap[schemaType] =
|
|
28
36
|
scalarResolver.extensions.codegenScalarType;
|
|
29
37
|
}
|
|
30
|
-
res.defaultScalarExternalResolvers[
|
|
38
|
+
res.defaultScalarExternalResolvers[schemaType] = `~graphql-scalars#${scalarResolver.name}Resolver`;
|
|
31
39
|
return res;
|
|
32
40
|
}, { defaultScalarTypesMap: {}, defaultScalarExternalResolvers: {} });
|
|
33
41
|
const resolverTypesFile = {
|
|
@@ -36,15 +44,8 @@ exports.preset = {
|
|
|
36
44
|
typescript: typeScriptPlugin,
|
|
37
45
|
'typescript-resolvers': typeScriptResolversPlugin,
|
|
38
46
|
},
|
|
39
|
-
plugins: [
|
|
40
|
-
|
|
41
|
-
typescript: Object.assign(Object.assign({ enumsAsTypes: true, nonOptionalTypename: true }, typeScriptPluginConfig), { scalars: Object.assign(Object.assign({}, defaultScalarTypesMap), typeScriptPluginConfig.scalars) }),
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
['typescript-resolvers']: Object.assign({}, typeScriptResolversPluginConfig),
|
|
45
|
-
},
|
|
46
|
-
],
|
|
47
|
-
config: {},
|
|
47
|
+
plugins: [{ typescript: {} }, { ['typescript-resolvers']: {} }],
|
|
48
|
+
config: Object.assign(Object.assign({ enumsAsTypes: true, nonOptionalTypename: true }, typesPluginsConfig), { scalars: Object.assign(Object.assign({}, defaultScalarTypesMap), typesPluginsConfig.scalars) }),
|
|
48
49
|
schema,
|
|
49
50
|
documents: [],
|
|
50
51
|
};
|
|
@@ -63,6 +64,7 @@ exports.preset = {
|
|
|
63
64
|
mainFile,
|
|
64
65
|
mode,
|
|
65
66
|
whitelistedModules,
|
|
67
|
+
blacklistedModules,
|
|
66
68
|
externalResolvers: Object.assign(Object.assign({}, defaultScalarExternalResolvers), externalResolvers),
|
|
67
69
|
},
|
|
68
70
|
result,
|
|
@@ -80,7 +82,7 @@ exports.preset = {
|
|
|
80
82
|
return generatesSection;
|
|
81
83
|
},
|
|
82
84
|
};
|
|
83
|
-
const validatePresetConfig = ({ resolverTypesPath, relativeTargetDir = '', mainFile = 'index.ts', mode = 'modules', whitelistedModules,
|
|
85
|
+
const validatePresetConfig = ({ resolverTypesPath, relativeTargetDir = '', mainFile = 'index.ts', mode = 'modules', whitelistedModules, blacklistedModules, externalResolvers = {}, typesPluginsConfig = {}, }) => {
|
|
84
86
|
if (!resolverTypesPath) {
|
|
85
87
|
throw new Error(`Validation Error - ${presetName} - presetConfig.resolverTypesPath is required`);
|
|
86
88
|
}
|
|
@@ -98,7 +100,15 @@ const validatePresetConfig = ({ resolverTypesPath, relativeTargetDir = '', mainF
|
|
|
98
100
|
throw new Error(`Validation Error - ${presetName} - presetConfig.whitelistedModules can only be used with presetConfig.mode == "modules"`);
|
|
99
101
|
}
|
|
100
102
|
}
|
|
101
|
-
if (
|
|
103
|
+
if (blacklistedModules) {
|
|
104
|
+
if (!Array.isArray(blacklistedModules)) {
|
|
105
|
+
throw new Error(`Validation Error - ${presetName} - presetConfig.blacklistedModules must be an array if provided`);
|
|
106
|
+
}
|
|
107
|
+
if (mode !== 'modules') {
|
|
108
|
+
throw new Error(`Validation Error - ${presetName} - presetConfig.blacklistedModules can only be used with presetConfig.mode == "modules"`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (!validateTypesPluginsConfig(typesPluginsConfig)) {
|
|
102
112
|
throw new Error('Invalid typescriptPluginConfig. Should not see this.');
|
|
103
113
|
}
|
|
104
114
|
return {
|
|
@@ -107,15 +117,15 @@ const validatePresetConfig = ({ resolverTypesPath, relativeTargetDir = '', mainF
|
|
|
107
117
|
mainFile,
|
|
108
118
|
mode: mode,
|
|
109
119
|
whitelistedModules: whitelistedModules || [],
|
|
120
|
+
blacklistedModules: blacklistedModules || [],
|
|
110
121
|
externalResolvers,
|
|
111
|
-
|
|
112
|
-
typeScriptResolversPluginConfig,
|
|
122
|
+
typesPluginsConfig,
|
|
113
123
|
};
|
|
114
124
|
};
|
|
115
|
-
const
|
|
125
|
+
const validateTypesPluginsConfig = (config) => {
|
|
116
126
|
config.scalars = config.scalars || {};
|
|
117
127
|
if (typeof config.scalars === 'string') {
|
|
118
|
-
throw new Error(`Validation Error - ${presetName} - presetConfig.
|
|
128
|
+
throw new Error(`Validation Error - ${presetName} - presetConfig.typesPluginsConfig.scalars of type "string" is not supported`);
|
|
119
129
|
}
|
|
120
130
|
return true;
|
|
121
131
|
};
|
package/src/preset.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preset.js","sourceRoot":"","sources":["../../../../packages/typescript-resolver-files/src/preset.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAC7B,kDAAkD;AAClD,gEAAgE;AAChE,mFAAmF;AACnF,qDAA+D;AAE/D,mCAAuC;AAEvC,+BAA4B;
|
|
1
|
+
{"version":3,"file":"preset.js","sourceRoot":"","sources":["../../../../packages/typescript-resolver-files/src/preset.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
interface CheckIfModuleIsWhitelistedParams {
|
|
2
|
+
moduleName: string;
|
|
3
|
+
whitelistedModules: string[];
|
|
4
|
+
blacklistedModules: string[];
|
|
5
|
+
}
|
|
6
|
+
export declare const checkIfModuleIsWhitelisted: ({ moduleName, whitelistedModules, blacklistedModules, }: CheckIfModuleIsWhitelistedParams) => boolean;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkIfModuleIsWhitelisted = void 0;
|
|
4
|
+
const checkIfModuleIsWhitelisted = ({ moduleName, whitelistedModules, blacklistedModules, }) => {
|
|
5
|
+
if (blacklistedModules.includes(moduleName)) {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
const isInWhitelistedModule =
|
|
9
|
+
// whitelistedModules is empty a.k.a. all are whitelisted
|
|
10
|
+
whitelistedModules.length === 0
|
|
11
|
+
? true
|
|
12
|
+
: whitelistedModules.includes(moduleName);
|
|
13
|
+
return isInWhitelistedModule;
|
|
14
|
+
};
|
|
15
|
+
exports.checkIfModuleIsWhitelisted = checkIfModuleIsWhitelisted;
|
|
16
|
+
//# sourceMappingURL=checkIfModuleIsWhitelisted.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkIfModuleIsWhitelisted.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/checkIfModuleIsWhitelisted.ts"],"names":[],"mappings":";;;AAMO,MAAM,0BAA0B,GAAG,CAAC,EACzC,UAAU,EACV,kBAAkB,EAClB,kBAAkB,GACe,EAAW,EAAE;IAC9C,IAAI,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;QAC3C,OAAO,KAAK,CAAC;KACd;IAED,MAAM,qBAAqB;IACzB,yDAAyD;IACzD,kBAAkB,CAAC,MAAM,KAAK,CAAC;QAC7B,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAE9C,OAAO,qBAAqB,CAAC;AAC/B,CAAC,CAAC;AAhBW,QAAA,0BAA0B,8BAgBrC"}
|
|
@@ -5,6 +5,7 @@ const path = require("path");
|
|
|
5
5
|
const graphql_1 = require("graphql");
|
|
6
6
|
const utils_1 = require("../utils");
|
|
7
7
|
const addExternalResolverImport_1 = require("./addExternalResolverImport");
|
|
8
|
+
const checkIfModuleIsWhitelisted_1 = require("./checkIfModuleIsWhitelisted");
|
|
8
9
|
const visitNamedType = ({ namedType, resolverName, belongsToRootObject, location, visitor, }, ctx) => {
|
|
9
10
|
const normalizedResolverName = normalizeResolverName(resolverName, belongsToRootObject);
|
|
10
11
|
const externalResolverImportSyntax = ctx.config.externalResolvers[normalizedResolverName];
|
|
@@ -17,7 +18,7 @@ const visitNamedType = ({ namedType, resolverName, belongsToRootObject, location
|
|
|
17
18
|
return;
|
|
18
19
|
}
|
|
19
20
|
// Check to see if need to generate resolver files
|
|
20
|
-
const outputDir =
|
|
21
|
+
const outputDir = parseLocationForOutputDir(belongsToRootObject ? [belongsToRootObject] : [], ctx, location);
|
|
21
22
|
if (!outputDir) {
|
|
22
23
|
return;
|
|
23
24
|
}
|
|
@@ -36,7 +37,11 @@ const visitNamedType = ({ namedType, resolverName, belongsToRootObject, location
|
|
|
36
37
|
}
|
|
37
38
|
};
|
|
38
39
|
exports.visitNamedType = visitNamedType;
|
|
39
|
-
|
|
40
|
+
/**
|
|
41
|
+
* Parse location to see which module it belongs to.
|
|
42
|
+
* Also check against whitelisted and blacklisted to see if need to generate file.
|
|
43
|
+
*/
|
|
44
|
+
const parseLocationForOutputDir = (nestedDirs, { config: { mode, sourcesMap, whitelistedModules, blacklistedModules, baseOutputDir, relativeTargetDir, }, }, location) => {
|
|
40
45
|
if (!location) {
|
|
41
46
|
throw new Error('Location is invalid');
|
|
42
47
|
}
|
|
@@ -53,12 +58,12 @@ const parseLocation = (nestedDirs, { config: { mode, sourcesMap, whitelistedModu
|
|
|
53
58
|
if (!sourceFile) {
|
|
54
59
|
throw new Error(`Unable to find ${sourceFilename} in sourcesMap`);
|
|
55
60
|
}
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
return
|
|
61
|
+
const isWhitelistedModule = (0, checkIfModuleIsWhitelisted_1.checkIfModuleIsWhitelisted)({
|
|
62
|
+
moduleName: sourceFile.moduleName,
|
|
63
|
+
whitelistedModules,
|
|
64
|
+
blacklistedModules,
|
|
65
|
+
});
|
|
66
|
+
return isWhitelistedModule
|
|
62
67
|
? path.join(baseOutputDir, sourceFile.moduleName, relativeTargetDir, ...nestedDirs)
|
|
63
68
|
: undefined;
|
|
64
69
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visitNamedType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/visitNamedType.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAC7B,qCAMiB;AACjB,oCAA8C;AAO9C,2EAAwE;
|
|
1
|
+
{"version":3,"file":"visitNamedType.js","sourceRoot":"","sources":["../../../../../packages/typescript-resolver-files/src/run/visitNamedType.ts"],"names":[],"mappings":"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"}
|