openspecui 0.9.1 → 0.9.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/cli.mjs +86 -25
- package/package.json +2 -2
package/dist/cli.mjs
CHANGED
|
@@ -4504,7 +4504,7 @@ var yargs_default = Yargs;
|
|
|
4504
4504
|
|
|
4505
4505
|
//#endregion
|
|
4506
4506
|
//#region package.json
|
|
4507
|
-
var version = "0.9.
|
|
4507
|
+
var version = "0.9.3";
|
|
4508
4508
|
|
|
4509
4509
|
//#endregion
|
|
4510
4510
|
//#region src/export.ts
|
|
@@ -4618,7 +4618,8 @@ function runCommand(cmd, args, cwd) {
|
|
|
4618
4618
|
return new Promise((resolvePromise, reject) => {
|
|
4619
4619
|
const child = spawn(cmd, args, {
|
|
4620
4620
|
stdio: "inherit",
|
|
4621
|
-
cwd
|
|
4621
|
+
cwd,
|
|
4622
|
+
shell: true
|
|
4622
4623
|
});
|
|
4623
4624
|
child.on("close", (code) => {
|
|
4624
4625
|
if (code === 0) resolvePromise();
|
|
@@ -4628,6 +4629,66 @@ function runCommand(cmd, args, cwd) {
|
|
|
4628
4629
|
});
|
|
4629
4630
|
}
|
|
4630
4631
|
/**
|
|
4632
|
+
* Detect the package manager used in the current project
|
|
4633
|
+
*/
|
|
4634
|
+
function detectPackageManager() {
|
|
4635
|
+
if (process.env.DENO_VERSION) return "deno";
|
|
4636
|
+
const userAgent = process.env.npm_config_user_agent;
|
|
4637
|
+
if (userAgent) {
|
|
4638
|
+
if (userAgent.startsWith("bun")) return "bun";
|
|
4639
|
+
if (userAgent.startsWith("pnpm")) return "pnpm";
|
|
4640
|
+
if (userAgent.startsWith("yarn")) return "yarn";
|
|
4641
|
+
if (userAgent.startsWith("npm")) return "npm";
|
|
4642
|
+
if (userAgent.startsWith("deno")) return "deno";
|
|
4643
|
+
}
|
|
4644
|
+
if (existsSync("deno.lock")) return "deno";
|
|
4645
|
+
if (existsSync("bun.lockb") || existsSync("bun.lock")) return "bun";
|
|
4646
|
+
if (existsSync("pnpm-lock.yaml")) return "pnpm";
|
|
4647
|
+
if (existsSync("yarn.lock")) return "yarn";
|
|
4648
|
+
return "npm";
|
|
4649
|
+
}
|
|
4650
|
+
/**
|
|
4651
|
+
* Get the exec command for running a package binary
|
|
4652
|
+
* Uses appropriate flags to ensure the correct version of @openspecui/web is installed
|
|
4653
|
+
*/
|
|
4654
|
+
function getExecCommand(pm) {
|
|
4655
|
+
const webPkgSpec = `@openspecui/web@${version}`;
|
|
4656
|
+
switch (pm) {
|
|
4657
|
+
case "bun": return {
|
|
4658
|
+
cmd: "bunx",
|
|
4659
|
+
args: [
|
|
4660
|
+
"-p",
|
|
4661
|
+
webPkgSpec,
|
|
4662
|
+
"openspecui-ssg"
|
|
4663
|
+
]
|
|
4664
|
+
};
|
|
4665
|
+
case "pnpm": return {
|
|
4666
|
+
cmd: "pnpm",
|
|
4667
|
+
args: ["dlx", webPkgSpec]
|
|
4668
|
+
};
|
|
4669
|
+
case "yarn": return {
|
|
4670
|
+
cmd: "yarn",
|
|
4671
|
+
args: ["dlx", webPkgSpec]
|
|
4672
|
+
};
|
|
4673
|
+
case "deno": return {
|
|
4674
|
+
cmd: "deno",
|
|
4675
|
+
args: [
|
|
4676
|
+
"run",
|
|
4677
|
+
"-A",
|
|
4678
|
+
`npm:${webPkgSpec}/openspecui-ssg`
|
|
4679
|
+
]
|
|
4680
|
+
};
|
|
4681
|
+
default: return {
|
|
4682
|
+
cmd: "npx",
|
|
4683
|
+
args: [
|
|
4684
|
+
"-p",
|
|
4685
|
+
webPkgSpec,
|
|
4686
|
+
"openspecui-ssg"
|
|
4687
|
+
]
|
|
4688
|
+
};
|
|
4689
|
+
}
|
|
4690
|
+
}
|
|
4691
|
+
/**
|
|
4631
4692
|
* Export as JSON only (data.json)
|
|
4632
4693
|
*/
|
|
4633
4694
|
async function exportJson(options) {
|
|
@@ -4658,37 +4719,37 @@ async function exportHtml(options) {
|
|
|
4658
4719
|
const localWebPkg = findLocalWebPackage();
|
|
4659
4720
|
if (localWebPkg) {
|
|
4660
4721
|
console.log("\n[Local dev mode] Running SSG from local web package...");
|
|
4661
|
-
|
|
4662
|
-
await runCommand("pnpm", ["build:client"], localWebPkg);
|
|
4663
|
-
console.log("Building SSR bundle...");
|
|
4664
|
-
await runCommand("pnpm", ["build:server"], localWebPkg);
|
|
4665
|
-
console.log("Pre-rendering pages...");
|
|
4666
|
-
const clientDistDir = join$1(localWebPkg, "dist", "client");
|
|
4667
|
-
await runCommand("npx", [
|
|
4722
|
+
await runCommand("pnpm", [
|
|
4668
4723
|
"tsx",
|
|
4669
|
-
"src
|
|
4724
|
+
join$1(localWebPkg, "src", "ssg", "cli.ts"),
|
|
4670
4725
|
"--data",
|
|
4671
4726
|
dataJsonPath,
|
|
4672
4727
|
"--output",
|
|
4673
|
-
|
|
4728
|
+
outputDir,
|
|
4674
4729
|
"--base-path",
|
|
4675
4730
|
basePath
|
|
4676
4731
|
], localWebPkg);
|
|
4677
|
-
console.log("\nCopying to output directory...");
|
|
4678
|
-
const { cpSync } = await import("node:fs");
|
|
4679
|
-
cpSync(clientDistDir, outputDir, { recursive: true });
|
|
4680
|
-
writeFileSync(join$1(outputDir, "data.json"), JSON.stringify(snapshot, null, 2));
|
|
4681
|
-
console.log(`\nExport complete: ${outputDir}`);
|
|
4682
4732
|
} else {
|
|
4683
|
-
console.log("\
|
|
4684
|
-
|
|
4685
|
-
|
|
4686
|
-
|
|
4687
|
-
|
|
4688
|
-
|
|
4689
|
-
|
|
4690
|
-
|
|
4733
|
+
console.log("\n[Production mode] Running SSG via @openspecui/web...");
|
|
4734
|
+
const pm = detectPackageManager();
|
|
4735
|
+
const execCmd = getExecCommand(pm);
|
|
4736
|
+
try {
|
|
4737
|
+
await runCommand(execCmd.cmd, [
|
|
4738
|
+
...execCmd.args,
|
|
4739
|
+
"--data",
|
|
4740
|
+
dataJsonPath,
|
|
4741
|
+
"--output",
|
|
4742
|
+
outputDir,
|
|
4743
|
+
"--base-path",
|
|
4744
|
+
basePath
|
|
4745
|
+
], process.cwd());
|
|
4746
|
+
} catch (err) {
|
|
4747
|
+
console.error("\nSSG failed. Make sure @openspecui/web is installed:");
|
|
4748
|
+
console.error(` ${pm} add @openspecui/web`);
|
|
4749
|
+
throw err;
|
|
4750
|
+
}
|
|
4691
4751
|
}
|
|
4752
|
+
console.log(`\nExport complete: ${outputDir}`);
|
|
4692
4753
|
if (open) {
|
|
4693
4754
|
console.log("\nStarting preview server...");
|
|
4694
4755
|
const previewArgs = [
|
|
@@ -4700,7 +4761,7 @@ async function exportHtml(options) {
|
|
|
4700
4761
|
if (previewPort) previewArgs.push("--port", String(previewPort));
|
|
4701
4762
|
if (previewHost) previewArgs.push("--host", previewHost);
|
|
4702
4763
|
previewArgs.push("--open");
|
|
4703
|
-
await runCommand(
|
|
4764
|
+
await runCommand(detectPackageManager(), previewArgs, outputDir);
|
|
4704
4765
|
}
|
|
4705
4766
|
}
|
|
4706
4767
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openspecui",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.3",
|
|
4
4
|
"description": "OpenSpec UI - Visual interface for spec-driven development",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.mjs",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"typescript": "^5.7.2",
|
|
32
32
|
"vitest": "^2.1.8",
|
|
33
33
|
"yargs": "^18.0.0",
|
|
34
|
-
"@openspecui/web": "0.9.
|
|
34
|
+
"@openspecui/web": "0.9.3",
|
|
35
35
|
"@openspecui/server": "0.9.0"
|
|
36
36
|
},
|
|
37
37
|
"scripts": {
|