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

refactor: move shared utility types into a separate package

Lubos b64680fe 1df38b03

+835 -66
+1
packages/codegen-core/package.json
··· 69 69 }, 70 70 "devDependencies": { 71 71 "@config/vite-base": "workspace:*", 72 + "@hey-api/types": "workspace:*", 72 73 "eslint": "9.39.1", 73 74 "prettier": "3.4.2", 74 75 "typescript": "5.9.3"
+1 -12
packages/codegen-core/src/log.ts
··· 1 + import type { MaybeArray, MaybeFunc } from '@hey-api/types'; 1 2 import colors from 'ansi-colors'; 2 3 // @ts-expect-error 3 4 import colorSupport from 'color-support'; 4 5 5 6 colors.enabled = colorSupport().hasBasic; 6 - 7 - /** 8 - * Accepts a value or a readonly array of values of type T. 9 - */ 10 - export type MaybeArray<T> = T | ReadonlyArray<T>; 11 - 12 - /** 13 - * Accepts a value or a function returning a value. 14 - */ 15 - export type MaybeFunc<T extends (...args: Array<any>) => any> = 16 - | T 17 - | ReturnType<T>; 18 7 19 8 const DEBUG_NAMESPACE = 'heyapi'; 20 9
+1
packages/codegen-core/tsdown.config.ts
··· 19 19 entry: ['src/index.ts'], 20 20 format: ['cjs', 'esm'], 21 21 minify: false, 22 + noExternal: ['@hey-api/types'], 22 23 shims: false, 23 24 sourcemap: true, 24 25 treeshake: true,
+14
packages/openapi-python/.gitignore
··· 1 + .DS_Store 2 + .idea 3 + .tsdown 4 + .tmp 5 + junit.xml 6 + logs 7 + node_modules 8 + npm-debug.log* 9 + temp 10 + 11 + *.iml 12 + dist 13 + coverage 14 + .env
+21
packages/openapi-python/LICENSE.md
··· 1 + MIT License 2 + 3 + Copyright (c) Hey API 4 + 5 + Permission is hereby granted, free of charge, to any person obtaining a copy 6 + of this software and associated documentation files (the "Software"), to deal 7 + in the Software without restriction, including without limitation the rights 8 + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 + copies of the Software, and to permit persons to whom the Software is 10 + furnished to do so, subject to the following conditions: 11 + 12 + The above copyright notice and this permission notice shall be included in all 13 + copies or substantial portions of the Software. 14 + 15 + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 + SOFTWARE.
+5
packages/openapi-python/README.md
··· 1 + <div align="center"> 2 + <h1><b>OpenAPI Python</b></h1> 3 + </div> 4 + 5 + Coming soon.
+99
packages/openapi-python/package.json
··· 1 + { 2 + "name": "@hey-api/openapi-python", 3 + "version": "0.0.1", 4 + "private": true, 5 + "description": "🐍 OpenAPI to Python codegen.", 6 + "homepage": "https://heyapi.dev/", 7 + "repository": { 8 + "type": "git", 9 + "url": "git+https://github.com/hey-api/openapi-ts.git" 10 + }, 11 + "bugs": { 12 + "url": "https://github.com/hey-api/openapi-ts/issues" 13 + }, 14 + "license": "MIT", 15 + "author": { 16 + "email": "lubos@heyapi.dev", 17 + "name": "Hey API", 18 + "url": "https://heyapi.dev" 19 + }, 20 + "funding": "https://github.com/sponsors/hey-api", 21 + "keywords": [ 22 + "codegen", 23 + "generator", 24 + "http", 25 + "javascript", 26 + "json", 27 + "node", 28 + "openapi", 29 + "python", 30 + "rest", 31 + "swagger", 32 + "typescript", 33 + "yaml" 34 + ], 35 + "type": "module", 36 + "main": "./dist/index.cjs", 37 + "module": "./dist/index.mjs", 38 + "types": "./dist/index.d.mts", 39 + "exports": { 40 + ".": { 41 + "import": { 42 + "types": "./dist/index.d.mts", 43 + "default": "./dist/index.mjs" 44 + }, 45 + "require": { 46 + "types": "./dist/index.d.cts", 47 + "default": "./dist/index.cjs" 48 + } 49 + }, 50 + "./package.json": "./package.json" 51 + }, 52 + "bin": { 53 + "openapi-python": "./bin/run.js" 54 + }, 55 + "files": [ 56 + "bin", 57 + "dist", 58 + "LICENSE.md", 59 + "README.md" 60 + ], 61 + "scripts": { 62 + "build": "tsdown && pnpm check-exports", 63 + "check-exports": "attw --pack . --profile node16", 64 + "dev": "tsdown --watch", 65 + "prepublishOnly": "pnpm build", 66 + "test:coverage": "vitest run --coverage", 67 + "test:update": "vitest watch --update", 68 + "test:watch": "vitest watch", 69 + "test": "vitest run", 70 + "typecheck": "tsc --noEmit" 71 + }, 72 + "engines": { 73 + "node": ">=20.19.0" 74 + }, 75 + "dependencies": { 76 + "@hey-api/codegen-core": "workspace:^0.5.2", 77 + "@hey-api/json-schema-ref-parser": "1.2.2", 78 + "ansi-colors": "4.1.3", 79 + "c12": "3.3.3", 80 + "color-support": "1.1.3", 81 + "commander": "14.0.2", 82 + "open": "11.0.0", 83 + "semver": "7.7.3" 84 + }, 85 + "peerDependencies": { 86 + "typescript": ">=5.5.3" 87 + }, 88 + "devDependencies": { 89 + "@config/vite-base": "workspace:*", 90 + "@hey-api/types": "workspace:*", 91 + "@types/cross-spawn": "6.0.6", 92 + "@types/semver": "7.7.1", 93 + "cross-spawn": "7.0.6", 94 + "eslint": "9.39.1", 95 + "prettier": "3.4.2", 96 + "typescript": "5.9.3", 97 + "yaml": "2.8.2" 98 + } 99 + }
+156
packages/openapi-python/src/__tests__/index.test.ts
··· 1 + import { describe, expect, it } from 'vitest'; 2 + 3 + // import { createClient } from '~/index'; 4 + 5 + // type Config = Parameters<typeof createClient>[0]; 6 + 7 + describe('createClient', () => { 8 + it('works', () => { 9 + expect(true).toBe(true); 10 + }); 11 + // it('1 config, 1 input, 1 output', async () => { 12 + // const config: Config = { 13 + // dryRun: true, 14 + // input: { 15 + // info: { title: 'foo', version: '1.0.0' }, 16 + // openapi: '3.0.0', 17 + // }, 18 + // logs: { 19 + // level: 'silent', 20 + // }, 21 + // output: 'output', 22 + // plugins: ['@hey-api/typescript'], 23 + // }; 24 + 25 + // const results = await createClient(config); 26 + // expect(results).toHaveLength(1); 27 + // }); 28 + 29 + // it('1 config, 2 inputs, 1 output', async () => { 30 + // const config: Config = { 31 + // dryRun: true, 32 + // input: [ 33 + // { 34 + // info: { title: 'foo', version: '1.0.0' }, 35 + // openapi: '3.0.0', 36 + // }, 37 + // { 38 + // info: { title: 'bar', version: '1.0.0' }, 39 + // openapi: '3.0.0', 40 + // paths: {}, 41 + // }, 42 + // ], 43 + // logs: { 44 + // level: 'silent', 45 + // }, 46 + // output: 'output', 47 + // plugins: ['@hey-api/typescript'], 48 + // }; 49 + 50 + // const results = await createClient(config); 51 + // expect(results).toHaveLength(1); 52 + // }); 53 + 54 + // it('1 config, 2 inputs, 2 outputs', async () => { 55 + // const config: Config = { 56 + // dryRun: true, 57 + // input: [ 58 + // { 59 + // info: { title: 'foo', version: '1.0.0' }, 60 + // openapi: '3.0.0', 61 + // }, 62 + // { 63 + // info: { title: 'bar', version: '1.0.0' }, 64 + // openapi: '3.0.0', 65 + // paths: {}, 66 + // }, 67 + // ], 68 + // logs: { 69 + // level: 'silent', 70 + // }, 71 + // output: ['output', 'output2'], 72 + // plugins: ['@hey-api/typescript'], 73 + // }; 74 + 75 + // const results = await createClient(config); 76 + // expect(results).toHaveLength(2); 77 + // }); 78 + 79 + // it('2 configs, 1 input, 1 output', async () => { 80 + // const config: Config = [ 81 + // { 82 + // dryRun: true, 83 + // input: { 84 + // info: { title: 'foo', version: '1.0.0' }, 85 + // openapi: '3.0.0', 86 + // }, 87 + // logs: { 88 + // level: 'silent', 89 + // }, 90 + // output: 'output', 91 + // plugins: ['@hey-api/typescript'], 92 + // }, 93 + // { 94 + // dryRun: true, 95 + // input: { 96 + // info: { title: 'bar', version: '1.0.0' }, 97 + // openapi: '3.0.0', 98 + // }, 99 + // logs: { 100 + // level: 'silent', 101 + // }, 102 + // output: 'output2', 103 + // plugins: ['@hey-api/typescript'], 104 + // }, 105 + // ]; 106 + 107 + // const results = await createClient(config); 108 + // expect(results).toHaveLength(2); 109 + // }); 110 + 111 + // it('2 configs, 2 inputs, 2 outputs', async () => { 112 + // const config: Config = [ 113 + // { 114 + // dryRun: true, 115 + // input: [ 116 + // { 117 + // info: { title: 'foo', version: '1.0.0' }, 118 + // openapi: '3.0.0', 119 + // }, 120 + // { 121 + // info: { title: 'bar', version: '1.0.0' }, 122 + // openapi: '3.0.0', 123 + // paths: {}, 124 + // }, 125 + // ], 126 + // logs: { 127 + // level: 'silent', 128 + // }, 129 + // output: ['output', 'output2'], 130 + // plugins: ['@hey-api/typescript'], 131 + // }, 132 + // { 133 + // dryRun: true, 134 + // input: [ 135 + // { 136 + // info: { title: 'baz', version: '1.0.0' }, 137 + // openapi: '3.0.0', 138 + // }, 139 + // { 140 + // info: { title: 'qux', version: '1.0.0' }, 141 + // openapi: '3.0.0', 142 + // paths: {}, 143 + // }, 144 + // ], 145 + // logs: { 146 + // level: 'silent', 147 + // }, 148 + // output: ['output3', 'output4'], 149 + // plugins: ['@hey-api/typescript'], 150 + // }, 151 + // ]; 152 + 153 + // const results = await createClient(config); 154 + // expect(results).toHaveLength(4); 155 + // }); 156 + });
+120
packages/openapi-python/src/cli.ts
··· 1 + import type { OptionValues } from 'commander'; 2 + import { Command } from 'commander'; 3 + 4 + // import { createClient } from '~/index'; 5 + import pkg from '../package.json' assert { type: 'json' }; 6 + 7 + const stringToBoolean = ( 8 + value: string | undefined, 9 + ): boolean | string | undefined => { 10 + if (value === 'true') return true; 11 + if (value === 'false') return false; 12 + return value; 13 + }; 14 + 15 + const processParams = ( 16 + obj: OptionValues, 17 + booleanKeys: ReadonlyArray<string>, 18 + ): OptionValues => { 19 + for (const key of booleanKeys) { 20 + const value = obj[key]; 21 + if (typeof value === 'string') { 22 + const parsedValue = stringToBoolean(value); 23 + delete obj[key]; 24 + obj[key] = parsedValue; 25 + } 26 + } 27 + return obj; 28 + }; 29 + 30 + export const runCli = async (): Promise<void> => { 31 + const params = new Command() 32 + .name(Object.keys(pkg.bin)[0]!) 33 + .usage('[options]') 34 + .version(pkg.version) 35 + .option('-c, --client <value>', 'HTTP client to generate') 36 + .option('-d, --debug', 'Set log level to debug') 37 + .option('--dry-run [value]', 'Skip writing files to disk?') 38 + .option('-f, --file [value]', 'Path to the config file') 39 + .option( 40 + '-i, --input <value>', 41 + 'OpenAPI specification (path, url, or string content)', 42 + ) 43 + .option('-l, --logs [value]', 'Logs folder') 44 + .option('-o, --output <value>', 'Output folder') 45 + .option('-p, --plugins [value...]', "List of plugins you'd like to use") 46 + .option('-s, --silent', 'Set log level to silent') 47 + .option( 48 + '--no-log-file', 49 + 'Disable writing a log file. Works like --silent but without suppressing console output', 50 + ) 51 + .option( 52 + '-w, --watch [value]', 53 + 'Regenerate the client when the input file changes?', 54 + ) 55 + .parse(process.argv) 56 + .opts(); 57 + 58 + let userConfig: Record<string, unknown>; 59 + 60 + try { 61 + userConfig = processParams(params, ['dryRun', 'logFile']); 62 + 63 + if (userConfig.file) { 64 + userConfig.configFile = userConfig.file; 65 + delete userConfig.file; 66 + } 67 + 68 + if (params.plugins === true) { 69 + userConfig.plugins = []; 70 + } else if (params.plugins) { 71 + userConfig.plugins = params.plugins; 72 + } else if (userConfig.client) { 73 + userConfig.plugins = ['@hey-api/sdk']; 74 + } 75 + 76 + if (userConfig.client) { 77 + (userConfig.plugins as Array<string>).push(userConfig.client as string); 78 + delete userConfig.client; 79 + } 80 + 81 + userConfig.logs = userConfig.logs 82 + ? { 83 + path: userConfig.logs, 84 + } 85 + : {}; 86 + 87 + if (userConfig.debug) { 88 + (userConfig.logs as Record<string, unknown>).level = 'debug'; 89 + delete userConfig.debug; 90 + } else if (userConfig.silent) { 91 + (userConfig.logs as Record<string, unknown>).level = 'silent'; 92 + delete userConfig.silent; 93 + } 94 + 95 + (userConfig.logs as Record<string, unknown>).file = userConfig.logFile; 96 + delete userConfig.logFile; 97 + 98 + if (typeof params.watch === 'string') { 99 + userConfig.watch = Number.parseInt(params.watch, 10); 100 + } 101 + 102 + if (!Object.keys(userConfig.logs as Record<string, unknown>).length) { 103 + delete userConfig.logs; 104 + } 105 + 106 + // const context = await createClient( 107 + // userConfig as unknown as Required<Parameters<typeof createClient>>[0], 108 + // ); 109 + // if ( 110 + // !context[0]?.config.input.some( 111 + // (input) => input.watch && input.watch.enabled, 112 + // ) 113 + // ) { 114 + // process.exit(0); 115 + // } 116 + process.exit(0); 117 + } catch { 118 + process.exit(1); 119 + } 120 + };
+71
packages/openapi-python/src/config/types.d.ts
··· 1 + // import { MaybeArray } from "@hey-api/types"; 2 + 3 + export interface UserConfig { 4 + /** 5 + * Path to the config file. Set this value if you don't use the default 6 + * config file name, or it's not located in the project root. 7 + */ 8 + configFile?: string; 9 + /** 10 + * Skip writing files to disk? 11 + * 12 + * @default false 13 + */ 14 + dryRun?: boolean; 15 + /** 16 + * Path to the OpenAPI specification. This can be: 17 + * - path 18 + * - URL 19 + * - API registry shorthand 20 + * 21 + * Both JSON and YAML file formats are supported. You can also pass the parsed 22 + * object directly if you're fetching the file yourself. 23 + * 24 + * Alternatively, you can define a configuration object with more options. 25 + * 26 + * If you define an array, we will generate a single output from multiple 27 + * inputs. If you define an array of outputs with the same length, we will 28 + * generate multiple outputs, one for each input. 29 + */ 30 + // input: MaybeArray<UserInput | Required<UserInput>['path']>; 31 + /** 32 + * Show an interactive error reporting tool when the program crashes? You 33 + * generally want to keep this disabled (default). 34 + * 35 + * @default false 36 + */ 37 + interactive?: boolean; 38 + /** 39 + * The relative location of the logs folder. 40 + * 41 + * @default process.cwd() 42 + */ 43 + // logs?: string | Logs; 44 + /** 45 + * Path to the output folder. 46 + * 47 + * If you define an array of outputs with the same length as inputs, we will 48 + * generate multiple outputs, one for each input. 49 + */ 50 + // output: MaybeArray<string | UserOutput>; 51 + /** 52 + * Customize how the input is parsed and transformed before it's passed to 53 + * plugins. 54 + */ 55 + // parser?: UserParser; 56 + /** 57 + * Plugins generate artifacts from `input`. By default, we generate SDK 58 + * functions and TypeScript interfaces. If you manually define `plugins`, 59 + * you need to include the default plugins if you wish to use them. 60 + * 61 + * @default ['@hey-api/sdk'] 62 + */ 63 + // plugins?: ReadonlyArray< 64 + // | PluginNames 65 + // | { 66 + // [K in PluginNames]: PluginConfigMap[K]['config'] & { 67 + // name: K; 68 + // }; 69 + // }[PluginNames] 70 + // >; 71 + }
+120
packages/openapi-python/src/index.ts
··· 1 + // OVERRIDES 2 + // hard-coded here because build process doesn't pick up overrides from separate files 3 + import '@hey-api/codegen-core'; 4 + 5 + declare module '@hey-api/codegen-core' { 6 + interface ProjectRenderMeta { 7 + /** 8 + * If specified, this will be the file extension used when importing 9 + * other modules. By default, we don't add a file extension and let the 10 + * runtime resolve it. 11 + * 12 + * @default null 13 + */ 14 + importFileExtension?: (string & {}) | null; 15 + } 16 + 17 + interface SymbolMeta { 18 + category?: 19 + | 'client' 20 + | 'external' 21 + | 'hook' 22 + | 'schema' 23 + | 'sdk' 24 + | 'transform' 25 + | 'type' 26 + | 'utility' 27 + | (string & {}); 28 + /** 29 + * Path to the resource this symbol represents. 30 + */ 31 + path?: ReadonlyArray<string | number>; 32 + /** 33 + * Name of the plugin that registered this symbol. 34 + */ 35 + pluginName?: string; 36 + resource?: 37 + | 'client' 38 + | 'definition' 39 + | 'operation' 40 + | 'webhook' 41 + | (string & {}); 42 + resourceId?: string; 43 + role?: 44 + | 'data' 45 + | 'error' 46 + | 'errors' 47 + | 'options' 48 + | 'response' 49 + | 'responses' 50 + | (string & {}); 51 + /** 52 + * Tags associated with this symbol. 53 + */ 54 + tags?: ReadonlyArray<string>; 55 + tool?: 56 + | 'angular' 57 + | 'arktype' 58 + | 'fastify' 59 + | 'json-schema' 60 + | 'sdk' 61 + | 'typescript' 62 + | 'valibot' 63 + | 'zod' 64 + | (string & {}); 65 + variant?: 'container' | (string & {}); 66 + } 67 + } 68 + // END OVERRIDES 69 + 70 + import type { LazyOrAsync, MaybeArray } from '@hey-api/types'; 71 + import colors from 'ansi-colors'; 72 + // @ts-expect-error 73 + import colorSupport from 'color-support'; 74 + 75 + import type { UserConfig } from '~/config/types'; 76 + 77 + colors.enabled = colorSupport().hasBasic; 78 + 79 + // export { createClient } from '~/generate'; 80 + 81 + /** 82 + * Type helper for openapi-ts.config.ts, returns {@link MaybeArray<UserConfig>} object(s) 83 + */ 84 + export const defineConfig = async <T extends MaybeArray<UserConfig>>( 85 + config: LazyOrAsync<T>, 86 + ): Promise<T> => (typeof config === 'function' ? await config() : config); 87 + 88 + // export { defaultPaginationKeywords } from '~/config/parser'; 89 + // export { defaultPlugins } from '~/config/plugins'; 90 + // export type { IR } from '~/ir/types'; 91 + // export { OperationPath, OperationStrategy } from '~/openApi/shared/locations'; 92 + // export type { 93 + // OpenApi, 94 + // OpenApiMetaObject, 95 + // OpenApiOperationObject, 96 + // OpenApiParameterObject, 97 + // OpenApiRequestBodyObject, 98 + // OpenApiResponseObject, 99 + // OpenApiSchemaObject, 100 + // } from '~/openApi/types'; 101 + // export type { DefinePlugin, Plugin } from '~/plugins'; 102 + // export type { AngularClient } from '~/plugins/@hey-api/client-angular'; 103 + // export type { AxiosClient } from '~/plugins/@hey-api/client-axios'; 104 + // export { 105 + // clientDefaultConfig, 106 + // clientDefaultMeta, 107 + // } from '~/plugins/@hey-api/client-core/config'; 108 + // export { clientPluginHandler } from '~/plugins/@hey-api/client-core/plugin'; 109 + // export type { Client } from '~/plugins/@hey-api/client-core/types'; 110 + // export type { FetchClient } from '~/plugins/@hey-api/client-fetch'; 111 + // export type { NextClient } from '~/plugins/@hey-api/client-next'; 112 + // export type { NuxtClient } from '~/plugins/@hey-api/client-nuxt'; 113 + // export type { OfetchClient } from '~/plugins/@hey-api/client-ofetch'; 114 + // export type { ExpressionTransformer } from '~/plugins/@hey-api/transformers/expressions'; 115 + // export type { TypeTransformer } from '~/plugins/@hey-api/transformers/types'; 116 + // export { definePluginConfig } from '~/plugins/shared/utils/config'; 117 + // export * from '~/ts-dsl'; 118 + // export type { UserConfig } from '~/types/config'; 119 + // export { utils } from '~/utils/exports'; 120 + // export { Logger } from '~/utils/logger';
+5
packages/openapi-python/src/run.ts
··· 1 + #!/usr/bin/env node 2 + 3 + import { runCli } from '~/cli'; 4 + 5 + runCli();
+20
packages/openapi-python/tsconfig.base.json
··· 1 + { 2 + "compilerOptions": { 3 + "baseUrl": "./", 4 + "declaration": true, 5 + "esModuleInterop": true, 6 + "module": "ESNext", 7 + "moduleResolution": "Bundler", 8 + "noImplicitOverride": true, 9 + "noImplicitReturns": true, 10 + "noUncheckedIndexedAccess": true, 11 + "noUnusedLocals": true, 12 + "noUnusedParameters": true, 13 + "paths": { 14 + "~/*": ["src/*"] 15 + }, 16 + "strict": true, 17 + "target": "ES2022", 18 + "useUnknownInCatchVariables": false 19 + } 20 + }
+10
packages/openapi-python/tsconfig.json
··· 1 + { 2 + "extends": "./tsconfig.base.json", 3 + "compilerOptions": { 4 + "declaration": false, 5 + "esModuleInterop": true, 6 + "resolveJsonModule": true, 7 + "skipLibCheck": true 8 + }, 9 + "exclude": ["test/generated/**"] 10 + }
+26
packages/openapi-python/tsdown.config.ts
··· 1 + import { defineConfig } from 'tsdown'; 2 + 3 + export default defineConfig({ 4 + banner(ctx) { 5 + /** 6 + * fix dynamic require in ESM 7 + * @link https://github.com/hey-api/openapi-ts/issues/1079 8 + */ 9 + if (ctx.format === 'esm') { 10 + return { 11 + js: `import { createRequire } from 'module'; const require = createRequire(import.${'meta'}.url);`, 12 + }; 13 + } 14 + 15 + return; 16 + }, 17 + clean: true, 18 + dts: true, 19 + entry: ['./src/{index,run}.ts'], 20 + format: ['cjs', 'esm'], 21 + minify: false, 22 + noExternal: ['@hey-api/types'], 23 + shims: false, 24 + sourcemap: true, 25 + treeshake: true, 26 + });
+10
packages/openapi-python/turbo.json
··· 1 + { 2 + "$schema": "../../node_modules/turbo/schema.json", 3 + "extends": ["//"], 4 + "tasks": { 5 + "build": { 6 + "dependsOn": ["^build"], 7 + "outputs": ["dist/**"] 8 + } 9 + } 10 + }
+16
packages/openapi-python/vitest.config.ts
··· 1 + import path from 'node:path'; 2 + import { fileURLToPath } from 'node:url'; 3 + 4 + import { createVitestConfig } from '@config/vite-base'; 5 + 6 + const rootDir = fileURLToPath(new URL('./', import.meta.url)); 7 + 8 + export default createVitestConfig(rootDir, { 9 + resolve: { 10 + alias: [ 11 + // Support imports like `~/foo` and `~` -> maps to <root>/src 12 + { find: /^~\/(.*)/, replacement: path.resolve(rootDir, 'src/$1') }, 13 + { find: '~', replacement: path.resolve(rootDir, 'src') }, 14 + ], 15 + }, 16 + });
-2
packages/openapi-ts/.gitignore
··· 7 7 node_modules 8 8 npm-debug.log* 9 9 temp 10 - yarn-debug.log* 11 - yarn-error.log* 12 10 13 11 *.iml 14 12 dist
+1
packages/openapi-ts/package.json
··· 110 110 "@angular/platform-browser-dynamic": "19.2.17", 111 111 "@angular/router": "19.2.17", 112 112 "@config/vite-base": "workspace:*", 113 + "@hey-api/types": "workspace:*", 113 114 "@types/bun": "1.3.5", 114 115 "@types/cross-spawn": "6.0.6", 115 116 "@types/semver": "7.7.1",
+1 -1
packages/openapi-ts/src/config/init.ts
··· 1 1 import path from 'node:path'; 2 2 3 + import type { ArrayOnly } from '@hey-api/types'; 3 4 import colors from 'ansi-colors'; 4 5 5 6 import { ConfigError } from '~/error'; 6 7 import type { Config, UserConfig } from '~/types/config'; 7 - import type { ArrayOnly } from '~/types/utils'; 8 8 import type { Logger } from '~/utils/logger'; 9 9 10 10 import { getInput } from './input';
+1 -1
packages/openapi-ts/src/config/output/source/types.d.ts
··· 1 - import type { MaybePromise } from '~/types/utils'; 1 + import type { MaybePromise } from '@hey-api/types'; 2 2 3 3 import type { FeatureToggle } from '../../shared'; 4 4
+1 -1
packages/openapi-ts/src/config/output/types.d.ts
··· 2 2 NameConflictResolver, 3 3 RenderContext, 4 4 } from '@hey-api/codegen-core'; 5 + import type { MaybeArray, MaybeFunc } from '@hey-api/types'; 5 6 import type ts from 'typescript'; 6 7 7 - import type { MaybeArray, MaybeFunc } from '~/types/utils'; 8 8 import type { Casing, NameTransformer } from '~/utils/naming'; 9 9 10 10 import type { NamingOptions } from '../shared';
+2 -1
packages/openapi-ts/src/generate.ts
··· 1 + import type { LazyOrAsync, MaybeArray } from '@hey-api/types'; 2 + 1 3 import { checkNodeVersion } from '~/config/engine'; 2 4 import type { Configs } from '~/config/init'; 3 5 import { initConfigs } from '~/config/init'; ··· 13 15 } from '~/error'; 14 16 import type { Context } from '~/ir/context'; 15 17 import type { UserConfig } from '~/types/config'; 16 - import type { LazyOrAsync, MaybeArray } from '~/types/utils'; 17 18 import { printCliIntro } from '~/utils/cli'; 18 19 import { Logger } from '~/utils/logger'; 19 20
+1 -1
packages/openapi-ts/src/index.ts
··· 67 67 } 68 68 // END OVERRIDES 69 69 70 + import type { LazyOrAsync, MaybeArray } from '@hey-api/types'; 70 71 import colors from 'ansi-colors'; 71 72 // @ts-expect-error 72 73 import colorSupport from 'color-support'; 73 74 74 75 import type { UserConfig } from '~/types/config'; 75 - import type { LazyOrAsync, MaybeArray } from '~/types/utils'; 76 76 77 77 colors.enabled = colorSupport().hasBasic; 78 78
+2 -1
packages/openapi-ts/src/ir/intents.ts
··· 1 + import type { MaybePromise } from '@hey-api/types'; 2 + 1 3 import type { CodeSampleObject } from '~/openApi/shared/types'; 2 - import type { MaybePromise } from '~/types/utils'; 3 4 4 5 import type { IR } from './types'; 5 6
+2 -1
packages/openapi-ts/src/openApi/3.1.x/types/json-schema-draft-2020-12.d.ts
··· 1 + import type { MaybeArray } from '@hey-api/types'; 2 + 1 3 import type { EnumExtensions } from '~/openApi/shared/types'; 2 4 3 - import type { MaybeArray } from '../../../types/utils'; 4 5 import type { SpecificationExtensions } from './spec'; 5 6 import type { OpenApiSchemaExtensions } from './spec-extensions'; 6 7
+1 -1
packages/openapi-ts/src/plugins/zod/resolvers/types.d.ts
··· 1 1 import type { Refs, Symbol } from '@hey-api/codegen-core'; 2 + import type { MaybeArray } from '@hey-api/types'; 2 3 import type ts from 'typescript'; 3 4 4 5 import type { IR } from '~/ir/types'; ··· 9 10 } from '~/plugins/shared/utils/coerce'; 10 11 import type { GetIntegerLimit } from '~/plugins/shared/utils/formats'; 11 12 import type { $, DollarTsDsl, TsDsl } from '~/ts-dsl'; 12 - import type { MaybeArray } from '~/types/utils'; 13 13 14 14 import type { Chain } from '../shared/chain'; 15 15 import type { Ast, PluginState } from '../shared/types';
-12
packages/openapi-ts/src/ts-dsl/base.ts
··· 24 24 25 25 import type { AccessOptions } from './utils/context'; 26 26 27 - /** 28 - * Accepts a value or a readonly array of values of type T. 29 - */ 30 - export type MaybeArray<T> = T | ReadonlyArray<T>; 31 - 32 - /** 33 - * Accepts a value or a function returning a value. 34 - */ 35 - export type MaybeFunc<T extends (...args: Array<any>) => any> = 36 - | T 37 - | ReturnType<T>; 38 - 39 27 export abstract class TsDsl<T extends ts.Node = ts.Node> implements Node<T> { 40 28 // eslint-disable-next-line @typescript-eslint/no-unused-vars 41 29 analyze(_: AnalysisContext): void {}
+1 -1
packages/openapi-ts/src/ts-dsl/decl/pattern.ts
··· 1 1 import type { AnalysisContext } from '@hey-api/codegen-core'; 2 + import type { MaybeArray } from '@hey-api/types'; 2 3 import ts from 'typescript'; 3 4 4 - import type { MaybeArray } from '../base'; 5 5 import { TsDsl } from '../base'; 6 6 import { IdTsDsl } from '../expr/id'; 7 7 import { TokenTsDsl } from '../token';
+1 -1
packages/openapi-ts/src/ts-dsl/layout/doc.ts
··· 1 1 import type { AnalysisContext } from '@hey-api/codegen-core'; 2 + import type { MaybeArray } from '@hey-api/types'; 2 3 import ts from 'typescript'; 3 4 4 - import type { MaybeArray } from '../base'; 5 5 import { TsDsl } from '../base'; 6 6 import { IdTsDsl } from '../expr/id'; 7 7 import type { TsDslContext } from '../utils/context';
+1 -1
packages/openapi-ts/src/ts-dsl/layout/hint.ts
··· 1 1 import type { AnalysisContext } from '@hey-api/codegen-core'; 2 + import type { MaybeArray } from '@hey-api/types'; 2 3 import ts from 'typescript'; 3 4 4 - import type { MaybeArray } from '../base'; 5 5 import { TsDsl } from '../base'; 6 6 import { IdTsDsl } from '../expr/id'; 7 7 import type { TsDslContext } from '../utils/context';
+1 -1
packages/openapi-ts/src/ts-dsl/layout/note.ts
··· 1 1 import type { AnalysisContext } from '@hey-api/codegen-core'; 2 + import type { MaybeArray } from '@hey-api/types'; 2 3 import ts from 'typescript'; 3 4 4 - import type { MaybeArray } from '../base'; 5 5 import { TsDsl } from '../base'; 6 6 import { IdTsDsl } from '../expr/id'; 7 7 import type { TsDslContext } from '../utils/context';
+1 -1
packages/openapi-ts/src/ts-dsl/mixins/pattern.ts
··· 1 1 import type { AnalysisContext, Node } from '@hey-api/codegen-core'; 2 + import type { MaybeArray } from '@hey-api/types'; 2 3 import type ts from 'typescript'; 3 4 4 - import type { MaybeArray } from '../base'; 5 5 import { PatternTsDsl } from '../decl/pattern'; 6 6 import type { BaseCtor, MixinCtor } from './types'; 7 7
+2 -1
packages/openapi-ts/src/ts-dsl/utils/context.ts
··· 1 1 import type { BindingKind, NodeScope, Symbol } from '@hey-api/codegen-core'; 2 2 import { isSymbol } from '@hey-api/codegen-core'; 3 + import type { MaybeFunc } from '@hey-api/types'; 3 4 import type ts from 'typescript'; 4 5 5 6 import type { DollarTsDsl } from '~/ts-dsl'; 6 7 import { $, TypeScriptRenderer } from '~/ts-dsl'; 7 8 8 - import type { MaybeFunc, TsDsl } from '../base'; 9 + import type { TsDsl } from '../base'; 9 10 import type { CallArgs } from '../expr/call'; 10 11 11 12 export type NodeChain = ReadonlyArray<TsDsl>;
+1 -1
packages/openapi-ts/src/ts-dsl/utils/render.ts
··· 1 1 import type { RenderContext, Renderer } from '@hey-api/codegen-core'; 2 + import type { MaybeArray, MaybeFunc } from '@hey-api/types'; 2 3 import ts from 'typescript'; 3 4 4 5 import type { TsDsl } from '~/ts-dsl'; 5 6 import { $ } from '~/ts-dsl'; 6 7 7 - import type { MaybeArray, MaybeFunc } from '../base'; 8 8 import type { 9 9 ModuleExport, 10 10 ModuleImport,
+2 -1
packages/openapi-ts/src/types/config.d.ts
··· 1 + import type { MaybeArray } from '@hey-api/types'; 2 + 1 3 import type { Output, UserOutput } from '~/config/output'; 2 4 import type { Plugin } from '~/plugins'; 3 5 import type { PluginConfigMap } from '~/plugins/config'; ··· 6 8 import type { Input, UserInput, Watch } from './input'; 7 9 import type { Logs } from './logs'; 8 10 import type { Parser, UserParser } from './parser'; 9 - import type { MaybeArray } from './utils'; 10 11 11 12 export interface UserConfig { 12 13 /**
packages/openapi-ts/src/types/utils.d.ts packages/types/src/index.ts
+1 -1
packages/openapi-ts/src/utils/naming/types.d.ts
··· 1 - import type { MaybeFunc } from '~/types/utils'; 1 + import type { MaybeFunc } from '@hey-api/types'; 2 2 3 3 /** 4 4 * Available casing strategies.
+5 -5
packages/openapi-ts/tsconfig.base.json
··· 1 1 { 2 2 "compilerOptions": { 3 + "baseUrl": "./", 3 4 "declaration": true, 4 5 "esModuleInterop": true, 5 6 "module": "ESNext", ··· 9 10 "noUncheckedIndexedAccess": true, 10 11 "noUnusedLocals": true, 11 12 "noUnusedParameters": true, 13 + "paths": { 14 + "~/*": ["src/*"] 15 + }, 12 16 "strict": true, 13 17 "target": "ES2022", 14 - "useUnknownInCatchVariables": false, 15 - "baseUrl": "./", 16 - "paths": { 17 - "~/*": ["src/*"] 18 - } 18 + "useUnknownInCatchVariables": false 19 19 } 20 20 }
+1
packages/openapi-ts/tsdown.config.ts
··· 32 32 entry: ['./src/{index,internal,run}.ts'], 33 33 format: ['cjs', 'esm'], 34 34 minify: false, 35 + noExternal: ['@hey-api/types'], 35 36 onSuccess: async () => { 36 37 // Copy client files to dist folder for runtime access 37 38 const pluginNames = [
+10
packages/types/package.json
··· 1 + { 2 + "name": "@hey-api/types", 3 + "private": true, 4 + "description": "Shared utility types.", 5 + "type": "module", 6 + "types": "./src/index.ts", 7 + "files": [ 8 + "src" 9 + ] 10 + }
+12
packages/types/tsconfig.json
··· 1 + { 2 + "extends": "../../tsconfig.base.json", 3 + "compilerOptions": { 4 + "module": "ESNext", 5 + "moduleResolution": "bundler", 6 + "noEmit": true, 7 + "skipLibCheck": true, 8 + "strict": true, 9 + "target": "ESNext" 10 + }, 11 + "include": ["src"] 12 + }
+81 -18
pnpm-lock.yaml
··· 1254 1254 '@config/vite-base': 1255 1255 specifier: workspace:* 1256 1256 version: link:../config-vite-base 1257 + '@hey-api/types': 1258 + specifier: workspace:* 1259 + version: link:../types 1257 1260 eslint: 1258 1261 specifier: 9.39.1 1259 1262 version: 9.39.1(jiti@2.6.1) ··· 1326 1329 specifier: 7.1.2 1327 1330 version: 7.1.2(@types/node@22.10.5)(jiti@2.6.1)(less@4.2.2)(sass@1.85.0)(terser@5.43.1)(yaml@2.8.2) 1328 1331 1332 + packages/openapi-python: 1333 + dependencies: 1334 + '@hey-api/codegen-core': 1335 + specifier: workspace:^0.5.2 1336 + version: link:../codegen-core 1337 + '@hey-api/json-schema-ref-parser': 1338 + specifier: 1.2.2 1339 + version: 1.2.2 1340 + ansi-colors: 1341 + specifier: 4.1.3 1342 + version: 4.1.3 1343 + c12: 1344 + specifier: 3.3.3 1345 + version: 3.3.3(magicast@0.3.5) 1346 + color-support: 1347 + specifier: 1.1.3 1348 + version: 1.1.3 1349 + commander: 1350 + specifier: 14.0.2 1351 + version: 14.0.2 1352 + open: 1353 + specifier: 11.0.0 1354 + version: 11.0.0 1355 + semver: 1356 + specifier: 7.7.3 1357 + version: 7.7.3 1358 + devDependencies: 1359 + '@config/vite-base': 1360 + specifier: workspace:* 1361 + version: link:../config-vite-base 1362 + '@hey-api/types': 1363 + specifier: workspace:* 1364 + version: link:../types 1365 + '@types/cross-spawn': 1366 + specifier: 6.0.6 1367 + version: 6.0.6 1368 + '@types/semver': 1369 + specifier: 7.7.1 1370 + version: 7.7.1 1371 + cross-spawn: 1372 + specifier: 7.0.6 1373 + version: 7.0.6 1374 + eslint: 1375 + specifier: 9.39.1 1376 + version: 9.39.1(jiti@2.6.1) 1377 + prettier: 1378 + specifier: 3.4.2 1379 + version: 3.4.2 1380 + typescript: 1381 + specifier: 5.9.3 1382 + version: 5.9.3 1383 + yaml: 1384 + specifier: 2.8.2 1385 + version: 2.8.2 1386 + 1329 1387 packages/openapi-ts: 1330 1388 dependencies: 1331 1389 '@hey-api/codegen-core': ··· 1377 1435 '@config/vite-base': 1378 1436 specifier: workspace:* 1379 1437 version: link:../config-vite-base 1438 + '@hey-api/types': 1439 + specifier: workspace:* 1440 + version: link:../types 1380 1441 '@types/bun': 1381 1442 specifier: 1.3.5 1382 1443 version: 1.3.5 ··· 1587 1648 zod: 1588 1649 specifier: 4.1.12 1589 1650 version: 4.1.12 1651 + 1652 + packages/types: {} 1590 1653 1591 1654 packages/vite-plugin: 1592 1655 devDependencies: ··· 14592 14655 dependencies: 14593 14656 '@ampproject/remapping': 2.3.0 14594 14657 '@angular-devkit/architect': 0.1902.0(chokidar@4.0.3) 14595 - '@angular-devkit/build-webpack': 0.1902.0(chokidar@4.0.3)(webpack-dev-server@5.2.0(webpack@5.98.0))(webpack@5.98.0(esbuild@0.25.0)) 14658 + '@angular-devkit/build-webpack': 0.1902.0(chokidar@4.0.3)(webpack-dev-server@5.2.0(webpack@5.98.0(esbuild@0.25.0)))(webpack@5.98.0(esbuild@0.25.0)) 14596 14659 '@angular-devkit/core': 19.2.0(chokidar@4.0.3) 14597 14660 '@angular/build': 19.2.0(@angular/compiler-cli@19.2.0(@angular/compiler@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1)))(typescript@5.8.3))(@angular/compiler@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/platform-server@19.2.0(@angular/common@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.0(@angular/animations@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1))))(@angular/ssr@19.2.15(5c03da8199d2fcdf9ff93b70f9349edd))(@types/node@22.10.5)(chokidar@4.0.3)(jiti@2.6.1)(karma@6.4.4)(less@4.2.2)(postcss@8.5.2)(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@22.10.5)(typescript@5.8.3)))(terser@5.39.0)(typescript@5.8.3)(yaml@2.8.2) 14598 14661 '@angular/compiler-cli': 19.2.0(@angular/compiler@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1)))(typescript@5.8.3) ··· 14643 14706 tslib: 2.8.1 14644 14707 typescript: 5.8.3 14645 14708 webpack: 5.98.0(esbuild@0.25.0) 14646 - webpack-dev-middleware: 7.4.2(webpack@5.98.0) 14647 - webpack-dev-server: 5.2.0(webpack@5.98.0) 14709 + webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.25.0)) 14710 + webpack-dev-server: 5.2.0(webpack@5.98.0(esbuild@0.25.0)) 14648 14711 webpack-merge: 6.0.1 14649 14712 webpack-subresource-integrity: 5.1.0(webpack@5.98.0) 14650 14713 optionalDependencies: ··· 14680 14743 dependencies: 14681 14744 '@ampproject/remapping': 2.3.0 14682 14745 '@angular-devkit/architect': 0.1902.0(chokidar@4.0.3) 14683 - '@angular-devkit/build-webpack': 0.1902.0(chokidar@4.0.3)(webpack-dev-server@5.2.0(webpack@5.98.0))(webpack@5.98.0(esbuild@0.25.0)) 14746 + '@angular-devkit/build-webpack': 0.1902.0(chokidar@4.0.3)(webpack-dev-server@5.2.0(webpack@5.98.0(esbuild@0.25.0)))(webpack@5.98.0(esbuild@0.25.0)) 14684 14747 '@angular-devkit/core': 19.2.0(chokidar@4.0.3) 14685 14748 '@angular/build': 19.2.0(@angular/compiler-cli@19.2.0(@angular/compiler@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1)))(typescript@5.8.3))(@angular/compiler@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/platform-server@19.2.0(@angular/common@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.0(@angular/animations@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1)))(@angular/common@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1))))(@angular/ssr@19.2.15(5c03da8199d2fcdf9ff93b70f9349edd))(@types/node@22.10.5)(chokidar@4.0.3)(jiti@2.6.1)(karma@6.4.4)(less@4.2.2)(postcss@8.5.2)(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@22.10.5)(typescript@5.8.3)))(terser@5.39.0)(typescript@5.8.3)(yaml@2.8.2) 14686 14749 '@angular/compiler-cli': 19.2.0(@angular/compiler@19.2.0(@angular/core@19.2.0(rxjs@7.8.2)(zone.js@0.15.1)))(typescript@5.8.3) ··· 14731 14794 tslib: 2.8.1 14732 14795 typescript: 5.8.3 14733 14796 webpack: 5.98.0(esbuild@0.25.0) 14734 - webpack-dev-middleware: 7.4.2(webpack@5.98.0) 14735 - webpack-dev-server: 5.2.0(webpack@5.98.0) 14797 + webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.25.0)) 14798 + webpack-dev-server: 5.2.0(webpack@5.98.0(esbuild@0.25.0)) 14736 14799 webpack-merge: 6.0.1 14737 14800 webpack-subresource-integrity: 5.1.0(webpack@5.98.0) 14738 14801 optionalDependencies: ··· 14819 14882 tslib: 2.8.1 14820 14883 typescript: 5.8.3 14821 14884 webpack: 5.98.0(esbuild@0.25.4) 14822 - webpack-dev-middleware: 7.4.2(webpack@5.98.0) 14885 + webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.25.0)) 14823 14886 webpack-dev-server: 5.2.2(webpack@5.98.0) 14824 14887 webpack-merge: 6.0.1 14825 14888 webpack-subresource-integrity: 5.1.0(webpack@5.98.0) ··· 14907 14970 tslib: 2.8.1 14908 14971 typescript: 5.9.3 14909 14972 webpack: 5.98.0(esbuild@0.25.4) 14910 - webpack-dev-middleware: 7.4.2(webpack@5.98.0) 14973 + webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.25.0)) 14911 14974 webpack-dev-server: 5.2.2(webpack@5.98.0) 14912 14975 webpack-merge: 6.0.1 14913 14976 webpack-subresource-integrity: 5.1.0(webpack@5.98.0) ··· 14939 15002 - webpack-cli 14940 15003 - yaml 14941 15004 14942 - '@angular-devkit/build-webpack@0.1902.0(chokidar@4.0.3)(webpack-dev-server@5.2.0(webpack@5.98.0))(webpack@5.98.0(esbuild@0.25.0))': 15005 + '@angular-devkit/build-webpack@0.1902.0(chokidar@4.0.3)(webpack-dev-server@5.2.0(webpack@5.98.0(esbuild@0.25.0)))(webpack@5.98.0(esbuild@0.25.0))': 14943 15006 dependencies: 14944 15007 '@angular-devkit/architect': 0.1902.0(chokidar@4.0.3) 14945 15008 rxjs: 7.8.1 14946 15009 webpack: 5.98.0(esbuild@0.25.0) 14947 - webpack-dev-server: 5.2.0(webpack@5.98.0) 15010 + webpack-dev-server: 5.2.0(webpack@5.98.0(esbuild@0.25.0)) 14948 15011 transitivePeerDependencies: 14949 15012 - chokidar 14950 15013 ··· 23729 23792 eslint: 9.17.0(jiti@2.6.1) 23730 23793 eslint-import-resolver-node: 0.3.9 23731 23794 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.17.0(jiti@2.6.1)))(eslint@9.17.0(jiti@2.6.1)) 23732 - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.17.0(jiti@2.6.1)) 23795 + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.17.0(jiti@2.6.1)))(eslint@9.17.0(jiti@2.6.1)))(eslint@9.17.0(jiti@2.6.1)) 23733 23796 eslint-plugin-jsx-a11y: 6.10.2(eslint@9.17.0(jiti@2.6.1)) 23734 23797 eslint-plugin-react: 7.37.5(eslint@9.17.0(jiti@2.6.1)) 23735 23798 eslint-plugin-react-hooks: 5.2.0(eslint@9.17.0(jiti@2.6.1)) ··· 23767 23830 tinyglobby: 0.2.15 23768 23831 unrs-resolver: 1.11.1 23769 23832 optionalDependencies: 23770 - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.17.0(jiti@2.6.1)) 23833 + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.17.0(jiti@2.6.1)))(eslint@9.17.0(jiti@2.6.1)))(eslint@9.17.0(jiti@2.6.1)) 23771 23834 transitivePeerDependencies: 23772 23835 - supports-color 23773 23836 ··· 23782 23845 transitivePeerDependencies: 23783 23846 - supports-color 23784 23847 23785 - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.17.0(jiti@2.6.1)): 23848 + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.29.1(eslint@9.17.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.17.0(jiti@2.6.1)))(eslint@9.17.0(jiti@2.6.1)))(eslint@9.17.0(jiti@2.6.1)): 23786 23849 dependencies: 23787 23850 '@rtsao/scc': 1.1.0 23788 23851 array-includes: 3.1.9 ··· 23940 24003 natural-compare: 1.4.0 23941 24004 nth-check: 2.1.1 23942 24005 postcss-selector-parser: 6.1.2 23943 - semver: 7.7.2 24006 + semver: 7.7.3 23944 24007 vue-eslint-parser: 9.4.3(eslint@9.39.1(jiti@2.6.1)) 23945 24008 xml-name-validator: 4.0.0 23946 24009 transitivePeerDependencies: ··· 31066 31129 31067 31130 webidl-conversions@7.0.0: {} 31068 31131 31069 - webpack-dev-middleware@7.4.2(webpack@5.98.0): 31132 + webpack-dev-middleware@7.4.2(webpack@5.98.0(esbuild@0.25.0)): 31070 31133 dependencies: 31071 31134 colorette: 2.0.20 31072 31135 memfs: 4.38.2 ··· 31077 31140 optionalDependencies: 31078 31141 webpack: 5.98.0(esbuild@0.25.0) 31079 31142 31080 - webpack-dev-server@5.2.0(webpack@5.98.0): 31143 + webpack-dev-server@5.2.0(webpack@5.98.0(esbuild@0.25.0)): 31081 31144 dependencies: 31082 31145 '@types/bonjour': 3.5.13 31083 31146 '@types/connect-history-api-fallback': 1.5.4 ··· 31104 31167 serve-index: 1.9.1 31105 31168 sockjs: 0.3.24 31106 31169 spdy: 4.0.2 31107 - webpack-dev-middleware: 7.4.2(webpack@5.98.0) 31170 + webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.25.0)) 31108 31171 ws: 8.18.3 31109 31172 optionalDependencies: 31110 31173 webpack: 5.98.0(esbuild@0.25.0) ··· 31142 31205 serve-index: 1.9.1 31143 31206 sockjs: 0.3.24 31144 31207 spdy: 4.0.2 31145 - webpack-dev-middleware: 7.4.2(webpack@5.98.0) 31208 + webpack-dev-middleware: 7.4.2(webpack@5.98.0(esbuild@0.25.0)) 31146 31209 ws: 8.18.3 31147 31210 optionalDependencies: 31148 31211 webpack: 5.98.0(esbuild@0.25.0)
+7
tsconfig.base.json
··· 1 + { 2 + "compilerOptions": { 3 + "baseUrl": ".", 4 + "skipLibCheck": true, 5 + "strict": true 6 + } 7 + }