@sdk-it/cli 0.45.0 → 0.46.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +76 -71
- package/dist/bin.js +75 -25
- package/dist/bin.js.map +3 -3
- package/dist/index.js.map +2 -2
- package/package.json +10 -10
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/lib/project.ts", "../src/lib/project/analysis.ts", "../src/lib/project/output.ts", "../src/lib/project/cache.ts", "../src/lib/project/compiler.ts", "../src/lib/project/config.ts"],
|
|
4
|
-
"sourcesContent": ["import { resolve } from 'node:path';\n\nimport { analyzeProject } from './project/analysis.ts';\nimport type { ProjectConfig } from './project/config.ts';\nimport { writeProjectClient } from './project/output.ts';\n\nexport {\n defineConfig,\n initializeProject,\n loadProjectConfig,\n} from './project/config.ts';\nexport type {\n InitializeProjectOptions,\n LoadProjectConfigOptions,\n ProjectConfig,\n ResolvedProjectConfig,\n} from './project/config.ts';\n\nexport async function generateProject(config: ProjectConfig): Promise<void> {\n const tsconfig = resolve(config.tsconfig);\n const openapi = await analyzeProject(tsconfig, config);\n await writeProjectClient(openapi, config);\n}\n", "import { createRequire } from 'node:module';\nimport ts from 'typescript';\n\nimport { type InjectImport, defaultTypesMap, getProgram } from '@sdk-it/core';\nimport { analyze } from '@sdk-it/generic';\nimport { responseAnalyzer as honoResponseAnalyzer } from '@sdk-it/hono';\n\nimport type { ProjectConfig } from './config.ts';\n\nexport async function analyzeProject(tsconfig: string, config: ProjectConfig) {\n const framework = resolveFramework(tsconfig, config.framework);\n if (framework === 'auto') {\n throw new Error(\n `Could not detect a supported framework from ${config.tsconfig}. Set framework to 'hono' to select it explicitly.`,\n );\n }\n\n const prisma = config.preset === 'none' ? undefined : detectPrisma(tsconfig);\n if (config.preset === 'prisma' && !prisma) {\n throw new Error(\n `Prisma preset was requested, but no Prisma client import was found in ${tsconfig}. Run prisma generate or set preset to 'none'.`,\n );\n }\n\n const { paths, components } = await analyze(tsconfig, {\n responseAnalyzer: honoResponseAnalyzer,\n ...(prisma\n ? {\n imports: prisma.imports,\n typesMap: {\n ...defaultTypesMap,\n Decimal: 'string',\n },\n }\n : {}),\n });\n\n return {\n openapi: '3.1.0' as const,\n info: {\n title: 'API',\n version: '0.0.0',\n },\n paths,\n components,\n };\n}\n\nfunction resolveFramework(\n tsconfig: string,\n configured: ProjectConfig['framework'],\n): 'hono' | 'auto' {\n return configured === undefined || configured === 'auto'\n ? detectFramework(tsconfig)\n : configured;\n}\n\nfunction detectFramework(tsconfig: string): 'hono' | 'auto' {\n const program = getProgram(tsconfig);\n for (const sourceFile of program.getSourceFiles()) {\n if (sourceFile.isDeclarationFile) continue;\n for (const statement of sourceFile.statements) {\n if (\n ts.isImportDeclaration(statement) &&\n ts.isStringLiteral(statement.moduleSpecifier) &&\n (statement.moduleSpecifier.text === 'hono' ||\n statement.moduleSpecifier.text.startsWith('@sdk-it/hono'))\n ) {\n return 'hono';\n }\n }\n }\n return 'auto';\n}\n\nfunction detectPrisma(\n tsconfig: string,\n): { imports: InjectImport[] } | undefined {\n const program = getProgram(tsconfig);\n const imports: InjectImport[] = [];\n const reportedModules = new Set<string>();\n for (const sourceFile of program.getSourceFiles()) {\n if (sourceFile.isDeclarationFile) continue;\n for (const statement of sourceFile.statements) {\n const prismaImport = getPrismaImport(statement);\n if (!prismaImport) continue;\n const resolvedModule = ts.resolveModuleName(\n prismaImport.moduleSpecifier,\n sourceFile.fileName,\n program.getCompilerOptions(),\n ts.sys,\n );\n if (!resolvedModule.resolvedModule) continue;\n\n let runtimeModule: string;\n try {\n runtimeModule = createRequire(sourceFile.fileName).resolve(\n prismaImport.moduleSpecifier,\n );\n } catch {\n continue;\n }\n\n if (!reportedModules.has(runtimeModule)) {\n console.log(`SDKIT: detected Prisma from ${runtimeModule}`);\n reportedModules.add(runtimeModule);\n }\n for (const { imported, local } of prismaImport.bindings) {\n if (\n !imports.some(\n (item) => item.import === local && item.from === runtimeModule,\n )\n ) {\n imports.push({\n import: local,\n from: runtimeModule,\n property: imported,\n });\n }\n }\n }\n }\n return imports.length > 0 ? { imports } : undefined;\n}\n\nfunction getPrismaImport(statement: ts.Statement):\n | {\n moduleSpecifier: string;\n bindings: Array<{ imported: string; local: string }>;\n }\n | undefined {\n if (\n !ts.isImportDeclaration(statement) ||\n !ts.isStringLiteral(statement.moduleSpecifier) ||\n !statement.importClause?.namedBindings ||\n !ts.isNamedImports(statement.importClause.namedBindings)\n ) {\n return undefined;\n }\n const bindings = statement.importClause.namedBindings.elements\n .map((element) => ({\n imported: element.propertyName?.text ?? element.name.text,\n local: element.name.text,\n }))\n .filter(({ imported }) => imported === 'Prisma' || imported === '$Enums');\n return bindings.length > 0\n ? { moduleSpecifier: statement.moduleSpecifier.text, bindings }\n : undefined;\n}\n", "import { writeFile } from 'node:fs/promises';\nimport { join, resolve } from 'node:path';\n\nimport { generate } from '@sdk-it/typescript';\n\nimport { hashProject, isCurrentGeneratedPackage } from './cache.ts';\nimport { compileGeneratedPackage } from './compiler.ts';\nimport type { ProjectConfig } from './config.ts';\n\ntype ProjectOpenApi = Parameters<typeof generate>[0];\n\nexport async function writeProjectClient(\n openapi: ProjectOpenApi,\n config: ProjectConfig,\n): Promise<void> {\n const output = resolve(config.output ?? '.sdk-it');\n const packageName = config.packageName ?? '@sdk-it/client';\n const hash = hashProject(openapi, packageName);\n if (await isCurrentGeneratedPackage(output, hash)) return;\n\n await generate(openapi, {\n output,\n mode: 'full',\n name: 'Client',\n packageName,\n readme: false,\n });\n await compileGeneratedPackage(output, packageName);\n await writeFile(join(output, '.project-hash'), hash);\n}\n", "import { createHash } from 'node:crypto';\nimport { access, readFile, readdir } from 'node:fs/promises';\nimport { createRequire } from 'node:module';\nimport { join, relative } from 'node:path';\nimport ts from 'typescript';\n\nimport type { generate } from '@sdk-it/typescript';\n\nconst require = createRequire(import.meta.url);\nconst projectGeneratorVersions = {\n cli: require('@sdk-it/cli/package.json').version,\n compiler: ts.version,\n typescript: require('@sdk-it/typescript/package.json').version,\n};\n\ntype ProjectOpenApi = Parameters<typeof generate>[0];\n\nexport function hashProject(\n openapi: ProjectOpenApi,\n packageName: string,\n): string {\n return createHash('sha256')\n .update(JSON.stringify({ openapi, packageName, projectGeneratorVersions }))\n .digest('hex');\n}\n\nexport async function isCurrentGeneratedPackage(\n output: string,\n hash: string,\n): Promise<boolean> {\n return (\n (await readOptionalFile(join(output, '.project-hash'))) === hash &&\n (await generatedPackageExists(output))\n );\n}\n\nasync function generatedPackageExists(output: string): Promise<boolean> {\n try {\n const sourceRoot = join(output, 'src');\n const sources = await findSourceFiles(sourceRoot);\n if (!sources.includes(join(sourceRoot, 'index.ts'))) return false;\n\n await Promise.all([\n access(join(output, 'package.json')),\n ...sources.flatMap((source) =>\n expectedCompiledFiles(output, sourceRoot, source).map((file) =>\n access(file),\n ),\n ),\n ]);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction expectedCompiledFiles(\n output: string,\n sourceRoot: string,\n source: string,\n): string[] {\n const compiled = relative(sourceRoot, source).slice(0, -3);\n return [\n join(output, 'dist', `${compiled}.js`),\n join(output, 'dist', `${compiled}.d.ts`),\n ];\n}\n\nasync function findSourceFiles(directory: string): Promise<string[]> {\n const entries = await readdir(directory, { withFileTypes: true });\n const files = await Promise.all(\n entries.map(async (entry) => {\n const path = join(directory, entry.name);\n if (entry.isDirectory()) return findSourceFiles(path);\n return entry.isFile() && path.endsWith('.ts') && !path.endsWith('.d.ts')\n ? [path]\n : [];\n }),\n );\n return files.flat();\n}\n\nasync function readOptionalFile(path: string): Promise<string | undefined> {\n try {\n return await readFile(path, 'utf8');\n } catch (error) {\n if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {\n return undefined;\n }\n throw error;\n }\n}\n", "import { readFile, writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport ts from 'typescript';\n\ninterface GeneratedPackageManifest {\n name?: string;\n version?: string;\n type?: string;\n main?: string;\n module?: string;\n types?: string;\n publishConfig?: Record<string, unknown>;\n exports?: Record<string, unknown>;\n dependencies?: Record<string, string>;\n}\n\nexport async function compileGeneratedPackage(\n output: string,\n packageName: string,\n): Promise<void> {\n const source = join(output, 'src');\n const program = ts.createProgram({\n rootNames: ts.sys.readDirectory(source, ['.ts']),\n options: {\n allowSyntheticDefaultImports: true,\n declaration: true,\n module: ts.ModuleKind.ESNext,\n moduleResolution: ts.ModuleResolutionKind.Bundler,\n noEmitOnError: true,\n outDir: join(output, 'dist'),\n rewriteRelativeImportExtensions: true,\n rootDir: source,\n skipLibCheck: true,\n target: ts.ScriptTarget.ESNext,\n verbatimModuleSyntax: true,\n },\n });\n const result = program.emit();\n const diagnostics = [\n ...ts.getPreEmitDiagnostics(program),\n ...result.diagnostics,\n ].filter((diagnostic) => diagnostic.category === ts.DiagnosticCategory.Error);\n if (result.emitSkipped || diagnostics.length > 0) {\n throw new Error(formatCompilationError(output, diagnostics));\n }\n\n await synchronizeGeneratedManifest(output, packageName);\n}\n\nfunction formatCompilationError(\n output: string,\n diagnostics: readonly ts.Diagnostic[],\n): string {\n return `Failed to compile generated client:\\n${ts.formatDiagnosticsWithColorAndContext(\n diagnostics,\n {\n getCanonicalFileName: (fileName) => fileName,\n getCurrentDirectory: () => output,\n getNewLine: () => '\\n',\n },\n )}`;\n}\n\nasync function synchronizeGeneratedManifest(\n output: string,\n packageName: string,\n): Promise<void> {\n const manifestPath = join(output, 'package.json');\n const manifest = JSON.parse(\n await readFile(manifestPath, 'utf8'),\n ) as GeneratedPackageManifest;\n Object.assign(manifest, {\n name: packageName,\n version: '0.0.1',\n type: 'module',\n main: './dist/index.js',\n module: './dist/index.js',\n types: './dist/index.d.ts',\n });\n manifest.publishConfig = { ...manifest.publishConfig, access: 'public' };\n manifest.exports = {\n ...manifest.exports,\n './package.json': './package.json',\n '.': {\n types: './dist/index.d.ts',\n import: './dist/index.js',\n default: './dist/index.js',\n },\n };\n manifest.dependencies = {\n ...manifest.dependencies,\n 'fast-content-type-parse': '^3.0.0',\n zod: '^4.3.0',\n };\n await writeFile(manifestPath, `${JSON.stringify(manifest, null, 2)}\\n`);\n}\n", "import { access, readFile, stat, writeFile } from 'node:fs/promises';\nimport { dirname, join, relative, resolve } from 'node:path';\nimport { pathToFileURL } from 'node:url';\n\nexport interface ProjectConfig {\n tsconfig: string;\n framework?: 'auto' | 'hono';\n preset?: 'auto' | 'prisma' | 'none';\n output?: string;\n packageName?: string;\n}\n\nexport interface ResolvedProjectConfig extends ProjectConfig {\n output: string;\n}\n\nexport interface LoadProjectConfigOptions {\n cwd?: string;\n config?: string;\n}\n\nexport interface InitializeProjectOptions {\n cwd?: string;\n tsconfig: string;\n}\n\ninterface ProjectPackageManifest {\n workspaces?: string[] | { packages?: string[]; [key: string]: unknown };\n [key: string]: unknown;\n}\n\nexport function defineConfig<const Config extends ProjectConfig>(\n config: Config,\n): Config {\n return config;\n}\n\nexport async function loadProjectConfig(\n options: LoadProjectConfigOptions = {},\n): Promise<ResolvedProjectConfig> {\n const cwd = resolve(options.cwd ?? process.cwd());\n const configPath = options.config\n ? resolve(cwd, options.config)\n : await findProjectConfig(cwd);\n const loaded = await import(pathToFileURL(configPath).href);\n const config = loaded.default as ProjectConfig | undefined;\n if (!config || typeof config.tsconfig !== 'string') {\n throw new Error(\n `Expected ${configPath} to default export an SDK-IT config with a tsconfig path.`,\n );\n }\n\n const directory = dirname(configPath);\n return {\n ...config,\n tsconfig: resolve(directory, config.tsconfig),\n output: resolve(directory, config.output ?? '.sdk-it'),\n };\n}\n\nexport async function initializeProject(\n options: InitializeProjectOptions,\n): Promise<void> {\n const cwd = resolve(options.cwd ?? process.cwd());\n const configPath = join(cwd, 'sdk-it.config.ts');\n const tsconfigPath = resolve(cwd, options.tsconfig);\n await validateTsconfig(tsconfigPath);\n const tsconfig = relative(cwd, tsconfigPath).replaceAll('\\\\', '/');\n const relativeTsconfig = tsconfig.startsWith('.')\n ? tsconfig\n : `./${tsconfig}`;\n const configSource = `import { defineConfig } from '@sdk-it/cli';\n\nexport default defineConfig({\n tsconfig: '${relativeTsconfig}',\n});\n`;\n\n const existingConfig = await readOptionalFile(configPath);\n if (existingConfig !== undefined && existingConfig !== configSource) {\n throw new Error(\n `${configPath} already exists with different settings. Review it before replacing the file.`,\n );\n }\n\n const packagePath = join(cwd, 'package.json');\n const manifest = JSON.parse(\n await readFile(packagePath, 'utf8'),\n ) as ProjectPackageManifest;\n const manifestChanged = addGeneratedWorkspace(manifest);\n\n const gitignorePath = join(cwd, '.gitignore');\n const gitignore = (await readOptionalFile(gitignorePath)) ?? '';\n if (!ignoresGeneratedWorkspace(gitignore)) {\n const prefix =\n gitignore.length > 0 && !gitignore.endsWith('\\n') ? '\\n' : '';\n await writeFile(gitignorePath, `${gitignore}${prefix}.sdk-it/\\n`);\n }\n\n if (manifestChanged) {\n await writeFile(packagePath, `${JSON.stringify(manifest, null, 2)}\\n`);\n }\n\n if (existingConfig === undefined) {\n await writeFile(configPath, configSource);\n }\n}\n\nfunction addGeneratedWorkspace(manifest: ProjectPackageManifest): boolean {\n const workspaces = manifest.workspaces;\n if (Array.isArray(workspaces)) {\n if (workspaces.includes('.sdk-it')) return false;\n workspaces.push('.sdk-it');\n return true;\n }\n if (workspaces && Array.isArray(workspaces.packages)) {\n if (workspaces.packages.includes('.sdk-it')) return false;\n workspaces.packages.push('.sdk-it');\n return true;\n }\n manifest.workspaces = ['.sdk-it'];\n return true;\n}\n\nfunction ignoresGeneratedWorkspace(gitignore: string): boolean {\n return gitignore\n .split(/\\r?\\n/)\n .some((line) => line.trim() === '.sdk-it/' || line.trim() === '.sdk-it');\n}\n\nasync function validateTsconfig(path: string): Promise<void> {\n try {\n if ((await stat(path)).isFile()) return;\n } catch (error) {\n if (\n !(error instanceof Error && 'code' in error && error.code === 'ENOENT')\n ) {\n throw error;\n }\n }\n throw new Error(`Could not find a TypeScript project at ${path}.`);\n}\n\nasync function findProjectConfig(start: string): Promise<string> {\n let directory = start;\n while (true) {\n const candidate = join(directory, 'sdk-it.config.ts');\n try {\n await access(candidate);\n return candidate;\n } catch {\n const parent = dirname(directory);\n if (parent === directory) {\n throw new Error(\n `Could not find sdk-it.config.ts from ${start} or any parent directory.`,\n );\n }\n directory = parent;\n }\n }\n}\n\nasync function readOptionalFile(path: string): Promise<string | undefined> {\n try {\n return await readFile(path, 'utf8');\n } catch (error) {\n if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {\n return undefined;\n }\n throw error;\n }\n}\n"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["import { resolve } from 'node:path';\n\nimport { analyzeProject } from './project/analysis.ts';\nimport type { ProjectConfig } from './project/config.ts';\nimport { writeProjectClient } from './project/output.ts';\n\nexport {\n defineConfig,\n initializeProject,\n loadProjectConfig,\n} from './project/config.ts';\nexport type {\n InitializeProjectOptions,\n LoadProjectConfigOptions,\n ProjectConfig,\n ResolvedProjectConfig,\n} from './project/config.ts';\n\nexport async function generateProject(config: ProjectConfig): Promise<void> {\n const tsconfig = resolve(config.tsconfig);\n const openapi = await analyzeProject(tsconfig, config);\n await writeProjectClient(openapi, config);\n}\n", "import { createRequire } from 'node:module';\nimport ts from 'typescript';\n\nimport { type InjectImport, defaultTypesMap, getProgram } from '@sdk-it/core';\nimport { analyze } from '@sdk-it/generic';\nimport { responseAnalyzer as honoResponseAnalyzer } from '@sdk-it/hono';\n\nimport type { ProjectConfig } from './config.ts';\n\nexport async function analyzeProject(tsconfig: string, config: ProjectConfig) {\n const framework = resolveFramework(tsconfig, config.framework);\n if (framework === 'auto') {\n throw new Error(\n `Could not detect a supported framework from ${config.tsconfig}. Set framework to 'hono' to select it explicitly.`,\n );\n }\n\n const prisma = config.preset === 'none' ? undefined : detectPrisma(tsconfig);\n if (config.preset === 'prisma' && !prisma) {\n throw new Error(\n `Prisma preset was requested, but no Prisma client import was found in ${tsconfig}. Run prisma generate or set preset to 'none'.`,\n );\n }\n\n const { paths, components } = await analyze(tsconfig, {\n responseAnalyzer: honoResponseAnalyzer,\n ...(prisma\n ? {\n imports: prisma.imports,\n typesMap: {\n ...defaultTypesMap,\n Decimal: 'string',\n },\n }\n : {}),\n });\n\n return {\n openapi: '3.1.0' as const,\n info: {\n title: 'API',\n version: '0.0.0',\n },\n paths,\n components,\n };\n}\n\nfunction resolveFramework(\n tsconfig: string,\n configured: ProjectConfig['framework'],\n): 'hono' | 'auto' {\n return configured === undefined || configured === 'auto'\n ? detectFramework(tsconfig)\n : configured;\n}\n\nfunction detectFramework(tsconfig: string): 'hono' | 'auto' {\n const program = getProgram(tsconfig);\n for (const sourceFile of program.getSourceFiles()) {\n if (sourceFile.isDeclarationFile) continue;\n for (const statement of sourceFile.statements) {\n if (\n ts.isImportDeclaration(statement) &&\n ts.isStringLiteral(statement.moduleSpecifier) &&\n (statement.moduleSpecifier.text === 'hono' ||\n statement.moduleSpecifier.text.startsWith('@sdk-it/hono'))\n ) {\n return 'hono';\n }\n }\n }\n return 'auto';\n}\n\nfunction detectPrisma(\n tsconfig: string,\n): { imports: InjectImport[] } | undefined {\n const program = getProgram(tsconfig);\n const imports: InjectImport[] = [];\n const reportedModules = new Set<string>();\n for (const sourceFile of program.getSourceFiles()) {\n if (sourceFile.isDeclarationFile) continue;\n for (const statement of sourceFile.statements) {\n const prismaImport = getPrismaImport(statement);\n if (!prismaImport) continue;\n const resolvedModule = ts.resolveModuleName(\n prismaImport.moduleSpecifier,\n sourceFile.fileName,\n program.getCompilerOptions(),\n ts.sys,\n );\n if (!resolvedModule.resolvedModule) continue;\n\n let runtimeModule: string;\n try {\n runtimeModule = createRequire(sourceFile.fileName).resolve(\n prismaImport.moduleSpecifier,\n );\n } catch {\n continue;\n }\n\n if (!reportedModules.has(runtimeModule)) {\n console.log(`SDKIT: detected Prisma from ${runtimeModule}`);\n reportedModules.add(runtimeModule);\n }\n for (const { imported, local } of prismaImport.bindings) {\n if (\n !imports.some(\n (item) => item.import === local && item.from === runtimeModule,\n )\n ) {\n imports.push({\n import: local,\n from: runtimeModule,\n property: imported,\n });\n }\n }\n }\n }\n return imports.length > 0 ? { imports } : undefined;\n}\n\nfunction getPrismaImport(statement: ts.Statement):\n | {\n moduleSpecifier: string;\n bindings: Array<{ imported: string; local: string }>;\n }\n | undefined {\n if (\n !ts.isImportDeclaration(statement) ||\n !ts.isStringLiteral(statement.moduleSpecifier) ||\n !statement.importClause?.namedBindings ||\n !ts.isNamedImports(statement.importClause.namedBindings)\n ) {\n return undefined;\n }\n const bindings = statement.importClause.namedBindings.elements\n .map((element) => ({\n imported: element.propertyName?.text ?? element.name.text,\n local: element.name.text,\n }))\n .filter(({ imported }) => imported === 'Prisma' || imported === '$Enums');\n return bindings.length > 0\n ? { moduleSpecifier: statement.moduleSpecifier.text, bindings }\n : undefined;\n}\n", "import { writeFile } from 'node:fs/promises';\nimport { join, resolve } from 'node:path';\n\nimport { generate } from '@sdk-it/typescript';\n\nimport { hashProject, isCurrentGeneratedPackage } from './cache.ts';\nimport { compileGeneratedPackage } from './compiler.ts';\nimport type { ProjectConfig } from './config.ts';\n\ntype ProjectOpenApi = Parameters<typeof generate>[0];\n\nexport async function writeProjectClient(\n openapi: ProjectOpenApi,\n config: ProjectConfig,\n): Promise<void> {\n const output = resolve(config.output ?? '.sdk-it');\n const packageName = config.packageName ?? '@sdk-it/client';\n const hash = hashProject(openapi, packageName);\n if (await isCurrentGeneratedPackage(output, hash)) return;\n\n await generate(openapi, {\n output,\n mode: 'full',\n name: 'Client',\n packageName,\n readme: false,\n });\n await compileGeneratedPackage(output, packageName);\n await writeFile(join(output, '.project-hash'), hash);\n}\n", "import { createHash } from 'node:crypto';\nimport { access, readFile, readdir } from 'node:fs/promises';\nimport { createRequire } from 'node:module';\nimport { join, relative } from 'node:path';\nimport ts from 'typescript';\n\nimport type { generate } from '@sdk-it/typescript';\n\nconst require = createRequire(import.meta.url);\nconst projectGeneratorVersions = {\n cli: require('@sdk-it/cli/package.json').version,\n compiler: ts.version,\n typescript: require('@sdk-it/typescript/package.json').version,\n};\n\ntype ProjectOpenApi = Parameters<typeof generate>[0];\n\nexport function hashProject(\n openapi: ProjectOpenApi,\n packageName: string,\n): string {\n return createHash('sha256')\n .update(JSON.stringify({ openapi, packageName, projectGeneratorVersions }))\n .digest('hex');\n}\n\nexport async function isCurrentGeneratedPackage(\n output: string,\n hash: string,\n): Promise<boolean> {\n return (\n (await readOptionalFile(join(output, '.project-hash'))) === hash &&\n (await generatedPackageExists(output))\n );\n}\n\nasync function generatedPackageExists(output: string): Promise<boolean> {\n try {\n const sourceRoot = join(output, 'src');\n const sources = await findSourceFiles(sourceRoot);\n if (!sources.includes(join(sourceRoot, 'index.ts'))) return false;\n\n await Promise.all([\n access(join(output, 'package.json')),\n ...sources.flatMap((source) =>\n expectedCompiledFiles(output, sourceRoot, source).map((file) =>\n access(file),\n ),\n ),\n ]);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction expectedCompiledFiles(\n output: string,\n sourceRoot: string,\n source: string,\n): string[] {\n const compiled = relative(sourceRoot, source).slice(0, -3);\n return [\n join(output, 'dist', `${compiled}.js`),\n join(output, 'dist', `${compiled}.d.ts`),\n ];\n}\n\nasync function findSourceFiles(directory: string): Promise<string[]> {\n const entries = await readdir(directory, { withFileTypes: true });\n const files = await Promise.all(\n entries.map(async (entry) => {\n const path = join(directory, entry.name);\n if (entry.isDirectory()) return findSourceFiles(path);\n return entry.isFile() && path.endsWith('.ts') && !path.endsWith('.d.ts')\n ? [path]\n : [];\n }),\n );\n return files.flat();\n}\n\nasync function readOptionalFile(path: string): Promise<string | undefined> {\n try {\n return await readFile(path, 'utf8');\n } catch (error) {\n if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {\n return undefined;\n }\n throw error;\n }\n}\n", "import { readFile, writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport ts from 'typescript';\n\ninterface GeneratedPackageManifest {\n name?: string;\n version?: string;\n type?: string;\n main?: string;\n module?: string;\n types?: string;\n publishConfig?: Record<string, unknown>;\n exports?: Record<string, unknown>;\n dependencies?: Record<string, string>;\n}\n\nexport async function compileGeneratedPackage(\n output: string,\n packageName: string,\n): Promise<void> {\n const source = join(output, 'src');\n const program = ts.createProgram({\n rootNames: ts.sys.readDirectory(source, ['.ts']),\n options: {\n allowSyntheticDefaultImports: true,\n declaration: true,\n module: ts.ModuleKind.ESNext,\n moduleResolution: ts.ModuleResolutionKind.Bundler,\n noEmitOnError: true,\n outDir: join(output, 'dist'),\n rewriteRelativeImportExtensions: true,\n rootDir: source,\n skipLibCheck: true,\n target: ts.ScriptTarget.ESNext,\n verbatimModuleSyntax: true,\n },\n });\n const result = program.emit();\n const diagnostics = [\n ...ts.getPreEmitDiagnostics(program),\n ...result.diagnostics,\n ].filter((diagnostic) => diagnostic.category === ts.DiagnosticCategory.Error);\n if (result.emitSkipped || diagnostics.length > 0) {\n throw new Error(formatCompilationError(output, diagnostics));\n }\n\n await synchronizeGeneratedManifest(output, packageName);\n}\n\nfunction formatCompilationError(\n output: string,\n diagnostics: readonly ts.Diagnostic[],\n): string {\n return `Failed to compile generated client:\\n${ts.formatDiagnosticsWithColorAndContext(\n diagnostics,\n {\n getCanonicalFileName: (fileName) => fileName,\n getCurrentDirectory: () => output,\n getNewLine: () => '\\n',\n },\n )}`;\n}\n\nasync function synchronizeGeneratedManifest(\n output: string,\n packageName: string,\n): Promise<void> {\n const manifestPath = join(output, 'package.json');\n const manifest = JSON.parse(\n await readFile(manifestPath, 'utf8'),\n ) as GeneratedPackageManifest;\n Object.assign(manifest, {\n name: packageName,\n version: '0.0.1',\n type: 'module',\n main: './dist/index.js',\n module: './dist/index.js',\n types: './dist/index.d.ts',\n });\n manifest.publishConfig = { ...manifest.publishConfig, access: 'public' };\n manifest.exports = {\n ...manifest.exports,\n './package.json': './package.json',\n '.': {\n types: './dist/index.d.ts',\n import: './dist/index.js',\n default: './dist/index.js',\n },\n };\n manifest.dependencies = {\n ...manifest.dependencies,\n 'fast-content-type-parse': '^3.0.0',\n zod: '^4.3.0',\n };\n await writeFile(manifestPath, `${JSON.stringify(manifest, null, 2)}\\n`);\n}\n", "import { access, readFile, stat, writeFile } from 'node:fs/promises';\nimport { dirname, join, relative, resolve } from 'node:path';\nimport { pathToFileURL } from 'node:url';\n\nexport interface ProjectConfig {\n tsconfig: string;\n framework?: 'auto' | 'hono';\n preset?: 'auto' | 'prisma' | 'none';\n output?: string;\n packageName?: string;\n}\n\nexport interface ResolvedProjectConfig extends ProjectConfig {\n output: string;\n}\n\nexport interface LoadProjectConfigOptions {\n cwd?: string;\n config?: string;\n}\n\nexport interface InitializeProjectOptions {\n cwd?: string;\n tsconfig: string;\n}\n\ninterface ProjectPackageManifest {\n workspaces?: string[] | { packages?: string[]; [key: string]: unknown };\n [key: string]: unknown;\n}\n\nexport function defineConfig<const Config extends ProjectConfig>(\n config: Config,\n): Config {\n return config;\n}\n\nexport async function loadProjectConfig(\n options: LoadProjectConfigOptions = {},\n): Promise<ResolvedProjectConfig> {\n const cwd = resolve(options.cwd ?? process.cwd());\n const configPath = options.config\n ? resolve(cwd, options.config)\n : await findProjectConfig(cwd);\n const loaded = await import(pathToFileURL(configPath).href);\n const config = loaded.default as ProjectConfig | undefined;\n if (!config || typeof config.tsconfig !== 'string') {\n throw new Error(\n `Expected ${configPath} to default export an SDK-IT config with a tsconfig path.`,\n );\n }\n\n const directory = dirname(configPath);\n return {\n ...config,\n tsconfig: resolve(directory, config.tsconfig),\n output: resolve(directory, config.output ?? '.sdk-it'),\n };\n}\n\nexport async function initializeProject(\n options: InitializeProjectOptions,\n): Promise<void> {\n const cwd = resolve(options.cwd ?? process.cwd());\n const configPath = join(cwd, 'sdk-it.config.ts');\n const tsconfigPath = resolve(cwd, options.tsconfig);\n await validateTsconfig(tsconfigPath);\n const tsconfig = relative(cwd, tsconfigPath).replaceAll('\\\\', '/');\n const relativeTsconfig = tsconfig.startsWith('.')\n ? tsconfig\n : `./${tsconfig}`;\n const configSource = `import { defineConfig } from '@sdk-it/cli';\n\nexport default defineConfig({\n tsconfig: '${relativeTsconfig}',\n});\n`;\n\n const existingConfig = await readOptionalFile(configPath);\n if (existingConfig !== undefined && existingConfig !== configSource) {\n throw new Error(\n `${configPath} already exists with different settings. Review it before replacing the file.`,\n );\n }\n\n const packagePath = join(cwd, 'package.json');\n const manifest = JSON.parse(\n await readFile(packagePath, 'utf8'),\n ) as ProjectPackageManifest;\n const manifestChanged = addGeneratedWorkspace(manifest);\n\n const gitignorePath = join(cwd, '.gitignore');\n const gitignore = (await readOptionalFile(gitignorePath)) ?? '';\n if (!ignoresGeneratedWorkspace(gitignore)) {\n const prefix =\n gitignore.length > 0 && !gitignore.endsWith('\\n') ? '\\n' : '';\n await writeFile(gitignorePath, `${gitignore}${prefix}.sdk-it/\\n`);\n }\n\n if (manifestChanged) {\n await writeFile(packagePath, `${JSON.stringify(manifest, null, 2)}\\n`);\n }\n\n if (existingConfig === undefined) {\n await writeFile(configPath, configSource);\n }\n}\n\nfunction addGeneratedWorkspace(manifest: ProjectPackageManifest): boolean {\n const workspaces = manifest.workspaces;\n if (Array.isArray(workspaces)) {\n if (workspaces.includes('.sdk-it')) return false;\n workspaces.push('.sdk-it');\n return true;\n }\n if (workspaces && Array.isArray(workspaces.packages)) {\n if (workspaces.packages.includes('.sdk-it')) return false;\n workspaces.packages.push('.sdk-it');\n return true;\n }\n manifest.workspaces = ['.sdk-it'];\n return true;\n}\n\nfunction ignoresGeneratedWorkspace(gitignore: string): boolean {\n return gitignore\n .split(/\\r?\\n/)\n .some((line) => line.trim() === '.sdk-it/' || line.trim() === '.sdk-it');\n}\n\nasync function validateTsconfig(path: string): Promise<void> {\n try {\n if ((await stat(path)).isFile()) return;\n } catch (error) {\n if (!(\n error instanceof Error &&\n 'code' in error &&\n error.code === 'ENOENT'\n )) {\n throw error;\n }\n }\n throw new Error(`Could not find a TypeScript project at ${path}.`);\n}\n\nasync function findProjectConfig(start: string): Promise<string> {\n let directory = start;\n while (true) {\n const candidate = join(directory, 'sdk-it.config.ts');\n try {\n await access(candidate);\n return candidate;\n } catch {\n const parent = dirname(directory);\n if (parent === directory) {\n throw new Error(\n `Could not find sdk-it.config.ts from ${start} or any parent directory.`,\n );\n }\n directory = parent;\n }\n }\n}\n\nasync function readOptionalFile(path: string): Promise<string | undefined> {\n try {\n return await readFile(path, 'utf8');\n } catch (error) {\n if (error instanceof Error && 'code' in error && error.code === 'ENOENT') {\n return undefined;\n }\n throw error;\n }\n}\n"],
|
|
5
|
+
"mappings": ";AAAA,SAAS,WAAAA,gBAAe;;;ACAxB,SAAS,qBAAqB;AAC9B,OAAO,QAAQ;AAEf,SAA4B,iBAAiB,kBAAkB;AAC/D,SAAS,eAAe;AACxB,SAAS,oBAAoB,4BAA4B;AAIzD,eAAsB,eAAe,UAAkB,QAAuB;AAC5E,QAAM,YAAY,iBAAiB,UAAU,OAAO,SAAS;AAC7D,MAAI,cAAc,QAAQ;AACxB,UAAM,IAAI;AAAA,MACR,+CAA+C,OAAO,QAAQ;AAAA,IAChE;AAAA,EACF;AAEA,QAAM,SAAS,OAAO,WAAW,SAAS,SAAY,aAAa,QAAQ;AAC3E,MAAI,OAAO,WAAW,YAAY,CAAC,QAAQ;AACzC,UAAM,IAAI;AAAA,MACR,yEAAyE,QAAQ;AAAA,IACnF;AAAA,EACF;AAEA,QAAM,EAAE,OAAO,WAAW,IAAI,MAAM,QAAQ,UAAU;AAAA,IACpD,kBAAkB;AAAA,IAClB,GAAI,SACA;AAAA,MACE,SAAS,OAAO;AAAA,MAChB,UAAU;AAAA,QACR,GAAG;AAAA,QACH,SAAS;AAAA,MACX;AAAA,IACF,IACA,CAAC;AAAA,EACP,CAAC;AAED,SAAO;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,MACJ,OAAO;AAAA,MACP,SAAS;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,iBACP,UACA,YACiB;AACjB,SAAO,eAAe,UAAa,eAAe,SAC9C,gBAAgB,QAAQ,IACxB;AACN;AAEA,SAAS,gBAAgB,UAAmC;AAC1D,QAAM,UAAU,WAAW,QAAQ;AACnC,aAAW,cAAc,QAAQ,eAAe,GAAG;AACjD,QAAI,WAAW,kBAAmB;AAClC,eAAW,aAAa,WAAW,YAAY;AAC7C,UACE,GAAG,oBAAoB,SAAS,KAChC,GAAG,gBAAgB,UAAU,eAAe,MAC3C,UAAU,gBAAgB,SAAS,UAClC,UAAU,gBAAgB,KAAK,WAAW,cAAc,IAC1D;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,aACP,UACyC;AACzC,QAAM,UAAU,WAAW,QAAQ;AACnC,QAAM,UAA0B,CAAC;AACjC,QAAM,kBAAkB,oBAAI,IAAY;AACxC,aAAW,cAAc,QAAQ,eAAe,GAAG;AACjD,QAAI,WAAW,kBAAmB;AAClC,eAAW,aAAa,WAAW,YAAY;AAC7C,YAAM,eAAe,gBAAgB,SAAS;AAC9C,UAAI,CAAC,aAAc;AACnB,YAAM,iBAAiB,GAAG;AAAA,QACxB,aAAa;AAAA,QACb,WAAW;AAAA,QACX,QAAQ,mBAAmB;AAAA,QAC3B,GAAG;AAAA,MACL;AACA,UAAI,CAAC,eAAe,eAAgB;AAEpC,UAAI;AACJ,UAAI;AACF,wBAAgB,cAAc,WAAW,QAAQ,EAAE;AAAA,UACjD,aAAa;AAAA,QACf;AAAA,MACF,QAAQ;AACN;AAAA,MACF;AAEA,UAAI,CAAC,gBAAgB,IAAI,aAAa,GAAG;AACvC,gBAAQ,IAAI,+BAA+B,aAAa,EAAE;AAC1D,wBAAgB,IAAI,aAAa;AAAA,MACnC;AACA,iBAAW,EAAE,UAAU,MAAM,KAAK,aAAa,UAAU;AACvD,YACE,CAAC,QAAQ;AAAA,UACP,CAAC,SAAS,KAAK,WAAW,SAAS,KAAK,SAAS;AAAA,QACnD,GACA;AACA,kBAAQ,KAAK;AAAA,YACX,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,UAAU;AAAA,UACZ,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,SAAO,QAAQ,SAAS,IAAI,EAAE,QAAQ,IAAI;AAC5C;AAEA,SAAS,gBAAgB,WAKX;AACZ,MACE,CAAC,GAAG,oBAAoB,SAAS,KACjC,CAAC,GAAG,gBAAgB,UAAU,eAAe,KAC7C,CAAC,UAAU,cAAc,iBACzB,CAAC,GAAG,eAAe,UAAU,aAAa,aAAa,GACvD;AACA,WAAO;AAAA,EACT;AACA,QAAM,WAAW,UAAU,aAAa,cAAc,SACnD,IAAI,CAAC,aAAa;AAAA,IACjB,UAAU,QAAQ,cAAc,QAAQ,QAAQ,KAAK;AAAA,IACrD,OAAO,QAAQ,KAAK;AAAA,EACtB,EAAE,EACD,OAAO,CAAC,EAAE,SAAS,MAAM,aAAa,YAAY,aAAa,QAAQ;AAC1E,SAAO,SAAS,SAAS,IACrB,EAAE,iBAAiB,UAAU,gBAAgB,MAAM,SAAS,IAC5D;AACN;;;ACpJA,SAAS,aAAAC,kBAAiB;AAC1B,SAAS,QAAAC,OAAM,eAAe;AAE9B,SAAS,gBAAgB;;;ACHzB,SAAS,kBAAkB;AAC3B,SAAS,QAAQ,UAAU,eAAe;AAC1C,SAAS,iBAAAC,sBAAqB;AAC9B,SAAS,MAAM,gBAAgB;AAC/B,OAAOC,SAAQ;AAIf,IAAMC,WAAUF,eAAc,YAAY,GAAG;AAC7C,IAAM,2BAA2B;AAAA,EAC/B,KAAKE,SAAQ,0BAA0B,EAAE;AAAA,EACzC,UAAUD,IAAG;AAAA,EACb,YAAYC,SAAQ,iCAAiC,EAAE;AACzD;AAIO,SAAS,YACd,SACA,aACQ;AACR,SAAO,WAAW,QAAQ,EACvB,OAAO,KAAK,UAAU,EAAE,SAAS,aAAa,yBAAyB,CAAC,CAAC,EACzE,OAAO,KAAK;AACjB;AAEA,eAAsB,0BACpB,QACA,MACkB;AAClB,SACG,MAAM,iBAAiB,KAAK,QAAQ,eAAe,CAAC,MAAO,QAC3D,MAAM,uBAAuB,MAAM;AAExC;AAEA,eAAe,uBAAuB,QAAkC;AACtE,MAAI;AACF,UAAM,aAAa,KAAK,QAAQ,KAAK;AACrC,UAAM,UAAU,MAAM,gBAAgB,UAAU;AAChD,QAAI,CAAC,QAAQ,SAAS,KAAK,YAAY,UAAU,CAAC,EAAG,QAAO;AAE5D,UAAM,QAAQ,IAAI;AAAA,MAChB,OAAO,KAAK,QAAQ,cAAc,CAAC;AAAA,MACnC,GAAG,QAAQ;AAAA,QAAQ,CAAC,WAClB,sBAAsB,QAAQ,YAAY,MAAM,EAAE;AAAA,UAAI,CAAC,SACrD,OAAO,IAAI;AAAA,QACb;AAAA,MACF;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,sBACP,QACA,YACA,QACU;AACV,QAAM,WAAW,SAAS,YAAY,MAAM,EAAE,MAAM,GAAG,EAAE;AACzD,SAAO;AAAA,IACL,KAAK,QAAQ,QAAQ,GAAG,QAAQ,KAAK;AAAA,IACrC,KAAK,QAAQ,QAAQ,GAAG,QAAQ,OAAO;AAAA,EACzC;AACF;AAEA,eAAe,gBAAgB,WAAsC;AACnE,QAAM,UAAU,MAAM,QAAQ,WAAW,EAAE,eAAe,KAAK,CAAC;AAChE,QAAM,QAAQ,MAAM,QAAQ;AAAA,IAC1B,QAAQ,IAAI,OAAO,UAAU;AAC3B,YAAM,OAAO,KAAK,WAAW,MAAM,IAAI;AACvC,UAAI,MAAM,YAAY,EAAG,QAAO,gBAAgB,IAAI;AACpD,aAAO,MAAM,OAAO,KAAK,KAAK,SAAS,KAAK,KAAK,CAAC,KAAK,SAAS,OAAO,IACnE,CAAC,IAAI,IACL,CAAC;AAAA,IACP,CAAC;AAAA,EACH;AACA,SAAO,MAAM,KAAK;AACpB;AAEA,eAAe,iBAAiB,MAA2C;AACzE,MAAI;AACF,WAAO,MAAM,SAAS,MAAM,MAAM;AAAA,EACpC,SAAS,OAAO;AACd,QAAI,iBAAiB,SAAS,UAAU,SAAS,MAAM,SAAS,UAAU;AACxE,aAAO;AAAA,IACT;AACA,UAAM;AAAA,EACR;AACF;;;AC3FA,SAAS,YAAAC,WAAU,iBAAiB;AACpC,SAAS,QAAAC,aAAY;AACrB,OAAOC,SAAQ;AAcf,eAAsB,wBACpB,QACA,aACe;AACf,QAAM,SAASD,MAAK,QAAQ,KAAK;AACjC,QAAM,UAAUC,IAAG,cAAc;AAAA,IAC/B,WAAWA,IAAG,IAAI,cAAc,QAAQ,CAAC,KAAK,CAAC;AAAA,IAC/C,SAAS;AAAA,MACP,8BAA8B;AAAA,MAC9B,aAAa;AAAA,MACb,QAAQA,IAAG,WAAW;AAAA,MACtB,kBAAkBA,IAAG,qBAAqB;AAAA,MAC1C,eAAe;AAAA,MACf,QAAQD,MAAK,QAAQ,MAAM;AAAA,MAC3B,iCAAiC;AAAA,MACjC,SAAS;AAAA,MACT,cAAc;AAAA,MACd,QAAQC,IAAG,aAAa;AAAA,MACxB,sBAAsB;AAAA,IACxB;AAAA,EACF,CAAC;AACD,QAAM,SAAS,QAAQ,KAAK;AAC5B,QAAM,cAAc;AAAA,IAClB,GAAGA,IAAG,sBAAsB,OAAO;AAAA,IACnC,GAAG,OAAO;AAAA,EACZ,EAAE,OAAO,CAAC,eAAe,WAAW,aAAaA,IAAG,mBAAmB,KAAK;AAC5E,MAAI,OAAO,eAAe,YAAY,SAAS,GAAG;AAChD,UAAM,IAAI,MAAM,uBAAuB,QAAQ,WAAW,CAAC;AAAA,EAC7D;AAEA,QAAM,6BAA6B,QAAQ,WAAW;AACxD;AAEA,SAAS,uBACP,QACA,aACQ;AACR,SAAO;AAAA,EAAwCA,IAAG;AAAA,IAChD;AAAA,IACA;AAAA,MACE,sBAAsB,CAAC,aAAa;AAAA,MACpC,qBAAqB,MAAM;AAAA,MAC3B,YAAY,MAAM;AAAA,IACpB;AAAA,EACF,CAAC;AACH;AAEA,eAAe,6BACb,QACA,aACe;AACf,QAAM,eAAeD,MAAK,QAAQ,cAAc;AAChD,QAAM,WAAW,KAAK;AAAA,IACpB,MAAMD,UAAS,cAAc,MAAM;AAAA,EACrC;AACA,SAAO,OAAO,UAAU;AAAA,IACtB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,EACT,CAAC;AACD,WAAS,gBAAgB,EAAE,GAAG,SAAS,eAAe,QAAQ,SAAS;AACvE,WAAS,UAAU;AAAA,IACjB,GAAG,SAAS;AAAA,IACZ,kBAAkB;AAAA,IAClB,KAAK;AAAA,MACH,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA,IACX;AAAA,EACF;AACA,WAAS,eAAe;AAAA,IACtB,GAAG,SAAS;AAAA,IACZ,2BAA2B;AAAA,IAC3B,KAAK;AAAA,EACP;AACA,QAAM,UAAU,cAAc,GAAG,KAAK,UAAU,UAAU,MAAM,CAAC,CAAC;AAAA,CAAI;AACxE;;;AFpFA,eAAsB,mBACpB,SACA,QACe;AACf,QAAM,SAAS,QAAQ,OAAO,UAAU,SAAS;AACjD,QAAM,cAAc,OAAO,eAAe;AAC1C,QAAM,OAAO,YAAY,SAAS,WAAW;AAC7C,MAAI,MAAM,0BAA0B,QAAQ,IAAI,EAAG;AAEnD,QAAM,SAAS,SAAS;AAAA,IACtB;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA,QAAQ;AAAA,EACV,CAAC;AACD,QAAM,wBAAwB,QAAQ,WAAW;AACjD,QAAMG,WAAUC,MAAK,QAAQ,eAAe,GAAG,IAAI;AACrD;;;AG7BA,SAAS,UAAAC,SAAQ,YAAAC,WAAU,MAAM,aAAAC,kBAAiB;AAClD,SAAS,SAAS,QAAAC,OAAM,YAAAC,WAAU,WAAAC,gBAAe;AACjD,SAAS,qBAAqB;AA6BvB,SAAS,aACd,QACQ;AACR,SAAO;AACT;AAEA,eAAsB,kBACpB,UAAoC,CAAC,GACL;AAChC,QAAM,MAAMA,SAAQ,QAAQ,OAAO,QAAQ,IAAI,CAAC;AAChD,QAAM,aAAa,QAAQ,SACvBA,SAAQ,KAAK,QAAQ,MAAM,IAC3B,MAAM,kBAAkB,GAAG;AAC/B,QAAM,SAAS,MAAM,OAAO,cAAc,UAAU,EAAE;AACtD,QAAM,SAAS,OAAO;AACtB,MAAI,CAAC,UAAU,OAAO,OAAO,aAAa,UAAU;AAClD,UAAM,IAAI;AAAA,MACR,YAAY,UAAU;AAAA,IACxB;AAAA,EACF;AAEA,QAAM,YAAY,QAAQ,UAAU;AACpC,SAAO;AAAA,IACL,GAAG;AAAA,IACH,UAAUA,SAAQ,WAAW,OAAO,QAAQ;AAAA,IAC5C,QAAQA,SAAQ,WAAW,OAAO,UAAU,SAAS;AAAA,EACvD;AACF;AAEA,eAAsB,kBACpB,SACe;AACf,QAAM,MAAMA,SAAQ,QAAQ,OAAO,QAAQ,IAAI,CAAC;AAChD,QAAM,aAAaF,MAAK,KAAK,kBAAkB;AAC/C,QAAM,eAAeE,SAAQ,KAAK,QAAQ,QAAQ;AAClD,QAAM,iBAAiB,YAAY;AACnC,QAAM,WAAWD,UAAS,KAAK,YAAY,EAAE,WAAW,MAAM,GAAG;AACjE,QAAM,mBAAmB,SAAS,WAAW,GAAG,IAC5C,WACA,KAAK,QAAQ;AACjB,QAAM,eAAe;AAAA;AAAA;AAAA,eAGR,gBAAgB;AAAA;AAAA;AAI7B,QAAM,iBAAiB,MAAME,kBAAiB,UAAU;AACxD,MAAI,mBAAmB,UAAa,mBAAmB,cAAc;AACnE,UAAM,IAAI;AAAA,MACR,GAAG,UAAU;AAAA,IACf;AAAA,EACF;AAEA,QAAM,cAAcH,MAAK,KAAK,cAAc;AAC5C,QAAM,WAAW,KAAK;AAAA,IACpB,MAAMF,UAAS,aAAa,MAAM;AAAA,EACpC;AACA,QAAM,kBAAkB,sBAAsB,QAAQ;AAEtD,QAAM,gBAAgBE,MAAK,KAAK,YAAY;AAC5C,QAAM,YAAa,MAAMG,kBAAiB,aAAa,KAAM;AAC7D,MAAI,CAAC,0BAA0B,SAAS,GAAG;AACzC,UAAM,SACJ,UAAU,SAAS,KAAK,CAAC,UAAU,SAAS,IAAI,IAAI,OAAO;AAC7D,UAAMJ,WAAU,eAAe,GAAG,SAAS,GAAG,MAAM;AAAA,CAAY;AAAA,EAClE;AAEA,MAAI,iBAAiB;AACnB,UAAMA,WAAU,aAAa,GAAG,KAAK,UAAU,UAAU,MAAM,CAAC,CAAC;AAAA,CAAI;AAAA,EACvE;AAEA,MAAI,mBAAmB,QAAW;AAChC,UAAMA,WAAU,YAAY,YAAY;AAAA,EAC1C;AACF;AAEA,SAAS,sBAAsB,UAA2C;AACxE,QAAM,aAAa,SAAS;AAC5B,MAAI,MAAM,QAAQ,UAAU,GAAG;AAC7B,QAAI,WAAW,SAAS,SAAS,EAAG,QAAO;AAC3C,eAAW,KAAK,SAAS;AACzB,WAAO;AAAA,EACT;AACA,MAAI,cAAc,MAAM,QAAQ,WAAW,QAAQ,GAAG;AACpD,QAAI,WAAW,SAAS,SAAS,SAAS,EAAG,QAAO;AACpD,eAAW,SAAS,KAAK,SAAS;AAClC,WAAO;AAAA,EACT;AACA,WAAS,aAAa,CAAC,SAAS;AAChC,SAAO;AACT;AAEA,SAAS,0BAA0B,WAA4B;AAC7D,SAAO,UACJ,MAAM,OAAO,EACb,KAAK,CAAC,SAAS,KAAK,KAAK,MAAM,cAAc,KAAK,KAAK,MAAM,SAAS;AAC3E;AAEA,eAAe,iBAAiB,MAA6B;AAC3D,MAAI;AACF,SAAK,MAAM,KAAK,IAAI,GAAG,OAAO,EAAG;AAAA,EACnC,SAAS,OAAO;AACd,QAAI,EACF,iBAAiB,SACjB,UAAU,SACV,MAAM,SAAS,WACd;AACD,YAAM;AAAA,IACR;AAAA,EACF;AACA,QAAM,IAAI,MAAM,0CAA0C,IAAI,GAAG;AACnE;AAEA,eAAe,kBAAkB,OAAgC;AAC/D,MAAI,YAAY;AAChB,SAAO,MAAM;AACX,UAAM,YAAYC,MAAK,WAAW,kBAAkB;AACpD,QAAI;AACF,YAAMH,QAAO,SAAS;AACtB,aAAO;AAAA,IACT,QAAQ;AACN,YAAM,SAAS,QAAQ,SAAS;AAChC,UAAI,WAAW,WAAW;AACxB,cAAM,IAAI;AAAA,UACR,wCAAwC,KAAK;AAAA,QAC/C;AAAA,MACF;AACA,kBAAY;AAAA,IACd;AAAA,EACF;AACF;AAEA,eAAeM,kBAAiB,MAA2C;AACzE,MAAI;AACF,WAAO,MAAML,UAAS,MAAM,MAAM;AAAA,EACpC,SAAS,OAAO;AACd,QAAI,iBAAiB,SAAS,UAAU,SAAS,MAAM,SAAS,UAAU;AACxE,aAAO;AAAA,IACT;AACA,UAAM;AAAA,EACR;AACF;;;AL3JA,eAAsB,gBAAgB,QAAsC;AAC1E,QAAM,WAAWM,SAAQ,OAAO,QAAQ;AACxC,QAAM,UAAU,MAAM,eAAe,UAAU,MAAM;AACrD,QAAM,mBAAmB,SAAS,MAAM;AAC1C;",
|
|
6
6
|
"names": ["resolve", "writeFile", "join", "createRequire", "ts", "require", "readFile", "join", "ts", "writeFile", "join", "access", "readFile", "writeFile", "join", "relative", "resolve", "readOptionalFile", "resolve"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sdk-it/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.46.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -20,23 +20,23 @@
|
|
|
20
20
|
"!**/*.test.*"
|
|
21
21
|
],
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@sdk-it/typescript": "0.
|
|
24
|
-
"@sdk-it/dart": "0.
|
|
25
|
-
"@sdk-it/spec": "0.
|
|
23
|
+
"@sdk-it/typescript": "0.46.1",
|
|
24
|
+
"@sdk-it/dart": "0.46.1",
|
|
25
|
+
"@sdk-it/spec": "0.46.1",
|
|
26
26
|
"commander": "^13.1.0",
|
|
27
|
-
"@sdk-it/core": "0.
|
|
28
|
-
"@sdk-it/generic": "0.
|
|
29
|
-
"@sdk-it/hono": "0.
|
|
27
|
+
"@sdk-it/core": "0.46.1",
|
|
28
|
+
"@sdk-it/generic": "0.46.1",
|
|
29
|
+
"@sdk-it/hono": "0.46.1",
|
|
30
30
|
"libnpmpublish": "^11.0.0",
|
|
31
31
|
"openapi3-ts": "4.5.0",
|
|
32
32
|
"registry-auth-token": "^5.1.0",
|
|
33
|
-
"@sdk-it/python": "0.
|
|
33
|
+
"@sdk-it/python": "0.46.1",
|
|
34
34
|
"execa": "^9.6.0",
|
|
35
|
-
"@sdk-it/readme": "0.
|
|
35
|
+
"@sdk-it/readme": "0.46.1",
|
|
36
36
|
"@inquirer/prompts": "^7.7.1"
|
|
37
37
|
},
|
|
38
38
|
"peerDependencies": {
|
|
39
|
-
"typescript": "^
|
|
39
|
+
"typescript": "^6.0.3"
|
|
40
40
|
},
|
|
41
41
|
"publishConfig": {
|
|
42
42
|
"access": "public"
|