zard-cli 1.1.0-alpha.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +122 -60
- package/commands/add/component-installer.d.ts +2 -1
- package/commands/add/component-installer.d.ts.map +1 -1
- package/commands/add/component-installer.js +25 -7
- package/commands/add/component-installer.js.map +1 -1
- package/commands/add/component-selector.d.ts +3 -3
- package/commands/add/component-selector.js +4 -4
- package/commands/add/dark-mode-setup.d.ts +2 -0
- package/commands/add/dark-mode-setup.d.ts.map +1 -1
- package/commands/add/dark-mode-setup.js +15 -1
- package/commands/add/dark-mode-setup.js.map +1 -1
- package/commands/add/dependency-resolver.d.ts +8 -1
- package/commands/add/dependency-resolver.d.ts.map +1 -1
- package/commands/add/dependency-resolver.js +87 -16
- package/commands/add/dependency-resolver.js.map +1 -1
- package/commands/add/index.d.ts.map +1 -1
- package/commands/add/index.js +55 -29
- package/commands/add/index.js.map +1 -1
- package/commands/add/stylesheet-setup.d.ts +3 -0
- package/commands/add/stylesheet-setup.d.ts.map +1 -0
- package/commands/add/stylesheet-setup.js +92 -0
- package/commands/add/stylesheet-setup.js.map +1 -0
- package/commands/add/wizard.d.ts +12 -8
- package/commands/add/wizard.d.ts.map +1 -1
- package/commands/add/wizard.js +12 -2
- package/commands/add/wizard.js.map +1 -1
- package/commands/init/config-prompter.d.ts +36 -16
- package/commands/init/config-prompter.d.ts.map +1 -1
- package/commands/init/config-prompter.js +37 -17
- package/commands/init/config-prompter.js.map +1 -1
- package/commands/init/dependencies.d.ts.map +1 -1
- package/commands/init/dependencies.js +35 -23
- package/commands/init/dependencies.js.map +1 -1
- package/commands/init/index.d.ts.map +1 -1
- package/commands/init/index.js +74 -23
- package/commands/init/index.js.map +1 -1
- package/commands/init/library-peers.d.ts +28 -0
- package/commands/init/library-peers.d.ts.map +1 -0
- package/commands/init/library-peers.js +61 -0
- package/commands/init/library-peers.js.map +1 -0
- package/commands/init/project-kind.d.ts +39 -39
- package/commands/init/project-kind.d.ts.map +1 -1
- package/commands/init/project-kind.js +45 -45
- package/commands/init/project-kind.js.map +1 -1
- package/commands/init/rtl-setup.d.ts +12 -0
- package/commands/init/rtl-setup.d.ts.map +1 -0
- package/commands/init/rtl-setup.js +42 -0
- package/commands/init/rtl-setup.js.map +1 -0
- package/commands/init/steps.d.ts +3 -4
- package/commands/init/steps.d.ts.map +1 -1
- package/commands/init/steps.js +100 -39
- package/commands/init/steps.js.map +1 -1
- package/commands/init/tailwind-setup.d.ts +5 -5
- package/commands/init/tailwind-setup.d.ts.map +1 -1
- package/commands/init/tailwind-setup.js +29 -15
- package/commands/init/tailwind-setup.js.map +1 -1
- package/commands/init/tsconfig-updater.d.ts +4 -4
- package/commands/init/tsconfig-updater.js +12 -12
- package/commands/init/tsconfig-updater.js.map +1 -1
- package/commands/init/update-angular-config.js +4 -4
- package/commands/init/vite-setup.d.ts +5 -4
- package/commands/init/vite-setup.d.ts.map +1 -1
- package/commands/init/vite-setup.js +11 -10
- package/commands/init/vite-setup.js.map +1 -1
- package/commands/init/wizard.d.ts +10 -7
- package/commands/init/wizard.d.ts.map +1 -1
- package/commands/init/wizard.js +73 -46
- package/commands/init/wizard.js.map +1 -1
- package/constants/app.constants.d.ts +17 -0
- package/constants/app.constants.d.ts.map +1 -1
- package/constants/app.constants.js +39 -16
- package/constants/app.constants.js.map +1 -1
- package/core/icons/families.d.ts +38 -0
- package/core/icons/families.d.ts.map +1 -0
- package/core/icons/families.js +26 -0
- package/core/icons/families.js.map +1 -0
- package/core/icons/icon-map.d.ts +24 -0
- package/core/icons/icon-map.d.ts.map +1 -0
- package/core/icons/icon-map.js +150 -0
- package/core/icons/icon-map.js.map +1 -0
- package/core/icons/index.d.ts +107 -0
- package/core/icons/index.d.ts.map +1 -0
- package/core/icons/index.js +183 -0
- package/core/icons/index.js.map +1 -0
- package/core/registry/registry-data.d.ts.map +1 -1
- package/core/registry/registry-data.js +545 -63
- package/core/registry/registry-data.js.map +1 -1
- package/core/themes/index.d.ts +1 -1
- package/core/themes/index.js +1 -1
- package/core/themes/theme-definitions.d.ts.map +1 -1
- package/core/themes/theme-definitions.js +61 -72
- package/core/themes/theme-definitions.js.map +1 -1
- package/index.js +3 -2
- package/index.js.map +1 -1
- package/package.json +56 -58
- package/ui/blocks.d.ts +29 -28
- package/ui/blocks.d.ts.map +1 -1
- package/ui/blocks.js +27 -27
- package/ui/blocks.js.map +1 -1
- package/ui/brand.d.ts +5 -5
- package/ui/brand.d.ts.map +1 -1
- package/ui/brand.js +6 -6
- package/ui/brand.js.map +1 -1
- package/ui/engine/animation/index.d.ts +2 -3
- package/ui/engine/animation/index.d.ts.map +1 -1
- package/ui/engine/animation/index.js +2 -3
- package/ui/engine/animation/index.js.map +1 -1
- package/ui/engine/ansi/index.d.ts +10 -11
- package/ui/engine/ansi/index.d.ts.map +1 -1
- package/ui/engine/ansi/index.js +6 -7
- package/ui/engine/ansi/index.js.map +1 -1
- package/ui/engine/components/index.d.ts +3 -3
- package/ui/engine/components/index.js +4 -4
- package/ui/engine/cursor/index.d.ts +3 -4
- package/ui/engine/cursor/index.d.ts.map +1 -1
- package/ui/engine/cursor/index.js +2 -3
- package/ui/engine/cursor/index.js.map +1 -1
- package/ui/engine/diff/index.d.ts +2 -3
- package/ui/engine/diff/index.d.ts.map +1 -1
- package/ui/engine/diff/index.js +5 -6
- package/ui/engine/diff/index.js.map +1 -1
- package/ui/engine/events/index.d.ts +2 -2
- package/ui/engine/events/index.js +3 -3
- package/ui/engine/events/index.js.map +1 -1
- package/ui/engine/focus/index.d.ts +2 -2
- package/ui/engine/focus/index.js +2 -2
- package/ui/engine/frame/index.d.ts +4 -4
- package/ui/engine/frame/index.js +0 -0
- package/ui/engine/index.d.ts +7 -7
- package/ui/engine/index.js +7 -7
- package/ui/engine/input/index.d.ts +2 -2
- package/ui/engine/input/index.js +11 -11
- package/ui/engine/input/index.js.map +1 -1
- package/ui/engine/layout/index.d.ts +3 -3
- package/ui/engine/layout/index.js +7 -7
- package/ui/engine/layout/index.js.map +1 -1
- package/ui/engine/renderer/index.d.ts +4 -4
- package/ui/engine/renderer/index.d.ts.map +1 -1
- package/ui/engine/renderer/index.js +3 -3
- package/ui/engine/scheduler/index.d.ts +3 -3
- package/ui/engine/scheduler/index.js +5 -5
- package/ui/engine/scheduler/index.js.map +1 -1
- package/ui/engine/screen/index.d.ts +5 -5
- package/ui/engine/screen/index.d.ts.map +1 -1
- package/ui/engine/screen/index.js +7 -7
- package/ui/engine/screen/index.js.map +1 -1
- package/ui/engine/terminal/index.d.ts +49 -3
- package/ui/engine/terminal/index.d.ts.map +1 -1
- package/ui/engine/terminal/index.js +149 -18
- package/ui/engine/terminal/index.js.map +1 -1
- package/ui/engine/testing/index.d.ts +4 -4
- package/ui/engine/testing/index.d.ts.map +1 -1
- package/ui/engine/testing/index.js +2 -2
- package/ui/engine/theme/index.d.ts +2 -3
- package/ui/engine/theme/index.d.ts.map +1 -1
- package/ui/engine/theme/index.js +3 -4
- package/ui/engine/theme/index.js.map +1 -1
- package/ui/engine/utils/index.d.ts +2 -2
- package/ui/engine/utils/index.js +4 -4
- package/ui/engine/utils/index.js.map +1 -1
- package/ui/gate.d.ts +7 -7
- package/ui/gate.d.ts.map +1 -1
- package/ui/gate.js +5 -5
- package/ui/index.d.ts +3 -3
- package/ui/index.js +3 -3
- package/ui/log-sink.d.ts +9 -9
- package/ui/log-sink.d.ts.map +1 -1
- package/ui/log-sink.js +9 -9
- package/ui/log-sink.js.map +1 -1
- package/ui/output.d.ts +6 -6
- package/ui/output.d.ts.map +1 -1
- package/ui/output.js +6 -6
- package/ui/output.js.map +1 -1
- package/ui/report.d.ts +8 -8
- package/ui/report.d.ts.map +1 -1
- package/ui/report.js +7 -7
- package/ui/report.js.map +1 -1
- package/ui/runner.d.ts +31 -22
- package/ui/runner.d.ts.map +1 -1
- package/ui/runner.js +41 -25
- package/ui/runner.js.map +1 -1
- package/ui/style.d.ts +7 -7
- package/ui/style.d.ts.map +1 -1
- package/ui/style.js +8 -8
- package/ui/style.js.map +1 -1
- package/ui/testing/fake-tty.d.ts +4 -4
- package/ui/testing/fake-tty.js +4 -4
- package/ui/text-input.d.ts +15 -14
- package/ui/text-input.d.ts.map +1 -1
- package/ui/text-input.js +15 -13
- package/ui/text-input.js.map +1 -1
- package/ui/theme.d.ts +4 -4
- package/ui/theme.js +4 -4
- package/utils/angular-compat.d.ts +21 -0
- package/utils/angular-compat.d.ts.map +1 -0
- package/utils/angular-compat.js +52 -0
- package/utils/angular-compat.js.map +1 -0
- package/utils/config.d.ts +16 -9
- package/utils/config.d.ts.map +1 -1
- package/utils/config.js +35 -13
- package/utils/config.js.map +1 -1
- package/utils/errors.d.ts +11 -0
- package/utils/errors.d.ts.map +1 -1
- package/utils/errors.js +14 -0
- package/utils/errors.js.map +1 -1
- package/utils/get-project-info.d.ts +6 -6
- package/utils/get-project-info.d.ts.map +1 -1
- package/utils/get-project-info.js +106 -36
- package/utils/get-project-info.js.map +1 -1
- package/utils/http-client.d.ts.map +1 -1
- package/utils/http-client.js +20 -5
- package/utils/http-client.js.map +1 -1
- package/utils/icon-catalog.d.ts +34 -0
- package/utils/icon-catalog.d.ts.map +1 -0
- package/utils/icon-catalog.js +63 -0
- package/utils/icon-catalog.js.map +1 -0
- package/utils/logger.d.ts +3 -3
- package/utils/logger.js +9 -9
- package/utils/logger.js.map +1 -1
- package/utils/package-manager.d.ts +25 -25
- package/utils/package-manager.js +50 -50
- package/utils/package-manager.js.map +1 -1
- package/utils/registry.d.ts +100 -6
- package/utils/registry.d.ts.map +1 -1
- package/utils/registry.js +141 -22
- package/utils/registry.js.map +1 -1
- package/utils/schema-version.d.ts +21 -0
- package/utils/schema-version.d.ts.map +1 -0
- package/utils/schema-version.js +28 -0
- package/utils/schema-version.js.map +1 -0
- package/utils/source-file.d.ts +21 -21
- package/utils/source-file.d.ts.map +1 -1
- package/utils/source-file.js +24 -24
- package/utils/source-file.js.map +1 -1
|
@@ -32,15 +32,15 @@ async function findPackageJson(startDir) {
|
|
|
32
32
|
}
|
|
33
33
|
return null;
|
|
34
34
|
}
|
|
35
|
-
/**
|
|
35
|
+
/** Normalizes separators to the form the configuration files use. */
|
|
36
36
|
function toPosix(value) {
|
|
37
37
|
return value.split(path.sep).join('/');
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
40
|
-
*
|
|
40
|
+
* What the build target says about the project.
|
|
41
41
|
*
|
|
42
|
-
* `angular.json`
|
|
43
|
-
*
|
|
42
|
+
* `angular.json` calls it `architect`/`builder` and Nx calls it
|
|
43
|
+
* `targets`/`executor`, but the option shape is the same — so one read serves both.
|
|
44
44
|
*/
|
|
45
45
|
function readBuildTarget(targets) {
|
|
46
46
|
const build = targets?.build ?? {};
|
|
@@ -52,16 +52,16 @@ function readBuildTarget(targets) {
|
|
|
52
52
|
index: typeof index === 'string' ? index : typeof index?.input === 'string' ? index.input : null,
|
|
53
53
|
};
|
|
54
54
|
}
|
|
55
|
-
/** Analog
|
|
55
|
+
/** Analog replaces Angular's builder with its own; that is how it announces itself. */
|
|
56
56
|
function flavorOf(tool) {
|
|
57
57
|
return tool.startsWith('@analogjs/') ? 'analog' : 'angular';
|
|
58
58
|
}
|
|
59
59
|
/**
|
|
60
|
-
*
|
|
60
|
+
* Reads the projects out of `angular.json`.
|
|
61
61
|
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
62
|
+
* It is what tells an application from a library — package.json does not say. A
|
|
63
|
+
* workspace with no `angular.json` (or an unreadable one) returns an empty list,
|
|
64
|
+
* and the caller decides what to do with that.
|
|
65
65
|
*/
|
|
66
66
|
async function readAngularProjects(workspaceRoot) {
|
|
67
67
|
try {
|
|
@@ -86,11 +86,11 @@ async function readAngularProjects(workspaceRoot) {
|
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
/**
|
|
89
|
-
*
|
|
89
|
+
* Where to look for `project.json`.
|
|
90
90
|
*
|
|
91
|
-
*
|
|
92
|
-
* `workspaceLayout`
|
|
93
|
-
*
|
|
91
|
+
* Nx does not mandate a layout, but it generates into `apps/` and `libs/` (or
|
|
92
|
+
* wherever `workspaceLayout` says), and package monorepos use `packages/`.
|
|
93
|
+
* Looking only in those places avoids scanning the whole repository for config.
|
|
94
94
|
*/
|
|
95
95
|
async function nxSearchRoots(workspaceRoot) {
|
|
96
96
|
try {
|
|
@@ -103,10 +103,10 @@ async function nxSearchRoots(workspaceRoot) {
|
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
/**
|
|
106
|
-
*
|
|
106
|
+
* Directories holding a `project.json`, up to two levels below the search root.
|
|
107
107
|
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
108
|
+
* A project does not contain another, so finding the config ends the descent —
|
|
109
|
+
* which also keeps a project's `node_modules` from becoming a second project.
|
|
110
110
|
*/
|
|
111
111
|
async function findProjectDirs(baseDir, depth) {
|
|
112
112
|
if (await pathExists(path.join(baseDir, 'project.json'))) {
|
|
@@ -127,14 +127,15 @@ async function findProjectDirs(baseDir, depth) {
|
|
|
127
127
|
return found.flat();
|
|
128
128
|
}
|
|
129
129
|
/**
|
|
130
|
-
*
|
|
130
|
+
* Reads the projects of an Nx workspace.
|
|
131
131
|
*
|
|
132
|
-
*
|
|
133
|
-
* `project.json`,
|
|
132
|
+
* Nx has no `angular.json`: each project describes itself in its own
|
|
133
|
+
* `project.json`, and the project root is the directory that file sits in.
|
|
134
134
|
*/
|
|
135
135
|
async function readNxProjects(workspaceRoot) {
|
|
136
136
|
const searchRoots = await nxSearchRoots(workspaceRoot);
|
|
137
137
|
const dirs = (await Promise.all(searchRoots.map(dir => findProjectDirs(path.join(workspaceRoot, dir), 2)))).flat();
|
|
138
|
+
const targetDefaults = await readTargetDefaults(workspaceRoot);
|
|
138
139
|
const projects = await Promise.all(dirs.map(async (dir) => {
|
|
139
140
|
try {
|
|
140
141
|
const config = await readJson(path.join(dir, 'project.json'));
|
|
@@ -143,12 +144,20 @@ async function readNxProjects(workspaceRoot) {
|
|
|
143
144
|
if (await isE2eProject(dir, name))
|
|
144
145
|
return null;
|
|
145
146
|
const build = readBuildTarget(config.targets);
|
|
147
|
+
if (isOtherEcosystem(build.tool))
|
|
148
|
+
return null;
|
|
149
|
+
// `@nx/vite:build` builds any Vite app; an Analog one gives itself away in its Vite config.
|
|
150
|
+
const viteAnalog = build.tool.startsWith('@nx/vite:')
|
|
151
|
+
? await usesAnalogPlugin(workspaceRoot, dir, effectiveConfigFile(config.targets?.build, targetDefaults))
|
|
152
|
+
: null;
|
|
153
|
+
if (viteAnalog === false)
|
|
154
|
+
return null;
|
|
146
155
|
return {
|
|
147
156
|
name,
|
|
148
157
|
projectType: nxProjectType(config),
|
|
149
158
|
root,
|
|
150
159
|
sourceRoot: config.sourceRoot ?? `${root}/src`,
|
|
151
|
-
flavor: flavorOf(build.tool),
|
|
160
|
+
flavor: viteAnalog ? 'analog' : flavorOf(build.tool),
|
|
152
161
|
styles: build.styles,
|
|
153
162
|
index: build.index,
|
|
154
163
|
};
|
|
@@ -157,17 +166,17 @@ async function readNxProjects(workspaceRoot) {
|
|
|
157
166
|
return null;
|
|
158
167
|
}
|
|
159
168
|
}));
|
|
160
|
-
//
|
|
161
|
-
//
|
|
169
|
+
// Filesystem order is arbitrary; sorting gives the menu a list that is stable
|
|
170
|
+
// between runs.
|
|
162
171
|
return projects
|
|
163
172
|
.filter((project) => project !== null)
|
|
164
173
|
.sort((a, b) => a.root.localeCompare(b.root));
|
|
165
174
|
}
|
|
166
175
|
/**
|
|
167
|
-
*
|
|
176
|
+
* Application or library, when `project.json` does not say.
|
|
168
177
|
*
|
|
169
|
-
*
|
|
170
|
-
*
|
|
178
|
+
* A `serve` target only exists for something that is served; no library has one.
|
|
179
|
+
* That is the distinction left when the explicit field is missing.
|
|
171
180
|
*/
|
|
172
181
|
function nxProjectType(config) {
|
|
173
182
|
if (config.projectType === 'library' || config.projectType === 'application') {
|
|
@@ -175,16 +184,77 @@ function nxProjectType(config) {
|
|
|
175
184
|
}
|
|
176
185
|
return config.targets?.serve ? 'application' : 'library';
|
|
177
186
|
}
|
|
178
|
-
/**
|
|
187
|
+
/**
|
|
188
|
+
* Builders that never produce an Angular project.
|
|
189
|
+
*
|
|
190
|
+
* The Angular template of `create-nx-workspace` ships an Express API next to the
|
|
191
|
+
* app (`apps/api`, built with `@nx/esbuild`). Listed as an application, it came
|
|
192
|
+
* first in alphabetical order, and the headless `init` chose it — failing on a
|
|
193
|
+
* global CSS a Node server does not have. Angular projects build with
|
|
194
|
+
* `@angular/*`, `@nx/angular:*` or `@analogjs/*`; a library with no build target
|
|
195
|
+
* at all is kept, since a non-buildable Nx library is a valid target.
|
|
196
|
+
*/
|
|
197
|
+
const OTHER_ECOSYSTEM_BUILDERS = [
|
|
198
|
+
'@nx/esbuild:',
|
|
199
|
+
'@nx/node:',
|
|
200
|
+
'@nx/js:',
|
|
201
|
+
'@nx/webpack:',
|
|
202
|
+
'@nx/rspack:',
|
|
203
|
+
'@nx/rollup:',
|
|
204
|
+
'@nx/next:',
|
|
205
|
+
'@nx/react:',
|
|
206
|
+
'@nx/remix:',
|
|
207
|
+
'@nx/expo:',
|
|
208
|
+
'@nx/react-native:',
|
|
209
|
+
'@nx/nest:',
|
|
210
|
+
];
|
|
211
|
+
/** `targetDefaults` from nx.json — options Nx applies to a target the project does not override. */
|
|
212
|
+
async function readTargetDefaults(workspaceRoot) {
|
|
213
|
+
try {
|
|
214
|
+
return (await readJson(path.join(workspaceRoot, 'nx.json'))).targetDefaults ?? {};
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
return {};
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* The Vite config the build target uses: its own option, else the default Nx
|
|
222
|
+
* applies to its executor, else the one for the `build` target name.
|
|
223
|
+
*/
|
|
224
|
+
function effectiveConfigFile(build, targetDefaults) {
|
|
225
|
+
return (build?.options?.configFile ??
|
|
226
|
+
targetDefaults[build?.executor]?.options?.configFile ??
|
|
227
|
+
targetDefaults['build']?.options?.configFile);
|
|
228
|
+
}
|
|
229
|
+
/** Whether a project built by `@nx/vite` is an Analog app — the only Angular one that executor builds. */
|
|
230
|
+
async function usesAnalogPlugin(workspaceRoot, projectDir, configFile) {
|
|
231
|
+
// The build target can name its own config; Nx resolves that path from the workspace root.
|
|
232
|
+
const candidates = typeof configFile === 'string'
|
|
233
|
+
? [
|
|
234
|
+
path.resolve(workspaceRoot, configFile
|
|
235
|
+
.replace('{workspaceRoot}', '.')
|
|
236
|
+
.replace('{projectRoot}', path.relative(workspaceRoot, projectDir))),
|
|
237
|
+
]
|
|
238
|
+
: ['vite.config.ts', 'vite.config.mts', 'vite.config.js', 'vite.config.mjs'].map(file => path.join(projectDir, file));
|
|
239
|
+
for (const candidate of candidates) {
|
|
240
|
+
if (await pathExists(candidate))
|
|
241
|
+
return (await readFile(candidate, 'utf8')).includes('@analogjs/');
|
|
242
|
+
}
|
|
243
|
+
return false;
|
|
244
|
+
}
|
|
245
|
+
function isOtherEcosystem(tool) {
|
|
246
|
+
return OTHER_ECOSYSTEM_BUILDERS.some(prefix => tool.startsWith(prefix));
|
|
247
|
+
}
|
|
248
|
+
/** Configuration files that only exist in an end-to-end test project. */
|
|
179
249
|
const E2E_CONFIGS = ['playwright.config.ts', 'playwright.config.js', 'cypress.config.ts', 'cypress.config.js'];
|
|
180
250
|
/**
|
|
181
|
-
*
|
|
251
|
+
* Whether the project exists only to run end-to-end tests.
|
|
182
252
|
*
|
|
183
|
-
*
|
|
184
|
-
*
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
*
|
|
253
|
+
* The Nx generator creates `<app>-e2e` declaring `projectType: "application"`,
|
|
254
|
+
* and with that it showed up in the list of apps that can receive components —
|
|
255
|
+
* but there is no `app.config.ts`, no global CSS and no build to configure in
|
|
256
|
+
* there. The suffix is Nx's convention; the runner's config file confirms the
|
|
257
|
+
* cases where the project was renamed.
|
|
188
258
|
*/
|
|
189
259
|
async function isE2eProject(projectDir, name) {
|
|
190
260
|
if (name.endsWith('-e2e') || name.endsWith('-e2e-ct'))
|
|
@@ -205,13 +275,13 @@ export async function getProjectInfo(cwd) {
|
|
|
205
275
|
const hasTailwind = !!deps['tailwindcss'];
|
|
206
276
|
const hasNx = !!deps['nx'] || !!deps['@nx/workspace'];
|
|
207
277
|
const hasAnalog = !!deps['@analogjs/platform'] || !!deps['@analogjs/router'] || !!deps['@analogjs/vite-plugin-angular'];
|
|
208
|
-
//
|
|
209
|
-
//
|
|
278
|
+
// An Nx workspace can have both files; `angular.json` only describes projects
|
|
279
|
+
// that existed before the migration, so Nx has the final word.
|
|
210
280
|
const projects = hasNx ? await readNxProjects(workspaceRoot) : await readAngularProjects(workspaceRoot);
|
|
211
281
|
const angularVersionRaw = deps['@angular/core'] || null;
|
|
212
282
|
const angularVersion = angularVersionRaw?.replace(/[^0-9.]/g, '') || null;
|
|
213
|
-
//
|
|
214
|
-
//
|
|
283
|
+
// Nx keeps the paths in a tsconfig.base.json the projects extend; writing into
|
|
284
|
+
// the root tsconfig.json would reach none of them.
|
|
215
285
|
const tsconfigFile = (await pathExists(path.join(workspaceRoot, 'tsconfig.base.json')))
|
|
216
286
|
? 'tsconfig.base.json'
|
|
217
287
|
: 'tsconfig.json';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-project-info.js","sourceRoot":"","sources":["../../src/utils/get-project-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,KAAK,UAAU,UAAU,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,QAAgB;IACtC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzD,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC7D,CAAC,CAAC;AA0CH,KAAK,UAAU,eAAe,CAAC,QAAgB;IAC7C,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IAElC,OAAO,GAAG,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACjD,IAAI,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"get-project-info.js","sourceRoot":"","sources":["../../src/utils/get-project-info.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAsBD,wBAAsB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAoElF"}
|
package/utils/http-client.js
CHANGED
|
@@ -1,11 +1,22 @@
|
|
|
1
|
-
import { NetworkError } from '
|
|
2
|
-
import { logger } from '
|
|
1
|
+
import { NetworkError } from './errors.js';
|
|
2
|
+
import { logger } from './logger.js';
|
|
3
3
|
const DEFAULT_TIMEOUT = 30_000;
|
|
4
4
|
const DEFAULT_RETRIES = 3;
|
|
5
5
|
const DEFAULT_BACKOFF_BASE = 1_000;
|
|
6
6
|
function sleep(ms) {
|
|
7
7
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* Whether a body is a web page rather than a payload.
|
|
11
|
+
*
|
|
12
|
+
* A server that answers a registry URL with its own site sends an HTML document,
|
|
13
|
+
* and a document always opens with one of these — so the test is on how the body
|
|
14
|
+
* starts, never on what it happens to contain.
|
|
15
|
+
*/
|
|
16
|
+
function looksLikeHtml(text) {
|
|
17
|
+
const start = text.trimStart().slice(0, 100).toLowerCase();
|
|
18
|
+
return start.startsWith('<!doctype') || start.startsWith('<html');
|
|
19
|
+
}
|
|
9
20
|
export async function fetchJson(url, options) {
|
|
10
21
|
const { timeout = DEFAULT_TIMEOUT, retries = DEFAULT_RETRIES, backoffBase = DEFAULT_BACKOFF_BASE } = options ?? {};
|
|
11
22
|
const headers = {
|
|
@@ -29,14 +40,18 @@ export async function fetchJson(url, options) {
|
|
|
29
40
|
throw new NetworkError(`HTTP ${response.status}: ${response.statusText}`, url);
|
|
30
41
|
}
|
|
31
42
|
const text = await response.text();
|
|
32
|
-
if (!text
|
|
33
|
-
throw new NetworkError('
|
|
43
|
+
if (!text) {
|
|
44
|
+
throw new NetworkError('Empty response from registry', url);
|
|
34
45
|
}
|
|
35
46
|
try {
|
|
36
47
|
return JSON.parse(text);
|
|
37
48
|
}
|
|
38
49
|
catch {
|
|
39
|
-
|
|
50
|
+
// The HTML check runs only once the parse has already failed. Looking for
|
|
51
|
+
// the markers anywhere in the body rejected any valid payload that merely
|
|
52
|
+
// mentioned them — a code comment containing `<html>` was enough to make a
|
|
53
|
+
// component permanently uninstallable.
|
|
54
|
+
throw new NetworkError(looksLikeHtml(text) ? 'Received HTML instead of JSON from registry' : 'Invalid JSON response from registry', url);
|
|
40
55
|
}
|
|
41
56
|
}
|
|
42
57
|
catch (error) {
|
package/utils/http-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAS9C,MAAM,eAAe,GAAG,MAAM,CAAC;AAC/B,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAEnC,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,GAAW,EAAE,OAAsB;IACpE,MAAM,EAAE,OAAO,GAAG,eAAe,EAAE,OAAO,GAAG,eAAe,EAAE,WAAW,GAAG,oBAAoB,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAEnH,MAAM,OAAO,GAA2B;QACtC,YAAY,EAAE,UAAU;QACxB,MAAM,EAAE,kBAAkB;QAC1B,GAAG,OAAO,EAAE,OAAO;KACpB,CAAC;IAEF,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;gBACpC,OAAO;aACR,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC5E,MAAM,CAAC,KAAK,CAAC,mBAAmB,GAAG,iBAAiB,UAAU,MAAM,CAAC,CAAC;gBACtE,MAAM,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;gBAC/B,SAAS;YACX,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,YAAY,CAAC,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,CAAC;YACjF,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEnC,IAAI,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAS9C,MAAM,eAAe,GAAG,MAAM,CAAC;AAC/B,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAEnC,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3D,OAAO,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,GAAW,EAAE,OAAsB;IACpE,MAAM,EAAE,OAAO,GAAG,eAAe,EAAE,OAAO,GAAG,eAAe,EAAE,WAAW,GAAG,oBAAoB,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAEnH,MAAM,OAAO,GAA2B;QACtC,YAAY,EAAE,UAAU;QACxB,MAAM,EAAE,kBAAkB;QAC1B,GAAG,OAAO,EAAE,OAAO;KACpB,CAAC;IAEF,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;gBACpC,OAAO;aACR,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC5E,MAAM,CAAC,KAAK,CAAC,mBAAmB,GAAG,iBAAiB,UAAU,MAAM,CAAC,CAAC;gBACtE,MAAM,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;gBAC/B,SAAS;YACX,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,YAAY,CAAC,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,CAAC;YACjF,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEnC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,YAAY,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;YAC9D,CAAC;YAED,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,0EAA0E;gBAC1E,0EAA0E;gBAC1E,2EAA2E;gBAC3E,uCAAuC;gBACvC,MAAM,IAAI,YAAY,CACpB,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,qCAAqC,EAC3G,GAAG,CACJ,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;gBAClC,IAAI,OAAO,KAAK,OAAO;oBAAE,MAAM,KAAK,CAAC;YACvC,CAAC;iBAAM,IAAI,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAC1E,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;oBACxB,MAAM,IAAI,YAAY,CAAC,2BAA2B,OAAO,IAAI,EAAE,GAAG,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;gBACtC,oEAAoE;gBACpE,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;oBACxB,MAAM,IAAI,YAAY,CAAC,sBAAsB,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,KAAK,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;YACrD,MAAM,CAAC,KAAK,CAAC,WAAW,OAAO,IAAI,OAAO,eAAe,GAAG,iBAAiB,KAAK,OAAO,CAAC,CAAC;YAC3F,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,YAAY,CAAC,gBAAgB,OAAO,WAAW,EAAE,GAAG,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The icon catalog in use, fetched from the registry.
|
|
3
|
+
*
|
|
4
|
+
* The CLI carries a copy of the table, but the registry is what counts: that is
|
|
5
|
+
* how a new family reaches someone who already has the CLI installed, without
|
|
6
|
+
* waiting for a release of it. The local copy is the floor — it applies offline,
|
|
7
|
+
* against an old registry that does not publish the file, and on any network
|
|
8
|
+
* failure.
|
|
9
|
+
*
|
|
10
|
+
* It is loaded once per command and read synchronously after that. The
|
|
11
|
+
* alternative would be threading the catalog through the action's parameters
|
|
12
|
+
* down to the file installer, four layers below, with none of them having
|
|
13
|
+
* anything to decide about it.
|
|
14
|
+
*/
|
|
15
|
+
import { type IconCatalog, type IconFamily } from '../core/icons/index.js';
|
|
16
|
+
/** O que `<registry>/icons.json` publica. */
|
|
17
|
+
export interface IconCatalogDocument extends IconCatalog {
|
|
18
|
+
$schema?: string;
|
|
19
|
+
schemaVersion?: number;
|
|
20
|
+
}
|
|
21
|
+
/** The loaded catalog, or the local copy while nobody has loaded one. */
|
|
22
|
+
export declare function iconCatalog(): IconCatalog;
|
|
23
|
+
/** Returns to the initial state. Exists so tests do not leak into one another. */
|
|
24
|
+
export declare function resetIconCatalog(): void;
|
|
25
|
+
export declare function loadIconCatalog(registryUrl: string): Promise<IconCatalog>;
|
|
26
|
+
/**
|
|
27
|
+
* Rejects a family the catalog does not know, naming the ones that exist.
|
|
28
|
+
*
|
|
29
|
+
* "Invalid configuration file: components.json" was all an `"icons": "materia"`
|
|
30
|
+
* produced — no field named, no accepted values, and the whole file under
|
|
31
|
+
* suspicion.
|
|
32
|
+
*/
|
|
33
|
+
export declare function assertIconFamily(family: IconFamily, catalog?: IconCatalog): void;
|
|
34
|
+
//# sourceMappingURL=icon-catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon-catalog.d.ts","sourceRoot":"","sources":["../../src/utils/icon-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAsB,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAMjG,6CAA6C;AAC7C,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,yEAAyE;AACzE,wBAAgB,WAAW,IAAI,WAAW,CAEzC;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAqB/E;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE,WAA2B,GAAG,IAAI,CAO/F"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The icon catalog in use, fetched from the registry.
|
|
3
|
+
*
|
|
4
|
+
* The CLI carries a copy of the table, but the registry is what counts: that is
|
|
5
|
+
* how a new family reaches someone who already has the CLI installed, without
|
|
6
|
+
* waiting for a release of it. The local copy is the floor — it applies offline,
|
|
7
|
+
* against an old registry that does not publish the file, and on any network
|
|
8
|
+
* failure.
|
|
9
|
+
*
|
|
10
|
+
* It is loaded once per command and read synchronously after that. The
|
|
11
|
+
* alternative would be threading the catalog through the action's parameters
|
|
12
|
+
* down to the file installer, four layers below, with none of them having
|
|
13
|
+
* anything to decide about it.
|
|
14
|
+
*/
|
|
15
|
+
import { LOCAL_ICON_CATALOG } from '../core/icons/index.js';
|
|
16
|
+
import { CliError, SchemaVersionError } from './errors.js';
|
|
17
|
+
import { fetchJson } from './http-client.js';
|
|
18
|
+
import { logger } from './logger.js';
|
|
19
|
+
import { assertSupportedSchema } from './schema-version.js';
|
|
20
|
+
let current = LOCAL_ICON_CATALOG;
|
|
21
|
+
/** The loaded catalog, or the local copy while nobody has loaded one. */
|
|
22
|
+
export function iconCatalog() {
|
|
23
|
+
return current;
|
|
24
|
+
}
|
|
25
|
+
/** Returns to the initial state. Exists so tests do not leak into one another. */
|
|
26
|
+
export function resetIconCatalog() {
|
|
27
|
+
current = LOCAL_ICON_CATALOG;
|
|
28
|
+
}
|
|
29
|
+
export async function loadIconCatalog(registryUrl) {
|
|
30
|
+
try {
|
|
31
|
+
const document = await fetchJson(`${registryUrl}/icons.json`);
|
|
32
|
+
assertSupportedSchema(document.schemaVersion, 'icons.json');
|
|
33
|
+
if (!document.families || !document.icons)
|
|
34
|
+
throw new Error('missing families or icons');
|
|
35
|
+
current = { families: document.families, icons: document.icons };
|
|
36
|
+
logger.debug(`Icon catalog loaded: ${Object.keys(current.families).join(', ')}`);
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
// Only a format incompatibility stops us. Everything else — a 404, the SPA's
|
|
40
|
+
// HTML instead of JSON, a timeout, broken JSON — is a registry without the
|
|
41
|
+
// catalog, which is the state of all of them until the first deploy with the
|
|
42
|
+
// file. Treating that as a failure would take `add` down worldwide over a
|
|
43
|
+
// file that only matters to someone who switched family.
|
|
44
|
+
if (error instanceof SchemaVersionError)
|
|
45
|
+
throw error;
|
|
46
|
+
logger.debug(`Falling back to the bundled icon catalog: ${error instanceof Error ? error.message : error}`);
|
|
47
|
+
current = LOCAL_ICON_CATALOG;
|
|
48
|
+
}
|
|
49
|
+
return current;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Rejects a family the catalog does not know, naming the ones that exist.
|
|
53
|
+
*
|
|
54
|
+
* "Invalid configuration file: components.json" was all an `"icons": "materia"`
|
|
55
|
+
* produced — no field named, no accepted values, and the whole file under
|
|
56
|
+
* suspicion.
|
|
57
|
+
*/
|
|
58
|
+
export function assertIconFamily(family, catalog = iconCatalog()) {
|
|
59
|
+
if (Object.prototype.hasOwnProperty.call(catalog.families, family))
|
|
60
|
+
return;
|
|
61
|
+
throw new CliError(`Unknown icon set "${family}" in components.json. Available: ${Object.keys(catalog.families).sort().join(', ')}.`, 'UNKNOWN_ICON_FAMILY');
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=icon-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon-catalog.js","sourceRoot":"","sources":["../../src/utils/icon-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,kBAAkB,EAAqC,MAAM,0BAA0B,CAAC;AACjG,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAQrE,IAAI,OAAO,GAAgB,kBAAkB,CAAC;AAE9C,yEAAyE;AACzE,MAAM,UAAU,WAAW;IACzB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,gBAAgB;IAC9B,OAAO,GAAG,kBAAkB,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,WAAmB;IACvD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAsB,GAAG,WAAW,aAAa,CAAC,CAAC;QACnF,qBAAqB,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAE5D,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAExF,OAAO,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjE,MAAM,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,6EAA6E;QAC7E,2EAA2E;QAC3E,6EAA6E;QAC7E,0EAA0E;QAC1E,yDAAyD;QACzD,IAAI,KAAK,YAAY,kBAAkB;YAAE,MAAM,KAAK,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,6CAA6C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5G,OAAO,GAAG,kBAAkB,CAAC;IAC/B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAkB,EAAE,UAAuB,WAAW,EAAE;IACvF,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAE,OAAO;IAE3E,MAAM,IAAI,QAAQ,CAChB,qBAAqB,MAAM,oCAAoC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EACjH,qBAAqB,CACtB,CAAC;AACJ,CAAC"}
|
package/utils/logger.d.ts
CHANGED
|
@@ -16,9 +16,9 @@ export interface Spinner {
|
|
|
16
16
|
fail(text?: string): Spinner;
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
20
|
-
* (headless, --yes, CI).
|
|
21
|
-
*
|
|
19
|
+
* Progress indicator for the paths that run outside the interactive screen
|
|
20
|
+
* (headless, --yes, CI). Inside a wizard the engine does the animating, and here
|
|
21
|
+
* the transitions become nothing but records in the sink.
|
|
22
22
|
*/
|
|
23
23
|
export declare function spinner(text: string): Spinner;
|
|
24
24
|
//# sourceMappingURL=logger.d.ts.map
|
package/utils/logger.js
CHANGED
|
@@ -20,10 +20,10 @@ function toMessage(args) {
|
|
|
20
20
|
.join(' ');
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
23
|
+
* Writes a message — or holds it, while the interactive screen is mounted.
|
|
24
24
|
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
25
|
+
* Without that diversion, a `logger.warn` fired mid-install would write over the
|
|
26
|
+
* frame the engine just painted.
|
|
27
27
|
*/
|
|
28
28
|
function emit(level, args) {
|
|
29
29
|
const message = toMessage(args);
|
|
@@ -58,9 +58,9 @@ export const logger = {
|
|
|
58
58
|
const FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
59
59
|
const FRAME_MS = 80;
|
|
60
60
|
/**
|
|
61
|
-
*
|
|
62
|
-
* (headless, --yes, CI).
|
|
63
|
-
*
|
|
61
|
+
* Progress indicator for the paths that run outside the interactive screen
|
|
62
|
+
* (headless, --yes, CI). Inside a wizard the engine does the animating, and here
|
|
63
|
+
* the transitions become nothing but records in the sink.
|
|
64
64
|
*/
|
|
65
65
|
export function spinner(text) {
|
|
66
66
|
const animated = Boolean(process.stdout.isTTY) && !isCapturing();
|
|
@@ -71,8 +71,8 @@ export function spinner(text) {
|
|
|
71
71
|
process.stdout.write('\r\x1b[2K');
|
|
72
72
|
};
|
|
73
73
|
const paint = () => {
|
|
74
|
-
//
|
|
75
|
-
//
|
|
74
|
+
// Capture can start after the spinner was already running; in that case the
|
|
75
|
+
// screen owns the terminal and nothing else may write to it directly.
|
|
76
76
|
if (isCapturing())
|
|
77
77
|
return;
|
|
78
78
|
clearLine();
|
|
@@ -95,7 +95,7 @@ export function spinner(text) {
|
|
|
95
95
|
return instance;
|
|
96
96
|
paint();
|
|
97
97
|
timer = setInterval(paint, FRAME_MS);
|
|
98
|
-
//
|
|
98
|
+
// An active spinner must not keep the process alive on its own.
|
|
99
99
|
timer.unref?.();
|
|
100
100
|
return instance;
|
|
101
101
|
},
|
package/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAiB,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,IAAI,YAAY,GAAG,KAAK,CAAC;AAEzB,MAAM,UAAU,WAAW;IACzB,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,SAAS,CAAC,IAAe;IAChC,OAAO,IAAI;SACR,GAAG,CAAC,GAAG,CAAC,EAAE;QACT,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC;QACxC,IAAI,GAAG,YAAY,KAAK;YAAE,OAAO,GAAG,CAAC,OAAO,CAAC;QAC7C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,IAAI,CAAC,KAAe,EAAE,IAAe;IAC5C,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;QAAE,OAAO;IACpC,SAAS,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,CAAC,GAAG,IAAe;QACtB,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,CAAC,GAAG,IAAe;QACrB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,CAAC,GAAG,IAAe;QACrB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,CAAC,GAAG,IAAe;QACxB,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,KAAK,CAAC,GAAG,IAAe;QACtB,IAAI,CAAC,YAAY;YAAE,OAAO;QAC1B,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtB,CAAC;IACD,KAAK;QACH,IAAI,WAAW,EAAE;YAAE,OAAO;QAC1B,SAAS,EAAE,CAAC;IACd,CAAC;CACF,CAAC;AAUF,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAClE,MAAM,QAAQ,GAAG,EAAE,CAAC;AAEpB;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACjE,IAAI,KAAiD,CAAC;IACtD,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,MAAM,SAAS,GAAG,GAAS,EAAE;QAC3B,IAAI,QAAQ;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,4EAA4E;QAC5E,
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|