@danceroutine/tango-codegen 1.11.0 → 1.11.2

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.
Files changed (100) hide show
  1. package/dist/chunk-D7D4PA-g.js +13 -0
  2. package/dist/commands/index.d.ts +2 -6
  3. package/dist/commands/index.js +2 -5
  4. package/dist/{commands-CFAq4wXC.js → commands-pbMmQ_tn.js} +49 -58
  5. package/dist/commands-pbMmQ_tn.js.map +1 -0
  6. package/dist/domain/index.d.ts +2 -4
  7. package/dist/domain/index.js +7 -1
  8. package/dist/domain/index.js.map +1 -0
  9. package/dist/frameworks/index.d.ts +2 -12
  10. package/dist/frameworks/index.js +2 -3
  11. package/dist/{frameworks-D4q168d9.js → frameworks-DcmEvb3N.js} +116 -158
  12. package/dist/frameworks-DcmEvb3N.js.map +1 -0
  13. package/dist/generators/index.d.ts +2 -12
  14. package/dist/generators/index.js +3 -4
  15. package/dist/{generators-DuAuGNR2.js → generators-D7GoehXD.js} +39 -40
  16. package/dist/generators-D7GoehXD.js.map +1 -0
  17. package/dist/index-DDt-Xe7q.d.ts +201 -0
  18. package/dist/index-DM7Ade2V.d.ts +43 -0
  19. package/dist/index-XicN3qCI.d.ts +82 -0
  20. package/dist/index-sKndVpFf.d.ts +26 -0
  21. package/dist/index.d.ts +18 -13
  22. package/dist/index.js +6 -7
  23. package/dist/{relations-DqDEZ6MV.js → relations-tePbGOWl.js} +33 -31
  24. package/dist/relations-tePbGOWl.js.map +1 -0
  25. package/package.json +6 -6
  26. package/dist/chunk-BkvOhyD0.js +0 -12
  27. package/dist/commands/loadProjectModule.d.ts +0 -15
  28. package/dist/commands/registerCodegenCommands.d.ts +0 -5
  29. package/dist/commands/runGenerateRelationsCommand.d.ts +0 -11
  30. package/dist/commands/runInitCommand.d.ts +0 -13
  31. package/dist/commands/runInstall.d.ts +0 -2
  32. package/dist/commands/runNewCommand.d.ts +0 -16
  33. package/dist/commands-CFAq4wXC.js.map +0 -1
  34. package/dist/domain/CodegenModel.d.ts +0 -19
  35. package/dist/domain-Cufz6y1q.js +0 -7
  36. package/dist/domain-Cufz6y1q.js.map +0 -1
  37. package/dist/frameworks/contracts/FrameworkScaffoldStrategy.d.ts +0 -40
  38. package/dist/frameworks/contracts/template/ScaffoldTemplate.d.ts +0 -22
  39. package/dist/frameworks/contracts/template/TemplateBuilder.d.ts +0 -42
  40. package/dist/frameworks/contracts/template/implementation/ScaffoldTemplateDescriptor.d.ts +0 -10
  41. package/dist/frameworks/registry/FrameworkScaffoldRegistry.d.ts +0 -23
  42. package/dist/frameworks/scaffold/scaffoldProject.d.ts +0 -17
  43. package/dist/frameworks/strategies/express/ExpressScaffoldStrategy.d.ts +0 -14
  44. package/dist/frameworks/strategies/express/templates/appSource.d.ts +0 -6
  45. package/dist/frameworks/strategies/express/templates/bootstrap.d.ts +0 -6
  46. package/dist/frameworks/strategies/express/templates/models.d.ts +0 -10
  47. package/dist/frameworks/strategies/express/templates/openapi.d.ts +0 -6
  48. package/dist/frameworks/strategies/express/templates/packageJson.d.ts +0 -6
  49. package/dist/frameworks/strategies/express/templates/readme.d.ts +0 -6
  50. package/dist/frameworks/strategies/express/templates/serializers.d.ts +0 -10
  51. package/dist/frameworks/strategies/express/templates/tangoConfig.d.ts +0 -6
  52. package/dist/frameworks/strategies/express/templates/tangoRegister.d.ts +0 -6
  53. package/dist/frameworks/strategies/express/templates/tsconfig.d.ts +0 -6
  54. package/dist/frameworks/strategies/express/templates/tsconfigBuild.d.ts +0 -6
  55. package/dist/frameworks/strategies/express/templates/viewSet.d.ts +0 -6
  56. package/dist/frameworks/strategies/next/NextScaffoldStrategy.d.ts +0 -14
  57. package/dist/frameworks/strategies/next/templates/bootstrap.d.ts +0 -6
  58. package/dist/frameworks/strategies/next/templates/healthRoute.d.ts +0 -6
  59. package/dist/frameworks/strategies/next/templates/layout.d.ts +0 -6
  60. package/dist/frameworks/strategies/next/templates/models.d.ts +0 -11
  61. package/dist/frameworks/strategies/next/templates/openapi.d.ts +0 -6
  62. package/dist/frameworks/strategies/next/templates/openapiRoute.d.ts +0 -6
  63. package/dist/frameworks/strategies/next/templates/packageJson.d.ts +0 -6
  64. package/dist/frameworks/strategies/next/templates/page.d.ts +0 -6
  65. package/dist/frameworks/strategies/next/templates/readme.d.ts +0 -6
  66. package/dist/frameworks/strategies/next/templates/serializers.d.ts +0 -10
  67. package/dist/frameworks/strategies/next/templates/tangoConfig.d.ts +0 -6
  68. package/dist/frameworks/strategies/next/templates/todoRoute.d.ts +0 -6
  69. package/dist/frameworks/strategies/next/templates/tsconfig.d.ts +0 -6
  70. package/dist/frameworks/strategies/next/templates/viewSet.d.ts +0 -6
  71. package/dist/frameworks/strategies/nuxt/NuxtScaffoldStrategy.d.ts +0 -14
  72. package/dist/frameworks/strategies/nuxt/templates/bootstrap.d.ts +0 -6
  73. package/dist/frameworks/strategies/nuxt/templates/healthRoute.d.ts +0 -6
  74. package/dist/frameworks/strategies/nuxt/templates/layout.d.ts +0 -6
  75. package/dist/frameworks/strategies/nuxt/templates/models.d.ts +0 -11
  76. package/dist/frameworks/strategies/nuxt/templates/nuxtConfig.d.ts +0 -6
  77. package/dist/frameworks/strategies/nuxt/templates/openapi.d.ts +0 -6
  78. package/dist/frameworks/strategies/nuxt/templates/openapiRoute.d.ts +0 -6
  79. package/dist/frameworks/strategies/nuxt/templates/packageJson.d.ts +0 -6
  80. package/dist/frameworks/strategies/nuxt/templates/page.d.ts +0 -6
  81. package/dist/frameworks/strategies/nuxt/templates/readme.d.ts +0 -6
  82. package/dist/frameworks/strategies/nuxt/templates/serializers.d.ts +0 -10
  83. package/dist/frameworks/strategies/nuxt/templates/tangoConfig.d.ts +0 -6
  84. package/dist/frameworks/strategies/nuxt/templates/todoRoute.d.ts +0 -6
  85. package/dist/frameworks/strategies/nuxt/templates/tsconfig.d.ts +0 -6
  86. package/dist/frameworks/strategies/nuxt/templates/viewSet.d.ts +0 -6
  87. package/dist/frameworks-D4q168d9.js.map +0 -1
  88. package/dist/generators/migration/generateMigrationFromModels.d.ts +0 -8
  89. package/dist/generators/migration/index.d.ts +0 -4
  90. package/dist/generators/model/generateModelInterface.d.ts +0 -5
  91. package/dist/generators/model/index.d.ts +0 -4
  92. package/dist/generators/relations/generateRelationRegistryArtifacts.d.ts +0 -15
  93. package/dist/generators/relations/index.d.ts +0 -5
  94. package/dist/generators/relations/writeRelationRegistryArtifacts.d.ts +0 -16
  95. package/dist/generators/viewset/generateViewSet.d.ts +0 -4
  96. package/dist/generators/viewset/index.d.ts +0 -4
  97. package/dist/generators-DuAuGNR2.js.map +0 -1
  98. package/dist/mappers/fieldType.d.ts +0 -9
  99. package/dist/mappers/index.d.ts +0 -4
  100. package/dist/relations-DqDEZ6MV.js.map +0 -1
