@eddeee888/gcg-typescript-resolver-files 0.18.0 → 0.18.2

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.
Files changed (80) hide show
  1. package/dist/defineConfig.d.ts +1 -1
  2. package/dist/defineConfig.js +8 -0
  3. package/package.json +7 -3
  4. package/CHANGELOG.md +0 -816
  5. package/DEVELOPMENT.md +0 -49
  6. package/dist/tsconfig.lib.tsbuildinfo +0 -1
  7. package/eslint.config.mjs +0 -22
  8. package/project.json +0 -8
  9. package/src/addVirtualTypesFileToTsMorphProject/addVirtualTypesFileToTsMorphProject.ts +0 -109
  10. package/src/addVirtualTypesFileToTsMorphProject/index.ts +0 -1
  11. package/src/defineConfig.spec.ts +0 -76
  12. package/src/defineConfig.ts +0 -37
  13. package/src/generateResolverFiles/addExternalResolverImport.ts +0 -185
  14. package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.spec.ts +0 -1174
  15. package/src/generateResolverFiles/addObjectTypeResolversPropertyAssignmentNodesIfNotImplemented.ts +0 -144
  16. package/src/generateResolverFiles/addResolverMainFiles.ts +0 -343
  17. package/src/generateResolverFiles/ensureEnumTypeResolversAreGenerated.ts +0 -51
  18. package/src/generateResolverFiles/generateResolverFiles.ts +0 -148
  19. package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.spec.ts +0 -127
  20. package/src/generateResolverFiles/getImportStatementWithExpectedNamedImport.ts +0 -25
  21. package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.spec.ts +0 -147
  22. package/src/generateResolverFiles/getVariableStatementWithExpectedIdentifier.ts +0 -34
  23. package/src/generateResolverFiles/handleGraphQLEnumType.ts +0 -100
  24. package/src/generateResolverFiles/handleGraphQLInterfaceType.ts +0 -70
  25. package/src/generateResolverFiles/handleGraphQLObjectType.ts +0 -171
  26. package/src/generateResolverFiles/handleGraphQLRootObjectTypeField.ts +0 -105
  27. package/src/generateResolverFiles/handleGraphQLScalarType.ts +0 -81
  28. package/src/generateResolverFiles/handleGraphQLUnionType.ts +0 -68
  29. package/src/generateResolverFiles/index.ts +0 -2
  30. package/src/generateResolverFiles/postProcessFiles.ts +0 -287
  31. package/src/generateResolverFiles/types.ts +0 -203
  32. package/src/generateResolverFiles/visitNamedType.ts +0 -66
  33. package/src/generateTypeDefsFiles/generateTypeDefsContent.ts +0 -15
  34. package/src/generateTypeDefsFiles/generateTypeDefsFiles.ts +0 -100
  35. package/src/generateTypeDefsFiles/index.ts +0 -1
  36. package/src/getGraphQLObjectTypeResolversToGenerate/getGraphQLObjectTypeResolversToGenerate.ts +0 -361
  37. package/src/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.spec.ts +0 -115
  38. package/src/getGraphQLObjectTypeResolversToGenerate/getNodePropertyMap.ts +0 -88
  39. package/src/getGraphQLObjectTypeResolversToGenerate/index.ts +0 -1
  40. package/src/index.ts +0 -3
  41. package/src/normalizeAddConfigPath/index.ts +0 -1
  42. package/src/normalizeAddConfigPath/normalizeAddConfigPath.ts +0 -29
  43. package/src/parseGraphQLSchema/index.ts +0 -2
  44. package/src/parseGraphQLSchema/normalizeResolverName.ts +0 -28
  45. package/src/parseGraphQLSchema/parseGraphQLSchema.ts +0 -531
  46. package/src/parseGraphQLSchema/parseLocationForOutputDir.ts +0 -76
  47. package/src/parseSources/index.ts +0 -1
  48. package/src/parseSources/parseSources.ts +0 -83
  49. package/src/parseTypeMappers/collectTypeMappersFromSourceFile.spec.ts +0 -789
  50. package/src/parseTypeMappers/collectTypeMappersFromSourceFile.ts +0 -197
  51. package/src/parseTypeMappers/index.ts +0 -1
  52. package/src/parseTypeMappers/parseTypeMappers.ts +0 -75
  53. package/src/preset.ts +0 -317
  54. package/src/utils/cwd.ts +0 -8
  55. package/src/utils/fmt.ts +0 -16
  56. package/src/utils/index.ts +0 -12
  57. package/src/utils/isMatchResolverNamePattern.ts +0 -27
  58. package/src/utils/isNativeNamedType.ts +0 -21
  59. package/src/utils/isRootObjectType.ts +0 -8
  60. package/src/utils/isWhitelistedModule.spec.ts +0 -71
  61. package/src/utils/isWhitelistedModule.ts +0 -21
  62. package/src/utils/logger.ts +0 -14
  63. package/src/utils/normalizeImportExtension.spec.ts +0 -42
  64. package/src/utils/normalizeImportExtension.ts +0 -16
  65. package/src/utils/normalizeRelativePath.ts +0 -6
  66. package/src/utils/parseLocationForWhitelistedModule.spec.ts +0 -130
  67. package/src/utils/parseLocationForWhitelistedModule.ts +0 -38
  68. package/src/utils/printImportLine.spec.ts +0 -150
  69. package/src/utils/printImportLine.ts +0 -78
  70. package/src/utils/relativeModulePath.ts +0 -7
  71. package/src/validateAndMergeParsedConfigs/index.ts +0 -1
  72. package/src/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.spec.ts +0 -211
  73. package/src/validateAndMergeParsedConfigs/validateAndMergeParsedConfigs.ts +0 -92
  74. package/src/validatePresetConfig/index.ts +0 -1
  75. package/src/validatePresetConfig/validatePresetConfig.spec.ts +0 -706
  76. package/src/validatePresetConfig/validatePresetConfig.ts +0 -571
  77. package/tsconfig.json +0 -14
  78. package/tsconfig.lib.json +0 -18
  79. package/tsconfig.spec.json +0 -20
  80. package/vite.config.ts +0 -24
