craftdesk 0.3.0 → 0.5.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/CHANGELOG.md +88 -0
- package/README.md +1609 -132
- package/dist/commands/add.d.ts +5 -0
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +306 -8
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/convert.d.ts +8 -0
- package/dist/commands/convert.d.ts.map +1 -0
- package/dist/commands/convert.js +146 -0
- package/dist/commands/convert.js.map +1 -0
- package/dist/commands/detect-agents.d.ts +14 -0
- package/dist/commands/detect-agents.d.ts.map +1 -0
- package/dist/commands/detect-agents.js +86 -0
- package/dist/commands/detect-agents.js.map +1 -0
- package/dist/commands/embed.d.ts +14 -0
- package/dist/commands/embed.d.ts.map +1 -0
- package/dist/commands/embed.js +147 -0
- package/dist/commands/embed.js.map +1 -0
- package/dist/commands/info.d.ts +8 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +66 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +8 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install.d.ts +5 -0
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +24 -4
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/list.d.ts +5 -0
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +75 -7
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/login.d.ts +8 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +158 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +8 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +51 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/outdated.d.ts +23 -0
- package/dist/commands/outdated.d.ts.map +1 -0
- package/dist/commands/outdated.js +268 -0
- package/dist/commands/outdated.js.map +1 -0
- package/dist/commands/publish.d.ts +8 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +203 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/remove.d.ts +5 -0
- package/dist/commands/remove.d.ts.map +1 -1
- package/dist/commands/remove.js +51 -10
- package/dist/commands/remove.js.map +1 -1
- package/dist/commands/search.d.ts +8 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +60 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/setup-multi-agent.d.ts +17 -0
- package/dist/commands/setup-multi-agent.d.ts.map +1 -0
- package/dist/commands/setup-multi-agent.js +188 -0
- package/dist/commands/setup-multi-agent.js.map +1 -0
- package/dist/commands/sync.d.ts +14 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +144 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/unembed.d.ts +14 -0
- package/dist/commands/unembed.d.ts.map +1 -0
- package/dist/commands/unembed.js +96 -0
- package/dist/commands/unembed.js.map +1 -0
- package/dist/commands/update.d.ts +8 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +372 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/verify.d.ts +14 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +143 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/commands/whoami.d.ts +8 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +58 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/converters/base-converter.d.ts +89 -0
- package/dist/converters/base-converter.d.ts.map +1 -0
- package/dist/converters/base-converter.js +249 -0
- package/dist/converters/base-converter.js.map +1 -0
- package/dist/converters/continue-converter.d.ts +53 -0
- package/dist/converters/continue-converter.d.ts.map +1 -0
- package/dist/converters/continue-converter.js +243 -0
- package/dist/converters/continue-converter.js.map +1 -0
- package/dist/converters/cursor-converter.d.ts +70 -0
- package/dist/converters/cursor-converter.d.ts.map +1 -0
- package/dist/converters/cursor-converter.js +272 -0
- package/dist/converters/cursor-converter.js.map +1 -0
- package/dist/index.js +56 -3
- package/dist/index.js.map +1 -1
- package/dist/services/agent-detector.d.ts +57 -0
- package/dist/services/agent-detector.d.ts.map +1 -0
- package/dist/services/agent-detector.js +146 -0
- package/dist/services/agent-detector.js.map +1 -0
- package/dist/services/config-manager.d.ts +128 -10
- package/dist/services/config-manager.d.ts.map +1 -1
- package/dist/services/config-manager.js +190 -18
- package/dist/services/config-manager.js.map +1 -1
- package/dist/services/converter.d.ts +53 -0
- package/dist/services/converter.d.ts.map +1 -0
- package/dist/services/converter.js +185 -0
- package/dist/services/converter.js.map +1 -0
- package/dist/services/craft-wrapper.d.ts +108 -0
- package/dist/services/craft-wrapper.d.ts.map +1 -0
- package/dist/services/craft-wrapper.js +268 -0
- package/dist/services/craft-wrapper.js.map +1 -0
- package/dist/services/git-resolver.d.ts +9 -3
- package/dist/services/git-resolver.d.ts.map +1 -1
- package/dist/services/git-resolver.js +44 -20
- package/dist/services/git-resolver.js.map +1 -1
- package/dist/services/gitignore-manager.d.ts +74 -0
- package/dist/services/gitignore-manager.d.ts.map +1 -0
- package/dist/services/gitignore-manager.js +188 -0
- package/dist/services/gitignore-manager.js.map +1 -0
- package/dist/services/installer.d.ts +60 -1
- package/dist/services/installer.d.ts.map +1 -1
- package/dist/services/installer.js +295 -20
- package/dist/services/installer.js.map +1 -1
- package/dist/services/multi-agent-sync.d.ts +88 -0
- package/dist/services/multi-agent-sync.d.ts.map +1 -0
- package/dist/services/multi-agent-sync.js +316 -0
- package/dist/services/multi-agent-sync.js.map +1 -0
- package/dist/services/plugin-resolver.d.ts +80 -0
- package/dist/services/plugin-resolver.d.ts.map +1 -0
- package/dist/services/plugin-resolver.js +183 -0
- package/dist/services/plugin-resolver.js.map +1 -0
- package/dist/services/registry-client.d.ts +132 -5
- package/dist/services/registry-client.d.ts.map +1 -1
- package/dist/services/registry-client.js +239 -34
- package/dist/services/registry-client.js.map +1 -1
- package/dist/services/settings-manager.d.ts +151 -0
- package/dist/services/settings-manager.d.ts.map +1 -0
- package/dist/services/settings-manager.js +333 -0
- package/dist/services/settings-manager.js.map +1 -0
- package/dist/types/claude-settings.d.ts +155 -0
- package/dist/types/claude-settings.d.ts.map +1 -0
- package/dist/types/claude-settings.js +20 -0
- package/dist/types/claude-settings.js.map +1 -0
- package/dist/types/converter.d.ts +98 -0
- package/dist/types/converter.d.ts.map +1 -0
- package/dist/types/converter.js +6 -0
- package/dist/types/converter.js.map +1 -0
- package/dist/types/craftdesk-json.d.ts +76 -3
- package/dist/types/craftdesk-json.d.ts.map +1 -1
- package/dist/types/craftdesk-lock.d.ts +62 -1
- package/dist/types/craftdesk-lock.d.ts.map +1 -1
- package/dist/types/multi-agent.d.ts +85 -0
- package/dist/types/multi-agent.d.ts.map +1 -0
- package/dist/types/multi-agent.js +6 -0
- package/dist/types/multi-agent.js.map +1 -0
- package/dist/utils/crypto.d.ts +23 -0
- package/dist/utils/crypto.d.ts.map +1 -0
- package/dist/utils/crypto.js +52 -0
- package/dist/utils/crypto.js.map +1 -0
- package/dist/utils/file-system.d.ts +43 -0
- package/dist/utils/file-system.d.ts.map +1 -1
- package/dist/utils/file-system.js +45 -2
- package/dist/utils/file-system.js.map +1 -1
- package/dist/utils/logger.d.ts +75 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +76 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/version-utils.d.ts +63 -0
- package/dist/utils/version-utils.d.ts.map +1 -0
- package/dist/utils/version-utils.js +130 -0
- package/dist/utils/version-utils.js.map +1 -0
- package/package.json +36 -9
- package/.claude/settings.local.json +0 -19
- package/.github/workflows/ci.yml +0 -94
- package/API.md +0 -414
- package/TESTING.md +0 -263
- package/dist/commands/config.d.ts +0 -3
- package/dist/commands/config.d.ts.map +0 -1
- package/dist/commands/config.js +0 -56
- package/dist/commands/config.js.map +0 -1
- package/dist/types/config.d.ts +0 -17
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/config.js +0 -3
- package/dist/types/config.js.map +0 -1
- package/docs/DEPENDENCY_RESOLUTION.md +0 -237
- package/examples/craftdesk-all-sources.json +0 -79
- package/examples/craftdesk-git-monorepo.json +0 -41
- package/examples/craftdesk-multi-registry.json +0 -40
- package/examples/craftdesk-with-registries.json +0 -49
- package/examples/simple-craftdesk.json +0 -10
- package/src/commands/add.ts +0 -314
- package/src/commands/init.ts +0 -55
- package/src/commands/install.ts +0 -126
- package/src/commands/list.ts +0 -126
- package/src/commands/remove.ts +0 -82
- package/src/index.ts +0 -56
- package/src/services/config-manager.ts +0 -150
- package/src/services/git-resolver.ts +0 -373
- package/src/services/installer.ts +0 -314
- package/src/services/registry-client.ts +0 -163
- package/src/types/craftdesk-json.ts +0 -53
- package/src/types/craftdesk-lock.ts +0 -38
- package/src/utils/file-system.ts +0 -55
- package/src/utils/logger.ts +0 -82
- package/tests/fixtures/craftdesk-git.json +0 -17
- package/tests/fixtures/craftdesk.json +0 -15
- package/tests/helpers/test-utils.ts +0 -60
- package/tests/integration/init-command.test.ts +0 -70
- package/tests/integration/list-command.test.ts +0 -77
- package/tests/unit/config-manager.test.ts +0 -228
- package/tests/unit/git-resolver.test.ts +0 -303
- package/tests/unit/installer.test.ts +0 -105
- package/tsconfig.json +0 -20
- package/vitest.config.ts +0 -29
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* File system utilities for reading and writing CraftDesk configuration files
|
|
4
|
+
*/
|
|
2
5
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
6
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
7
|
};
|
|
@@ -12,42 +15,82 @@ exports.removeDir = removeDir;
|
|
|
12
15
|
exports.exists = exists;
|
|
13
16
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
14
17
|
const path_1 = __importDefault(require("path"));
|
|
18
|
+
/**
|
|
19
|
+
* Reads and parses a craftdesk.json file from the specified directory
|
|
20
|
+
*
|
|
21
|
+
* @param dir - Directory containing craftdesk.json (defaults to current working directory)
|
|
22
|
+
* @returns Parsed CraftDeskJson object or null if file doesn't exist or is invalid
|
|
23
|
+
*/
|
|
15
24
|
async function readCraftDeskJson(dir = process.cwd()) {
|
|
16
25
|
const filePath = path_1.default.join(dir, 'craftdesk.json');
|
|
17
26
|
try {
|
|
18
27
|
const content = await fs_extra_1.default.readFile(filePath, 'utf-8');
|
|
19
28
|
return JSON.parse(content);
|
|
20
29
|
}
|
|
21
|
-
catch
|
|
30
|
+
catch {
|
|
22
31
|
return null;
|
|
23
32
|
}
|
|
24
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Writes a CraftDeskJson object to craftdesk.json with pretty formatting
|
|
36
|
+
*
|
|
37
|
+
* @param data - CraftDeskJson object to write
|
|
38
|
+
* @param dir - Directory to write craftdesk.json to (defaults to current working directory)
|
|
39
|
+
*/
|
|
25
40
|
async function writeCraftDeskJson(data, dir = process.cwd()) {
|
|
26
41
|
const filePath = path_1.default.join(dir, 'craftdesk.json');
|
|
27
42
|
const content = JSON.stringify(data, null, 2);
|
|
28
43
|
await fs_extra_1.default.writeFile(filePath, content, 'utf-8');
|
|
29
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Reads and parses a craftdesk.lock file from the specified directory
|
|
47
|
+
*
|
|
48
|
+
* @param dir - Directory containing craftdesk.lock (defaults to current working directory)
|
|
49
|
+
* @returns Parsed CraftDeskLock object or null if file doesn't exist or is invalid
|
|
50
|
+
*/
|
|
30
51
|
async function readCraftDeskLock(dir = process.cwd()) {
|
|
31
52
|
const filePath = path_1.default.join(dir, 'craftdesk.lock');
|
|
32
53
|
try {
|
|
33
54
|
const content = await fs_extra_1.default.readFile(filePath, 'utf-8');
|
|
34
55
|
return JSON.parse(content);
|
|
35
56
|
}
|
|
36
|
-
catch
|
|
57
|
+
catch {
|
|
37
58
|
return null;
|
|
38
59
|
}
|
|
39
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Writes a CraftDeskLock object to craftdesk.lock with pretty formatting
|
|
63
|
+
*
|
|
64
|
+
* @param data - CraftDeskLock object to write
|
|
65
|
+
* @param dir - Directory to write craftdesk.lock to (defaults to current working directory)
|
|
66
|
+
*/
|
|
40
67
|
async function writeCraftDeskLock(data, dir = process.cwd()) {
|
|
41
68
|
const filePath = path_1.default.join(dir, 'craftdesk.lock');
|
|
42
69
|
const content = JSON.stringify(data, null, 2);
|
|
43
70
|
await fs_extra_1.default.writeFile(filePath, content, 'utf-8');
|
|
44
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Ensures a directory exists, creating it and any parent directories if needed
|
|
74
|
+
*
|
|
75
|
+
* @param dirPath - Path to the directory to ensure exists
|
|
76
|
+
*/
|
|
45
77
|
async function ensureDir(dirPath) {
|
|
46
78
|
await fs_extra_1.default.ensureDir(dirPath);
|
|
47
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Recursively removes a directory and all its contents
|
|
82
|
+
*
|
|
83
|
+
* @param dirPath - Path to the directory to remove
|
|
84
|
+
*/
|
|
48
85
|
async function removeDir(dirPath) {
|
|
49
86
|
await fs_extra_1.default.remove(dirPath);
|
|
50
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Checks if a file or directory exists at the specified path
|
|
90
|
+
*
|
|
91
|
+
* @param filePath - Path to check for existence
|
|
92
|
+
* @returns True if the path exists and is accessible, false otherwise
|
|
93
|
+
*/
|
|
51
94
|
async function exists(filePath) {
|
|
52
95
|
try {
|
|
53
96
|
await fs_extra_1.default.access(filePath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-system.js","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"file-system.js","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;AAaH,8CASC;AAQD,gDAIC;AAQD,8CASC;AAQD,gDAIC;AAOD,8BAEC;AAOD,8BAEC;AAQD,wBAOC;AA9FD,wDAA0B;AAC1B,gDAAwB;AAIxB;;;;;GAKG;AACI,KAAK,UAAU,iBAAiB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACjE,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IAElD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,kBAAkB,CAAC,IAAmB,EAAE,MAAc,OAAO,CAAC,GAAG,EAAE;IACvF,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9C,MAAM,kBAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,iBAAiB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACjE,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IAElD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,kBAAkB,CAAC,IAAmB,EAAE,MAAc,OAAO,CAAC,GAAG,EAAE;IACvF,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9C,MAAM,kBAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,SAAS,CAAC,OAAe;IAC7C,MAAM,kBAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,SAAS,CAAC,OAAe;IAC7C,MAAM,kBAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,MAAM,CAAC,QAAgB;IAC3C,IAAI,CAAC;QACH,MAAM,kBAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
package/dist/utils/logger.d.ts
CHANGED
|
@@ -1,18 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Console logging utility with color support and spinner functionality
|
|
3
|
+
* Provides consistent, formatted output for CLI operations
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Logger class for formatted console output
|
|
7
|
+
* Supports success, error, warning, info, debug, and spinner states
|
|
8
|
+
*/
|
|
1
9
|
export declare class Logger {
|
|
10
|
+
/** Current spinner text (null if no spinner is active) */
|
|
2
11
|
private spinnerText;
|
|
12
|
+
/**
|
|
13
|
+
* Logs a success message with a green checkmark
|
|
14
|
+
*
|
|
15
|
+
* @param message - Success message to display
|
|
16
|
+
*/
|
|
3
17
|
success(message: string): void;
|
|
18
|
+
/**
|
|
19
|
+
* Logs an error message with a red X
|
|
20
|
+
*
|
|
21
|
+
* @param message - Error message to display
|
|
22
|
+
*/
|
|
4
23
|
error(message: string): void;
|
|
24
|
+
/**
|
|
25
|
+
* Logs a warning message with a yellow exclamation mark
|
|
26
|
+
*
|
|
27
|
+
* @param message - Warning message to display
|
|
28
|
+
*/
|
|
5
29
|
warn(message: string): void;
|
|
30
|
+
/**
|
|
31
|
+
* Logs an informational message with a blue arrow
|
|
32
|
+
*
|
|
33
|
+
* @param message - Info message to display
|
|
34
|
+
*/
|
|
6
35
|
info(message: string): void;
|
|
36
|
+
/**
|
|
37
|
+
* Logs a debug message if DEBUG environment variable is set
|
|
38
|
+
*
|
|
39
|
+
* @param message - Debug message to display
|
|
40
|
+
*/
|
|
7
41
|
debug(message: string): void;
|
|
42
|
+
/**
|
|
43
|
+
* Starts a spinner with the specified text
|
|
44
|
+
*
|
|
45
|
+
* @param text - Text to display with the spinner
|
|
46
|
+
*/
|
|
8
47
|
startSpinner(text: string): void;
|
|
48
|
+
/**
|
|
49
|
+
* Updates the current spinner with new text
|
|
50
|
+
*
|
|
51
|
+
* @param text - New text to display
|
|
52
|
+
*/
|
|
9
53
|
updateSpinner(text: string): void;
|
|
54
|
+
/**
|
|
55
|
+
* Completes the spinner with a success state
|
|
56
|
+
*
|
|
57
|
+
* @param text - Optional override text (defaults to current spinner text)
|
|
58
|
+
*/
|
|
10
59
|
succeedSpinner(text?: string): void;
|
|
60
|
+
/**
|
|
61
|
+
* Completes the spinner with a failure state
|
|
62
|
+
*
|
|
63
|
+
* @param text - Optional override text (defaults to current spinner text)
|
|
64
|
+
*/
|
|
11
65
|
failSpinner(text?: string): void;
|
|
66
|
+
/**
|
|
67
|
+
* Stops the current spinner without completing it
|
|
68
|
+
*/
|
|
12
69
|
stopSpinner(): void;
|
|
70
|
+
/**
|
|
71
|
+
* Logs a plain message without formatting
|
|
72
|
+
*
|
|
73
|
+
* @param message - Message to display
|
|
74
|
+
*/
|
|
13
75
|
log(message: string): void;
|
|
76
|
+
/**
|
|
77
|
+
* Wraps text with bold ANSI formatting
|
|
78
|
+
*
|
|
79
|
+
* @param text - Text to make bold
|
|
80
|
+
* @returns Text wrapped with bold ANSI codes
|
|
81
|
+
*/
|
|
14
82
|
bold(text: string): string;
|
|
83
|
+
/**
|
|
84
|
+
* Wraps text with dim ANSI formatting
|
|
85
|
+
*
|
|
86
|
+
* @param text - Text to make dim
|
|
87
|
+
* @returns Text wrapped with dim ANSI codes
|
|
88
|
+
*/
|
|
15
89
|
dim(text: string): string;
|
|
16
90
|
}
|
|
91
|
+
/** Global logger instance for use throughout the application */
|
|
17
92
|
export declare const logger: Logger;
|
|
18
93
|
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH;;;GAGG;AACH,qBAAa,MAAM;IACjB,0DAA0D;IAC1D,OAAO,CAAC,WAAW,CAAuB;IAE1C;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9B;;;;OAIG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5B;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B;;;;OAIG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM5B;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKhC;;;;OAIG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOjC;;;;OAIG;IACH,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAOnC;;;;OAIG;IACH,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAOhC;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;;;OAIG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI1B;;;;;OAKG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI1B;;;;;OAKG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAG1B;AAED,gEAAgE;AAChE,eAAO,MAAM,MAAM,QAAe,CAAC"}
|
package/dist/utils/logger.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Console logging utility with color support and spinner functionality
|
|
4
|
+
* Provides consistent, formatted output for CLI operations
|
|
5
|
+
*/
|
|
2
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
7
|
exports.logger = exports.Logger = void 0;
|
|
4
|
-
|
|
8
|
+
/** ANSI color codes for terminal output styling */
|
|
5
9
|
const colors = {
|
|
6
10
|
reset: '\x1b[0m',
|
|
7
11
|
green: '\x1b[32m',
|
|
@@ -13,60 +17,131 @@ const colors = {
|
|
|
13
17
|
bold: '\x1b[1m',
|
|
14
18
|
dim: '\x1b[2m',
|
|
15
19
|
};
|
|
20
|
+
/**
|
|
21
|
+
* Logger class for formatted console output
|
|
22
|
+
* Supports success, error, warning, info, debug, and spinner states
|
|
23
|
+
*/
|
|
16
24
|
class Logger {
|
|
25
|
+
/** Current spinner text (null if no spinner is active) */
|
|
17
26
|
spinnerText = null;
|
|
27
|
+
/**
|
|
28
|
+
* Logs a success message with a green checkmark
|
|
29
|
+
*
|
|
30
|
+
* @param message - Success message to display
|
|
31
|
+
*/
|
|
18
32
|
success(message) {
|
|
19
33
|
console.log(`${colors.green}✓${colors.reset}`, message);
|
|
20
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Logs an error message with a red X
|
|
37
|
+
*
|
|
38
|
+
* @param message - Error message to display
|
|
39
|
+
*/
|
|
21
40
|
error(message) {
|
|
22
41
|
console.error(`${colors.red}✗${colors.reset}`, message);
|
|
23
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Logs a warning message with a yellow exclamation mark
|
|
45
|
+
*
|
|
46
|
+
* @param message - Warning message to display
|
|
47
|
+
*/
|
|
24
48
|
warn(message) {
|
|
25
49
|
console.log(`${colors.yellow}!${colors.reset}`, message);
|
|
26
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Logs an informational message with a blue arrow
|
|
53
|
+
*
|
|
54
|
+
* @param message - Info message to display
|
|
55
|
+
*/
|
|
27
56
|
info(message) {
|
|
28
57
|
console.log(`${colors.blue}→${colors.reset}`, message);
|
|
29
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Logs a debug message if DEBUG environment variable is set
|
|
61
|
+
*
|
|
62
|
+
* @param message - Debug message to display
|
|
63
|
+
*/
|
|
30
64
|
debug(message) {
|
|
31
65
|
if (process.env.DEBUG) {
|
|
32
66
|
console.log(`${colors.gray}[DEBUG]${colors.reset}`, message);
|
|
33
67
|
}
|
|
34
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Starts a spinner with the specified text
|
|
71
|
+
*
|
|
72
|
+
* @param text - Text to display with the spinner
|
|
73
|
+
*/
|
|
35
74
|
startSpinner(text) {
|
|
36
75
|
this.spinnerText = text;
|
|
37
76
|
console.log(`${colors.cyan}⋯${colors.reset}`, text);
|
|
38
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Updates the current spinner with new text
|
|
80
|
+
*
|
|
81
|
+
* @param text - New text to display
|
|
82
|
+
*/
|
|
39
83
|
updateSpinner(text) {
|
|
40
84
|
if (this.spinnerText) {
|
|
41
85
|
this.spinnerText = text;
|
|
42
86
|
console.log(' ', text);
|
|
43
87
|
}
|
|
44
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Completes the spinner with a success state
|
|
91
|
+
*
|
|
92
|
+
* @param text - Optional override text (defaults to current spinner text)
|
|
93
|
+
*/
|
|
45
94
|
succeedSpinner(text) {
|
|
46
95
|
if (this.spinnerText) {
|
|
47
96
|
console.log(`${colors.green}✓${colors.reset}`, text || this.spinnerText);
|
|
48
97
|
this.spinnerText = null;
|
|
49
98
|
}
|
|
50
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Completes the spinner with a failure state
|
|
102
|
+
*
|
|
103
|
+
* @param text - Optional override text (defaults to current spinner text)
|
|
104
|
+
*/
|
|
51
105
|
failSpinner(text) {
|
|
52
106
|
if (this.spinnerText) {
|
|
53
107
|
console.log(`${colors.red}✗${colors.reset}`, text || this.spinnerText);
|
|
54
108
|
this.spinnerText = null;
|
|
55
109
|
}
|
|
56
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Stops the current spinner without completing it
|
|
113
|
+
*/
|
|
57
114
|
stopSpinner() {
|
|
58
115
|
this.spinnerText = null;
|
|
59
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* Logs a plain message without formatting
|
|
119
|
+
*
|
|
120
|
+
* @param message - Message to display
|
|
121
|
+
*/
|
|
60
122
|
log(message) {
|
|
61
123
|
console.log(message);
|
|
62
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Wraps text with bold ANSI formatting
|
|
127
|
+
*
|
|
128
|
+
* @param text - Text to make bold
|
|
129
|
+
* @returns Text wrapped with bold ANSI codes
|
|
130
|
+
*/
|
|
63
131
|
bold(text) {
|
|
64
132
|
return `${colors.bold}${text}${colors.reset}`;
|
|
65
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* Wraps text with dim ANSI formatting
|
|
136
|
+
*
|
|
137
|
+
* @param text - Text to make dim
|
|
138
|
+
* @returns Text wrapped with dim ANSI codes
|
|
139
|
+
*/
|
|
66
140
|
dim(text) {
|
|
67
141
|
return `${colors.dim}${text}${colors.reset}`;
|
|
68
142
|
}
|
|
69
143
|
}
|
|
70
144
|
exports.Logger = Logger;
|
|
145
|
+
/** Global logger instance for use throughout the application */
|
|
71
146
|
exports.logger = new Logger();
|
|
72
147
|
//# sourceMappingURL=logger.js.map
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utilities for version comparison and semantic versioning operations
|
|
3
|
+
* Supports parsing, comparing, and sorting semver version strings
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Parses a semantic version string into its components
|
|
7
|
+
*
|
|
8
|
+
* @param version - Version string to parse (e.g., "1.2.3" or "v1.2.3")
|
|
9
|
+
* @returns Object with major, minor, and patch numbers, or null if invalid
|
|
10
|
+
*/
|
|
11
|
+
export declare function parseSemver(version: string): {
|
|
12
|
+
major: number;
|
|
13
|
+
minor: number;
|
|
14
|
+
patch: number;
|
|
15
|
+
} | null;
|
|
16
|
+
/**
|
|
17
|
+
* Compares two semantic version strings
|
|
18
|
+
*
|
|
19
|
+
* @param a - First version to compare
|
|
20
|
+
* @param b - Second version to compare
|
|
21
|
+
* @returns -1 if a < b, 0 if a == b, 1 if a > b
|
|
22
|
+
*/
|
|
23
|
+
export declare function compareSemver(a: string, b: string): number;
|
|
24
|
+
/**
|
|
25
|
+
* Checks if the latest version is newer than the current version
|
|
26
|
+
*
|
|
27
|
+
* @param current - Current version string
|
|
28
|
+
* @param latest - Latest version string
|
|
29
|
+
* @returns True if latest is newer than current
|
|
30
|
+
*/
|
|
31
|
+
export declare function isNewerVersion(current: string, latest: string): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Sorts an array of version tags by semantic version (newest first)
|
|
34
|
+
*
|
|
35
|
+
* @param tags - Array of version tag strings to sort
|
|
36
|
+
* @returns New array sorted in descending order (newest to oldest)
|
|
37
|
+
*/
|
|
38
|
+
export declare function sortTagsBySemver(tags: string[]): string[];
|
|
39
|
+
/**
|
|
40
|
+
* Determines the type of update between two versions
|
|
41
|
+
*
|
|
42
|
+
* @param current - Current version string
|
|
43
|
+
* @param latest - Latest version string
|
|
44
|
+
* @returns Update type ('major', 'minor', or 'patch') or undefined if not parseable
|
|
45
|
+
*/
|
|
46
|
+
export declare function getUpdateType(current: string, latest: string): 'major' | 'minor' | 'patch' | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Pads a string to the right with spaces
|
|
49
|
+
*
|
|
50
|
+
* @param str - String to pad
|
|
51
|
+
* @param len - Desired total length
|
|
52
|
+
* @returns Padded string
|
|
53
|
+
*/
|
|
54
|
+
export declare function padRight(str: string, len: number): string;
|
|
55
|
+
/**
|
|
56
|
+
* Wraps text with ANSI color codes for terminal output
|
|
57
|
+
*
|
|
58
|
+
* @param text - Text to colorize
|
|
59
|
+
* @param color - Color to apply
|
|
60
|
+
* @returns Text wrapped with ANSI color codes
|
|
61
|
+
*/
|
|
62
|
+
export declare function colorize(text: string, color: 'red' | 'yellow' | 'green' | 'reset'): string;
|
|
63
|
+
//# sourceMappingURL=version-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-utils.d.ts","sourceRoot":"","sources":["../../src/utils/version-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CASnG;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAgB1D;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAEvE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAezD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAWtG;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAS1F"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Utilities for version comparison and semantic versioning operations
|
|
4
|
+
* Supports parsing, comparing, and sorting semver version strings
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.parseSemver = parseSemver;
|
|
8
|
+
exports.compareSemver = compareSemver;
|
|
9
|
+
exports.isNewerVersion = isNewerVersion;
|
|
10
|
+
exports.sortTagsBySemver = sortTagsBySemver;
|
|
11
|
+
exports.getUpdateType = getUpdateType;
|
|
12
|
+
exports.padRight = padRight;
|
|
13
|
+
exports.colorize = colorize;
|
|
14
|
+
/**
|
|
15
|
+
* Parses a semantic version string into its components
|
|
16
|
+
*
|
|
17
|
+
* @param version - Version string to parse (e.g., "1.2.3" or "v1.2.3")
|
|
18
|
+
* @returns Object with major, minor, and patch numbers, or null if invalid
|
|
19
|
+
*/
|
|
20
|
+
function parseSemver(version) {
|
|
21
|
+
const match = version.match(/^v?(\d+)\.(\d+)\.(\d+)/);
|
|
22
|
+
if (!match)
|
|
23
|
+
return null;
|
|
24
|
+
return {
|
|
25
|
+
major: parseInt(match[1], 10),
|
|
26
|
+
minor: parseInt(match[2], 10),
|
|
27
|
+
patch: parseInt(match[3], 10)
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Compares two semantic version strings
|
|
32
|
+
*
|
|
33
|
+
* @param a - First version to compare
|
|
34
|
+
* @param b - Second version to compare
|
|
35
|
+
* @returns -1 if a < b, 0 if a == b, 1 if a > b
|
|
36
|
+
*/
|
|
37
|
+
function compareSemver(a, b) {
|
|
38
|
+
const aParsed = parseSemver(a);
|
|
39
|
+
const bParsed = parseSemver(b);
|
|
40
|
+
if (!aParsed || !bParsed) {
|
|
41
|
+
// Fall back to string comparison
|
|
42
|
+
return a.localeCompare(b);
|
|
43
|
+
}
|
|
44
|
+
if (aParsed.major !== bParsed.major) {
|
|
45
|
+
return aParsed.major - bParsed.major;
|
|
46
|
+
}
|
|
47
|
+
if (aParsed.minor !== bParsed.minor) {
|
|
48
|
+
return aParsed.minor - bParsed.minor;
|
|
49
|
+
}
|
|
50
|
+
return aParsed.patch - bParsed.patch;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Checks if the latest version is newer than the current version
|
|
54
|
+
*
|
|
55
|
+
* @param current - Current version string
|
|
56
|
+
* @param latest - Latest version string
|
|
57
|
+
* @returns True if latest is newer than current
|
|
58
|
+
*/
|
|
59
|
+
function isNewerVersion(current, latest) {
|
|
60
|
+
return compareSemver(latest, current) > 0;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Sorts an array of version tags by semantic version (newest first)
|
|
64
|
+
*
|
|
65
|
+
* @param tags - Array of version tag strings to sort
|
|
66
|
+
* @returns New array sorted in descending order (newest to oldest)
|
|
67
|
+
*/
|
|
68
|
+
function sortTagsBySemver(tags) {
|
|
69
|
+
return [...tags].sort((a, b) => {
|
|
70
|
+
const aParsed = parseSemver(a);
|
|
71
|
+
const bParsed = parseSemver(b);
|
|
72
|
+
if (aParsed && bParsed) {
|
|
73
|
+
// Both are valid semver - sort descending (newest first)
|
|
74
|
+
if (aParsed.major !== bParsed.major)
|
|
75
|
+
return bParsed.major - aParsed.major;
|
|
76
|
+
if (aParsed.minor !== bParsed.minor)
|
|
77
|
+
return bParsed.minor - aParsed.minor;
|
|
78
|
+
return bParsed.patch - aParsed.patch;
|
|
79
|
+
}
|
|
80
|
+
// Fall back to string comparison (reverse for newest first)
|
|
81
|
+
return b.localeCompare(a);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Determines the type of update between two versions
|
|
86
|
+
*
|
|
87
|
+
* @param current - Current version string
|
|
88
|
+
* @param latest - Latest version string
|
|
89
|
+
* @returns Update type ('major', 'minor', or 'patch') or undefined if not parseable
|
|
90
|
+
*/
|
|
91
|
+
function getUpdateType(current, latest) {
|
|
92
|
+
const currentParsed = parseSemver(current);
|
|
93
|
+
const latestParsed = parseSemver(latest);
|
|
94
|
+
if (!currentParsed || !latestParsed)
|
|
95
|
+
return undefined;
|
|
96
|
+
if (latestParsed.major > currentParsed.major)
|
|
97
|
+
return 'major';
|
|
98
|
+
if (latestParsed.minor > currentParsed.minor)
|
|
99
|
+
return 'minor';
|
|
100
|
+
if (latestParsed.patch > currentParsed.patch)
|
|
101
|
+
return 'patch';
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Pads a string to the right with spaces
|
|
106
|
+
*
|
|
107
|
+
* @param str - String to pad
|
|
108
|
+
* @param len - Desired total length
|
|
109
|
+
* @returns Padded string
|
|
110
|
+
*/
|
|
111
|
+
function padRight(str, len) {
|
|
112
|
+
return str.padEnd(len);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Wraps text with ANSI color codes for terminal output
|
|
116
|
+
*
|
|
117
|
+
* @param text - Text to colorize
|
|
118
|
+
* @param color - Color to apply
|
|
119
|
+
* @returns Text wrapped with ANSI color codes
|
|
120
|
+
*/
|
|
121
|
+
function colorize(text, color) {
|
|
122
|
+
const colors = {
|
|
123
|
+
red: '\x1b[31m',
|
|
124
|
+
yellow: '\x1b[33m',
|
|
125
|
+
green: '\x1b[32m',
|
|
126
|
+
reset: '\x1b[0m'
|
|
127
|
+
};
|
|
128
|
+
return `${colors[color]}${text}${colors.reset}`;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=version-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-utils.js","sourceRoot":"","sources":["../../src/utils/version-utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "craftdesk",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Package manager for Claude Code skills and
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"description": "Package manager for Claude Code skills, agents, commands, hooks, and plugins",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"craftdesk": "./bin/craftdesk.js"
|
|
8
8
|
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist/",
|
|
11
|
+
"bin/",
|
|
12
|
+
"README.md",
|
|
13
|
+
"CHANGELOG.md",
|
|
14
|
+
"LICENSE.md"
|
|
15
|
+
],
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "https://github.com/mensfeld/craftdesk.git"
|
|
19
|
+
},
|
|
20
|
+
"bugs": {
|
|
21
|
+
"url": "https://github.com/mensfeld/craftdesk/issues"
|
|
22
|
+
},
|
|
23
|
+
"homepage": "https://github.com/mensfeld/craftdesk#readme",
|
|
9
24
|
"scripts": {
|
|
10
25
|
"build": "tsc",
|
|
11
26
|
"dev": "ts-node src/index.ts",
|
|
@@ -14,6 +29,11 @@
|
|
|
14
29
|
"test:ui": "vitest --ui",
|
|
15
30
|
"test:coverage": "vitest run --coverage",
|
|
16
31
|
"test:watch": "vitest watch",
|
|
32
|
+
"lint": "eslint src/",
|
|
33
|
+
"lint:fix": "eslint src/ --fix",
|
|
34
|
+
"lint:docs": "eslint src/ --rule 'jsdoc/require-jsdoc: error'",
|
|
35
|
+
"docs": "typedoc",
|
|
36
|
+
"docs:watch": "typedoc --watch",
|
|
17
37
|
"prepare": "npm run build"
|
|
18
38
|
},
|
|
19
39
|
"keywords": [
|
|
@@ -27,19 +47,26 @@
|
|
|
27
47
|
"author": "CraftDesk",
|
|
28
48
|
"license": "MIT",
|
|
29
49
|
"dependencies": {
|
|
50
|
+
"adm-zip": "^0.5.10",
|
|
30
51
|
"axios": "^1.6.2",
|
|
31
|
-
"commander": "^
|
|
52
|
+
"commander": "^14.0.0",
|
|
32
53
|
"fs-extra": "^11.2.0"
|
|
33
54
|
},
|
|
34
55
|
"devDependencies": {
|
|
35
|
-
"@types/
|
|
56
|
+
"@types/adm-zip": "^0.5.5",
|
|
36
57
|
"@types/fs-extra": "^11.0.4",
|
|
58
|
+
"@types/node": "^24.0.0",
|
|
59
|
+
"@typescript-eslint/eslint-plugin": "^8.48.0",
|
|
60
|
+
"@typescript-eslint/parser": "^8.48.0",
|
|
61
|
+
"@vitest/coverage-v8": "^4.0.0",
|
|
62
|
+
"@vitest/ui": "^4.0.0",
|
|
63
|
+
"eslint": "^9.39.1",
|
|
64
|
+
"eslint-plugin-jsdoc": "^62.0.0",
|
|
65
|
+
"typedoc": "^0.28.14",
|
|
37
66
|
"typescript": "^5.3.3",
|
|
38
|
-
"vitest": "^
|
|
39
|
-
"@vitest/ui": "^1.0.4",
|
|
40
|
-
"@vitest/coverage-v8": "^1.0.4"
|
|
67
|
+
"vitest": "^4.0.0"
|
|
41
68
|
},
|
|
42
69
|
"engines": {
|
|
43
|
-
"node": ">=
|
|
70
|
+
"node": ">=20.0.0"
|
|
44
71
|
}
|
|
45
|
-
}
|
|
72
|
+
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"permissions": {
|
|
3
|
-
"allow": [
|
|
4
|
-
"Bash(npm run build:*)",
|
|
5
|
-
"Bash(cat:*)",
|
|
6
|
-
"Bash(git init:*)",
|
|
7
|
-
"Bash(git remote add:*)",
|
|
8
|
-
"Bash(git add:*)",
|
|
9
|
-
"Bash(git commit:*)",
|
|
10
|
-
"Bash(git push:*)",
|
|
11
|
-
"Bash(npm test)",
|
|
12
|
-
"Bash(node /home/mencio/Software/CraftDesk/CraftDesk/cli/dist/index.js:*)",
|
|
13
|
-
"Bash(pkill:*)",
|
|
14
|
-
"Bash(npm test:*)"
|
|
15
|
-
],
|
|
16
|
-
"deny": [],
|
|
17
|
-
"ask": []
|
|
18
|
-
}
|
|
19
|
-
}
|