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.
Files changed (97) hide show
  1. package/README.md +0 -0
  2. package/bin/quik.dev.ts +8 -0
  3. package/bin/quik.js +9 -0
  4. package/dist/commands/VersionCommand.d.ts +12 -0
  5. package/dist/commands/VersionCommand.d.ts.map +1 -0
  6. package/dist/commands/VersionCommand.js +13 -0
  7. package/dist/commands/VersionCommand.js.map +1 -0
  8. package/dist/commands/init/InitCommand.d.ts +21 -0
  9. package/dist/commands/init/InitCommand.d.ts.map +1 -0
  10. package/dist/commands/init/InitCommand.js +22 -0
  11. package/dist/commands/init/InitCommand.js.map +1 -0
  12. package/dist/commands/init/impl/astro.scaffold.d.ts +9 -0
  13. package/dist/commands/init/impl/astro.scaffold.d.ts.map +1 -0
  14. package/dist/commands/init/impl/astro.scaffold.js +23 -0
  15. package/dist/commands/init/impl/astro.scaffold.js.map +1 -0
  16. package/dist/commands/init/impl/init.impl.d.ts +3 -0
  17. package/dist/commands/init/impl/init.impl.d.ts.map +1 -0
  18. package/dist/commands/init/impl/init.impl.js +201 -0
  19. package/dist/commands/init/impl/init.impl.js.map +1 -0
  20. package/dist/commands/init/impl/nextjs.scaffold.d.ts +9 -0
  21. package/dist/commands/init/impl/nextjs.scaffold.d.ts.map +1 -0
  22. package/dist/commands/init/impl/nextjs.scaffold.js +29 -0
  23. package/dist/commands/init/impl/nextjs.scaffold.js.map +1 -0
  24. package/dist/commands/init/templates/astro/.env.template +23 -0
  25. package/dist/commands/init/templates/astro/api-proxy.template +8 -0
  26. package/dist/commands/init/templates/astro/env.template +23 -0
  27. package/dist/commands/init/templates/astro/page.template +14 -0
  28. package/dist/commands/init/templates/nextjs/api-proxy.template +25 -0
  29. package/dist/commands/init/templates/nextjs/config.template +15 -0
  30. package/dist/commands/init/templates/nextjs/env.template +23 -0
  31. package/dist/commands/init/templates/nextjs/layout.template +67 -0
  32. package/dist/commands/init/templates/nextjs/page.template +12 -0
  33. package/dist/commands/run/RunCommand.d.ts +13 -0
  34. package/dist/commands/run/RunCommand.d.ts.map +1 -0
  35. package/dist/commands/run/RunCommand.js +15 -0
  36. package/dist/commands/run/RunCommand.js.map +1 -0
  37. package/dist/commands/run/impl/run.impl.d.ts +3 -0
  38. package/dist/commands/run/impl/run.impl.d.ts.map +1 -0
  39. package/dist/commands/run/impl/run.impl.js +73 -0
  40. package/dist/commands/run/impl/run.impl.js.map +1 -0
  41. package/dist/core/Banner.d.ts +2 -0
  42. package/dist/core/Banner.d.ts.map +1 -0
  43. package/dist/core/Banner.js +11 -0
  44. package/dist/core/Banner.js.map +1 -0
  45. package/dist/core/BaseCommand.d.ts +6 -0
  46. package/dist/core/BaseCommand.d.ts.map +1 -0
  47. package/dist/core/BaseCommand.js +3 -0
  48. package/dist/core/BaseCommand.js.map +1 -0
  49. package/dist/core/CLI.d.ts +23 -0
  50. package/dist/core/CLI.d.ts.map +1 -0
  51. package/dist/core/CLI.js +119 -0
  52. package/dist/core/CLI.js.map +1 -0
  53. package/dist/core/CommandRegistry.d.ts +13 -0
  54. package/dist/core/CommandRegistry.d.ts.map +1 -0
  55. package/dist/core/CommandRegistry.js +42 -0
  56. package/dist/core/CommandRegistry.js.map +1 -0
  57. package/dist/core/ConfigLoader.d.ts +5 -0
  58. package/dist/core/ConfigLoader.d.ts.map +1 -0
  59. package/dist/core/ConfigLoader.js +14 -0
  60. package/dist/core/ConfigLoader.js.map +1 -0
  61. package/dist/core/EventBus.d.ts +9 -0
  62. package/dist/core/EventBus.d.ts.map +1 -0
  63. package/dist/core/EventBus.js +33 -0
  64. package/dist/core/EventBus.js.map +1 -0
  65. package/dist/core/Loader.d.ts +36 -0
  66. package/dist/core/Loader.d.ts.map +1 -0
  67. package/dist/core/Loader.js +127 -0
  68. package/dist/core/Loader.js.map +1 -0
  69. package/dist/core/Logger.d.ts +18 -0
  70. package/dist/core/Logger.d.ts.map +1 -0
  71. package/dist/core/Logger.js +67 -0
  72. package/dist/core/Logger.js.map +1 -0
  73. package/dist/core/PluginManager.d.ts +13 -0
  74. package/dist/core/PluginManager.d.ts.map +1 -0
  75. package/dist/core/PluginManager.js +47 -0
  76. package/dist/core/PluginManager.js.map +1 -0
  77. package/dist/core/QuikError.d.ts +52 -0
  78. package/dist/core/QuikError.d.ts.map +1 -0
  79. package/dist/core/QuikError.js +75 -0
  80. package/dist/core/QuikError.js.map +1 -0
  81. package/dist/core/TemplateRenderer.d.ts +27 -0
  82. package/dist/core/TemplateRenderer.d.ts.map +1 -0
  83. package/dist/core/TemplateRenderer.js +38 -0
  84. package/dist/core/TemplateRenderer.js.map +1 -0
  85. package/dist/index.d.ts +12 -0
  86. package/dist/index.d.ts.map +1 -0
  87. package/dist/index.js +13 -0
  88. package/dist/index.js.map +1 -0
  89. package/dist/types/index.d.ts +55 -0
  90. package/dist/types/index.d.ts.map +1 -0
  91. package/dist/types/index.js +7 -0
  92. package/dist/types/index.js.map +1 -0
  93. package/dist/utils/PackageInstaller.d.ts +17 -0
  94. package/dist/utils/PackageInstaller.d.ts.map +1 -0
  95. package/dist/utils/PackageInstaller.js +100 -0
  96. package/dist/utils/PackageInstaller.js.map +1 -0
  97. 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
+ }