@ykdz/template 0.0.2 → 0.0.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.
Files changed (102) hide show
  1. package/dist/src/cli.d.ts.map +1 -0
  2. package/dist/{cli.js → src/cli.js} +77 -56
  3. package/dist/{declarations.d.ts → src/declarations.d.ts} +1 -2
  4. package/dist/src/declarations.d.ts.map +1 -0
  5. package/dist/{declarations.js → src/declarations.js} +2 -109
  6. package/dist/src/dependency-catalog.d.ts +10 -0
  7. package/dist/src/dependency-catalog.d.ts.map +1 -0
  8. package/dist/src/dependency-catalog.js +63 -0
  9. package/dist/{devcontainer.d.ts → src/devcontainer.d.ts} +1 -0
  10. package/dist/src/devcontainer.d.ts.map +1 -0
  11. package/dist/{devcontainer.js → src/devcontainer.js} +1 -0
  12. package/dist/src/editor-customization.d.ts +13 -0
  13. package/dist/src/editor-customization.d.ts.map +1 -0
  14. package/dist/src/editor-customization.js +101 -0
  15. package/dist/{generation-context.d.ts → src/generation-context.d.ts} +2 -2
  16. package/dist/src/generation-context.d.ts.map +1 -0
  17. package/dist/{module-graph.d.ts → src/module-graph.d.ts} +0 -14
  18. package/dist/src/module-graph.d.ts.map +1 -0
  19. package/dist/src/module-graph.js +48 -0
  20. package/dist/{next-step-instructions.d.ts → src/next-step-instructions.d.ts} +2 -3
  21. package/dist/src/next-step-instructions.d.ts.map +1 -0
  22. package/dist/{next-step-instructions.js → src/next-step-instructions.js} +14 -24
  23. package/dist/src/package-addition.d.ts.map +1 -0
  24. package/dist/src/package-addition.js +188 -0
  25. package/dist/src/preset-projection.d.ts +66 -0
  26. package/dist/src/preset-projection.d.ts.map +1 -0
  27. package/dist/src/preset-projection.js +7 -0
  28. package/dist/{project-github.d.ts → src/project-github.d.ts} +0 -7
  29. package/dist/src/project-github.d.ts.map +1 -0
  30. package/dist/{project-github.js → src/project-github.js} +3 -36
  31. package/dist/src/renderer.d.ts.map +1 -0
  32. package/dist/src/runtime-paths.d.ts +2 -0
  33. package/dist/src/runtime-paths.d.ts.map +1 -0
  34. package/dist/src/runtime-paths.js +11 -0
  35. package/dist/src/toolchain-resolution.d.ts.map +1 -0
  36. package/dist/{toolchain-resolution.js → src/toolchain-resolution.js} +1 -1
  37. package/dist/templates/hono-api/projection.d.ts +7 -0
  38. package/dist/templates/hono-api/projection.d.ts.map +1 -0
  39. package/dist/templates/hono-api/projection.js +377 -0
  40. package/dist/templates/projection-plans.d.ts +8 -0
  41. package/dist/templates/projection-plans.d.ts.map +1 -0
  42. package/dist/templates/projection-plans.js +94 -0
  43. package/dist/templates/registry.d.ts +8 -0
  44. package/dist/templates/registry.d.ts.map +1 -0
  45. package/dist/templates/registry.js +42 -0
  46. package/dist/templates/rust-bin/projection.d.ts +10 -0
  47. package/dist/templates/rust-bin/projection.d.ts.map +1 -0
  48. package/dist/templates/rust-bin/projection.js +282 -0
  49. package/dist/templates/ts-lib/projection.d.ts +7 -0
  50. package/dist/templates/ts-lib/projection.d.ts.map +1 -0
  51. package/dist/templates/ts-lib/projection.js +372 -0
  52. package/dist/templates/vue-app/projection.d.ts +7 -0
  53. package/dist/templates/vue-app/projection.d.ts.map +1 -0
  54. package/dist/templates/vue-app/projection.js +594 -0
  55. package/dist/templates/vue-hono-app/projection.d.ts +9 -0
  56. package/dist/templates/vue-hono-app/projection.d.ts.map +1 -0
  57. package/dist/{vue-hono-app.js → templates/vue-hono-app/projection.js} +250 -101
  58. package/package.json +29 -24
  59. package/pnpm-workspace.yaml +34 -0
  60. package/templates/hono-api/projection.ts +453 -0
  61. package/templates/projection-plans.ts +135 -0
  62. package/templates/registry.ts +59 -0
  63. package/templates/rust-bin/projection.ts +346 -0
  64. package/templates/ts-lib/projection.ts +454 -0
  65. package/templates/vue-app/projection.ts +687 -0
  66. package/templates/vue-app/test/e2e/app.spec.ts +4 -1
  67. package/templates/vue-hono-app/projection.ts +669 -0
  68. package/templates/vue-hono-app/web/test/e2e/app.spec.ts +4 -1
  69. package/dist/cli.d.ts.map +0 -1
  70. package/dist/declarations.d.ts.map +0 -1
  71. package/dist/devcontainer.d.ts.map +0 -1
  72. package/dist/generation-context.d.ts.map +0 -1
  73. package/dist/hono-api.d.ts +0 -3
  74. package/dist/hono-api.d.ts.map +0 -1
  75. package/dist/hono-api.js +0 -210
  76. package/dist/module-graph.d.ts.map +0 -1
  77. package/dist/module-graph.js +0 -187
  78. package/dist/next-step-instructions.d.ts.map +0 -1
  79. package/dist/package-addition.d.ts.map +0 -1
  80. package/dist/package-addition.js +0 -560
  81. package/dist/project-github.d.ts.map +0 -1
  82. package/dist/renderer.d.ts.map +0 -1
  83. package/dist/rust-bin.d.ts +0 -8
  84. package/dist/rust-bin.d.ts.map +0 -1
  85. package/dist/rust-bin.js +0 -208
  86. package/dist/toolchain-resolution.d.ts.map +0 -1
  87. package/dist/ts-lib.d.ts +0 -8
  88. package/dist/ts-lib.d.ts.map +0 -1
  89. package/dist/ts-lib.js +0 -214
  90. package/dist/vue-app.d.ts +0 -3
  91. package/dist/vue-app.d.ts.map +0 -1
  92. package/dist/vue-app.js +0 -301
  93. package/dist/vue-hono-app.d.ts +0 -7
  94. package/dist/vue-hono-app.d.ts.map +0 -1
  95. package/templates/shared/oxc/package.json +0 -18
  96. package/templates/shared/oxc/tsconfig.json +0 -11
  97. /package/dist/{cli.d.ts → src/cli.d.ts} +0 -0
  98. /package/dist/{generation-context.js → src/generation-context.js} +0 -0
  99. /package/dist/{package-addition.d.ts → src/package-addition.d.ts} +0 -0
  100. /package/dist/{renderer.d.ts → src/renderer.d.ts} +0 -0
  101. /package/dist/{renderer.js → src/renderer.js} +0 -0
  102. /package/dist/{toolchain-resolution.d.ts → src/toolchain-resolution.d.ts} +0 -0
