swallowkit 1.0.0-beta.9 → 1.0.1
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/README.ja.md +87 -181
- package/README.md +87 -238
- package/dist/__tests__/fixtures.d.ts +12 -0
- package/dist/__tests__/fixtures.d.ts.map +1 -1
- package/dist/__tests__/fixtures.js +101 -0
- package/dist/__tests__/fixtures.js.map +1 -1
- package/dist/cli/commands/add-auth.d.ts +15 -0
- package/dist/cli/commands/add-auth.d.ts.map +1 -0
- package/dist/cli/commands/add-auth.js +790 -0
- package/dist/cli/commands/add-auth.js.map +1 -0
- package/dist/cli/commands/add-connector.d.ts +20 -0
- package/dist/cli/commands/add-connector.d.ts.map +1 -0
- package/dist/cli/commands/add-connector.js +164 -0
- package/dist/cli/commands/add-connector.js.map +1 -0
- package/dist/cli/commands/cosmos-worktree-isolation.d.ts +25 -0
- package/dist/cli/commands/cosmos-worktree-isolation.d.ts.map +1 -0
- package/dist/cli/commands/cosmos-worktree-isolation.js +124 -0
- package/dist/cli/commands/cosmos-worktree-isolation.js.map +1 -0
- package/dist/cli/commands/create-model.d.ts +1 -4
- package/dist/cli/commands/create-model.d.ts.map +1 -1
- package/dist/cli/commands/create-model.js +20 -82
- package/dist/cli/commands/create-model.js.map +1 -1
- package/dist/cli/commands/dev-seeds.d.ts +27 -0
- package/dist/cli/commands/dev-seeds.d.ts.map +1 -1
- package/dist/cli/commands/dev-seeds.js +188 -6
- package/dist/cli/commands/dev-seeds.js.map +1 -1
- package/dist/cli/commands/dev.d.ts +30 -0
- package/dist/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/commands/dev.js +495 -129
- package/dist/cli/commands/dev.js.map +1 -1
- package/dist/cli/commands/init.d.ts +69 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +788 -766
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/scaffold.d.ts +24 -3
- package/dist/cli/commands/scaffold.d.ts.map +1 -1
- package/dist/cli/commands/scaffold.js +408 -189
- package/dist/cli/commands/scaffold.js.map +1 -1
- package/dist/cli/index.d.ts +5 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +335 -58
- package/dist/cli/index.js.map +1 -1
- package/dist/core/config.d.ts +13 -3
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +151 -8
- package/dist/core/config.js.map +1 -1
- package/dist/core/mock/connector-mock-server.d.ts +101 -0
- package/dist/core/mock/connector-mock-server.d.ts.map +1 -0
- package/dist/core/mock/connector-mock-server.js +480 -0
- package/dist/core/mock/connector-mock-server.js.map +1 -0
- package/dist/core/mock/zod-mock-generator.d.ts +14 -0
- package/dist/core/mock/zod-mock-generator.d.ts.map +1 -0
- package/dist/core/mock/zod-mock-generator.js +163 -0
- package/dist/core/mock/zod-mock-generator.js.map +1 -0
- package/dist/core/operations/auth-operations.d.ts +61 -0
- package/dist/core/operations/auth-operations.d.ts.map +1 -0
- package/dist/core/operations/auth-operations.js +272 -0
- package/dist/core/operations/auth-operations.js.map +1 -0
- package/dist/core/operations/create-model.d.ts +15 -0
- package/dist/core/operations/create-model.d.ts.map +1 -0
- package/dist/core/operations/create-model.js +185 -0
- package/dist/core/operations/create-model.js.map +1 -0
- package/dist/core/operations/file-session.d.ts +56 -0
- package/dist/core/operations/file-session.d.ts.map +1 -0
- package/dist/core/operations/file-session.js +203 -0
- package/dist/core/operations/file-session.js.map +1 -0
- package/dist/core/operations/provision-operations.d.ts +52 -0
- package/dist/core/operations/provision-operations.d.ts.map +1 -0
- package/dist/core/operations/provision-operations.js +211 -0
- package/dist/core/operations/provision-operations.js.map +1 -0
- package/dist/core/operations/runtime.d.ts +37 -0
- package/dist/core/operations/runtime.d.ts.map +1 -0
- package/dist/core/operations/runtime.js +248 -0
- package/dist/core/operations/runtime.js.map +1 -0
- package/dist/core/operations/scaffold-apply.d.ts +21 -0
- package/dist/core/operations/scaffold-apply.d.ts.map +1 -0
- package/dist/core/operations/scaffold-apply.js +57 -0
- package/dist/core/operations/scaffold-apply.js.map +1 -0
- package/dist/core/operations/scaffold-machine.d.ts +16 -0
- package/dist/core/operations/scaffold-machine.d.ts.map +1 -0
- package/dist/core/operations/scaffold-machine.js +51 -0
- package/dist/core/operations/scaffold-machine.js.map +1 -0
- package/dist/core/operations/scaffold-plan.d.ts +43 -0
- package/dist/core/operations/scaffold-plan.d.ts.map +1 -0
- package/dist/core/operations/scaffold-plan.js +187 -0
- package/dist/core/operations/scaffold-plan.js.map +1 -0
- package/dist/core/project/agent-instructions.d.ts +29 -0
- package/dist/core/project/agent-instructions.d.ts.map +1 -0
- package/dist/core/project/agent-instructions.js +160 -0
- package/dist/core/project/agent-instructions.js.map +1 -0
- package/dist/core/project/artifacts.d.ts +58 -0
- package/dist/core/project/artifacts.d.ts.map +1 -0
- package/dist/core/project/artifacts.js +179 -0
- package/dist/core/project/artifacts.js.map +1 -0
- package/dist/core/project/boundaries.d.ts +50 -0
- package/dist/core/project/boundaries.d.ts.map +1 -0
- package/dist/core/project/boundaries.js +117 -0
- package/dist/core/project/boundaries.js.map +1 -0
- package/dist/core/project/capabilities.d.ts +58 -0
- package/dist/core/project/capabilities.d.ts.map +1 -0
- package/dist/core/project/capabilities.js +135 -0
- package/dist/core/project/capabilities.js.map +1 -0
- package/dist/core/project/drift.d.ts +29 -0
- package/dist/core/project/drift.d.ts.map +1 -0
- package/dist/core/project/drift.js +190 -0
- package/dist/core/project/drift.js.map +1 -0
- package/dist/core/project/infra.d.ts +49 -0
- package/dist/core/project/infra.d.ts.map +1 -0
- package/dist/core/project/infra.js +167 -0
- package/dist/core/project/infra.js.map +1 -0
- package/dist/core/project/manifest.d.ts +92 -0
- package/dist/core/project/manifest.d.ts.map +1 -0
- package/dist/core/project/manifest.js +321 -0
- package/dist/core/project/manifest.js.map +1 -0
- package/dist/core/project/state.d.ts +15 -0
- package/dist/core/project/state.d.ts.map +1 -0
- package/dist/core/project/state.js +106 -0
- package/dist/core/project/state.js.map +1 -0
- package/dist/core/project/validation.d.ts +20 -0
- package/dist/core/project/validation.d.ts.map +1 -0
- package/dist/core/project/validation.js +274 -0
- package/dist/core/project/validation.js.map +1 -0
- package/dist/core/project/workflows.d.ts +43 -0
- package/dist/core/project/workflows.d.ts.map +1 -0
- package/dist/core/project/workflows.js +299 -0
- package/dist/core/project/workflows.js.map +1 -0
- package/dist/core/scaffold/auth-generator.d.ts +63 -0
- package/dist/core/scaffold/auth-generator.d.ts.map +1 -0
- package/dist/core/scaffold/auth-generator.js +1774 -0
- package/dist/core/scaffold/auth-generator.js.map +1 -0
- package/dist/core/scaffold/connector-functions-generator.d.ts +41 -0
- package/dist/core/scaffold/connector-functions-generator.d.ts.map +1 -0
- package/dist/core/scaffold/connector-functions-generator.js +1029 -0
- package/dist/core/scaffold/connector-functions-generator.js.map +1 -0
- package/dist/core/scaffold/functions-generator.d.ts +4 -3
- package/dist/core/scaffold/functions-generator.d.ts.map +1 -1
- package/dist/core/scaffold/functions-generator.js +405 -134
- package/dist/core/scaffold/functions-generator.js.map +1 -1
- package/dist/core/scaffold/model-parser.d.ts +20 -0
- package/dist/core/scaffold/model-parser.d.ts.map +1 -1
- package/dist/core/scaffold/model-parser.js +229 -78
- package/dist/core/scaffold/model-parser.js.map +1 -1
- package/dist/core/scaffold/native-schema-generator.d.ts +19 -0
- package/dist/core/scaffold/native-schema-generator.d.ts.map +1 -0
- package/dist/core/scaffold/native-schema-generator.js +753 -0
- package/dist/core/scaffold/native-schema-generator.js.map +1 -0
- package/dist/core/scaffold/nextjs-generator.d.ts +8 -0
- package/dist/core/scaffold/nextjs-generator.d.ts.map +1 -1
- package/dist/core/scaffold/nextjs-generator.js +152 -8
- package/dist/core/scaffold/nextjs-generator.js.map +1 -1
- package/dist/core/scaffold/ui-generator.d.ts +17 -4
- package/dist/core/scaffold/ui-generator.d.ts.map +1 -1
- package/dist/core/scaffold/ui-generator.js +174 -34
- package/dist/core/scaffold/ui-generator.js.map +1 -1
- package/dist/core/verify/index.d.ts +69 -0
- package/dist/core/verify/index.d.ts.map +1 -0
- package/dist/core/verify/index.js +412 -0
- package/dist/core/verify/index.js.map +1 -0
- package/dist/machine/contracts.d.ts +24 -0
- package/dist/machine/contracts.d.ts.map +1 -0
- package/dist/machine/contracts.js +3 -0
- package/dist/machine/contracts.js.map +1 -0
- package/dist/machine/errors.d.ts +14 -0
- package/dist/machine/errors.d.ts.map +1 -0
- package/dist/machine/errors.js +42 -0
- package/dist/machine/errors.js.map +1 -0
- package/dist/machine/index.d.ts +3 -0
- package/dist/machine/index.d.ts.map +1 -0
- package/dist/machine/index.js +566 -0
- package/dist/machine/index.js.map +1 -0
- package/dist/mcp/index.d.ts +25 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +425 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/types/index.d.ts +105 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/package-manager.d.ts +7 -11
- package/dist/utils/package-manager.d.ts.map +1 -1
- package/dist/utils/package-manager.js +42 -17
- package/dist/utils/package-manager.js.map +1 -1
- package/dist/utils/python-uv.d.ts +21 -0
- package/dist/utils/python-uv.d.ts.map +1 -0
- package/dist/utils/python-uv.js +111 -0
- package/dist/utils/python-uv.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +49 -0
- package/dist/version.js.map +1 -0
- package/package.json +15 -17
- package/src/__tests__/__snapshots__/functions-generator.test.ts.snap +716 -22
- package/src/__tests__/__snapshots__/nextjs-generator.test.ts.snap +19 -7
- package/src/__tests__/__snapshots__/ui-generator.test.ts.snap +20 -12
- package/src/__tests__/agent-instructions.test.ts +237 -0
- package/src/__tests__/agent-loop-phase34.test.ts +619 -0
- package/src/__tests__/auth.test.ts +770 -0
- package/src/__tests__/bff-swa-auth.test.ts +275 -0
- package/src/__tests__/config.test.ts +176 -3
- package/src/__tests__/connector-functions-generator.test.ts +288 -0
- package/src/__tests__/connector-mock-server.test.ts +459 -0
- package/src/__tests__/connector-model-bff.test.ts +162 -0
- package/src/__tests__/cosmos-worktree-isolation.test.ts +149 -0
- package/src/__tests__/dev-seeds.test.ts +124 -0
- package/src/__tests__/dev.test.ts +254 -0
- package/src/__tests__/file-session.test.ts +98 -0
- package/src/__tests__/fixtures.ts +101 -0
- package/src/__tests__/functions-generator.test.ts +137 -1
- package/src/__tests__/init.test.ts +366 -2
- package/src/__tests__/jest-globals.d.ts +8 -0
- package/src/__tests__/machine.test.ts +371 -0
- package/src/__tests__/mcp.test.ts +253 -0
- package/src/__tests__/model-parser.test.ts +142 -0
- package/src/__tests__/multi-auth.test.ts +160 -0
- package/src/__tests__/nextjs-generator.test.ts +8 -0
- package/src/__tests__/package-manager.test.ts +59 -4
- package/src/__tests__/plan-apply.test.ts +499 -0
- package/src/__tests__/python-uv.test.ts +48 -0
- package/src/__tests__/scaffold.test.ts +287 -24
- package/src/__tests__/tsconfig.json +15 -0
- package/src/__tests__/ui-generator.test.ts +104 -0
- package/src/__tests__/zod-mock-generator.test.ts +132 -0
- package/src/cli/commands/add-auth.ts +853 -0
- package/src/cli/commands/add-connector.ts +159 -0
- package/src/cli/commands/cosmos-worktree-isolation.ts +130 -0
- package/src/cli/commands/create-model.ts +21 -100
- package/src/cli/commands/dev-seeds.ts +278 -7
- package/src/cli/commands/dev.ts +607 -160
- package/src/cli/commands/init.ts +851 -786
- package/src/cli/commands/scaffold.ts +531 -236
- package/src/cli/index.ts +338 -60
- package/src/core/config.ts +145 -9
- package/src/core/mock/connector-mock-server.ts +555 -0
- package/src/core/mock/zod-mock-generator.ts +205 -0
- package/src/core/operations/auth-operations.ts +360 -0
- package/src/core/operations/create-model.ts +191 -0
- package/src/core/operations/file-session.ts +222 -0
- package/src/core/operations/provision-operations.ts +297 -0
- package/src/core/operations/runtime.ts +258 -0
- package/src/core/operations/scaffold-apply.ts +106 -0
- package/src/core/operations/scaffold-machine.ts +77 -0
- package/src/core/operations/scaffold-plan.ts +215 -0
- package/src/core/project/agent-instructions.ts +167 -0
- package/src/core/project/agent-templates/AGENTS.md +504 -0
- package/src/core/project/agent-templates/CLAUDE.md +31 -0
- package/src/core/project/agent-templates/azure-functions.instructions.md +22 -0
- package/src/core/project/agent-templates/bff-routes.instructions.md +18 -0
- package/src/core/project/agent-templates/copilot-instructions.md +27 -0
- package/src/core/project/agent-templates/shared-models.instructions.md +72 -0
- package/src/core/project/artifacts.ts +205 -0
- package/src/core/project/boundaries.ts +170 -0
- package/src/core/project/capabilities.ts +193 -0
- package/src/core/project/drift.ts +203 -0
- package/src/core/project/infra.ts +196 -0
- package/src/core/project/manifest.ts +402 -0
- package/src/core/project/state.ts +77 -0
- package/src/core/project/validation.ts +295 -0
- package/src/core/project/workflows.ts +295 -0
- package/src/core/scaffold/auth-generator.ts +1824 -0
- package/src/core/scaffold/connector-functions-generator.ts +1133 -0
- package/src/core/scaffold/functions-generator.ts +432 -134
- package/src/core/scaffold/model-parser.ts +244 -90
- package/src/core/scaffold/native-schema-generator.ts +904 -0
- package/src/core/scaffold/nextjs-generator.ts +174 -9
- package/src/core/scaffold/ui-generator.ts +191 -36
- package/src/core/verify/index.ts +468 -0
- package/src/machine/contracts.ts +33 -0
- package/src/machine/errors.ts +45 -0
- package/src/machine/index.ts +690 -0
- package/src/mcp/index.ts +423 -0
- package/src/types/index.ts +137 -0
- package/src/utils/package-manager.ts +41 -19
- package/src/utils/python-uv.ts +96 -0
- package/src/version.ts +13 -0
|
@@ -30,13 +30,13 @@ export interface PackageManagerCommands {
|
|
|
30
30
|
dlx: string;
|
|
31
31
|
/** Run a script: "pnpm run" / "npm run" */
|
|
32
32
|
run: string;
|
|
33
|
-
/** Run a script with filter: "pnpm
|
|
33
|
+
/** Run a script with filter: "pnpm --filter <ws> run" / "npm run --workspace=<ws>" */
|
|
34
34
|
runFilter: (workspace: string) => string;
|
|
35
35
|
/** Start script: "pnpm start" / "npm start" */
|
|
36
36
|
start: string;
|
|
37
37
|
/** Install production only (in temp dir for CI): "pnpm install --prod" / "npm install --omit=dev" */
|
|
38
38
|
installProd: string;
|
|
39
|
-
/** create-next-app flag: "--use-pnpm" /
|
|
39
|
+
/** create-next-app flag: "--use-pnpm" / "--use-npm" */
|
|
40
40
|
createNextAppFlag: string | null;
|
|
41
41
|
}
|
|
42
42
|
|
|
@@ -55,9 +55,9 @@ export function getCommands(pm: PackageManager): PackageManagerCommands {
|
|
|
55
55
|
exec: "pnpm exec",
|
|
56
56
|
dlx: "pnpm dlx",
|
|
57
57
|
run: "pnpm run",
|
|
58
|
-
runFilter: (ws) => `pnpm
|
|
58
|
+
runFilter: (ws) => `pnpm --filter ${ws} run`,
|
|
59
59
|
start: "pnpm start",
|
|
60
|
-
installProd: "pnpm install --prod",
|
|
60
|
+
installProd: "pnpm install --prod --no-frozen-lockfile",
|
|
61
61
|
createNextAppFlag: "--use-pnpm",
|
|
62
62
|
};
|
|
63
63
|
}
|
|
@@ -76,23 +76,20 @@ export function getCommands(pm: PackageManager): PackageManagerCommands {
|
|
|
76
76
|
runFilter: (ws) => `npm run --workspace=${ws}`,
|
|
77
77
|
start: "npm start",
|
|
78
78
|
installProd: "npm install --omit=dev",
|
|
79
|
-
createNextAppFlag:
|
|
79
|
+
createNextAppFlag: "--use-npm",
|
|
80
80
|
};
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
/**
|
|
84
84
|
* Detect the preferred package manager for new project initialisation.
|
|
85
85
|
*
|
|
86
|
-
*
|
|
87
|
-
* 1. If pnpm is installed on the system → always use pnpm
|
|
88
|
-
* (even when invoked via `npx`, since `npx` is often used out of habit)
|
|
89
|
-
* 2. Otherwise → npm
|
|
90
|
-
*
|
|
91
|
-
* This is intentionally independent of `npm_config_user_agent` so that
|
|
92
|
-
* `npx swallowkit init` still creates a pnpm project when pnpm is available.
|
|
86
|
+
* Honor the invoking package manager before falling back to available binaries.
|
|
93
87
|
*/
|
|
94
|
-
export function detectFromUserAgent(): PackageManager {
|
|
95
|
-
|
|
88
|
+
export function detectFromUserAgent(pnpmIsInstalled: () => boolean = isPnpmInstalled): PackageManager {
|
|
89
|
+
const agent = process.env.npm_config_user_agent || "";
|
|
90
|
+
if (agent.startsWith("pnpm/")) return "pnpm";
|
|
91
|
+
if (agent.startsWith("npm/")) return "npm";
|
|
92
|
+
return pnpmIsInstalled() ? "pnpm" : "npm";
|
|
96
93
|
}
|
|
97
94
|
|
|
98
95
|
/**
|
|
@@ -111,11 +108,18 @@ function isPnpmInstalled(): boolean {
|
|
|
111
108
|
* Detect the package manager used in an existing project directory
|
|
112
109
|
* by checking for lockfiles.
|
|
113
110
|
*
|
|
114
|
-
* Priority:
|
|
111
|
+
* Priority: explicit project metadata > lockfiles > workspace config > invocation/binaries
|
|
115
112
|
*/
|
|
116
113
|
export function detectFromProject(projectDir?: string): PackageManager {
|
|
117
114
|
const dir = projectDir || process.cwd();
|
|
118
115
|
|
|
116
|
+
const manifestPath = path.join(dir, "package.json");
|
|
117
|
+
if (fs.existsSync(manifestPath)) {
|
|
118
|
+
const manifest = JSON.parse(fs.readFileSync(manifestPath, "utf8"));
|
|
119
|
+
const manager = manifest.devEngines?.packageManager?.name || manifest.packageManager?.split("@")[0];
|
|
120
|
+
if (manager === "npm" || manager === "pnpm") return manager;
|
|
121
|
+
}
|
|
122
|
+
|
|
119
123
|
if (fs.existsSync(path.join(dir, "pnpm-lock.yaml"))) {
|
|
120
124
|
return "pnpm";
|
|
121
125
|
}
|
|
@@ -124,6 +128,7 @@ export function detectFromProject(projectDir?: string): PackageManager {
|
|
|
124
128
|
}
|
|
125
129
|
|
|
126
130
|
// No lockfile found — fall back to user agent detection
|
|
131
|
+
if (fs.existsSync(path.join(dir, "pnpm-workspace.yaml"))) return "pnpm";
|
|
127
132
|
return detectFromUserAgent();
|
|
128
133
|
}
|
|
129
134
|
|
|
@@ -151,7 +156,7 @@ export function getWorkspaceConfig(pm: PackageManager, workspaces: string[]) {
|
|
|
151
156
|
/** pnpm uses pnpm-workspace.yaml */
|
|
152
157
|
type: "file" as const,
|
|
153
158
|
filename: "pnpm-workspace.yaml",
|
|
154
|
-
content: `packages:\n${workspaces.map((w) => ` - ${w}`).join("\n")}\n`,
|
|
159
|
+
content: `packages:\n${workspaces.map((w) => ` - ${w}`).join("\n")}\nallowBuilds:\n protobufjs: false\n unrs-resolver: false\n`,
|
|
155
160
|
};
|
|
156
161
|
}
|
|
157
162
|
|
|
@@ -169,12 +174,29 @@ export function getWorkspaceConfig(pm: PackageManager, workspaces: string[]) {
|
|
|
169
174
|
export function getCiSetupStep(pm: PackageManager): string {
|
|
170
175
|
if (pm === "pnpm") {
|
|
171
176
|
return ` - name: Setup pnpm
|
|
172
|
-
uses: pnpm/action-setup@v4
|
|
177
|
+
uses: pnpm/action-setup@v4
|
|
178
|
+
with:
|
|
179
|
+
version: 11`;
|
|
173
180
|
}
|
|
174
181
|
// npm: no extra setup needed (comes with Node.js)
|
|
175
182
|
return "";
|
|
176
183
|
}
|
|
177
184
|
|
|
185
|
+
export function getCiInstallCommand(ciPm: PackageManager, projectPm: PackageManager = ciPm): string {
|
|
186
|
+
void projectPm; // Reserved for package-manager-specific CI bridging.
|
|
187
|
+
if (ciPm === "pnpm") {
|
|
188
|
+
return getCommands(ciPm).ci;
|
|
189
|
+
}
|
|
190
|
+
return getCommands(ciPm).ci;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
export function getSwaAppBuildCommand(ciPm: PackageManager, projectPm: PackageManager = ciPm): string {
|
|
194
|
+
if (ciPm === "pnpm") {
|
|
195
|
+
return "pnpm install --frozen-lockfile && pnpm run build";
|
|
196
|
+
}
|
|
197
|
+
return `${getCiInstallCommand(ciPm, projectPm)} && npm run build`;
|
|
198
|
+
}
|
|
199
|
+
|
|
178
200
|
/**
|
|
179
201
|
* CI/CD setup steps for Azure Pipelines
|
|
180
202
|
*/
|
|
@@ -182,7 +204,7 @@ export function getAzurePipelinesSetup(pm: PackageManager): string {
|
|
|
182
204
|
if (pm === "pnpm") {
|
|
183
205
|
return ` - script: |
|
|
184
206
|
corepack enable
|
|
185
|
-
corepack prepare pnpm@
|
|
207
|
+
corepack prepare pnpm@11 --activate
|
|
186
208
|
displayName: 'Setup pnpm'`;
|
|
187
209
|
}
|
|
188
210
|
// npm: no extra step needed
|
|
@@ -196,7 +218,7 @@ export function getBuildScript(pm: PackageManager): string {
|
|
|
196
218
|
const copyStandaloneAssets = `node -e "const fs=require('fs');fs.mkdirSync('.next/standalone/.next',{recursive:true});if(fs.existsSync('.next/static'))fs.cpSync('.next/static','.next/standalone/.next/static',{recursive:true});if(fs.existsSync('public'))fs.cpSync('public','.next/standalone/public',{recursive:true});"`;
|
|
197
219
|
|
|
198
220
|
if (pm === "pnpm") {
|
|
199
|
-
return `pnpm
|
|
221
|
+
return `pnpm --filter shared run build && next build --webpack && ${copyStandaloneAssets}`;
|
|
200
222
|
}
|
|
201
223
|
return `npm run --workspace=shared build && next build --webpack && ${copyStandaloneAssets}`;
|
|
202
224
|
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import * as path from "path";
|
|
2
|
+
|
|
3
|
+
export const SWALLOWKIT_PYTHON_VERSION = "3.11";
|
|
4
|
+
|
|
5
|
+
export interface ProjectLocalUvPaths {
|
|
6
|
+
stateDir: string;
|
|
7
|
+
cacheDir: string;
|
|
8
|
+
pythonInstallDir: string;
|
|
9
|
+
toolDir: string;
|
|
10
|
+
toolBinDir: string;
|
|
11
|
+
localUvInstallDir: string;
|
|
12
|
+
localUvExecutable: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function getPythonProjectRoot(functionsDir: string): string {
|
|
16
|
+
return path.dirname(functionsDir);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function getProjectLocalUvPaths(projectRoot: string): ProjectLocalUvPaths {
|
|
20
|
+
const stateDir = path.join(projectRoot, ".uv");
|
|
21
|
+
const localUvInstallDir = path.join(stateDir, "bin");
|
|
22
|
+
|
|
23
|
+
return {
|
|
24
|
+
stateDir,
|
|
25
|
+
cacheDir: path.join(stateDir, "cache"),
|
|
26
|
+
pythonInstallDir: path.join(stateDir, "python"),
|
|
27
|
+
toolDir: path.join(stateDir, "tools"),
|
|
28
|
+
toolBinDir: path.join(stateDir, "tools", "bin"),
|
|
29
|
+
localUvInstallDir,
|
|
30
|
+
localUvExecutable: process.platform === "win32"
|
|
31
|
+
? path.join(localUvInstallDir, "uv.exe")
|
|
32
|
+
: path.join(localUvInstallDir, "uv"),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function buildProjectLocalUvEnv(
|
|
37
|
+
baseEnv: NodeJS.ProcessEnv,
|
|
38
|
+
projectRoot: string
|
|
39
|
+
): NodeJS.ProcessEnv {
|
|
40
|
+
const uvPaths = getProjectLocalUvPaths(projectRoot);
|
|
41
|
+
const env: NodeJS.ProcessEnv = {
|
|
42
|
+
...baseEnv,
|
|
43
|
+
UV_CACHE_DIR: uvPaths.cacheDir,
|
|
44
|
+
UV_PYTHON_INSTALL_DIR: uvPaths.pythonInstallDir,
|
|
45
|
+
UV_TOOL_DIR: uvPaths.toolDir,
|
|
46
|
+
UV_TOOL_BIN_DIR: uvPaths.toolBinDir,
|
|
47
|
+
UV_PYTHON_PREFERENCE: "only-managed",
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
if (process.platform === "win32") {
|
|
51
|
+
env.UV_PYTHON_NO_REGISTRY = "true";
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return env;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export function buildProjectLocalUvInstallerEnv(
|
|
58
|
+
baseEnv: NodeJS.ProcessEnv,
|
|
59
|
+
projectRoot: string
|
|
60
|
+
): NodeJS.ProcessEnv {
|
|
61
|
+
const uvPaths = getProjectLocalUvPaths(projectRoot);
|
|
62
|
+
|
|
63
|
+
return {
|
|
64
|
+
...buildProjectLocalUvEnv(baseEnv, projectRoot),
|
|
65
|
+
UV_UNMANAGED_INSTALL: uvPaths.localUvInstallDir,
|
|
66
|
+
UV_NO_MODIFY_PATH: "1",
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export function getProjectLocalUvInstallerCommand(): { command: string; args: string[] } {
|
|
71
|
+
if (process.platform === "win32") {
|
|
72
|
+
return {
|
|
73
|
+
command: "powershell",
|
|
74
|
+
args: [
|
|
75
|
+
"-NoProfile",
|
|
76
|
+
"-ExecutionPolicy",
|
|
77
|
+
"Bypass",
|
|
78
|
+
"-Command",
|
|
79
|
+
"$ProgressPreference = 'SilentlyContinue'; irm https://astral.sh/uv/install.ps1 | iex",
|
|
80
|
+
],
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return {
|
|
85
|
+
command: "sh",
|
|
86
|
+
args: ["-c", "curl -LsSf https://astral.sh/uv/install.sh | sh"],
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export function buildUvVenvArgs(venvDir: string, pythonVersion = SWALLOWKIT_PYTHON_VERSION): string[] {
|
|
91
|
+
return ["venv", venvDir, "--python", pythonVersion];
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export function buildUvPipInstallArgs(pythonExecutable: string, requirementsPath: string): string[] {
|
|
95
|
+
return ["pip", "install", "--python", pythonExecutable, "-r", requirementsPath];
|
|
96
|
+
}
|
package/src/version.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
|
|
4
|
+
export function getSwallowKitVersion(): string {
|
|
5
|
+
const packageJsonPath = path.resolve(__dirname, "..", "package.json");
|
|
6
|
+
|
|
7
|
+
try {
|
|
8
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf8")) as { version?: string };
|
|
9
|
+
return packageJson.version || "0.0.0";
|
|
10
|
+
} catch {
|
|
11
|
+
return process.env.npm_package_version || "0.0.0";
|
|
12
|
+
}
|
|
13
|
+
}
|