aback-ui 0.0.0-stage → 0.2.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/LICENSE +21 -0
- package/README.md +85 -2
- package/dist/args.d.ts +15 -0
- package/dist/args.d.ts.map +1 -0
- package/dist/args.js +91 -0
- package/dist/args.js.map +1 -0
- package/dist/cli.d.ts +13 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +106 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/add.d.ts +29 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +82 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/diff.d.ts +13 -0
- package/dist/commands/diff.d.ts.map +1 -0
- package/dist/commands/diff.js +85 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/doctor.d.ts +8 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +45 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/init.d.ts +19 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +97 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +11 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +42 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/view.d.ts +11 -0
- package/dist/commands/view.d.ts.map +1 -0
- package/dist/commands/view.js +43 -0
- package/dist/commands/view.js.map +1 -0
- package/dist/config.d.ts +66 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +297 -0
- package/dist/config.js.map +1 -0
- package/dist/diff.d.ts +30 -0
- package/dist/diff.d.ts.map +1 -0
- package/dist/diff.js +121 -0
- package/dist/diff.js.map +1 -0
- package/dist/doctor.d.ts +35 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +203 -0
- package/dist/doctor.js.map +1 -0
- package/dist/errors.d.ts +6 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +12 -0
- package/dist/errors.js.map +1 -0
- package/dist/help.d.ts +3 -0
- package/dist/help.d.ts.map +1 -0
- package/dist/help.js +48 -0
- package/dist/help.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/install.d.ts +53 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +119 -0
- package/dist/install.js.map +1 -0
- package/dist/logger.d.ts +14 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +47 -0
- package/dist/logger.js.map +1 -0
- package/dist/paths.d.ts +18 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +76 -0
- package/dist/paths.js.map +1 -0
- package/dist/prompt.d.ts +13 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +25 -0
- package/dist/prompt.js.map +1 -0
- package/dist/registry.d.ts +49 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +216 -0
- package/dist/registry.js.map +1 -0
- package/dist/types.d.ts +88 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +59 -4
- package/registry/accordion.json +32 -0
- package/registry/alert-dialog.json +28 -0
- package/registry/alert.json +31 -0
- package/registry/article-layout.json +38 -0
- package/registry/avatar.json +31 -0
- package/registry/badge.json +33 -0
- package/registry/breadcrumbs.json +32 -0
- package/registry/button.json +34 -0
- package/registry/calendar.json +29 -0
- package/registry/card.json +30 -0
- package/registry/checkbox.json +33 -0
- package/registry/code-block.json +29 -0
- package/registry/collapsible.json +28 -0
- package/registry/combobox.json +30 -0
- package/registry/command.json +34 -0
- package/registry/contact-form.json +37 -0
- package/registry/cookie-consent.json +28 -0
- package/registry/copy-button.json +33 -0
- package/registry/cta-banner.json +32 -0
- package/registry/dashboard-shell.json +32 -0
- package/registry/date-picker.json +32 -0
- package/registry/description-list.json +28 -0
- package/registry/dialog.json +33 -0
- package/registry/dropdown-menu.json +33 -0
- package/registry/dropzone.json +31 -0
- package/registry/empty-state.json +32 -0
- package/registry/faq.json +31 -0
- package/registry/feature-grid.json +33 -0
- package/registry/field.json +29 -0
- package/registry/hero.json +32 -0
- package/registry/hover-card.json +28 -0
- package/registry/index.json +1633 -0
- package/registry/input-group.json +30 -0
- package/registry/input.json +29 -0
- package/registry/kbd.json +29 -0
- package/registry/label.json +29 -0
- package/registry/layout.json +32 -0
- package/registry/newsletter.json +35 -0
- package/registry/not-found.json +34 -0
- package/registry/page-header.json +29 -0
- package/registry/pagination.json +25 -0
- package/registry/popover.json +28 -0
- package/registry/pricing.json +35 -0
- package/registry/progress.json +28 -0
- package/registry/radio-group.json +28 -0
- package/registry/rating.json +32 -0
- package/registry/reading-progress.json +29 -0
- package/registry/relative-time.json +29 -0
- package/registry/scroll-area.json +28 -0
- package/registry/section-heading.json +30 -0
- package/registry/select.json +32 -0
- package/registry/separator.json +32 -0
- package/registry/settings-section.json +32 -0
- package/registry/share-buttons.json +34 -0
- package/registry/sheet.json +34 -0
- package/registry/sign-in.json +31 -0
- package/registry/site-footer.json +31 -0
- package/registry/site-header.json +37 -0
- package/registry/skeleton.json +28 -0
- package/registry/skip-link.json +30 -0
- package/registry/slider.json +28 -0
- package/registry/spinner.json +32 -0
- package/registry/stat.json +32 -0
- package/registry/steps.json +31 -0
- package/registry/switch.json +32 -0
- package/registry/table-of-contents.json +32 -0
- package/registry/table.json +28 -0
- package/registry/tabs.json +29 -0
- package/registry/textarea.json +29 -0
- package/registry/theme-toggle.json +34 -0
- package/registry/theme.json +16 -0
- package/registry/toast.json +29 -0
- package/registry/toggle-group.json +29 -0
- package/registry/tooltip.json +29 -0
- package/registry/users-table.json +36 -0
- package/registry/utils.json +19 -0
package/dist/doctor.js
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { readFile, readdir } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { detectAlias, detectFramework, detectTailwindMajor, existsPath, loadConfig, readPackageJson, readTsconfig, resolveAlias, resolveInstallDirs, } from "./config.js";
|
|
4
|
+
import { safeJoin, toPosix } from "./paths.js";
|
|
5
|
+
const MINIMUM_NODE = { major: 20, minor: 9 };
|
|
6
|
+
const LOCKFILES = ["bun.lock", "bun.lockb", "pnpm-lock.yaml", "yarn.lock", "package-lock.json"];
|
|
7
|
+
function compareVersions(actual, minimum) {
|
|
8
|
+
const [major = 0, minor = 0] = actual.split(".").map((part) => Number.parseInt(part, 10));
|
|
9
|
+
return major > minimum.major || (major === minimum.major && minor >= minimum.minor);
|
|
10
|
+
}
|
|
11
|
+
function relative(root, absolute) {
|
|
12
|
+
return toPosix(path.relative(root, absolute)) || ".";
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Resolve an aliased module the way a bundler would: the alias points at a
|
|
16
|
+
* module name, not a file, so `@/lib/utils` must find `utils.ts` as well as
|
|
17
|
+
* `utils/index.ts`.
|
|
18
|
+
*/
|
|
19
|
+
async function resolveModuleFile(base) {
|
|
20
|
+
for (const extension of ["", ".ts", ".tsx", ".js", ".jsx"]) {
|
|
21
|
+
const candidate = `${base}${extension}`;
|
|
22
|
+
if (await existsPath(candidate))
|
|
23
|
+
return candidate;
|
|
24
|
+
}
|
|
25
|
+
for (const index of ["index.ts", "index.tsx", "index.js", "index.jsx"]) {
|
|
26
|
+
const candidate = path.join(base, index);
|
|
27
|
+
if (await existsPath(candidate))
|
|
28
|
+
return candidate;
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Inspect a project without changing it.
|
|
34
|
+
*
|
|
35
|
+
* Every check is local and deterministic: no registry request, no package
|
|
36
|
+
* install, and no file writes. That makes `doctor` safe to run in CI and in a
|
|
37
|
+
* pre-commit hook, and it means the result never depends on network access.
|
|
38
|
+
*/
|
|
39
|
+
export async function diagnoseProject(options) {
|
|
40
|
+
const { root } = options;
|
|
41
|
+
const checks = [];
|
|
42
|
+
function add(id, title, status, detail, hint) {
|
|
43
|
+
checks.push({ id, title, status, detail, ...(hint ? { hint } : {}) });
|
|
44
|
+
}
|
|
45
|
+
const nodeVersion = options.nodeVersion ?? process.versions.node;
|
|
46
|
+
if (compareVersions(nodeVersion, MINIMUM_NODE)) {
|
|
47
|
+
add("node", "Node.js", "pass", `${nodeVersion} meets the >=20.9 requirement.`);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
add("node", "Node.js", "fail", `${nodeVersion} is below the required >=20.9.`, "Upgrade Node.js. Aback UI packages declare engines >=20.9.");
|
|
51
|
+
}
|
|
52
|
+
let pkg;
|
|
53
|
+
try {
|
|
54
|
+
pkg = await readPackageJson(root);
|
|
55
|
+
add("package", "package.json", "pass", "Found and parsed.");
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
add("package", "package.json", "fail", error.message, "Run this command from a JavaScript project.");
|
|
59
|
+
}
|
|
60
|
+
if (pkg) {
|
|
61
|
+
const framework = detectFramework(pkg);
|
|
62
|
+
add("framework", "Framework", "pass", framework === "unknown"
|
|
63
|
+
? "No Next.js, Vite, Remix, or Astro dependency detected; components are framework-agnostic."
|
|
64
|
+
: `Detected ${framework}.`);
|
|
65
|
+
const tailwind = detectTailwindMajor(pkg);
|
|
66
|
+
if (tailwind === null) {
|
|
67
|
+
add("tailwind", "Tailwind CSS", "fail", "Tailwind CSS is not in dependencies or devDependencies.", "Install Tailwind CSS v4: the Aback theme uses @theme inline.");
|
|
68
|
+
}
|
|
69
|
+
else if (tailwind < 4) {
|
|
70
|
+
add("tailwind", "Tailwind CSS", "fail", `Tailwind CSS v${tailwind} is installed; v4 is required.`, "Upgrade to Tailwind CSS v4 before installing components.");
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
add("tailwind", "Tailwind CSS", "pass", `v${tailwind} detected.`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
let config = null;
|
|
77
|
+
try {
|
|
78
|
+
config = await loadConfig(root);
|
|
79
|
+
if (config) {
|
|
80
|
+
add("config", "aback-ui.json", "pass", "Found and parsed.");
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
add("config", "aback-ui.json", "fail", "aback-ui.json is missing.", "Run `aback-ui init` to create it and install the theme.");
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
add("config", "aback-ui.json", "fail", error.message, "Fix the JSON, or run `aback-ui init --force` to rewrite it.");
|
|
88
|
+
}
|
|
89
|
+
if (!config) {
|
|
90
|
+
add("aliases", "Path aliases", "skip", "Needs aback-ui.json.");
|
|
91
|
+
add("utils", "Class utility", "skip", "Needs aback-ui.json.");
|
|
92
|
+
add("css", "Global stylesheet", "skip", "Needs aback-ui.json.");
|
|
93
|
+
add("theme", "Aback theme", "skip", "Needs aback-ui.json.");
|
|
94
|
+
add("registry", "Registry", "skip", "Needs aback-ui.json.");
|
|
95
|
+
add("installed", "Installed components", "skip", "Needs aback-ui.json.");
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
if (config.style === "aback") {
|
|
99
|
+
add("style", "Style", "pass", 'Using the "aback" style.');
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
add("style", "Style", "warn", `aback-ui.json sets style "${config.style ?? "(missing)"}", not "aback".`, 'Set "style" to "aback" so component docs and theme tokens match.');
|
|
103
|
+
}
|
|
104
|
+
const tsconfig = await readTsconfig(root);
|
|
105
|
+
const alias = detectAlias(tsconfig, root);
|
|
106
|
+
if (alias) {
|
|
107
|
+
add("aliases", "Path aliases", "pass", `${alias.prefix} resolves to ${relative(root, alias.base)}.`);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
add("aliases", "Path aliases", "warn", "No usable path alias in tsconfig.json or jsconfig.json.", 'Add a mapping such as "@/*": ["./src/*"] under compilerOptions.paths.');
|
|
111
|
+
}
|
|
112
|
+
const utilsAlias = config.aliases?.utils;
|
|
113
|
+
const utilsTarget = utilsAlias ? resolveAlias(utilsAlias, tsconfig, root) : null;
|
|
114
|
+
const utilsFile = utilsTarget ? await resolveModuleFile(utilsTarget.absolute) : null;
|
|
115
|
+
if (!utilsTarget) {
|
|
116
|
+
add("utils", "Class utility", "warn", `The utils alias "${utilsAlias ?? "(missing)"}" does not resolve inside the project.`, "Set aliases.utils in aback-ui.json, for example @/lib/utils.");
|
|
117
|
+
}
|
|
118
|
+
else if (utilsFile) {
|
|
119
|
+
add("utils", "Class utility", "pass", `${relative(root, utilsFile)} exists.`);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
add("utils", "Class utility", "warn", `${relative(root, utilsTarget.absolute)} is missing.`, "Run `aback-ui add utils` to restore the cn() helper.");
|
|
123
|
+
}
|
|
124
|
+
const cssRelative = config.tailwind?.css;
|
|
125
|
+
if (!cssRelative) {
|
|
126
|
+
add("css", "Global stylesheet", "fail", "tailwind.css is not set in aback-ui.json.", "Set tailwind.css to the project stylesheet, for example src/app/globals.css.");
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
let cssPath = null;
|
|
130
|
+
try {
|
|
131
|
+
cssPath = safeJoin(root, cssRelative.replace(/^\.\//, ""));
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
add("css", "Global stylesheet", "fail", error.message);
|
|
135
|
+
}
|
|
136
|
+
if (cssPath) {
|
|
137
|
+
if (!(await existsPath(cssPath))) {
|
|
138
|
+
add("css", "Global stylesheet", "fail", `${cssRelative} does not exist.`, "Correct tailwind.css in aback-ui.json, or create the file.");
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
const css = await readFile(cssPath, "utf8");
|
|
142
|
+
if (css.includes("aback.css") || css.includes("@theme inline")) {
|
|
143
|
+
add("css", "Global stylesheet", "pass", `${cssRelative} imports Aback styles.`);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
add("css", "Global stylesheet", "warn", `${cssRelative} does not reference aback.css.`, 'Add @import "./styles/aback.css"; after the Tailwind import.');
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
const dirs = await resolveInstallDirs(root, config);
|
|
152
|
+
const themeFile = path.join(dirs.styles, "aback.css");
|
|
153
|
+
if (await existsPath(themeFile)) {
|
|
154
|
+
add("theme", "Aback theme", "pass", `${relative(root, themeFile)} exists.`);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
add("theme", "Aback theme", "warn", `${relative(root, themeFile)} is missing.`, "Run `aback-ui add theme` to install the semantic tokens.");
|
|
158
|
+
}
|
|
159
|
+
const registry = config.registries?.["@aback"];
|
|
160
|
+
if (!registry) {
|
|
161
|
+
add("registry", "Registry", "warn", 'No "@aback" registry in aback-ui.json.', 'Add "@aback": "https://abackui.com/r/{name}.json" under registries.');
|
|
162
|
+
}
|
|
163
|
+
else if (!registry.includes("{name}") || !/^https?:\/\//.test(registry)) {
|
|
164
|
+
add("registry", "Registry", "warn", `The "@aback" template is not an HTTP template with {name}.`, 'Use "https://abackui.com/r/{name}.json".');
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
add("registry", "Registry", "pass", registry);
|
|
168
|
+
}
|
|
169
|
+
try {
|
|
170
|
+
const entries = await readdir(dirs.ui);
|
|
171
|
+
const components = entries.filter((entry) => entry.endsWith(".tsx") && !entry.endsWith(".test.tsx"));
|
|
172
|
+
add("installed", "Installed components", "pass", components.length === 0
|
|
173
|
+
? "No components installed yet."
|
|
174
|
+
: `${components.length} component file(s) in ${relative(root, dirs.ui)}.`);
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
add("installed", "Installed components", "pass", "No components installed yet.");
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
const locks = [];
|
|
181
|
+
for (const lock of LOCKFILES) {
|
|
182
|
+
if (await existsPath(path.join(root, lock)))
|
|
183
|
+
locks.push(lock);
|
|
184
|
+
}
|
|
185
|
+
if (locks.length > 1) {
|
|
186
|
+
add("lockfile", "Package manager", "warn", `Multiple lockfiles found: ${locks.join(", ")}.`, "Keep the lockfile for the package manager you use and remove the others.");
|
|
187
|
+
}
|
|
188
|
+
else if (locks.length === 1) {
|
|
189
|
+
add("lockfile", "Package manager", "pass", `Using ${locks[0]}.`);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
add("lockfile", "Package manager", "skip", "No lockfile found.");
|
|
193
|
+
}
|
|
194
|
+
const summary = {
|
|
195
|
+
passed: checks.filter((check) => check.status === "pass").length,
|
|
196
|
+
warnings: checks.filter((check) => check.status === "warn").length,
|
|
197
|
+
errors: checks.filter((check) => check.status === "fail").length,
|
|
198
|
+
skipped: checks.filter((check) => check.status === "skip").length,
|
|
199
|
+
ok: checks.every((check) => check.status !== "fail"),
|
|
200
|
+
};
|
|
201
|
+
return { root, checks, summary };
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,OAAO,EAAE,MAAM,EAAE,IAAI,SAAI;CAKtC;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,YAAY,CAEpE"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export class CommandError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
constructor(message, code = 1) {
|
|
4
|
+
super(message);
|
|
5
|
+
this.name = "CommandError";
|
|
6
|
+
this.code = code;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export function commandError(message, code = 1) {
|
|
10
|
+
return new CommandError(message, code);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAa,SAAQ,KAAK;IAC5B,IAAI,CAAS;IAEtB,YAAY,OAAe,EAAE,IAAI,GAAG,CAAC;QACnC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,IAAI,GAAG,CAAC;IACpD,OAAO,IAAI,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC"}
|
package/dist/help.d.ts
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const CLI_VERSION = "0.2.1";
|
|
2
|
+
export declare const HELP = "Aback UI \u2014 copy accessible React components into your project\n\nUsage\n aback-ui <command> [options]\n\nCommands\n init Configure a project, add the theme, and install utilities\n add <items...> Copy component or block source into the project\n diff [items...] Compare installed files with the registry (or --all)\n doctor Check the project setup, theme, aliases, and dependencies\n list [query] List installable items\n view <item> Show an item's metadata, dependencies, and files\n\nOptions\n --cwd <dir> Project directory to operate on\n --registry <url> Install from another registry (a URL or a local directory)\n --css <file> Global stylesheet for init, when it cannot be detected\n --force Let init rewrite an existing aback-ui.json\n --yes, -y Accept defaults and keep existing files\n --overwrite Replace existing files without prompting\n --no-overwrite Keep every existing file\n --no-install Write files but skip package installation\n --dry-run Report what would change without writing\n --json Print machine-readable output (diff, list, view, doctor)\n --all Compare every installed UI and block item (diff)\n --version, -v Print the CLI version\n --help, -h Print this help\n\nExamples\n npx aback-ui init\n npx aback-ui add button dialog\n npx aback-ui add sign-in\n npx aback-ui list forms\n npx aback-ui view button\n npx aback-ui diff --all\n npx aback-ui doctor\n\nRegistry\n Component source ships inside this package, so installing never downloads\n code from a website and the files always match the CLI version. npm\n dependencies still come from your package manager. --registry or\n ABACK_UI_REGISTRY point the CLI at a mirror or a local build instead.\n\nEnvironment\n ABACK_UI_REGISTRY Overrides the registry used by every command.\n";
|
|
3
|
+
//# sourceMappingURL=help.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,eAAO,MAAM,IAAI,s8DA6ChB,CAAC"}
|
package/dist/help.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export const CLI_VERSION = "0.2.1";
|
|
2
|
+
export const HELP = `Aback UI — copy accessible React components into your project
|
|
3
|
+
|
|
4
|
+
Usage
|
|
5
|
+
aback-ui <command> [options]
|
|
6
|
+
|
|
7
|
+
Commands
|
|
8
|
+
init Configure a project, add the theme, and install utilities
|
|
9
|
+
add <items...> Copy component or block source into the project
|
|
10
|
+
diff [items...] Compare installed files with the registry (or --all)
|
|
11
|
+
doctor Check the project setup, theme, aliases, and dependencies
|
|
12
|
+
list [query] List installable items
|
|
13
|
+
view <item> Show an item's metadata, dependencies, and files
|
|
14
|
+
|
|
15
|
+
Options
|
|
16
|
+
--cwd <dir> Project directory to operate on
|
|
17
|
+
--registry <url> Install from another registry (a URL or a local directory)
|
|
18
|
+
--css <file> Global stylesheet for init, when it cannot be detected
|
|
19
|
+
--force Let init rewrite an existing aback-ui.json
|
|
20
|
+
--yes, -y Accept defaults and keep existing files
|
|
21
|
+
--overwrite Replace existing files without prompting
|
|
22
|
+
--no-overwrite Keep every existing file
|
|
23
|
+
--no-install Write files but skip package installation
|
|
24
|
+
--dry-run Report what would change without writing
|
|
25
|
+
--json Print machine-readable output (diff, list, view, doctor)
|
|
26
|
+
--all Compare every installed UI and block item (diff)
|
|
27
|
+
--version, -v Print the CLI version
|
|
28
|
+
--help, -h Print this help
|
|
29
|
+
|
|
30
|
+
Examples
|
|
31
|
+
npx aback-ui init
|
|
32
|
+
npx aback-ui add button dialog
|
|
33
|
+
npx aback-ui add sign-in
|
|
34
|
+
npx aback-ui list forms
|
|
35
|
+
npx aback-ui view button
|
|
36
|
+
npx aback-ui diff --all
|
|
37
|
+
npx aback-ui doctor
|
|
38
|
+
|
|
39
|
+
Registry
|
|
40
|
+
Component source ships inside this package, so installing never downloads
|
|
41
|
+
code from a website and the files always match the CLI version. npm
|
|
42
|
+
dependencies still come from your package manager. --registry or
|
|
43
|
+
ABACK_UI_REGISTRY point the CLI at a mirror or a local build instead.
|
|
44
|
+
|
|
45
|
+
Environment
|
|
46
|
+
ABACK_UI_REGISTRY Overrides the registry used by every command.
|
|
47
|
+
`;
|
|
48
|
+
//# sourceMappingURL=help.js.map
|
package/dist/help.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;AAEnC,MAAM,CAAC,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CnB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,CAAC,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { Logger } from "./logger.js";
|
|
2
|
+
import type { Prompter } from "./prompt.js";
|
|
3
|
+
import type { FileWriteResult, InstallDirs, OverwriteMode, PackageManager, RegistryItem } from "./types.js";
|
|
4
|
+
export interface WriteOptions {
|
|
5
|
+
items: RegistryItem[];
|
|
6
|
+
projectRoot: string;
|
|
7
|
+
dirs: InstallDirs;
|
|
8
|
+
overwrite?: OverwriteMode;
|
|
9
|
+
dryRun?: boolean;
|
|
10
|
+
log: Logger;
|
|
11
|
+
prompt: Prompter;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Write every registry file into the project. Existing files are kept unless
|
|
15
|
+
* the caller explicitly allows overwriting, so a local edit is never lost
|
|
16
|
+
* silently.
|
|
17
|
+
*/
|
|
18
|
+
export declare function writeItemFiles({ items, projectRoot, dirs, overwrite, dryRun, log, prompt, }: WriteOptions): Promise<FileWriteResult[]>;
|
|
19
|
+
export interface DependencyCommand {
|
|
20
|
+
command: string;
|
|
21
|
+
args: string[];
|
|
22
|
+
}
|
|
23
|
+
export declare function dependencyCommand(packageManager: PackageManager, packages: string[], dev: boolean): DependencyCommand;
|
|
24
|
+
type CommandRunner = (command: string, args: string[], options: {
|
|
25
|
+
cwd: string;
|
|
26
|
+
stdio: "inherit";
|
|
27
|
+
}) => {
|
|
28
|
+
status: number | null;
|
|
29
|
+
};
|
|
30
|
+
export interface InstallDependenciesOptions {
|
|
31
|
+
cwd: string;
|
|
32
|
+
packageManager: PackageManager;
|
|
33
|
+
dependencies?: string[];
|
|
34
|
+
devDependencies?: string[];
|
|
35
|
+
noInstall?: boolean;
|
|
36
|
+
dryRun?: boolean;
|
|
37
|
+
log: Logger;
|
|
38
|
+
runner?: CommandRunner;
|
|
39
|
+
}
|
|
40
|
+
export declare function installDependencies({ cwd, packageManager, dependencies, devDependencies, noInstall, dryRun, log, runner, }: InstallDependenciesOptions): Promise<void>;
|
|
41
|
+
export interface ThemeImportOptions {
|
|
42
|
+
cssFile: string;
|
|
43
|
+
themeFile: string;
|
|
44
|
+
dryRun?: boolean;
|
|
45
|
+
log: Logger;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Insert the theme import directly after the Tailwind import so theme
|
|
49
|
+
* variables exist before any utility is generated.
|
|
50
|
+
*/
|
|
51
|
+
export declare function ensureThemeImport({ cssFile, themeFile, dryRun, log, }: ThemeImportOptions): Promise<"added" | "present" | "missing">;
|
|
52
|
+
export {};
|
|
53
|
+
//# sourceMappingURL=install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,aAAa,EACb,cAAc,EACd,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,QAAQ,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,EACnC,KAAK,EACL,WAAW,EACX,IAAI,EACJ,SAAoB,EACpB,MAAc,EACd,GAAG,EACH,MAAM,GACP,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CA2D3C;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,wBAAgB,iBAAiB,CAC/B,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,MAAM,EAAE,EAClB,GAAG,EAAE,OAAO,GACX,iBAAiB,CAYnB;AAED,KAAK,aAAa,GAAG,CACnB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,KACvC;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAE/B,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,wBAAsB,mBAAmB,CAAC,EACxC,GAAG,EACH,cAAc,EACd,YAAiB,EACjB,eAAoB,EACpB,SAAiB,EACjB,MAAc,EACd,GAAG,EACH,MAAkB,GACnB,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB5C;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,EACtC,OAAO,EACP,SAAS,EACT,MAAc,EACd,GAAG,GACJ,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC,CAuB/D"}
|
package/dist/install.js
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { ensureDirectory, existsPath } from "./config.js";
|
|
5
|
+
import { relativeImport, resolveTargetPath, toPosix } from "./paths.js";
|
|
6
|
+
/**
|
|
7
|
+
* Write every registry file into the project. Existing files are kept unless
|
|
8
|
+
* the caller explicitly allows overwriting, so a local edit is never lost
|
|
9
|
+
* silently.
|
|
10
|
+
*/
|
|
11
|
+
export async function writeItemFiles({ items, projectRoot, dirs, overwrite = "prompt", dryRun = false, log, prompt, }) {
|
|
12
|
+
const results = [];
|
|
13
|
+
for (const item of items) {
|
|
14
|
+
for (const file of item.files) {
|
|
15
|
+
const target = file.target ?? file.path;
|
|
16
|
+
const absolutePath = resolveTargetPath(target, dirs, projectRoot);
|
|
17
|
+
const display = toPosix(path.relative(projectRoot, absolutePath));
|
|
18
|
+
let existing = null;
|
|
19
|
+
if (await existsPath(absolutePath)) {
|
|
20
|
+
existing = await readFile(absolutePath, "utf8");
|
|
21
|
+
}
|
|
22
|
+
if (existing === file.content) {
|
|
23
|
+
results.push({ item: item.name, target: display, absolutePath, status: "unchanged" });
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
if (existing !== null) {
|
|
27
|
+
if (dryRun) {
|
|
28
|
+
log.warn(`${display} already exists; a real run would ask before replacing it.`);
|
|
29
|
+
results.push({ item: item.name, target: display, absolutePath, status: "skipped" });
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
if (overwrite === "never") {
|
|
33
|
+
log.warn(`Kept existing ${display}.`);
|
|
34
|
+
results.push({ item: item.name, target: display, absolutePath, status: "skipped" });
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
if (overwrite === "prompt") {
|
|
38
|
+
const confirmed = await prompt.confirm(`${display} already exists. Replace it with the registry version?`, false);
|
|
39
|
+
if (!confirmed) {
|
|
40
|
+
log.warn(`Kept existing ${display}.`);
|
|
41
|
+
results.push({ item: item.name, target: display, absolutePath, status: "skipped" });
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (dryRun) {
|
|
47
|
+
log.info(`Would write ${display}`);
|
|
48
|
+
results.push({ item: item.name, target: display, absolutePath, status: "written" });
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
await ensureDirectory(path.dirname(absolutePath));
|
|
52
|
+
await writeFile(absolutePath, file.content, "utf8");
|
|
53
|
+
log.success(`Wrote ${display}`);
|
|
54
|
+
results.push({ item: item.name, target: display, absolutePath, status: "written" });
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return results;
|
|
58
|
+
}
|
|
59
|
+
export function dependencyCommand(packageManager, packages, dev) {
|
|
60
|
+
switch (packageManager) {
|
|
61
|
+
case "bun":
|
|
62
|
+
return { command: "bun", args: ["add", ...(dev ? ["-d"] : []), ...packages] };
|
|
63
|
+
case "pnpm":
|
|
64
|
+
return { command: "pnpm", args: ["add", ...(dev ? ["-D"] : []), ...packages] };
|
|
65
|
+
case "yarn":
|
|
66
|
+
return { command: "yarn", args: ["add", ...(dev ? ["-D"] : []), ...packages] };
|
|
67
|
+
case "npm":
|
|
68
|
+
default:
|
|
69
|
+
return { command: "npm", args: ["install", ...(dev ? ["--save-dev"] : []), ...packages] };
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
export async function installDependencies({ cwd, packageManager, dependencies = [], devDependencies = [], noInstall = false, dryRun = false, log, runner = spawnSync, }) {
|
|
73
|
+
const groups = [
|
|
74
|
+
{ packages: [...new Set(dependencies)].sort(), dev: false },
|
|
75
|
+
{ packages: [...new Set(devDependencies)].sort(), dev: true },
|
|
76
|
+
];
|
|
77
|
+
for (const group of groups) {
|
|
78
|
+
if (group.packages.length === 0)
|
|
79
|
+
continue;
|
|
80
|
+
const { command, args } = dependencyCommand(packageManager, group.packages, group.dev);
|
|
81
|
+
const printable = `${command} ${args.join(" ")}`;
|
|
82
|
+
if (noInstall || dryRun) {
|
|
83
|
+
log.info(`Install dependencies with: ${printable}`);
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
log.step(`Installing ${group.packages.length} package(s) with ${packageManager}`);
|
|
87
|
+
const result = runner(command, args, { cwd, stdio: "inherit" });
|
|
88
|
+
if (result.status !== 0) {
|
|
89
|
+
throw new Error(`Dependency installation failed (${printable}). Run it manually to see the full output.`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Insert the theme import directly after the Tailwind import so theme
|
|
95
|
+
* variables exist before any utility is generated.
|
|
96
|
+
*/
|
|
97
|
+
export async function ensureThemeImport({ cssFile, themeFile, dryRun = false, log, }) {
|
|
98
|
+
if (!(await existsPath(cssFile)))
|
|
99
|
+
return "missing";
|
|
100
|
+
const content = await readFile(cssFile, "utf8");
|
|
101
|
+
const specifier = relativeImport(cssFile, themeFile);
|
|
102
|
+
if (content.includes(specifier) || content.includes("aback.css"))
|
|
103
|
+
return "present";
|
|
104
|
+
const importLine = `@import "${specifier}";`;
|
|
105
|
+
const tailwind = /^[ \t]*@import\s+["']tailwindcss(?:\/[^"']*)?["'];?[^\n]*\n?/m.exec(content);
|
|
106
|
+
let next;
|
|
107
|
+
if (tailwind) {
|
|
108
|
+
const index = tailwind.index + tailwind[0].length;
|
|
109
|
+
next = `${content.slice(0, index)}${importLine}\n${content.slice(index)}`;
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
next = `${importLine}\n${content}`;
|
|
113
|
+
}
|
|
114
|
+
if (!dryRun)
|
|
115
|
+
await writeFile(cssFile, next, "utf8");
|
|
116
|
+
log.success(`${dryRun ? "Would add" : "Added"} the Aback theme import to ${toPosix(path.basename(cssFile))}`);
|
|
117
|
+
return "added";
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAoBxE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EACnC,KAAK,EACL,WAAW,EACX,IAAI,EACJ,SAAS,GAAG,QAAQ,EACpB,MAAM,GAAG,KAAK,EACd,GAAG,EACH,MAAM,GACO;IACb,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC;YACxC,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;YAClE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;YAElE,IAAI,QAAQ,GAAkB,IAAI,CAAC;YACnC,IAAI,MAAM,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACnC,QAAQ,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YAClD,CAAC;YAED,IAAI,QAAQ,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;gBACtF,SAAS;YACX,CAAC;YAED,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,IAAI,MAAM,EAAE,CAAC;oBACX,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,4DAA4D,CAAC,CAAC;oBACjF,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;oBACpF,SAAS;gBACX,CAAC;gBAED,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;oBAC1B,GAAG,CAAC,IAAI,CAAC,iBAAiB,OAAO,GAAG,CAAC,CAAC;oBACtC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;oBACpF,SAAS;gBACX,CAAC;gBAED,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;oBAC3B,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,OAAO,CACpC,GAAG,OAAO,wDAAwD,EAClE,KAAK,CACN,CAAC;oBACF,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,GAAG,CAAC,IAAI,CAAC,iBAAiB,OAAO,GAAG,CAAC,CAAC;wBACtC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;wBACpF,SAAS;oBACX,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACX,GAAG,CAAC,IAAI,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;gBACnC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;gBACpF,SAAS;YACX,CAAC;YAED,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;YAClD,MAAM,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACpD,GAAG,CAAC,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAOD,MAAM,UAAU,iBAAiB,CAC/B,cAA8B,EAC9B,QAAkB,EAClB,GAAY;IAEZ,QAAQ,cAAc,EAAE,CAAC;QACvB,KAAK,KAAK;YACR,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAChF,KAAK,MAAM;YACT,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QACjF,KAAK,MAAM;YACT,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QACjF,KAAK,KAAK,CAAC;QACX;YACE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;IAC9F,CAAC;AACH,CAAC;AAmBD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,EACxC,GAAG,EACH,cAAc,EACd,YAAY,GAAG,EAAE,EACjB,eAAe,GAAG,EAAE,EACpB,SAAS,GAAG,KAAK,EACjB,MAAM,GAAG,KAAK,EACd,GAAG,EACH,MAAM,GAAG,SAAS,GACS;IAC3B,MAAM,MAAM,GAAgD;QAC1D,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;QAC3D,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;KAC9D,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAC1C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,iBAAiB,CAAC,cAAc,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QACvF,MAAM,SAAS,GAAG,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAEjD,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;YACxB,GAAG,CAAC,IAAI,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAC;YACpD,SAAS;QACX,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,QAAQ,CAAC,MAAM,oBAAoB,cAAc,EAAE,CAAC,CAAC;QAClF,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAChE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,mCAAmC,SAAS,4CAA4C,CACzF,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AASD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EACtC,OAAO,EACP,SAAS,EACT,MAAM,GAAG,KAAK,EACd,GAAG,GACgB;IACnB,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAEnD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACrD,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IAEnF,MAAM,UAAU,GAAG,YAAY,SAAS,IAAI,CAAC;IAC7C,MAAM,QAAQ,GAAG,+DAA+D,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE/F,IAAI,IAAY,CAAC;IACjB,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAClD,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,UAAU,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;IAC5E,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,GAAG,UAAU,KAAK,OAAO,EAAE,CAAC;IACrC,CAAC;IAED,IAAI,CAAC,MAAM;QAAE,MAAM,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACpD,GAAG,CAAC,OAAO,CACT,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,8BAA8B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CACjG,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/logger.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Writable } from "node:stream";
|
|
2
|
+
export interface Logger {
|
|
3
|
+
info(message: string): void;
|
|
4
|
+
step(message: string): void;
|
|
5
|
+
success(message: string): void;
|
|
6
|
+
warn(message: string): void;
|
|
7
|
+
error(message: string): void;
|
|
8
|
+
dim(message: string): void;
|
|
9
|
+
raw(message: string): void;
|
|
10
|
+
}
|
|
11
|
+
export declare function createLogger(out?: Writable, err?: Writable): Logger;
|
|
12
|
+
export declare const silentOut: Writable;
|
|
13
|
+
export declare const silentErr: Writable;
|
|
14
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,MAAM;IACrB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAkBD,wBAAgB,YAAY,CAC1B,GAAG,GAAE,QAAyB,EAC9B,GAAG,GAAE,QAAyB,GAC7B,MAAM,CAmBR;AAED,eAAO,MAAM,SAAS,EAKN,QAAQ,CAAC;AAEzB,eAAO,MAAM,SAAS,EAKN,QAAQ,CAAC"}
|
package/dist/logger.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
const ANSI = {
|
|
2
|
+
reset: "\u001b[0m",
|
|
3
|
+
dim: "\u001b[2m",
|
|
4
|
+
bold: "\u001b[1m",
|
|
5
|
+
green: "\u001b[32m",
|
|
6
|
+
red: "\u001b[31m",
|
|
7
|
+
yellow: "\u001b[33m",
|
|
8
|
+
blue: "\u001b[34m",
|
|
9
|
+
};
|
|
10
|
+
function shouldColor(stream) {
|
|
11
|
+
if (process.env.NO_COLOR)
|
|
12
|
+
return false;
|
|
13
|
+
if (process.env.FORCE_COLOR)
|
|
14
|
+
return true;
|
|
15
|
+
return Boolean(stream.isTTY);
|
|
16
|
+
}
|
|
17
|
+
export function createLogger(out = process.stdout, err = process.stderr) {
|
|
18
|
+
const colorOut = shouldColor(out);
|
|
19
|
+
const colorErr = shouldColor(err);
|
|
20
|
+
function paint(stream, enabled, code, message) {
|
|
21
|
+
stream.write(enabled ? `${code}${message}${ANSI.reset}\n` : `${message}\n`);
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
info: (message) => paint(out, colorOut, "", message),
|
|
25
|
+
step: (message) => paint(out, colorOut, ANSI.blue, `→ ${message}`),
|
|
26
|
+
success: (message) => paint(out, colorOut, ANSI.green, `✓ ${message}`),
|
|
27
|
+
warn: (message) => paint(err, colorErr, ANSI.yellow, `! ${message}`),
|
|
28
|
+
error: (message) => paint(err, colorErr, ANSI.red, `✗ ${message}`),
|
|
29
|
+
dim: (message) => paint(out, colorOut, ANSI.dim, message),
|
|
30
|
+
raw: (message) => {
|
|
31
|
+
out.write(`${message}\n`);
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export const silentOut = {
|
|
36
|
+
isTTY: false,
|
|
37
|
+
write() {
|
|
38
|
+
return true;
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
export const silentErr = {
|
|
42
|
+
isTTY: false,
|
|
43
|
+
write() {
|
|
44
|
+
return true;
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAYA,MAAM,IAAI,GAAG;IACX,KAAK,EAAE,WAAW;IAClB,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,YAAY;IACnB,GAAG,EAAE,YAAY;IACjB,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,YAAY;CACV,CAAC;AAEX,SAAS,WAAW,CAAC,MAAgB;IACnC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,OAAO,CAAE,MAAyC,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,MAAgB,OAAO,CAAC,MAAM,EAC9B,MAAgB,OAAO,CAAC,MAAM;IAE9B,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAElC,SAAS,KAAK,CAAC,MAAgB,EAAE,OAAgB,EAAE,IAAY,EAAE,OAAe;QAC9E,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO;QACL,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,CAAC;QACpD,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;QAClE,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,OAAO,EAAE,CAAC;QACtE,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,OAAO,EAAE,CAAC;QACpE,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,OAAO,EAAE,CAAC;QAClE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC;QACzD,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE;YACf,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;QAC5B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,KAAK,EAAE,KAAK;IACZ,KAAK;QACH,OAAO,IAAI,CAAC;IACd,CAAC;CACqB,CAAC;AAEzB,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,KAAK,EAAE,KAAK;IACZ,KAAK;QACH,OAAO,IAAI,CAAC;IACd,CAAC;CACqB,CAAC"}
|
package/dist/paths.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { InstallDirs } from "./types.js";
|
|
2
|
+
export declare class PathSafetyError extends Error {
|
|
3
|
+
constructor(message: string);
|
|
4
|
+
}
|
|
5
|
+
/** Resolve a project-relative path and refuse anything that escapes the root. */
|
|
6
|
+
export declare function safeJoin(root: string, relative: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* Map a registry `target` to a file inside the consumer project.
|
|
9
|
+
*
|
|
10
|
+
* `components/ui/button.tsx` -> the configured ui alias,
|
|
11
|
+
* `lib/utils.ts` -> the configured lib alias,
|
|
12
|
+
* `~/styles/aback.css` -> the project styles directory.
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolveTargetPath(target: string, dirs: InstallDirs, projectRoot: string): string;
|
|
15
|
+
export declare function toPosix(value: string): string;
|
|
16
|
+
/** A relative import specifier from one file to another, always with `./`. */
|
|
17
|
+
export declare function relativeImport(fromFile: string, toFile: string): string;
|
|
18
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED,iFAAiF;AACjF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAkB/D;AAWD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,MAAM,GAClB,MAAM,CAiCR;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGvE"}
|