@@ -0,0 +1,48 @@
1
+ function renderCheckComponentCommand(component) {
2
+ switch (component.kind) {
3
+ case "typescript-typecheck":
4
+ return "pnpm run typecheck";
5
+ case "oxc-lint":
6
+ return "pnpm run lint";
7
+ case "oxc-format-check":
8
+ return "pnpm run format:check";
9
+ case "build":
10
+ return "pnpm run build";
11
+ case "unit-test":
12
+ return "pnpm run test";
13
+ case "e2e-test":
14
+ return "pnpm run test:e2e";
15
+ case "turbo-check":
16
+ return "turbo run check";
17
+ case "rustfmt-check":
18
+ return "cargo fmt --all -- --check";
19
+ case "cargo-clippy":
20
+ return "cargo clippy --workspace --all-targets -- -D warnings";
21
+ case "cargo-test":
22
+ return "cargo test --workspace";
23
+ }
24
+ }
25
+ function renderFixComponentCommand(component) {
26
+ switch (component.kind) {
27
+ case "oxc-format-write":
28
+ return "pnpm run format:write";
29
+ case "oxc-lint-fix":
30
+ return "pnpm run lint:fix";
31
+ case "turbo-fix":
32
+ return "turbo run fix";
33
+ case "rustfmt-write":
34
+ return "cargo fmt --all";
35
+ }
36
+ }
37
+ export function renderRootCheckCommand(plan) {
38
+ return plan.components.map(renderCheckComponentCommand).join(" && ");
39
+ }
40
+ export function renderFixCommand(plan) {
41
+ return plan.components.map(renderFixComponentCommand).join(" && ");
42
+ }
43
+ export function renderPlaywrightBrowserInstallCommand(need) {
44
+ if (need.owner.path === "apps/web") {
45
+ return `pnpm --filter ./apps/web exec playwright install ${need.browser}`;
46
+ }
47
+ return `pnpm exec playwright install ${need.browser}`;
48
+ }
@@ -1,4 +1,4 @@
1
- import type { PresetName } from "./declarations.js";
1
+ import type { PresetProjectionPlan } from "./preset-projection.js";
2
2
  export type NextStepInstruction = {
3
3
  readonly id: string;
4
4
  readonly label: string;
@@ -10,13 +10,12 @@ export type NextStepInstruction = {
10
10
  readonly machineVerifiable: boolean;
11
11
  };
12
12
  export type NextStepInstructionPlan = {
13
- readonly preset: PresetName;
14
13
  readonly targetDir: string;
15
14
  readonly steps: readonly NextStepInstruction[];
16
15
  };
17
16
  export type PlanNextStepInstructionsOptions = {
18
- readonly preset: PresetName;
19
17
  readonly targetDir: string;
18
+ readonly projectionPlan: PresetProjectionPlan;
20
19
  };
21
20
  export declare function planNextStepInstructions(options: PlanNextStepInstructionsOptions): NextStepInstructionPlan;
22
21
  //# sourceMappingURL=next-step-instructions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next-step-instructions.d.ts","sourceRoot":"","sources":["../../src/next-step-instructions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC;CAC/C,CAAC;AAqFF,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,+BAA+B,GACvC,uBAAuB,CAyBzB"}
@@ -1,5 +1,4 @@
1
- import path from "node:path";
2
- import { planPresetChecks, renderPlaywrightBrowserInstallCommand } from "./module-graph.js";
1
+ import { renderPlaywrightBrowserInstallCommand } from "./module-graph.js";
3
2
  function rootCheckInstruction() {
4
3
  return {
5
4
  id: "run-root-check",
@@ -36,12 +35,8 @@ function fixInstruction() {
36
35
  machineVerifiable: true,
37
36
  };
38
37
  }
39
- function checkEnvironmentInstructions(preset) {
40
- const checkPlan = planPresetChecks(preset);
41
- if (!checkPlan) {
42
- return [];
43
- }
44
- return checkPlan.environmentNeeds.map((need) => {
38
+ function checkEnvironmentInstructions(plan) {
39
+ return plan.checkPlan.environmentNeeds.map((need) => {
45
40
  const display = renderPlaywrightBrowserInstallCommand(need);
46
41
  const [command, ...args] = display.split(" ");
47
42
  return {
@@ -60,24 +55,20 @@ function checkEnvironmentInstructions(preset) {
60
55
  };
61
56
  });
62
57
  }
63
- function presetSpecificInstructions(preset) {
64
- if (preset === "ts-lib" ||
65
- preset === "hono-api" ||
66
- preset === "vue-app" ||
67
- preset === "vue-hono-app" ||
68
- preset === "rust-bin") {
69
- return [
70
- installDependenciesInstruction(),
71
- fixInstruction(),
72
- ...checkEnvironmentInstructions(preset),
73
- rootCheckInstruction(),
74
- ];
58
+ function projectionInstructions(plan) {
59
+ const steps = [installDependenciesInstruction()];
60
+ if (plan.capabilities.fixCommand) {
61
+ steps.push(fixInstruction());
62
+ }
63
+ steps.push(...checkEnvironmentInstructions(plan));
64
+ if (plan.capabilities.rootCheck) {
65
+ steps.push(rootCheckInstruction());
75
66
  }
76
- return [installDependenciesInstruction(), rootCheckInstruction()];
67
+ return steps;
77
68
  }
78
69
  export function planNextStepInstructions(options) {
79
- const targetDir = path.resolve(options.targetDir);
80
- const commandSteps = presetSpecificInstructions(options.preset).map((step) => ({
70
+ const targetDir = options.targetDir;
71
+ const commandSteps = projectionInstructions(options.projectionPlan).map((step) => ({
81
72
  ...step,
82
73
  cwd: targetDir,
83
74
  }));
@@ -92,7 +83,6 @@ export function planNextStepInstructions(options) {
92
83
  machineVerifiable: false,
93
84
  };
94
85
  return Object.freeze({
95
- preset: options.preset,
96
86
  targetDir,
97
87
  steps: Object.freeze([navigationStep, ...commandSteps].map((step) => Object.freeze(step))),
98
88
  });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-addition.d.ts","sourceRoot":"","sources":["../../src/package-addition.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AA0PF,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+E1E"}
@@ -0,0 +1,188 @@
1
+ import { mkdir, readFile, stat, writeFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { findBuiltInPresetProjection } from "../templates/registry.js";
4
+ import { validateProjectBlueprint, } from "./declarations.js";
5
+ import { renderProject } from "./renderer.js";
6
+ function projectNameFromBlueprint(blueprint) {
7
+ const firstPackage = blueprint.packages?.[0];
8
+ const match = firstPackage?.name.match(/^@([^/]+)\//);
9
+ if (!match) {
10
+ throw new Error("Cannot infer workspace package scope from the stored Project Blueprint");
11
+ }
12
+ return match[1];
13
+ }
14
+ function assertSafePackageLeaf(name) {
15
+ if (!/^[a-z0-9][a-z0-9-]*$/.test(name)) {
16
+ throw new Error("--name must be a lowercase package leaf name using letters, numbers, and hyphens");
17
+ }
18
+ }
19
+ async function readJson(filePath) {
20
+ return JSON.parse(await readFile(filePath, "utf8"));
21
+ }
22
+ async function writeJson(filePath, value) {
23
+ await writeFile(filePath, `${JSON.stringify(value, null, 2)}\n`, "utf8");
24
+ }
25
+ async function assertMissing(targetPath) {
26
+ try {
27
+ await stat(targetPath);
28
+ }
29
+ catch (error) {
30
+ if (isNodeError(error) && error.code === "ENOENT") {
31
+ return;
32
+ }
33
+ throw error;
34
+ }
35
+ throw new Error(`Package Addition would overwrite an existing path: ${targetPath}`);
36
+ }
37
+ function resolveGeneratedPath(root, relativePath) {
38
+ if (path.isAbsolute(relativePath)) {
39
+ throw new Error(`Package Addition paths must be relative: ${relativePath}`);
40
+ }
41
+ const resolvedRoot = path.resolve(root);
42
+ const resolvedPath = path.resolve(resolvedRoot, relativePath);
43
+ const insideRoot = resolvedPath === resolvedRoot ||
44
+ resolvedPath.startsWith(`${resolvedRoot}${path.sep}`);
45
+ if (!insideRoot) {
46
+ throw new Error(`Package Addition path escapes the Generated Repository: ${relativePath}`);
47
+ }
48
+ return resolvedPath;
49
+ }
50
+ function isNodeError(error) {
51
+ return error instanceof Error && "code" in error;
52
+ }
53
+ function isRecord(value) {
54
+ return typeof value === "object" && value !== null && !Array.isArray(value);
55
+ }
56
+ async function readGeneratedWorkspaceBlueprint(root) {
57
+ const blueprintPath = path.join(root, ".project-kit/blueprint.json");
58
+ const result = validateProjectBlueprint(await readJson(blueprintPath));
59
+ if (!result.ok) {
60
+ throw new Error("Package Addition requires a valid .project-kit/blueprint.json");
61
+ }
62
+ const blueprint = result.value;
63
+ if (blueprint.projectKind !== "multi-package") {
64
+ throw new Error("Package Addition only supports existing workspace Generated Repositories");
65
+ }
66
+ if (blueprint.packageManager !== "pnpm") {
67
+ throw new Error("Package Addition only supports pnpm workspace Generated Repositories");
68
+ }
69
+ if (!blueprint.packages || blueprint.packages.length === 0) {
70
+ throw new Error("Package Addition requires package definitions in the stored Project Blueprint");
71
+ }
72
+ await stat(path.join(root, "turbo.json"));
73
+ await stat(path.join(root, "pnpm-workspace.yaml"));
74
+ return blueprint;
75
+ }
76
+ async function readGeneratedRepositoryNodeVersion(root) {
77
+ const packageJson = await readJson(path.join(root, "package.json"));
78
+ if (!isRecord(packageJson) || !isRecord(packageJson.engines)) {
79
+ throw new Error("Package Addition requires root package.json to declare engines.node");
80
+ }
81
+ const nodeVersion = packageJson.engines.node;
82
+ if (typeof nodeVersion !== "string" || nodeVersion.length === 0) {
83
+ throw new Error("Package Addition requires root package.json to declare engines.node");
84
+ }
85
+ return nodeVersion;
86
+ }
87
+ function workspaceTextWithPackageGlob(text, glob) {
88
+ if (text.includes(` - ${glob}`)) {
89
+ return text;
90
+ }
91
+ const nextText = text.replace(/^packages:\n/m, `packages:\n - ${glob}\n`);
92
+ if (nextText === text) {
93
+ throw new Error("Cannot update pnpm workspace membership: missing packages section");
94
+ }
95
+ return nextText;
96
+ }
97
+ function assertRootTsconfig(input) {
98
+ if (!isRecord(input)) {
99
+ throw new Error("Cannot update root TypeScript project references: tsconfig.json must be an object");
100
+ }
101
+ const references = input.references;
102
+ if (references === undefined) {
103
+ return;
104
+ }
105
+ if (!Array.isArray(references)) {
106
+ throw new Error("Cannot update root TypeScript project references: references must be an array");
107
+ }
108
+ for (const reference of references) {
109
+ if (!isRecord(reference) || typeof reference.path !== "string") {
110
+ throw new Error("Cannot update root TypeScript project references: each reference must have a string path");
111
+ }
112
+ }
113
+ }
114
+ function rootTsconfigWithReferences(input, referencePaths) {
115
+ assertRootTsconfig(input);
116
+ const tsconfig = input;
117
+ const references = tsconfig.references ?? [];
118
+ for (const referencePath of referencePaths) {
119
+ if (!references.some((reference) => reference.path === referencePath)) {
120
+ references.push({ path: referencePath });
121
+ }
122
+ }
123
+ return { ...tsconfig, references };
124
+ }
125
+ function blueprintWithPackage(blueprint, packageName, packagePath) {
126
+ const nextBlueprint = {
127
+ ...blueprint,
128
+ packages: [
129
+ ...(blueprint.packages ?? []),
130
+ { name: packageName, path: packagePath },
131
+ ],
132
+ };
133
+ const result = validateProjectBlueprint(nextBlueprint);
134
+ if (!result.ok) {
135
+ throw new Error("Package Addition would write an invalid .project-kit/blueprint.json");
136
+ }
137
+ return result.value;
138
+ }
139
+ async function planRootUpdates(root, blueprint, packageName, packagePath, workspacePackageGlob, rootTsconfigReferences) {
140
+ const workspaceText = workspaceTextWithPackageGlob(await readFile(path.join(root, "pnpm-workspace.yaml"), "utf8"), workspacePackageGlob);
141
+ const rootTsconfig = rootTsconfigWithReferences(await readJson(path.join(root, "tsconfig.json")), rootTsconfigReferences);
142
+ return {
143
+ blueprint: blueprintWithPackage(blueprint, packageName, packagePath),
144
+ rootTsconfig,
145
+ workspaceText,
146
+ };
147
+ }
148
+ export async function addPackage(options) {
149
+ assertSafePackageLeaf(options.name);
150
+ const root = path.resolve(options.cwd);
151
+ const blueprint = await readGeneratedWorkspaceBlueprint(root);
152
+ const nodeVersion = await readGeneratedRepositoryNodeVersion(root);
153
+ const projectName = projectNameFromBlueprint(blueprint);
154
+ const packageName = `@${projectName}/${options.name}`;
155
+ const projection = findBuiltInPresetProjection(options.preset);
156
+ const packageAddition = projection?.capabilities?.packageAddition;
157
+ if (!projection) {
158
+ throw new Error(`Unknown preset for Package Addition: ${options.preset}`);
159
+ }
160
+ if (!packageAddition) {
161
+ throw new Error(`Package Addition is not supported by preset: ${options.preset}`);
162
+ }
163
+ const additionPlan = await packageAddition.planPackageAddition({
164
+ root,
165
+ blueprint,
166
+ packageLeafName: options.name,
167
+ packageName,
168
+ nodeVersion,
169
+ });
170
+ if (blueprint.packages?.some((pkg) => pkg.name === packageName || pkg.path === additionPlan.packagePath)) {
171
+ throw new Error(`Package Addition conflicts with an existing package definition: ${packageName}`);
172
+ }
173
+ await assertMissing(path.join(root, additionPlan.packagePath));
174
+ const rootUpdatePlan = await planRootUpdates(root, blueprint, packageName, additionPlan.packagePath, additionPlan.workspacePackageGlob, additionPlan.rootTsconfigReferences);
175
+ await mkdir(path.join(root, additionPlan.packagePath), { recursive: true });
176
+ await renderProject({
177
+ sourceRoot: additionPlan.sourceRoot,
178
+ sourceRoots: additionPlan.sourceRoots,
179
+ targetRoot: root,
180
+ operations: [...additionPlan.operations],
181
+ });
182
+ for (const textFile of additionPlan.textFiles ?? []) {
183
+ await writeFile(resolveGeneratedPath(root, textFile.path), textFile.text, "utf8");
184
+ }
185
+ await writeFile(path.join(root, "pnpm-workspace.yaml"), rootUpdatePlan.workspaceText, "utf8");
186
+ await writeJson(path.join(root, "tsconfig.json"), rootUpdatePlan.rootTsconfig);
187
+ await writeJson(path.join(root, ".project-kit/blueprint.json"), rootUpdatePlan.blueprint);
188
+ }
@@ -0,0 +1,66 @@
1
+ import type { BuiltInPreset, ProjectBlueprint } from "./declarations.js";
2
+ import type { GenerationContext } from "./generation-context.js";
3
+ import { type CheckPlan, type FixPlan } from "./module-graph.js";
4
+ import { type NextStepInstruction } from "./next-step-instructions.js";
5
+ import type { DependencyMaintenancePolicy } from "./project-github.js";
6
+ import type { RenderOperation } from "./renderer.js";
7
+ export type PresetPackageAdditionOptions = {
8
+ readonly root: string;
9
+ readonly blueprint: ProjectBlueprint;
10
+ readonly packageLeafName: string;
11
+ readonly packageName: string;
12
+ readonly nodeVersion: string;
13
+ };
14
+ export type PresetPackageAdditionPlan = {
15
+ readonly packagePath: string;
16
+ readonly workspacePackageGlob: string;
17
+ readonly rootTsconfigReferences: readonly string[];
18
+ readonly sourceRoot: string;
19
+ readonly sourceRoots?: Record<string, string>;
20
+ readonly operations: readonly RenderOperation[];
21
+ readonly textFiles?: readonly {
22
+ readonly path: string;
23
+ readonly text: string;
24
+ }[];
25
+ };
26
+ export type PresetPackageAdditionCapability = {
27
+ planPackageAddition(options: PresetPackageAdditionOptions): PresetPackageAdditionPlan | Promise<PresetPackageAdditionPlan>;
28
+ };
29
+ export type PresetProjectionPlan = {
30
+ readonly sourceRoot: string;
31
+ readonly sourceRoots?: Record<string, string>;
32
+ readonly operations: readonly RenderOperation[];
33
+ readonly checkPlan: CheckPlan;
34
+ readonly fixPlan: FixPlan;
35
+ readonly dependencyMaintenancePolicy: DependencyMaintenancePolicy;
36
+ readonly packageScripts: Record<string, string>;
37
+ readonly capabilities: {
38
+ readonly rootCheck: true;
39
+ readonly fixCommand: true;
40
+ readonly githubActions: true;
41
+ readonly dependabot: true;
42
+ readonly devcontainer: true;
43
+ };
44
+ };
45
+ export type PresetBlueprintOptions = {
46
+ readonly targetDir: string;
47
+ readonly scope?: string;
48
+ };
49
+ export type RenderPresetProjectionOptions = {
50
+ readonly targetDir: string;
51
+ readonly plan: PresetProjectionPlan;
52
+ };
53
+ export type PresetProjection = {
54
+ readonly metadata: BuiltInPreset;
55
+ readonly capabilities?: {
56
+ readonly packageAddition?: PresetPackageAdditionCapability;
57
+ };
58
+ blueprint(options: PresetBlueprintOptions): ProjectBlueprint;
59
+ project(context: GenerationContext): PresetProjectionPlan;
60
+ render(options: RenderPresetProjectionOptions): Promise<void>;
61
+ };
62
+ export declare function planNextStepInstructionsForProjection(options: {
63
+ readonly targetDir: string;
64
+ readonly plan: PresetProjectionPlan;
65
+ }): readonly NextStepInstruction[];
66
+ //# sourceMappingURL=preset-projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preset-projection.d.ts","sourceRoot":"","sources":["../../src/preset-projection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { planNextStepInstructions, } from "./next-step-instructions.js";
2
+ export function planNextStepInstructionsForProjection(options) {
3
+ return planNextStepInstructions({
4
+ targetDir: options.targetDir,
5
+ projectionPlan: options.plan,
6
+ }).steps;
7
+ }
@@ -1,4 +1,3 @@
1
- import type { PresetName } from "./declarations.js";
2
1
  import { type CheckPlan } from "./module-graph.js";
3
2
  export type CiCapability = {
4
3
  readonly workflowName: "Check";
@@ -23,14 +22,8 @@ type ProjectCheckWorkflowOptions = {
23
22
  readonly capability?: CiCapability;
24
23
  readonly environmentPreparation?: Partial<CiEnvironmentPreparation>;
25
24
  readonly taskLayer?: PnpmTaskLayer;
26
- readonly rustToolchain?: boolean;
27
25
  };
28
- export declare function projectPresetGithubCheckWorkflow(preset: PresetName): string;
29
26
  export declare function projectCheckWorkflow(options: ProjectCheckWorkflowOptions): string;
30
- export declare function projectPresetDependencyMaintenancePolicy(preset: PresetName): DependencyMaintenancePolicy;
31
- export declare function projectPresetDependabotConfig(preset: PresetName): string;
32
27
  export declare function projectDependabotConfig(policy: DependencyMaintenancePolicy): string;
33
- export declare function projectTsLibGithubCheckWorkflow(): string;
34
- export declare function projectRustBinGithubCheckWorkflow(): string;
35
28
  export {};
36
29
  //# sourceMappingURL=project-github.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-github.d.ts","sourceRoot":"","sources":["../../src/project-github.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9E,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,OAAO,GAAG,gBAAgB,CAAC;AAErE,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,CAAC,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC7B,CAAC;AAEF,KAAK,2BAA2B,GAAG;IACjC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC;IACnC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACpE,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC;CACpC,CAAC;AAaF,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,2BAA2B,GACnC,MAAM,CAmDR;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,2BAA2B,GAClC,MAAM,CAYR"}
@@ -1,4 +1,3 @@
1
- import { planNodeChecks, planPresetChecks, planRustBinChecks, } from "./module-graph.js";
2
1
  const defaultCiCapability = {
3
2
  workflowName: "Check",
4
3
  jobName: "check",
@@ -8,21 +7,11 @@ const pnpmTaskLayer = {
8
7
  installCommand: "pnpm install",
9
8
  checkCommand: "pnpm run check",
10
9
  };
11
- export function projectPresetGithubCheckWorkflow(preset) {
12
- const checkPlan = planPresetChecks(preset);
13
- if (!checkPlan) {
14
- throw new Error(`Unsupported preset for GitHub check workflow projection: ${preset}`);
15
- }
16
- return projectCheckWorkflow({
17
- checkPlan,
18
- rustToolchain: preset === "rust-bin",
19
- });
20
- }
21
10
  export function projectCheckWorkflow(options) {
22
11
  const capability = options.capability ?? defaultCiCapability;
23
12
  const environmentPreparation = {
24
13
  nodeFromPackageMetadata: true,
25
- rustToolchain: options.rustToolchain ?? false,
14
+ rustToolchain: false,
26
15
  ...options.environmentPreparation,
27
16
  };
28
17
  const taskLayer = options.taskLayer ?? pnpmTaskLayer;
@@ -52,23 +41,6 @@ export function projectCheckWorkflow(options) {
52
41
  lines.push(` - run: ${taskLayer.checkCommand}`, "");
53
42
  return lines.join("\n");
54
43
  }
55
- export function projectPresetDependencyMaintenancePolicy(preset) {
56
- switch (preset) {
57
- case "ts-lib":
58
- case "hono-api":
59
- case "vue-app":
60
- case "vue-hono-app":
61
- return { ecosystems: ["npm", "github-actions"], interval: "weekly" };
62
- case "rust-bin":
63
- return { ecosystems: ["npm", "cargo", "github-actions"], interval: "weekly" };
64
- case "ts-app":
65
- case "node-cli":
66
- throw new Error(`Unsupported preset for Dependency Maintenance Policy projection: ${preset}`);
67
- }
68
- }
69
- export function projectPresetDependabotConfig(preset) {
70
- return projectDependabotConfig(projectPresetDependencyMaintenancePolicy(preset));
71
- }
72
44
  export function projectDependabotConfig(policy) {
73
45
  return [
74
46
  "version: 2",
@@ -83,14 +55,9 @@ export function projectDependabotConfig(policy) {
83
55
  ].join("\n");
84
56
  }
85
57
  function renderCiEnvironmentNeedCommand(need) {
86
- if (need.kind === "playwright-browser-assets" && need.owner.path === "apps/web") {
58
+ if (need.kind === "playwright-browser-assets" &&
59
+ need.owner.path === "apps/web") {
87
60
  return `pnpm --filter ./apps/web exec playwright install --with-deps ${need.browser}`;
88
61
  }
89
62
  return `pnpm exec playwright install --with-deps ${need.browser}`;
90
63
  }
91
- export function projectTsLibGithubCheckWorkflow() {
92
- return projectCheckWorkflow({ checkPlan: planNodeChecks("ts-lib") });
93
- }
94
- export function projectRustBinGithubCheckWorkflow() {
95
- return projectCheckWorkflow({ checkPlan: planRustBinChecks(), rustToolchain: true });
96
- }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/renderer.ts"],"names":[],"mappings":"AAgBA,KAAK,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,OAAO,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,eAAe,GACvB,iBAAiB,GACjB,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,sBAAsB,GACtB,uBAAuB,CAAC;AAE5B,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,UAAU,EAAE,eAAe,EAAE,CAAC;CAC/B,CAAC;AAmfF,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkChF;AAiCD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBnF"}
@@ -0,0 +1,2 @@
1
+ export declare function packageTemplateRoot(moduleDir: string, ...segments: string[]): string;
2
+ //# sourceMappingURL=runtime-paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-paths.d.ts","sourceRoot":"","sources":["../../src/runtime-paths.ts"],"names":[],"mappings":"AAGA,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,GAAG,QAAQ,EAAE,MAAM,EAAE,GACpB,MAAM,CASR"}
@@ -0,0 +1,11 @@
1
+ import { existsSync } from "node:fs";
2
+ import path from "node:path";
3
+ export function packageTemplateRoot(moduleDir, ...segments) {
4
+ const candidates = [
5
+ path.join(moduleDir, "..", "..", "templates", ...segments),
6
+ path.join(moduleDir, "..", "templates", ...segments),
7
+ path.join(moduleDir, "..", "..", "..", "templates", ...segments),
8
+ ];
9
+ const found = candidates.find((candidate) => existsSync(candidate));
10
+ return found ?? candidates[0];
11
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolchain-resolution.d.ts","sourceRoot":"","sources":["../../src/toolchain-resolution.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG,kBAAkB,CAAC;AAEtE,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,QAAQ,MAAM,EAAE,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,yBAAyB,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,yBAAyB,GAAG,MAAM,CAAC;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF,eAAO,MAAM,mBAAmB,uCAAuC,CAAC;AACxE,eAAO,MAAM,eAAe,oCAAoC,CAAC;AAEjE,KAAK,wCAAwC,GAAG;IAC9C,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxD,CAAC;AAEF,MAAM,MAAM,uCAAuC,GAAG;IACpD,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;CAChC,CAAC;AAmBF,wBAAsB,wBAAwB,CAC5C,OAAO,GAAE,+BAAoC,GAC5C,OAAO,CAAC,yBAAyB,CAAC,CAiCpC;AAED,wBAAsB,sCAAsC,CAC1D,OAAO,GAAE,wCAA6C,GACrD,OAAO,CAAC,uCAAuC,CAAC,CAwBlD"}
@@ -1,7 +1,7 @@
1
1
  export const nodeReleaseIndexUrl = "https://nodejs.org/dist/index.json";
2
2
  export const pnpmRegistryUrl = "https://registry.npmjs.org/pnpm";
3
3
  const bundledFallbackToolchain = {
4
- nodeLtsMajor: nodeLtsMajor("22"),
4
+ nodeLtsMajor: nodeLtsMajor("24"),
5
5
  packageManagerPin: packageManagerPin("10.0.0"),
6
6
  };
7
7
  export async function resolveToolchainVersions(options = {}) {
@@ -0,0 +1,7 @@
1
+ import type { BuiltInPreset, ProjectBlueprint } from "../../src/declarations.js";
2
+ import type { PresetProjection } from "../../src/preset-projection.js";
3
+ export declare const honoApiPresetMetadata: BuiltInPreset;
4
+ export declare function honoApiBlueprint(): ProjectBlueprint;
5
+ export declare function projectHonoApiPackageScripts(): Record<string, string>;
6
+ export declare const honoApiPresetProjection: PresetProjection;
7
+ //# sourceMappingURL=projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../../../templates/hono-api/projection.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EACjB,MAAM,2BAA2B,CAAC;AAUnC,OAAO,KAAK,EAGV,gBAAgB,EAEjB,MAAM,gCAAgC,CAAC;AAexC,eAAO,MAAM,qBAAqB,EAAE,aAiBnC,CAAC;AAOF,wBAAgB,gBAAgB,IAAI,gBAAgB,CAQnD;AAED,wBAAgB,4BAA4B,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAarE;AAoUD,eAAO,MAAM,uBAAuB,EAAE,gBA4CrC,CAAC"}