1 | 'use strict';
|
2 |
|
3 | const wrap = require('@graphql-tools/wrap');
|
4 | const utils = require('@graphql-tools/utils');
|
5 | const changeCase = require('change-case');
|
6 | const upperCase = require('upper-case');
|
7 | const lowerCase = require('lower-case');
|
8 |
|
9 | const NAMING_CONVENTIONS = {
|
10 | camelCase: changeCase.camelCase,
|
11 | capitalCase: changeCase.capitalCase,
|
12 | constantCase: changeCase.constantCase,
|
13 | dotCase: changeCase.dotCase,
|
14 | headerCase: changeCase.headerCase,
|
15 | noCase: changeCase.noCase,
|
16 | paramCase: changeCase.paramCase,
|
17 | pascalCase: changeCase.pascalCase,
|
18 | pathCase: changeCase.pathCase,
|
19 | sentenceCase: changeCase.sentenceCase,
|
20 | snakeCase: changeCase.snakeCase,
|
21 | upperCase: upperCase.upperCase,
|
22 | lowerCase: lowerCase.lowerCase,
|
23 | };
|
24 | class NamingConventionTransform {
|
25 | constructor(options) {
|
26 | this.transforms = [];
|
27 | if (options.config.typeNames) {
|
28 | const namingConventionFn = NAMING_CONVENTIONS[options.config.typeNames];
|
29 | this.transforms.push(new wrap.RenameTypes(typeName => namingConventionFn(typeName)), new wrap.RenameRootTypes(typeName => namingConventionFn(typeName)));
|
30 | }
|
31 | if (options.config.fieldNames) {
|
32 | const namingConventionFn = NAMING_CONVENTIONS[options.config.fieldNames];
|
33 | this.transforms.push(new wrap.RenameObjectFields((_, fieldName) => namingConventionFn(fieldName)), new wrap.RenameRootFields((_, fieldName) => namingConventionFn(fieldName)), new wrap.RenameInputObjectFields((_, fieldName) => namingConventionFn(fieldName)), new wrap.RenameInterfaceFields((_, fieldName) => namingConventionFn(fieldName)));
|
34 | }
|
35 | if (options.config.enumValues) {
|
36 | const namingConventionFn = NAMING_CONVENTIONS[options.config.enumValues];
|
37 | this.transforms.push(new wrap.TransformEnumValues((typeName, externalValue, enumValueConfig) => [
|
38 | namingConventionFn(externalValue),
|
39 | enumValueConfig,
|
40 | ]));
|
41 | }
|
42 | }
|
43 | transformSchema(schema) {
|
44 | return utils.applySchemaTransforms(schema, this.transforms);
|
45 | }
|
46 | transformRequest(request) {
|
47 | return utils.applyRequestTransforms(request, this.transforms);
|
48 | }
|
49 | transformResult(result) {
|
50 | return utils.applyResultTransforms(result, this.transforms);
|
51 | }
|
52 | }
|
53 |
|
54 | module.exports = NamingConventionTransform;
|
55 |
|