@danceroutine/tango-codegen 1.11.1 → 1.11.3
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/chunk-D7D4PA-g.js +13 -0
- package/dist/commands/index.d.ts +2 -6
- package/dist/commands/index.js +2 -5
- package/dist/{commands-CFAq4wXC.js → commands-Bl0tiyaE.js} +49 -58
- package/dist/commands-Bl0tiyaE.js.map +1 -0
- package/dist/domain/index.d.ts +2 -4
- package/dist/domain/index.js +7 -1
- package/dist/domain/index.js.map +1 -0
- package/dist/frameworks/index.d.ts +2 -12
- package/dist/frameworks/index.js +2 -3
- package/dist/{frameworks-BTcP3d9Q.js → frameworks-B_un20qv.js} +116 -158
- package/dist/frameworks-B_un20qv.js.map +1 -0
- package/dist/generators/index.d.ts +2 -12
- package/dist/generators/index.js +3 -4
- package/dist/{generators-DuAuGNR2.js → generators-D7GoehXD.js} +39 -40
- package/dist/generators-D7GoehXD.js.map +1 -0
- package/dist/index-DDt-Xe7q.d.ts +201 -0
- package/dist/index-DM7Ade2V.d.ts +43 -0
- package/dist/index-XicN3qCI.d.ts +82 -0
- package/dist/index-sKndVpFf.d.ts +26 -0
- package/dist/index.d.ts +18 -13
- package/dist/index.js +6 -7
- package/dist/{relations-DqDEZ6MV.js → relations-tePbGOWl.js} +33 -31
- package/dist/relations-tePbGOWl.js.map +1 -0
- package/package.json +6 -6
- package/dist/chunk-BkvOhyD0.js +0 -12
- package/dist/commands/loadProjectModule.d.ts +0 -15
- package/dist/commands/registerCodegenCommands.d.ts +0 -5
- package/dist/commands/runGenerateRelationsCommand.d.ts +0 -11
- package/dist/commands/runInitCommand.d.ts +0 -13
- package/dist/commands/runInstall.d.ts +0 -2
- package/dist/commands/runNewCommand.d.ts +0 -16
- package/dist/commands-CFAq4wXC.js.map +0 -1
- package/dist/domain/CodegenModel.d.ts +0 -19
- package/dist/domain-Cufz6y1q.js +0 -7
- package/dist/domain-Cufz6y1q.js.map +0 -1
- package/dist/frameworks/contracts/FrameworkScaffoldStrategy.d.ts +0 -40
- package/dist/frameworks/contracts/template/ScaffoldTemplate.d.ts +0 -22
- package/dist/frameworks/contracts/template/TemplateBuilder.d.ts +0 -42
- package/dist/frameworks/contracts/template/implementation/ScaffoldTemplateDescriptor.d.ts +0 -10
- package/dist/frameworks/registry/FrameworkScaffoldRegistry.d.ts +0 -23
- package/dist/frameworks/scaffold/scaffoldProject.d.ts +0 -17
- package/dist/frameworks/strategies/express/ExpressScaffoldStrategy.d.ts +0 -14
- package/dist/frameworks/strategies/express/templates/appSource.d.ts +0 -6
- package/dist/frameworks/strategies/express/templates/bootstrap.d.ts +0 -6
- package/dist/frameworks/strategies/express/templates/models.d.ts +0 -10
- package/dist/frameworks/strategies/express/templates/openapi.d.ts +0 -6
- package/dist/frameworks/strategies/express/templates/packageJson.d.ts +0 -6
- package/dist/frameworks/strategies/express/templates/readme.d.ts +0 -6
- package/dist/frameworks/strategies/express/templates/serializers.d.ts +0 -10
- package/dist/frameworks/strategies/express/templates/tangoConfig.d.ts +0 -6
- package/dist/frameworks/strategies/express/templates/tangoRegister.d.ts +0 -6
- package/dist/frameworks/strategies/express/templates/tsconfig.d.ts +0 -6
- package/dist/frameworks/strategies/express/templates/tsconfigBuild.d.ts +0 -6
- package/dist/frameworks/strategies/express/templates/viewSet.d.ts +0 -6
- package/dist/frameworks/strategies/next/NextScaffoldStrategy.d.ts +0 -14
- package/dist/frameworks/strategies/next/templates/bootstrap.d.ts +0 -6
- package/dist/frameworks/strategies/next/templates/healthRoute.d.ts +0 -6
- package/dist/frameworks/strategies/next/templates/layout.d.ts +0 -6
- package/dist/frameworks/strategies/next/templates/models.d.ts +0 -11
- package/dist/frameworks/strategies/next/templates/openapi.d.ts +0 -6
- package/dist/frameworks/strategies/next/templates/openapiRoute.d.ts +0 -6
- package/dist/frameworks/strategies/next/templates/packageJson.d.ts +0 -6
- package/dist/frameworks/strategies/next/templates/page.d.ts +0 -6
- package/dist/frameworks/strategies/next/templates/readme.d.ts +0 -6
- package/dist/frameworks/strategies/next/templates/serializers.d.ts +0 -10
- package/dist/frameworks/strategies/next/templates/tangoConfig.d.ts +0 -6
- package/dist/frameworks/strategies/next/templates/todoRoute.d.ts +0 -6
- package/dist/frameworks/strategies/next/templates/tsconfig.d.ts +0 -6
- package/dist/frameworks/strategies/next/templates/viewSet.d.ts +0 -6
- package/dist/frameworks/strategies/nuxt/NuxtScaffoldStrategy.d.ts +0 -14
- package/dist/frameworks/strategies/nuxt/templates/bootstrap.d.ts +0 -6
- package/dist/frameworks/strategies/nuxt/templates/healthRoute.d.ts +0 -6
- package/dist/frameworks/strategies/nuxt/templates/layout.d.ts +0 -6
- package/dist/frameworks/strategies/nuxt/templates/models.d.ts +0 -11
- package/dist/frameworks/strategies/nuxt/templates/nuxtConfig.d.ts +0 -6
- package/dist/frameworks/strategies/nuxt/templates/openapi.d.ts +0 -6
- package/dist/frameworks/strategies/nuxt/templates/openapiRoute.d.ts +0 -6
- package/dist/frameworks/strategies/nuxt/templates/packageJson.d.ts +0 -6
- package/dist/frameworks/strategies/nuxt/templates/page.d.ts +0 -6
- package/dist/frameworks/strategies/nuxt/templates/readme.d.ts +0 -6
- package/dist/frameworks/strategies/nuxt/templates/serializers.d.ts +0 -10
- package/dist/frameworks/strategies/nuxt/templates/tangoConfig.d.ts +0 -6
- package/dist/frameworks/strategies/nuxt/templates/todoRoute.d.ts +0 -6
- package/dist/frameworks/strategies/nuxt/templates/tsconfig.d.ts +0 -6
- package/dist/frameworks/strategies/nuxt/templates/viewSet.d.ts +0 -6
- package/dist/frameworks-BTcP3d9Q.js.map +0 -1
- package/dist/generators/migration/generateMigrationFromModels.d.ts +0 -8
- package/dist/generators/migration/index.d.ts +0 -4
- package/dist/generators/model/generateModelInterface.d.ts +0 -5
- package/dist/generators/model/index.d.ts +0 -4
- package/dist/generators/relations/generateRelationRegistryArtifacts.d.ts +0 -15
- package/dist/generators/relations/index.d.ts +0 -5
- package/dist/generators/relations/writeRelationRegistryArtifacts.d.ts +0 -16
- package/dist/generators/viewset/generateViewSet.d.ts +0 -4
- package/dist/generators/viewset/index.d.ts +0 -4
- package/dist/generators-DuAuGNR2.js.map +0 -1
- package/dist/mappers/fieldType.d.ts +0 -9
- package/dist/mappers/index.d.ts +0 -4
- package/dist/relations-DqDEZ6MV.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"commands-CFAq4wXC.js","names":["packageManager: PackageManager","cwd: string","argsByPackageManager: Record<PackageManager, readonly string[]>","context: FrameworkScaffoldContext","parser: Argv","modulePath: string","value: unknown","absoluteModulePath: string","outputDir: string","loaded: Record<string, unknown>","importSpecifier: string","accessors: Map<string, string>","models: ModelLike[]","model: ModelLike","accessor: string","accessorSegments: readonly string[]","options?: { projectRoot?: string; outputDir?: string }","parser: Argv","targetDir: string","context: FrameworkScaffoldContext","parser: Argv","parser: Argv"],"sources":["../src/commands/runInstall.ts","../src/commands/runNewCommand.ts","../src/commands/loadProjectModule.ts","../src/commands/runGenerateRelationsCommand.ts","../src/commands/runInitCommand.ts","../src/commands/registerCodegenCommands.ts","../src/commands/index.ts"],"sourcesContent":["import { spawnSync } from 'child_process';\nimport type { PackageManager } from '../frameworks';\n\nexport function runInstall(packageManager: PackageManager, cwd: string): void {\n const argsByPackageManager: Record<PackageManager, readonly string[]> = {\n pnpm: ['install'],\n npm: ['install'],\n yarn: ['install'],\n bun: ['install'],\n };\n\n const result = spawnSync(packageManager, [...argsByPackageManager[packageManager]], {\n cwd,\n stdio: 'inherit',\n env: process.env,\n });\n\n if (result.status !== 0) {\n throw new Error(\n `Dependency install failed with ${packageManager}. Exit code: ${String(result.status ?? 'unknown')}.`\n );\n }\n}\n","import { getLogger } from '@danceroutine/tango-core';\nimport { basename, resolve } from 'path/posix';\nimport {\n type SupportedFramework,\n type PackageManager,\n FrameworkScaffoldRegistry,\n type FrameworkScaffoldContext,\n scaffoldProject,\n} from '../frameworks';\nimport {\n PACKAGE_MANAGER,\n SCAFFOLD_DATABASE_DIALECT,\n SUPPORTED_FRAMEWORK,\n type ScaffoldDatabaseDialect,\n} from '../frameworks/contracts/FrameworkScaffoldStrategy';\nimport { runInstall } from './runInstall';\nimport type { Argv } from 'yargs';\n\ntype NewCommandArgs = {\n name?: string;\n framework: SupportedFramework;\n path?: string;\n packageManager: PackageManager;\n dialect: ScaffoldDatabaseDialect;\n install: boolean;\n force: boolean;\n seed: boolean;\n};\nexport async function runNewCommand({\n path,\n name,\n framework,\n packageManager,\n dialect,\n install,\n force,\n seed: includeSeed,\n}: NewCommandArgs): Promise<void> {\n const registry = FrameworkScaffoldRegistry.createDefault();\n const strategy = registry.get(framework)!;\n\n const requestedPath = path ?? name ?? 'tango-app';\n const projectName = name ?? basename(requestedPath);\n const targetDir = resolve(process.cwd(), requestedPath);\n\n const context: FrameworkScaffoldContext = {\n projectName,\n targetDir,\n framework,\n packageManager,\n dialect,\n includeSeed,\n };\n\n await scaffoldProject(context, strategy, { force });\n\n if (install) {\n runInstall(packageManager, targetDir);\n }\n\n const logger = getLogger('tango.codegen');\n logger.info(`Scaffold complete: ${targetDir}`);\n logger.info(`Framework: ${strategy.name}`);\n logger.info(`Run next: cd ${targetDir} && ${packageManager} run dev`);\n}\nexport function withNewCommand(parser: Argv): Argv {\n return parser.command(\n 'new [name]',\n 'Bootstrap a new Tango project',\n (builder) =>\n builder\n .positional('name', {\n type: 'string',\n describe: 'Project name (used as directory when --path is omitted).',\n })\n .option('framework', {\n type: 'string',\n choices: Object.values(SUPPORTED_FRAMEWORK),\n demandOption: true,\n describe: 'Host framework scaffold to generate.',\n })\n .option('path', {\n type: 'string',\n describe: 'Target directory for generated project files.',\n })\n .option('package-manager', {\n type: 'string',\n choices: Object.values(PACKAGE_MANAGER),\n default: PACKAGE_MANAGER.PNPM,\n describe: 'Package manager used for follow-up instructions and optional install.',\n })\n .option('dialect', {\n type: 'string',\n choices: Object.values(SCAFFOLD_DATABASE_DIALECT),\n default: SCAFFOLD_DATABASE_DIALECT.SQLITE,\n describe: 'Database dialect default for generated config.',\n })\n .option('install', {\n type: 'boolean',\n default: false,\n describe: 'Install dependencies after scaffolding.',\n })\n .option('force', {\n type: 'boolean',\n default: false,\n describe: 'Allow writing into a non-empty target directory.',\n })\n .option('seed', {\n type: 'boolean',\n default: true,\n describe: 'Include seed/bootstrap sample artifacts when supported by the framework strategy.',\n }),\n async ({ name, framework, path, packageManager, dialect, install, force, seed }) => {\n await runNewCommand({\n name,\n framework,\n path,\n packageManager,\n dialect,\n install,\n force,\n seed,\n });\n }\n );\n}\n","import { extname, relative, resolve } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport { createJiti } from 'jiti';\nimport { ModelRegistry } from '@danceroutine/tango-schema';\n\nconst TS_EXTENSIONS = new Set(['.ts', '.tsx', '.mts', '.cts']);\n\ntype ProjectModuleLoadResult = {\n loaded: Record<string, unknown>;\n modelTypeAccessors: Record<string, string>;\n registry: ModelRegistry;\n};\n\ntype ModelLike = { metadata: { key: string } };\ntype CollectedModelAccessors = {\n accessors: Record<string, string>;\n models: ModelLike[];\n};\n\nfunction isTypeScriptModule(modulePath: string): boolean {\n return TS_EXTENSIONS.has(extname(modulePath).toLowerCase());\n}\n\nfunction isModelLike(value: unknown): value is ModelLike {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'metadata' in value &&\n typeof (value as { metadata?: { key?: unknown } }).metadata?.key === 'string'\n );\n}\n\nfunction toImportSpecifier(absoluteModulePath: string, outputDir: string): string {\n const relativePath = relative(outputDir, absoluteModulePath).replaceAll('\\\\', '/');\n return relativePath.startsWith('.') ? relativePath : `./${relativePath}`;\n}\n\nfunction collectModelTypeAccessors(\n loaded: Record<string, unknown>,\n importSpecifier: string,\n accessors: Map<string, string> = new Map()\n): CollectedModelAccessors {\n const models: ModelLike[] = [];\n\n const registerAccessor = (model: ModelLike, accessor: string): void => {\n models.push(model);\n const existing = accessors.get(model.metadata.key);\n if (!existing || accessor.length < existing.length) {\n accessors.set(model.metadata.key, accessor);\n }\n };\n\n const inspectValue = (value: unknown, accessorSegments: readonly string[]): void => {\n if (isModelLike(value)) {\n const accessor = accessorSegments.map((segment) => `[${JSON.stringify(segment)}]`).join('');\n registerAccessor(value, `typeof import(${JSON.stringify(importSpecifier)})${accessor}`);\n return;\n }\n\n if (typeof value !== 'object' || value === null) {\n return;\n }\n\n for (const [key, nested] of Object.entries(value)) {\n if (isModelLike(nested)) {\n const accessor = [...accessorSegments, key].map((segment) => `[${JSON.stringify(segment)}]`).join('');\n registerAccessor(nested, `typeof import(${JSON.stringify(importSpecifier)})${accessor}`);\n }\n }\n };\n\n for (const [key, value] of Object.entries(loaded)) {\n inspectValue(value, [key]);\n }\n\n return {\n accessors: Object.fromEntries(accessors),\n models,\n };\n}\n\n/**\n * Load a Tango app module and discover model export accessors suitable for\n * generated ambient type references.\n */\nexport async function loadProjectModule(\n modulePath: string,\n options?: { projectRoot?: string; outputDir?: string }\n): Promise<ProjectModuleLoadResult> {\n const projectRoot = options?.projectRoot ?? process.cwd();\n const absoluteModulePath = resolve(projectRoot, modulePath);\n const outputDir = options?.outputDir ?? resolve(projectRoot, '.tango');\n const registry = new ModelRegistry();\n\n const executeImport = async (): Promise<Record<string, unknown>> => {\n if (isTypeScriptModule(absoluteModulePath)) {\n const jiti = createJiti(resolve(projectRoot, 'tango.config.ts'), {\n interopDefault: true,\n moduleCache: false,\n });\n return (await jiti.import<Record<string, unknown>>(absoluteModulePath)) as Record<string, unknown>;\n }\n\n return (await import(pathToFileURL(absoluteModulePath).href)) as Record<string, unknown>;\n };\n\n const loaded = await ModelRegistry.runWithRegistry(registry, executeImport);\n const collected = collectModelTypeAccessors(loaded, toImportSpecifier(absoluteModulePath, outputDir));\n const effectiveRegistry =\n registry.values().length > 0\n ? registry\n : collected.models.length > 0\n ? (ModelRegistry.getOwner(collected.models[0] as never) as ModelRegistry)\n : registry;\n\n return {\n loaded,\n modelTypeAccessors: collected.accessors,\n registry: effectiveRegistry,\n };\n}\n","import { resolve } from 'node:path';\nimport { getLogger } from '@danceroutine/tango-core';\nimport {\n GENERATED_RELATION_REGISTRY_DIRNAME,\n GENERATED_RELATION_REGISTRY_METADATA_FILENAME,\n GENERATED_RELATION_REGISTRY_TYPES_FILENAME,\n} from '@danceroutine/tango-schema';\nimport type { Argv } from 'yargs';\nimport { writeRelationRegistryArtifacts } from '../generators/relations';\nimport { loadProjectModule } from './loadProjectModule';\n\nconst logger = getLogger('tango.codegen');\n\ntype GenerateRelationsCommandArgs = {\n models: string;\n outDir: string;\n};\n\n/**\n * Generate the app-local ambient relation registry from a finalized model graph.\n */\nexport async function runGenerateRelationsCommand({ models, outDir }: GenerateRelationsCommandArgs): Promise<void> {\n const outputDir = resolve(process.cwd(), outDir);\n const { registry, modelTypeAccessors } = await loadProjectModule(models, { outputDir });\n const written = await writeRelationRegistryArtifacts({\n registry,\n modelTypeAccessors,\n outputDir,\n });\n\n logger.info(`Generated relation registry: ${written.typesFilepath}`);\n logger.info(`Generated relation metadata: ${written.metadataFilepath}`);\n}\n\nexport function withGenerateRelationsCommand(parser: Argv): Argv {\n return parser.command(\n 'relations',\n 'Generate app-local ambient relation typing from Tango models',\n (builder) =>\n builder\n .option('models', {\n type: 'string',\n demandOption: true,\n describe: 'Path to the module exporting Tango Model definitions.',\n })\n .option('out-dir', {\n type: 'string',\n default: GENERATED_RELATION_REGISTRY_DIRNAME,\n describe: `Directory that receives ${GENERATED_RELATION_REGISTRY_TYPES_FILENAME} and ${GENERATED_RELATION_REGISTRY_METADATA_FILENAME}.`,\n }),\n async ({ models, outDir }) => {\n await runGenerateRelationsCommand({\n models,\n outDir,\n });\n }\n );\n}\n","import { getLogger } from '@danceroutine/tango-core';\nimport { readdir, readFile } from 'fs/promises';\nimport { resolve, basename, join } from 'path/posix';\nimport {\n type PackageManager,\n type SupportedFramework,\n FrameworkScaffoldRegistry,\n type FrameworkScaffoldContext,\n scaffoldProject,\n} from '../frameworks';\nimport {\n PACKAGE_MANAGER,\n SCAFFOLD_DATABASE_DIALECT,\n type ScaffoldDatabaseDialect,\n SUPPORTED_FRAMEWORK,\n} from '../frameworks/contracts/FrameworkScaffoldStrategy';\nimport type { Argv } from 'yargs';\n\nasync function detectPackageManager(targetDir: string): Promise<PackageManager> {\n try {\n const entries = await readdir(targetDir);\n if (entries.includes('pnpm-lock.yaml')) return PACKAGE_MANAGER.PNPM;\n if (entries.includes('package-lock.json')) return PACKAGE_MANAGER.NPM;\n if (entries.includes('yarn.lock')) return PACKAGE_MANAGER.YARN;\n if (entries.includes('bun.lockb') || entries.includes('bun.lock')) return PACKAGE_MANAGER.BUN;\n } catch {\n // ENOENT or other: fall through to default\n }\n return PACKAGE_MANAGER.PNPM;\n}\ntype InitCommandArgs = {\n framework: SupportedFramework;\n path: string;\n dialect: ScaffoldDatabaseDialect;\n skipExisting: boolean;\n force: boolean;\n};\nexport async function runInitCommand({\n framework,\n path,\n dialect,\n skipExisting,\n force,\n}: InitCommandArgs): Promise<void> {\n const registry = FrameworkScaffoldRegistry.createDefault();\n const strategy = registry.get(framework)!;\n const targetDir = resolve(process.cwd(), path);\n\n let projectName = basename(targetDir);\n try {\n const pkgPath = join(targetDir, 'package.json');\n const raw = await readFile(pkgPath, 'utf8');\n const pkg = JSON.parse(raw) as { name?: string };\n if (typeof pkg.name === 'string' && pkg.name.length > 0) {\n projectName = pkg.name;\n }\n } catch {\n // no package.json or invalid: keep basename\n }\n\n const packageManager = await detectPackageManager(targetDir);\n\n const context: FrameworkScaffoldContext = {\n projectName,\n targetDir,\n framework,\n packageManager,\n dialect,\n includeSeed: true,\n };\n\n await scaffoldProject(context, strategy, {\n mode: 'init',\n skipExisting,\n force,\n });\n\n const logger = getLogger('tango.codegen');\n logger.info(`Tango init complete: ${targetDir}`);\n logger.info(`Install dependencies: ${strategy.getTangoInstallOneLiner(packageManager, context)}`);\n if (framework === SUPPORTED_FRAMEWORK.EXPRESS) {\n logger.info(\"Mount Tango: import { registerTango } from './src/tango.js'; await registerTango(app);\");\n }\n if (framework === SUPPORTED_FRAMEWORK.NUXT) {\n logger.info(\n 'Wire Tango handlers: register Nitro serverHandlers in nuxt.config.ts and export NuxtAdapter-backed handlers from server/tango/.'\n );\n }\n}\nexport function withInitCommand(parser: Argv): Argv {\n return parser.command(\n 'init',\n 'Add Tango to an existing project (only Tango-layer files)',\n (builder) =>\n builder\n .option('framework', {\n type: 'string',\n choices: Object.values(SUPPORTED_FRAMEWORK),\n demandOption: true,\n describe: 'Host framework (express, next, or nuxt).',\n })\n .option('path', {\n type: 'string',\n default: '.',\n describe: 'Target directory (default: current directory).',\n })\n .option('dialect', {\n type: 'string',\n choices: Object.values(SCAFFOLD_DATABASE_DIALECT),\n default: SCAFFOLD_DATABASE_DIALECT.SQLITE,\n describe: 'Database dialect for generated config.',\n })\n .option('skip-existing', {\n type: 'boolean',\n default: true,\n describe: 'Do not overwrite existing files.',\n })\n .option('force', {\n type: 'boolean',\n default: false,\n describe: 'Overwrite existing files when set.',\n }),\n async ({ framework, path, dialect, skipExisting, force }) => {\n await runInitCommand({\n framework,\n path,\n dialect,\n skipExisting,\n force,\n });\n }\n );\n}\n","import type { Argv } from 'yargs';\nimport { withNewCommand } from './runNewCommand';\nimport { withGenerateRelationsCommand } from './runGenerateRelationsCommand';\nimport { withInitCommand } from './runInitCommand';\n\n/**\n * Register Tango project scaffolding commands on an existing CLI parser.\n */\nexport function registerCodegenCommands(parser: Argv): Argv {\n const withTopLevelNew = withNewCommand(parser);\n const withTopLevelInit = withInitCommand(withTopLevelNew);\n const withTopLevelRelations = withGenerateRelationsCommand(withTopLevelInit);\n return withTopLevelRelations.command('codegen <command>', 'Code generation command group', (builder) =>\n withGenerateRelationsCommand(withInitCommand(withNewCommand(builder)))\n );\n}\n","/**\n * Domain boundary barrel: centralizes this subdomain's public contract.\n */\n\nexport { registerCodegenCommands } from './registerCodegenCommands';\nexport { loadProjectModule } from './loadProjectModule';\nexport { runGenerateRelationsCommand, withGenerateRelationsCommand } from './runGenerateRelationsCommand';\n"],"mappings":"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"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export type CodegenFieldMeta = {
|
|
2
|
-
type: string;
|
|
3
|
-
dbType?: string;
|
|
4
|
-
primaryKey?: boolean;
|
|
5
|
-
unique?: boolean;
|
|
6
|
-
nullable?: boolean;
|
|
7
|
-
default?: unknown;
|
|
8
|
-
};
|
|
9
|
-
export type CodegenModel = {
|
|
10
|
-
name: string;
|
|
11
|
-
fields: Record<string, CodegenFieldMeta> | Array<{
|
|
12
|
-
name: string;
|
|
13
|
-
type: string;
|
|
14
|
-
primaryKey?: boolean;
|
|
15
|
-
unique?: boolean;
|
|
16
|
-
notNull?: boolean;
|
|
17
|
-
default?: unknown;
|
|
18
|
-
}>;
|
|
19
|
-
};
|
package/dist/domain-Cufz6y1q.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"domain-Cufz6y1q.js","names":[],"sources":["../src/domain/index.ts"],"sourcesContent":["/**\n * Domain boundary barrel: centralizes this subdomain's public contract.\n */\n\nexport type { CodegenFieldMeta, CodegenModel } from './CodegenModel';\n"],"mappings":""}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { type ScaffoldTemplate, type FrameworkScaffoldContext } from './template/ScaffoldTemplate';
|
|
2
|
-
import { TemplateBuilder } from './template/TemplateBuilder';
|
|
3
|
-
export declare const SUPPORTED_FRAMEWORK: {
|
|
4
|
-
readonly EXPRESS: "express";
|
|
5
|
-
readonly NEXT: "next";
|
|
6
|
-
readonly NUXT: "nuxt";
|
|
7
|
-
};
|
|
8
|
-
export type SupportedFramework = (typeof SUPPORTED_FRAMEWORK)[keyof typeof SUPPORTED_FRAMEWORK];
|
|
9
|
-
export declare const PACKAGE_MANAGER: {
|
|
10
|
-
readonly PNPM: "pnpm";
|
|
11
|
-
readonly NPM: "npm";
|
|
12
|
-
readonly YARN: "yarn";
|
|
13
|
-
readonly BUN: "bun";
|
|
14
|
-
};
|
|
15
|
-
export type PackageManager = (typeof PACKAGE_MANAGER)[keyof typeof PACKAGE_MANAGER];
|
|
16
|
-
export declare const SCAFFOLD_DATABASE_DIALECT: {
|
|
17
|
-
readonly SQLITE: "sqlite";
|
|
18
|
-
readonly POSTGRES: "postgres";
|
|
19
|
-
};
|
|
20
|
-
export type ScaffoldDatabaseDialect = (typeof SCAFFOLD_DATABASE_DIALECT)[keyof typeof SCAFFOLD_DATABASE_DIALECT];
|
|
21
|
-
/**
|
|
22
|
-
* Base scaffold strategy contract and helpers for Tango framework scaffolds.
|
|
23
|
-
*
|
|
24
|
-
* Concrete strategies extend this class and assemble their template lists
|
|
25
|
-
* through the protected helpers below.
|
|
26
|
-
*/
|
|
27
|
-
export declare abstract class FrameworkScaffoldStrategy {
|
|
28
|
-
abstract readonly id: SupportedFramework;
|
|
29
|
-
abstract readonly name: string;
|
|
30
|
-
abstract readonly description: string;
|
|
31
|
-
/**
|
|
32
|
-
* One-liner to install Tango + dialect deps and Tango CLI, for init success message.
|
|
33
|
-
*/
|
|
34
|
-
getTangoInstallOneLiner(packageManager: PackageManager, context: FrameworkScaffoldContext): string;
|
|
35
|
-
abstract getTemplates(): readonly ScaffoldTemplate[];
|
|
36
|
-
protected addFrameworkTemplate(template: TemplateBuilder): ScaffoldTemplate;
|
|
37
|
-
protected addTangoTemplate(template: TemplateBuilder): ScaffoldTemplate;
|
|
38
|
-
protected addInitOnlyTemplate(template: TemplateBuilder): ScaffoldTemplate;
|
|
39
|
-
private createTemplate;
|
|
40
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { SupportedFramework, PackageManager, ScaffoldDatabaseDialect } from '../FrameworkScaffoldStrategy';
|
|
2
|
-
export declare const SCAFFOLD_TEMPLATE_CATEGORY: {
|
|
3
|
-
readonly FRAMEWORK: "framework";
|
|
4
|
-
readonly TANGO: "tango";
|
|
5
|
-
readonly INIT_ONLY: "init-only";
|
|
6
|
-
};
|
|
7
|
-
export type ScaffoldTemplateCategory = (typeof SCAFFOLD_TEMPLATE_CATEGORY)[keyof typeof SCAFFOLD_TEMPLATE_CATEGORY];
|
|
8
|
-
export type ScaffoldMode = 'new' | 'init';
|
|
9
|
-
export type FrameworkScaffoldContext = {
|
|
10
|
-
projectName: string;
|
|
11
|
-
targetDir: string;
|
|
12
|
-
framework: SupportedFramework;
|
|
13
|
-
packageManager: PackageManager;
|
|
14
|
-
dialect: ScaffoldDatabaseDialect;
|
|
15
|
-
includeSeed: boolean;
|
|
16
|
-
};
|
|
17
|
-
export interface ScaffoldTemplate {
|
|
18
|
-
readonly path: string;
|
|
19
|
-
readonly category: ScaffoldTemplateCategory;
|
|
20
|
-
render(ctx: FrameworkScaffoldContext): string;
|
|
21
|
-
shouldEmit(mode: ScaffoldMode): boolean;
|
|
22
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { type PackageManager } from '../FrameworkScaffoldStrategy';
|
|
2
|
-
import type { FrameworkScaffoldContext } from './ScaffoldTemplate';
|
|
3
|
-
/**
|
|
4
|
-
* Interface for a context-bound template that the strategy's add* methods accept.
|
|
5
|
-
* Implemented by bound TemplateBuilder instances and by the return value of createStaticTemplate.
|
|
6
|
-
*/
|
|
7
|
-
export interface BoundTemplate {
|
|
8
|
-
getPath(): string;
|
|
9
|
-
build(): string;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Base class for scaffold template builders. Subclasses override resolveTemplate().
|
|
13
|
-
* Use new WhateverBuilder().setContext(context) for registration with add* methods.
|
|
14
|
-
* Deps logic (getTangoDependencyEntries, getTangoDevDependencyEntries) and version live here.
|
|
15
|
-
*/
|
|
16
|
-
export declare abstract class TemplateBuilder implements BoundTemplate {
|
|
17
|
-
protected readonly name: string;
|
|
18
|
-
protected _context?: FrameworkScaffoldContext;
|
|
19
|
-
constructor(options: {
|
|
20
|
-
name: string;
|
|
21
|
-
});
|
|
22
|
-
/**
|
|
23
|
-
* One-liner to install Tango + dialect deps and Tango CLI (for init success message).
|
|
24
|
-
*/
|
|
25
|
-
static getTangoInstallOneLiner(packageManager: PackageManager, dialect: 'sqlite' | 'postgres', framework: 'express' | 'next' | 'nuxt'): string;
|
|
26
|
-
static getRunScriptCommand(packageManager: PackageManager, scriptName: string, scriptArgs?: readonly string[]): string;
|
|
27
|
-
/**
|
|
28
|
-
* Shorthand for static content (no subclass needed). Returns a BoundTemplate that add* methods accept.
|
|
29
|
-
*/
|
|
30
|
-
static createStaticTemplate(fileName: string, template: string | (() => string)): TemplateBuilder;
|
|
31
|
-
/** Tango package version (semver range) for scaffolded dependency entries. */
|
|
32
|
-
private static getTangoVersion;
|
|
33
|
-
private static getTangoDependencyEntriesFor;
|
|
34
|
-
private static getTangoDevDependencyEntriesFor;
|
|
35
|
-
/** Bind context and return this for chaining. Use before passing to add* methods. */
|
|
36
|
-
setContext(context: FrameworkScaffoldContext): this;
|
|
37
|
-
getPath(): string;
|
|
38
|
-
protected abstract resolveTemplate(context: FrameworkScaffoldContext): string;
|
|
39
|
-
build(): string;
|
|
40
|
-
protected getTangoDependencyEntries(context: FrameworkScaffoldContext): Record<string, string>;
|
|
41
|
-
protected getTangoDevDependencyEntries(_context: FrameworkScaffoldContext): Record<string, string>;
|
|
42
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { type ScaffoldTemplate, type ScaffoldTemplateCategory, type FrameworkScaffoldContext, type ScaffoldMode } from '../ScaffoldTemplate';
|
|
2
|
-
import type { TemplateBuilder } from '../TemplateBuilder';
|
|
3
|
-
export declare class ScaffoldTemplateDescriptor implements ScaffoldTemplate {
|
|
4
|
-
readonly template: TemplateBuilder;
|
|
5
|
-
readonly category: ScaffoldTemplateCategory;
|
|
6
|
-
constructor(template: TemplateBuilder, category: ScaffoldTemplateCategory);
|
|
7
|
-
get path(): string;
|
|
8
|
-
render(ctx: FrameworkScaffoldContext): string;
|
|
9
|
-
shouldEmit(mode: ScaffoldMode): boolean;
|
|
10
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { FrameworkScaffoldStrategy, type SupportedFramework } from '../contracts/FrameworkScaffoldStrategy';
|
|
2
|
-
/**
|
|
3
|
-
* Registry for framework scaffolding strategies keyed by framework id.
|
|
4
|
-
*/
|
|
5
|
-
export declare class FrameworkScaffoldRegistry {
|
|
6
|
-
private readonly strategies;
|
|
7
|
-
/**
|
|
8
|
-
* Create a registry preloaded with Tango's built-in framework scaffolds.
|
|
9
|
-
*/
|
|
10
|
-
static createDefault(): FrameworkScaffoldRegistry;
|
|
11
|
-
/**
|
|
12
|
-
* Register a strategy under its declared framework id.
|
|
13
|
-
*/
|
|
14
|
-
register(strategy: FrameworkScaffoldStrategy): void;
|
|
15
|
-
/**
|
|
16
|
-
* Resolve a strategy for a known framework id.
|
|
17
|
-
*/
|
|
18
|
-
get(id: SupportedFramework): FrameworkScaffoldStrategy | undefined;
|
|
19
|
-
/**
|
|
20
|
-
* List all registered framework strategies in registration order.
|
|
21
|
-
*/
|
|
22
|
-
list(): readonly FrameworkScaffoldStrategy[];
|
|
23
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { FrameworkScaffoldStrategy } from '../contracts/FrameworkScaffoldStrategy';
|
|
2
|
-
import type { FrameworkScaffoldContext, ScaffoldMode } from '../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export type ScaffoldProjectOptions = {
|
|
4
|
-
force?: boolean;
|
|
5
|
-
/** 'new' = full scaffold; 'init' = only Tango + init-only files. Default 'new'. */
|
|
6
|
-
mode?: ScaffoldMode;
|
|
7
|
-
/** When true, do not overwrite existing files. Default true when mode === 'init', otherwise false. */
|
|
8
|
-
skipExisting?: boolean;
|
|
9
|
-
};
|
|
10
|
-
/**
|
|
11
|
-
* Write a framework scaffold into a target directory after basic safety checks.
|
|
12
|
-
*
|
|
13
|
-
* The selected strategy controls which files are created, while this helper
|
|
14
|
-
* owns directory validation and filesystem writes. With mode 'init', only
|
|
15
|
-
* Tango and init-only templates are emitted, and existing files can be skipped.
|
|
16
|
-
*/
|
|
17
|
-
export declare function scaffoldProject(context: FrameworkScaffoldContext, strategy: FrameworkScaffoldStrategy, options?: ScaffoldProjectOptions): Promise<void>;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { FrameworkScaffoldStrategy } from '../../contracts/FrameworkScaffoldStrategy';
|
|
2
|
-
import type { ScaffoldTemplate } from '../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
/**
|
|
4
|
-
* Scaffold strategy for creating an Express-hosted Tango project.
|
|
5
|
-
*/
|
|
6
|
-
export declare class ExpressScaffoldStrategy extends FrameworkScaffoldStrategy {
|
|
7
|
-
readonly id: "express";
|
|
8
|
-
readonly name = "Express";
|
|
9
|
-
readonly description = "Bootstrap a Tango application hosted by Express.";
|
|
10
|
-
/**
|
|
11
|
-
* Return the file templates needed for the generated Express project.
|
|
12
|
-
*/
|
|
13
|
-
getTemplates(): readonly ScaffoldTemplate[];
|
|
14
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class AppSourceTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class BootstrapTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class TodoModelTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
7
|
-
export declare class ModelsBarrelTemplateBuilder extends TemplateBuilder {
|
|
8
|
-
constructor();
|
|
9
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
10
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class OpenAPITemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class PackageJsonTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class ReadmeTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class TodoSerializerTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
7
|
-
export declare class SerializersBarrelTemplateBuilder extends TemplateBuilder {
|
|
8
|
-
constructor();
|
|
9
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
10
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class TangoConfigTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class TangoRegisterTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class TsConfigTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class TsConfigBuildTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class ViewSetTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { FrameworkScaffoldStrategy } from '../../contracts/FrameworkScaffoldStrategy';
|
|
2
|
-
import type { ScaffoldTemplate } from '../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
/**
|
|
4
|
-
* Scaffold strategy for creating a Next.js-hosted Tango project.
|
|
5
|
-
*/
|
|
6
|
-
export declare class NextScaffoldStrategy extends FrameworkScaffoldStrategy {
|
|
7
|
-
readonly id: "next";
|
|
8
|
-
readonly name = "Next.js";
|
|
9
|
-
readonly description = "Bootstrap a Tango application hosted by Next.js App Router.";
|
|
10
|
-
/**
|
|
11
|
-
* Return the file templates needed for the generated Next.js project.
|
|
12
|
-
*/
|
|
13
|
-
getTemplates(): readonly ScaffoldTemplate[];
|
|
14
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class BootstrapTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class HealthRouteTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class LayoutTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class TodoModelTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
static context(context: FrameworkScaffoldContext): TodoModelTemplateBuilder;
|
|
6
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
7
|
-
}
|
|
8
|
-
export declare class ModelsBarrelTemplateBuilder extends TemplateBuilder {
|
|
9
|
-
constructor();
|
|
10
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
11
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class OpenAPITemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class OpenAPIRouteTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class PackageJsonTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class PageTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class ReadmeTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class TodoSerializerTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
7
|
-
export declare class SerializersBarrelTemplateBuilder extends TemplateBuilder {
|
|
8
|
-
constructor();
|
|
9
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
10
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class TangoConfigTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class TodoRouteTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class TsConfigTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class ViewSetTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { FrameworkScaffoldStrategy } from '../../contracts/FrameworkScaffoldStrategy';
|
|
2
|
-
import type { ScaffoldTemplate } from '../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
/**
|
|
4
|
-
* Scaffold strategy for creating a Nuxt-hosted Tango project.
|
|
5
|
-
*/
|
|
6
|
-
export declare class NuxtScaffoldStrategy extends FrameworkScaffoldStrategy {
|
|
7
|
-
readonly id: "nuxt";
|
|
8
|
-
readonly name = "Nuxt";
|
|
9
|
-
readonly description = "Bootstrap a Tango application hosted by Nuxt Nitro and SSR pages.";
|
|
10
|
-
/**
|
|
11
|
-
* Return the file templates needed for the generated Nuxt project.
|
|
12
|
-
*/
|
|
13
|
-
getTemplates(): readonly ScaffoldTemplate[];
|
|
14
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class BootstrapTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class HealthRouteTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class AppShellTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class TodoModelTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
static context(context: FrameworkScaffoldContext): TodoModelTemplateBuilder;
|
|
6
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
7
|
-
}
|
|
8
|
-
export declare class ModelsBarrelTemplateBuilder extends TemplateBuilder {
|
|
9
|
-
constructor();
|
|
10
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
11
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class NuxtConfigTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class OpenAPITemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class OpenAPIRouteTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class PackageJsonTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class PageTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(_context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { TemplateBuilder } from '../../../contracts/template/TemplateBuilder';
|
|
2
|
-
import type { FrameworkScaffoldContext } from '../../../contracts/template/ScaffoldTemplate';
|
|
3
|
-
export declare class ReadmeTemplateBuilder extends TemplateBuilder {
|
|
4
|
-
constructor();
|
|
5
|
-
protected resolveTemplate(context: FrameworkScaffoldContext): string;
|
|
6
|
-
}
|