create-warlock 4.0.174 → 4.1.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/cjs/index.cjs +780 -0
- package/cjs/index.cjs.map +1 -0
- package/cjs/paths-Bl9Wn7qV.cjs +247 -0
- package/cjs/paths-Bl9Wn7qV.cjs.map +1 -0
- package/cjs/project-builder-helpers-DGcgf60P.cjs +27 -0
- package/cjs/project-builder-helpers-DGcgf60P.cjs.map +1 -0
- package/esm/commands/create-new-app/get-app-path.mjs +17 -0
- package/esm/commands/create-new-app/get-app-path.mjs.map +1 -0
- package/esm/commands/create-new-app/index.mjs +152 -0
- package/esm/commands/create-new-app/index.mjs.map +1 -0
- package/esm/commands/create-new-app/types.d.mts +18 -0
- package/esm/commands/create-warlock-app/index.mjs +57 -0
- package/esm/commands/create-warlock-app/index.mjs.map +1 -0
- package/esm/features/database-drivers.mjs +47 -0
- package/esm/features/database-drivers.mjs.map +1 -0
- package/esm/features/features-map.mjs +157 -0
- package/esm/features/features-map.mjs.map +1 -0
- package/esm/helpers/app.mjs +157 -0
- package/esm/helpers/app.mjs.map +1 -0
- package/esm/helpers/exec.mjs +58 -0
- package/esm/helpers/exec.mjs.map +1 -0
- package/esm/helpers/package-manager.mjs +84 -0
- package/esm/helpers/package-manager.mjs.map +1 -0
- package/esm/helpers/paths.mjs +16 -0
- package/esm/helpers/paths.mjs.map +1 -0
- package/esm/helpers/project-builder-helpers.mjs +28 -0
- package/esm/helpers/project-builder-helpers.mjs.map +1 -0
- package/esm/index.d.mts +14 -0
- package/esm/index.mjs +83 -0
- package/esm/index.mjs.map +1 -0
- package/esm/ui/{banner.js → banner.mjs} +51 -67
- package/esm/ui/banner.mjs.map +1 -0
- package/esm/ui/spinners.mjs +23 -0
- package/esm/ui/spinners.mjs.map +1 -0
- package/llms-full.txt +121 -0
- package/llms.txt +9 -0
- package/package.json +36 -40
- package/skills/create-a-warlock-project/SKILL.md +111 -0
- package/templates/warlock/.prettierrc.json +10 -11
- package/templates/warlock/_.gitignore +0 -1
- package/templates/warlock/package.json +71 -66
- package/templates/warlock/src/app/auth/controllers/login.controller.ts +5 -6
- package/templates/warlock/src/app/auth/controllers/reset-password.controller.ts +5 -6
- package/templates/warlock/src/app/auth/models/otp/migrations/22-12-2025_10-30-20.otp-migration.ts +33 -43
- package/templates/warlock/src/app/auth/requests/guarded.request.ts +5 -1
- package/templates/warlock/src/app/posts/controllers/create-new-post.controller.ts +5 -6
- package/templates/warlock/src/app/posts/controllers/update-post.controller.ts +4 -5
- package/templates/warlock/src/app/posts/models/post/migrations/09-01-2026_02-07-51-post.migration.ts +21 -34
- package/templates/warlock/src/app/posts/models/post/post.model.ts +0 -2
- package/templates/warlock/src/app/posts/{validation → schema}/create-post.schema.ts +1 -1
- package/templates/warlock/src/app/posts/{validation → schema}/update-post.schema.ts +1 -1
- package/templates/warlock/src/app/shared/utils/locales.ts +34 -0
- package/templates/warlock/src/app/shared/utils/router.ts +1 -1
- package/templates/warlock/src/app/uploads/controllers/fetch-uploaded-file.controller.ts +1 -1
- package/templates/warlock/src/app/users/controllers/create-new-user.controller.ts +4 -4
- package/templates/warlock/src/app/users/controllers/list-users.controller.ts +3 -12
- package/templates/warlock/src/app/users/models/user/migrations/11-12-2025_23-58-03-user.migration.ts +13 -33
- package/templates/warlock/src/app/users/{validation → schema}/create-user.schema.ts +1 -1
- package/templates/warlock/storage/.gitignore +2 -0
- package/templates/warlock/yarn.lock +2332 -0
- package/cjs/commands/create-new-app/get-app-path.d.ts +0 -2
- package/cjs/commands/create-new-app/get-app-path.d.ts.map +0 -1
- package/cjs/commands/create-new-app/get-app-path.js +0 -8
- package/cjs/commands/create-new-app/get-app-path.js.map +0 -1
- package/cjs/commands/create-new-app/index.d.ts +0 -2
- package/cjs/commands/create-new-app/index.d.ts.map +0 -1
- package/cjs/commands/create-new-app/index.js +0 -96
- package/cjs/commands/create-new-app/index.js.map +0 -1
- package/cjs/commands/create-new-app/types.d.ts +0 -16
- package/cjs/commands/create-new-app/types.d.ts.map +0 -1
- package/cjs/commands/create-warlock-app/index.d.ts +0 -3
- package/cjs/commands/create-warlock-app/index.d.ts.map +0 -1
- package/cjs/commands/create-warlock-app/index.js +0 -55
- package/cjs/commands/create-warlock-app/index.js.map +0 -1
- package/cjs/features/database-drivers.d.ts +0 -31
- package/cjs/features/database-drivers.d.ts.map +0 -1
- package/cjs/features/database-drivers.js +0 -53
- package/cjs/features/database-drivers.js.map +0 -1
- package/cjs/features/features-map.d.ts +0 -35
- package/cjs/features/features-map.d.ts.map +0 -1
- package/cjs/features/features-map.js +0 -120
- package/cjs/features/features-map.js.map +0 -1
- package/cjs/helpers/app.d.ts +0 -71
- package/cjs/helpers/app.d.ts.map +0 -1
- package/cjs/helpers/app.js +0 -196
- package/cjs/helpers/app.js.map +0 -1
- package/cjs/helpers/exec.d.ts +0 -10
- package/cjs/helpers/exec.d.ts.map +0 -1
- package/cjs/helpers/exec.js +0 -69
- package/cjs/helpers/exec.js.map +0 -1
- package/cjs/helpers/package-manager.d.ts +0 -18
- package/cjs/helpers/package-manager.d.ts.map +0 -1
- package/cjs/helpers/package-manager.js +0 -104
- package/cjs/helpers/package-manager.js.map +0 -1
- package/cjs/helpers/paths.d.ts +0 -4
- package/cjs/helpers/paths.d.ts.map +0 -1
- package/cjs/helpers/paths.js +0 -8
- package/cjs/helpers/paths.js.map +0 -1
- package/cjs/helpers/project-builder-helpers.d.ts +0 -6
- package/cjs/helpers/project-builder-helpers.d.ts.map +0 -1
- package/cjs/helpers/project-builder-helpers.js +0 -11
- package/cjs/helpers/project-builder-helpers.js.map +0 -1
- package/cjs/index.d.ts +0 -2
- package/cjs/index.d.ts.map +0 -1
- package/cjs/index.js +0 -3
- package/cjs/index.js.map +0 -1
- package/cjs/ui/banner.d.ts +0 -29
- package/cjs/ui/banner.d.ts.map +0 -1
- package/cjs/ui/banner.js +0 -142
- package/cjs/ui/banner.js.map +0 -1
- package/cjs/ui/spinners.d.ts +0 -18
- package/cjs/ui/spinners.d.ts.map +0 -1
- package/cjs/ui/spinners.js +0 -17
- package/cjs/ui/spinners.js.map +0 -1
- package/create-app.js +0 -5
- package/esm/commands/create-new-app/get-app-path.d.ts +0 -2
- package/esm/commands/create-new-app/get-app-path.d.ts.map +0 -1
- package/esm/commands/create-new-app/get-app-path.js +0 -8
- package/esm/commands/create-new-app/get-app-path.js.map +0 -1
- package/esm/commands/create-new-app/index.d.ts +0 -2
- package/esm/commands/create-new-app/index.d.ts.map +0 -1
- package/esm/commands/create-new-app/index.js +0 -96
- package/esm/commands/create-new-app/index.js.map +0 -1
- package/esm/commands/create-new-app/types.d.ts +0 -16
- package/esm/commands/create-new-app/types.d.ts.map +0 -1
- package/esm/commands/create-warlock-app/index.d.ts +0 -3
- package/esm/commands/create-warlock-app/index.d.ts.map +0 -1
- package/esm/commands/create-warlock-app/index.js +0 -55
- package/esm/commands/create-warlock-app/index.js.map +0 -1
- package/esm/features/database-drivers.d.ts +0 -31
- package/esm/features/database-drivers.d.ts.map +0 -1
- package/esm/features/database-drivers.js +0 -53
- package/esm/features/database-drivers.js.map +0 -1
- package/esm/features/features-map.d.ts +0 -35
- package/esm/features/features-map.d.ts.map +0 -1
- package/esm/features/features-map.js +0 -120
- package/esm/features/features-map.js.map +0 -1
- package/esm/helpers/app.d.ts +0 -71
- package/esm/helpers/app.d.ts.map +0 -1
- package/esm/helpers/app.js +0 -196
- package/esm/helpers/app.js.map +0 -1
- package/esm/helpers/exec.d.ts +0 -10
- package/esm/helpers/exec.d.ts.map +0 -1
- package/esm/helpers/exec.js +0 -69
- package/esm/helpers/exec.js.map +0 -1
- package/esm/helpers/package-manager.d.ts +0 -18
- package/esm/helpers/package-manager.d.ts.map +0 -1
- package/esm/helpers/package-manager.js +0 -104
- package/esm/helpers/package-manager.js.map +0 -1
- package/esm/helpers/paths.d.ts +0 -4
- package/esm/helpers/paths.d.ts.map +0 -1
- package/esm/helpers/paths.js +0 -8
- package/esm/helpers/paths.js.map +0 -1
- package/esm/helpers/project-builder-helpers.d.ts +0 -6
- package/esm/helpers/project-builder-helpers.d.ts.map +0 -1
- package/esm/helpers/project-builder-helpers.js +0 -11
- package/esm/helpers/project-builder-helpers.js.map +0 -1
- package/esm/index.d.ts +0 -2
- package/esm/index.d.ts.map +0 -1
- package/esm/index.js +0 -3
- package/esm/index.js.map +0 -1
- package/esm/ui/banner.d.ts +0 -29
- package/esm/ui/banner.d.ts.map +0 -1
- package/esm/ui/banner.js.map +0 -1
- package/esm/ui/spinners.d.ts +0 -18
- package/esm/ui/spinners.d.ts.map +0 -1
- package/esm/ui/spinners.js +0 -17
- package/esm/ui/spinners.js.map +0 -1
- package/templates/warlock/src/app/auth/requests/login.request.ts +0 -4
- package/templates/warlock/src/app/auth/requests/reset-password.request.ts +0 -4
- package/templates/warlock/src/app/posts/requests/create-post.request.ts +0 -4
- package/templates/warlock/src/app/posts/requests/update-post.request.ts +0 -4
- package/templates/warlock/src/app/users/requests/create-user.request.ts +0 -4
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { exec, execSync } from "child_process";
|
|
2
|
+
import { promisify } from "util";
|
|
3
|
+
import detectPackageManager from "which-pm-runs";
|
|
4
|
+
|
|
5
|
+
//#region ../../@warlock.js/create-warlock/src/helpers/package-manager.ts
|
|
6
|
+
const execAsync = promisify(exec);
|
|
7
|
+
let detectedPackageManager;
|
|
8
|
+
let cachedSystemManagers;
|
|
9
|
+
let cachedPreferredManager;
|
|
10
|
+
function getPackageManager() {
|
|
11
|
+
if (detectedPackageManager) return detectedPackageManager;
|
|
12
|
+
return getPreferredPackageManager();
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Check if a package manager is installed
|
|
16
|
+
*/
|
|
17
|
+
function isInstalled(manager) {
|
|
18
|
+
try {
|
|
19
|
+
execSync(`${manager} --version`, { stdio: "ignore" });
|
|
20
|
+
return true;
|
|
21
|
+
} catch {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Check if a package manager is installed (async)
|
|
27
|
+
*/
|
|
28
|
+
async function checkManager(manager) {
|
|
29
|
+
try {
|
|
30
|
+
await execAsync(`${manager} --version`);
|
|
31
|
+
return true;
|
|
32
|
+
} catch {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Detect available package managers asynchronously and cache results
|
|
38
|
+
*/
|
|
39
|
+
async function detectPackageManagers() {
|
|
40
|
+
const managers = ["npm"];
|
|
41
|
+
const checks = [checkManager("yarn"), checkManager("pnpm")];
|
|
42
|
+
const [hasYarn, hasPnpm] = await Promise.all(checks);
|
|
43
|
+
if (hasYarn) managers.push("yarn");
|
|
44
|
+
if (hasPnpm) managers.push("pnpm");
|
|
45
|
+
cachedSystemManagers = managers;
|
|
46
|
+
const runningPm = detectPackageManager()?.name;
|
|
47
|
+
if (runningPm && runningPm !== "npm") cachedPreferredManager = runningPm;
|
|
48
|
+
else if (hasYarn) cachedPreferredManager = "yarn";
|
|
49
|
+
else if (hasPnpm) cachedPreferredManager = "pnpm";
|
|
50
|
+
else cachedPreferredManager = "npm";
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get available package managers on the system
|
|
54
|
+
*/
|
|
55
|
+
function getSystemPackageManagers() {
|
|
56
|
+
if (cachedSystemManagers) return cachedSystemManagers;
|
|
57
|
+
const managers = ["npm"];
|
|
58
|
+
if (isInstalled("yarn")) managers.push("yarn");
|
|
59
|
+
if (isInstalled("pnpm")) managers.push("pnpm");
|
|
60
|
+
return managers;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get the preferred package manager based on priority
|
|
64
|
+
*/
|
|
65
|
+
function getPreferredPackageManager() {
|
|
66
|
+
if (cachedPreferredManager) return cachedPreferredManager;
|
|
67
|
+
const runningPm = detectPackageManager()?.name;
|
|
68
|
+
if (runningPm && runningPm !== "npm") return runningPm;
|
|
69
|
+
if (isInstalled("yarn")) return "yarn";
|
|
70
|
+
if (isInstalled("pnpm")) return "pnpm";
|
|
71
|
+
return "npm";
|
|
72
|
+
}
|
|
73
|
+
function setPackageManager(packageManager) {
|
|
74
|
+
detectedPackageManager = packageManager;
|
|
75
|
+
}
|
|
76
|
+
function runPackageManagerCommand(command) {
|
|
77
|
+
const packageManager = getPackageManager();
|
|
78
|
+
if (packageManager === "npm") return `npm run ${command}`;
|
|
79
|
+
return `${packageManager} ${command}`;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
//#endregion
|
|
83
|
+
export { detectPackageManagers, getPackageManager, getPreferredPackageManager, getSystemPackageManagers, runPackageManagerCommand, setPackageManager };
|
|
84
|
+
//# sourceMappingURL=package-manager.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.mjs","names":[],"sources":["../../../../../../@warlock.js/create-warlock/src/helpers/package-manager.ts"],"sourcesContent":["import { exec, execSync } from \"child_process\";\r\nimport { promisify } from \"util\";\r\nimport detectPackageManager from \"which-pm-runs\";\r\n\r\nconst execAsync = promisify(exec);\r\n\r\nlet detectedPackageManager: string | undefined;\r\nlet cachedSystemManagers: string[] | undefined;\r\nlet cachedPreferredManager: string | undefined;\r\n\r\nexport function getPackageManager() {\r\n if (detectedPackageManager) {\r\n return detectedPackageManager;\r\n }\r\n\r\n return getPreferredPackageManager();\r\n}\r\n\r\n/**\r\n * Check if a package manager is installed\r\n */\r\nfunction isInstalled(manager: string): boolean {\r\n try {\r\n execSync(`${manager} --version`, { stdio: \"ignore\" });\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Check if a package manager is installed (async)\r\n */\r\nasync function checkManager(manager: string): Promise<boolean> {\r\n try {\r\n await execAsync(`${manager} --version`);\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Detect available package managers asynchronously and cache results\r\n */\r\nexport async function detectPackageManagers() {\r\n const managers = [\"npm\"];\r\n const checks = [checkManager(\"yarn\"), checkManager(\"pnpm\")];\r\n\r\n const [hasYarn, hasPnpm] = await Promise.all(checks);\r\n\r\n if (hasYarn) managers.push(\"yarn\");\r\n if (hasPnpm) managers.push(\"pnpm\");\r\n\r\n cachedSystemManagers = managers;\r\n\r\n // Determine preference\r\n const runningPm = detectPackageManager()?.name;\r\n if (runningPm && runningPm !== \"npm\") {\r\n cachedPreferredManager = runningPm;\r\n } else if (hasYarn) {\r\n cachedPreferredManager = \"yarn\";\r\n } else if (hasPnpm) {\r\n cachedPreferredManager = \"pnpm\";\r\n } else {\r\n cachedPreferredManager = \"npm\";\r\n }\r\n}\r\n\r\n/**\r\n * Get available package managers on the system\r\n */\r\nexport function getSystemPackageManagers(): string[] {\r\n if (cachedSystemManagers) return cachedSystemManagers;\r\n\r\n const managers = [\"npm\"]; // npm is assumed to be always available\r\n\r\n if (isInstalled(\"yarn\")) {\r\n managers.push(\"yarn\");\r\n }\r\n\r\n if (isInstalled(\"pnpm\")) {\r\n managers.push(\"pnpm\");\r\n }\r\n\r\n return managers;\r\n}\r\n\r\n/**\r\n * Get the preferred package manager based on priority\r\n */\r\nexport function getPreferredPackageManager(): string {\r\n if (cachedPreferredManager) return cachedPreferredManager;\r\n\r\n // Priority 1: The manager currently running the script\r\n const runningPm = detectPackageManager()?.name;\r\n if (runningPm && runningPm !== \"npm\") return runningPm;\r\n\r\n // Priority 2: Yarn (if installed)\r\n if (isInstalled(\"yarn\")) return \"yarn\";\r\n\r\n // Priority 3: pnpm (if installed)\r\n if (isInstalled(\"pnpm\")) return \"pnpm\";\r\n\r\n // Priority 4: npm (default)\r\n return \"npm\";\r\n}\r\n\r\nexport function setPackageManager(packageManager: string) {\r\n detectedPackageManager = packageManager;\r\n}\r\n\r\nexport function installCommand() {\r\n return `${getPackageManager()} install`;\r\n}\r\n\r\nexport function startCommand() {\r\n if (getPackageManager() === \"npm\") return \"npm run dev\";\r\n\r\n return `${getPackageManager()} dev`;\r\n}\r\n\r\nexport function runPackageManagerCommand(command: string) {\r\n const packageManager = getPackageManager();\r\n\r\n if (packageManager === \"npm\") return `npm run ${command}`;\r\n\r\n return `${packageManager} ${command}`;\r\n}\r\n"],"mappings":";;;;;AAIA,MAAM,YAAY,UAAU,IAAI;AAEhC,IAAI;AACJ,IAAI;AACJ,IAAI;AAEJ,SAAgB,oBAAoB;CAClC,IAAI,wBACF,OAAO;CAGT,OAAO,2BAA2B;AACpC;;;;AAKA,SAAS,YAAY,SAA0B;CAC7C,IAAI;EACF,SAAS,GAAG,QAAQ,aAAa,EAAE,OAAO,SAAS,CAAC;EACpD,OAAO;CACT,QAAQ;EACN,OAAO;CACT;AACF;;;;AAKA,eAAe,aAAa,SAAmC;CAC7D,IAAI;EACF,MAAM,UAAU,GAAG,QAAQ,WAAW;EACtC,OAAO;CACT,QAAQ;EACN,OAAO;CACT;AACF;;;;AAKA,eAAsB,wBAAwB;CAC5C,MAAM,WAAW,CAAC,KAAK;CACvB,MAAM,SAAS,CAAC,aAAa,MAAM,GAAG,aAAa,MAAM,CAAC;CAE1D,MAAM,CAAC,SAAS,WAAW,MAAM,QAAQ,IAAI,MAAM;CAEnD,IAAI,SAAS,SAAS,KAAK,MAAM;CACjC,IAAI,SAAS,SAAS,KAAK,MAAM;CAEjC,uBAAuB;CAGvB,MAAM,YAAY,qBAAqB,GAAG;CAC1C,IAAI,aAAa,cAAc,OAC7B,yBAAyB;MACpB,IAAI,SACT,yBAAyB;MACpB,IAAI,SACT,yBAAyB;MAEzB,yBAAyB;AAE7B;;;;AAKA,SAAgB,2BAAqC;CACnD,IAAI,sBAAsB,OAAO;CAEjC,MAAM,WAAW,CAAC,KAAK;CAEvB,IAAI,YAAY,MAAM,GACpB,SAAS,KAAK,MAAM;CAGtB,IAAI,YAAY,MAAM,GACpB,SAAS,KAAK,MAAM;CAGtB,OAAO;AACT;;;;AAKA,SAAgB,6BAAqC;CACnD,IAAI,wBAAwB,OAAO;CAGnC,MAAM,YAAY,qBAAqB,GAAG;CAC1C,IAAI,aAAa,cAAc,OAAO,OAAO;CAG7C,IAAI,YAAY,MAAM,GAAG,OAAO;CAGhC,IAAI,YAAY,MAAM,GAAG,OAAO;CAGhC,OAAO;AACT;AAEA,SAAgB,kBAAkB,gBAAwB;CACxD,yBAAyB;AAC3B;AAYA,SAAgB,yBAAyB,SAAiB;CACxD,MAAM,iBAAiB,kBAAkB;CAEzC,IAAI,mBAAmB,OAAO,OAAO,WAAW;CAEhD,OAAO,GAAG,eAAe,GAAG;AAC9B"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import { fileURLToPath } from "url";
|
|
3
|
+
|
|
4
|
+
//#region ../../@warlock.js/create-warlock/src/helpers/paths.ts
|
|
5
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = path.dirname(__filename);
|
|
7
|
+
function template(templateName) {
|
|
8
|
+
return path.resolve(__dirname, "../", "../", "templates", templateName);
|
|
9
|
+
}
|
|
10
|
+
function packageRoot(...paths) {
|
|
11
|
+
return path.resolve(__dirname, "../", "../", ...paths);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
//#endregion
|
|
15
|
+
export { packageRoot, template };
|
|
16
|
+
//# sourceMappingURL=paths.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.mjs","names":[],"sources":["../../../../../../@warlock.js/create-warlock/src/helpers/paths.ts"],"sourcesContent":["import path from \"path\";\r\nimport { fileURLToPath } from \"url\";\r\n\r\nconst __filename = fileURLToPath(import.meta.url);\r\n\r\nconst __dirname = path.dirname(__filename);\r\n\r\nexport type Template = \"warlock\";\r\n\r\nexport function template(templateName: Template): string {\r\n return path.resolve(__dirname, \"../\", \"../\", \"templates\", templateName);\r\n}\r\n\r\nexport function packageRoot(...paths: string[]): string {\r\n return path.resolve(__dirname, \"../\", \"../\", ...paths);\r\n}\r\n"],"mappings":";;;;AAGA,MAAM,aAAa,cAAc,OAAO,KAAK,GAAG;AAEhD,MAAM,YAAY,KAAK,QAAQ,UAAU;AAIzC,SAAgB,SAAS,cAAgC;CACvD,OAAO,KAAK,QAAQ,WAAW,OAAO,OAAO,aAAa,YAAY;AACxE;AAEA,SAAgB,YAAY,GAAG,OAAyB;CACtD,OAAO,KAAK,QAAQ,WAAW,OAAO,OAAO,GAAG,KAAK;AACvD"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { executeCommand } from "./exec.mjs";
|
|
2
|
+
import "./package-manager.mjs";
|
|
3
|
+
import "./paths.mjs";
|
|
4
|
+
import "@clack/prompts";
|
|
5
|
+
import { colors } from "@mongez/copper";
|
|
6
|
+
import { copyDirectory, getFile, getJsonFile, putFile, putJsonFile, renameFile } from "@warlock.js/fs";
|
|
7
|
+
import path from "path";
|
|
8
|
+
|
|
9
|
+
//#region ../../@warlock.js/create-warlock/src/helpers/project-builder-helpers.ts
|
|
10
|
+
async function initializeGitRepository(appPath) {
|
|
11
|
+
await executeCommand(`git`, ["init"], appPath);
|
|
12
|
+
await executeCommand(`git`, [
|
|
13
|
+
"checkout",
|
|
14
|
+
"-b",
|
|
15
|
+
"main"
|
|
16
|
+
], appPath);
|
|
17
|
+
await executeCommand(`git`, ["add", "."], appPath);
|
|
18
|
+
await executeCommand(`git`, [
|
|
19
|
+
"commit",
|
|
20
|
+
"-m",
|
|
21
|
+
"Initial commit âš¡ï¸"
|
|
22
|
+
], appPath);
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
//#endregion
|
|
27
|
+
export { initializeGitRepository };
|
|
28
|
+
//# sourceMappingURL=project-builder-helpers.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-builder-helpers.mjs","names":[],"sources":["../../../../../../@warlock.js/create-warlock/src/helpers/project-builder-helpers.ts"],"sourcesContent":["import { outro } from \"@clack/prompts\";\r\nimport { colors } from \"@mongez/copper\";\r\nimport {\r\n copyDirectory,\r\n getFile,\r\n getJsonFile,\r\n putFile,\r\n putJsonFile,\r\n renameFile,\r\n} from \"@warlock.js/fs\";\r\nimport path from \"path\";\r\nimport { executeCommand } from \"./exec\";\r\nimport { startCommand } from \"./package-manager\";\r\nimport { Template, template } from \"./paths\";\r\n\r\nexport async function initializeGitRepository(appPath: string) {\r\n // initialize git repository\r\n await executeCommand(`git`, [\"init\"], appPath);\r\n // switching to `main` branch\r\n await executeCommand(`git`, [\"checkout\", \"-b\", \"main\"], appPath);\r\n\r\n // add files\r\n await executeCommand(`git`, [\"add\", \".\"], appPath);\r\n\r\n // commit files\r\n await executeCommand(`git`, [\"commit\", \"-m\", \"Initial commit âš¡ï¸\"], appPath);\r\n\r\n return true;\r\n}\r\n\r\nexport async function updateEnvFile(appPath: string, appName: string) {\r\n // update package.json file\r\n const packageJson: any = getJsonFile(path.resolve(appPath, \"package.json\"));\r\n\r\n packageJson.name = appName;\r\n\r\n putJsonFile(path.resolve(appPath, \"package.json\"), packageJson);\r\n\r\n // update env file\r\n const dotEnv = getFile(path.resolve(appPath, \".env\"))\r\n .replace(\"AppName\", appName)\r\n .replace(\r\n \"AppCodeName\",\r\n appName\r\n .split(/-|_/g)\r\n .map(word => word[0])\r\n .join(\"\"),\r\n );\r\n\r\n putFile(path.resolve(appPath, \".env\"), dotEnv);\r\n\r\n // update .env.production file\r\n let dotEnvProduction = getFile(path.resolve(appPath, \".env.shared\"));\r\n\r\n dotEnvProduction = dotEnvProduction.replace(\"AppName\", appName).replace(\r\n \"AppCodeName\",\r\n appName\r\n .split(/-|_/g)\r\n .map(word => word[0])\r\n .join(\"\"),\r\n );\r\n\r\n putFile(path.resolve(appPath, \".env.shared\"), dotEnvProduction);\r\n}\r\n\r\nexport async function copyTemplateFiles(\r\n templateName: Template,\r\n appPath: string,\r\n _appName: string,\r\n) {\r\n // copy project files\r\n copyDirectory(template(templateName), appPath);\r\n\r\n // replace _.gitignore to\r\n renameFile(\r\n path.resolve(appPath, \"_.gitignore\"),\r\n path.resolve(appPath, \".gitignore\"),\r\n );\r\n}\r\n\r\nexport async function allDone(appName: string) {\r\n outro(\r\n \"🌟 Awesome! Your project is ready to rock! \" +\r\n \"Run the following command to start development:\",\r\n );\r\n\r\n console.log(colors.cyan(`cd ${appName} && ${startCommand()}`));\r\n\r\n console.log();\r\n\r\n console.log(\r\n `💡 Pro tip: Install the ${colors.yellow(\r\n \"Generator Z\",\r\n )} extension in VSCode for helpful code snippets and productivity boosters! 🚀`,\r\n );\r\n}\r\n"],"mappings":";;;;;;;;;AAeA,eAAsB,wBAAwB,SAAiB;CAE7D,MAAM,eAAe,OAAO,CAAC,MAAM,GAAG,OAAO;CAE7C,MAAM,eAAe,OAAO;EAAC;EAAY;EAAM;CAAM,GAAG,OAAO;CAG/D,MAAM,eAAe,OAAO,CAAC,OAAO,GAAG,GAAG,OAAO;CAGjD,MAAM,eAAe,OAAO;EAAC;EAAU;EAAM;CAAuB,GAAG,OAAO;CAE9E,OAAO;AACT"}
|
package/esm/index.d.mts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CliFlags } from "./commands/create-new-app/types.mjs";
|
|
2
|
+
|
|
3
|
+
//#region ../../@warlock.js/create-warlock/src/index.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Parse the scaffolder's own CLI flags for non-interactive mode.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* create-warlock my-app --db=postgres --features=test,herald --ai=openai,anthropic --yes
|
|
9
|
+
*/
|
|
10
|
+
declare function parseFlags(argv: string[]): CliFlags;
|
|
11
|
+
declare function createApp(): void;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { createApp as default, parseFlags };
|
|
14
|
+
//# sourceMappingURL=index.d.mts.map
|
package/esm/index.mjs
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import createNewApp from "./commands/create-new-app/index.mjs";
|
|
2
|
+
|
|
3
|
+
//#region ../../@warlock.js/create-warlock/src/index.ts
|
|
4
|
+
const valueFlags = [
|
|
5
|
+
"name",
|
|
6
|
+
"db",
|
|
7
|
+
"pm",
|
|
8
|
+
"features",
|
|
9
|
+
"ai"
|
|
10
|
+
];
|
|
11
|
+
/**
|
|
12
|
+
* Parse the scaffolder's own CLI flags for non-interactive mode.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* create-warlock my-app --db=postgres --features=test,herald --ai=openai,anthropic --yes
|
|
16
|
+
*/
|
|
17
|
+
function parseFlags(argv) {
|
|
18
|
+
const flags = {};
|
|
19
|
+
const positionals = [];
|
|
20
|
+
for (let i = 0; i < argv.length; i++) {
|
|
21
|
+
const arg = argv[i];
|
|
22
|
+
if (!arg.startsWith("-")) {
|
|
23
|
+
positionals.push(arg);
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
const equalIndex = arg.indexOf("=");
|
|
27
|
+
const key = (equalIndex === -1 ? arg : arg.slice(0, equalIndex)).replace(/^-+/, "");
|
|
28
|
+
let value = equalIndex === -1 ? void 0 : arg.slice(equalIndex + 1);
|
|
29
|
+
if (valueFlags.includes(key) && value === void 0) {
|
|
30
|
+
const next = argv[i + 1];
|
|
31
|
+
if (next && !next.startsWith("-")) {
|
|
32
|
+
value = next;
|
|
33
|
+
i++;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
switch (key) {
|
|
37
|
+
case "yes":
|
|
38
|
+
case "y":
|
|
39
|
+
flags.yes = true;
|
|
40
|
+
break;
|
|
41
|
+
case "git":
|
|
42
|
+
flags.git = true;
|
|
43
|
+
break;
|
|
44
|
+
case "no-git":
|
|
45
|
+
flags.git = false;
|
|
46
|
+
break;
|
|
47
|
+
case "jwt":
|
|
48
|
+
flags.jwt = true;
|
|
49
|
+
break;
|
|
50
|
+
case "no-jwt":
|
|
51
|
+
flags.jwt = false;
|
|
52
|
+
break;
|
|
53
|
+
case "name":
|
|
54
|
+
flags.name = value;
|
|
55
|
+
break;
|
|
56
|
+
case "db":
|
|
57
|
+
flags.db = value;
|
|
58
|
+
break;
|
|
59
|
+
case "pm":
|
|
60
|
+
flags.pm = value;
|
|
61
|
+
break;
|
|
62
|
+
case "features":
|
|
63
|
+
flags.features = splitList(value);
|
|
64
|
+
break;
|
|
65
|
+
case "ai":
|
|
66
|
+
flags.ai = splitList(value);
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (!flags.name && positionals.length > 0) flags.name = positionals[0];
|
|
71
|
+
return flags;
|
|
72
|
+
}
|
|
73
|
+
function splitList(value) {
|
|
74
|
+
if (!value) return [];
|
|
75
|
+
return value.split(",").map((item) => item.trim()).filter(Boolean);
|
|
76
|
+
}
|
|
77
|
+
function createApp() {
|
|
78
|
+
createNewApp(parseFlags(process.argv.slice(2)));
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
//#endregion
|
|
82
|
+
export { createApp as default, parseFlags };
|
|
83
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../../@warlock.js/create-warlock/src/index.ts"],"sourcesContent":["import createNewApp from \"./commands/create-new-app\";\nimport { CliFlags } from \"./commands/create-new-app/types\";\n\nconst valueFlags = [\"name\", \"db\", \"pm\", \"features\", \"ai\"];\n\n/**\n * Parse the scaffolder's own CLI flags for non-interactive mode.\n *\n * @example\n * create-warlock my-app --db=postgres --features=test,herald --ai=openai,anthropic --yes\n */\nexport function parseFlags(argv: string[]): CliFlags {\n const flags: CliFlags = {};\n const positionals: string[] = [];\n\n for (let i = 0; i < argv.length; i++) {\n const arg = argv[i];\n\n if (!arg.startsWith(\"-\")) {\n positionals.push(arg);\n continue;\n }\n\n const equalIndex = arg.indexOf(\"=\");\n const key = (equalIndex === -1 ? arg : arg.slice(0, equalIndex)).replace(/^-+/, \"\");\n let value: string | undefined = equalIndex === -1 ? undefined : arg.slice(equalIndex + 1);\n\n // Value-taking flags may use either `--key=value` or `--key value`.\n if (valueFlags.includes(key) && value === undefined) {\n const next = argv[i + 1];\n\n if (next && !next.startsWith(\"-\")) {\n value = next;\n i++;\n }\n }\n\n switch (key) {\n case \"yes\":\n case \"y\":\n flags.yes = true;\n break;\n case \"git\":\n flags.git = true;\n break;\n case \"no-git\":\n flags.git = false;\n break;\n case \"jwt\":\n flags.jwt = true;\n break;\n case \"no-jwt\":\n flags.jwt = false;\n break;\n case \"name\":\n flags.name = value;\n break;\n case \"db\":\n flags.db = value;\n break;\n case \"pm\":\n flags.pm = value;\n break;\n case \"features\":\n flags.features = splitList(value);\n break;\n case \"ai\":\n flags.ai = splitList(value);\n break;\n }\n }\n\n if (!flags.name && positionals.length > 0) {\n flags.name = positionals[0];\n }\n\n return flags;\n}\n\nfunction splitList(value: string | undefined): string[] {\n if (!value) return [];\n\n return value\n .split(\",\")\n .map(item => item.trim())\n .filter(Boolean);\n}\n\nexport default function createApp() {\n const flags = parseFlags(process.argv.slice(2));\n\n createNewApp(flags);\n}\n"],"mappings":";;;AAGA,MAAM,aAAa;CAAC;CAAQ;CAAM;CAAM;CAAY;AAAI;;;;;;;AAQxD,SAAgB,WAAW,MAA0B;CACnD,MAAM,QAAkB,CAAC;CACzB,MAAM,cAAwB,CAAC;CAE/B,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;EACpC,MAAM,MAAM,KAAK;EAEjB,IAAI,CAAC,IAAI,WAAW,GAAG,GAAG;GACxB,YAAY,KAAK,GAAG;GACpB;EACF;EAEA,MAAM,aAAa,IAAI,QAAQ,GAAG;EAClC,MAAM,OAAO,eAAe,KAAK,MAAM,IAAI,MAAM,GAAG,UAAU,GAAG,QAAQ,OAAO,EAAE;EAClF,IAAI,QAA4B,eAAe,KAAK,SAAY,IAAI,MAAM,aAAa,CAAC;EAGxF,IAAI,WAAW,SAAS,GAAG,KAAK,UAAU,QAAW;GACnD,MAAM,OAAO,KAAK,IAAI;GAEtB,IAAI,QAAQ,CAAC,KAAK,WAAW,GAAG,GAAG;IACjC,QAAQ;IACR;GACF;EACF;EAEA,QAAQ,KAAR;GACE,KAAK;GACL,KAAK;IACH,MAAM,MAAM;IACZ;GACF,KAAK;IACH,MAAM,MAAM;IACZ;GACF,KAAK;IACH,MAAM,MAAM;IACZ;GACF,KAAK;IACH,MAAM,MAAM;IACZ;GACF,KAAK;IACH,MAAM,MAAM;IACZ;GACF,KAAK;IACH,MAAM,OAAO;IACb;GACF,KAAK;IACH,MAAM,KAAK;IACX;GACF,KAAK;IACH,MAAM,KAAK;IACX;GACF,KAAK;IACH,MAAM,WAAW,UAAU,KAAK;IAChC;GACF,KAAK;IACH,MAAM,KAAK,UAAU,KAAK;IAC1B;EACJ;CACF;CAEA,IAAI,CAAC,MAAM,QAAQ,YAAY,SAAS,GACtC,MAAM,OAAO,YAAY;CAG3B,OAAO;AACT;AAEA,SAAS,UAAU,OAAqC;CACtD,IAAI,CAAC,OAAO,OAAO,CAAC;CAEpB,OAAO,MACJ,MAAM,GAAG,EACT,KAAI,SAAQ,KAAK,KAAK,CAAC,EACvB,OAAO,OAAO;AACnB;AAEA,SAAwB,YAAY;CAGlC,aAFc,WAAW,QAAQ,KAAK,MAAM,CAAC,CAE5B,CAAC;AACpB"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import {colors}from
|
|
1
|
+
import { colors } from "@mongez/copper";
|
|
2
|
+
|
|
3
|
+
//#region ../../@warlock.js/create-warlock/src/ui/banner.ts
|
|
4
|
+
const warlockTextAnsi = `
|
|
2
5
|
\x1b[49m
|
|
3
6
|
\x1b[49m \x1b[38;2;252;238;36m██╗ ██╗ █████╗ ██████╗ ██╗ ██████╗ ██████╗██╗ ██╗ \x1b[38;2;252;238;36m ██╗ ███████╗\x1b[m
|
|
4
7
|
\x1b[49m \x1b[38;2;250;235;34m██║ ██║██╔══██╗██╔══██╗██║ ██╔═══██╗██╔════╝██║ ██╔╝ \x1b[38;2;250;235;34m ██║ ██╔════╝\x1b[m
|
|
@@ -34,13 +37,12 @@ const warlockLogoAnsi = `\x1b[49m
|
|
|
34
37
|
\x1b[49m \x1b[49;38;2;242;230;89m▀\x1b[49;38;2;247;232;50m▀\x1b[38;2;244;227;72;48;2;249;233;28m▄\x1b[38;2;244;218;55;48;2;252;231;23m▄\x1b[49;38;2;250;215;37m▀\x1b[49;38;2;244;206;65m▀\x1b[49m \x1b[m
|
|
35
38
|
`;
|
|
36
39
|
/**
|
|
37
|
-
|
|
38
|
-
|
|
40
|
+
* Get the intro banner with ASCII art
|
|
41
|
+
*/
|
|
39
42
|
function getIntroBanner(version) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
return `
|
|
43
|
+
const versionLine = `v${version}`;
|
|
44
|
+
const padding = " ".repeat(35 - versionLine.length);
|
|
45
|
+
return `
|
|
44
46
|
${colors.magentaBright("╭──────────────────────────────────────╮")}
|
|
45
47
|
${colors.magentaBright("│")} ${colors.magentaBright("│")}
|
|
46
48
|
${colors.magentaBright("│")} 🧙 ${colors.bold(colors.yellowBright("WARLOCK.JS"))} ${colors.magentaBright("│")}
|
|
@@ -52,66 +54,44 @@ function getIntroBanner(version) {
|
|
|
52
54
|
`;
|
|
53
55
|
}
|
|
54
56
|
/**
|
|
55
|
-
|
|
56
|
-
|
|
57
|
+
* Display the intro banner
|
|
58
|
+
*/
|
|
57
59
|
function showIntroBanner(version) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
60
|
+
console.log(warlockLogoAnsi);
|
|
61
|
+
console.log(warlockTextAnsi);
|
|
62
|
+
console.log(getIntroBanner(version));
|
|
61
63
|
}
|
|
62
64
|
/**
|
|
63
|
-
|
|
64
|
-
|
|
65
|
+
* Get the success screen with project summary
|
|
66
|
+
*/
|
|
65
67
|
function getSuccessScreen(options) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
// Calculate visible length for padding
|
|
94
|
-
const contentVisibleLength = 3 + 10 + value.length;
|
|
95
|
-
const remaining = boxWidth - 2 - contentVisibleLength; // -2 for borders
|
|
96
|
-
return (colors.magentaBright("│") +
|
|
97
|
-
" " +
|
|
98
|
-
labelPart +
|
|
99
|
-
valuePart +
|
|
100
|
-
" ".repeat(remaining) +
|
|
101
|
-
colors.magentaBright("│"));
|
|
102
|
-
};
|
|
103
|
-
const emptyLine = colors.magentaBright("│") +
|
|
104
|
-
" ".repeat(boxWidth - 2) +
|
|
105
|
-
colors.magentaBright("│");
|
|
106
|
-
const headerText = "🎉 YOUR PROJECT IS READY! 🎉";
|
|
107
|
-
const headerPadding = Math.floor((boxWidth - 2 - headerText.length) / 2);
|
|
108
|
-
const headerLine = colors.magentaBright("│") +
|
|
109
|
-
" ".repeat(headerPadding) +
|
|
110
|
-
colors.bold(colors.green(headerText)) +
|
|
111
|
-
" ".repeat(boxWidth - 2 - headerPadding - headerText.length) +
|
|
112
|
-
colors.magentaBright("│");
|
|
113
|
-
const devCommand = packageManager === "npm" ? "npm run dev" : `${packageManager} dev`;
|
|
114
|
-
return `
|
|
68
|
+
const { projectName, database, features, packageManager } = options;
|
|
69
|
+
let featuresText = features.join(", ");
|
|
70
|
+
if (features.length === 0) featuresText = "none";
|
|
71
|
+
const baseLabelLength = 10;
|
|
72
|
+
const padding = 6;
|
|
73
|
+
const projectLineLen = projectName.length + baseLabelLength;
|
|
74
|
+
const dbLineLen = database.length + baseLabelLength;
|
|
75
|
+
const featuresLineLen = featuresText.length + baseLabelLength;
|
|
76
|
+
const boxWidth = Math.max(projectLineLen, dbLineLen, featuresLineLen, 40) + padding + 2;
|
|
77
|
+
const createBorder = (start, end) => colors.magentaBright(start + "─".repeat(boxWidth - 2) + end);
|
|
78
|
+
const padLine = (label, value, isFeature = false) => {
|
|
79
|
+
const valueColor = (text) => {
|
|
80
|
+
if (isFeature && text === "none") return colors.dim(text);
|
|
81
|
+
return colors.white(text);
|
|
82
|
+
};
|
|
83
|
+
const labelPart = colors.dim(label.padEnd(10));
|
|
84
|
+
const valuePart = valueColor(value);
|
|
85
|
+
const contentVisibleLength = 13 + value.length;
|
|
86
|
+
const remaining = boxWidth - 2 - contentVisibleLength;
|
|
87
|
+
return colors.magentaBright("│") + " " + labelPart + valuePart + " ".repeat(remaining) + colors.magentaBright("│");
|
|
88
|
+
};
|
|
89
|
+
const emptyLine = colors.magentaBright("│") + " ".repeat(boxWidth - 2) + colors.magentaBright("│");
|
|
90
|
+
const headerText = "🎉 YOUR PROJECT IS READY! 🎉";
|
|
91
|
+
const headerPadding = Math.floor((boxWidth - 2 - 28) / 2);
|
|
92
|
+
const headerLine = colors.magentaBright("│") + " ".repeat(headerPadding) + colors.bold(colors.green(headerText)) + " ".repeat(boxWidth - 2 - headerPadding - 28) + colors.magentaBright("│");
|
|
93
|
+
const devCommand = packageManager === "npm" ? "npm run dev" : `${packageManager} dev`;
|
|
94
|
+
return `
|
|
115
95
|
${createBorder("╭", "╮")}
|
|
116
96
|
${emptyLine}
|
|
117
97
|
${headerLine}
|
|
@@ -135,8 +115,12 @@ function getSuccessScreen(options) {
|
|
|
135
115
|
`;
|
|
136
116
|
}
|
|
137
117
|
/**
|
|
138
|
-
|
|
139
|
-
|
|
118
|
+
* Display the success screen
|
|
119
|
+
*/
|
|
140
120
|
function showSuccessScreen(options) {
|
|
141
|
-
|
|
142
|
-
}
|
|
121
|
+
console.log(getSuccessScreen(options));
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
//#endregion
|
|
125
|
+
export { showIntroBanner, showSuccessScreen };
|
|
126
|
+
//# sourceMappingURL=banner.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.mjs","names":[],"sources":["../../../../../../@warlock.js/create-warlock/src/ui/banner.ts"],"sourcesContent":["import { colors } from \"@mongez/copper\";\n\nexport const warlockTextAnsi = `\n\\x1b[49m\n\\x1b[49m \\x1b[38;2;252;238;36m██╗ ██╗ █████╗ ██████╗ ██╗ ██████╗ ██████╗██╗ ██╗ \\x1b[38;2;252;238;36m ██╗ ███████╗\\x1b[m\n\\x1b[49m \\x1b[38;2;250;235;34m██║ ██║██╔══██╗██╔══██╗██║ ██╔═══██╗██╔════╝██║ ██╔╝ \\x1b[38;2;250;235;34m ██║ ██╔════╝\\x1b[m\n\\x1b[49m \\x1b[38;2;248;233;32m██║ █╗ ██║███████║██████╔╝██║ ██║ ██║██║ █████╔╝ \\x1b[38;2;248;233;32m ██║ ███████╗\\x1b[m\n\\x1b[49m \\x1b[38;2;246;231;30m██║███╗██║██╔══██║██╔══██╗██║ ██║ ██║██║ ██╔═██╗ \\x1b[38;2;246;231;30m██ ██║ ╚════██║\\x1b[m\n\\x1b[49m \\x1b[38;2;244;229;28m╚███╔███╔╝██║ ██║██║ ██║███████╗╚██████╔╝╚██████╗██║ ██╗ \\x1b[38;2;244;229;28m╚█████╔╝ ███████║\\x1b[m\n\\x1b[49m \\x1b[38;2;242;227;26m ╚══╝╚══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═════╝╚═╝ ╚═╝ \\x1b[38;2;242;227;26m ╚════╝ ╚══════╝\\x1b[m\n\\x1b[49m\n`;\n\nexport const warlockLogoAnsi = `\\x1b[49m \\x1b[38;2;247;232;77;49m▄\\x1b[38;2;235;228;105;49m▄\\x1b[49m \\x1b[m\n\\x1b[49m \\x1b[38;2;247;241;62;49m▄\\x1b[38;2;251;243;29;48;2;245;240;69m▄\\x1b[38;2;224;224;112;48;2;246;238;52m▄\\x1b[49m \\x1b[38;2;246;240;65;49m▄\\x1b[38;2;252;238;32;48;2;250;237;68m▄\\x1b[38;2;246;236;76;48;2;246;237;52m▄\\x1b[49m \\x1b[m\n\\x1b[49m \\x1b[38;2;245;234;80;49m▄\\x1b[38;2;246;238;58;49m▄\\x1b[49m \\x1b[49;38;2;240;232;72m▀\\x1b[49;38;2;237;237;100m▀\\x1b[49m \\x1b[38;2;236;236;132;49m▄\\x1b[38;2;253;244;30;48;2;255;235;78m▄\\x1b[38;2;254;233;21;48;2;247;240;49m▄\\x1b[38;2;249;206;52;48;2;253;234;25m▄\\x1b[49;38;2;246;212;65m▀\\x1b[49m \\x1b[m\n\\x1b[49m \\x1b[38;2;246;233;50;49m▄\\x1b[38;2;250;235;26;48;2;237;228;118m▄\\x1b[38;2;251;232;21;48;2;249;237;38m▄\\x1b[38;2;249;231;20;48;2;251;234;21m▄\\x1b[38;2;248;230;21;48;2;252;232;20m▄\\x1b[38;2;248;230;21;48;2;248;233;25m▄\\x1b[38;2;248;231;22;48;2;245;236;68m▄\\x1b[38;2;247;233;32;49m▄\\x1b[38;2;242;226;87;49m▄\\x1b[49m \\x1b[38;2;227;227;99;49m▄\\x1b[38;2;250;235;43;49m▄\\x1b[38;2;253;235;28;48;2;244;233;69m▄\\x1b[38;2;254;226;25;48;2;252;237;25m▄\\x1b[38;2;253;199;25;48;2;253;229;24m▄\\x1b[38;2;247;205;73;48;2;253;201;27m▄\\x1b[49;38;2;235;206;88m▀\\x1b[49m \\x1b[m\n\\x1b[49m \\x1b[38;2;239;226;86;49m▄\\x1b[38;2;250;235;34;49m▄\\x1b[38;2;252;234;19;48;2;243;231;71m▄\\x1b[38;2;251;233;19;48;2;251;234;28m▄\\x1b[38;2;250;233;19;48;2;251;233;20m▄\\x1b[38;2;251;233;20;48;2;250;232;20m▄\\x1b[38;2;253;235;25;48;2;251;231;20m▄\\x1b[38;2;245;232;53;48;2;251;232;20m▄\\x1b[38;2;245;228;57;48;2;250;232;22m▄\\x1b[38;2;247;229;39;48;2;248;231;22m▄\\x1b[38;2;247;232;22;48;2;248;229;21m▄\\x1b[38;2;247;231;21;48;2;248;229;20m▄\\x1b[38;2;247;230;20;48;2;247;230;22m▄\\x1b[38;2;248;230;20;48;2;246;234;38m▄\\x1b[38;2;250;232;28;48;2;239;230;123m▄\\x1b[38;2;250;231;49;49m▄\\x1b[38;2;235;216;78;49m▄\\x1b[49m \\x1b[38;2;246;235;53;49m▄\\x1b[38;2;251;236;23;48;2;244;232;75m▄\\x1b[38;2;252;233;21;48;2;252;236;27m▄\\x1b[38;2;253;227;26;48;2;253;233;23m▄\\x1b[38;2;253;201;29;48;2;253;228;30m▄\\x1b[38;2;253;199;27;48;2;253;201;26m▄\\x1b[38;2;232;197;104;48;2;249;201;47m▄\\x1b[49m \\x1b[m\n\\x1b[49m \\x1b[38;2;247;232;50;49m▄\\x1b[38;2;250;233;28;48;2;245;226;98m▄\\x1b[38;2;252;232;20;48;2;249;234;40m▄\\x1b[38;2;251;231;20;48;2;253;236;23m▄\\x1b[38;2;251;232;20;48;2;252;233;19m▄\\x1b[38;2;252;234;22;48;2;250;233;19m▄\\x1b[38;2;250;235;38;48;2;251;233;20m▄\\x1b[38;2;241;231;68;48;2;252;235;24m▄\\x1b[49;38;2;249;234;47m▀\\x1b[49;38;2;242;229;78m▀\\x1b[49m \\x1b[49;38;2;247;229;54m▀\\x1b[38;2;241;227;99;48;2;247;231;33m▄\\x1b[38;2;248;233;50;48;2;247;232;22m▄\\x1b[38;2;250;229;28;48;2;249;230;22m▄\\x1b[38;2;254;226;26;48;2;253;224;23m▄\\x1b[38;2;235;221;94;48;2;249;221;35m▄\\x1b[49m \\x1b[38;2;243;237;61;49m▄\\x1b[38;2;251;237;28;48;2;243;236;87m▄\\x1b[38;2;251;234;20;48;2;250;236;36m▄\\x1b[38;2;252;232;21;48;2;252;234;21m▄\\x1b[38;2;251;225;23;48;2;251;232;21m▄\\x1b[38;2;250;198;26;48;2;251;225;24m▄\\x1b[38;2;253;197;26;48;2;251;199;27m▄\\x1b[38;2;252;200;38;48;2;255;199;28m▄\\x1b[49;38;2;245;202;65m▀\\x1b[49m \\x1b[m\n\\x1b[49m \\x1b[38;2;244;235;52;48;2;219;219;128m▄\\x1b[38;2;247;234;53;49m▄\\x1b[38;2;235;216;118;49m▄\\x1b[49m \\x1b[38;2;246;236;50;49m▄\\x1b[38;2;253;238;21;48;2;249;234;58m▄\\x1b[38;2;251;234;20;48;2;250;236;33m▄\\x1b[38;2;251;233;19;48;2;252;234;21m▄\\x1b[38;2;252;233;21;48;2;251;232;19m▄\\x1b[38;2;252;233;26;48;2;251;231;20m▄\\x1b[38;2;249;233;43;48;2;253;233;21m▄\\x1b[49;38;2;252;236;30m▀\\x1b[49;38;2;246;236;57m▀\\x1b[49m \\x1b[38;2;242;235;87;49m▄\\x1b[49m \\x1b[49;38;2;246;229;106m▀\\x1b[49;38;2;247;227;62m▀\\x1b[49m \\x1b[49;38;2;248;237;47m▀\\x1b[38;2;245;232;62;48;2;247;234;35m▄\\x1b[38;2;253;231;26;48;2;252;234;23m▄\\x1b[38;2;253;204;27;48;2;253;226;23m▄\\x1b[38;2;252;199;34;48;2;252;200;26m▄\\x1b[38;2;247;203;52;48;2;253;197;26m▄\\x1b[49;38;2;251;199;35m▀\\x1b[49;38;2;241;207;96m▀\\x1b[49m \\x1b[38;2;246;238;65;49m▄\\x1b[38;2;250;226;39;49m▄\\x1b[38;2;238;221;59;49m▄\\x1b[49m \\x1b[m\n\\x1b[49m \\x1b[38;2;242;235;52;48;2;248;235;48m▄\\x1b[38;2;251;234;24;48;2;251;234;23m▄\\x1b[38;2;251;232;21;48;2;250;237;38m▄\\x1b[38;2;248;233;20;48;2;244;236;69m▄\\x1b[38;2;246;236;44;49m▄\\x1b[38;2;243;238;64;49m▄\\x1b[49m \\x1b[49;38;2;235;228;87m▀\\x1b[49;38;2;247;231;40m▀\\x1b[38;2;242;230;96;48;2;248;234;24m▄\\x1b[38;2;239;226;78;48;2;252;235;23m▄\\x1b[49;38;2;250;234;35m▀\\x1b[49;38;2;239;233;98m▀\\x1b[49m \\x1b[38;2;252;242;36;48;2;246;243;65m▄\\x1b[38;2;252;240;31;48;2;251;245;46m▄\\x1b[38;2;248;241;106;49m▄\\x1b[49m \\x1b[38;2;241;241;85;49m▄\\x1b[38;2;250;238;34;48;2;244;234;69m▄\\x1b[38;2;246;216;49;48;2;253;234;31m▄\\x1b[38;2;228;215;121;48;2;252;210;33m▄\\x1b[49;38;2;248;205;53m▀\\x1b[49m \\x1b[38;2;238;238;85;49m▄\\x1b[38;2;243;233;63;49m▄\\x1b[38;2;251;237;23;48;2;246;237;79m▄\\x1b[38;2;253;234;22;48;2;247;234;52m▄\\x1b[38;2;253;214;24;48;2;254;233;26m▄\\x1b[38;2;249;210;44;48;2;252;212;31m▄\\x1b[49m \\x1b[m\n\\x1b[49m \\x1b[49;38;2;228;228;67m▀\\x1b[38;2;250;235;32;48;2;252;237;25m▄\\x1b[38;2;252;223;25;48;2;250;227;23m▄\\x1b[38;2;250;213;27;48;2;248;230;19m▄\\x1b[38;2;247;224;25;48;2;247;230;19m▄\\x1b[38;2;247;229;19;48;2;246;233;20m▄\\x1b[38;2;248;231;22;48;2;243;234;51m▄\\x1b[38;2;247;233;22;48;2;236;227;76m▄\\x1b[38;2;243;233;67;49m▄\\x1b[49m \\x1b[38;2;250;238;38;48;2;240;235;82m▄\\x1b[38;2;251;235;20;48;2;253;240;20m▄\\x1b[38;2;252;232;22;48;2;253;235;23m▄\\x1b[38;2;252;237;34;48;2;250;242;52m▄\\x1b[49m \\x1b[49;38;2;242;234;57m▀\\x1b[49;38;2;233;233;78m▀\\x1b[49m \\x1b[38;2;244;233;98;49m▄\\x1b[38;2;251;236;35;49m▄\\x1b[38;2;252;236;22;48;2;243;232;72m▄\\x1b[38;2;252;235;25;48;2;252;239;28m▄\\x1b[38;2;251;233;21;48;2;250;234;20m▄\\x1b[38;2;252;220;25;48;2;251;234;21m▄\\x1b[38;2;251;203;25;48;2;253;229;23m▄\\x1b[38;2;253;205;26;48;2;253;206;25m▄\\x1b[38;2;248;209;53;48;2;250;211;51m▄\\x1b[49m \\x1b[m\n\\x1b[49m \\x1b[49;38;2;242;230;81m▀\\x1b[49;38;2;249;218;33m▀\\x1b[38;2;242;212;73;48;2;250;214;26m▄\\x1b[38;2;248;210;32;48;2;251;212;26m▄\\x1b[38;2;248;213;26;48;2;249;210;26m▄\\x1b[38;2;251;214;26;48;2;248;228;27m▄\\x1b[38;2;250;214;27;48;2;250;231;20m▄\\x1b[38;2;248;226;24;48;2;248;232;19m▄\\x1b[38;2;247;231;19;48;2;245;234;26m▄\\x1b[38;2;247;232;20;48;2;240;230;78m▄\\x1b[38;2;245;236;35;49m▄\\x1b[38;2;241;234;86;49m▄\\x1b[49m \\x1b[38;2;250;237;45;49m▄\\x1b[38;2;251;234;20;48;2;251;237;25m▄\\x1b[38;2;248;231;21;48;2;249;233;22m▄\\x1b[38;2;247;230;20;48;2;248;231;21m▄\\x1b[38;2;249;230;21;48;2;252;233;22m▄\\x1b[38;2;252;238;35;48;2;249;239;60m▄\\x1b[49m \\x1b[38;2;223;207;143;49m▄\\x1b[38;2;248;232;43;49m▄\\x1b[38;2;250;233;21;48;2;237;219;109m▄\\x1b[38;2;251;232;20;48;2;249;232;44m▄\\x1b[38;2;252;232;21;48;2;251;233;22m▄\\x1b[38;2;252;230;21;48;2;252;233;20m▄\\x1b[38;2;253;215;26;48;2;253;233;20m▄\\x1b[38;2;253;200;29;48;2;253;228;27m▄\\x1b[38;2;254;203;28;48;2;252;203;26m▄\\x1b[38;2;249;207;48;48;2;252;203;26m▄\\x1b[38;2;242;215;74;48;2;253;204;27m▄\\x1b[49;38;2;249;209;50m▀\\x1b[49;38;2;241;213;99m▀\\x1b[49m \\x1b[m\n\\x1b[49m \\x1b[49;38;2;243;213;61m▀\\x1b[38;2;231;219;85;48;2;248;216;32m▄\\x1b[38;2;245;214;58;48;2;250;215;26m▄\\x1b[38;2;248;214;32;48;2;252;212;27m▄\\x1b[38;2;250;215;26;48;2;249;217;27m▄\\x1b[38;2;250;215;27;48;2;247;227;23m▄\\x1b[38;2;247;220;28;48;2;246;231;20m▄\\x1b[38;2;246;230;21;48;2;246;234;23m▄\\x1b[38;2;251;235;24;48;2;247;237;45m▄\\x1b[38;2;242;237;101;49m▄\\x1b[49m \\x1b[38;2;248;239;63;49m▄\\x1b[38;2;252;235;20;48;2;252;237;26m▄\\x1b[48;2;249;232;20m \\x1b[38;2;250;231;22;48;2;247;230;20m▄\\x1b[38;2;248;232;34;48;2;247;230;21m▄\\x1b[38;2;248;232;22;48;2;248;231;21m▄\\x1b[38;2;249;233;21;48;2;253;235;25m▄\\x1b[38;2;251;240;38;48;2;246;241;79m▄\\x1b[49m \\x1b[38;2;252;237;26;48;2;244;236;59m▄\\x1b[38;2;252;233;20;48;2;250;233;23m▄\\x1b[48;2;251;232;20m \\x1b[38;2;252;230;22;48;2;251;231;20m▄\\x1b[38;2;253;214;24;48;2;251;231;20m▄\\x1b[38;2;253;200;28;48;2;252;225;22m▄\\x1b[38;2;250;203;41;48;2;252;203;26m▄\\x1b[38;2;248;205;64;48;2;253;198;28m▄\\x1b[49;38;2;249;202;46m▀\\x1b[49;38;2;246;207;62m▀\\x1b[49m \\x1b[m\n\\x1b[49m \\x1b[49;38;2;245;216;88m▀\\x1b[49;38;2;246;216;52m▀\\x1b[38;2;242;216;78;48;2;248;216;31m▄\\x1b[38;2;249;217;38;48;2;250;215;27m▄\\x1b[38;2;250;222;30;48;2;247;227;26m▄\\x1b[48;2;248;232;23m \\x1b[38;2;252;237;28;48;2;251;241;41m▄\\x1b[38;2;238;238;119;49m▄\\x1b[49m \\x1b[38;2;243;235;85;49m▄\\x1b[38;2;252;238;21;48;2;252;240;29m▄\\x1b[38;2;252;234;23;48;2;251;234;22m▄\\x1b[38;2;254;234;22;48;2;252;233;22m▄\\x1b[38;2;248;227;59;48;2;251;232;38m▄\\x1b[38;2;244;234;96;48;2;248;235;51m▄\\x1b[38;2;251;238;32;48;2;249;235;24m▄\\x1b[38;2;250;236;23;48;2;249;234;21m▄\\x1b[38;2;252;234;22;48;2;253;236;25m▄\\x1b[38;2;251;244;44;48;2;246;246;103m▄\\x1b[49m \\x1b[38;2;251;240;33;48;2;238;232;81m▄\\x1b[38;2;249;233;21;48;2;251;236;19m▄\\x1b[38;2;253;227;24;48;2;252;231;21m▄\\x1b[38;2;254;204;26;48;2;252;224;23m▄\\x1b[38;2;248;206;55;48;2;253;206;27m▄\\x1b[49;38;2;250;204;40m▀\\x1b[49;38;2;246;207;60m▀\\x1b[49m \\x1b[m\n\\x1b[49m \\x1b[38;2;246;215;54;48;2;242;211;53m▄\\x1b[38;2;253;217;20;48;2;248;216;35m▄\\x1b[38;2;250;221;23;48;2;246;219;57m▄\\x1b[38;2;245;232;39;49m▄\\x1b[38;2;245;234;65;49m▄\\x1b[49m \\x1b[38;2;243;219;121;48;2;250;221;50m▄\\x1b[38;2;252;221;33;48;2;251;222;30m▄\\x1b[38;2;250;228;31;48;2;248;231;26m▄\\x1b[38;2;249;232;23;48;2;251;234;23m▄\\x1b[38;2;253;238;29;48;2;249;242;63m▄\\x1b[49m \\x1b[38;2;235;235;112;49m▄\\x1b[38;2;251;236;21;48;2;251;240;34m▄\\x1b[38;2;250;232;23;48;2;251;234;21m▄\\x1b[38;2;253;230;24;48;2;252;233;23m▄\\x1b[38;2;250;222;52;48;2;251;227;36m▄\\x1b[49m \\x1b[38;2;248;241;69;48;2;248;238;48m▄\\x1b[38;2;251;239;28;48;2;250;238;25m▄\\x1b[38;2;250;236;24;48;2;251;235;23m▄\\x1b[38;2;252;234;23;48;2;252;238;26m▄\\x1b[38;2;248;240;59;48;2;239;239;128m▄\\x1b[49m \\x1b[38;2;247;239;52;48;2;244;233;100m▄\\x1b[38;2;249;234;20;48;2;252;238;23m▄\\x1b[38;2;252;231;22;48;2;250;232;22m▄\\x1b[38;2;253;207;25;48;2;253;216;26m▄\\x1b[38;2;250;208;54;48;2;252;207;37m▄\\x1b[49m \\x1b[38;2;241;227;71;49m▄\\x1b[38;2;247;213;44;49m▄\\x1b[38;2;253;208;29;48;2;237;211;88m▄\\x1b[38;2;254;205;28;48;2;248;213;47m▄\\x1b[49m \\x1b[m\n\\x1b[49m \\x1b[38;2;245;230;60;48;2;242;224;49m▄\\x1b[38;2;249;236;23;48;2;249;233;21m▄\\x1b[38;2;252;235;26;48;2;250;231;20m▄\\x1b[38;2;249;234;30;48;2;249;233;21m▄\\x1b[38;2;254;236;27;48;2;252;236;25m▄\\x1b[38;2;249;238;49;48;2;247;241;52m▄\\x1b[49m \\x1b[38;2;245;216;64;48;2;250;222;59m▄\\x1b[38;2;252;220;31;48;2;252;223;33m▄\\x1b[38;2;249;229;27;48;2;248;231;24m▄\\x1b[38;2;248;230;21;48;2;251;233;22m▄\\x1b[38;2;248;235;29;48;2;242;235;85m▄\\x1b[38;2;251;235;24;48;2;250;242;49m▄\\x1b[38;2;250;231;23;48;2;250;233;22m▄\\x1b[38;2;253;225;23;48;2;252;230;24m▄\\x1b[38;2;250;215;49;48;2;253;222;28m▄\\x1b[49;38;2;244;222;89m▀\\x1b[49m \\x1b[38;2;247;234;63;48;2;248;238;46m▄\\x1b[38;2;251;238;25;48;2;250;237;25m▄\\x1b[38;2;250;233;22;48;2;250;234;21m▄\\x1b[38;2;251;233;21;48;2;252;237;26m▄\\x1b[38;2;244;232;62;49m▄\\x1b[38;2;249;232;21;48;2;252;239;24m▄\\x1b[38;2;250;231;22;48;2;249;231;22m▄\\x1b[38;2;252;212;25;48;2;252;225;23m▄\\x1b[38;2;251;209;55;48;2;253;204;27m▄\\x1b[49;38;2;239;206;99m▀\\x1b[49m \\x1b[38;2;250;237;49;48;2;250;242;50m▄\\x1b[38;2;251;234;22;48;2;252;231;25m▄\\x1b[38;2;253;227;27;48;2;253;212;26m▄\\x1b[38;2;254;206;26;48;2;254;204;25m▄\\x1b[49m \\x1b[m\n\\x1b[49m \\x1b[38;2;253;239;29;48;2;238;230;84m▄\\x1b[38;2;254;234;24;48;2;253;238;23m▄\\x1b[38;2;253;209;29;48;2;254;233;26m▄\\x1b[38;2;244;216;71;48;2;241;220;99m▄\\x1b[49m \\x1b[38;2;247;217;53;48;2;250;218;44m▄\\x1b[38;2;251;217;31;48;2;250;222;31m▄\\x1b[38;2;247;228;24;48;2;245;229;20m▄\\x1b[48;2;245;229;19m \\x1b[38;2;246;229;19;48;2;247;229;20m▄\\x1b[38;2;253;224;24;48;2;251;229;23m▄\\x1b[38;2;249;211;52;48;2;253;213;27m▄\\x1b[49;38;2;244;210;68m▀\\x1b[49m \\x1b[38;2;249;234;57;48;2;249;237;39m▄\\x1b[38;2;250;235;23;48;2;250;234;24m▄\\x1b[38;2;247;231;19;48;2;247;230;19m▄\\x1b[38;2;244;229;16;48;2;247;230;18m▄\\x1b[38;2;246;229;18;48;2;246;230;19m▄\\x1b[38;2;253;223;23;48;2;252;228;21m▄\\x1b[38;2;253;206;37;48;2;253;208;26m▄\\x1b[49;38;2;251;211;57m▀\\x1b[49m \\x1b[38;2;250;239;47;48;2;250;239;50m▄\\x1b[38;2;250;236;23;48;2;249;235;22m▄\\x1b[38;2;254;231;28;48;2;254;229;26m▄\\x1b[38;2;255;209;26;48;2;254;209;27m▄\\x1b[49m \\x1b[m\n\\x1b[49m \\x1b[38;2;245;239;70;49m▄\\x1b[38;2;253;241;21;48;2;250;243;39m▄\\x1b[38;2;251;208;32;48;2;254;237;23m▄\\x1b[38;2;248;210;82;48;2;252;208;31m▄\\x1b[49;38;2;245;213;78m▀\\x1b[49m \\x1b[38;2;246;218;70;48;2;252;217;33m▄\\x1b[38;2;250;220;29;48;2;248;225;27m▄\\x1b[38;2;248;229;24;48;2;245;229;20m▄\\x1b[38;2;253;223;23;48;2;251;228;21m▄\\x1b[38;2;252;209;33;48;2;253;211;26m▄\\x1b[49;38;2;242;208;64m▀\\x1b[49m \\x1b[49;38;2;237;237;91m▀\\x1b[38;2;246;235;64;48;2;251;237;29m▄\\x1b[38;2;248;237;24;48;2;248;233;23m▄\\x1b[38;2;247;233;21;48;2;245;231;18m▄\\x1b[38;2;253;230;23;48;2;249;230;19m▄\\x1b[38;2;253;206;30;48;2;253;209;24m▄\\x1b[38;2;239;223;96;48;2;249;207;58m▄\\x1b[49m \\x1b[38;2;247;239;50;48;2;247;239;47m▄\\x1b[38;2;249;236;23;48;2;250;236;23m▄\\x1b[48;2;254;230;27m \\x1b[38;2;254;209;27;48;2;254;209;26m▄\\x1b[49m \\x1b[m\n\\x1b[49m \\x1b[38;2;235;235;78;49m▄\\x1b[38;2;253;240;32;48;2;234;234;90m▄\\x1b[38;2;249;224;34;48;2;253;242;25m▄\\x1b[38;2;245;214;92;48;2;251;215;32m▄\\x1b[49;38;2;240;209;85m▀\\x1b[49m \\x1b[38;2;245;235;64;49m▄\\x1b[38;2;253;239;32;48;2;239;231;112m▄\\x1b[38;2;246;239;82;49m▄\\x1b[49m \\x1b[49;38;2;246;219;73m▀\\x1b[38;2;249;221;48;48;2;252;220;29m▄\\x1b[38;2;254;222;27;48;2;253;228;27m▄\\x1b[38;2;253;208;28;48;2;254;210;24m▄\\x1b[38;2;237;219;73;48;2;244;208;63m▄\\x1b[49m \\x1b[38;2;249;236;42;49m▄\\x1b[38;2;250;234;23;49m▄\\x1b[38;2;249;231;24;49m▄\\x1b[38;2;248;228;34;49m▄\\x1b[38;2;243;226;99;49m▄\\x1b[49m \\x1b[49;38;2;242;242;67m▀\\x1b[38;2;248;238;57;48;2;252;238;26m▄\\x1b[38;2;253;236;26;48;2;251;235;23m▄\\x1b[38;2;253;213;26;48;2;253;227;24m▄\\x1b[38;2;247;209;62;48;2;247;209;61m▄\\x1b[49m \\x1b[38;2;247;239;49;48;2;247;239;47m▄\\x1b[38;2;250;234;23;48;2;250;235;22m▄\\x1b[38;2;254;228;28;48;2;254;230;28m▄\\x1b[38;2;254;207;26;48;2;254;208;26m▄\\x1b[49m \\x1b[m\n\\x1b[49m \\x1b[38;2;246;237;59;49m▄\\x1b[38;2;249;236;35;48;2;249;240;43m▄\\x1b[49;38;2;249;233;39m▀\\x1b[49;38;2;237;219;109m▀\\x1b[49m \\x1b[38;2;239;234;80;49m▄\\x1b[38;2;251;241;38;49m▄\\x1b[38;2;252;239;32;48;2;252;242;48m▄\\x1b[38;2;249;237;37;48;2;253;239;24m▄\\x1b[38;2;245;233;57;48;2;254;236;21m▄\\x1b[38;2;237;237;128;48;2;251;239;47m▄\\x1b[49m \\x1b[49;38;2;244;221;68m▀\\x1b[38;2;252;216;33;48;2;254;216;24m▄\\x1b[38;2;244;211;78;48;2;245;211;57m▄\\x1b[49m \\x1b[38;2;250;238;31;48;2;250;239;49m▄\\x1b[38;2;249;233;20;48;2;251;235;20m▄\\x1b[38;2;246;232;19;48;2;249;232;19m▄\\x1b[38;2;246;231;19;48;2;248;231;19m▄\\x1b[38;2;251;232;21;48;2;251;230;20m▄\\x1b[38;2;253;217;25;48;2;250;222;34m▄\\x1b[38;2;243;225;103;49m▄\\x1b[49m \\x1b[49;38;2;238;230;85m▀\\x1b[38;2;251;237;40;48;2;253;238;27m▄\\x1b[38;2;237;219;83;48;2;250;212;43m▄\\x1b[49m \\x1b[38;2;248;238;53;49m▄\\x1b[38;2;252;234;34;48;2;250;237;49m▄\\x1b[38;2;253;220;26;48;2;252;233;23m▄\\x1b[38;2;252;202;28;48;2;253;225;29m▄\\x1b[38;2;254;204;26;48;2;254;205;26m▄\\x1b[49m \\x1b[m\n\\x1b[49m \\x1b[38;2;240;229;56;48;2;247;232;62m▄\\x1b[49;38;2;249;238;37m▀\\x1b[49m \\x1b[49;38;2;231;231;110m▀\\x1b[49;38;2;244;241;45m▀\\x1b[49;38;2;239;239;63m▀\\x1b[49m \\x1b[49;38;2;241;217;88m▀\\x1b[49m \\x1b[38;2;249;236;52;48;2;249;237;33m▄\\x1b[38;2;250;237;24;48;2;248;234;22m▄\\x1b[38;2;250;234;21;48;2;246;233;19m▄\\x1b[38;2;251;230;21;48;2;247;233;19m▄\\x1b[38;2;253;210;26;48;2;252;230;22m▄\\x1b[38;2;251;207;36;48;2;253;209;27m▄\\x1b[49;38;2;243;219;95m▀\\x1b[49m \\x1b[49;38;2;241;223;96m▀\\x1b[49m \\x1b[38;2;242;233;67;49m▄\\x1b[38;2;249;236;41;49m▄\\x1b[38;2;253;237;23;48;2;245;232;63m▄\\x1b[38;2;253;226;24;48;2;251;238;38m▄\\x1b[38;2;251;201;26;48;2;252;234;23m▄\\x1b[38;2;251;198;26;48;2;251;210;25m▄\\x1b[38;2;253;202;29;48;2;251;199;25m▄\\x1b[38;2;251;203;42;48;2;253;201;28m▄\\x1b[38;2;229;211;123;48;2;253;203;32m▄\\x1b[49m \\x1b[m\n\\x1b[38;2;222;222;144;49m▄\\x1b[38;2;229;220;123;48;2;234;225;98m▄\\x1b[49;38;2;228;215;121m▀\\x1b[49m \\x1b[38;2;248;236;46;49m▄\\x1b[38;2;252;236;21;48;2;243;230;66m▄\\x1b[38;2;251;233;20;48;2;249;234;38m▄\\x1b[38;2;251;231;20;48;2;248;234;33m▄\\x1b[38;2;248;231;20;48;2;244;229;67m▄\\x1b[38;2;244;233;47;49m▄\\x1b[38;2;236;236;70;49m▄\\x1b[49m \\x1b[49;38;2;247;212;46m▀\\x1b[49;38;2;250;209;30m▀\\x1b[38;2;240;225;150;48;2;251;202;30m▄\\x1b[49;38;2;252;203;36m▀\\x1b[49;38;2;241;212;90m▀\\x1b[49m \\x1b[38;2;235;235;98;49m▄\\x1b[38;2;243;235;63;49m▄\\x1b[38;2;251;238;25;48;2;237;228;73m▄\\x1b[38;2;253;236;20;48;2;247;234;52m▄\\x1b[38;2;254;230;22;48;2;252;238;23m▄\\x1b[38;2;252;206;26;48;2;253;233;21m▄\\x1b[38;2;253;198;28;48;2;252;217;25m▄\\x1b[38;2;252;201;36;48;2;252;196;26m▄\\x1b[38;2;240;205;70;48;2;252;199;28m▄\\x1b[49;38;2;250;202;38m▀\\x1b[49;38;2;241;213;88m▀\\x1b[49m \\x1b[m\n\\x1b[49;38;2;207;207;191m▀\\x1b[49m \\x1b[38;2;236;232;82;49m▄\\x1b[38;2;248;239;48;49m▄\\x1b[49m \\x1b[49;38;2;244;231;69m▀\\x1b[49;38;2;249;233;29m▀\\x1b[38;2;244;228;69;48;2;248;234;23m▄\\x1b[38;2;249;233;28;48;2;247;231;21m▄\\x1b[38;2;247;232;25;48;2;247;230;20m▄\\x1b[38;2;248;231;23;48;2;248;231;19m▄\\x1b[38;2;249;232;23;48;2;247;233;20m▄\\x1b[38;2;249;233;24;48;2;246;237;59m▄\\x1b[38;2;248;237;29;48;2;242;242;77m▄\\x1b[38;2;244;240;76;49m▄\\x1b[49m \\x1b[38;2;241;234;99;49m▄\\x1b[38;2;250;238;41;49m▄\\x1b[38;2;253;237;26;48;2;242;232;79m▄\\x1b[38;2;253;236;25;48;2;252;240;27m▄\\x1b[38;2;254;233;24;48;2;254;236;20m▄\\x1b[38;2;251;210;29;48;2;253;235;21m▄\\x1b[38;2;251;197;28;48;2;253;225;23m▄\\x1b[38;2;246;202;53;48;2;254;200;27m▄\\x1b[49;38;2;253;199;32m▀\\x1b[49;38;2;245;207;64m▀\\x1b[49m \\x1b[m\n\\x1b[49m \\x1b[49;38;2;231;219;97m▀\\x1b[49;38;2;243;229;58m▀\\x1b[49m \\x1b[49;38;2;237;237;91m▀\\x1b[49;38;2;246;231;56m▀\\x1b[38;2;246;238;68;48;2;246;233;22m▄\\x1b[38;2;245;230;48;48;2;246;233;21m▄\\x1b[38;2;247;235;23;48;2;247;232;19m▄\\x1b[38;2;246;233;21;48;2;247;232;18m▄\\x1b[38;2;247;232;20;48;2;248;232;18m▄\\x1b[38;2;247;231;19;48;2;246;234;29m▄\\x1b[38;2;247;232;20;48;2;240;230;80m▄\\x1b[38;2;246;233;34;49m▄\\x1b[38;2;245;231;52;49m▄\\x1b[38;2;250;233;23;48;2;225;225;105m▄\\x1b[38;2;252;233;19;48;2;248;234;46m▄\\x1b[38;2;253;233;20;48;2;253;235;21m▄\\x1b[38;2;254;232;21;48;2;253;234;20m▄\\x1b[38;2;252;217;24;48;2;254;234;20m▄\\x1b[38;2;253;202;35;48;2;254;230;23m▄\\x1b[38;2;246;211;84;48;2;253;201;28m▄\\x1b[49;38;2;250;203;46m▀\\x1b[49;38;2;247;206;82m▀\\x1b[49m \\x1b[m\n\\x1b[49m \\x1b[49;38;2;247;226;63m▀\\x1b[49;38;2;247;232;36m▀\\x1b[38;2;245;229;57;48;2;246;232;22m▄\\x1b[38;2;247;230;31;48;2;248;232;21m▄\\x1b[38;2;247;232;21;48;2;247;231;19m▄\\x1b[38;2;247;233;19;48;2;246;231;18m▄\\x1b[38;2;247;232;17;48;2;246;231;17m▄\\x1b[38;2;251;232;19;48;2;249;232;17m▄\\x1b[38;2;253;221;24;48;2;252;232;20m▄\\x1b[38;2;249;207;48;48;2;253;229;22m▄\\x1b[38;2;248;209;72;48;2;253;207;28m▄\\x1b[49;38;2;245;202;59m▀\\x1b[49;38;2;237;200;109m▀\\x1b[49m \\x1b[m\n\\x1b[49m \\x1b[49;38;2;242;230;89m▀\\x1b[49;38;2;247;232;50m▀\\x1b[38;2;244;227;72;48;2;249;233;28m▄\\x1b[38;2;244;218;55;48;2;252;231;23m▄\\x1b[49;38;2;250;215;37m▀\\x1b[49;38;2;244;206;65m▀\\x1b[49m \\x1b[m\n`;\n\n/**\n * Get the intro banner with ASCII art\n */\nexport function getIntroBanner(version: string): string {\n const versionLine = `v${version}`;\n const totalWidth = 38; // Total width inside the box\n const padding = \" \".repeat(totalWidth - 3 - versionLine.length); // 3 is for leading spaces \" \"\n\n return `\n ${colors.magentaBright(\"╭──────────────────────────────────────╮\")}\n ${colors.magentaBright(\"│\")} ${colors.magentaBright(\"│\")}\n ${colors.magentaBright(\"│\")} 🧙 ${colors.bold(colors.yellowBright(\"WARLOCK.JS\"))} ${colors.magentaBright(\"│\")}\n ${colors.magentaBright(\"│\")} ${colors.cyan(\"The Magical Node.js Framework\")} ${colors.magentaBright(\"│\")}\n ${colors.magentaBright(\"│\")} ${colors.magentaBright(\"│\")}\n ${colors.magentaBright(\"│\")} ${colors.green(versionLine)}${padding}${colors.magentaBright(\"│\")}\n ${colors.magentaBright(\"│\")} ${colors.magentaBright(\"│\")}\n ${colors.magentaBright(\"╰──────────────────────────────────────╯\")}\n`;\n}\n\n/**\n * Display the intro banner\n */\nexport function showIntroBanner(version: string): void {\n console.log(warlockLogoAnsi);\n console.log(warlockTextAnsi);\n console.log(getIntroBanner(version));\n}\n\n/**\n * Get the success screen with project summary\n */\nexport function getSuccessScreen(options: {\n projectName: string;\n database: string;\n features: string[];\n packageManager: string;\n}): string {\n const { projectName, database, features, packageManager } = options;\n\n // Format features text\n let featuresText = features.join(\", \");\n if (features.length === 0) {\n featuresText = \"none\";\n }\n\n // Calculate dynamic width\n const baseLabelLength = 10; // \"Project: \".length\n const padding = 6; // 3 spaces left, 3 spaces right padding for text inside box\n\n const projectLineLen = projectName.length + baseLabelLength;\n const dbLineLen = database.length + baseLabelLength;\n const featuresLineLen = featuresText.length + baseLabelLength;\n\n // Find the longest line to determine box width\n // Ensure minimum width of 50 for aesthetics\n const maxContentLength = Math.max(\n projectLineLen,\n dbLineLen,\n featuresLineLen,\n 40,\n );\n const boxWidth = maxContentLength + padding + 2; // +2 for borders │\n\n // Helper to generate borders\n const createBorder = (start: string, end: string) =>\n colors.magentaBright(start + \"─\".repeat(boxWidth - 2) + end);\n\n // Helper to pad content lines\n const padLine = (label: string, value: string, isFeature = false) => {\n const valueColor = (text: string) => {\n if (isFeature && text === \"none\") return colors.dim(text);\n return colors.white(text);\n };\n\n const labelPart = colors.dim(label.padEnd(10)); // \"Project: \"\n const valuePart = valueColor(value);\n\n // Calculate visible length for padding\n const contentVisibleLength = 3 + 10 + value.length;\n const remaining = boxWidth - 2 - contentVisibleLength; // -2 for borders\n\n return (\n colors.magentaBright(\"│\") +\n \" \" +\n labelPart +\n valuePart +\n \" \".repeat(remaining) +\n colors.magentaBright(\"│\")\n );\n };\n\n const emptyLine =\n colors.magentaBright(\"│\") +\n \" \".repeat(boxWidth - 2) +\n colors.magentaBright(\"│\");\n\n const headerText = \"🎉 YOUR PROJECT IS READY! 🎉\";\n const headerPadding = Math.floor((boxWidth - 2 - headerText.length) / 2);\n const headerLine =\n colors.magentaBright(\"│\") +\n \" \".repeat(headerPadding) +\n colors.bold(colors.green(headerText)) +\n \" \".repeat(boxWidth - 2 - headerPadding - headerText.length) +\n colors.magentaBright(\"│\");\n\n const devCommand =\n packageManager === \"npm\" ? \"npm run dev\" : `${packageManager} dev`;\n\n return `\n ${createBorder(\"╭\", \"╮\")}\n ${emptyLine}\n ${headerLine}\n ${emptyLine}\n ${padLine(\"Project:\", projectName)}\n ${padLine(\"Database:\", database)}\n ${padLine(\"Features:\", featuresText, true)}\n ${emptyLine}\n ${createBorder(\"╰\", \"╯\")}\n\n ${colors.bold(colors.cyan(\"🚀 Next steps:\"))}\n\n ${colors.cyan(\"cd\")} ${projectName}\n ${colors.cyan(devCommand)}\n\n ${colors.dim(\"💡 Pro tip: Install the\")} ${colors.yellow(\"Generator Z\")} ${colors.dim(\"extension in VSCode\")}\n ${colors.dim(\"for helpful code snippets and productivity boosters!\")}\n\n ${colors.dim(\"📚 Docs:\")} ${colors.cyan(\"https://warlock.js.org\")}\n ${colors.dim(\"⭐ Star us:\")} ${colors.cyan(\"https://github.com/warlockjs/framework\")}\n`;\n}\n\n/**\n * Display the success screen\n */\nexport function showSuccessScreen(options: {\n projectName: string;\n database: string;\n features: string[];\n packageManager: string;\n}): void {\n console.log(getSuccessScreen(options));\n}\n"],"mappings":";;;AAEA,MAAa,kBAAkB;;;;;;;;;;AAW/B,MAAa,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6B/B,SAAgB,eAAe,SAAyB;CACtD,MAAM,cAAc,IAAI;CAExB,MAAM,UAAU,IAAI,OAAO,KAAiB,YAAY,MAAM;CAE9D,OAAO;IACL,OAAO,cAAc,0CAA0C,EAAE;IACjE,OAAO,cAAc,GAAG,EAAE,wCAAwC,OAAO,cAAc,GAAG,EAAE;IAC5F,OAAO,cAAc,GAAG,EAAE,QAAQ,OAAO,KAAK,OAAO,aAAa,YAAY,CAAC,EAAE,wBAAwB,OAAO,cAAc,GAAG,EAAE;IACnI,OAAO,cAAc,GAAG,EAAE,KAAK,OAAO,KAAK,+BAA+B,EAAE,QAAQ,OAAO,cAAc,GAAG,EAAE;IAC9G,OAAO,cAAc,GAAG,EAAE,wCAAwC,OAAO,cAAc,GAAG,EAAE;IAC5F,OAAO,cAAc,GAAG,EAAE,KAAK,OAAO,MAAM,WAAW,IAAI,UAAU,OAAO,cAAc,GAAG,EAAE;IAC/F,OAAO,cAAc,GAAG,EAAE,wCAAwC,OAAO,cAAc,GAAG,EAAE;IAC5F,OAAO,cAAc,0CAA0C,EAAE;;AAErE;;;;AAKA,SAAgB,gBAAgB,SAAuB;CACrD,QAAQ,IAAI,eAAe;CAC3B,QAAQ,IAAI,eAAe;CAC3B,QAAQ,IAAI,eAAe,OAAO,CAAC;AACrC;;;;AAKA,SAAgB,iBAAiB,SAKtB;CACT,MAAM,EAAE,aAAa,UAAU,UAAU,mBAAmB;CAG5D,IAAI,eAAe,SAAS,KAAK,IAAI;CACrC,IAAI,SAAS,WAAW,GACtB,eAAe;CAIjB,MAAM,kBAAkB;CACxB,MAAM,UAAU;CAEhB,MAAM,iBAAiB,YAAY,SAAS;CAC5C,MAAM,YAAY,SAAS,SAAS;CACpC,MAAM,kBAAkB,aAAa,SAAS;CAU9C,MAAM,WANmB,KAAK,IAC5B,gBACA,WACA,iBACA,EAE8B,IAAI,UAAU;CAG9C,MAAM,gBAAgB,OAAe,QACnC,OAAO,cAAc,QAAQ,IAAI,OAAO,WAAW,CAAC,IAAI,GAAG;CAG7D,MAAM,WAAW,OAAe,OAAe,YAAY,UAAU;EACnE,MAAM,cAAc,SAAiB;GACnC,IAAI,aAAa,SAAS,QAAQ,OAAO,OAAO,IAAI,IAAI;GACxD,OAAO,OAAO,MAAM,IAAI;EAC1B;EAEA,MAAM,YAAY,OAAO,IAAI,MAAM,OAAO,EAAE,CAAC;EAC7C,MAAM,YAAY,WAAW,KAAK;EAGlC,MAAM,uBAAuB,KAAS,MAAM;EAC5C,MAAM,YAAY,WAAW,IAAI;EAEjC,OACE,OAAO,cAAc,GAAG,IACxB,QACA,YACA,YACA,IAAI,OAAO,SAAS,IACpB,OAAO,cAAc,GAAG;CAE5B;CAEA,MAAM,YACJ,OAAO,cAAc,GAAG,IACxB,IAAI,OAAO,WAAW,CAAC,IACvB,OAAO,cAAc,GAAG;CAE1B,MAAM,aAAa;CACnB,MAAM,gBAAgB,KAAK,OAAO,WAAW,IAAI,MAAqB,CAAC;CACvE,MAAM,aACJ,OAAO,cAAc,GAAG,IACxB,IAAI,OAAO,aAAa,IACxB,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC,IACpC,IAAI,OAAO,WAAW,IAAI,gBAAgB,EAAiB,IAC3D,OAAO,cAAc,GAAG;CAE1B,MAAM,aACJ,mBAAmB,QAAQ,gBAAgB,GAAG,eAAe;CAE/D,OAAO;IACL,aAAa,KAAK,GAAG,EAAE;IACvB,UAAU;IACV,WAAW;IACX,UAAU;IACV,QAAQ,YAAY,WAAW,EAAE;IACjC,QAAQ,aAAa,QAAQ,EAAE;IAC/B,QAAQ,aAAa,cAAc,IAAI,EAAE;IACzC,UAAU;IACV,aAAa,KAAK,GAAG,EAAE;;IAEvB,OAAO,KAAK,OAAO,KAAK,gBAAgB,CAAC,EAAE;;OAExC,OAAO,KAAK,IAAI,EAAE,GAAG,YAAY;OACjC,OAAO,KAAK,UAAU,EAAE;;IAE3B,OAAO,IAAI,yBAAyB,EAAE,GAAG,OAAO,OAAO,aAAa,EAAE,GAAG,OAAO,IAAI,qBAAqB,EAAE;OACxG,OAAO,IAAI,sDAAsD,EAAE;;IAEtE,OAAO,IAAI,UAAU,EAAE,GAAG,OAAO,KAAK,wBAAwB,EAAE;IAChE,OAAO,IAAI,YAAY,EAAE,GAAG,OAAO,KAAK,wCAAwC,EAAE;;AAEtF;;;;AAKA,SAAgB,kBAAkB,SAKzB;CACP,QAAQ,IAAI,iBAAiB,OAAO,CAAC;AACvC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region ../../@warlock.js/create-warlock/src/ui/spinners.ts
|
|
2
|
+
/**
|
|
3
|
+
* Themed spinner messages for the wizard
|
|
4
|
+
*/
|
|
5
|
+
const spinnerMessages = {
|
|
6
|
+
installingDeps: "📦 Summoning dependencies...",
|
|
7
|
+
depsInstalled: "📦 Dependencies materialized! ✅",
|
|
8
|
+
initializingGit: "📂 Initializing grimoire (git)...",
|
|
9
|
+
gitInitialized: "📂 Grimoire initialized! ✅",
|
|
10
|
+
generatingJwt: "🔐 Forging secret keys...",
|
|
11
|
+
jwtGenerated: "🔐 Secret keys forged! ✅",
|
|
12
|
+
warmingCache: "⚡ Charging magical circuits...",
|
|
13
|
+
cacheWarmed: "⚡ Circuits charged! ✅",
|
|
14
|
+
addingFeatures: "🪄 Weaving in your features...",
|
|
15
|
+
featuresAdded: "🪄 Features woven in! ✅",
|
|
16
|
+
featuresFailed: "⚠️ Some features could not be added — add them later with `warlock add`",
|
|
17
|
+
copyingTemplate: "📋 Preparing your spellbook...",
|
|
18
|
+
templateCopied: "📋 Spellbook ready! ✅"
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
//#endregion
|
|
22
|
+
export { spinnerMessages };
|
|
23
|
+
//# sourceMappingURL=spinners.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinners.mjs","names":[],"sources":["../../../../../../@warlock.js/create-warlock/src/ui/spinners.ts"],"sourcesContent":["/**\n * Themed spinner messages for the wizard\n */\nexport const spinnerMessages = {\n installingDeps: \"📦 Summoning dependencies...\",\n depsInstalled: \"📦 Dependencies materialized! ✅\",\n\n initializingGit: \"📂 Initializing grimoire (git)...\",\n gitInitialized: \"📂 Grimoire initialized! ✅\",\n\n generatingJwt: \"🔐 Forging secret keys...\",\n jwtGenerated: \"🔐 Secret keys forged! ✅\",\n\n warmingCache: \"⚡ Charging magical circuits...\",\n cacheWarmed: \"⚡ Circuits charged! ✅\",\n\n addingFeatures: \"🪄 Weaving in your features...\",\n featuresAdded: \"🪄 Features woven in! ✅\",\n featuresFailed: \"⚠️ Some features could not be added — add them later with `warlock add`\",\n\n copyingTemplate: \"📋 Preparing your spellbook...\",\n templateCopied: \"📋 Spellbook ready! ✅\",\n} as const;\n"],"mappings":";;;;AAGA,MAAa,kBAAkB;CAC7B,gBAAgB;CAChB,eAAe;CAEf,iBAAiB;CACjB,gBAAgB;CAEhB,eAAe;CACf,cAAc;CAEd,cAAc;CACd,aAAa;CAEb,gBAAgB;CAChB,eAAe;CACf,gBAAgB;CAEhB,iBAAiB;CACjB,gBAAgB;AAClB"}
|