Skip to content

Commit b85db33

Browse files
committed
fix: tsconfig usage, no default type exports
wanted to try verbatimModuleSyntax but it left a dangling import to a devDependency
1 parent 7f6ab82 commit b85db33

55 files changed

Lines changed: 201 additions & 248 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

eslint.config.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ const config = tseslint.config(
9898
'@typescript-eslint/consistent-type-imports': 'off',
9999
// broken?
100100
'@typescript-eslint/no-unnecessary-condition': 'off',
101+
102+
'@typescript-eslint/no-deprecated': 'warn',
101103
},
102104
},
103105
);

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414
"homepage": "https://github.com/thechristophe/openapi-typebox#readme",
1515
"scripts": {
1616
"build": "tsc --project tsconfig.build.json && pnpm copy-files",
17-
"copy-files": "copyfiles -f src/output/* ./dist/output/",
17+
"copy-files": "copyfiles -f src/output/* ./dist/src/output/",
1818
"clean": "rimraf dist/",
1919
"prepublishOnly": "pnpm clean && pnpm build",
2020
"lint": "eslint src",
2121
"lint:export": "eslint --output-file eslint_report.json --format json src",
2222
"lint:formatting": "prettier --check .",
2323
"lint:types": "tsc --noEmit",
24-
"cli": "node ./dist/client-cli.js"
24+
"cli": "node ./dist/src/client-cli.js"
2525
},
2626
"devDependencies": {
2727
"@eslint-community/eslint-plugin-eslint-comments": "^4.4.1",

src/generation/client.ts

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,25 @@
1-
import { JSONSchema7 } from 'json-schema';
1+
import { type JSONSchema7 } from 'json-schema';
22
import fs from 'node:fs';
33
import YAML from 'yaml';
4-
import type OpenApiSpec from '../openapi/index.js';
4+
import { type OpenApiSpecification } from '../openapi/index.js';
55
import { OpenApiMethods } from '../openapi/PathItem.js';
6-
import operationToFunction, { FunctionMetadata } from './function.js';
6+
import operationToFunction, { type FunctionMetadata } from './function.js';
77
import generateModels from './models.js';
88
import generateResponses from './responses.js';
99
import configuration from './utility/configuration.js';
1010
import { NotImplementedError } from './utility/errors.js';
1111
import lintAndCheckFiles from './utility/lintAndCheckFiles.js';
1212
import { default as rootLogger } from './utility/logger.js';
13-
import PathInfo, { FileInfo, resolveAbsolutePath } from './utility/PathInfo.js';
13+
import { type FileInfo, type PathInfo, resolveAbsolutePath } from './utility/PathInfo.js';
1414
import template from './utility/templater.js';
1515
import writeSourceFile from './utility/writeSourceFile.js';
1616

17+
import baselineTsConfig from '../../tsconfig.json' with { type: 'json' };
18+
1719
const logger = rootLogger.child({ context: 'client' });
1820

1921
const processPaths = (
20-
paths: Required<OpenApiSpec>['paths'],
22+
paths: Required<OpenApiSpecification>['paths'],
2123
outDir: PathInfo,
2224
): FunctionMetadata[] => {
2325
logger.info('Mkdir', resolveAbsolutePath(outDir));
@@ -166,17 +168,16 @@ const generatePackage = (version: string, outDir: PathInfo) => {
166168
{ ...outDir, path: '.', filename: 'tsconfig.json' },
167169
JSON.stringify(
168170
{
171+
...baselineTsConfig,
169172
compilerOptions: {
173+
...baselineTsConfig.compilerOptions,
170174
declaration: true,
171-
target: 'es2020',
172-
module: 'nodenext',
173-
noImplicitAny: true,
174175
outDir: 'dist',
175176
rootDir: '.',
176177
typeRoots: ['node_modules/@types'],
177-
moduleResolution: 'NodeNext',
178-
allowSyntheticDefaultImports: true,
178+
lib: [...baselineTsConfig.compilerOptions.lib, 'dom', 'dom.iterable'],
179179
},
180+
include: ['**/*.ts'],
180181
exclude: ['dist', 'node_modules'],
181182
},
182183
null,
@@ -187,7 +188,7 @@ const generatePackage = (version: string, outDir: PathInfo) => {
187188

188189
const client = async (specPath: string, outPath: PathInfo) => {
189190
// TODO: validation
190-
let spec: OpenApiSpec;
191+
let spec: OpenApiSpecification;
191192
if (['.yml', '.yaml'].some((e) => specPath.endsWith(e))) {
192193
const fileContents = fs.readFileSync(specPath).toString();
193194
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment

src/generation/function.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import type Operation from '../openapi/Operation.js';
2-
import type Parameter from '../openapi/Parameter.js';
3-
import type Reference from '../openapi/Reference.js';
4-
import type RequestBody from '../openapi/RequestBody.js';
1+
import { type Operation } from '../openapi/Operation.js';
2+
import { type Parameter } from '../openapi/Parameter.js';
3+
import { type Reference } from '../openapi/Reference.js';
4+
import { type RequestBody } from '../openapi/RequestBody.js';
55
import writeSourceFile from './utility/writeSourceFile.js';
66

77
import buildUrl from './function/buildUrl.js';
@@ -11,11 +11,11 @@ import routeToOperationName from './function/helpers/routeToOperationName.js';
1111
import destructureParameters from './function/parameterDestructuring.js';
1212
import generateFunctionParameterType from './function/parameterType.js';
1313
import buildResponseReturn from './function/returnStatement.js';
14-
import buildResponseTypes, { ResponseTypes } from './response/responseTypes.js';
14+
import buildResponseTypes, { type ResponseTypes } from './response/responseTypes.js';
1515
import { GenerationError } from './utility/errors.js';
16-
import { ImportCollection, ImportSource, resolveImports } from './utility/importSource.js';
16+
import { ImportCollection, type ImportSource, resolveImports } from './utility/importSource.js';
1717
import { default as rootLogger } from './utility/logger.js';
18-
import PathInfo, { FileInfo } from './utility/PathInfo.js';
18+
import { type FileInfo, type PathInfo } from './utility/PathInfo.js';
1919
import { sanitizeVariableName, uppercaseFirst } from './utility/sanitization.js';
2020
import template from './utility/templater.js';
2121

src/generation/function/buildUrl.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type Parameter from '../../openapi/Parameter.js';
1+
import { type Parameter } from '../../openapi/Parameter.js';
22
import template from '../utility/templater.js';
33
import substituteParams from './helpers/substituteParams.js';
44

src/generation/function/helpers/refUnsupported.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type Reference from '../../../openapi/Reference.js';
1+
import { type Reference } from '../../../openapi/Reference.js';
22
import { NotImplementedError } from '../../utility/errors.js';
33

44
function refUnsupported<T>(thing: Reference | T): asserts thing is T {

src/generation/function/helpers/substituteParams.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type Parameter from '../../../openapi/Parameter.js';
1+
import { type Parameter } from '../../../openapi/Parameter.js';
22
import { InvalidParamError } from '../../function.js';
33

44
const substituteParams = (route: string, parameters: Parameter[]) => {

src/generation/function/parameterDestructuring.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import type Parameter from '../../openapi/Parameter.js';
2-
import type RequestBody from '../../openapi/RequestBody.js';
1+
import { type Parameter } from '../../openapi/Parameter.js';
2+
import { type RequestBody } from '../../openapi/RequestBody.js';
33
import { needsSanitization, sanitizeVariableName } from '../utility/sanitization.js';
44
import template from '../utility/templater.js';
55

src/generation/function/parameterType.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
import { JSONSchema7Definition } from 'json-schema';
2-
import Parameter from '../../openapi/Parameter.js';
3-
import type RequestBody from '../../openapi/RequestBody.js';
1+
import { type JSONSchema7Definition } from 'json-schema';
2+
import { type Parameter } from '../../openapi/Parameter.js';
3+
import { type RequestBody } from '../../openapi/RequestBody.js';
44
import schemaToModel from '../model.js';
55
import {
66
ImportCollection,
7-
ImportSource,
7+
type ImportSource,
88
resolveImports,
99
toImportPath,
1010
} from '../utility/importSource.js';
1111
import { default as rootLogger } from '../utility/logger.js';
12-
import { FileInfo } from '../utility/PathInfo.js';
12+
import { type FileInfo } from '../utility/PathInfo.js';
1313
import template from '../utility/templater.js';
1414
import writeSourceFile from '../utility/writeSourceFile.js';
1515

src/generation/function/returnStatement.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import type Responses from '../../openapi/Responses.js';
2-
import { ResponseType, ResponseTypes } from '../response/responseTypes.js';
1+
import { type Response } from '../../openapi/Response.js';
2+
import { type Responses } from '../../openapi/Responses.js';
3+
import { type ResponseType, type ResponseTypes } from '../response/responseTypes.js';
34
import context from '../utility/context.js';
45
import template from '../utility/templater.js';
56

@@ -22,7 +23,7 @@ const buildResponseReturn = (
2223
continue;
2324
}
2425

25-
let resolvedResponse;
26+
let resolvedResponse: Response;
2627
if ('$ref' in response) {
2728
const resolved = context.responses.lookup(response.$ref);
2829
if (resolved === undefined) {

0 commit comments

Comments
 (0)