zard-cli 1.0.0-beta.12 → 1.0.0-beta.120
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 +39 -167
- package/commands/add/component-installer.d.ts +4 -1
- package/commands/add/component-installer.d.ts.map +1 -1
- package/commands/add/component-installer.js +33 -5
- package/commands/add/component-installer.js.map +1 -1
- package/commands/add/component-selector.d.ts +6 -0
- package/commands/add/component-selector.d.ts.map +1 -1
- package/commands/add/component-selector.js +9 -27
- package/commands/add/component-selector.js.map +1 -1
- 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 +5 -11
- package/commands/add/dark-mode-setup.js.map +1 -1
- package/commands/add/dependency-resolver.d.ts +5 -2
- package/commands/add/dependency-resolver.d.ts.map +1 -1
- package/commands/add/dependency-resolver.js +54 -20
- package/commands/add/dependency-resolver.js.map +1 -1
- package/commands/add/index.d.ts.map +1 -1
- package/commands/add/index.js +135 -86
- package/commands/add/index.js.map +1 -1
- package/commands/add/typeset-setup.d.ts +12 -0
- package/commands/add/typeset-setup.d.ts.map +1 -0
- package/commands/add/typeset-setup.js +68 -0
- package/commands/add/typeset-setup.js.map +1 -0
- package/commands/add/wizard.d.ts +34 -0
- package/commands/add/wizard.d.ts.map +1 -0
- package/commands/add/wizard.js +295 -0
- package/commands/add/wizard.js.map +1 -0
- package/commands/init/config-prompter.d.ts +66 -56
- package/commands/init/config-prompter.d.ts.map +1 -1
- package/commands/init/config-prompter.js +90 -74
- package/commands/init/config-prompter.js.map +1 -1
- package/commands/init/dependencies.d.ts +1 -8
- package/commands/init/dependencies.d.ts.map +1 -1
- package/commands/init/dependencies.js +51 -23
- package/commands/init/dependencies.js.map +1 -1
- package/commands/init/index.d.ts.map +1 -1
- package/commands/init/index.js +150 -86
- package/commands/init/index.js.map +1 -1
- package/commands/init/project-kind.d.ts +82 -0
- package/commands/init/project-kind.d.ts.map +1 -0
- package/commands/init/project-kind.js +166 -0
- package/commands/init/project-kind.js.map +1 -0
- package/commands/init/steps.d.ts +15 -0
- package/commands/init/steps.d.ts.map +1 -0
- package/commands/init/steps.js +154 -0
- package/commands/init/steps.js.map +1 -0
- package/commands/init/tailwind-setup.d.ts +9 -2
- package/commands/init/tailwind-setup.d.ts.map +1 -1
- package/commands/init/tailwind-setup.js +33 -9
- package/commands/init/tailwind-setup.js.map +1 -1
- package/commands/init/theme-loader.d.ts.map +1 -1
- package/commands/init/theme-loader.js +1 -3
- package/commands/init/theme-loader.js.map +1 -1
- package/commands/init/tsconfig-updater.d.ts +8 -1
- package/commands/init/tsconfig-updater.d.ts.map +1 -1
- package/commands/init/tsconfig-updater.js +30 -11
- package/commands/init/tsconfig-updater.js.map +1 -1
- package/commands/init/update-angular-config.d.ts.map +1 -1
- package/commands/init/update-angular-config.js +28 -47
- package/commands/init/update-angular-config.js.map +1 -1
- package/commands/init/vite-setup.d.ts +11 -0
- package/commands/init/vite-setup.d.ts.map +1 -0
- package/commands/init/vite-setup.js +61 -0
- package/commands/init/vite-setup.js.map +1 -0
- package/commands/init/wizard.d.ts +30 -0
- package/commands/init/wizard.d.ts.map +1 -0
- package/commands/init/wizard.js +560 -0
- package/commands/init/wizard.js.map +1 -0
- 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 +135 -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 +752 -126
- package/core/registry/registry-data.js.map +1 -1
- package/core/themes/theme-definitions.d.ts +5 -5
- package/core/themes/theme-definitions.d.ts.map +1 -1
- package/core/themes/theme-definitions.js +75 -61
- package/core/themes/theme-definitions.js.map +1 -1
- package/index.js +41 -4
- package/index.js.map +1 -1
- package/package.json +9 -14
- package/ui/blocks.d.ts +71 -0
- package/ui/blocks.d.ts.map +1 -0
- package/ui/blocks.js +116 -0
- package/ui/blocks.js.map +1 -0
- package/ui/brand.d.ts +14 -0
- package/ui/brand.d.ts.map +1 -0
- package/ui/brand.js +35 -0
- package/ui/brand.js.map +1 -0
- package/ui/engine/animation/index.d.ts +38 -0
- package/ui/engine/animation/index.d.ts.map +1 -0
- package/ui/engine/animation/index.js +102 -0
- package/ui/engine/animation/index.js.map +1 -0
- package/ui/engine/ansi/index.d.ts +51 -0
- package/ui/engine/ansi/index.d.ts.map +1 -0
- package/ui/engine/ansi/index.js +116 -0
- package/ui/engine/ansi/index.js.map +1 -0
- package/ui/engine/components/index.d.ts +211 -0
- package/ui/engine/components/index.d.ts.map +1 -0
- package/ui/engine/components/index.js +109 -0
- package/ui/engine/components/index.js.map +1 -0
- package/ui/engine/cursor/index.d.ts +16 -0
- package/ui/engine/cursor/index.d.ts.map +1 -0
- package/ui/engine/cursor/index.js +40 -0
- package/ui/engine/cursor/index.js.map +1 -0
- package/ui/engine/diff/index.d.ts +26 -0
- package/ui/engine/diff/index.d.ts.map +1 -0
- package/ui/engine/diff/index.js +56 -0
- package/ui/engine/diff/index.js.map +1 -0
- package/ui/engine/events/index.d.ts +24 -0
- package/ui/engine/events/index.d.ts.map +1 -0
- package/ui/engine/events/index.js +60 -0
- package/ui/engine/events/index.js.map +1 -0
- package/ui/engine/focus/index.d.ts +25 -0
- package/ui/engine/focus/index.d.ts.map +1 -0
- package/ui/engine/focus/index.js +77 -0
- package/ui/engine/focus/index.js.map +1 -0
- package/ui/engine/frame/index.d.ts +48 -0
- package/ui/engine/frame/index.d.ts.map +1 -0
- package/ui/engine/frame/index.js +0 -0
- package/ui/engine/frame/index.js.map +1 -0
- package/ui/engine/index.d.ts +28 -0
- package/ui/engine/index.d.ts.map +1 -0
- package/ui/engine/index.js +28 -0
- package/ui/engine/index.js.map +1 -0
- package/ui/engine/input/index.d.ts +36 -0
- package/ui/engine/input/index.d.ts.map +1 -0
- package/ui/engine/input/index.js +224 -0
- package/ui/engine/input/index.js.map +1 -0
- package/ui/engine/layout/index.d.ts +42 -0
- package/ui/engine/layout/index.d.ts.map +1 -0
- package/ui/engine/layout/index.js +241 -0
- package/ui/engine/layout/index.js.map +1 -0
- package/ui/engine/renderer/index.d.ts +43 -0
- package/ui/engine/renderer/index.d.ts.map +1 -0
- package/ui/engine/renderer/index.js +619 -0
- package/ui/engine/renderer/index.js.map +1 -0
- package/ui/engine/scheduler/index.d.ts +22 -0
- package/ui/engine/scheduler/index.d.ts.map +1 -0
- package/ui/engine/scheduler/index.js +77 -0
- package/ui/engine/scheduler/index.js.map +1 -0
- package/ui/engine/screen/index.d.ts +39 -0
- package/ui/engine/screen/index.d.ts.map +1 -0
- package/ui/engine/screen/index.js +255 -0
- package/ui/engine/screen/index.js.map +1 -0
- package/ui/engine/terminal/index.d.ts +84 -0
- package/ui/engine/terminal/index.d.ts.map +1 -0
- package/ui/engine/terminal/index.js +235 -0
- package/ui/engine/terminal/index.js.map +1 -0
- package/ui/engine/testing/index.d.ts +27 -0
- package/ui/engine/testing/index.d.ts.map +1 -0
- package/ui/engine/testing/index.js +63 -0
- package/ui/engine/testing/index.js.map +1 -0
- package/ui/engine/theme/index.d.ts +26 -0
- package/ui/engine/theme/index.d.ts.map +1 -0
- package/ui/engine/theme/index.js +128 -0
- package/ui/engine/theme/index.js.map +1 -0
- package/ui/engine/utils/index.d.ts +12 -0
- package/ui/engine/utils/index.d.ts.map +1 -0
- package/ui/engine/utils/index.js +143 -0
- package/ui/engine/utils/index.js.map +1 -0
- package/ui/gate.d.ts +19 -0
- package/ui/gate.d.ts.map +1 -0
- package/ui/gate.js +36 -0
- package/ui/gate.js.map +1 -0
- package/ui/index.d.ts +18 -0
- package/ui/index.d.ts.map +1 -0
- package/ui/index.js +18 -0
- package/ui/index.js.map +1 -0
- package/ui/log-sink.d.ts +24 -0
- package/ui/log-sink.d.ts.map +1 -0
- package/ui/log-sink.js +35 -0
- package/ui/log-sink.js.map +1 -0
- package/ui/output.d.ts +14 -0
- package/ui/output.d.ts.map +1 -0
- package/ui/output.js +28 -0
- package/ui/output.js.map +1 -0
- package/ui/report.d.ts +30 -0
- package/ui/report.d.ts.map +1 -0
- package/ui/report.js +45 -0
- package/ui/report.js.map +1 -0
- package/ui/runner.d.ts +66 -0
- package/ui/runner.d.ts.map +1 -0
- package/ui/runner.js +135 -0
- package/ui/runner.js.map +1 -0
- package/ui/style.d.ts +24 -0
- package/ui/style.d.ts.map +1 -0
- package/ui/style.js +44 -0
- package/ui/style.js.map +1 -0
- package/ui/testing/fake-tty.d.ts +26 -0
- package/ui/testing/fake-tty.d.ts.map +1 -0
- package/ui/testing/fake-tty.js +61 -0
- package/ui/testing/fake-tty.js.map +1 -0
- package/ui/text-input.d.ts +31 -0
- package/ui/text-input.d.ts.map +1 -0
- package/ui/text-input.js +89 -0
- package/ui/text-input.js.map +1 -0
- package/ui/theme.d.ts +10 -0
- package/ui/theme.d.ts.map +1 -0
- package/ui/theme.js +20 -0
- package/ui/theme.js.map +1 -0
- 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 +52 -69
- package/utils/config.d.ts.map +1 -1
- package/utils/config.js +60 -9
- package/utils/config.js.map +1 -1
- package/utils/errors.d.ts +27 -0
- package/utils/errors.d.ts.map +1 -0
- package/utils/errors.js +45 -0
- package/utils/errors.js.map +1 -0
- package/utils/get-package-info.js +4 -4
- package/utils/get-package-info.js.map +1 -1
- package/utils/get-project-info.d.ts +30 -0
- package/utils/get-project-info.d.ts.map +1 -1
- package/utils/get-project-info.js +195 -6
- package/utils/get-project-info.js.map +1 -1
- package/utils/http-client.d.ts +8 -0
- package/utils/http-client.d.ts.map +1 -0
- package/utils/http-client.js +83 -0
- package/utils/http-client.js.map +1 -0
- 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 +16 -1
- package/utils/logger.d.ts.map +1 -1
- package/utils/logger.js +104 -12
- package/utils/logger.js.map +1 -1
- package/utils/package-manager.d.ts +44 -1
- package/utils/package-manager.d.ts.map +1 -1
- package/utils/package-manager.js +210 -14
- package/utils/package-manager.js.map +1 -1
- package/utils/registry.d.ts +44 -2
- package/utils/registry.d.ts.map +1 -1
- package/utils/registry.js +89 -30
- 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 +40 -0
- package/utils/source-file.d.ts.map +1 -0
- package/utils/source-file.js +104 -0
- package/utils/source-file.js.map +1 -0
- package/utils/theme-selector.d.ts +1 -1
- package/utils/theme-selector.d.ts.map +1 -1
- package/utils/theme-selector.js +6 -6
- package/utils/theme-selector.js.map +1 -1
- package/utils/fetch-component.d.ts +0 -3
- package/utils/fetch-component.d.ts.map +0 -1
- package/utils/fetch-component.js +0 -75
- package/utils/fetch-component.js.map +0 -1
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { SchemaVersionError } from '../utils/errors.js';
|
|
2
|
+
/**
|
|
3
|
+
* The registry FORMAT version this CLI understands.
|
|
4
|
+
*
|
|
5
|
+
* Not to be confused with the package version, which the index also publishes:
|
|
6
|
+
* that one says which release the content came from, this one says what shape it
|
|
7
|
+
* has. Without separating them there was no way for the registry to change shape
|
|
8
|
+
* without silently breaking whoever was already installed — the CLI would read
|
|
9
|
+
* `files` from an item with a different shape and get it wrong without a word.
|
|
10
|
+
*
|
|
11
|
+
* It goes up when the change breaks a reader: a field removed, a meaning
|
|
12
|
+
* altered, an item reorganized. A new optional field raises nothing.
|
|
13
|
+
*/
|
|
14
|
+
export const SUPPORTED_SCHEMA_VERSION = 1;
|
|
15
|
+
/**
|
|
16
|
+
* Rejects a document newer than this CLI knows how to read.
|
|
17
|
+
*
|
|
18
|
+
* A missing field means a registry older than the field itself, which is version
|
|
19
|
+
* 1 by definition.
|
|
20
|
+
*/
|
|
21
|
+
export function assertSupportedSchema(schemaVersion, source) {
|
|
22
|
+
const version = schemaVersion ?? 1;
|
|
23
|
+
if (version > SUPPORTED_SCHEMA_VERSION) {
|
|
24
|
+
throw new SchemaVersionError(`This registry publishes ${source} in format v${version}, and this CLI reads up to v${SUPPORTED_SCHEMA_VERSION}. ` +
|
|
25
|
+
'Update it with `npm i -g zard-cli@latest`, or run it through npx, which always fetches the latest.');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=schema-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-version.js","sourceRoot":"","sources":["../../src/utils/schema-version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,aAAiC,EAAE,MAAc;IACrF,MAAM,OAAO,GAAG,aAAa,IAAI,CAAC,CAAC;IAEnC,IAAI,OAAO,GAAG,wBAAwB,EAAE,CAAC;QACvC,MAAM,IAAI,kBAAkB,CAC1B,2BAA2B,MAAM,eAAe,OAAO,+BAA+B,wBAAwB,IAAI;YAChH,oGAAoG,CACvG,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source edits that more than one init step needs to make.
|
|
3
|
+
*
|
|
4
|
+
* Inserting an import looks trivial until the file is in CRLF: a raw `\n`
|
|
5
|
+
* produces mixed endings, makes git mark the whole file as changed, and — when
|
|
6
|
+
* the expression that finds the imports forgets the `\r` — welds the new line
|
|
7
|
+
* onto the end of the previous one.
|
|
8
|
+
*/
|
|
9
|
+
/** The line ending the file already uses. */
|
|
10
|
+
export declare function lineEndingOf(content: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* Inserts an import line just after the file's last import.
|
|
13
|
+
*
|
|
14
|
+
* Returns the content untouched when the import is already there, so calling it
|
|
15
|
+
* twice is the same as calling it once.
|
|
16
|
+
*/
|
|
17
|
+
export declare function withImport(content: string, importLine: string): string;
|
|
18
|
+
/** Where an array literal starts and ends, as indices into the content. */
|
|
19
|
+
export interface ArrayRange {
|
|
20
|
+
/** Index of the opening `[`. */
|
|
21
|
+
readonly open: number;
|
|
22
|
+
/** Index of the closing `]`. */
|
|
23
|
+
readonly close: number;
|
|
24
|
+
/** What sits between the two, without the brackets. */
|
|
25
|
+
readonly body: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The range of the array assigned to `key`, found by counting brackets.
|
|
29
|
+
*
|
|
30
|
+
* A regular expression stops at the first `]` it sees, and in real code that `]`
|
|
31
|
+
* is usually a nested array's — `withInterceptors([...])` inside `providers`, a
|
|
32
|
+
* plugin with options inside `plugins`. Anything inserted there landed in the
|
|
33
|
+
* wrong array, and the build broke with a type error that mentions ZardUI
|
|
34
|
+
* nowhere.
|
|
35
|
+
*
|
|
36
|
+
* Strings and comments are skipped, so a `]` written inside one does not count
|
|
37
|
+
* as a closing bracket.
|
|
38
|
+
*/
|
|
39
|
+
export declare function arrayRange(content: string, key: string): ArrayRange | null;
|
|
40
|
+
//# sourceMappingURL=source-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-file.d.ts","sourceRoot":"","sources":["../../src/utils/source-file.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,6CAA6C;AAC7C,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AAgBD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAYtE;AAED,2EAA2E;AAC3E,MAAM,WAAW,UAAU;IACzB,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAyB1E"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source edits that more than one init step needs to make.
|
|
3
|
+
*
|
|
4
|
+
* Inserting an import looks trivial until the file is in CRLF: a raw `\n`
|
|
5
|
+
* produces mixed endings, makes git mark the whole file as changed, and — when
|
|
6
|
+
* the expression that finds the imports forgets the `\r` — welds the new line
|
|
7
|
+
* onto the end of the previous one.
|
|
8
|
+
*/
|
|
9
|
+
/** The line ending the file already uses. */
|
|
10
|
+
export function lineEndingOf(content) {
|
|
11
|
+
return content.includes('\r\n') ? '\r\n' : '\n';
|
|
12
|
+
}
|
|
13
|
+
/** The file's last `import ... from '...'`, or null when there is none. */
|
|
14
|
+
function lastImport(content) {
|
|
15
|
+
// `[\s\S]*?` rather than `.*`: the list of imported symbols often wraps across
|
|
16
|
+
// several lines, and a pattern anchored to a single line did not reach it — in
|
|
17
|
+
// such a file the new import was thrown in before all the others.
|
|
18
|
+
const importRegex = /^import\s[\s\S]*?from\s+'[^']*';\r?\n?/gm;
|
|
19
|
+
let last = null;
|
|
20
|
+
let match;
|
|
21
|
+
while ((match = importRegex.exec(content)) !== null)
|
|
22
|
+
last = match;
|
|
23
|
+
return last;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Inserts an import line just after the file's last import.
|
|
27
|
+
*
|
|
28
|
+
* Returns the content untouched when the import is already there, so calling it
|
|
29
|
+
* twice is the same as calling it once.
|
|
30
|
+
*/
|
|
31
|
+
export function withImport(content, importLine) {
|
|
32
|
+
if (content.includes(importLine))
|
|
33
|
+
return content;
|
|
34
|
+
const eol = lineEndingOf(content);
|
|
35
|
+
const last = lastImport(content);
|
|
36
|
+
if (!last)
|
|
37
|
+
return importLine + eol + content;
|
|
38
|
+
const end = last.index + last[0].length;
|
|
39
|
+
const alreadyBroken = /\r?\n$/.test(last[0]);
|
|
40
|
+
return content.slice(0, end) + (alreadyBroken ? '' : eol) + importLine + eol + content.slice(end);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* The range of the array assigned to `key`, found by counting brackets.
|
|
44
|
+
*
|
|
45
|
+
* A regular expression stops at the first `]` it sees, and in real code that `]`
|
|
46
|
+
* is usually a nested array's — `withInterceptors([...])` inside `providers`, a
|
|
47
|
+
* plugin with options inside `plugins`. Anything inserted there landed in the
|
|
48
|
+
* wrong array, and the build broke with a type error that mentions ZardUI
|
|
49
|
+
* nowhere.
|
|
50
|
+
*
|
|
51
|
+
* Strings and comments are skipped, so a `]` written inside one does not count
|
|
52
|
+
* as a closing bracket.
|
|
53
|
+
*/
|
|
54
|
+
export function arrayRange(content, key) {
|
|
55
|
+
const opening = new RegExp(`\\b${key}\\s*:\\s*\\[`).exec(content);
|
|
56
|
+
if (!opening)
|
|
57
|
+
return null;
|
|
58
|
+
const open = opening.index + opening[0].length - 1;
|
|
59
|
+
let depth = 0;
|
|
60
|
+
for (let index = open; index < content.length; index++) {
|
|
61
|
+
const skipped = skipStringOrComment(content, index);
|
|
62
|
+
if (skipped !== index) {
|
|
63
|
+
index = skipped - 1;
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
const char = content[index];
|
|
67
|
+
if (char === '[')
|
|
68
|
+
depth++;
|
|
69
|
+
else if (char === ']' && --depth === 0) {
|
|
70
|
+
return { open, close: index, body: content.slice(open + 1, index) };
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* The index just past the string or comment starting at `index`.
|
|
77
|
+
*
|
|
78
|
+
* Returns `index` itself when there is neither — the caller uses that to know
|
|
79
|
+
* the character is code and should be taken into account.
|
|
80
|
+
*/
|
|
81
|
+
function skipStringOrComment(content, index) {
|
|
82
|
+
const char = content[index];
|
|
83
|
+
const next = content[index + 1];
|
|
84
|
+
if (char === '/' && next === '/') {
|
|
85
|
+
const end = content.indexOf('\n', index);
|
|
86
|
+
return end === -1 ? content.length : end;
|
|
87
|
+
}
|
|
88
|
+
if (char === '/' && next === '*') {
|
|
89
|
+
const end = content.indexOf('*/', index + 2);
|
|
90
|
+
return end === -1 ? content.length : end + 2;
|
|
91
|
+
}
|
|
92
|
+
if (char !== '"' && char !== "'" && char !== '`')
|
|
93
|
+
return index;
|
|
94
|
+
for (let cursor = index + 1; cursor < content.length; cursor++) {
|
|
95
|
+
if (content[cursor] === '\\') {
|
|
96
|
+
cursor++;
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
if (content[cursor] === char)
|
|
100
|
+
return cursor + 1;
|
|
101
|
+
}
|
|
102
|
+
return content.length;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=source-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-file.js","sourceRoot":"","sources":["../../src/utils/source-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export declare function getAvailableThemes(): string[];
|
|
2
|
-
export declare function getThemeContent(themeName: string): string;
|
|
2
|
+
export declare function getThemeContent(themeName: string, corePath: string): string;
|
|
3
3
|
export declare function getThemeDisplayName(themeName: string): string;
|
|
4
4
|
//# sourceMappingURL=theme-selector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-selector.d.ts","sourceRoot":"","sources":["../../src/utils/theme-selector.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"theme-selector.d.ts","sourceRoot":"","sources":["../../src/utils/theme-selector.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAkB3E;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAS7D"}
|
package/utils/theme-selector.js
CHANGED
|
@@ -2,20 +2,20 @@ import * as themes from '../core/themes/theme-definitions.js';
|
|
|
2
2
|
export function getAvailableThemes() {
|
|
3
3
|
return themes.availableThemes;
|
|
4
4
|
}
|
|
5
|
-
export function getThemeContent(themeName) {
|
|
5
|
+
export function getThemeContent(themeName, corePath) {
|
|
6
6
|
const content = (() => {
|
|
7
7
|
switch (themeName) {
|
|
8
8
|
case 'stone':
|
|
9
|
-
return themes.stone;
|
|
9
|
+
return themes.stone(corePath);
|
|
10
10
|
case 'zinc':
|
|
11
|
-
return themes.zinc;
|
|
11
|
+
return themes.zinc(corePath);
|
|
12
12
|
case 'gray':
|
|
13
|
-
return themes.gray;
|
|
13
|
+
return themes.gray(corePath);
|
|
14
14
|
case 'slate':
|
|
15
|
-
return themes.slate;
|
|
15
|
+
return themes.slate(corePath);
|
|
16
16
|
case 'neutral':
|
|
17
17
|
default:
|
|
18
|
-
return themes.neutral;
|
|
18
|
+
return themes.neutral(corePath);
|
|
19
19
|
}
|
|
20
20
|
})();
|
|
21
21
|
return content.trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-selector.js","sourceRoot":"","sources":["../../src/utils/theme-selector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,uCAAuC,CAAC;AAEhE,MAAM,UAAU,kBAAkB;IAChC,OAAO,MAAM,CAAC,eAAe,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAAiB;
|
|
1
|
+
{"version":3,"file":"theme-selector.js","sourceRoot":"","sources":["../../src/utils/theme-selector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,uCAAuC,CAAC;AAEhE,MAAM,UAAU,kBAAkB;IAChC,OAAO,MAAM,CAAC,eAAe,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAAiB,EAAE,QAAgB;IACjE,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE;QACpB,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,OAAO;gBACV,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAChC,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/B,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/B,KAAK,OAAO;gBACV,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAChC,KAAK,SAAS,CAAC;YACf;gBACE,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,MAAM,KAAK,GAA2B;QACpC,OAAO,EAAE,mBAAmB;QAC5B,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,OAAO;KACf,CAAC;IACF,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;AACvC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-component.d.ts","sourceRoot":"","sources":["../../src/utils/fetch-component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AA6EnD,wBAAsB,wBAAwB,CAC5C,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAYjB"}
|
package/utils/fetch-component.js
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { transformContent } from '../utils/registry.js';
|
|
2
|
-
import { execa } from 'execa';
|
|
3
|
-
import { readFileSync } from 'node:fs';
|
|
4
|
-
import { join, dirname } from 'node:path';
|
|
5
|
-
import { fileURLToPath } from 'node:url';
|
|
6
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
-
const __dirname = dirname(__filename);
|
|
8
|
-
const GITHUB_API = 'https://api.github.com/repos/zard-ui/zardui/contents';
|
|
9
|
-
function getCliVersion() {
|
|
10
|
-
try {
|
|
11
|
-
const packageJsonPath = join(__dirname, '../package.json');
|
|
12
|
-
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
|
|
13
|
-
return packageJson.version;
|
|
14
|
-
}
|
|
15
|
-
catch (error) {
|
|
16
|
-
console.warn('Failed to read CLI version from package.json, falling back to master branch');
|
|
17
|
-
return 'master';
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Get the GitHub ref (tag or branch) to fetch components from
|
|
22
|
-
* Uses the CLI version tag (e.g., v1.2.3) to ensure component compatibility
|
|
23
|
-
*/
|
|
24
|
-
function getGithubRef() {
|
|
25
|
-
const version = getCliVersion();
|
|
26
|
-
if (version === 'master' || version.includes('dev') || version === '0.0.0') {
|
|
27
|
-
return 'master';
|
|
28
|
-
}
|
|
29
|
-
return `v${version}`;
|
|
30
|
-
}
|
|
31
|
-
const GITHUB_REF = getGithubRef();
|
|
32
|
-
const GITHUB_RAW = `https://raw.githubusercontent.com/zard-ui/zardui/${GITHUB_REF}`;
|
|
33
|
-
async function fetchFromGitHubAPI(filePath) {
|
|
34
|
-
try {
|
|
35
|
-
const apiUrl = `${GITHUB_API}/${filePath}?ref=${GITHUB_REF}`;
|
|
36
|
-
const { stdout } = await execa('curl', [
|
|
37
|
-
'-s',
|
|
38
|
-
'-H',
|
|
39
|
-
'Accept: application/vnd.github.v3+json',
|
|
40
|
-
'-H',
|
|
41
|
-
'User-Agent: zard-cli',
|
|
42
|
-
apiUrl,
|
|
43
|
-
]);
|
|
44
|
-
const response = JSON.parse(stdout);
|
|
45
|
-
if (response.message) {
|
|
46
|
-
throw new Error(response.message);
|
|
47
|
-
}
|
|
48
|
-
if (response.content && response.encoding === 'base64') {
|
|
49
|
-
return Buffer.from(response.content, 'base64').toString('utf8');
|
|
50
|
-
}
|
|
51
|
-
throw new Error('Invalid response from GitHub API');
|
|
52
|
-
}
|
|
53
|
-
catch (error) {
|
|
54
|
-
await new Promise(resolve => setTimeout(resolve, 3000));
|
|
55
|
-
const rawUrl = `${GITHUB_RAW}/${filePath}`;
|
|
56
|
-
const { stdout } = await execa('curl', ['-s', '-H', 'User-Agent: zard-cli', rawUrl]);
|
|
57
|
-
if (!stdout || stdout.includes('429: Too Many Requests') || stdout.includes('404: Not Found')) {
|
|
58
|
-
throw new Error(`Failed to fetch from both API and raw URL: ${filePath}`);
|
|
59
|
-
}
|
|
60
|
-
return stdout;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
export async function fetchComponentFromGithub(componentName, fileName, config) {
|
|
64
|
-
try {
|
|
65
|
-
const filePath = `libs/zard/src/lib/components/${componentName}/${fileName}`;
|
|
66
|
-
const randomDelay = Math.random() * 2000 + 1000; // 1-3 seconds
|
|
67
|
-
await new Promise(resolve => setTimeout(resolve, randomDelay));
|
|
68
|
-
const content = await fetchFromGitHubAPI(filePath);
|
|
69
|
-
return transformContent(content, config);
|
|
70
|
-
}
|
|
71
|
-
catch (error) {
|
|
72
|
-
throw new Error(`Failed to fetch component ${componentName}/${fileName}: ${error}`);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=fetch-component.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-component.js","sourceRoot":"","sources":["../../src/utils/fetch-component.ts"],"names":[],"mappings":"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"}
|