fork of hey-api/openapi-ts because I need some additional things
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request #2106 from hey-api/fix/name-builder-consistency

fix: more consistency in name builder options

authored by

Lubos and committed by
GitHub
497f9881 ed7ec25c

+59 -20
+5
.changeset/nice-pans-poke.md
··· 1 + --- 2 + '@hey-api/openapi-ts': patch 3 + --- 4 + 5 + fix(schema): nameBuilder can be a string
+5
.changeset/tidy-dolphins-help.md
··· 1 + --- 2 + '@hey-api/openapi-ts': patch 3 + --- 4 + 5 + fix(sdk): serviceNameBuilder can be a function
+1 -1
packages/openapi-ts-tests/test/openapi-ts.config.ts
··· 93 93 // include... 94 94 name: '@hey-api/sdk', 95 95 // operationId: false, 96 - // serviceNameBuilder: '^Parameters', 96 + // serviceNameBuilder: '{{name}}', 97 97 // throwOnError: true, 98 98 // transformer: '@hey-api/transformers', 99 99 // transformer: true,
+8 -2
packages/openapi-ts/src/plugins/@hey-api/schemas/plugin-legacy.ts
··· 62 62 63 63 const validName = ensureValidTypeScriptJavaScriptIdentifier(name); 64 64 65 - if (config.plugins['@hey-api/schemas']?.nameBuilder) { 66 - return config.plugins['@hey-api/schemas'].nameBuilder(validName, schema); 65 + const plugin = config.plugins['@hey-api/schemas']; 66 + 67 + if (plugin?.nameBuilder) { 68 + if (typeof plugin.nameBuilder === 'function') { 69 + return plugin.nameBuilder(validName, schema); 70 + } else { 71 + return plugin.nameBuilder.replace('{{name}}', validName); 72 + } 67 73 } 68 74 69 75 return `${validName}Schema`;
+14 -1
packages/openapi-ts/src/plugins/@hey-api/schemas/plugin.ts
··· 336 336 | OpenApiV3_0_XSchemaObject 337 337 | OpenApiV3_1_XSchemaObject; 338 338 }): string => { 339 - const customName = plugin.nameBuilder?.(name, schema) ?? `${name}Schema`; 339 + let customName = ''; 340 + 341 + if (plugin.nameBuilder) { 342 + if (typeof plugin.nameBuilder === 'function') { 343 + customName = plugin.nameBuilder(name, schema); 344 + } else { 345 + customName = plugin.nameBuilder.replace('{{name}}', name); 346 + } 347 + } 348 + 349 + if (!customName) { 350 + customName = `${name}Schema`; 351 + } 352 + 340 353 return ensureValidIdentifier(customName); 341 354 }; 342 355
+14 -10
packages/openapi-ts/src/plugins/@hey-api/schemas/types.d.ts
··· 19 19 * Customise the schema name. By default, `{{name}}Schema` is used. `name` is a 20 20 * valid JavaScript/TypeScript identifier, e.g. if your schema name is 21 21 * "Foo-Bar", `name` value would be "FooBar". 22 + * 23 + * @default '{{name}}Schema' 22 24 */ 23 - nameBuilder?: ( 24 - name: string, 25 - schema: 26 - | OpenApiV2Schema 27 - | OpenApiV3Schema 28 - | OpenApiV2_0_XSchemaObject 29 - | OpenApiV3_0_XReferenceObject 30 - | OpenApiV3_0_XSchemaObject 31 - | OpenApiV3_1_XSchemaObject, 32 - ) => string; 25 + nameBuilder?: 26 + | string 27 + | (( 28 + name: string, 29 + schema: 30 + | OpenApiV2Schema 31 + | OpenApiV3Schema 32 + | OpenApiV2_0_XSchemaObject 33 + | OpenApiV3_0_XReferenceObject 34 + | OpenApiV3_0_XSchemaObject 35 + | OpenApiV3_1_XSchemaObject, 36 + ) => string); 33 37 /** 34 38 * Name of the generated file. 35 39 *
+1 -1
packages/openapi-ts/src/plugins/@hey-api/sdk/types.d.ts
··· 77 77 * 78 78 * @default '{{name}}Service' 79 79 */ 80 - serviceNameBuilder?: string; 80 + serviceNameBuilder?: string | ((name: string) => string); 81 81 /** 82 82 * Transform response data before returning. This is useful if you want to 83 83 * convert for example ISO strings into Date objects. However, transformation
+11 -5
packages/openapi-ts/src/utils/transform.ts
··· 11 11 config: Config; 12 12 name: string; 13 13 }) => { 14 - if (config.plugins['@hey-api/sdk']?.serviceNameBuilder) { 15 - return config.plugins['@hey-api/sdk'].serviceNameBuilder.replace( 16 - '{{name}}', 17 - name, 18 - ); 14 + const plugin = config.plugins['@hey-api/sdk']; 15 + if (plugin?.serviceNameBuilder) { 16 + let customName = ''; 17 + 18 + if (typeof plugin.serviceNameBuilder === 'function') { 19 + customName = plugin.serviceNameBuilder(name); 20 + } else { 21 + customName = plugin.serviceNameBuilder.replace('{{name}}', name); 22 + } 23 + 24 + return customName; 19 25 } 20 26 21 27 return name;