@sdk-it/cli 0.46.2 → 0.46.4
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/dist/bin.js +140 -545
- package/dist/bin.js.map +4 -4
- package/dist/index.js +110 -29
- package/dist/index.js.map +3 -3
- package/dist/lib/cli.d.ts.map +1 -1
- package/dist/lib/commands/init.d.ts +2 -2
- package/dist/lib/commands/init.d.ts.map +1 -1
- package/dist/lib/generators/dart.d.ts +0 -6
- package/dist/lib/generators/dart.d.ts.map +1 -1
- package/dist/lib/generators/python.d.ts +0 -2
- package/dist/lib/generators/python.d.ts.map +1 -1
- package/dist/lib/generators/readme.d.ts +0 -1
- package/dist/lib/generators/readme.d.ts.map +1 -1
- package/dist/lib/generators/typescript.d.ts +0 -6
- package/dist/lib/generators/typescript.d.ts.map +1 -1
- package/dist/lib/project/analysis.d.ts +1 -1
- package/dist/lib/project/analysis.d.ts.map +1 -1
- package/dist/lib/project/compiler.d.ts +13 -0
- package/dist/lib/project/compiler.d.ts.map +1 -1
- package/dist/lib/project/config.d.ts +4 -0
- package/dist/lib/project/config.d.ts.map +1 -1
- package/dist/lib/types.d.ts +0 -18
- package/dist/lib/types.d.ts.map +1 -1
- package/package.json +9 -10
package/dist/index.js
CHANGED
|
@@ -22,6 +22,8 @@ async function analyzeProject(tsconfig, config) {
|
|
|
22
22
|
}
|
|
23
23
|
const { paths, components } = await analyze(tsconfig, {
|
|
24
24
|
responseAnalyzer: honoResponseAnalyzer,
|
|
25
|
+
securitySchemes: config.securitySchemes,
|
|
26
|
+
middlewareSecurity: config.middlewareSecurity,
|
|
25
27
|
...prisma ? {
|
|
26
28
|
imports: prisma.imports,
|
|
27
29
|
typesMap: {
|
|
@@ -224,9 +226,16 @@ ${ts3.formatDiagnosticsWithColorAndContext(
|
|
|
224
226
|
}
|
|
225
227
|
async function synchronizeGeneratedManifest(output, packageName) {
|
|
226
228
|
const manifestPath = join2(output, "package.json");
|
|
227
|
-
const manifest =
|
|
228
|
-
|
|
229
|
+
const manifest = generatedPackageManifest(
|
|
230
|
+
packageName,
|
|
231
|
+
JSON.parse(
|
|
232
|
+
await readFile2(manifestPath, "utf8")
|
|
233
|
+
)
|
|
229
234
|
);
|
|
235
|
+
await writeFile(manifestPath, `${JSON.stringify(manifest, null, 2)}
|
|
236
|
+
`);
|
|
237
|
+
}
|
|
238
|
+
function generatedPackageManifest(packageName, manifest) {
|
|
230
239
|
Object.assign(manifest, {
|
|
231
240
|
name: packageName,
|
|
232
241
|
version: "0.0.1",
|
|
@@ -250,8 +259,7 @@ async function synchronizeGeneratedManifest(output, packageName) {
|
|
|
250
259
|
"fast-content-type-parse": "^3.0.0",
|
|
251
260
|
zod: "^4.3.0"
|
|
252
261
|
};
|
|
253
|
-
|
|
254
|
-
`);
|
|
262
|
+
return manifest;
|
|
255
263
|
}
|
|
256
264
|
|
|
257
265
|
// packages/cli/src/lib/project/output.ts
|
|
@@ -272,8 +280,8 @@ async function writeProjectClient(openapi, config) {
|
|
|
272
280
|
}
|
|
273
281
|
|
|
274
282
|
// packages/cli/src/lib/project/config.ts
|
|
275
|
-
import { access as access2, readFile as readFile3, stat, writeFile as writeFile3 } from "node:fs/promises";
|
|
276
|
-
import { dirname, join as join4, relative as relative2, resolve as resolve2 } from "node:path";
|
|
283
|
+
import { access as access2, mkdir, readFile as readFile3, stat, writeFile as writeFile3 } from "node:fs/promises";
|
|
284
|
+
import { basename, dirname, join as join4, relative as relative2, resolve as resolve2 } from "node:path";
|
|
277
285
|
import { pathToFileURL } from "node:url";
|
|
278
286
|
function defineConfig(config) {
|
|
279
287
|
return config;
|
|
@@ -292,21 +300,41 @@ async function loadProjectConfig(options = {}) {
|
|
|
292
300
|
return {
|
|
293
301
|
...config,
|
|
294
302
|
tsconfig: resolve2(directory, config.tsconfig),
|
|
295
|
-
output: resolve2(directory, config.output ?? ".sdk-it")
|
|
303
|
+
output: resolve2(directory, config.output ?? ".sdk-it"),
|
|
304
|
+
...config.middlewareSecurity ? {
|
|
305
|
+
middlewareSecurity: config.middlewareSecurity.map((rule) => ({
|
|
306
|
+
...rule,
|
|
307
|
+
middleware: {
|
|
308
|
+
...rule.middleware,
|
|
309
|
+
from: resolve2(directory, rule.middleware.from)
|
|
310
|
+
}
|
|
311
|
+
}))
|
|
312
|
+
} : {}
|
|
296
313
|
};
|
|
297
314
|
}
|
|
298
315
|
async function initializeProject(options) {
|
|
299
316
|
const cwd = resolve2(options.cwd ?? process.cwd());
|
|
300
|
-
const configPath = join4(cwd, "sdk-it.config.ts");
|
|
301
317
|
const tsconfigPath = resolve2(cwd, options.tsconfig);
|
|
302
318
|
await validateTsconfig(tsconfigPath);
|
|
303
|
-
const
|
|
319
|
+
const projectDirectory = dirname(tsconfigPath);
|
|
320
|
+
const configPath = join4(projectDirectory, "sdk-it.config.ts");
|
|
321
|
+
const { directory: workspaceDirectory, manifest } = await findWorkspace(projectDirectory);
|
|
322
|
+
const packageName = generatedPackageName(
|
|
323
|
+
manifest.name,
|
|
324
|
+
projectDirectory,
|
|
325
|
+
workspaceDirectory
|
|
326
|
+
);
|
|
327
|
+
const tsconfig = relative2(projectDirectory, tsconfigPath).replaceAll(
|
|
328
|
+
"\\",
|
|
329
|
+
"/"
|
|
330
|
+
);
|
|
304
331
|
const relativeTsconfig = tsconfig.startsWith(".") ? tsconfig : `./${tsconfig}`;
|
|
305
332
|
const configSource = `import { defineConfig } from '@sdk-it/cli';
|
|
306
333
|
|
|
307
334
|
export default defineConfig({
|
|
308
335
|
tsconfig: '${relativeTsconfig}',
|
|
309
|
-
}
|
|
336
|
+
${projectDirectory === workspaceDirectory ? "" : ` packageName: '${packageName}',
|
|
337
|
+
`}});
|
|
310
338
|
`;
|
|
311
339
|
const existingConfig = await readOptionalFile2(configPath);
|
|
312
340
|
if (existingConfig !== void 0 && existingConfig !== configSource) {
|
|
@@ -314,43 +342,96 @@ export default defineConfig({
|
|
|
314
342
|
`${configPath} already exists with different settings. Review it before replacing the file.`
|
|
315
343
|
);
|
|
316
344
|
}
|
|
317
|
-
const
|
|
318
|
-
const
|
|
319
|
-
|
|
345
|
+
const output = join4(projectDirectory, ".sdk-it");
|
|
346
|
+
const manifestPath = join4(output, "package.json");
|
|
347
|
+
const existingManifest = await readOptionalFile2(manifestPath);
|
|
348
|
+
const generatedManifest = generatedPackageManifest(
|
|
349
|
+
packageName,
|
|
350
|
+
existingManifest ? JSON.parse(existingManifest) : {}
|
|
351
|
+
);
|
|
352
|
+
const generatedManifestSource = `${JSON.stringify(generatedManifest, null, 2)}
|
|
353
|
+
`;
|
|
354
|
+
const workspacePath = relative2(workspaceDirectory, output).replaceAll(
|
|
355
|
+
"\\",
|
|
356
|
+
"/"
|
|
320
357
|
);
|
|
321
|
-
const manifestChanged = addGeneratedWorkspace(manifest);
|
|
322
|
-
const gitignorePath = join4(
|
|
358
|
+
const manifestChanged = addGeneratedWorkspace(manifest, workspacePath);
|
|
359
|
+
const gitignorePath = join4(workspaceDirectory, ".gitignore");
|
|
323
360
|
const gitignore = await readOptionalFile2(gitignorePath) ?? "";
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
361
|
+
const updatedGitignore = withGeneratedWorkspaceIgnore(
|
|
362
|
+
gitignore,
|
|
363
|
+
workspacePath
|
|
364
|
+
);
|
|
365
|
+
if (updatedGitignore !== gitignore) {
|
|
366
|
+
await writeFile3(gitignorePath, updatedGitignore);
|
|
328
367
|
}
|
|
329
368
|
if (manifestChanged) {
|
|
330
|
-
await writeFile3(
|
|
331
|
-
|
|
369
|
+
await writeFile3(
|
|
370
|
+
join4(workspaceDirectory, "package.json"),
|
|
371
|
+
`${JSON.stringify(manifest, null, 2)}
|
|
372
|
+
`
|
|
373
|
+
);
|
|
332
374
|
}
|
|
333
375
|
if (existingConfig === void 0) {
|
|
334
376
|
await writeFile3(configPath, configSource);
|
|
335
377
|
}
|
|
378
|
+
if (existingManifest !== generatedManifestSource) {
|
|
379
|
+
await mkdir(output, { recursive: true });
|
|
380
|
+
await writeFile3(manifestPath, generatedManifestSource);
|
|
381
|
+
}
|
|
336
382
|
}
|
|
337
|
-
function addGeneratedWorkspace(manifest) {
|
|
383
|
+
function addGeneratedWorkspace(manifest, workspace) {
|
|
338
384
|
const workspaces = manifest.workspaces;
|
|
339
385
|
if (Array.isArray(workspaces)) {
|
|
340
|
-
if (workspaces.includes(
|
|
341
|
-
workspaces.push(
|
|
386
|
+
if (workspaces.includes(workspace)) return false;
|
|
387
|
+
workspaces.push(workspace);
|
|
342
388
|
return true;
|
|
343
389
|
}
|
|
344
390
|
if (workspaces && Array.isArray(workspaces.packages)) {
|
|
345
|
-
if (workspaces.packages.includes(
|
|
346
|
-
workspaces.packages.push(
|
|
391
|
+
if (workspaces.packages.includes(workspace)) return false;
|
|
392
|
+
workspaces.packages.push(workspace);
|
|
347
393
|
return true;
|
|
348
394
|
}
|
|
349
|
-
manifest.workspaces = [
|
|
395
|
+
manifest.workspaces = [workspace];
|
|
350
396
|
return true;
|
|
351
397
|
}
|
|
352
|
-
function
|
|
353
|
-
|
|
398
|
+
function withGeneratedWorkspaceIgnore(gitignore, workspace) {
|
|
399
|
+
const patterns = [
|
|
400
|
+
`!${workspace}/`,
|
|
401
|
+
`${workspace}/*`,
|
|
402
|
+
`!${workspace}/package.json`
|
|
403
|
+
];
|
|
404
|
+
const lines = gitignore.split(/\r?\n/).filter((line) => !patterns.includes(line.trim()));
|
|
405
|
+
while (lines.at(-1) === "") lines.pop();
|
|
406
|
+
return `${lines.length ? `${lines.join("\n")}
|
|
407
|
+
` : ""}${patterns.join("\n")}
|
|
408
|
+
`;
|
|
409
|
+
}
|
|
410
|
+
async function findWorkspace(start) {
|
|
411
|
+
let directory = start;
|
|
412
|
+
let nearest;
|
|
413
|
+
while (true) {
|
|
414
|
+
const source = await readOptionalFile2(join4(directory, "package.json"));
|
|
415
|
+
if (source) {
|
|
416
|
+
const candidate = {
|
|
417
|
+
directory,
|
|
418
|
+
manifest: JSON.parse(source)
|
|
419
|
+
};
|
|
420
|
+
nearest ??= candidate;
|
|
421
|
+
if (candidate.manifest.workspaces !== void 0) return candidate;
|
|
422
|
+
}
|
|
423
|
+
const parent = dirname(directory);
|
|
424
|
+
if (parent === directory) break;
|
|
425
|
+
directory = parent;
|
|
426
|
+
}
|
|
427
|
+
if (nearest) return nearest;
|
|
428
|
+
throw new Error(`Could not find a package.json from ${start}.`);
|
|
429
|
+
}
|
|
430
|
+
function generatedPackageName(workspaceName, projectDirectory, workspaceDirectory) {
|
|
431
|
+
if (projectDirectory === workspaceDirectory) return "@sdk-it/client";
|
|
432
|
+
const project = basename(projectDirectory).toLowerCase().replace(/[^a-z0-9._-]+/g, "-");
|
|
433
|
+
const scope = workspaceName?.match(/^@([^/]+)\//)?.[1];
|
|
434
|
+
return scope ? `@${scope}/${project}-client` : `${project}-client`;
|
|
354
435
|
}
|
|
355
436
|
async function validateTsconfig(path) {
|
|
356
437
|
try {
|
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 &&\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": "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",
|
|
6
|
-
"names": ["resolve", "writeFile", "join", "createRequire", "ts", "require", "readFile", "join", "ts", "writeFile", "join", "access", "readFile", "writeFile", "join", "relative", "resolve", "readOptionalFile", "resolve"]
|
|
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 securitySchemes: config.securitySchemes,\n middlewareSecurity: config.middlewareSecurity,\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 = generatedPackageManifest(\n packageName,\n JSON.parse(\n await readFile(manifestPath, 'utf8'),\n ) as GeneratedPackageManifest,\n );\n await writeFile(manifestPath, `${JSON.stringify(manifest, null, 2)}\\n`);\n}\n\nexport function generatedPackageManifest(\n packageName: string,\n manifest: GeneratedPackageManifest,\n): 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 return manifest;\n}\n", "import { access, mkdir, readFile, stat, writeFile } from 'node:fs/promises';\nimport { basename, dirname, join, relative, resolve } from 'node:path';\nimport { pathToFileURL } from 'node:url';\n\nimport type { OpenAPISecuritySchemeObject } from '@sdk-it/core';\nimport type { MiddlewareSecurityRule } from '@sdk-it/generic';\n\nimport { generatedPackageManifest } from './compiler.ts';\n\nexport interface ProjectConfig {\n tsconfig: string;\n framework?: 'auto' | 'hono';\n preset?: 'auto' | 'prisma' | 'none';\n output?: string;\n packageName?: string;\n securitySchemes?: Record<string, OpenAPISecuritySchemeObject>;\n middlewareSecurity?: readonly MiddlewareSecurityRule[];\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 name?: string;\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 ...(config.middlewareSecurity\n ? {\n middlewareSecurity: config.middlewareSecurity.map((rule) => ({\n ...rule,\n middleware: {\n ...rule.middleware,\n from: resolve(directory, rule.middleware.from),\n },\n })),\n }\n : {}),\n };\n}\n\nexport async function initializeProject(\n options: InitializeProjectOptions,\n): Promise<void> {\n const cwd = resolve(options.cwd ?? process.cwd());\n const tsconfigPath = resolve(cwd, options.tsconfig);\n await validateTsconfig(tsconfigPath);\n const projectDirectory = dirname(tsconfigPath);\n const configPath = join(projectDirectory, 'sdk-it.config.ts');\n const { directory: workspaceDirectory, manifest } =\n await findWorkspace(projectDirectory);\n const packageName = generatedPackageName(\n manifest.name,\n projectDirectory,\n workspaceDirectory,\n );\n const tsconfig = relative(projectDirectory, tsconfigPath).replaceAll(\n '\\\\',\n '/',\n );\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${projectDirectory === workspaceDirectory ? '' : ` packageName: '${packageName}',\\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 output = join(projectDirectory, '.sdk-it');\n const manifestPath = join(output, 'package.json');\n const existingManifest = await readOptionalFile(manifestPath);\n const generatedManifest = generatedPackageManifest(\n packageName,\n existingManifest\n ? (JSON.parse(existingManifest) as ProjectPackageManifest)\n : {},\n );\n const generatedManifestSource = `${JSON.stringify(generatedManifest, null, 2)}\\n`;\n const workspacePath = relative(workspaceDirectory, output).replaceAll(\n '\\\\',\n '/',\n );\n const manifestChanged = addGeneratedWorkspace(manifest, workspacePath);\n\n const gitignorePath = join(workspaceDirectory, '.gitignore');\n const gitignore = (await readOptionalFile(gitignorePath)) ?? '';\n const updatedGitignore = withGeneratedWorkspaceIgnore(\n gitignore,\n workspacePath,\n );\n if (updatedGitignore !== gitignore) {\n await writeFile(gitignorePath, updatedGitignore);\n }\n\n if (manifestChanged) {\n await writeFile(\n join(workspaceDirectory, 'package.json'),\n `${JSON.stringify(manifest, null, 2)}\\n`,\n );\n }\n\n if (existingConfig === undefined) {\n await writeFile(configPath, configSource);\n }\n if (existingManifest !== generatedManifestSource) {\n await mkdir(output, { recursive: true });\n await writeFile(manifestPath, generatedManifestSource);\n }\n}\n\nfunction addGeneratedWorkspace(\n manifest: ProjectPackageManifest,\n workspace: string,\n): boolean {\n const workspaces = manifest.workspaces;\n if (Array.isArray(workspaces)) {\n if (workspaces.includes(workspace)) return false;\n workspaces.push(workspace);\n return true;\n }\n if (workspaces && Array.isArray(workspaces.packages)) {\n if (workspaces.packages.includes(workspace)) return false;\n workspaces.packages.push(workspace);\n return true;\n }\n manifest.workspaces = [workspace];\n return true;\n}\n\nfunction withGeneratedWorkspaceIgnore(\n gitignore: string,\n workspace: string,\n): string {\n const patterns = [\n `!${workspace}/`,\n `${workspace}/*`,\n `!${workspace}/package.json`,\n ];\n const lines = gitignore\n .split(/\\r?\\n/)\n .filter((line) => !patterns.includes(line.trim()));\n while (lines.at(-1) === '') lines.pop();\n return `${lines.length ? `${lines.join('\\n')}\\n` : ''}${patterns.join('\\n')}\\n`;\n}\n\nasync function findWorkspace(\n start: string,\n): Promise<{ directory: string; manifest: ProjectPackageManifest }> {\n let directory = start;\n let nearest:\n { directory: string; manifest: ProjectPackageManifest } | undefined;\n while (true) {\n const source = await readOptionalFile(join(directory, 'package.json'));\n if (source) {\n const candidate = {\n directory,\n manifest: JSON.parse(source) as ProjectPackageManifest,\n };\n nearest ??= candidate;\n if (candidate.manifest.workspaces !== undefined) return candidate;\n }\n const parent = dirname(directory);\n if (parent === directory) break;\n directory = parent;\n }\n if (nearest) return nearest;\n throw new Error(`Could not find a package.json from ${start}.`);\n}\n\nfunction generatedPackageName(\n workspaceName: string | undefined,\n projectDirectory: string,\n workspaceDirectory: string,\n): string {\n if (projectDirectory === workspaceDirectory) return '@sdk-it/client';\n const project = basename(projectDirectory)\n .toLowerCase()\n .replace(/[^a-z0-9._-]+/g, '-');\n const scope = workspaceName?.match(/^@([^/]+)\\//)?.[1];\n return scope ? `@${scope}/${project}-client` : `${project}-client`;\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": "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",
|
|
6
|
+
"names": ["resolve", "writeFile", "join", "createRequire", "ts", "require", "readFile", "join", "ts", "writeFile", "join", "access", "readFile", "writeFile", "join", "relative", "resolve", "resolve", "join", "relative", "readOptionalFile", "writeFile", "access", "readFile", "resolve"]
|
|
7
7
|
}
|
package/dist/lib/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/lib/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAW,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/lib/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAW,MAAM,WAAW,CAAC;AA4B7C,QAAA,MAAM,GAAG,SAWa,CAAC;AAEvB,eAAe,GAAG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/lib/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/lib/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;;AAIpC,wBAMK"}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
import type { DartOptions } from '../types.ts';
|
|
3
|
-
type Options = Omit<DartOptions, 'pagination'> & {
|
|
4
|
-
output: string;
|
|
5
|
-
pagination?: DartOptions['pagination'] | string;
|
|
6
|
-
};
|
|
7
2
|
declare const _default: Command;
|
|
8
3
|
export default _default;
|
|
9
|
-
export declare function runDart(options: Options): Promise<void>;
|
|
10
4
|
//# sourceMappingURL=dart.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dart.d.ts","sourceRoot":"","sources":["../../../src/lib/generators/dart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC
|
|
1
|
+
{"version":3,"file":"dart.d.ts","sourceRoot":"","sources":["../../../src/lib/generators/dart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;;AAmBpC,wBAaK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../../src/lib/generators/python.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC
|
|
1
|
+
{"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../../src/lib/generators/python.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;;AASpC,wBASK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readme.d.ts","sourceRoot":"","sources":["../../../src/lib/generators/readme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;;AAQpC,wBAMK
|
|
1
|
+
{"version":3,"file":"readme.d.ts","sourceRoot":"","sources":["../../../src/lib/generators/readme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;;AAQpC,wBAMK"}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
import type { TypeScriptOptions } from '../types.ts';
|
|
3
|
-
type Options = Omit<TypeScriptOptions, 'pagination'> & {
|
|
4
|
-
output: string;
|
|
5
|
-
pagination?: TypeScriptOptions['pagination'] | string;
|
|
6
|
-
};
|
|
7
2
|
declare const _default: Command;
|
|
8
3
|
export default _default;
|
|
9
|
-
export declare function runTypescript(options: Options): Promise<void>;
|
|
10
4
|
//# sourceMappingURL=typescript.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/lib/generators/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC
|
|
1
|
+
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/lib/generators/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;;AA0B5C,wBAkDK"}
|
|
@@ -6,6 +6,6 @@ export declare function analyzeProject(tsconfig: string, config: ProjectConfig):
|
|
|
6
6
|
version: string;
|
|
7
7
|
};
|
|
8
8
|
paths: import("openapi3-ts/oas31").PathsObject;
|
|
9
|
-
components: import("
|
|
9
|
+
components: import("@sdk-it/core").OpenAPIComponentsObject;
|
|
10
10
|
}>;
|
|
11
11
|
//# sourceMappingURL=analysis.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../../src/lib/project/analysis.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa;;;;;;;;
|
|
1
|
+
{"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../../src/lib/project/analysis.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa;;;;;;;;GAuC3E"}
|
|
@@ -1,2 +1,15 @@
|
|
|
1
|
+
interface GeneratedPackageManifest {
|
|
2
|
+
name?: string;
|
|
3
|
+
version?: string;
|
|
4
|
+
type?: string;
|
|
5
|
+
main?: string;
|
|
6
|
+
module?: string;
|
|
7
|
+
types?: string;
|
|
8
|
+
publishConfig?: Record<string, unknown>;
|
|
9
|
+
exports?: Record<string, unknown>;
|
|
10
|
+
dependencies?: Record<string, string>;
|
|
11
|
+
}
|
|
1
12
|
export declare function compileGeneratedPackage(output: string, packageName: string): Promise<void>;
|
|
13
|
+
export declare function generatedPackageManifest(packageName: string, manifest: GeneratedPackageManifest): GeneratedPackageManifest;
|
|
14
|
+
export {};
|
|
2
15
|
//# sourceMappingURL=compiler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../src/lib/project/compiler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../src/lib/project/compiler.ts"],"names":[],"mappings":"AAIA,UAAU,wBAAwB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CA4Bf;AA8BD,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,wBAAwB,GACjC,wBAAwB,CAyB1B"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
import type { OpenAPISecuritySchemeObject } from '@sdk-it/core';
|
|
2
|
+
import type { MiddlewareSecurityRule } from '@sdk-it/generic';
|
|
1
3
|
export interface ProjectConfig {
|
|
2
4
|
tsconfig: string;
|
|
3
5
|
framework?: 'auto' | 'hono';
|
|
4
6
|
preset?: 'auto' | 'prisma' | 'none';
|
|
5
7
|
output?: string;
|
|
6
8
|
packageName?: string;
|
|
9
|
+
securitySchemes?: Record<string, OpenAPISecuritySchemeObject>;
|
|
10
|
+
middlewareSecurity?: readonly MiddlewareSecurityRule[];
|
|
7
11
|
}
|
|
8
12
|
export interface ResolvedProjectConfig extends ProjectConfig {
|
|
9
13
|
output: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/lib/project/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/lib/project/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAI9D,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;IAC9D,kBAAkB,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACxD;AAED,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAQD,wBAAgB,YAAY,CAAC,KAAK,CAAC,MAAM,SAAS,aAAa,EAC7D,MAAM,EAAE,MAAM,GACb,MAAM,CAER;AAED,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,qBAAqB,CAAC,CA8BhC;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CA0Ef"}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -35,22 +35,4 @@ export interface DartOptions extends BaseGeneratorOptions {
|
|
|
35
35
|
formatter?: string;
|
|
36
36
|
pagination?: PaginationConfig | false;
|
|
37
37
|
}
|
|
38
|
-
/**
|
|
39
|
-
* Complete SDK configuration file structure
|
|
40
|
-
*/
|
|
41
|
-
export interface SdkConfig {
|
|
42
|
-
readme?: {
|
|
43
|
-
spec: string;
|
|
44
|
-
output: string;
|
|
45
|
-
};
|
|
46
|
-
apiref?: {
|
|
47
|
-
spec: string;
|
|
48
|
-
output: string;
|
|
49
|
-
};
|
|
50
|
-
generators: {
|
|
51
|
-
typescript?: TypeScriptOptions;
|
|
52
|
-
python?: PythonOptions;
|
|
53
|
-
dart?: DartOptions;
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
38
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,oBAAoB;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,gBAAgB,GAAG,KAAK,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,oBAAoB;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,oBAAoB;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,gBAAgB,GAAG,KAAK,CAAC;CACvC
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,oBAAoB;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,gBAAgB,GAAG,KAAK,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,oBAAoB;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,oBAAoB;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,gBAAgB,GAAG,KAAK,CAAC;CACvC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sdk-it/cli",
|
|
3
|
-
"version": "0.46.
|
|
3
|
+
"version": "0.46.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -22,20 +22,19 @@
|
|
|
22
22
|
"!**/*.test.*"
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@sdk-it/typescript": "0.46.
|
|
26
|
-
"@sdk-it/dart": "0.46.
|
|
27
|
-
"@sdk-it/spec": "0.46.
|
|
25
|
+
"@sdk-it/typescript": "0.46.4",
|
|
26
|
+
"@sdk-it/dart": "0.46.4",
|
|
27
|
+
"@sdk-it/spec": "0.46.4",
|
|
28
28
|
"commander": "^13.1.0",
|
|
29
|
-
"@sdk-it/core": "0.46.
|
|
30
|
-
"@sdk-it/generic": "0.46.
|
|
31
|
-
"@sdk-it/hono": "0.46.
|
|
29
|
+
"@sdk-it/core": "0.46.4",
|
|
30
|
+
"@sdk-it/generic": "0.46.4",
|
|
31
|
+
"@sdk-it/hono": "0.46.4",
|
|
32
32
|
"libnpmpublish": "^11.0.0",
|
|
33
33
|
"openapi3-ts": "4.5.0",
|
|
34
34
|
"registry-auth-token": "^5.1.0",
|
|
35
|
-
"@sdk-it/python": "0.46.
|
|
35
|
+
"@sdk-it/python": "0.46.4",
|
|
36
36
|
"execa": "^9.6.0",
|
|
37
|
-
"@sdk-it/readme": "0.46.
|
|
38
|
-
"@inquirer/prompts": "^7.7.1"
|
|
37
|
+
"@sdk-it/readme": "0.46.4"
|
|
39
38
|
},
|
|
40
39
|
"peerDependencies": {
|
|
41
40
|
"typescript": "^6.0.3"
|