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,127 @@
|
|
|
1
|
+
import pc from "picocolors";
|
|
2
|
+
/** ANSI escape to move cursor to beginning of line */
|
|
3
|
+
const CRSR_LEFT = "\x1b[0G";
|
|
4
|
+
/** ANSI escape to clear from cursor to end of line */
|
|
5
|
+
const CLEAR_EOL = "\x1b[0K";
|
|
6
|
+
const ANIMATIONS = {
|
|
7
|
+
default: {
|
|
8
|
+
frames: ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"],
|
|
9
|
+
interval: 80,
|
|
10
|
+
color: pc.cyan,
|
|
11
|
+
},
|
|
12
|
+
installing: {
|
|
13
|
+
frames: ["↓", "↘", "→", "↗", "↑", "↖", "←", "↙"],
|
|
14
|
+
interval: 90,
|
|
15
|
+
color: pc.blue,
|
|
16
|
+
},
|
|
17
|
+
webrequest: {
|
|
18
|
+
// 8-step full rotation instead of 4, so it reads as spinning rather than flipping
|
|
19
|
+
frames: ["◐", "◓", "◑", "◒", "◐", "◓", "◑", "◒"],
|
|
20
|
+
interval: 130,
|
|
21
|
+
color: pc.magenta,
|
|
22
|
+
},
|
|
23
|
+
creating: {
|
|
24
|
+
// twinkle: size ramps up and back down rather than swapping between 2 glyphs
|
|
25
|
+
frames: ["·", "✦", "✧", "✶", "✧", "✦", "·"],
|
|
26
|
+
interval: 110,
|
|
27
|
+
color: pc.yellow,
|
|
28
|
+
},
|
|
29
|
+
updating: {
|
|
30
|
+
// arcs instead of two static glyphs flipping back and forth
|
|
31
|
+
frames: ["◜", "◠", "◝", "◞", "◡", "◟"],
|
|
32
|
+
interval: 100,
|
|
33
|
+
color: pc.green,
|
|
34
|
+
},
|
|
35
|
+
deleting: {
|
|
36
|
+
// shrinking bar reads as "erasing" far better than an X flickering
|
|
37
|
+
frames: ["▉", "▊", "▋", "▌", "▍", "▎", "▏", " "],
|
|
38
|
+
interval: 70,
|
|
39
|
+
color: pc.red,
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Dynamic loader that prints completed steps as it goes and animates
|
|
44
|
+
* the current step with a type-appropriate spinner.
|
|
45
|
+
*
|
|
46
|
+
* Usage:
|
|
47
|
+
* loader.start("Creating project files", "creating");
|
|
48
|
+
* await loader.stepFor("Setting up env", "webrequest");
|
|
49
|
+
* await loader.stepFor("Installing packages", "installing");
|
|
50
|
+
* loader.done("All set");
|
|
51
|
+
*/
|
|
52
|
+
export class Loader {
|
|
53
|
+
intervalId = null;
|
|
54
|
+
config = ANIMATIONS.default;
|
|
55
|
+
index = 0;
|
|
56
|
+
currentMessage = "";
|
|
57
|
+
start(message, type = "default") {
|
|
58
|
+
if (this.intervalId !== null)
|
|
59
|
+
return;
|
|
60
|
+
this.config = ANIMATIONS[type];
|
|
61
|
+
this.index = 0;
|
|
62
|
+
this.currentMessage = message ?? "";
|
|
63
|
+
this.render();
|
|
64
|
+
this.intervalId = setInterval(() => {
|
|
65
|
+
this.index = (this.index + 1) % this.config.frames.length;
|
|
66
|
+
this.render();
|
|
67
|
+
}, this.config.interval);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Finish the current step (printing a checkmark line immediately),
|
|
71
|
+
* then start animating the next one. If a promise/task is provided,
|
|
72
|
+
* the spinner runs until it resolves, with minMs as a floor so quick
|
|
73
|
+
* steps don't flash by unreadably.
|
|
74
|
+
*/
|
|
75
|
+
async stepFor(message, type = "default", minMs = 400, task) {
|
|
76
|
+
// Commit the previous step's line before moving on
|
|
77
|
+
this.commitCurrentLine();
|
|
78
|
+
this.config = ANIMATIONS[type];
|
|
79
|
+
this.index = 0;
|
|
80
|
+
this.currentMessage = message;
|
|
81
|
+
if (this.intervalId === null) {
|
|
82
|
+
this.intervalId = setInterval(() => {
|
|
83
|
+
this.index = (this.index + 1) % this.config.frames.length;
|
|
84
|
+
this.render();
|
|
85
|
+
}, this.config.interval);
|
|
86
|
+
}
|
|
87
|
+
this.render();
|
|
88
|
+
const wait = new Promise((resolve) => setTimeout(resolve, minMs));
|
|
89
|
+
await Promise.all([wait, task ? task() : Promise.resolve()]);
|
|
90
|
+
}
|
|
91
|
+
render() {
|
|
92
|
+
const msg = this.currentMessage ? ` ${pc.white(this.currentMessage)}` : "";
|
|
93
|
+
const frame = this.config.color(this.config.frames[this.index]);
|
|
94
|
+
process.stdout.write(`${CRSR_LEFT}${pc.cyan("[QUIK]")} ${frame}${msg}${CLEAR_EOL}`);
|
|
95
|
+
}
|
|
96
|
+
/** Clears the in-progress line and prints it as a completed step. */
|
|
97
|
+
commitCurrentLine() {
|
|
98
|
+
if (!this.currentMessage)
|
|
99
|
+
return;
|
|
100
|
+
process.stdout.write(`${CRSR_LEFT}${CLEAR_EOL}`);
|
|
101
|
+
process.stdout.write(`${pc.green("✓")} ${pc.dim(this.currentMessage)}\n`);
|
|
102
|
+
}
|
|
103
|
+
/** Stop spinner, commit the final step, and print a closing message. */
|
|
104
|
+
done(message) {
|
|
105
|
+
this.commitCurrentLine();
|
|
106
|
+
this.stop();
|
|
107
|
+
this.currentMessage = "";
|
|
108
|
+
if (message) {
|
|
109
|
+
process.stdout.write(`${pc.green("✔")} ${pc.white(message)}\n`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
fail(message) {
|
|
113
|
+
this.stop();
|
|
114
|
+
process.stdout.write(`${CRSR_LEFT}${CLEAR_EOL}`);
|
|
115
|
+
process.stdout.write(`${pc.red("✘")} ${message ? pc.white(message) : ""}\n`);
|
|
116
|
+
this.currentMessage = "";
|
|
117
|
+
}
|
|
118
|
+
stop() {
|
|
119
|
+
if (this.intervalId === null)
|
|
120
|
+
return;
|
|
121
|
+
clearInterval(this.intervalId);
|
|
122
|
+
this.intervalId = null;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/** Global shared loader instance */
|
|
126
|
+
export const loader = new Loader();
|
|
127
|
+
//# sourceMappingURL=Loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Loader.js","sourceRoot":"","sources":["../../src/core/Loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { LogLevel } from "../types/index.js";
|
|
2
|
+
export declare class Logger {
|
|
3
|
+
private level;
|
|
4
|
+
private readonly prefix;
|
|
5
|
+
constructor(prefix?: string);
|
|
6
|
+
setLevel(level: LogLevel): void;
|
|
7
|
+
debug(message: string, ...args: unknown[]): void;
|
|
8
|
+
info(message: string, ...args: unknown[]): void;
|
|
9
|
+
warn(message: string, ...args: unknown[]): void;
|
|
10
|
+
error(message: string, ...args: unknown[]): void;
|
|
11
|
+
success(message: string, ...args: unknown[]): void;
|
|
12
|
+
child(name: string): Logger;
|
|
13
|
+
raw(message: string): void;
|
|
14
|
+
private log;
|
|
15
|
+
private getLevelTag;
|
|
16
|
+
private stringify;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=Logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../src/core/Logger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AASlD,qBAAa,MAAM;IACjB,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,MAAM,SAAS;IAI3B,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIhD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIhD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIlD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAM3B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI1B,OAAO,CAAC,GAAG;IAWX,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,SAAS;CAQlB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import pc from "picocolors";
|
|
2
|
+
const LEVEL_PRIORITY = {
|
|
3
|
+
debug: 0,
|
|
4
|
+
info: 1,
|
|
5
|
+
warn: 2,
|
|
6
|
+
error: 3,
|
|
7
|
+
};
|
|
8
|
+
export class Logger {
|
|
9
|
+
level = "info";
|
|
10
|
+
prefix;
|
|
11
|
+
constructor(prefix = "quik") {
|
|
12
|
+
this.prefix = prefix;
|
|
13
|
+
}
|
|
14
|
+
setLevel(level) {
|
|
15
|
+
this.level = level;
|
|
16
|
+
}
|
|
17
|
+
debug(message, ...args) {
|
|
18
|
+
this.log("debug", message, args);
|
|
19
|
+
}
|
|
20
|
+
info(message, ...args) {
|
|
21
|
+
this.log("info", message, args);
|
|
22
|
+
}
|
|
23
|
+
warn(message, ...args) {
|
|
24
|
+
this.log("warn", message, args);
|
|
25
|
+
}
|
|
26
|
+
error(message, ...args) {
|
|
27
|
+
this.log("error", message, args);
|
|
28
|
+
}
|
|
29
|
+
success(message, ...args) {
|
|
30
|
+
this.log("info", message, args, "success");
|
|
31
|
+
}
|
|
32
|
+
child(name) {
|
|
33
|
+
const child = new Logger(`${this.prefix}:${name}`);
|
|
34
|
+
child.setLevel(this.level);
|
|
35
|
+
return child;
|
|
36
|
+
}
|
|
37
|
+
raw(message) {
|
|
38
|
+
process.stdout.write(message + "\n");
|
|
39
|
+
}
|
|
40
|
+
log(level, message, args, style) {
|
|
41
|
+
if (LEVEL_PRIORITY[level] < LEVEL_PRIORITY[this.level])
|
|
42
|
+
return;
|
|
43
|
+
const timestamp = pc.dim(new Date().toISOString().split("T")[1].slice(0, 8));
|
|
44
|
+
const prefix = pc.cyan(`[${this.prefix}]`);
|
|
45
|
+
const levelTag = style === "success" ? pc.green("[OK]") : this.getLevelTag(level);
|
|
46
|
+
const formatted = args.length ? `${message} ${args.map(a => this.stringify(a)).join(" ")}` : message;
|
|
47
|
+
process.stdout.write(`${timestamp} ${prefix} ${levelTag} ${formatted}\n`);
|
|
48
|
+
}
|
|
49
|
+
getLevelTag(level) {
|
|
50
|
+
switch (level) {
|
|
51
|
+
case "debug": return pc.gray("[DEBUG]");
|
|
52
|
+
case "info": return pc.blue("[INFO]");
|
|
53
|
+
case "warn": return pc.yellow("[WARN]");
|
|
54
|
+
case "error": return pc.red("[ERROR]");
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
stringify(value) {
|
|
58
|
+
if (value instanceof Error) {
|
|
59
|
+
const stack = value.stack ?? value.message;
|
|
60
|
+
return stack;
|
|
61
|
+
}
|
|
62
|
+
if (typeof value === "object")
|
|
63
|
+
return JSON.stringify(value);
|
|
64
|
+
return String(value);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=Logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/core/Logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { QuikConfig } from "../types/index.js";
|
|
2
|
+
import type { CommandRegistry } from "./CommandRegistry.js";
|
|
3
|
+
import type { EventBus } from "./EventBus.js";
|
|
4
|
+
import type { Logger } from "./Logger.js";
|
|
5
|
+
export declare class PluginManager {
|
|
6
|
+
private readonly registry;
|
|
7
|
+
private readonly events;
|
|
8
|
+
private readonly logger;
|
|
9
|
+
constructor(registry: CommandRegistry, events: EventBus, logger: Logger);
|
|
10
|
+
loadAll(config: QuikConfig, cwd: string): Promise<void>;
|
|
11
|
+
loadPlugin(name: string, cwd: string): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=PluginManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginManager.d.ts","sourceRoot":"","sources":["../../src/core/PluginManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;IAMjE,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA8B3D"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import jiti from "jiti";
|
|
2
|
+
export class PluginManager {
|
|
3
|
+
registry;
|
|
4
|
+
events;
|
|
5
|
+
logger;
|
|
6
|
+
constructor(registry, events, logger) {
|
|
7
|
+
this.registry = registry;
|
|
8
|
+
this.events = events;
|
|
9
|
+
this.logger = logger;
|
|
10
|
+
}
|
|
11
|
+
async loadAll(config, cwd) {
|
|
12
|
+
const plugins = config.plugins ?? [];
|
|
13
|
+
for (const pluginName of plugins) {
|
|
14
|
+
await this.loadPlugin(pluginName, cwd);
|
|
15
|
+
}
|
|
16
|
+
this.logger.debug(`Loaded ${plugins.length} plugin(s)`);
|
|
17
|
+
}
|
|
18
|
+
async loadPlugin(name, cwd) {
|
|
19
|
+
try {
|
|
20
|
+
const jitiRequire = jiti(cwd);
|
|
21
|
+
const plugin = jitiRequire(name);
|
|
22
|
+
if (plugin.commands) {
|
|
23
|
+
for (const command of plugin.commands) {
|
|
24
|
+
this.registry.register(command);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (plugin.hooks) {
|
|
28
|
+
for (const [event, handler] of Object.entries(plugin.hooks)) {
|
|
29
|
+
if (handler)
|
|
30
|
+
this.events.on(event, handler);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (plugin.init) {
|
|
34
|
+
await plugin.init({
|
|
35
|
+
logger: this.logger,
|
|
36
|
+
events: this.events,
|
|
37
|
+
config: {},
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
this.logger.info(`Loaded plugin: ${name}`);
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
this.logger.error(`Failed to load plugin "${name}":`, err);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=PluginManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginManager.js","sourceRoot":"","sources":["../../src/core/PluginManager.ts"],"names":[],"mappings":"AAIA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,OAAO,aAAa;IACP,QAAQ,CAAkB;IAC1B,MAAM,CAAW;IACjB,MAAM,CAAS;IAEhC,YAAY,QAAyB,EAAE,MAAgB,EAAE,MAAc;QACrE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAkB,EAAE,GAAW;QAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QAErC,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,OAAO,CAAC,MAAM,YAAY,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,GAAW;QACxC,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAe,CAAC;YAE/C,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACtC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;YAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC5D,IAAI,OAAO;wBAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;YAED,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,MAAM,MAAM,CAAC,IAAI,CAAC;oBAChB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,MAAM,EAAE,EAAE;iBACX,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base error class for all quik-cli errors.
|
|
3
|
+
* Provides structured error information with codes, categories, and user-friendly messages.
|
|
4
|
+
*/
|
|
5
|
+
export declare class QuikError extends Error {
|
|
6
|
+
/**
|
|
7
|
+
* Short error code, e.g. "INIT_001".
|
|
8
|
+
* Format: `<CATEGORY>_<3-digit-sequence>`
|
|
9
|
+
*/
|
|
10
|
+
readonly code: string;
|
|
11
|
+
/**
|
|
12
|
+
* Error category for grouping.
|
|
13
|
+
*/
|
|
14
|
+
readonly category: string;
|
|
15
|
+
/**
|
|
16
|
+
* Optional extra context for debugging.
|
|
17
|
+
*/
|
|
18
|
+
readonly details?: unknown;
|
|
19
|
+
constructor(code: string, category: string, message: string, options?: {
|
|
20
|
+
details?: unknown;
|
|
21
|
+
cause?: unknown;
|
|
22
|
+
});
|
|
23
|
+
/**
|
|
24
|
+
* Returns a user-friendly message for display.
|
|
25
|
+
* Does not include stack trace.
|
|
26
|
+
*/
|
|
27
|
+
userMessage(): string;
|
|
28
|
+
/**
|
|
29
|
+
* Returns full debug information including stack trace.
|
|
30
|
+
*/
|
|
31
|
+
debugMessage(): string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Error codes enumeration.
|
|
35
|
+
* Each code is unique across all categories.
|
|
36
|
+
*/
|
|
37
|
+
export declare const ErrorCode: {
|
|
38
|
+
readonly INIT_001: "INIT_001";
|
|
39
|
+
readonly INIT_002: "INIT_002";
|
|
40
|
+
readonly INIT_003: "INIT_003";
|
|
41
|
+
readonly INIT_004: "INIT_004";
|
|
42
|
+
readonly CFG_001: "CFG_001";
|
|
43
|
+
readonly CFG_002: "CFG_002";
|
|
44
|
+
readonly PLG_001: "PLG_001";
|
|
45
|
+
readonly PLG_002: "PLG_002";
|
|
46
|
+
readonly NET_001: "NET_001";
|
|
47
|
+
readonly NET_002: "NET_002";
|
|
48
|
+
readonly SCA_001: "SCA_001";
|
|
49
|
+
readonly SCA_002: "SCA_002";
|
|
50
|
+
};
|
|
51
|
+
export type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode];
|
|
52
|
+
//# sourceMappingURL=QuikError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuikError.d.ts","sourceRoot":"","sources":["../../src/core/QuikError.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAClC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;gBAGzB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB;IAYH;;;OAGG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,YAAY,IAAI,MAAM;CAavB;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;CAsBZ,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base error class for all quik-cli errors.
|
|
3
|
+
* Provides structured error information with codes, categories, and user-friendly messages.
|
|
4
|
+
*/
|
|
5
|
+
export class QuikError extends Error {
|
|
6
|
+
/**
|
|
7
|
+
* Short error code, e.g. "INIT_001".
|
|
8
|
+
* Format: `<CATEGORY>_<3-digit-sequence>`
|
|
9
|
+
*/
|
|
10
|
+
code;
|
|
11
|
+
/**
|
|
12
|
+
* Error category for grouping.
|
|
13
|
+
*/
|
|
14
|
+
category;
|
|
15
|
+
/**
|
|
16
|
+
* Optional extra context for debugging.
|
|
17
|
+
*/
|
|
18
|
+
details;
|
|
19
|
+
constructor(code, category, message, options) {
|
|
20
|
+
super(message, { cause: options?.cause });
|
|
21
|
+
this.name = "QuikError";
|
|
22
|
+
this.code = code;
|
|
23
|
+
this.category = category;
|
|
24
|
+
this.details = options?.details;
|
|
25
|
+
// Capture stack trace, excluding constructor call from it
|
|
26
|
+
Error.captureStackTrace(this, this.constructor);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Returns a user-friendly message for display.
|
|
30
|
+
* Does not include stack trace.
|
|
31
|
+
*/
|
|
32
|
+
userMessage() {
|
|
33
|
+
return `${this.code} › ${this.message}`;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Returns full debug information including stack trace.
|
|
37
|
+
*/
|
|
38
|
+
debugMessage() {
|
|
39
|
+
const lines = [
|
|
40
|
+
`${this.code} › ${this.message}`,
|
|
41
|
+
`Category: ${this.category}`,
|
|
42
|
+
];
|
|
43
|
+
if (this.details) {
|
|
44
|
+
lines.push(`Details: ${JSON.stringify(this.details, null, 2)}`);
|
|
45
|
+
}
|
|
46
|
+
if (this.stack) {
|
|
47
|
+
lines.push("", this.stack);
|
|
48
|
+
}
|
|
49
|
+
return lines.join("\n");
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Error codes enumeration.
|
|
54
|
+
* Each code is unique across all categories.
|
|
55
|
+
*/
|
|
56
|
+
export const ErrorCode = {
|
|
57
|
+
// Init errors (INIT_xxx)
|
|
58
|
+
INIT_001: "INIT_001",
|
|
59
|
+
INIT_002: "INIT_002",
|
|
60
|
+
INIT_003: "INIT_003",
|
|
61
|
+
INIT_004: "INIT_004",
|
|
62
|
+
// Config errors (CFG_xxx)
|
|
63
|
+
CFG_001: "CFG_001",
|
|
64
|
+
CFG_002: "CFG_002",
|
|
65
|
+
// Plugin errors (PLG_xxx)
|
|
66
|
+
PLG_001: "PLG_001",
|
|
67
|
+
PLG_002: "PLG_002",
|
|
68
|
+
// Network errors (NET_xxx)
|
|
69
|
+
NET_001: "NET_001",
|
|
70
|
+
NET_002: "NET_002",
|
|
71
|
+
// Scaffold errors (SCA_xxx)
|
|
72
|
+
SCA_001: "SCA_001",
|
|
73
|
+
SCA_002: "SCA_002",
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=QuikError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuikError.js","sourceRoot":"","sources":["../../src/core/QuikError.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC;;;OAGG;IACM,IAAI,CAAS;IAEtB;;OAEG;IACM,QAAQ,CAAS;IAE1B;;OAEG;IACM,OAAO,CAAW;IAE3B,YACE,IAAY,EACZ,QAAgB,EAChB,OAAe,EACf,OAGC;QAED,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;QAEhC,0DAA0D;QAC1D,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,WAAW;QACT,OAAO,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,YAAY;QACV,MAAM,KAAK,GAAG;YACZ,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE;YAChC,aAAa,IAAI,CAAC,QAAQ,EAAE;SAC7B,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,yBAAyB;IACzB,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IAEpB,0BAA0B;IAC1B,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAElB,0BAA0B;IAC1B,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAElB,2BAA2B;IAC3B,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAElB,4BAA4B;IAC5B,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;CACV,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renders a template string by replacing {{placeholder}} patterns with variables.
|
|
3
|
+
*
|
|
4
|
+
* @param template - String with {{placeholder}} patterns
|
|
5
|
+
* @param variables - Key-value pairs for replacement
|
|
6
|
+
* @returns Rendered string with placeholders replaced
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* renderTemplate("Hello {{name}}!", { name: "World" }) // "Hello World!"
|
|
10
|
+
*/
|
|
11
|
+
export declare function renderTemplate(template: string, variables: Record<string, string>): string;
|
|
12
|
+
/**
|
|
13
|
+
* Reads a template file, replaces placeholders, and writes to output location.
|
|
14
|
+
* Creates parent directories if they don't exist.
|
|
15
|
+
*
|
|
16
|
+
* @param templatePath - Path to the template file
|
|
17
|
+
* @param outputPath - Path where the rendered file will be written
|
|
18
|
+
* @param variables - Key-value pairs for placeholder replacement
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* await renderToFile("./templates/.env", "./myproject/.env", {
|
|
22
|
+
* API_KEY: "abc123",
|
|
23
|
+
* SECRET_KEY: "xyz789"
|
|
24
|
+
* });
|
|
25
|
+
*/
|
|
26
|
+
export declare function renderToFile(templatePath: string, outputPath: string, variables: Record<string, string>): Promise<void>;
|
|
27
|
+
//# sourceMappingURL=TemplateRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemplateRenderer.d.ts","sourceRoot":"","sources":["../../src/core/TemplateRenderer.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,MAAM,CAER;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC,CASf"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { readFile, writeFile, mkdir } from "node:fs/promises";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Renders a template string by replacing {{placeholder}} patterns with variables.
|
|
5
|
+
*
|
|
6
|
+
* @param template - String with {{placeholder}} patterns
|
|
7
|
+
* @param variables - Key-value pairs for replacement
|
|
8
|
+
* @returns Rendered string with placeholders replaced
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* renderTemplate("Hello {{name}}!", { name: "World" }) // "Hello World!"
|
|
12
|
+
*/
|
|
13
|
+
export function renderTemplate(template, variables) {
|
|
14
|
+
return template.replace(/\{\{(\w+)\}\}/g, (_, key) => variables[key] ?? `{{${key}}}`);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Reads a template file, replaces placeholders, and writes to output location.
|
|
18
|
+
* Creates parent directories if they don't exist.
|
|
19
|
+
*
|
|
20
|
+
* @param templatePath - Path to the template file
|
|
21
|
+
* @param outputPath - Path where the rendered file will be written
|
|
22
|
+
* @param variables - Key-value pairs for placeholder replacement
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* await renderToFile("./templates/.env", "./myproject/.env", {
|
|
26
|
+
* API_KEY: "abc123",
|
|
27
|
+
* SECRET_KEY: "xyz789"
|
|
28
|
+
* });
|
|
29
|
+
*/
|
|
30
|
+
export async function renderToFile(templatePath, outputPath, variables) {
|
|
31
|
+
const content = await readFile(templatePath, "utf-8");
|
|
32
|
+
const rendered = renderTemplate(content, variables);
|
|
33
|
+
// Ensure output directory exists
|
|
34
|
+
const outputDir = dirname(outputPath);
|
|
35
|
+
await mkdir(outputDir, { recursive: true });
|
|
36
|
+
await writeFile(outputPath, rendered, "utf-8");
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=TemplateRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemplateRenderer.js","sourceRoot":"","sources":["../../src/core/TemplateRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,SAAiC;IAEjC,OAAO,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;AACxF,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,YAAoB,EACpB,UAAkB,EAClB,SAAiC;IAEjC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAEpD,iCAAiC;IACjC,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,MAAM,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { CLI } from "./core/CLI.js";
|
|
2
|
+
export { BaseCommand } from "./core/BaseCommand.js";
|
|
3
|
+
export { Logger } from "./core/Logger.js";
|
|
4
|
+
export { EventBus } from "./core/EventBus.js";
|
|
5
|
+
export { ConfigLoader } from "./core/ConfigLoader.js";
|
|
6
|
+
export { CommandRegistry } from "./core/CommandRegistry.js";
|
|
7
|
+
export { PluginManager } from "./core/PluginManager.js";
|
|
8
|
+
export { renderTemplate, renderToFile } from "./core/TemplateRenderer.js";
|
|
9
|
+
export { QuikError, ErrorCode } from "./core/QuikError.js";
|
|
10
|
+
export type { QuikConfig, QuikPlugin, PluginAPI, CommandMeta, CommandOption, CommandContext, LogLevel, EventHandler, } from "./types/index.js";
|
|
11
|
+
export declare function defineConfig(config: import("./types/index.js").QuikConfig): import("./types/index.js").QuikConfig;
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE3D,YAAY,EACV,UAAU,EACV,UAAU,EACV,SAAS,EACT,WAAW,EACX,aAAa,EACb,cAAc,EACd,QAAQ,EACR,YAAY,GACb,MAAM,kBAAkB,CAAC;AAE1B,wBAAgB,YAAY,CAC1B,MAAM,EAAE,OAAO,kBAAkB,EAAE,UAAU,GAC5C,OAAO,kBAAkB,EAAE,UAAU,CAEvC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { CLI } from "./core/CLI.js";
|
|
2
|
+
export { BaseCommand } from "./core/BaseCommand.js";
|
|
3
|
+
export { Logger } from "./core/Logger.js";
|
|
4
|
+
export { EventBus } from "./core/EventBus.js";
|
|
5
|
+
export { ConfigLoader } from "./core/ConfigLoader.js";
|
|
6
|
+
export { CommandRegistry } from "./core/CommandRegistry.js";
|
|
7
|
+
export { PluginManager } from "./core/PluginManager.js";
|
|
8
|
+
export { renderTemplate, renderToFile } from "./core/TemplateRenderer.js";
|
|
9
|
+
export { QuikError, ErrorCode } from "./core/QuikError.js";
|
|
10
|
+
export function defineConfig(config) {
|
|
11
|
+
return config;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAa3D,MAAM,UAAU,YAAY,CAC1B,MAA6C;IAE7C,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { BaseCommand } from "../core/BaseCommand.js";
|
|
2
|
+
import { EventBus } from "../core/EventBus.js";
|
|
3
|
+
import { Logger } from "../core/Logger.js";
|
|
4
|
+
export type LogLevel = "debug" | "info" | "warn" | "error";
|
|
5
|
+
export type EventHandler = (...args: unknown[]) => unknown | Promise<unknown>;
|
|
6
|
+
export interface CommandOption {
|
|
7
|
+
flag: string;
|
|
8
|
+
description: string;
|
|
9
|
+
defaultValue?: unknown;
|
|
10
|
+
}
|
|
11
|
+
export interface CommandMeta {
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
args?: string;
|
|
15
|
+
aliases?: string[];
|
|
16
|
+
options?: CommandOption[];
|
|
17
|
+
category?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface CommandContext {
|
|
20
|
+
args: string[];
|
|
21
|
+
options: Record<string, unknown>;
|
|
22
|
+
config: QuikConfig;
|
|
23
|
+
logger: Logger;
|
|
24
|
+
events: EventBus;
|
|
25
|
+
cwd: string;
|
|
26
|
+
}
|
|
27
|
+
export interface QuikPlugin {
|
|
28
|
+
name: string;
|
|
29
|
+
version?: string;
|
|
30
|
+
commands?: BaseCommand[];
|
|
31
|
+
hooks?: PluginHooks;
|
|
32
|
+
init?: (api: PluginAPI) => void | Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
export interface PluginAPI {
|
|
35
|
+
logger: Logger;
|
|
36
|
+
events: EventBus;
|
|
37
|
+
config: QuikConfig;
|
|
38
|
+
}
|
|
39
|
+
export interface PluginHooks {
|
|
40
|
+
"config:loaded"?: (config: QuikConfig) => void | Promise<void>;
|
|
41
|
+
"command:before"?: (meta: CommandMeta) => void | Promise<void>;
|
|
42
|
+
"command:after"?: (meta: CommandMeta) => void | Promise<void>;
|
|
43
|
+
"cli:start"?: () => void | Promise<void>;
|
|
44
|
+
"cli:stop"?: () => void | Promise<void>;
|
|
45
|
+
}
|
|
46
|
+
export interface QuikConfig {
|
|
47
|
+
plugins?: string[];
|
|
48
|
+
pluginDir?: string;
|
|
49
|
+
debug?: boolean;
|
|
50
|
+
[key: string]: unknown;
|
|
51
|
+
}
|
|
52
|
+
export { Logger as Logger };
|
|
53
|
+
export { EventBus as EventBus };
|
|
54
|
+
export { BaseCommand as BaseCommand };
|
|
55
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAE9E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,QAAQ,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,WAAW,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,CAAC;AAC5B,OAAO,EAAE,QAAQ,IAAI,QAAQ,EAAE,CAAC;AAChC,OAAO,EAAE,WAAW,IAAI,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { BaseCommand } from "../core/BaseCommand.js";
|
|
2
|
+
import { EventBus } from "../core/EventBus.js";
|
|
3
|
+
import { Logger } from "../core/Logger.js";
|
|
4
|
+
export { Logger as Logger };
|
|
5
|
+
export { EventBus as EventBus };
|
|
6
|
+
export { BaseCommand as BaseCommand };
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AA2D3C,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,CAAC;AAC5B,OAAO,EAAE,QAAQ,IAAI,QAAQ,EAAE,CAAC;AAChC,OAAO,EAAE,WAAW,IAAI,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Installs a private GitHub Package using npm.
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Supports multiple private scopes.
|
|
6
|
+
* - Does not expose the GitHub token in CLI arguments.
|
|
7
|
+
* - Does not modify the user's existing ~/.npmrc.
|
|
8
|
+
* - Works on Windows, macOS and Linux.
|
|
9
|
+
* - Temporary npm configuration is automatically removed.
|
|
10
|
+
*
|
|
11
|
+
* @param packageName Example: "@quikcr/quik-engine"
|
|
12
|
+
* @param version Example: "1.0.29"
|
|
13
|
+
* @param githubToken GitHub access token for GitHub Packages
|
|
14
|
+
* @param cwd Working directory where npm install runs
|
|
15
|
+
*/
|
|
16
|
+
export declare function installGitHubPackage(packageName: string, version: string, githubToken: string, cwd: string): Promise<void>;
|
|
17
|
+
//# sourceMappingURL=PackageInstaller.d.ts.map
|