quik-cli 1.0.0
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.md +0 -0
- package/bin/quik.dev.ts +8 -0
- package/bin/quik.js +9 -0
- package/dist/commands/VersionCommand.d.ts +12 -0
- package/dist/commands/VersionCommand.d.ts.map +1 -0
- package/dist/commands/VersionCommand.js +13 -0
- package/dist/commands/VersionCommand.js.map +1 -0
- package/dist/commands/init/InitCommand.d.ts +21 -0
- package/dist/commands/init/InitCommand.d.ts.map +1 -0
- package/dist/commands/init/InitCommand.js +22 -0
- package/dist/commands/init/InitCommand.js.map +1 -0
- package/dist/commands/init/impl/astro.scaffold.d.ts +9 -0
- package/dist/commands/init/impl/astro.scaffold.d.ts.map +1 -0
- package/dist/commands/init/impl/astro.scaffold.js +23 -0
- package/dist/commands/init/impl/astro.scaffold.js.map +1 -0
- package/dist/commands/init/impl/init.impl.d.ts +3 -0
- package/dist/commands/init/impl/init.impl.d.ts.map +1 -0
- package/dist/commands/init/impl/init.impl.js +201 -0
- package/dist/commands/init/impl/init.impl.js.map +1 -0
- package/dist/commands/init/impl/nextjs.scaffold.d.ts +9 -0
- package/dist/commands/init/impl/nextjs.scaffold.d.ts.map +1 -0
- package/dist/commands/init/impl/nextjs.scaffold.js +29 -0
- package/dist/commands/init/impl/nextjs.scaffold.js.map +1 -0
- package/dist/commands/init/templates/astro/.env.template +23 -0
- package/dist/commands/init/templates/astro/api-proxy.template +8 -0
- package/dist/commands/init/templates/astro/env.template +23 -0
- package/dist/commands/init/templates/astro/page.template +14 -0
- package/dist/commands/init/templates/nextjs/api-proxy.template +25 -0
- package/dist/commands/init/templates/nextjs/config.template +15 -0
- package/dist/commands/init/templates/nextjs/env.template +23 -0
- package/dist/commands/init/templates/nextjs/layout.template +67 -0
- package/dist/commands/init/templates/nextjs/page.template +12 -0
- package/dist/commands/run/RunCommand.d.ts +13 -0
- package/dist/commands/run/RunCommand.d.ts.map +1 -0
- package/dist/commands/run/RunCommand.js +15 -0
- package/dist/commands/run/RunCommand.js.map +1 -0
- package/dist/commands/run/impl/run.impl.d.ts +3 -0
- package/dist/commands/run/impl/run.impl.d.ts.map +1 -0
- package/dist/commands/run/impl/run.impl.js +73 -0
- package/dist/commands/run/impl/run.impl.js.map +1 -0
- package/dist/core/Banner.d.ts +2 -0
- package/dist/core/Banner.d.ts.map +1 -0
- package/dist/core/Banner.js +11 -0
- package/dist/core/Banner.js.map +1 -0
- package/dist/core/BaseCommand.d.ts +6 -0
- package/dist/core/BaseCommand.d.ts.map +1 -0
- package/dist/core/BaseCommand.js +3 -0
- package/dist/core/BaseCommand.js.map +1 -0
- package/dist/core/CLI.d.ts +23 -0
- package/dist/core/CLI.d.ts.map +1 -0
- package/dist/core/CLI.js +119 -0
- package/dist/core/CLI.js.map +1 -0
- package/dist/core/CommandRegistry.d.ts +13 -0
- package/dist/core/CommandRegistry.d.ts.map +1 -0
- package/dist/core/CommandRegistry.js +42 -0
- package/dist/core/CommandRegistry.js.map +1 -0
- package/dist/core/ConfigLoader.d.ts +5 -0
- package/dist/core/ConfigLoader.d.ts.map +1 -0
- package/dist/core/ConfigLoader.js +14 -0
- package/dist/core/ConfigLoader.js.map +1 -0
- package/dist/core/EventBus.d.ts +9 -0
- package/dist/core/EventBus.d.ts.map +1 -0
- package/dist/core/EventBus.js +33 -0
- package/dist/core/EventBus.js.map +1 -0
- package/dist/core/Loader.d.ts +36 -0
- package/dist/core/Loader.d.ts.map +1 -0
- package/dist/core/Loader.js +127 -0
- package/dist/core/Loader.js.map +1 -0
- package/dist/core/Logger.d.ts +18 -0
- package/dist/core/Logger.d.ts.map +1 -0
- package/dist/core/Logger.js +67 -0
- package/dist/core/Logger.js.map +1 -0
- package/dist/core/PluginManager.d.ts +13 -0
- package/dist/core/PluginManager.d.ts.map +1 -0
- package/dist/core/PluginManager.js +47 -0
- package/dist/core/PluginManager.js.map +1 -0
- package/dist/core/QuikError.d.ts +52 -0
- package/dist/core/QuikError.d.ts.map +1 -0
- package/dist/core/QuikError.js +75 -0
- package/dist/core/QuikError.js.map +1 -0
- package/dist/core/TemplateRenderer.d.ts +27 -0
- package/dist/core/TemplateRenderer.d.ts.map +1 -0
- package/dist/core/TemplateRenderer.js +38 -0
- package/dist/core/TemplateRenderer.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +55 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/PackageInstaller.d.ts +17 -0
- package/dist/utils/PackageInstaller.d.ts.map +1 -0
- package/dist/utils/PackageInstaller.js +100 -0
- package/dist/utils/PackageInstaller.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PackageInstaller.d.ts","sourceRoot":"","sources":["../../src/utils/PackageInstaller.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAuDf"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { mkdtemp, writeFile, rm } from "node:fs/promises";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { QuikError, ErrorCode } from "../core/QuikError.js";
|
|
6
|
+
const GITHUB_REGISTRY = "https://npm.pkg.github.com";
|
|
7
|
+
const PRIVATE_SCOPES = ["@quikcr"];
|
|
8
|
+
/**
|
|
9
|
+
* Installs a private GitHub Package using npm.
|
|
10
|
+
*
|
|
11
|
+
* Features:
|
|
12
|
+
* - Supports multiple private scopes.
|
|
13
|
+
* - Does not expose the GitHub token in CLI arguments.
|
|
14
|
+
* - Does not modify the user's existing ~/.npmrc.
|
|
15
|
+
* - Works on Windows, macOS and Linux.
|
|
16
|
+
* - Temporary npm configuration is automatically removed.
|
|
17
|
+
*
|
|
18
|
+
* @param packageName Example: "@quikcr/quik-engine"
|
|
19
|
+
* @param version Example: "1.0.29"
|
|
20
|
+
* @param githubToken GitHub access token for GitHub Packages
|
|
21
|
+
* @param cwd Working directory where npm install runs
|
|
22
|
+
*/
|
|
23
|
+
export async function installGitHubPackage(packageName, version, githubToken, cwd) {
|
|
24
|
+
if (!packageName) {
|
|
25
|
+
throw new QuikError(ErrorCode.NET_002, "network", "Package name is required");
|
|
26
|
+
}
|
|
27
|
+
if (!version) {
|
|
28
|
+
throw new QuikError(ErrorCode.NET_002, "network", "Package version is required");
|
|
29
|
+
}
|
|
30
|
+
if (!githubToken) {
|
|
31
|
+
throw new QuikError(ErrorCode.NET_002, "network", "GitHub token is required");
|
|
32
|
+
}
|
|
33
|
+
const npmConfigDir = await mkdtemp(join(tmpdir(), "quik-npm-"));
|
|
34
|
+
const npmConfigPath = join(npmConfigDir, ".npmrc");
|
|
35
|
+
try {
|
|
36
|
+
const npmrc = [
|
|
37
|
+
...PRIVATE_SCOPES.map((scope) => `${scope}:registry=${GITHUB_REGISTRY}`),
|
|
38
|
+
`//npm.pkg.github.com/:_authToken=${githubToken}`,
|
|
39
|
+
"always-auth=true",
|
|
40
|
+
"",
|
|
41
|
+
].join("\n");
|
|
42
|
+
await writeFile(npmConfigPath, npmrc, {
|
|
43
|
+
encoding: "utf8",
|
|
44
|
+
mode: 0o600,
|
|
45
|
+
});
|
|
46
|
+
await runNpmInstall(packageName, version, cwd, npmConfigPath);
|
|
47
|
+
}
|
|
48
|
+
finally {
|
|
49
|
+
await rm(npmConfigDir, {
|
|
50
|
+
recursive: true,
|
|
51
|
+
force: true,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function runNpmInstall(packageName, version, cwd, npmConfigPath) {
|
|
56
|
+
return new Promise((resolve, reject) => {
|
|
57
|
+
const npmCommand = process.platform === "win32"
|
|
58
|
+
? "npm.cmd"
|
|
59
|
+
: "npm";
|
|
60
|
+
const npm = spawn(npmCommand, ["install", `${packageName}@${version}`], {
|
|
61
|
+
cwd,
|
|
62
|
+
env: {
|
|
63
|
+
...process.env,
|
|
64
|
+
NPM_CONFIG_USERCONFIG: npmConfigPath,
|
|
65
|
+
},
|
|
66
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
67
|
+
windowsHide: true,
|
|
68
|
+
shell: process.platform === "win32",
|
|
69
|
+
});
|
|
70
|
+
let stderr = "";
|
|
71
|
+
let stdout = "";
|
|
72
|
+
npm.stdout.on("data", (chunk) => {
|
|
73
|
+
stdout += chunk.toString();
|
|
74
|
+
});
|
|
75
|
+
npm.stderr.on("data", (chunk) => {
|
|
76
|
+
stderr += chunk.toString();
|
|
77
|
+
});
|
|
78
|
+
npm.on("error", (error) => {
|
|
79
|
+
reject(new QuikError(ErrorCode.NET_002, "network", `Failed to start npm: ${error.message}`));
|
|
80
|
+
});
|
|
81
|
+
npm.on("close", (code) => {
|
|
82
|
+
if (code === 0) {
|
|
83
|
+
resolve();
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const errorMessage = getNpmErrorMessage(stderr, stdout);
|
|
87
|
+
reject(new QuikError(ErrorCode.NET_002, "network", `Failed to install ${packageName}@${version}: ${errorMessage}`));
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
function getNpmErrorMessage(stderr, stdout) {
|
|
92
|
+
const output = `${stderr}\n${stdout}`.trim();
|
|
93
|
+
const lines = output
|
|
94
|
+
.split(/\r?\n/)
|
|
95
|
+
.map((line) => line.trim())
|
|
96
|
+
.filter(Boolean);
|
|
97
|
+
return (lines.at(-1) ??
|
|
98
|
+
"npm install failed");
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=PackageInstaller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PackageInstaller.js","sourceRoot":"","sources":["../../src/utils/PackageInstaller.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "quik-cli",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Fast, dynamic, plugin-based CLI framework",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"quik": "bin/quik.js"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist",
|
|
13
|
+
"bin"
|
|
14
|
+
],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "tsc -p tsconfig.json && node scripts/copy-templates.js",
|
|
17
|
+
"dev": "tsx bin/quik.dev.ts",
|
|
18
|
+
"dev:bun": "bun bin/quik.dev.ts",
|
|
19
|
+
"start": "node bin/quik.js"
|
|
20
|
+
},
|
|
21
|
+
"keywords": [
|
|
22
|
+
"quik",
|
|
23
|
+
"cli",
|
|
24
|
+
"plugin",
|
|
25
|
+
"framework"
|
|
26
|
+
],
|
|
27
|
+
"license": "MIT",
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"chalk": "^5.3.0",
|
|
30
|
+
"commander": "^12.1.0",
|
|
31
|
+
"cosmiconfig": "^9.0.0",
|
|
32
|
+
"enquirer": "^2.4.1",
|
|
33
|
+
"jiti": "^2.7.0",
|
|
34
|
+
"ora": "^8.1.0",
|
|
35
|
+
"picocolors": "^1.1.1",
|
|
36
|
+
"save-dev": "^0.0.1-security"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@types/node": "^26.4.0",
|
|
40
|
+
"tsx": "^4.19.0",
|
|
41
|
+
"typescript": "^5.5.4"
|
|
42
|
+
},
|
|
43
|
+
"engines": {
|
|
44
|
+
"node": ">=18"
|
|
45
|
+
}
|
|
46
|
+
}
|