Skip to content

Commit 9543af7

Browse files
support new config option mappersRelativeTargetDir (#345)
* support mappersRelativeTargetDir * add documentation * remove package-lock * reset yarn lock --------- Co-authored-by: Eddy Nguyen <[email protected]>
1 parent b4c501c commit 9543af7

File tree

9 files changed

+19
-2
lines changed

9 files changed

+19
-2
lines changed

packages/typescript-resolver-files-e2e/src/test-mappers/codegen.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ const config: CodegenConfig = {
2222
interface: '*',
2323
enum: '',
2424
},
25+
mappersRelativeTargetDir: 'mappers',
2526
mappersFileExtension: '.type-mappers.ts',
2627
mappersSuffix: '_Mapper',
2728
}),

packages/typescript-resolver-files-e2e/src/test-mappers/modules/types.generated.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import {
33
GraphQLScalarType,
44
GraphQLScalarTypeConfig,
55
} from 'graphql';
6-
import { Pet_Mapper } from './pet/schema.type-mappers';
7-
import { Profile_Mapper } from './user/profile.type-mappers';
6+
import { Pet_Mapper } from './pet/mappers/schema.type-mappers';
7+
import { Profile_Mapper } from './user/mappers/profile.type-mappers';
88
export type Maybe<T> = T | null | undefined;
99
export type InputMaybe<T> = T | null | undefined;
1010
export type Exact<T extends { [key: string]: unknown }> = {

packages/typescript-resolver-files/README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,12 @@ Experimental options:
328328

329329
- `namingConvention`
330330

331+
### mappersRelativeTargetDir
332+
333+
`string` (Default: `./`)
334+
335+
By default, mappers must be siblings with the schema they represent. For example, if the schema file is `/path/to/schema.graphql`, the mapper file is `/path/to/schema.mappers.ts`. This extension allows mappers to reside in a different directory relative to the schema file using the pattern `<schemaPath>/<mappersRelativeTargetDir>/<schemaName><mappersFileExtension>`.
336+
331337
### mappersFileExtension
332338

333339
`string` (Default: `.mappers.ts`)

packages/typescript-resolver-files/src/parseTypeMappers/parseTypeMappers.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { collectTypeMappersFromSourceFile } from './collectTypeMappersFromSource
66
export interface ParseTypeMappersParams {
77
sourceMap: ParseSourcesResult['sourceMap'];
88
resolverTypesPath: string;
9+
typeMappersRelativeTargetDir: string;
910
typeMappersFileExtension: string;
1011
typeMappersSuffix: string;
1112
tsMorphProject: Project;
@@ -31,6 +32,7 @@ export type TypeMappersMap = Record<string, TypeMapperDetails>;
3132
export const parseTypeMappers = ({
3233
sourceMap,
3334
resolverTypesPath,
35+
typeMappersRelativeTargetDir,
3436
typeMappersFileExtension,
3537
typeMappersSuffix,
3638
tsMorphProject,
@@ -40,6 +42,7 @@ export const parseTypeMappers = ({
4042
(res, [_, { sourcePath }]) => {
4143
const typeMapperFilePath = path.posix.join(
4244
sourcePath.dir,
45+
typeMappersRelativeTargetDir,
4346
`${sourcePath.name}${typeMappersFileExtension}`
4447
);
4548

packages/typescript-resolver-files/src/preset.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export const preset: Types.OutputPreset<RawPresetConfig> = {
5151
add,
5252
resolverTypesPath: relativeResolverTypesPathFromBaseOutputDir,
5353
resolverRelativeTargetDir,
54+
mappersRelativeTargetDir: typeMappersRelativeTargetDir,
5455
mappersFileExtension: typeMappersFileExtension,
5556
mappersSuffix: typeMappersSuffix,
5657
resolverMainFile,
@@ -90,6 +91,7 @@ export const preset: Types.OutputPreset<RawPresetConfig> = {
9091
parseTypeMappers({
9192
sourceMap,
9293
resolverTypesPath,
94+
typeMappersRelativeTargetDir,
9395
typeMappersFileExtension,
9496
typeMappersSuffix,
9597
tsMorphProject,

packages/typescript-resolver-files/src/validatePresetConfig/validatePresetConfig.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ const defaultExpected: ParsedPresetConfig = {
3030
},
3131
typeDefsFilePath: './typeDefs.generated.ts',
3232
typeDefsFileMode: 'merged',
33+
mappersRelativeTargetDir: './',
3334
mappersFileExtension: '.mappers.ts',
3435
mappersSuffix: 'Mapper',
3536
scalarsModule: 'graphql-scalars',

packages/typescript-resolver-files/src/validatePresetConfig/validatePresetConfig.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ export interface ParsedPresetConfig {
5353
resolverGeneration: NormalizedResolverGeneration;
5454
typeDefsFilePath: string | false;
5555
typeDefsFileMode: TypeDefsFileMode;
56+
mappersRelativeTargetDir: string;
5657
mappersFileExtension: string;
5758
mappersSuffix: string;
5859
scalarsModule: string | false;
@@ -82,6 +83,7 @@ export interface RawPresetConfig {
8283
resolverGeneration?: string | Record<string, string | string[]>;
8384
typeDefsFilePath?: string | boolean;
8485
typeDefsFileMode?: string;
86+
mappersRelativeTargetDir?: string;
8587
mappersFileExtension?: string;
8688
mappersSuffix?: string;
8789
scalarsModule?: string | boolean;
@@ -126,6 +128,7 @@ export const validatePresetConfig = ({
126128
resolverGeneration = 'recommended',
127129
typeDefsFilePath = defaultTypeDefsFilePath,
128130
typeDefsFileMode: inputTypeDefsFileMode = 'merged',
131+
mappersRelativeTargetDir = './',
129132
mappersFileExtension = '.mappers.ts',
130133
mappersSuffix = 'Mapper',
131134
mergeSchema,
@@ -305,6 +308,7 @@ export const validatePresetConfig = ({
305308
typeDefsFileMode,
306309
mergeSchema: parseMergeSchema(mergeSchema),
307310
mode,
311+
mappersRelativeTargetDir,
308312
mappersFileExtension,
309313
mappersSuffix,
310314
scalarsModule: finalScalarsModule,

0 commit comments

Comments
 (0)