@@ -0,0 +1,13 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __defProp = Object.defineProperty;
3
+ var __exportAll = (all, no_symbols) => {
4
+ let target = {};
5
+ for (var name in all) __defProp(target, name, {
6
+ get: all[name],
7
+ enumerable: true
8
+ });
9
+ if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
10
+ return target;
11
+ };
12
+ //#endregion
13
+ export { __exportAll as t };
@@ -1,6 +1,2 @@
1
- /**
2
- * Domain boundary barrel: centralizes this subdomain's public contract.
3
- */
4
- export { registerCodegenCommands } from './registerCodegenCommands';
5
- export { loadProjectModule } from './loadProjectModule';
6
- export { runGenerateRelationsCommand, withGenerateRelationsCommand } from './runGenerateRelationsCommand';
1
+ import { a as registerCodegenCommands, i as loadProjectModule, n as runGenerateRelationsCommand, r as withGenerateRelationsCommand } from "../index-DM7Ade2V.js";
2
+ export { loadProjectModule, registerCodegenCommands, runGenerateRelationsCommand, withGenerateRelationsCommand };
@@ -1,5 +1,2 @@
1
- import "../relations-DqDEZ6MV.js";
2
- import "../frameworks-D4q168d9.js";
3
- import { loadProjectModule, registerCodegenCommands, runGenerateRelationsCommand, withGenerateRelationsCommand } from "../commands-CFAq4wXC.js";
4
-
5
- export { loadProjectModule, registerCodegenCommands, runGenerateRelationsCommand, withGenerateRelationsCommand };
1
+ import { a as loadProjectModule, i as withGenerateRelationsCommand, n as registerCodegenCommands, r as runGenerateRelationsCommand } from "../commands-pbMmQ_tn.js";
2
+ export { loadProjectModule, registerCodegenCommands, runGenerateRelationsCommand, withGenerateRelationsCommand };
@@ -1,53 +1,48 @@
1
- import { __export } from "./chunk-BkvOhyD0.js";
2
- import { writeRelationRegistryArtifacts } from "./relations-DqDEZ6MV.js";
3
- import { FrameworkScaffoldRegistry, PACKAGE_MANAGER, SCAFFOLD_DATABASE_DIALECT, SUPPORTED_FRAMEWORK, scaffoldProject } from "./frameworks-D4q168d9.js";
1
+ import { t as __exportAll } from "./chunk-D7D4PA-g.js";
2
+ import { n as writeRelationRegistryArtifacts } from "./relations-tePbGOWl.js";
3
+ import { c as PACKAGE_MANAGER, l as SCAFFOLD_DATABASE_DIALECT, n as scaffoldProject, r as FrameworkScaffoldRegistry, u as SUPPORTED_FRAMEWORK } from "./frameworks-DcmEvb3N.js";
4
4
  import { GENERATED_RELATION_REGISTRY_DIRNAME, GENERATED_RELATION_REGISTRY_METADATA_FILENAME, GENERATED_RELATION_REGISTRY_TYPES_FILENAME, ModelRegistry } from "@danceroutine/tango-schema";
