Skip to content

Commit 28b220d

Browse files
committed
Revert "Improve typescript export process" await openapi-ts/openapi-typescript#2375
This reverts commit 175d90d.
1 parent 175d90d commit 28b220d

File tree

3 files changed

+89
-70
lines changed

3 files changed

+89
-70
lines changed

Containers/generate.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
const fs = require('fs');
22
const { exec } = require('child_process');
33

4-
// Generate the base TypeScript file from OpenAPI using the --enum flag and --transform to flatten refs
5-
exec('npx openapi-typescript /app/api.json -o /app/models.ts --enum --root-types --root-types-no-schema-prefix --export-type', (error, stdout, stderr) => {
4+
// Generate the base TypeScript file from OpenAPI using the --enum flag
5+
exec('npx openapi-typescript /app/api.json -o /app/models.ts --enum', (error, stdout, stderr) => {
66
if (error) {
77
console.error('Error generating TypeScript types:', error);
88
console.error(stderr);
@@ -16,6 +16,23 @@ exec('npx openapi-typescript /app/api.json -o /app/models.ts --enum --root-types
1616
// Export all schemas from the OpenAPI specification
1717
export * from './models';
1818
export { components } from './models';
19+
20+
// Re-export schemas as top-level types for easier importing
21+
import { components } from './models';
22+
export type Schemas = components['schemas'];
23+
24+
// Make each schema available as a top-level export
25+
type SchemaNames = keyof components['schemas'];
26+
type ExtractSchema<K extends SchemaNames> = components['schemas'][K];
27+
28+
${Object.keys(require('/app/api.json').components.schemas)
29+
.filter(schemaName => {
30+
const schema = require('/app/api.json').components.schemas[schemaName];
31+
return schema.type !== 'string' || !schema.enum;
32+
})
33+
.map(schemaName => `export type ${schemaName} = ExtractSchema<'${schemaName}'>`)
34+
.join('\n')
35+
}
1936
`;
2037

2138
fs.writeFileSync('/app/index.ts', indexContent);

typescript/src/index.ts

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,69 @@
22
// Export all schemas from the OpenAPI specification
33
export * from './models';
44
export { components } from './models';
5+
6+
// Re-export schemas as top-level types for easier importing
7+
import { components } from './models';
8+
export type Schemas = components['schemas'];
9+
10+
// Make each schema available as a top-level export
11+
type SchemaNames = keyof components['schemas'];
12+
type ExtractSchema<K extends SchemaNames> = components['schemas'][K];
13+
14+
export type AuthenticationErrorResponseContent = ExtractSchema<'AuthenticationErrorResponseContent'>
15+
export type ContractSummaryItem = ExtractSchema<'ContractSummaryItem'>
16+
export type ContractVariable = ExtractSchema<'ContractVariable'>
17+
export type DeleteContractRequestContent = ExtractSchema<'DeleteContractRequestContent'>
18+
export type DeleteContractResponseContent = ExtractSchema<'DeleteContractResponseContent'>
19+
export type EQModeCard = ExtractSchema<'EQModeCard'>
20+
export type EQModeData = ExtractSchema<'EQModeData'>
21+
export type EQModeItem = ExtractSchema<'EQModeItem'>
22+
export type EmptyStructure = ExtractSchema<'EmptyStructure'>
23+
export type EqCardUniqueData = ExtractSchema<'EqCardUniqueData'>
24+
export type EqDurationCard = ExtractSchema<'EqDurationCard'>
25+
export type EqLegalCard = ExtractSchema<'EqLegalCard'>
26+
export type EqMoneyCard = ExtractSchema<'EqMoneyCard'>
27+
export type EqOwnershipCard = ExtractSchema<'EqOwnershipCard'>
28+
export type EqResponsibilitesCard = ExtractSchema<'EqResponsibilitesCard'>
29+
export type EqSection = ExtractSchema<'EqSection'>
30+
export type ExposeTypesResponseContent = ExtractSchema<'ExposeTypesResponseContent'>
31+
export type FixedTermValue = ExtractSchema<'FixedTermValue'>
32+
export type FixedValueTermInference = ExtractSchema<'FixedValueTermInference'>
33+
export type GetContractReadURLRequestContent = ExtractSchema<'GetContractReadURLRequestContent'>
34+
export type GetContractReadURLResponseContent = ExtractSchema<'GetContractReadURLResponseContent'>
35+
export type GetContractRequestContent = ExtractSchema<'GetContractRequestContent'>
36+
export type GetContractResponseContent = ExtractSchema<'GetContractResponseContent'>
37+
export type GetProfilePictureRequestContent = ExtractSchema<'GetProfilePictureRequestContent'>
38+
export type GetProfilePictureResponseContent = ExtractSchema<'GetProfilePictureResponseContent'>
39+
export type GetProfileRequestContent = ExtractSchema<'GetProfileRequestContent'>
40+
export type GetProfileResponseContent = ExtractSchema<'GetProfileResponseContent'>
41+
export type GetSpecialContractRequestContent = ExtractSchema<'GetSpecialContractRequestContent'>
42+
export type GetSpecialContractResponseContent = ExtractSchema<'GetSpecialContractResponseContent'>
43+
export type GetTTSURLsRequestContent = ExtractSchema<'GetTTSURLsRequestContent'>
44+
export type GetTTSURLsResponseContent = ExtractSchema<'GetTTSURLsResponseContent'>
45+
export type GetUploadURLRequestContent = ExtractSchema<'GetUploadURLRequestContent'>
46+
export type GetUploadURLResponseContent = ExtractSchema<'GetUploadURLResponseContent'>
47+
export type InternalServerErrorResponseContent = ExtractSchema<'InternalServerErrorResponseContent'>
48+
export type IqSection = ExtractSchema<'IqSection'>
49+
export type ListContractsResponseContent = ExtractSchema<'ListContractsResponseContent'>
50+
export type ListSpecialContractsResponseContent = ExtractSchema<'ListSpecialContractsResponseContent'>
51+
export type PingResponseContent = ExtractSchema<'PingResponseContent'>
52+
export type PresignedPostData = ExtractSchema<'PresignedPostData'>
53+
export type ProcessingIncompleteErrorResponseContent = ExtractSchema<'ProcessingIncompleteErrorResponseContent'>
54+
export type QA = ExtractSchema<'QA'>
55+
export type QASection = ExtractSchema<'QASection'>
56+
export type ResourceNotFoundErrorResponseContent = ExtractSchema<'ResourceNotFoundErrorResponseContent'>
57+
export type ShareContractRequestContent = ExtractSchema<'ShareContractRequestContent'>
58+
export type ShareContractResponseContent = ExtractSchema<'ShareContractResponseContent'>
59+
export type SharedUserDetails = ExtractSchema<'SharedUserDetails'>
60+
export type SimpleTermDescription = ExtractSchema<'SimpleTermDescription'>
61+
export type TTSPresignedUrlMap = ExtractSchema<'TTSPresignedUrlMap'>
62+
export type Term = ExtractSchema<'Term'>
63+
export type UpdateContractRequestContent = ExtractSchema<'UpdateContractRequestContent'>
64+
export type UpdateContractResponseContent = ExtractSchema<'UpdateContractResponseContent'>
65+
export type UpdateProfileRequestContent = ExtractSchema<'UpdateProfileRequestContent'>
66+
export type UpdateProfileResponseContent = ExtractSchema<'UpdateProfileResponseContent'>
67+
export type UploadProfilePictureRequestContent = ExtractSchema<'UploadProfilePictureRequestContent'>
68+
export type UploadProfilePictureResponseContent = ExtractSchema<'UploadProfilePictureResponseContent'>
69+
export type UserProfile = ExtractSchema<'UserProfile'>
70+
export type ValidationErrorResponseContent = ExtractSchema<'ValidationErrorResponseContent'>

typescript/src/models.ts

Lines changed: 4 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Do not make direct changes to the file.
44
*/
55

6-
export type paths = {
6+
export interface paths {
77
"/deleteContract": {
88
parameters: {
99
query?: never;
@@ -260,9 +260,9 @@ export type paths = {
260260
patch?: never;
261261
trace?: never;
262262
};
263-
};
263+
}
264264
export type webhooks = Record<string, never>;
265-
export type components = {
265+
export interface components {
266266
schemas: {
267267
/** @enum {string} */
268268
AccountType: AccountType;
@@ -572,71 +572,7 @@ export type components = {
572572
requestBodies: never;
573573
headers: never;
574574
pathItems: never;
575-
};
576-
export type AccountType = components['schemas']['AccountType'];
577-
export type AuthenticationErrorResponseContent = components['schemas']['AuthenticationErrorResponseContent'];
578-
export type ContractStatus = components['schemas']['ContractStatus'];
579-
export type ContractSummaryItem = components['schemas']['ContractSummaryItem'];
580-
export type ContractType = components['schemas']['ContractType'];
581-
export type ContractVariable = components['schemas']['ContractVariable'];
582-
export type ContractVariableType = components['schemas']['ContractVariableType'];
583-
export type DeleteContractRequestContent = components['schemas']['DeleteContractRequestContent'];
584-
export type DeleteContractResponseContent = components['schemas']['DeleteContractResponseContent'];
585-
export type DurationType = components['schemas']['DurationType'];
586-
export type EqModeCard = components['schemas']['EQModeCard'];
587-
export type EqModeData = components['schemas']['EQModeData'];
588-
export type EqModeItem = components['schemas']['EQModeItem'];
589-
export type EmptyStructure = components['schemas']['EmptyStructure'];
590-
export type EqCardKey = components['schemas']['EqCardKey'];
591-
export type EqCardType = components['schemas']['EqCardType'];
592-
export type EqCardUniqueData = components['schemas']['EqCardUniqueData'];
593-
export type EqDurationCard = components['schemas']['EqDurationCard'];
594-
export type EqLegalCard = components['schemas']['EqLegalCard'];
595-
export type EqMoneyCard = components['schemas']['EqMoneyCard'];
596-
export type EqOwnershipCard = components['schemas']['EqOwnershipCard'];
597-
export type EqResponsibilitesCard = components['schemas']['EqResponsibilitesCard'];
598-
export type EqSection = components['schemas']['EqSection'];
599-
export type ExposeTypesResponseContent = components['schemas']['ExposeTypesResponseContent'];
600-
export type FixedTermValue = components['schemas']['FixedTermValue'];
601-
export type FixedValueTermInference = components['schemas']['FixedValueTermInference'];
602-
export type GetContractReadUrlRequestContent = components['schemas']['GetContractReadURLRequestContent'];
603-
export type GetContractReadUrlResponseContent = components['schemas']['GetContractReadURLResponseContent'];
604-
export type GetContractRequestContent = components['schemas']['GetContractRequestContent'];
605-
export type GetContractResponseContent = components['schemas']['GetContractResponseContent'];
606-
export type GetProfilePictureRequestContent = components['schemas']['GetProfilePictureRequestContent'];
607-
export type GetProfilePictureResponseContent = components['schemas']['GetProfilePictureResponseContent'];
608-
export type GetProfileRequestContent = components['schemas']['GetProfileRequestContent'];
609-
export type GetProfileResponseContent = components['schemas']['GetProfileResponseContent'];
610-
export type GetSpecialContractRequestContent = components['schemas']['GetSpecialContractRequestContent'];
611-
export type GetSpecialContractResponseContent = components['schemas']['GetSpecialContractResponseContent'];
612-
export type GetTtsurLsRequestContent = components['schemas']['GetTTSURLsRequestContent'];
613-
export type GetTtsurLsResponseContent = components['schemas']['GetTTSURLsResponseContent'];
614-
export type GetUploadUrlRequestContent = components['schemas']['GetUploadURLRequestContent'];
615-
export type GetUploadUrlResponseContent = components['schemas']['GetUploadURLResponseContent'];
616-
export type InternalServerErrorResponseContent = components['schemas']['InternalServerErrorResponseContent'];
617-
export type IqSection = components['schemas']['IqSection'];
618-
export type ListContractsResponseContent = components['schemas']['ListContractsResponseContent'];
619-
export type ListSpecialContractsResponseContent = components['schemas']['ListSpecialContractsResponseContent'];
620-
export type PingResponseContent = components['schemas']['PingResponseContent'];
621-
export type PresignedPostData = components['schemas']['PresignedPostData'];
622-
export type ProcessingIncompleteErrorResponseContent = components['schemas']['ProcessingIncompleteErrorResponseContent'];
623-
export type Qa = components['schemas']['QA'];
624-
export type QaSection = components['schemas']['QASection'];
625-
export type ResourceNotFoundErrorResponseContent = components['schemas']['ResourceNotFoundErrorResponseContent'];
626-
export type ShareContractRequestContent = components['schemas']['ShareContractRequestContent'];
627-
export type ShareContractResponseContent = components['schemas']['ShareContractResponseContent'];
628-
export type SharedUserDetails = components['schemas']['SharedUserDetails'];
629-
export type SimpleTermDescription = components['schemas']['SimpleTermDescription'];
630-
export type TtsPresignedUrlMap = components['schemas']['TTSPresignedUrlMap'];
631-
export type Term = components['schemas']['Term'];
632-
export type UpdateContractRequestContent = components['schemas']['UpdateContractRequestContent'];
633-
export type UpdateContractResponseContent = components['schemas']['UpdateContractResponseContent'];
634-
export type UpdateProfileRequestContent = components['schemas']['UpdateProfileRequestContent'];
635-
export type UpdateProfileResponseContent = components['schemas']['UpdateProfileResponseContent'];
636-
export type UploadProfilePictureRequestContent = components['schemas']['UploadProfilePictureRequestContent'];
637-
export type UploadProfilePictureResponseContent = components['schemas']['UploadProfilePictureResponseContent'];
638-
export type UserProfile = components['schemas']['UserProfile'];
639-
export type ValidationErrorResponseContent = components['schemas']['ValidationErrorResponseContent'];
575+
}
640576
export type $defs = Record<string, never>;
641577
export interface operations {
642578
DeleteContract: {

0 commit comments

Comments
 (0)