aem-eds-kit 0.4.0 → 0.4.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/CHANGELOG.md +15 -1
- package/README.md +1 -1
- package/dist/bin/eds.js +217 -99
- package/dist/bin/eds.js.map +1 -1
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,19 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.4.1] - 2026-10-06
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
- Animated the five accent dots at interactive entry points (`eds` menu and
|
|
13
|
+
`block from-design`): a highlight bounces across them, then settles. Static
|
|
14
|
+
fallback when piped or with `--no-color`.
|
|
15
|
+
- Removed the maker credit from the brand lockup and dropped "× Figma" from the
|
|
16
|
+
default logo tagline (it reads as design-agnostic now).
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
- Docs page links (logo / Home / nav) pointed at `/` and 404'd on the project
|
|
20
|
+
Pages path - now relative to `index.html`.
|
|
21
|
+
|
|
9
22
|
## [0.4.0] - 2026-10-06
|
|
10
23
|
|
|
11
24
|
Design-agnostic generation, a full interactive configurator, and the first version
|
|
@@ -88,6 +101,7 @@ harness, gradient ANSI logo. Not published (superseded by 0.3.0).
|
|
|
88
101
|
Initial CLI scaffold: `block create`, `block from-figma`, `block list`,
|
|
89
102
|
`figma setup`, `doctor`, `preview`, `publish`. Not published.
|
|
90
103
|
|
|
91
|
-
[Unreleased]: https://github.com/piotrgodycki/aem-eds-kit/compare/v0.4.
|
|
104
|
+
[Unreleased]: https://github.com/piotrgodycki/aem-eds-kit/compare/v0.4.1...HEAD
|
|
105
|
+
[0.4.1]: https://github.com/piotrgodycki/aem-eds-kit/releases/tag/v0.4.1
|
|
92
106
|
[0.4.0]: https://github.com/piotrgodycki/aem-eds-kit/releases/tag/v0.4.0
|
|
93
107
|
[0.3.0]: https://github.com/piotrgodycki/aem-eds-kit/releases/tag/v0.3.0
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<p align="center"><img src=".github/assets/readme-banner.png" alt="aem-eds-kit -
|
|
1
|
+
<p align="center"><img src="https://raw.githubusercontent.com/piotrgodycki/aem-eds-kit/main/.github/assets/readme-banner.png" alt="aem-eds-kit - Design frame in. EDS block out." width="100%"></p>
|
|
2
2
|
|
|
3
3
|
# aem-eds-kit
|
|
4
4
|
|
package/dist/bin/eds.js
CHANGED
|
@@ -18,70 +18,8 @@ var init_esm_shims = __esm({
|
|
|
18
18
|
}
|
|
19
19
|
});
|
|
20
20
|
|
|
21
|
-
// src/lib/logger.ts
|
|
22
|
-
import chalk from "chalk";
|
|
23
|
-
function getLevel() {
|
|
24
|
-
const env = process.env.EDS_LOG_LEVEL?.toLowerCase();
|
|
25
|
-
if (env && env in LEVEL_ORDER) return env;
|
|
26
|
-
return "info";
|
|
27
|
-
}
|
|
28
|
-
function shouldLog(level) {
|
|
29
|
-
if (quiet) return level === "error";
|
|
30
|
-
return LEVEL_ORDER[level] >= LEVEL_ORDER[currentLevel];
|
|
31
|
-
}
|
|
32
|
-
var LEVEL_ORDER, currentLevel, quiet, logoShown, logger;
|
|
33
|
-
var init_logger = __esm({
|
|
34
|
-
"src/lib/logger.ts"() {
|
|
35
|
-
"use strict";
|
|
36
|
-
init_esm_shims();
|
|
37
|
-
LEVEL_ORDER = {
|
|
38
|
-
debug: 0,
|
|
39
|
-
info: 1,
|
|
40
|
-
warn: 2,
|
|
41
|
-
error: 3,
|
|
42
|
-
silent: 4
|
|
43
|
-
};
|
|
44
|
-
currentLevel = getLevel();
|
|
45
|
-
quiet = false;
|
|
46
|
-
logoShown = false;
|
|
47
|
-
logger = {
|
|
48
|
-
setLevel(level) {
|
|
49
|
-
currentLevel = level;
|
|
50
|
-
},
|
|
51
|
-
setQuiet(q) {
|
|
52
|
-
quiet = q;
|
|
53
|
-
},
|
|
54
|
-
debug(...args) {
|
|
55
|
-
if (shouldLog("debug")) console.error(chalk.gray("[debug]"), ...args);
|
|
56
|
-
},
|
|
57
|
-
info(...args) {
|
|
58
|
-
if (shouldLog("info")) console.error(...args);
|
|
59
|
-
},
|
|
60
|
-
/**
|
|
61
|
-
* Print the brand logo at most once per process. The interactive menu and
|
|
62
|
-
* every command call this, so running a command directly shows the logo,
|
|
63
|
-
* while picking it from the menu (which already showed it) doesn't repeat it.
|
|
64
|
-
*/
|
|
65
|
-
logoOnce(art) {
|
|
66
|
-
if (logoShown) return;
|
|
67
|
-
logoShown = true;
|
|
68
|
-
if (shouldLog("info")) console.error(art);
|
|
69
|
-
},
|
|
70
|
-
success(...args) {
|
|
71
|
-
if (shouldLog("info")) console.error(chalk.green("\u2713"), ...args);
|
|
72
|
-
},
|
|
73
|
-
warn(...args) {
|
|
74
|
-
if (shouldLog("warn")) console.error(chalk.yellow("\u26A0"), ...args);
|
|
75
|
-
},
|
|
76
|
-
error(...args) {
|
|
77
|
-
if (shouldLog("error")) console.error(chalk.red("\u2717"), ...args);
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
|
|
83
21
|
// src/lib/ui.ts
|
|
84
|
-
import
|
|
22
|
+
import chalk from "chalk";
|
|
85
23
|
function statusIcon(status) {
|
|
86
24
|
return icon[status];
|
|
87
25
|
}
|
|
@@ -93,10 +31,27 @@ function padEndVisible(s, width) {
|
|
|
93
31
|
return pad > 0 ? s + " ".repeat(pad) : s;
|
|
94
32
|
}
|
|
95
33
|
function mark() {
|
|
96
|
-
return
|
|
34
|
+
return chalk.bgHex("#ff5a36").hex("#0d0d0c").bold(" >_ ");
|
|
97
35
|
}
|
|
98
36
|
function lockup() {
|
|
99
|
-
return `${mark()} ${
|
|
37
|
+
return `${mark()} ${chalk.bold("aem-eds-kit")}`;
|
|
38
|
+
}
|
|
39
|
+
function dotsStatic() {
|
|
40
|
+
return Array.from({ length: DOTS_N }, () => brand.accent("\u25CF")).join(" ");
|
|
41
|
+
}
|
|
42
|
+
function dotsFrame(step) {
|
|
43
|
+
const period = DOTS_N * 2 - 2;
|
|
44
|
+
const phase = step % period;
|
|
45
|
+
const lit = phase < DOTS_N ? phase : period - phase;
|
|
46
|
+
return Array.from({ length: DOTS_N }, (_, i) => {
|
|
47
|
+
const d = Math.abs(i - lit);
|
|
48
|
+
if (d === 0) return chalk.hex("#ff8a66").bold("\u25CF");
|
|
49
|
+
if (d === 1) return brand.accent("\u25CF");
|
|
50
|
+
return chalk.hex("#7a3a2a")("\u25CF");
|
|
51
|
+
}).join(" ");
|
|
52
|
+
}
|
|
53
|
+
function brandLine(dots, tagline) {
|
|
54
|
+
return `${lockup()} ${dots} ${chalk.dim(tagline)}`;
|
|
100
55
|
}
|
|
101
56
|
function hexToRgb(hex) {
|
|
102
57
|
const h = hex.replace("#", "");
|
|
@@ -121,34 +76,35 @@ function gradientLine(line, stops, width) {
|
|
|
121
76
|
if (ch === " ") return ch;
|
|
122
77
|
const seg = i / span * (stops.length - 1);
|
|
123
78
|
const idx = Math.min(Math.floor(seg), stops.length - 2);
|
|
124
|
-
return
|
|
79
|
+
return chalk.hex(mix(stops[idx], stops[idx + 1], seg - idx))(ch);
|
|
125
80
|
}).join("");
|
|
126
81
|
}
|
|
127
|
-
function
|
|
82
|
+
function logoArt() {
|
|
128
83
|
const width = columnWidth(LOGO_ART);
|
|
129
|
-
|
|
130
|
-
|
|
84
|
+
return LOGO_ART.map((row) => ` ${gradientLine(row, LOGO_STOPS, width)}`).join("\n");
|
|
85
|
+
}
|
|
86
|
+
function logo(tagline = "AEM Edge Delivery Services") {
|
|
131
87
|
return `
|
|
132
|
-
${
|
|
88
|
+
${logoArt()}
|
|
133
89
|
|
|
134
|
-
${
|
|
90
|
+
${brandLine(dotsStatic(), tagline)}
|
|
135
91
|
`;
|
|
136
92
|
}
|
|
137
93
|
function heading(title, subtitle) {
|
|
138
94
|
const bar = brand.red("\u258A");
|
|
139
|
-
const sub = subtitle ? ` ${
|
|
95
|
+
const sub = subtitle ? ` ${chalk.dim(subtitle)}` : "";
|
|
140
96
|
return `
|
|
141
|
-
${bar} ${
|
|
97
|
+
${bar} ${chalk.bold(title)}${sub}
|
|
142
98
|
`;
|
|
143
99
|
}
|
|
144
100
|
function statusLine(status, name, message, nameWidth = 0) {
|
|
145
101
|
const padded = nameWidth ? padEndVisible(name, nameWidth) : name;
|
|
146
|
-
const msg = message ? ` ${
|
|
102
|
+
const msg = message ? ` ${chalk.dim(message)}` : "";
|
|
147
103
|
return ` ${icon[status]} ${padded}${msg}`;
|
|
148
104
|
}
|
|
149
105
|
function accentLine(name, message, nameWidth = 0) {
|
|
150
106
|
const padded = nameWidth ? padEndVisible(name, nameWidth) : name;
|
|
151
|
-
const msg = message ? ` ${
|
|
107
|
+
const msg = message ? ` ${chalk.dim(message)}` : "";
|
|
152
108
|
return ` ${brand.accent("\u2714")} ${padded}${msg}`;
|
|
153
109
|
}
|
|
154
110
|
function columnWidth(items) {
|
|
@@ -169,47 +125,48 @@ function summary(counts) {
|
|
|
169
125
|
if (counts.warn) parts.push(`${icon.warn} ${counts.warn} ${plural(counts.warn, "warning")}`);
|
|
170
126
|
if (counts.fail) parts.push(`${icon.fail} ${counts.fail} failed`);
|
|
171
127
|
if (counts.info) parts.push(`${icon.info} ${counts.info} info`);
|
|
172
|
-
return parts.join(
|
|
128
|
+
return parts.join(chalk.dim(" "));
|
|
173
129
|
}
|
|
174
130
|
function plural(n, word) {
|
|
175
131
|
return n === 1 ? word : `${word}s`;
|
|
176
132
|
}
|
|
177
|
-
var brand, icon, ANSI, LOGO_ART, LOGO_STOPS;
|
|
133
|
+
var brand, icon, ANSI, DOTS_N, LOGO_ART, LOGO_STOPS;
|
|
178
134
|
var init_ui = __esm({
|
|
179
135
|
"src/lib/ui.ts"() {
|
|
180
136
|
"use strict";
|
|
181
137
|
init_esm_shims();
|
|
182
138
|
brand = {
|
|
183
139
|
// Warm sweep for the logo wordmark (red → ember → orange)
|
|
184
|
-
red:
|
|
185
|
-
ember:
|
|
186
|
-
orange:
|
|
140
|
+
red: chalk.hex("#FA0F00"),
|
|
141
|
+
ember: chalk.hex("#FF4B1F"),
|
|
142
|
+
orange: chalk.hex("#FF7B00"),
|
|
187
143
|
// Accent
|
|
188
|
-
blue:
|
|
144
|
+
blue: chalk.hex("#2680EB"),
|
|
189
145
|
// Signature accent (matches the landing's `#FF5A36`)
|
|
190
|
-
accent:
|
|
146
|
+
accent: chalk.hex("#ff5a36"),
|
|
191
147
|
// Five-colour dot mark (the CLI signature)
|
|
192
|
-
dotOrange:
|
|
193
|
-
dotPurple:
|
|
194
|
-
dotBlue:
|
|
195
|
-
dotGreen:
|
|
196
|
-
dotPink:
|
|
148
|
+
dotOrange: chalk.hex("#F24E1E"),
|
|
149
|
+
dotPurple: chalk.hex("#A259FF"),
|
|
150
|
+
dotBlue: chalk.hex("#1ABCFE"),
|
|
151
|
+
dotGreen: chalk.hex("#0ACF83"),
|
|
152
|
+
dotPink: chalk.hex("#FF7262"),
|
|
197
153
|
// Semantic roles
|
|
198
|
-
ok:
|
|
199
|
-
warn:
|
|
200
|
-
err:
|
|
201
|
-
info:
|
|
154
|
+
ok: chalk.hex("#2D9D78"),
|
|
155
|
+
warn: chalk.hex("#E68619"),
|
|
156
|
+
err: chalk.hex("#D7373F"),
|
|
157
|
+
info: chalk.hex("#2680EB")
|
|
202
158
|
};
|
|
203
159
|
icon = {
|
|
204
160
|
pass: brand.ok("\u2713"),
|
|
205
161
|
warn: brand.warn("\u26A0"),
|
|
206
162
|
fail: brand.err("\u2717"),
|
|
207
163
|
info: brand.info("\u2139"),
|
|
208
|
-
bullet:
|
|
209
|
-
arrow:
|
|
164
|
+
bullet: chalk.dim("\u2022"),
|
|
165
|
+
arrow: chalk.dim("\u21B3"),
|
|
210
166
|
figma: brand.dotPurple("\u25C6")
|
|
211
167
|
};
|
|
212
168
|
ANSI = /\[[0-9;]*m/g;
|
|
169
|
+
DOTS_N = 5;
|
|
213
170
|
LOGO_ART = [
|
|
214
171
|
"\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588",
|
|
215
172
|
"\u2588 \u2588 \u2588 \u2588 ",
|
|
@@ -221,6 +178,96 @@ var init_ui = __esm({
|
|
|
221
178
|
}
|
|
222
179
|
});
|
|
223
180
|
|
|
181
|
+
// src/lib/logger.ts
|
|
182
|
+
import chalk2 from "chalk";
|
|
183
|
+
function getLevel() {
|
|
184
|
+
const env = process.env.EDS_LOG_LEVEL?.toLowerCase();
|
|
185
|
+
if (env && env in LEVEL_ORDER) return env;
|
|
186
|
+
return "info";
|
|
187
|
+
}
|
|
188
|
+
function shouldLog(level) {
|
|
189
|
+
if (quiet) return level === "error";
|
|
190
|
+
return LEVEL_ORDER[level] >= LEVEL_ORDER[currentLevel];
|
|
191
|
+
}
|
|
192
|
+
var LEVEL_ORDER, currentLevel, quiet, logoShown, logger;
|
|
193
|
+
var init_logger = __esm({
|
|
194
|
+
"src/lib/logger.ts"() {
|
|
195
|
+
"use strict";
|
|
196
|
+
init_esm_shims();
|
|
197
|
+
init_ui();
|
|
198
|
+
LEVEL_ORDER = {
|
|
199
|
+
debug: 0,
|
|
200
|
+
info: 1,
|
|
201
|
+
warn: 2,
|
|
202
|
+
error: 3,
|
|
203
|
+
silent: 4
|
|
204
|
+
};
|
|
205
|
+
currentLevel = getLevel();
|
|
206
|
+
quiet = false;
|
|
207
|
+
logoShown = false;
|
|
208
|
+
logger = {
|
|
209
|
+
setLevel(level) {
|
|
210
|
+
currentLevel = level;
|
|
211
|
+
},
|
|
212
|
+
setQuiet(q) {
|
|
213
|
+
quiet = q;
|
|
214
|
+
},
|
|
215
|
+
debug(...args) {
|
|
216
|
+
if (shouldLog("debug")) console.error(chalk2.gray("[debug]"), ...args);
|
|
217
|
+
},
|
|
218
|
+
info(...args) {
|
|
219
|
+
if (shouldLog("info")) console.error(...args);
|
|
220
|
+
},
|
|
221
|
+
/**
|
|
222
|
+
* Print the brand logo at most once per process. The interactive menu and
|
|
223
|
+
* every command call this, so running a command directly shows the logo,
|
|
224
|
+
* while picking it from the menu (which already showed it) doesn't repeat it.
|
|
225
|
+
*/
|
|
226
|
+
logoOnce(art) {
|
|
227
|
+
if (logoShown) return;
|
|
228
|
+
logoShown = true;
|
|
229
|
+
if (shouldLog("info")) console.error(art);
|
|
230
|
+
},
|
|
231
|
+
/**
|
|
232
|
+
* Like {@link logoOnce}, but animates the five accent dots on an interactive
|
|
233
|
+
* TTY: a highlight bounces across them before settling. Falls back to the
|
|
234
|
+
* static logo when piped, when `--no-color` is set, or when logging is quiet.
|
|
235
|
+
* Used at the interactive entry points (menu, `block from-design`).
|
|
236
|
+
*/
|
|
237
|
+
async logoOnceAnimated(tagline) {
|
|
238
|
+
if (logoShown) return;
|
|
239
|
+
logoShown = true;
|
|
240
|
+
if (!shouldLog("info")) return;
|
|
241
|
+
const out = process.stderr;
|
|
242
|
+
if (!out.isTTY || chalk2.level === 0) {
|
|
243
|
+
console.error(logo(tagline));
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
out.write(`
|
|
247
|
+
${logoArt()}
|
|
248
|
+
|
|
249
|
+
`);
|
|
250
|
+
const frames = 16;
|
|
251
|
+
for (let step = 0; step < frames; step++) {
|
|
252
|
+
out.write(`\r\x1B[K ${brandLine(dotsFrame(step), tagline)}`);
|
|
253
|
+
await new Promise((r) => setTimeout(r, 70));
|
|
254
|
+
}
|
|
255
|
+
out.write(`\r\x1B[K ${brandLine(dotsStatic(), tagline)}
|
|
256
|
+
`);
|
|
257
|
+
},
|
|
258
|
+
success(...args) {
|
|
259
|
+
if (shouldLog("info")) console.error(chalk2.green("\u2713"), ...args);
|
|
260
|
+
},
|
|
261
|
+
warn(...args) {
|
|
262
|
+
if (shouldLog("warn")) console.error(chalk2.yellow("\u26A0"), ...args);
|
|
263
|
+
},
|
|
264
|
+
error(...args) {
|
|
265
|
+
if (shouldLog("error")) console.error(chalk2.red("\u2717"), ...args);
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
|
|
224
271
|
// src/lib/schemas.ts
|
|
225
272
|
import { z } from "zod";
|
|
226
273
|
var figmaUrlSchema, edsConfigSchema, edsProjectSchema, edsMetaSchema, kebabCaseRegex;
|
|
@@ -1575,7 +1622,7 @@ async function blockFromDesign(figmaUrlArg, optionsArg) {
|
|
|
1575
1622
|
process.exitCode = 1;
|
|
1576
1623
|
return;
|
|
1577
1624
|
}
|
|
1578
|
-
logger.
|
|
1625
|
+
await logger.logoOnceAnimated("Design \u2192 EDS block");
|
|
1579
1626
|
let designUrl = figmaUrlArg;
|
|
1580
1627
|
let options = optionsArg;
|
|
1581
1628
|
if (!designUrl) {
|
|
@@ -4005,7 +4052,7 @@ async function listBlockNames(projectRoot) {
|
|
|
4005
4052
|
}
|
|
4006
4053
|
async function mainMenu() {
|
|
4007
4054
|
const { select, input } = await import("@inquirer/prompts");
|
|
4008
|
-
logger.
|
|
4055
|
+
await logger.logoOnceAnimated("What do you want to do?");
|
|
4009
4056
|
const action = await select({
|
|
4010
4057
|
message: "Choose an action",
|
|
4011
4058
|
choices: [
|
|
@@ -4103,18 +4150,89 @@ var init_menu = __esm({
|
|
|
4103
4150
|
init_logger();
|
|
4104
4151
|
init_project();
|
|
4105
4152
|
init_schemas();
|
|
4106
|
-
init_ui();
|
|
4107
4153
|
}
|
|
4108
4154
|
});
|
|
4109
4155
|
|
|
4110
4156
|
// src/bin/eds.ts
|
|
4111
4157
|
init_esm_shims();
|
|
4112
|
-
init_logger();
|
|
4113
|
-
init_ui();
|
|
4114
4158
|
import chalk14 from "chalk";
|
|
4115
4159
|
import { Command } from "commander";
|
|
4160
|
+
|
|
4161
|
+
// package.json
|
|
4162
|
+
var package_default = {
|
|
4163
|
+
name: "aem-eds-kit",
|
|
4164
|
+
version: "0.4.1",
|
|
4165
|
+
description: "CLI for AEM Edge Delivery Services with Figma MCP integration",
|
|
4166
|
+
type: "module",
|
|
4167
|
+
engines: {
|
|
4168
|
+
node: ">=20"
|
|
4169
|
+
},
|
|
4170
|
+
bin: {
|
|
4171
|
+
eds: "dist/bin/eds.js"
|
|
4172
|
+
},
|
|
4173
|
+
main: "./dist/index.js",
|
|
4174
|
+
types: "./dist/index.d.ts",
|
|
4175
|
+
files: [
|
|
4176
|
+
"dist",
|
|
4177
|
+
"CHANGELOG.md"
|
|
4178
|
+
],
|
|
4179
|
+
scripts: {
|
|
4180
|
+
dev: "tsx src/bin/eds.ts",
|
|
4181
|
+
build: "tsup",
|
|
4182
|
+
test: "vitest run",
|
|
4183
|
+
"test:watch": "vitest",
|
|
4184
|
+
lint: "biome check src/ tests/",
|
|
4185
|
+
"lint:fix": "biome check --write src/ tests/",
|
|
4186
|
+
typecheck: "tsc --noEmit",
|
|
4187
|
+
prepare: "git config core.hooksPath .githooks || true",
|
|
4188
|
+
prepublishOnly: "npm run build"
|
|
4189
|
+
},
|
|
4190
|
+
keywords: [
|
|
4191
|
+
"aem",
|
|
4192
|
+
"edge-delivery-services",
|
|
4193
|
+
"helix",
|
|
4194
|
+
"figma",
|
|
4195
|
+
"mcp",
|
|
4196
|
+
"cli",
|
|
4197
|
+
"adobe"
|
|
4198
|
+
],
|
|
4199
|
+
author: "Piotr Godycki <piotrgodycki@yahoo.com>",
|
|
4200
|
+
license: "MIT",
|
|
4201
|
+
repository: {
|
|
4202
|
+
type: "git",
|
|
4203
|
+
url: "git+https://github.com/piotrgodycki/aem-eds-kit.git"
|
|
4204
|
+
},
|
|
4205
|
+
homepage: "https://piotrgodycki.github.io/aem-eds-kit/",
|
|
4206
|
+
bugs: {
|
|
4207
|
+
url: "https://github.com/piotrgodycki/aem-eds-kit/issues"
|
|
4208
|
+
},
|
|
4209
|
+
dependencies: {
|
|
4210
|
+
"@inquirer/prompts": "^7.0.0",
|
|
4211
|
+
chalk: "^5.4.0",
|
|
4212
|
+
commander: "^13.0.0",
|
|
4213
|
+
execa: "^9.5.0",
|
|
4214
|
+
ora: "^8.1.0",
|
|
4215
|
+
yaml: "^2.6.0",
|
|
4216
|
+
zod: "^3.24.0"
|
|
4217
|
+
},
|
|
4218
|
+
devDependencies: {
|
|
4219
|
+
"@biomejs/biome": "^1.9.0",
|
|
4220
|
+
"@types/node": "^22.0.0",
|
|
4221
|
+
tsup: "^8.3.0",
|
|
4222
|
+
tsx: "^4.19.0",
|
|
4223
|
+
typescript: "^5.7.0",
|
|
4224
|
+
vitest: "^2.1.0"
|
|
4225
|
+
},
|
|
4226
|
+
optionalDependencies: {
|
|
4227
|
+
"@modelcontextprotocol/sdk": "^1.29.0"
|
|
4228
|
+
}
|
|
4229
|
+
};
|
|
4230
|
+
|
|
4231
|
+
// src/bin/eds.ts
|
|
4232
|
+
init_logger();
|
|
4233
|
+
init_ui();
|
|
4116
4234
|
var program = new Command();
|
|
4117
|
-
program.name("eds").description("CLI for AEM Edge Delivery Services with Figma integration").version(
|
|
4235
|
+
program.name("eds").description("CLI for AEM Edge Delivery Services with Figma integration").version(package_default.version).option("--verbose", "Enable verbose output").option("--quiet", "Suppress non-error output").option("--json", "Output in JSON format").option("--no-color", "Disable color output").showHelpAfterError("(add --help for usage)").hook("preAction", (thisCommand) => {
|
|
4118
4236
|
const opts = thisCommand.opts();
|
|
4119
4237
|
if (opts.verbose) logger.setLevel("debug");
|
|
4120
4238
|
if (opts.quiet) logger.setQuiet(true);
|