@@ -1,71 +0,0 @@
1
- import { isWhitelistedModule } from './isWhitelistedModule';
2
-
3
- describe('isWhitelistedModule()', () => {
4
- it.each([
5
- {
6
- description:
7
- 'is whitelisted if whitelistedModules and blacklistedModules are empty arrays',
8
- moduleName: 'moduleA',
9
- whitelistedModules: [],
10
- blacklistedModules: [],
11
- result: true,
12
- },
13
- {
14
- description: 'is whitelisted if exists in whitelistedModules',
15
- moduleName: 'moduleA',
16
- whitelistedModules: ['moduleA', 'moduleB'],
17
- blacklistedModules: [],
18
- result: true,
19
- },
20
- {
21
- description: 'is NOT whitelisted if not exists in whitelistedModules',
22
- moduleName: 'moduleA',
23
- whitelistedModules: ['moduleB', 'moduleC'],
24
- blacklistedModules: [],
25
- result: false,
26
- },
27
- {
28
- description:
29
- 'is whitelisted if exists in whitelistedModules but not blacklistedModules',
30
- moduleName: 'moduleB',
31
- whitelistedModules: ['moduleB', 'moduleC'],
32
- blacklistedModules: ['moduleA'],
33
- result: true,
34
- },
35
- {
36
- description:
37
- 'is whitelisted if whitelistedModules is empty but does not exist in blacklistedModules',
38
- moduleName: 'moduleA',
39
- whitelistedModules: [],
40
- blacklistedModules: ['moduleB'],
41
- result: true,
42
- },
43
- {
44
- description:
45
- 'is NOT whitelisted if exists in both whitelistedModules and blacklistedModules',
46
- moduleName: 'moduleA',
47
- whitelistedModules: ['moduleA', 'moduleB', 'moduleC'],
48
- blacklistedModules: ['moduleA'],
49
- result: false,
50
- },
51
- {
52
- description:
53
- 'is NOT whitelisted if whitelistedModules is empty and exists in blacklistedModules',
54
- moduleName: 'moduleA',
55
- whitelistedModules: [],
56
- blacklistedModules: ['moduleA'],
57
- result: false,
58
- },
59
- ])(
60
- '$description',
61
- ({ moduleName, blacklistedModules, whitelistedModules, result }) => {
62
- expect(result).toEqual(
63
- isWhitelistedModule({
64
- moduleName,
65
- whitelistedModules,
66
- blacklistedModules,
67
- })
68
- );
69
- }
70
- );
71
- });
@@ -1,21 +0,0 @@
1
- export const isWhitelistedModule = ({
2
- moduleName,
3
- whitelistedModules,
4
- blacklistedModules,
5
- }: {
6
- moduleName: string;
7
- whitelistedModules: string[];
8
- blacklistedModules: string[];
9
- }): boolean => {
10
- if (blacklistedModules.includes(moduleName)) {
11
- return false;
12
- }
13
-
14
- const isInWhitelistedModule =
15
- // whitelistedModules is empty a.k.a. all are whitelisted
16
- whitelistedModules.length === 0
17
- ? true
18
- : whitelistedModules.includes(moduleName);
19
-
20
- return isInWhitelistedModule;
21
- };
@@ -1,14 +0,0 @@
1
- import { presetName } from '../preset.js';
2
- import { fmt } from './fmt.js';
3
-
4
- export const logger = {
5
- debug: (...args: Parameters<(typeof fmt)['debug']>) => {
6
- const debugEnvVar = process.env.DEBUG || '';
7
- if (debugEnvVar.includes(presetName)) {
8
- console.debug(`\x1b[34m${fmt.debug(...args)}`);
9
- }
10
- },
11
- warn: (...args: Parameters<(typeof fmt)['warn']>) => {
12
- console.warn(`\x1b[34m${fmt.warn(...args)}`);
13
- },
14
- };
@@ -1,42 +0,0 @@
1
- import { normalizeImportExtension } from './normalizeImportExtension';
2
-
3
- describe('normalizeImportExtension', () => {
4
- describe('when importExtension is explicitly provided', () => {
5
- it('returns the explicit extension regardless of emitLegacyCommonJSImports', () => {
6
- expect(normalizeImportExtension('.js', true)).toBe('.js');
7
- expect(normalizeImportExtension('.js', false)).toBe('.js');
8
- expect(normalizeImportExtension('.js', undefined)).toBe('.js');
9
- });
10
-
11
- it('returns empty string when explicitly set to empty', () => {
12
- expect(normalizeImportExtension('', true)).toBe('');
13
- expect(normalizeImportExtension('', false)).toBe('');
14
- expect(normalizeImportExtension('', undefined)).toBe('');
15
- });
16
-
17
- it('returns custom extension formats', () => {
18
- expect(normalizeImportExtension('.mjs', undefined)).toBe('.mjs');
19
- expect(normalizeImportExtension('.cjs', false)).toBe('.cjs');
20
- expect(normalizeImportExtension('.mjs', true)).toBe('.mjs');
21
- expect(normalizeImportExtension('.custom.ext')).toBe('.custom.ext');
22
- });
23
-
24
- it('takes precedence over emitLegacyCommonJSImports', () => {
25
- expect(normalizeImportExtension('.mjs', false)).toBe('.mjs');
26
- });
27
- });
28
-
29
- describe('when importExtension is undefined', () => {
30
- it('returns .js when emitLegacyCommonJSImports is false', () => {
31
- expect(normalizeImportExtension(undefined, false)).toBe('.js');
32
- });
33
-
34
- it('returns empty string when emitLegacyCommonJSImports is true', () => {
35
- expect(normalizeImportExtension(undefined, true)).toBe('');
36
- });
37
-
38
- it('returns empty string when emitLegacyCommonJSImports is undefined', () => {
39
- expect(normalizeImportExtension(undefined, undefined)).toBe('');
40
- });
41
- });
42
- });
@@ -1,16 +0,0 @@
1
- export type ImportExtension = '' | `.${string}`;
2
-
3
- export function normalizeImportExtension(
4
- importExtension?: ImportExtension,
5
- emitLegacyCommonJSImports?: boolean
6
- ): ImportExtension {
7
- if (importExtension !== undefined) {
8
- return importExtension;
9
- }
10
-
11
- if (emitLegacyCommonJSImports !== undefined) {
12
- return emitLegacyCommonJSImports ? '' : '.js';
13
- }
14
-
15
- return '';
16
- }
@@ -1,6 +0,0 @@
1
- export const normalizeRelativePath = (path: string): string => {
2
- if (!path.startsWith('../') || !path.startsWith('./')) {
3
- return `./${path}`;
4
- }
5
- return path;
6
- };
@@ -1,130 +0,0 @@
1
- import * as path from 'path';
2
- import {
3
- type ParseLocationForWhitelistedModule,
4
- parseLocationForWhitelistedModule,
5
- } from './parseLocationForWhitelistedModule.js';
6
- import type {
7
- ParsedSource,
8
- ParseSourcesResult,
9
- } from '../parseSources/index.js';
10
-
11
- const createPartialLocation = (
12
- moduleName: string
13
- ): { source: { name: string } } => {
14
- return {
15
- source: { name: `/path/to/${moduleName}/schema.graphqls` },
16
- };
17
- };
18
-
19
- const createParsedSource = (moduleName: string): ParsedSource => {
20
- const location = `/path/to/${moduleName}/schema.graphqls`;
21
- return {
22
- moduleName,
23
- relativePathFromBaseToModule: [moduleName],
24
- sourcePath: path.parse(location),
25
- source: { location: `/path/to/${moduleName}/schema.graphqls` },
26
- };
27
- };
28
-
29
- const createSourcesMap = (
30
- moduleNames: string[]
31
- ): ParseSourcesResult['sourceMap'] => {
32
- return moduleNames.reduce<ParseSourcesResult['sourceMap']>(
33
- (res, moduleName) => {
34
- const sourceLocation = `/path/to/${moduleName}/schema.graphqls`;
35
- res[sourceLocation] = createParsedSource(moduleName);
36
- return res;
37
- },
38
- {}
39
- );
40
- };
41
-
42
- describe('parseLocationForWhitelistedModule', () => {
43
- test.each([
44
- {
45
- description:
46
- 'is whitelisted if whitelistedModules and blacklistedModules are empty arrays',
47
- location: createPartialLocation('module1'),
48
- sourceMap: createSourcesMap(['module1']),
49
- whitelistedModules: [],
50
- blacklistedModules: [],
51
- result: createParsedSource('module1'),
52
- },
53
- {
54
- description: 'is whitelisted if exists in whitelistedModules',
55
- location: createPartialLocation('module2'),
56
- sourceMap: createSourcesMap(['module1', 'module2', 'module3']),
57
- whitelistedModules: ['module1', 'module2', 'module3'],
58
- blacklistedModules: [],
59
- result: createParsedSource('module2'),
60
- },
61
- {
62
- description: 'is NOT whitelisted if not exists in whitelistedModules',
63
- location: createPartialLocation('module2'),
64
- sourceMap: createSourcesMap(['module1', 'module2', 'module3']),
65
- whitelistedModules: ['module1', 'module3'],
66
- blacklistedModules: [],
67
- result: undefined,
68
- },
69
- {
70
- description:
71
- 'is whitelisted if exists in whitelistedModules but not blacklistedModules',
72
- location: createPartialLocation('module2'),
73
- sourceMap: createSourcesMap(['module1', 'module2', 'module3']),
74
- whitelistedModules: ['module1', 'module2', 'module3'],
75
- blacklistedModules: ['module1'],
76
- result: createParsedSource('module2'),
77
- },
78
- {
79
- description:
80
- 'is whitelisted if whitelistedModules is empty but does not exist in blacklistedModules',
81
- location: createPartialLocation('module2'),
82
- sourceMap: createSourcesMap(['module1', 'module2', 'module3']),
83
- whitelistedModules: [],
84
- blacklistedModules: ['module1'],
85
- result: createParsedSource('module2'),
86
- },
87
- {
88
- description:
89
- 'is NOT whitelisted if exists in both whitelistedModules and blacklistedModules',
90
- location: createPartialLocation('module1'),
91
- sourceMap: createSourcesMap(['module1', 'module2', 'module3']),
92
- whitelistedModules: ['module1', 'module2', 'module3'],
93
- blacklistedModules: ['module1'],
94
- result: undefined,
95
- },
96
- {
97
- description:
98
- 'is NOT whitelisted if whitelistedModules is empty and exists in blacklistedModules',
99
- location: createPartialLocation('module3'),
100
- sourceMap: createSourcesMap(['module1', 'module2', 'module3']),
101
- whitelistedModules: [],
102
- blacklistedModules: ['module3'],
103
- result: undefined,
104
- },
105
- ])(
106
- '$description',
107
- ({ location, sourceMap, blacklistedModules, whitelistedModules, result }) =>
108
- expect(
109
- parseLocationForWhitelistedModule({
110
- location,
111
- sourceMap,
112
- blacklistedModules,
113
- whitelistedModules,
114
- } as unknown as ParseLocationForWhitelistedModule)
115
- ).toEqual(result)
116
- );
117
-
118
- it('throws if location does not exist in sourceMap', () => {
119
- expect(() =>
120
- parseLocationForWhitelistedModule({
121
- location: createPartialLocation('module10'),
122
- sourceMap: createSourcesMap(['module1', 'module2']),
123
- blacklistedModules: [],
124
- whitelistedModules: [],
125
- } as unknown as ParseLocationForWhitelistedModule)
126
- ).toThrowErrorMatchingInlineSnapshot(
127
- `[Error: Unable to find /path/to/module10/schema.graphqls in sourceMap]`
128
- );
129
- });
130
- });
@@ -1,38 +0,0 @@
1
- import type { Location } from 'graphql';
2
- import type {
3
- ParseSourcesResult,
4
- ParsedSource,
5
- } from '../parseSources/index.js';
6
- import { isWhitelistedModule } from './isWhitelistedModule.js';
7
-
8
- export interface ParseLocationForWhitelistedModule {
9
- location: Location | undefined;
10
- sourceMap: ParseSourcesResult['sourceMap'];
11
- whitelistedModules: string[];
12
- blacklistedModules: string[];
13
- }
14
-
15
- export const parseLocationForWhitelistedModule = ({
16
- location,
17
- sourceMap,
18
- whitelistedModules,
19
- blacklistedModules,
20
- }: ParseLocationForWhitelistedModule): ParsedSource | undefined => {
21
- if (!location) {
22
- throw new Error('Location is invalid');
23
- }
24
-
25
- const sourceFilename = location.source.name;
26
- const sourceFile = sourceMap[sourceFilename];
27
- if (!sourceFile) {
28
- throw new Error(`Unable to find ${sourceFilename} in sourceMap`);
29
- }
30
-
31
- const isWhitelisted = isWhitelistedModule({
32
- moduleName: sourceFile.moduleName,
33
- whitelistedModules,
34
- blacklistedModules,
35
- });
36
-
37
- return isWhitelisted ? sourceFile : undefined;
38
- };
@@ -1,150 +0,0 @@
1
- import { printImportLine } from './printImportLine';
2
-
3
- describe('printImportLine', () => {
4
- it('prints default import correctly', () => {
5
- const result = printImportLine({
6
- module: './path/to/file',
7
- moduleType: 'file',
8
- isTypeImport: false,
9
- namedImports: [],
10
- defaultImport: 'DefaultImport',
11
- emitLegacyCommonJSImports: true,
12
- });
13
- expect(result).toBe("import DefaultImport from './path/to/file';");
14
- });
15
-
16
- it('prints one named import correctly', () => {
17
- const result = printImportLine({
18
- module: './path/to/file',
19
- moduleType: 'file',
20
- isTypeImport: false,
21
- namedImports: ['Thing'],
22
- emitLegacyCommonJSImports: true,
23
- });
24
- expect(result).toBe("import { Thing } from './path/to/file';");
25
- });
26
-
27
- it('prints one aliased named import correctly', () => {
28
- const result = printImportLine({
29
- module: './path/to/file',
30
- moduleType: 'file',
31
- isTypeImport: false,
32
- namedImports: [{ propertyName: 'Thing', identifierName: 'OtherThing' }],
33
- emitLegacyCommonJSImports: true,
34
- });
35
- expect(result).toBe(
36
- "import { Thing as OtherThing } from './path/to/file';"
37
- );
38
- });
39
-
40
- it('prints multiple mixed default and named imports correctly', () => {
41
- const result = printImportLine({
42
- module: './path/to/file',
43
- moduleType: 'file',
44
- isTypeImport: false,
45
- defaultImport: 'DefaultThing',
46
- namedImports: [
47
- { propertyName: 'Thing', identifierName: 'OtherThing' },
48
- 'ThingTwo',
49
- ],
50
- emitLegacyCommonJSImports: true,
51
- });
52
- expect(result).toBe(
53
- "import DefaultThing , { Thing as OtherThing,ThingTwo } from './path/to/file';"
54
- );
55
- });
56
-
57
- it('prints .js extension for ESM files', () => {
58
- const result = printImportLine({
59
- module: './path/to/file',
60
- moduleType: 'file',
61
- isTypeImport: false,
62
- namedImports: ['Thing'],
63
- emitLegacyCommonJSImports: false,
64
- });
65
- expect(result).toBe("import { Thing } from './path/to/file.js';");
66
- });
67
-
68
- it('does not print .js extension for ESM modules', () => {
69
- const result = printImportLine({
70
- module: '@org/module',
71
- moduleType: 'module',
72
- isTypeImport: false,
73
- namedImports: ['Thing'],
74
- emitLegacyCommonJSImports: false,
75
- });
76
- expect(result).toBe("import { Thing } from '@org/module';");
77
- });
78
-
79
- it('prints extension as declared', () => {
80
- const result = printImportLine({
81
- module: 'absolute/path/to/file.js',
82
- moduleType: 'preserve',
83
- isTypeImport: false,
84
- namedImports: ['Thing'],
85
- emitLegacyCommonJSImports: true,
86
- });
87
- expect(result).toBe("import { Thing } from 'absolute/path/to/file.js';");
88
- });
89
-
90
- it('prints type import correctly', () => {
91
- const result = printImportLine({
92
- module: './path/to/file',
93
- moduleType: 'file',
94
- isTypeImport: true,
95
- namedImports: ['Thing'],
96
- emitLegacyCommonJSImports: true,
97
- });
98
- expect(result).toBe("import type { Thing } from './path/to/file';");
99
- });
100
-
101
- describe('importExtension parameter', () => {
102
- it('uses explicit importExtension parameter over emitLegacyCommonJSImports', () => {
103
- const result = printImportLine({
104
- module: './path/to/file',
105
- moduleType: 'file',
106
- isTypeImport: false,
107
- namedImports: ['Thing'],
108
- emitLegacyCommonJSImports: false,
109
- importExtension: '.mjs',
110
- });
111
- expect(result).toBe("import { Thing } from './path/to/file.mjs';");
112
- });
113
-
114
- it('uses custom .cjs extension when importExtension is provided', () => {
115
- const result = printImportLine({
116
- module: './path/to/file',
117
- moduleType: 'file',
118
- isTypeImport: false,
119
- namedImports: ['Thing'],
120
- emitLegacyCommonJSImports: true,
121
- importExtension: '.cjs',
122
- });
123
- expect(result).toBe("import { Thing } from './path/to/file.cjs';");
124
- });
125
-
126
- it('uses empty string when importExtension is explicitly set to empty', () => {
127
- const result = printImportLine({
128
- module: './path/to/file',
129
- moduleType: 'file',
130
- isTypeImport: false,
131
- namedImports: ['Thing'],
132
- emitLegacyCommonJSImports: false,
133
- importExtension: '',
134
- });
135
- expect(result).toBe("import { Thing } from './path/to/file';");
136
- });
137
-
138
- it('does not apply importExtension to module imports', () => {
139
- const result = printImportLine({
140
- module: '@org/module',
141
- moduleType: 'module',
142
- isTypeImport: false,
143
- namedImports: ['Thing'],
144
- emitLegacyCommonJSImports: false,
145
- importExtension: '.mjs',
146
- });
147
- expect(result).toBe("import { Thing } from '@org/module';");
148
- });
149
- });
150
- });
@@ -1,78 +0,0 @@
1
- import {
2
- normalizeImportExtension,
3
- type ImportExtension,
4
- } from './normalizeImportExtension.js';
5
-
6
- export interface ImportLineMeta {
7
- isTypeImport: boolean;
8
- module: string;
9
- /**
10
- * moduleType
11
- *
12
- * @description Determines how the module should be treated when imported taking into consideration CJS vs ESM
13
- * - file: import is a file. For ESM, .js extension is added. For CJS, no extension is added.
14
- * - module: import is a module from `node_modules` or aliased e.g. `graphql-scalars` or `@org/your-module`. No extension is added.
15
- * - preserve: preserve what the config declares. This is only used when taking user's config or preset-controlled config e.g. `externalExternals` because the import could be either file or module
16
- */
17
- moduleType: 'file' | 'module' | 'preserve';
18
- namedImports: (string | { propertyName: string; identifierName: string })[];
19
- defaultImport?: string;
20
- /** @deprecated Use importExtension instead */
21
- emitLegacyCommonJSImports: boolean;
22
- importExtension?: ImportExtension;
23
- }
24
-
25
- export function printImportLine({
26
- isTypeImport,
27
- module,
28
- moduleType,
29
- namedImports,
30
- defaultImport,
31
- emitLegacyCommonJSImports,
32
- importExtension,
33
- }: ImportLineMeta): string {
34
- const typeImportKeyword = isTypeImport ? 'type' : '';
35
- const hasDefaultImport = Boolean(defaultImport);
36
- const hasNamedImports = namedImports.length > 0;
37
- const namedImportsString = hasNamedImports
38
- ? `{ ${namedImports.map(printNamedImportSpecifier).join(',')} }`
39
- : '';
40
-
41
- let fileExt = '';
42
- if (moduleType !== 'preserve') {
43
- const isFile = moduleType === 'file';
44
- if (isFile) {
45
- fileExt = normalizeImportExtension(
46
- importExtension,
47
- emitLegacyCommonJSImports
48
- );
49
- }
50
- }
51
-
52
- return `import ${typeImportKeyword} ${defaultImport || ''} ${
53
- hasDefaultImport && hasNamedImports ? ',' : ''
54
- } ${namedImportsString} from '${normalizeModuleExtensionForImport(
55
- module
56
- )}${fileExt}';`;
57
- }
58
-
59
- const normalizeModuleExtensionForImport = (module: string): string => {
60
- if (module.endsWith('.ts')) {
61
- return module.split('.').slice(0, -1).join('.');
62
- }
63
- return module;
64
- };
65
-
66
- const printNamedImportSpecifier = (
67
- namedImport: ImportLineMeta['namedImports'][number]
68
- ): string => {
69
- if (typeof namedImport === 'string') {
70
- return namedImport;
71
- }
72
-
73
- if (namedImport.propertyName === namedImport.identifierName) {
74
- return namedImport.identifierName;
75
- }
76
-
77
- return `${namedImport.propertyName} as ${namedImport.identifierName}`;
78
- };
@@ -1,7 +0,0 @@
1
- import * as path from 'path';
2
- import { normalizeRelativePath } from './normalizeRelativePath.js';
3
-
4
- export const relativeModulePath = (from: string, to: string): string => {
5
- const rawPath = path.posix.relative(from, to);
6
- return normalizeRelativePath(rawPath);
7
- };
@@ -1 +0,0 @@
1
- export * from './validateAndMergeParsedConfigs.js';