5
- import { extname, relative, resolve as resolve$1, resolve as resolve$2 } from "node:path";
6
- import { getLogger, getLogger as getLogger$1, getLogger as getLogger$2 } from "@danceroutine/tango-core";
7
- import { basename, basename as basename$1, join, resolve, resolve as resolve$3 } from "path/posix";
5
+ import { extname, relative, resolve } from "node:path";
6
+ import { getLogger } from "@danceroutine/tango-core";
7
+ import { basename, join, resolve as resolve$1 } from "path/posix";
8
8
  import { spawnSync } from "child_process";
9
9
  import { pathToFileURL } from "node:url";
10
10
  import { createJiti } from "jiti";
11
11
  import { readFile, readdir } from "fs/promises";
12
-
13
12
  //#region src/commands/runInstall.ts
14
13
  function runInstall(packageManager, cwd) {
15
- const argsByPackageManager = {
14
+ const result = spawnSync(packageManager, [...{
16
15
  pnpm: ["install"],
17
16
  npm: ["install"],
18
17
  yarn: ["install"],
19
18
  bun: ["install"]
20
- };
21
- const result = spawnSync(packageManager, [...argsByPackageManager[packageManager]], {
19
+ }[packageManager]], {
22
20
  cwd,
23
21
  stdio: "inherit",
24
22
  env: process.env
25
23
  });
26
24
  if (result.status !== 0) throw new Error(`Dependency install failed with ${packageManager}. Exit code: ${String(result.status ?? "unknown")}.`);
27
25
  }
28
-
29
26
  //#endregion
30
27
  //#region src/commands/runNewCommand.ts
31
28
  async function runNewCommand({ path, name, framework, packageManager, dialect, install, force, seed: includeSeed }) {
32
- const registry = FrameworkScaffoldRegistry.createDefault();
33
- const strategy = registry.get(framework);
29
+ const strategy = FrameworkScaffoldRegistry.createDefault().get(framework);
34
30
  const requestedPath = path ?? name ?? "tango-app";
35
- const projectName = name ?? basename$1(requestedPath);
36
- const targetDir = resolve$3(process.cwd(), requestedPath);
37
- const context = {
31
+ const projectName = name ?? basename(requestedPath);
32
+ const targetDir = resolve$1(process.cwd(), requestedPath);
33
+ await scaffoldProject({
38
34
  projectName,
39
35
  targetDir,
40
36
  framework,
41
37
  packageManager,
42
38
  dialect,
43
39
  includeSeed
44
- };
45
- await scaffoldProject(context, strategy, { force });
40
+ }, strategy, { force });
46
41
  if (install) runInstall(packageManager, targetDir);
47
- const logger$1 = getLogger$2("tango.codegen");
48
- logger$1.info(`Scaffold complete: ${targetDir}`);
49
- logger$1.info(`Framework: ${strategy.name}`);
50
- logger$1.info(`Run next: cd ${targetDir} && ${packageManager} run dev`);
42
+ const logger = getLogger("tango.codegen");
43
+ logger.info(`Scaffold complete: ${targetDir}`);
44
+ logger.info(`Framework: ${strategy.name}`);
45
+ logger.info(`Run next: cd ${targetDir} && ${packageManager} run dev`);
51
46
  }
52
47
  function withNewCommand(parser) {
53
48
  return parser.command("new [name]", "Bootstrap a new Tango project", (builder) => builder.positional("name", {
@@ -96,7 +91,6 @@ function withNewCommand(parser) {
96
91
  });
97
92
  });
98
93
  }
99
-
100
94
  //#endregion
101
95
  //#region src/commands/loadProjectModule.ts
102
96
  const TS_EXTENSIONS = new Set([
@@ -115,7 +109,7 @@ function toImportSpecifier(absoluteModulePath, outputDir) {
115
109
  const relativePath = relative(outputDir, absoluteModulePath).replaceAll("\\", "/");
116
110
  return relativePath.startsWith(".") ? relativePath : `./${relativePath}`;
117
111
  }
118
- function collectModelTypeAccessors(loaded, importSpecifier, accessors = new Map()) {
112
+ function collectModelTypeAccessors(loaded, importSpecifier, accessors = /* @__PURE__ */ new Map()) {
119
113
  const models = [];
120
114
  const registerAccessor = (model, accessor) => {
121
115
  models.push(model);
@@ -140,19 +134,20 @@ function collectModelTypeAccessors(loaded, importSpecifier, accessors = new Map(
140
134
  models
141
135
  };
142
136
  }
137
+ /**
138
+ * Load a Tango app module and discover model export accessors suitable for
139
+ * generated ambient type references.
140
+ */
143
141
  async function loadProjectModule(modulePath, options) {
144
142
  const projectRoot = options?.projectRoot ?? process.cwd();
145
- const absoluteModulePath = resolve$2(projectRoot, modulePath);
146
- const outputDir = options?.outputDir ?? resolve$2(projectRoot, ".tango");
143
+ const absoluteModulePath = resolve(projectRoot, modulePath);
144
+ const outputDir = options?.outputDir ?? resolve(projectRoot, ".tango");
147
145
  const registry = new ModelRegistry();
148
146
  const executeImport = async () => {
149
- if (isTypeScriptModule(absoluteModulePath)) {
150
- const jiti = createJiti(resolve$2(projectRoot, "tango.config.ts"), {
151
- interopDefault: true,
152
- moduleCache: false
153
- });
154
- return await jiti.import(absoluteModulePath);
155
- }
147
+ if (isTypeScriptModule(absoluteModulePath)) return await createJiti(resolve(projectRoot, "tango.config.ts"), {
148
+ interopDefault: true,
149
+ moduleCache: false
150
+ }).import(absoluteModulePath);
156
151
  return await import(pathToFileURL(absoluteModulePath).href);
157
152
  };
158
153
  const loaded = await ModelRegistry.runWithRegistry(registry, executeImport);
@@ -164,12 +159,14 @@ async function loadProjectModule(modulePath, options) {
164
159
  registry: effectiveRegistry
165
160
  };
166
161
  }
167
-
168
162
  //#endregion
169
163
  //#region src/commands/runGenerateRelationsCommand.ts
170
- const logger = getLogger$1("tango.codegen");
164
+ const logger = getLogger("tango.codegen");
165
+ /**
166
+ * Generate the app-local ambient relation registry from a finalized model graph.
167
+ */
171
168
  async function runGenerateRelationsCommand({ models, outDir }) {
172
- const outputDir = resolve$1(process.cwd(), outDir);
169
+ const outputDir = resolve(process.cwd(), outDir);
173
170
  const { registry, modelTypeAccessors } = await loadProjectModule(models, { outputDir });
174
171
  const written = await writeRelationRegistryArtifacts({
175
172
  registry,
@@ -195,7 +192,6 @@ function withGenerateRelationsCommand(parser) {
195
192
  });
196
193
  });
197
194
  }
198
-
199
195
  //#endregion
200
196
  //#region src/commands/runInitCommand.ts
201
197
  async function detectPackageManager(targetDir) {
@@ -209,13 +205,11 @@ async function detectPackageManager(targetDir) {
209
205
  return PACKAGE_MANAGER.PNPM;
210
206
  }
211
207
  async function runInitCommand({ framework, path, dialect, skipExisting, force }) {
212
- const registry = FrameworkScaffoldRegistry.createDefault();
213
- const strategy = registry.get(framework);
214
- const targetDir = resolve(process.cwd(), path);
208
+ const strategy = FrameworkScaffoldRegistry.createDefault().get(framework);
209
+ const targetDir = resolve$1(process.cwd(), path);
215
210
  let projectName = basename(targetDir);
216
211
  try {
217
- const pkgPath = join(targetDir, "package.json");
218
- const raw = await readFile(pkgPath, "utf8");
212
+ const raw = await readFile(join(targetDir, "package.json"), "utf8");
219
213
  const pkg = JSON.parse(raw);
220
214
  if (typeof pkg.name === "string" && pkg.name.length > 0) projectName = pkg.name;
221
215
  } catch {}
@@ -233,11 +227,11 @@ async function runInitCommand({ framework, path, dialect, skipExisting, force })
233
227
  skipExisting,
234
228
  force
235
229
  });
236
- const logger$1 = getLogger("tango.codegen");
237
- logger$1.info(`Tango init complete: ${targetDir}`);
238
- logger$1.info(`Install dependencies: ${strategy.getTangoInstallOneLiner(packageManager, context)}`);
239
- if (framework === SUPPORTED_FRAMEWORK.EXPRESS) logger$1.info("Mount Tango: import { registerTango } from './src/tango.js'; await registerTango(app);");
240
- if (framework === SUPPORTED_FRAMEWORK.NUXT) logger$1.info("Wire Tango handlers: register Nitro serverHandlers in nuxt.config.ts and export NuxtAdapter-backed handlers from server/tango/.");
230
+ const logger = getLogger("tango.codegen");
231
+ logger.info(`Tango init complete: ${targetDir}`);
232
+ logger.info(`Install dependencies: ${strategy.getTangoInstallOneLiner(packageManager, context)}`);
233
+ if (framework === SUPPORTED_FRAMEWORK.EXPRESS) logger.info("Mount Tango: import { registerTango } from './src/tango.js'; await registerTango(app);");
234
+ if (framework === SUPPORTED_FRAMEWORK.NUXT) logger.info("Wire Tango handlers: register Nitro serverHandlers in nuxt.config.ts and export NuxtAdapter-backed handlers from server/tango/.");
241
235
  }
242
236
  function withInitCommand(parser) {
243
237
  return parser.command("init", "Add Tango to an existing project (only Tango-layer files)", (builder) => builder.option("framework", {
@@ -272,26 +266,23 @@ function withInitCommand(parser) {
272
266
  });
273
267
  });
274
268
  }
275
-
276
269
  //#endregion
277
270
  //#region src/commands/registerCodegenCommands.ts
271
+ /**
272
+ * Register Tango project scaffolding commands on an existing CLI parser.
273
+ */
278
274
  function registerCodegenCommands(parser) {
279
- const withTopLevelNew = withNewCommand(parser);
280
- const withTopLevelInit = withInitCommand(withTopLevelNew);
281
- const withTopLevelRelations = withGenerateRelationsCommand(withTopLevelInit);
282
- return withTopLevelRelations.command("codegen <command>", "Code generation command group", (builder) => withGenerateRelationsCommand(withInitCommand(withNewCommand(builder))));
275
+ return withGenerateRelationsCommand(withInitCommand(withNewCommand(parser))).command("codegen <command>", "Code generation command group", (builder) => withGenerateRelationsCommand(withInitCommand(withNewCommand(builder))));
283
276
  }
284
-
285
277
  //#endregion
286
278
  //#region src/commands/index.ts
287
- var commands_exports = {};
288
- __export(commands_exports, {
279
+ var commands_exports = /* @__PURE__ */ __exportAll({
289
280
  loadProjectModule: () => loadProjectModule,
290
281
  registerCodegenCommands: () => registerCodegenCommands,
291
282
  runGenerateRelationsCommand: () => runGenerateRelationsCommand,
292
283
  withGenerateRelationsCommand: () => withGenerateRelationsCommand
293
284
  });
294
-
295
285
  //#endregion
296
- export { commands_exports, loadProjectModule, registerCodegenCommands, runGenerateRelationsCommand, withGenerateRelationsCommand };
297
- //# sourceMappingURL=commands-CFAq4wXC.js.map
286
+ export { loadProjectModule as a, withGenerateRelationsCommand as i, registerCodegenCommands as n, runGenerateRelationsCommand as r, commands_exports as t };
287
+
288
+ //# sourceMappingURL=commands-pbMmQ_tn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands-pbMmQ_tn.js","names":["resolve","resolve"],"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,4 +1,2 @@
1
- /**
2
- * Domain boundary barrel: centralizes this subdomain's public contract.
3
- */
4
- export type { CodegenFieldMeta, CodegenModel } from './CodegenModel';
1
+ import { n as CodegenFieldMeta, r as CodegenModel } from "../index-sKndVpFf.js";
2
+ export type { CodegenFieldMeta, CodegenModel };
@@ -1 +1,7 @@
1
- import "../domain-Cufz6y1q.js";
1
+ import { t as __exportAll } from "../chunk-D7D4PA-g.js";
2
+ //#region src/domain/index.ts
3
+ var domain_exports = /* @__PURE__ */ __exportAll({});
4
+ //#endregion
5
+ export { domain_exports as t };
6
+
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.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,12 +1,2 @@
1
- /**
2
- * Domain boundary barrel: centralizes this subdomain's public contract.
3
- */
4
- export { type FrameworkScaffoldContext, type ScaffoldMode, type ScaffoldTemplate, type ScaffoldTemplateCategory, SCAFFOLD_TEMPLATE_CATEGORY, } from './contracts/template/ScaffoldTemplate';
5
- export type { PackageManager, ScaffoldDatabaseDialect as ScaffoldDialect, SupportedFramework, } from './contracts/FrameworkScaffoldStrategy';
6
- export { FrameworkScaffoldStrategy } from './contracts/FrameworkScaffoldStrategy';
7
- export { ScaffoldTemplateDescriptor } from './contracts/template/implementation/ScaffoldTemplateDescriptor';
8
- export { FrameworkScaffoldRegistry } from './registry/FrameworkScaffoldRegistry';
9
- export { ExpressScaffoldStrategy } from './strategies/express/ExpressScaffoldStrategy';
10
- export { NextScaffoldStrategy } from './strategies/next/NextScaffoldStrategy';
11
- export { NuxtScaffoldStrategy } from './strategies/nuxt/NuxtScaffoldStrategy';
12
- export { scaffoldProject, type ScaffoldProjectOptions } from './scaffold/scaffoldProject';
1
+ import { _ as SupportedFramework, a as NextScaffoldStrategy, c as ScaffoldTemplateDescriptor, d as ScaffoldMode, f as ScaffoldTemplate, g as ScaffoldDatabaseDialect, h as PackageManager, i as NuxtScaffoldStrategy, l as FrameworkScaffoldContext, m as FrameworkScaffoldStrategy, n as ScaffoldProjectOptions, o as ExpressScaffoldStrategy, p as ScaffoldTemplateCategory, r as scaffoldProject, s as FrameworkScaffoldRegistry, u as SCAFFOLD_TEMPLATE_CATEGORY } from "../index-DDt-Xe7q.js";
2
+ export { ExpressScaffoldStrategy, type FrameworkScaffoldContext, FrameworkScaffoldRegistry, FrameworkScaffoldStrategy, NextScaffoldStrategy, NuxtScaffoldStrategy, type PackageManager, SCAFFOLD_TEMPLATE_CATEGORY, type ScaffoldDatabaseDialect as ScaffoldDialect, type ScaffoldMode, type ScaffoldProjectOptions, type ScaffoldTemplate, type ScaffoldTemplateCategory, ScaffoldTemplateDescriptor, type SupportedFramework, scaffoldProject };
@@ -1,3 +1,2 @@
1
- import { ExpressScaffoldStrategy, FrameworkScaffoldRegistry, FrameworkScaffoldStrategy, NextScaffoldStrategy, NuxtScaffoldStrategy, SCAFFOLD_TEMPLATE_CATEGORY, ScaffoldTemplateDescriptor, scaffoldProject } from "../frameworks-D4q168d9.js";
2
-
3
- export { ExpressScaffoldStrategy, FrameworkScaffoldRegistry, FrameworkScaffoldStrategy, NextScaffoldStrategy, NuxtScaffoldStrategy, SCAFFOLD_TEMPLATE_CATEGORY, ScaffoldTemplateDescriptor, scaffoldProject };
1
+ import { a as NextScaffoldStrategy, d as ScaffoldTemplateDescriptor, f as SCAFFOLD_TEMPLATE_CATEGORY, i as NuxtScaffoldStrategy, n as scaffoldProject, o as ExpressScaffoldStrategy, r as FrameworkScaffoldRegistry, s as FrameworkScaffoldStrategy } from "../frameworks-DcmEvb3N.js";
2
+ export { ExpressScaffoldStrategy, FrameworkScaffoldRegistry, FrameworkScaffoldStrategy, NextScaffoldStrategy, NuxtScaffoldStrategy, SCAFFOLD_TEMPLATE_CATEGORY, ScaffoldTemplateDescriptor, scaffoldProject };