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 #944 from hey-api/fix/additional-properties-integer

fix: additional properties integer type

authored by

Lubos and committed by
GitHub
e0bdd51e f863be76

+206 -17
+5
.changeset/fuzzy-ties-fly.md
··· 1 + --- 2 + '@hey-api/openapi-ts': patch 3 + --- 4 + 5 + fix: correctly handle integer type in additional properties
+11 -10
packages/openapi-ts/src/openApi/common/parser/__tests__/type.spec.ts
··· 16 16 17 17 describe('getMappedType', () => { 18 18 it.each([ 19 - { expected: undefined, type: '' }, 20 - { expected: 'unknown', type: 'any' }, 21 - { expected: 'unknown[]', type: 'array' }, 19 + { expected: 'binary', type: 'file' }, 22 20 { expected: 'boolean', type: 'boolean' }, 21 + { expected: 'null', type: 'null' }, 23 22 { expected: 'number', type: 'byte' }, 24 - { expected: 'string', type: 'char' }, 25 - { expected: 'string', type: 'date-time' }, 26 - { expected: 'string', type: 'date' }, 27 23 { expected: 'number', type: 'double' }, 28 - { expected: 'binary', type: 'file' }, 29 24 { expected: 'number', type: 'float' }, 30 25 { expected: 'number', type: 'int' }, 31 26 { expected: 'number', type: 'integer' }, 32 27 { expected: 'number', type: 'long' }, 33 - { expected: 'null', type: 'null' }, 34 28 { expected: 'number', type: 'number' }, 35 - { expected: 'unknown', type: 'object' }, 29 + { expected: 'number', type: 'short' }, 30 + { expected: 'string', type: 'char' }, 31 + { expected: 'string', type: 'date-time' }, 32 + { expected: 'string', type: 'date' }, 36 33 { expected: 'string', type: 'password' }, 37 - { expected: 'number', type: 'short' }, 38 34 { expected: 'string', type: 'string' }, 35 + { expected: 'unknown', type: 'any' }, 36 + { expected: 'unknown', type: 'object' }, 37 + { expected: 'unknown', type: 'unknown' }, 38 + { expected: 'unknown[]', type: 'array' }, 39 39 { expected: 'void', type: 'void' }, 40 + { expected: undefined, type: '' }, 40 41 ])('should map type $type to $expected', ({ type, expected }) => { 41 42 expect(getMappedType(type)).toEqual(expected); 42 43 });
+1
packages/openapi-ts/src/openApi/common/parser/type.ts
··· 24 24 switch (type) { 25 25 case 'any': 26 26 case 'object': 27 + case 'unknown': 27 28 return 'unknown'; 28 29 case 'array': 29 30 return 'unknown[]';
+3 -4
packages/openapi-ts/src/openApi/v3/parser/getModel.ts
··· 223 223 ) { 224 224 if ( 225 225 definition.properties && 226 - !( 227 - !Object.keys(definition.properties).length && 228 - definition.additionalProperties 229 - ) 226 + (Object.keys(definition.properties).length > 0 || 227 + !definition.additionalProperties) 230 228 ) { 231 229 model.base = 'unknown'; 232 230 model.export = 'interface'; ··· 253 251 254 252 if (definition.additionalProperties) { 255 253 const modelProperty = getAdditionalPropertiesModel({ 254 + debug, 256 255 definition, 257 256 getModel, 258 257 model,
+2 -2
packages/openapi-ts/src/openApi/v3/parser/getModelProperties.ts
··· 55 55 if ( 56 56 definition.additionalProperties && 57 57 definition.properties && 58 - Object.keys(definition.properties).length 58 + Object.keys(definition.properties).length > 0 59 59 ) { 60 60 const additionalPropertiesType = 61 61 typeof definition.additionalProperties === 'object' && ··· 64 64 ? definition.additionalProperties.type 65 65 : apModel.base; 66 66 const additionalProperties = [ 67 - additionalPropertiesType, 67 + getType({ type: additionalPropertiesType }).base, 68 68 ...model.properties.map((property) => property.base), 69 69 ]; 70 70 apModel.base = additionalProperties.filter(unique).join(' | ');
+3 -1
packages/openapi-ts/src/openApi/v3/parser/getOperationRequestBody.ts
··· 9 9 10 10 export const getOperationRequestBody = ({ 11 11 body, 12 + debug, 12 13 openApi, 13 14 types, 14 15 }: { 15 16 body: OpenApiRequestBody; 17 + debug?: boolean; 16 18 openApi: OpenApi; 17 19 types: Client['types']; 18 20 }): OperationParameter => { ··· 73 75 } 74 76 75 77 const model = getModel({ 76 - debug: true, 78 + debug, 77 79 definition: content.schema, 78 80 openApi, 79 81 types,
+3
packages/openapi-ts/src/openApi/v3/parser/operation.ts
··· 40 40 }; 41 41 42 42 export const getOperation = ({ 43 + debug, 43 44 method, 44 45 op, 45 46 openApi, ··· 48 49 types, 49 50 url, 50 51 }: { 52 + debug?: boolean; 51 53 method: Lowercase<Operation['method']>; 52 54 op: OpenApiOperation; 53 55 openApi: OpenApi; ··· 117 119 const requestBodyDef = getRef<OpenApiRequestBody>(openApi, op.requestBody); 118 120 const requestBody = getOperationRequestBody({ 119 121 body: requestBodyDef, 122 + debug, 120 123 openApi, 121 124 types, 122 125 });
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3-hey-api-client-axios-bundle/types.gen.ts.snap
··· 1057 1057 }; 1058 1058 }; 1059 1059 1060 + export type AdditionalPropertiesIntegerIssue = { 1061 + value: number; 1062 + [key: string]: (number) | undefined; 1063 + }; 1064 + 1060 1065 /** 1061 1066 * This is a reusable parameter 1062 1067 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3-hey-api-client-axios-class/types.gen.ts.snap
··· 1057 1057 }; 1058 1058 }; 1059 1059 1060 + export type AdditionalPropertiesIntegerIssue = { 1061 + value: number; 1062 + [key: string]: (number) | undefined; 1063 + }; 1064 + 1060 1065 /** 1061 1066 * This is a reusable parameter 1062 1067 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3-hey-api-client-axios-plugin-tanstack-react-query/types.gen.ts.snap
··· 1057 1057 }; 1058 1058 }; 1059 1059 1060 + export type AdditionalPropertiesIntegerIssue = { 1061 + value: number; 1062 + [key: string]: (number) | undefined; 1063 + }; 1064 + 1060 1065 /** 1061 1066 * This is a reusable parameter 1062 1067 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3-hey-api-client-axios-plugin-tanstack-solid-query/types.gen.ts.snap
··· 1057 1057 }; 1058 1058 }; 1059 1059 1060 + export type AdditionalPropertiesIntegerIssue = { 1061 + value: number; 1062 + [key: string]: (number) | undefined; 1063 + }; 1064 + 1060 1065 /** 1061 1066 * This is a reusable parameter 1062 1067 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3-hey-api-client-axios-plugin-tanstack-svelte-query/types.gen.ts.snap
··· 1057 1057 }; 1058 1058 }; 1059 1059 1060 + export type AdditionalPropertiesIntegerIssue = { 1061 + value: number; 1062 + [key: string]: (number) | undefined; 1063 + }; 1064 + 1060 1065 /** 1061 1066 * This is a reusable parameter 1062 1067 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3-hey-api-client-axios-plugin-tanstack-vue-query/types.gen.ts.snap
··· 1057 1057 }; 1058 1058 }; 1059 1059 1060 + export type AdditionalPropertiesIntegerIssue = { 1061 + value: number; 1062 + [key: string]: (number) | undefined; 1063 + }; 1064 + 1060 1065 /** 1061 1066 * This is a reusable parameter 1062 1067 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3-hey-api-client-axios/types.gen.ts.snap
··· 1057 1057 }; 1058 1058 }; 1059 1059 1060 + export type AdditionalPropertiesIntegerIssue = { 1061 + value: number; 1062 + [key: string]: (number) | undefined; 1063 + }; 1064 + 1060 1065 /** 1061 1066 * This is a reusable parameter 1062 1067 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3-hey-api-client-fetch-bundle/types.gen.ts.snap
··· 1057 1057 }; 1058 1058 }; 1059 1059 1060 + export type AdditionalPropertiesIntegerIssue = { 1061 + value: number; 1062 + [key: string]: (number) | undefined; 1063 + }; 1064 + 1060 1065 /** 1061 1066 * This is a reusable parameter 1062 1067 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3-hey-api-client-fetch-class/types.gen.ts.snap
··· 1057 1057 }; 1058 1058 }; 1059 1059 1060 + export type AdditionalPropertiesIntegerIssue = { 1061 + value: number; 1062 + [key: string]: (number) | undefined; 1063 + }; 1064 + 1060 1065 /** 1061 1066 * This is a reusable parameter 1062 1067 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3-hey-api-client-fetch-plugin-tanstack-react-query/types.gen.ts.snap
··· 1057 1057 }; 1058 1058 }; 1059 1059 1060 + export type AdditionalPropertiesIntegerIssue = { 1061 + value: number; 1062 + [key: string]: (number) | undefined; 1063 + }; 1064 + 1060 1065 /** 1061 1066 * This is a reusable parameter 1062 1067 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3-hey-api-client-fetch-plugin-tanstack-solid-query/types.gen.ts.snap
··· 1057 1057 }; 1058 1058 }; 1059 1059 1060 + export type AdditionalPropertiesIntegerIssue = { 1061 + value: number; 1062 + [key: string]: (number) | undefined; 1063 + }; 1064 + 1060 1065 /** 1061 1066 * This is a reusable parameter 1062 1067 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3-hey-api-client-fetch-plugin-tanstack-svelte-query/types.gen.ts.snap
··· 1057 1057 }; 1058 1058 }; 1059 1059 1060 + export type AdditionalPropertiesIntegerIssue = { 1061 + value: number; 1062 + [key: string]: (number) | undefined; 1063 + }; 1064 + 1060 1065 /** 1061 1066 * This is a reusable parameter 1062 1067 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3-hey-api-client-fetch-plugin-tanstack-vue-query/types.gen.ts.snap
··· 1057 1057 }; 1058 1058 }; 1059 1059 1060 + export type AdditionalPropertiesIntegerIssue = { 1061 + value: number; 1062 + [key: string]: (number) | undefined; 1063 + }; 1064 + 1060 1065 /** 1061 1066 * This is a reusable parameter 1062 1067 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3-hey-api-client-fetch/types.gen.ts.snap
··· 1057 1057 }; 1058 1058 }; 1059 1059 1060 + export type AdditionalPropertiesIntegerIssue = { 1061 + value: number; 1062 + [key: string]: (number) | undefined; 1063 + }; 1064 + 1060 1065 /** 1061 1066 * This is a reusable parameter 1062 1067 */
+13
packages/openapi-ts/test/__snapshots__/test/generated/v3-schemas-form/schemas.gen.ts.snap
··· 1752 1752 } 1753 1753 } 1754 1754 ] 1755 + } as const; 1756 + 1757 + export const $AdditionalPropertiesIntegerIssue = { 1758 + type: 'object', 1759 + required: ['value'], 1760 + properties: { 1761 + value: { 1762 + type: 'integer' 1763 + } 1764 + }, 1765 + additionalProperties: { 1766 + type: 'integer' 1767 + } 1755 1768 } as const;
+13
packages/openapi-ts/test/__snapshots__/test/generated/v3-schemas-json/schemas.gen.ts.snap
··· 1912 1912 } 1913 1913 } 1914 1914 ] 1915 + } as const; 1916 + 1917 + export const $AdditionalPropertiesIntegerIssue = { 1918 + type: 'object', 1919 + required: ['value'], 1920 + properties: { 1921 + value: { 1922 + type: 'integer' 1923 + } 1924 + }, 1925 + additionalProperties: { 1926 + type: 'integer' 1927 + } 1915 1928 } as const;
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3-types-PascalCase/types.gen.ts.snap
··· 934 934 }; 935 935 }; 936 936 937 + export type AdditionalPropertiesIntegerIssue = { 938 + value: number; 939 + [key: string]: (number) | undefined; 940 + }; 941 + 937 942 /** 938 943 * This is a reusable parameter 939 944 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3/types.gen.ts.snap
··· 1057 1057 }; 1058 1058 }; 1059 1059 1060 + export type AdditionalPropertiesIntegerIssue = { 1061 + value: number; 1062 + [key: string]: (number) | undefined; 1063 + }; 1064 + 1060 1065 /** 1061 1066 * This is a reusable parameter 1062 1067 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3_angular/types.gen.ts.snap
··· 934 934 }; 935 935 }; 936 936 937 + export type AdditionalPropertiesIntegerIssue = { 938 + value: number; 939 + [key: string]: (number) | undefined; 940 + }; 941 + 937 942 /** 938 943 * This is a reusable parameter 939 944 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3_axios/types.gen.ts.snap
··· 1057 1057 }; 1058 1058 }; 1059 1059 1060 + export type AdditionalPropertiesIntegerIssue = { 1061 + value: number; 1062 + [key: string]: (number) | undefined; 1063 + }; 1064 + 1060 1065 /** 1061 1066 * This is a reusable parameter 1062 1067 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3_client/types.gen.ts.snap
··· 934 934 }; 935 935 }; 936 936 937 + export type AdditionalPropertiesIntegerIssue = { 938 + value: number; 939 + [key: string]: (number) | undefined; 940 + }; 941 + 937 942 /** 938 943 * This is a reusable parameter 939 944 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3_enums_typescript/types.gen.ts.snap
··· 1013 1013 }; 1014 1014 }; 1015 1015 1016 + export type AdditionalPropertiesIntegerIssue = { 1017 + value: number; 1018 + [key: string]: (number) | undefined; 1019 + }; 1020 + 1016 1021 /** 1017 1022 * This is a reusable parameter 1018 1023 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3_enums_typescript_namespace/types.gen.ts.snap
··· 1044 1044 }; 1045 1045 }; 1046 1046 1047 + export type AdditionalPropertiesIntegerIssue = { 1048 + value: number; 1049 + [key: string]: (number) | undefined; 1050 + }; 1051 + 1047 1052 /** 1048 1053 * This is a reusable parameter 1049 1054 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3_node/types.gen.ts.snap
··· 1057 1057 }; 1058 1058 }; 1059 1059 1060 + export type AdditionalPropertiesIntegerIssue = { 1061 + value: number; 1062 + [key: string]: (number) | undefined; 1063 + }; 1064 + 1060 1065 /** 1061 1066 * This is a reusable parameter 1062 1067 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3_services_filter/types.gen.ts.snap
··· 1057 1057 }; 1058 1058 }; 1059 1059 1060 + export type AdditionalPropertiesIntegerIssue = { 1061 + value: number; 1062 + [key: string]: (number) | undefined; 1063 + }; 1064 + 1060 1065 /** 1061 1066 * This is a reusable parameter 1062 1067 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3_services_name/types.gen.ts.snap
··· 1057 1057 }; 1058 1058 }; 1059 1059 1060 + export type AdditionalPropertiesIntegerIssue = { 1061 + value: number; 1062 + [key: string]: (number) | undefined; 1063 + }; 1064 + 1060 1065 /** 1061 1066 * This is a reusable parameter 1062 1067 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3_tree_shakeable/types.gen.ts.snap
··· 1057 1057 }; 1058 1058 }; 1059 1059 1060 + export type AdditionalPropertiesIntegerIssue = { 1061 + value: number; 1062 + [key: string]: (number) | undefined; 1063 + }; 1064 + 1060 1065 /** 1061 1066 * This is a reusable parameter 1062 1067 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3_types/types.gen.ts.snap
··· 934 934 }; 935 935 }; 936 936 937 + export type AdditionalPropertiesIntegerIssue = { 938 + value: number; 939 + [key: string]: (number) | undefined; 940 + }; 941 + 937 942 /** 938 943 * This is a reusable parameter 939 944 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3_types_no_tree/types.gen.ts.snap
··· 934 934 }; 935 935 }; 936 936 937 + export type AdditionalPropertiesIntegerIssue = { 938 + value: number; 939 + [key: string]: (number) | undefined; 940 + }; 941 + 937 942 /** 938 943 * This is a reusable parameter 939 944 */
+5
packages/openapi-ts/test/__snapshots__/test/generated/v3_xhr/types.gen.ts.snap
··· 1057 1057 }; 1058 1058 }; 1059 1059 1060 + export type AdditionalPropertiesIntegerIssue = { 1061 + value: number; 1062 + [key: string]: (number) | undefined; 1063 + }; 1064 + 1060 1065 /** 1061 1066 * This is a reusable parameter 1062 1067 */
+12
packages/openapi-ts/test/spec/v3.json
··· 3503 3503 } 3504 3504 } 3505 3505 ] 3506 + }, 3507 + "AdditionalPropertiesIntegerIssue": { 3508 + "type": "object", 3509 + "required": ["value"], 3510 + "properties": { 3511 + "value": { 3512 + "type": "integer" 3513 + } 3514 + }, 3515 + "additionalProperties": { 3516 + "type": "integer" 3517 + } 3506 3518 } 3507 3519 } 3508 3520 }