@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
|
@@ -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 };
|
package/dist/commands/index.d.ts
CHANGED
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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 };
|
package/dist/commands/index.js
CHANGED
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
import "../
|
|
2
|
-
|
|
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-Bl0tiyaE.js";
|
|
2
|
+
export { loadProjectModule, registerCodegenCommands, runGenerateRelationsCommand, withGenerateRelationsCommand };
|
|
@@ -1,53 +1,48 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { writeRelationRegistryArtifacts } from "./relations-
|
|
3
|
-
import {
|
|
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-B_un20qv.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
|
|
6
|
-
import { getLogger
|
|
7
|
-
import { basename,
|
|
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
|
|
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
|
|
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
|
|
36
|
-
const targetDir = resolve$
|
|
37
|
-
|
|
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
|
|
48
|
-
logger
|
|
49
|
-
logger
|
|
50
|
-
logger
|
|
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
|
|
146
|
-
const outputDir = options?.outputDir ?? resolve
|
|
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
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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
|
|
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
|
|
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
|
|
213
|
-
const
|
|
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
|
|
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
|
|
237
|
-
logger
|
|
238
|
-
logger
|
|
239
|
-
if (framework === SUPPORTED_FRAMEWORK.EXPRESS) logger
|
|
240
|
-
if (framework === SUPPORTED_FRAMEWORK.NUXT) logger
|
|
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
|
-
|
|
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 {
|
|
297
|
-
|
|
286
|
+
export { loadProjectModule as a, withGenerateRelationsCommand as i, registerCodegenCommands as n, runGenerateRelationsCommand as r, commands_exports as t };
|
|
287
|
+
|
|
288
|
+
//# sourceMappingURL=commands-Bl0tiyaE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands-Bl0tiyaE.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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"}
|
package/dist/domain/index.d.ts
CHANGED
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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 };
|
package/dist/domain/index.js
CHANGED
|
@@ -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
|
-
|
|
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 };
|
package/dist/frameworks/index.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import {
|
|
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-B_un20qv.js";
|
|
2
|
+
export { ExpressScaffoldStrategy, FrameworkScaffoldRegistry, FrameworkScaffoldStrategy, NextScaffoldStrategy, NuxtScaffoldStrategy, SCAFFOLD_TEMPLATE_CATEGORY, ScaffoldTemplateDescriptor, scaffoldProject };
|