@g3nomaly/ui 0.3.4 → 0.3.5
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 +7 -6
- package/dist/cli/adapter.d.ts +11 -2
- package/dist/cli/adapter.d.ts.map +1 -1
- package/dist/cli/adapter.js +14 -5
- package/dist/cli/adapter.js.map +1 -1
- package/dist/cli/commands/add.js +1 -1
- package/dist/cli/commands/add.js.map +1 -1
- package/dist/cli/commands/ls.js +1 -1
- package/dist/cli/commands/ls.js.map +1 -1
- package/dist/cli/commands/source.d.ts +2 -0
- package/dist/cli/commands/source.d.ts.map +1 -1
- package/dist/cli/commands/source.js +1 -1
- package/dist/cli/commands/source.js.map +1 -1
- package/dist/cli/commands/sourceInit.d.ts.map +1 -1
- package/dist/cli/commands/sourceInit.js +3 -2
- package/dist/cli/commands/sourceInit.js.map +1 -1
- package/dist/cli/commands/update.js +1 -1
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.js +2 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/localSources.d.ts +12 -0
- package/dist/cli/localSources.d.ts.map +1 -0
- package/dist/cli/localSources.js +49 -0
- package/dist/cli/localSources.js.map +1 -0
- package/dist/cli/npmDependencies.d.ts +1 -1
- package/dist/cli/npmDependencies.d.ts.map +1 -1
- package/dist/cli/npmDependencies.js +12 -6
- package/dist/cli/npmDependencies.js.map +1 -1
- package/dist/cli/themeTokens.d.ts +1 -1
- package/dist/cli/themeTokens.d.ts.map +1 -1
- package/dist/cli/themeTokens.js +23 -15
- package/dist/cli/themeTokens.js.map +1 -1
- package/dist/packages/dependencies.d.ts +6 -2
- package/dist/packages/dependencies.d.ts.map +1 -1
- package/dist/packages/dependencies.js +8 -2
- package/dist/packages/dependencies.js.map +1 -1
- package/dist/packages/install.d.ts +20 -0
- package/dist/packages/install.d.ts.map +1 -1
- package/dist/packages/install.js +40 -7
- package/dist/packages/install.js.map +1 -1
- package/dist/packages/localPack.d.ts +48 -0
- package/dist/packages/localPack.d.ts.map +1 -0
- package/dist/packages/localPack.js +72 -0
- package/dist/packages/localPack.js.map +1 -0
- package/dist/registry/componentsJson.d.ts +5 -2
- package/dist/registry/componentsJson.d.ts.map +1 -1
- package/dist/registry/componentsJson.js +21 -2
- package/dist/registry/componentsJson.js.map +1 -1
- package/dist/registry/packageImports.d.ts +23 -0
- package/dist/registry/packageImports.d.ts.map +1 -0
- package/dist/registry/packageImports.js +51 -0
- package/dist/registry/packageImports.js.map +1 -0
- package/dist/registry/readSource.js +1 -1
- package/dist/registry/readSource.js.map +1 -1
- package/dist/theme/cssVars.d.ts +18 -5
- package/dist/theme/cssVars.d.ts.map +1 -1
- package/dist/theme/cssVars.js +37 -22
- package/dist/theme/cssVars.js.map +1 -1
- package/package.json +2 -2
- package/template/build.ts +12 -5
- package/template/package.json +5 -1
- package/template/src/components/example/example.meta.ts +8 -0
package/README.md
CHANGED
|
@@ -18,9 +18,10 @@ No `components.json` is needed. The installer keeps its own config.
|
|
|
18
18
|
|
|
19
19
|
## Install components
|
|
20
20
|
|
|
21
|
-
Run these from the root of your project:
|
|
21
|
+
Run these from the root of your project. Adding the installer first pins its version in `bun.lock`, so everyone on the team runs the same one:
|
|
22
22
|
|
|
23
23
|
```sh
|
|
24
|
+
bun add -d @g3nomaly/ui
|
|
24
25
|
bunx @g3nomaly/ui init # writes .g3n.config.json and asks where components go
|
|
25
26
|
bunx @g3nomaly/ui ls # lists the components you can install
|
|
26
27
|
bunx @g3nomaly/ui add button # installs one component
|
|
@@ -32,11 +33,11 @@ bunx @g3nomaly/ui add # or pick from a list
|
|
|
32
33
|
|
|
33
34
|
`add` installs the dependencies of a component too, so `add cardheader` also installs `card`. When more than one source offers a name, as a group or a component, `add` asks which source to take it from. Name the source yourself to skip the question: `g3n-ui:basic` for a group, `button@g3n-ui` for a component. Without a terminal, as in CI, `add` prints these forms and stops. Files keep their group folder: `button` lands in `src/components/ui/input/Button.tsx`. The `--debug` and `--meta` flags include the optional files for one run.
|
|
34
35
|
|
|
35
|
-
Some files stay in their source package, such as a store that manages a component's data. The installer never copies them, and the component imports them from the package, so they update with `bun install`. Such a source must be installed with `bun add` (not `-d`, since your app imports it at runtime) and registered as `npm:<package>`. `add --include-unsafe` copies them next to the component anyway, as an unsafe copy: the component keeps importing the package's version until you point the import at the copy yourself, and `update` and `remove` leave the copy alone.
|
|
36
|
+
Some files stay in their source package, such as a store that manages a component's data. The installer never copies them, and the component imports them from the package, so they update with `bun install`. Such a source must be installed with `bun add` (not `-d`, since your app imports it at runtime) and registered as `npm:<package>`. The source lists every package those files import as a peer, so they use your app's React and not a second copy. When you install such a source from a folder with `bun add file:<path>`, the installer swaps the link for a packed copy on every `add` and `update`, since a linked folder brings its own `node_modules`. `add --include-unsafe` copies them next to the component anyway, as an unsafe copy: the component keeps importing the package's version until you point the import at the copy yourself, and `update` and `remove` leave the copy alone.
|
|
36
37
|
|
|
37
38
|
A component can declare theme tokens its CSS needs, such as shadcn's sidebar colours. After `add` and `update`, the installer adds the ones your stylesheet lacks: to `:root`, `.dark` and `@theme inline`, the blocks a shadcn or tweakcn `globals.css` has. A token your stylesheet already defines keeps your value. Without a stylesheet set, the installer prints the tokens to add by hand.
|
|
38
39
|
|
|
39
|
-
A component can list the npm packages its files import, such as `radix-ui` or `recharts@3.8.0`. After `add` and `update`, the installer prints each package that your `package.json` does not list, and each installed package whose version is outside the range a component asks for, with the `bun add` command that fixes it. Pass `--install` to run that command for you.
|
|
40
|
+
A component can list the npm packages its files import, such as `radix-ui` or `recharts@3.8.0`. After `add` and `update`, the installer prints each package that your `package.json` does not list, and each installed package whose version is outside the range a component asks for, with the `bun add` command that fixes it. Pass `--install` to run that command for you. A package a component imports at runtime but your `package.json` lists only under `devDependencies` is reported too: move it to `dependencies` yourself, since the installer keeps the range you gave it.
|
|
40
41
|
|
|
41
42
|
The installer records what it installed, and the sources you registered, in `.g3n/ui.json`. Commit it with `.g3n.config.json` so your team gets the same components and sources.
|
|
42
43
|
|
|
@@ -103,17 +104,17 @@ bunx @g3nomaly/ui add card@mine # a component from one
|
|
|
103
104
|
bunx @g3nomaly/ui source remove mine
|
|
104
105
|
```
|
|
105
106
|
|
|
106
|
-
The built-in `g3n-ui` source cannot be removed. `source remove` also refuses a source that installed components came from, unless you pass `-f`.
|
|
107
|
+
The built-in `g3n-ui` source cannot be removed. `source remove` also refuses a source that installed components came from, unless you pass `-f`. To point a registered name somewhere else, such as from a local folder to the npm package, pass `-f` to `source add`: `source add npm:my-ui --name mine -f`. Installed components keep their source name, so they update from the new place.
|
|
107
108
|
|
|
108
109
|
Every registered source is stored in `.g3n/ui.json`, so it stays registered for everyone who clones the project. Which kind to use:
|
|
109
110
|
|
|
110
111
|
| Kind | Register | Version | For |
|
|
111
112
|
|---|---|---|---|
|
|
112
|
-
| npm | `bun add
|
|
113
|
+
| npm | `bun add <pkg>`, then `source add npm:<pkg>` | `package.json` and `bun.lock`, like any dependency. `update` reads the installed copy | Teams. The package can come from npm, from git (`bun add github:me/my-ui#v1.2.0`), from your Bun workspace (`"my-ui": "workspace:*"`) or from a folder (`bun add file:../my-ui`). A workspace is the best way to work on a source next to an app |
|
|
113
114
|
| git | `source add owner/repo`, optionally `--ref <tag>` | The branch or tag, cloned on each command | Sources not installed as a package |
|
|
114
115
|
| local | `source add ../my-ui` | Whatever the folder holds | Working on a source next to an app. The path is stored relative to the project, so teammates need the same folder layout |
|
|
115
116
|
|
|
116
|
-
An npm source must be in your `package.json` before you register it. When `package.json` lists it but `node_modules` does not hold it, commands
|
|
117
|
+
An npm source must be in your `package.json` before you register it. When `package.json` lists it but `node_modules` does not hold it, commands ask you to run `bun install` and leave its components as they are. They never download a different version. A source whose components keep no files in the package is only read by the installer, so `bun add -d` is enough for it. Unscoped package names need the `npm:` prefix. Scoped names such as `@me/my-ui` work without it.
|
|
117
118
|
|
|
118
119
|
## Write your own source
|
|
119
120
|
|
package/dist/cli/adapter.d.ts
CHANGED
|
@@ -30,6 +30,8 @@ export interface UiProject {
|
|
|
30
30
|
target: ManifestTarget;
|
|
31
31
|
builtins: SourceRecord;
|
|
32
32
|
}
|
|
33
|
+
/** How the README runs the installer: the project's copy when installed, never a package that merely shares the bin's name. */
|
|
34
|
+
export declare const UI_COMMAND = "bunx @g3nomaly/ui";
|
|
33
35
|
/** What the core commands print and check for components. */
|
|
34
36
|
export declare const UI_CONTEXT: InstallCommandContext<ComponentMeta>;
|
|
35
37
|
/**
|
|
@@ -78,12 +80,19 @@ export declare function fileFlags(project: UiProject, options?: {
|
|
|
78
80
|
* `ui.settings.registeredPackages`, and prints what could not be read;
|
|
79
81
|
* the caller disposes the result.
|
|
80
82
|
*
|
|
83
|
+
* With `packLocal`, an npm source the app installs from a folder on disk is first installed as a
|
|
84
|
+
* packed copy, when its components keep files in the package (see `packLocalSources`).
|
|
85
|
+
*
|
|
81
86
|
* @param project - The opened project.
|
|
82
87
|
* @param flags - Which optional file kinds to read.
|
|
83
|
-
* @param
|
|
88
|
+
* @param options - `only`: source name to read alone, exiting when no such source is registered.
|
|
89
|
+
* `packLocal`: install or refresh packed copies of local sources first; for commands that install.
|
|
84
90
|
* @returns The components per source; dispose it once read.
|
|
85
91
|
*/
|
|
86
|
-
export declare function openComponentRegistry(project: UiProject, flags: ComponentFileFlags,
|
|
92
|
+
export declare function openComponentRegistry(project: UiProject, flags: ComponentFileFlags, options?: {
|
|
93
|
+
only?: string;
|
|
94
|
+
packLocal?: boolean;
|
|
95
|
+
}): Promise<SourceRegistry<ComponentMeta>>;
|
|
87
96
|
/**
|
|
88
97
|
* @brief What the core source commands need to know about components in one project.
|
|
89
98
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/cli/adapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAEtG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAGlF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/cli/adapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAEtG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAGlF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAI1E;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,kBAAkB,CAAC,EAAE,OAAO,kBAAkB,CAAC;IAC/C,QAAQ,CAAC,EAAY,YAAY,CAAC;CACnC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAO,SAAS,CAAC;IACvB,MAAM,EAAO,cAAc,CAAC;IAC5B,QAAQ,EAAK,YAAY,CAAC;CAC3B;AAED,+HAA+H;AAC/H,eAAO,MAAM,UAAU,sBAAsB,CAAC;AAE9C,6DAA6D;AAC7D,eAAO,MAAM,UAAU,EAAE,qBAAqB,CAAC,aAAa,CAI3D,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAExH;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,CAc9E;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,SAAS,GAAG,gBAAgB,EAAE,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,SAAS,GAAG,iBAAiB,CAEzE;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,kBAAkB,CAKnH;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GACnD,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAmBxC;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAEvF"}
|
package/dist/cli/adapter.js
CHANGED
|
@@ -9,9 +9,12 @@ import { SHADCN_SOURCE, uiManifestPath } from "../registry/manifest";
|
|
|
9
9
|
import { readComponentSource } from "../registry/readSource";
|
|
10
10
|
import { ComponentMetaSchema } from "../registry/types";
|
|
11
11
|
import { BUILTIN_SOURCES } from "../sources/builtins";
|
|
12
|
+
import { packLocalSources } from "./localSources";
|
|
13
|
+
/** How the README runs the installer: the project's copy when installed, never a package that merely shares the bin's name. */
|
|
14
|
+
export const UI_COMMAND = "bunx @g3nomaly/ui";
|
|
12
15
|
/** What the core commands print and check for components. */
|
|
13
16
|
export const UI_CONTEXT = {
|
|
14
|
-
|
|
17
|
+
command: UI_COMMAND,
|
|
15
18
|
noun: "component",
|
|
16
19
|
entrySchema: ComponentMetaSchema,
|
|
17
20
|
};
|
|
@@ -35,7 +38,7 @@ export function uiInstallContext(fetchedByKey) {
|
|
|
35
38
|
export async function openUiProject(deps = {}) {
|
|
36
39
|
const projectRoot = (deps.resolveProjectRoot ?? resolveProjectRoot)();
|
|
37
40
|
if (projectRoot === null) {
|
|
38
|
-
console.error(lineError(
|
|
41
|
+
console.error(lineError(`No g3n project found: run \`${UI_COMMAND} init\` inside a git repository.`));
|
|
39
42
|
process.exit(1);
|
|
40
43
|
}
|
|
41
44
|
const config = await loadConfig(projectRoot);
|
|
@@ -83,16 +86,22 @@ export function fileFlags(project, options = {}) {
|
|
|
83
86
|
* `ui.settings.registeredPackages`, and prints what could not be read;
|
|
84
87
|
* the caller disposes the result.
|
|
85
88
|
*
|
|
89
|
+
* With `packLocal`, an npm source the app installs from a folder on disk is first installed as a
|
|
90
|
+
* packed copy, when its components keep files in the package (see `packLocalSources`).
|
|
91
|
+
*
|
|
86
92
|
* @param project - The opened project.
|
|
87
93
|
* @param flags - Which optional file kinds to read.
|
|
88
|
-
* @param
|
|
94
|
+
* @param options - `only`: source name to read alone, exiting when no such source is registered.
|
|
95
|
+
* `packLocal`: install or refresh packed copies of local sources first; for commands that install.
|
|
89
96
|
* @returns The components per source; dispose it once read.
|
|
90
97
|
*/
|
|
91
|
-
export async function openComponentRegistry(project, flags,
|
|
98
|
+
export async function openComponentRegistry(project, flags, options = {}) {
|
|
92
99
|
const packages = project.config.ui.settings.registeredPackages;
|
|
93
100
|
const shadcnOn = packages.includes(SHADCN_SOURCE);
|
|
94
|
-
const named = narrowSources([...uiSources(project), ...(shadcnOn ? [{ name: SHADCN_SOURCE }] : [])], only,
|
|
101
|
+
const named = narrowSources([...uiSources(project), ...(shadcnOn ? [{ name: SHADCN_SOURCE }] : [])], options.only, UI_COMMAND).map((s) => s.name);
|
|
95
102
|
const sources = uiSources(project).filter((s) => named.includes(s.name));
|
|
103
|
+
if (options.packLocal === true)
|
|
104
|
+
await packLocalSources(project.projectRoot, sources);
|
|
96
105
|
const registry = await loadSourceRegistry(sources, project.projectRoot, readComponentSource(flags));
|
|
97
106
|
if (shadcnOn && named.includes(SHADCN_SOURCE)) {
|
|
98
107
|
const shadcn = await readShadcnEntries();
|
package/dist/cli/adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/cli/adapter.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE5F,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEnI,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAE1F,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/cli/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/commands/add.js
CHANGED
|
@@ -16,7 +16,7 @@ import { afterComponentInstall } from "../afterInstall";
|
|
|
16
16
|
*/
|
|
17
17
|
export async function addCommand(names, options = {}, deps = {}) {
|
|
18
18
|
const project = await openUiProject(deps);
|
|
19
|
-
const registry = await openComponentRegistry(project, fileFlags(project, options));
|
|
19
|
+
const registry = await openComponentRegistry(project, fileFlags(project, options), { packLocal: true });
|
|
20
20
|
const fetchedByKey = new Map();
|
|
21
21
|
try {
|
|
22
22
|
const check = afterComponentInstall(project, fetchedByKey, { install: options.install === true, includeUnsafe: options.includeUnsafe === true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAiBxD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAe,EAAE,OAAO,GAAe,EAAE,EAAE,IAAI,GAAgB,EAAE;IAChG,MAAM,OAAO,GAAI,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAiBxD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAe,EAAE,OAAO,GAAe,EAAE,EAAE,IAAI,GAAgB,EAAE;IAChG,MAAM,OAAO,GAAI,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxG,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkC,CAAC;IAC/D,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,qBAAqB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC,CAAC;QACjJ,MAAM,cAAc,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1G,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;AACH,CAAC"}
|
package/dist/cli/commands/ls.js
CHANGED
|
@@ -14,7 +14,7 @@ export async function lsCommand(options = {}, deps = {}) {
|
|
|
14
14
|
lsEntries(installed, options);
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
17
|
-
const registry = await openComponentRegistry(project, fileFlags(project), options.source);
|
|
17
|
+
const registry = await openComponentRegistry(project, fileFlags(project), { only: options.source });
|
|
18
18
|
try {
|
|
19
19
|
lsSourceRegistry(registry, uiSources(project), installed, options);
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../../src/cli/commands/ls.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAc7G;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAO,GAAc,EAAE,EAAE,IAAI,GAAgB,EAAE;IAC7E,MAAM,OAAO,GAAK,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE/C,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC/B,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../../src/cli/commands/ls.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAc7G;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAO,GAAc,EAAE,EAAE,IAAI,GAAgB,EAAE;IAC7E,MAAM,OAAO,GAAK,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE/C,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC/B,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACpG,IAAI,CAAC;QACH,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;AACH,CAAC"}
|
|
@@ -4,10 +4,12 @@ import type { ProjectDeps } from "../adapter";
|
|
|
4
4
|
*
|
|
5
5
|
* @property name - Name to register under; derived from the source when absent.
|
|
6
6
|
* @property ref - Branch or tag a git source is pinned to.
|
|
7
|
+
* @property force - Point a name that is already registered at this source.
|
|
7
8
|
*/
|
|
8
9
|
export interface SourceAddOptions {
|
|
9
10
|
name?: string;
|
|
10
11
|
ref?: string;
|
|
12
|
+
force?: boolean;
|
|
11
13
|
}
|
|
12
14
|
/**
|
|
13
15
|
* @brief Registers a git repository, npm package or local folder holding a built
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/source.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C
|
|
1
|
+
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/source.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAG,MAAM,CAAC;IACf,GAAG,CAAC,EAAI,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAqBD;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ3H;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7G;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhI"}
|
|
@@ -36,7 +36,7 @@ export async function sourceAddCommand(input, options = {}, deps = {}) {
|
|
|
36
36
|
const project = await openUiProject(deps);
|
|
37
37
|
const pkg = undeclaredNpmPackage(project.projectRoot, input);
|
|
38
38
|
if (pkg !== null) {
|
|
39
|
-
console.error(lineError(`${c.key(pkg)} is not in package.json. Add it with ${c.cmd(`bun add
|
|
39
|
+
console.error(lineError(`${c.key(pkg)} is not in package.json. Add it with ${c.cmd(`bun add ${pkg}`)} first, then register it.`));
|
|
40
40
|
process.exit(1);
|
|
41
41
|
}
|
|
42
42
|
await addSourceEntries([project.target], input, options, uiSourceContext(project));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../../src/cli/commands/source.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,gBAAgB,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACpG,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../../src/cli/commands/source.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,gBAAgB,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACpG,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAgB5D;;;;;;;GAOG;AACH,SAAS,oBAAoB,CAAC,WAAmB,EAAE,KAAa;IAC9D,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACH,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,wBAAwB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACjG,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAa,EAAE,OAAO,GAAqB,EAAE,EAAE,IAAI,GAAgB,EAAE;IAC1G,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAO,oBAAoB,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACjE,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC,2BAA2B,CAAC,CAAC,CAAC;QAClI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,gBAAgB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AACrF,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAO,GAAuB,EAAE,EAAE,IAAI,GAAgB,EAAE;IAC5F,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1C,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAY,EAAE,OAAO,GAAwB,EAAE,EAAE,IAAI,GAAgB,EAAE;IAC/G,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1C,mBAAmB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AACjF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sourceInit.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sourceInit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sourceInit.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sourceInit.ts"],"names":[],"mappings":"AAuCA;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAY,GAAG,IAAI,CAuCzD"}
|
|
@@ -4,6 +4,7 @@ import path from "node:path";
|
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
import { c, lineError, lineSuccess } from "@g3nomaly/core/cli";
|
|
6
6
|
import { findPackageRoot, readPackageMeta } from "@g3nomaly/core/utils";
|
|
7
|
+
import { UI_COMMAND } from "../adapter";
|
|
7
8
|
const TEMPLATE_DIR = "template";
|
|
8
9
|
const TemplatePackageSchema = z.looseObject({
|
|
9
10
|
name: z.string(),
|
|
@@ -68,8 +69,8 @@ export function sourceInitCommand(dir = ".") {
|
|
|
68
69
|
"",
|
|
69
70
|
"Next steps:",
|
|
70
71
|
` ${c.cmd("bun install && bun run build")} in the source`,
|
|
71
|
-
` ${c.cmd(`bun add
|
|
72
|
-
` ${c.cmd(
|
|
72
|
+
` ${c.cmd(`bun add ${spec}`)} in an app, or add the source to its workspace`,
|
|
73
|
+
` ${c.cmd(`${UI_COMMAND} source add npm:${name}`)} in an app`,
|
|
73
74
|
"",
|
|
74
75
|
`Start in ${c.file("src/components/example/example.meta.ts")}: its comments explain each part.`,
|
|
75
76
|
].join("\n"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sourceInit.js","sourceRoot":"","sources":["../../../src/cli/commands/sourceInit.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"sourceInit.js","sourceRoot":"","sources":["../../../src/cli/commands/sourceInit.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,6 @@ export async function updateCommand(names, options = {}, deps = {}) {
|
|
|
17
17
|
const project = await openUiProject(deps);
|
|
18
18
|
const fetchedByKey = new Map();
|
|
19
19
|
const check = afterComponentInstall(project, fetchedByKey, { install: options.install === true, includeUnsafe: false });
|
|
20
|
-
await updateFromSources([project.target], names, () => openComponentRegistry(project, fileFlags(project)), options, uiInstallContext(fetchedByKey), check);
|
|
20
|
+
await updateFromSources([project.target], names, () => openComponentRegistry(project, fileFlags(project), { packLocal: options.dryRun !== true }), options, uiInstallContext(fetchedByKey), check);
|
|
21
21
|
}
|
|
22
22
|
//# sourceMappingURL=update.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGvD,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAWxD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAe,EAAE,OAAO,GAAkB,EAAE,EAAE,IAAI,GAAgB,EAAE;IACtG,MAAM,OAAO,GAAQ,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkC,CAAC;IAC/D,MAAM,KAAK,GAAU,qBAAqB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/H,MAAM,iBAAiB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGvD,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAWxD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAe,EAAE,OAAO,GAAkB,EAAE,EAAE,IAAI,GAAgB,EAAE;IACtG,MAAM,OAAO,GAAQ,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkC,CAAC;IAC/D,MAAM,KAAK,GAAU,qBAAqB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/H,MAAM,iBAAiB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC;AACrM,CAAC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -35,8 +35,9 @@ source
|
|
|
35
35
|
.description("Register a git repository, an npm package listed in package.json, or a local folder holding a built dist/components.json")
|
|
36
36
|
.option("--name <name>", "Name to register it under (default: derived from the source)")
|
|
37
37
|
.option("--ref <ref>", "Branch or tag to pin a git source to (default: its default branch)")
|
|
38
|
+
.option("-f, --force", "Point a name that is already registered at this source")
|
|
38
39
|
.action(async (input, opts) => {
|
|
39
|
-
await sourceAddCommand(input, { name: opts.name, ref: opts.ref });
|
|
40
|
+
await sourceAddCommand(input, { name: opts.name, ref: opts.ref, force: opts.force });
|
|
40
41
|
});
|
|
41
42
|
source
|
|
42
43
|
.command("ls")
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,+BAA+B;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAU,iBAAiB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAW,gBAAgB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAQ,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAQ,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAY,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KAC1B,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,8DAA8D,CAAC,CAAC;AAE/E,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,aAAa,EAAE,6CAA6C,CAAC;KACpE,MAAM,CAAC,sBAAsB,EAAE,yDAAyD,CAAC;KACzF,MAAM,CAAC,KAAK,EAAE,IAA8C,EAAE,EAAE;IAC/D,MAAM,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC;AAEL,MAAM,MAAM,GAAG,OAAO;KACnB,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,yEAAyE,CAAC,CAAC;AAE1F,MAAM;KACH,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,6FAA6F,CAAC;KAC1G,MAAM,CAAC,CAAC,GAAuB,EAAE,EAAE;IAClC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC;AAEL,MAAM;KACH,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,0HAA0H,CAAC;KACvI,MAAM,CAAC,eAAe,EAAE,8DAA8D,CAAC;KACvF,MAAM,CAAC,aAAa,EAAE,oEAAoE,CAAC;KAC3F,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { RegisteredSource } from "@g3nomaly/core/sources";
|
|
2
|
+
/**
|
|
3
|
+
* @brief Installs a packed copy of every npm source the app installs from a folder on disk and whose
|
|
4
|
+
* components keep files in the package, such as stores, or refreshes the copy. The app imports those
|
|
5
|
+
* files, and through a link to the folder they would load the folder's own `node_modules`, such as a
|
|
6
|
+
* second React. Runs before the sources are read, so `update` reads the fresh copy.
|
|
7
|
+
*
|
|
8
|
+
* @param projectRoot - Absolute project root holding the app's `package.json`.
|
|
9
|
+
* @param sources - Sources about to be read.
|
|
10
|
+
*/
|
|
11
|
+
export declare function packLocalSources(projectRoot: string, sources: readonly RegisteredSource[]): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=localSources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localSources.d.ts","sourceRoot":"","sources":["../../src/cli/localSources.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAkB/D;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB/G"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// packages/ui/src/cli/localSources.ts
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { c, lineError, lineInfo } from "@g3nomaly/core/cli";
|
|
4
|
+
import { installPackedCopy, localPackage } from "../packages/localPack";
|
|
5
|
+
import { readComponentsJson } from "../registry/componentsJson";
|
|
6
|
+
/**
|
|
7
|
+
* @brief Whether a source folder's built components keep any file in the package.
|
|
8
|
+
*
|
|
9
|
+
* @param folder - Absolute folder holding `dist/components.json`.
|
|
10
|
+
* @returns `false` as well when the folder is not built; reading the source reports that.
|
|
11
|
+
*/
|
|
12
|
+
function keepsPackageFiles(folder) {
|
|
13
|
+
try {
|
|
14
|
+
return Object.values(readComponentsJson(folder)).some((meta) => meta.files.some((file) => file.install === "package"));
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* @brief Installs a packed copy of every npm source the app installs from a folder on disk and whose
|
|
22
|
+
* components keep files in the package, such as stores, or refreshes the copy. The app imports those
|
|
23
|
+
* files, and through a link to the folder they would load the folder's own `node_modules`, such as a
|
|
24
|
+
* second React. Runs before the sources are read, so `update` reads the fresh copy.
|
|
25
|
+
*
|
|
26
|
+
* @param projectRoot - Absolute project root holding the app's `package.json`.
|
|
27
|
+
* @param sources - Sources about to be read.
|
|
28
|
+
*/
|
|
29
|
+
export async function packLocalSources(projectRoot, sources) {
|
|
30
|
+
for (const source of sources) {
|
|
31
|
+
if (source.spec.kind !== "npm")
|
|
32
|
+
continue;
|
|
33
|
+
const pkg = source.spec.package;
|
|
34
|
+
const local = localPackage(projectRoot, pkg);
|
|
35
|
+
if (local === null || !keepsPackageFiles(local.folder))
|
|
36
|
+
continue;
|
|
37
|
+
const result = await installPackedCopy(projectRoot, pkg, local);
|
|
38
|
+
if (result.error !== undefined) {
|
|
39
|
+
console.error(lineError(`${c.key(pkg)}: ${result.error}`));
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (result.installed === undefined)
|
|
43
|
+
continue;
|
|
44
|
+
const folder = c.dir(path.relative(projectRoot, local.folder) || ".");
|
|
45
|
+
const verb = local.tarball === undefined ? "Installed a packed copy of" : "Refreshed the packed copy of";
|
|
46
|
+
console.log(lineInfo(`${verb} ${c.key(pkg)} from ${folder} (${c.key(result.installed)}), so the files it keeps in the package load this app's packages`));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=localSources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localSources.js","sourceRoot":"","sources":["../../src/cli/localSources.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,MAAc;IACvC,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC;IACzH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,WAAmB,EAAE,OAAoC;IAC9F,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK;YAAE,SAAS;QACzC,MAAM,GAAG,GAAK,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QAClC,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC7C,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,SAAS;QAEjE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,WAAW,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAChE,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC3D,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;YAAE,SAAS;QAC7C,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QACtE,MAAM,IAAI,GAAK,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,8BAA8B,CAAC;QAC3G,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,MAAM,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,kEAAkE,CAAC,CAAC,CAAC;IAC5J,CAAC;AACH,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ComponentMeta } from "../registry/types";
|
|
2
2
|
/**
|
|
3
3
|
* @brief Checks the npm packages of components against the app's `package.json`, and reports or adds
|
|
4
|
-
* what is missing or out of range.
|
|
4
|
+
* what is missing or out of range. A runtime package declared in `devDependencies` only is reported, never moved.
|
|
5
5
|
*
|
|
6
6
|
* @param projectRoot - Absolute project root holding the app's `package.json`.
|
|
7
7
|
* @param components - Components by key just installed or updated.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npmDependencies.d.ts","sourceRoot":"","sources":["../../src/cli/npmDependencies.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"npmDependencies.d.ts","sourceRoot":"","sources":["../../src/cli/npmDependencies.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAmDvD;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ3I"}
|
|
@@ -3,13 +3,17 @@ import { c, lineError, lineSuccess, lineWarn } from "@g3nomaly/core/cli";
|
|
|
3
3
|
import { findDependencyProblems } from "../packages/dependencies";
|
|
4
4
|
import { bunAdd } from "../packages/install";
|
|
5
5
|
/**
|
|
6
|
-
* @brief One line naming a package the app lacks or holds at the wrong
|
|
6
|
+
* @brief One line naming a package the app lacks, declares for build time only or holds at the wrong
|
|
7
|
+
* version, and the components needing it.
|
|
7
8
|
*
|
|
8
9
|
* @param problem - The package and the components that list it.
|
|
9
10
|
* @returns The line, e.g. `radix-ui is not in package.json, needed by @shadcn/dialog`.
|
|
10
11
|
*/
|
|
11
12
|
function problemLine(problem) {
|
|
12
13
|
const neededBy = problem.neededBy.map((key) => c.key(key)).join(", ");
|
|
14
|
+
if (problem.devOnly) {
|
|
15
|
+
return lineWarn(`${c.key(problem.dependency.name)} is in devDependencies, but ${neededBy} import${problem.neededBy.length === 1 ? "s" : ""} it at runtime: move it to dependencies in package.json`);
|
|
16
|
+
}
|
|
13
17
|
return problem.installed === undefined
|
|
14
18
|
? lineWarn(`${c.key(problem.dependency.name)} is not in package.json, needed by ${neededBy}`)
|
|
15
19
|
: lineWarn(`${c.key(problem.dependency.name)} ${problem.installed} is installed, ${neededBy} needs ${c.key(problem.dependency.spec)}`);
|
|
@@ -47,7 +51,7 @@ function printInstallHint(problems) {
|
|
|
47
51
|
}
|
|
48
52
|
/**
|
|
49
53
|
* @brief Checks the npm packages of components against the app's `package.json`, and reports or adds
|
|
50
|
-
* what is missing or out of range.
|
|
54
|
+
* what is missing or out of range. A runtime package declared in `devDependencies` only is reported, never moved.
|
|
51
55
|
*
|
|
52
56
|
* @param projectRoot - Absolute project root holding the app's `package.json`.
|
|
53
57
|
* @param components - Components by key just installed or updated.
|
|
@@ -55,13 +59,15 @@ function printInstallHint(problems) {
|
|
|
55
59
|
*/
|
|
56
60
|
export async function reportNpmDependencies(projectRoot, components, install) {
|
|
57
61
|
const problems = findDependencyProblems(projectRoot, components);
|
|
58
|
-
if (problems.length === 0)
|
|
59
|
-
return;
|
|
60
62
|
for (const problem of problems)
|
|
61
63
|
console.log(problemLine(problem));
|
|
64
|
+
// A misplaced package keeps the range the app gave it, such as `workspace:*`, so it is moved by hand, never re-added.
|
|
65
|
+
const toAdd = problems.filter((problem) => !problem.devOnly);
|
|
66
|
+
if (toAdd.length === 0)
|
|
67
|
+
return;
|
|
62
68
|
if (install)
|
|
63
|
-
await installMissing(projectRoot,
|
|
69
|
+
await installMissing(projectRoot, toAdd);
|
|
64
70
|
else
|
|
65
|
-
printInstallHint(
|
|
71
|
+
printInstallHint(toAdd);
|
|
66
72
|
}
|
|
67
73
|
//# sourceMappingURL=npmDependencies.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npmDependencies.js","sourceRoot":"","sources":["../../src/cli/npmDependencies.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C
|
|
1
|
+
{"version":3,"file":"npmDependencies.js","sourceRoot":"","sources":["../../src/cli/npmDependencies.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import type { ComponentMeta } from "../registry/types";
|
|
|
2
2
|
/**
|
|
3
3
|
* @brief Adds the theme tokens components need to the app's global stylesheet. A token the stylesheet
|
|
4
4
|
* already defines keeps its value. Without a stylesheet set in `ui.settings.cssFile`, prints the tokens
|
|
5
|
-
* to add by hand.
|
|
5
|
+
* to add by hand: only those the detected stylesheet lacks, so a run after they were added prints nothing.
|
|
6
6
|
*
|
|
7
7
|
* @param projectRoot - Absolute project root.
|
|
8
8
|
* @param cssFile - The stylesheet relative to the project root, e.g. `src/index.css`; `undefined` when not set.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"themeTokens.d.ts","sourceRoot":"","sources":["../../src/cli/themeTokens.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"themeTokens.d.ts","sourceRoot":"","sources":["../../src/cli/themeTokens.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAqBvD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,IAAI,CA0BlI"}
|
package/dist/cli/themeTokens.js
CHANGED
|
@@ -3,25 +3,26 @@ import fs from "node:fs";
|
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { c, lineError, lineSuccess, lineWarn } from "@g3nomaly/core/cli";
|
|
5
5
|
import { addCssVars, mergeCssVars } from "../theme/cssVars";
|
|
6
|
+
import { detectCssFile } from "../theme/detectCssFile";
|
|
7
|
+
import { UI_COMMAND } from "./adapter";
|
|
6
8
|
/**
|
|
7
|
-
* @brief
|
|
9
|
+
* @brief Tokens as stylesheet blocks, for pasting by hand.
|
|
8
10
|
*
|
|
9
|
-
* @param
|
|
10
|
-
* @returns One line per block and token.
|
|
11
|
+
* @param tokens - Tokens to print, each with its block.
|
|
12
|
+
* @returns One line per block and token, blocks in the order they first appear.
|
|
11
13
|
*/
|
|
12
|
-
function blockLines(
|
|
13
|
-
const blocks = [
|
|
14
|
-
return blocks.flatMap((
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
});
|
|
14
|
+
function blockLines(tokens) {
|
|
15
|
+
const blocks = [...new Set(tokens.map((token) => token.block))];
|
|
16
|
+
return blocks.flatMap((block) => [
|
|
17
|
+
` ${block} {`,
|
|
18
|
+
...tokens.filter((token) => token.block === block).map((token) => ` ${token.name}: ${token.value};`),
|
|
19
|
+
" }",
|
|
20
|
+
]);
|
|
20
21
|
}
|
|
21
22
|
/**
|
|
22
23
|
* @brief Adds the theme tokens components need to the app's global stylesheet. A token the stylesheet
|
|
23
24
|
* already defines keeps its value. Without a stylesheet set in `ui.settings.cssFile`, prints the tokens
|
|
24
|
-
* to add by hand.
|
|
25
|
+
* to add by hand: only those the detected stylesheet lacks, so a run after they were added prints nothing.
|
|
25
26
|
*
|
|
26
27
|
* @param projectRoot - Absolute project root.
|
|
27
28
|
* @param cssFile - The stylesheet relative to the project root, e.g. `src/index.css`; `undefined` when not set.
|
|
@@ -33,8 +34,14 @@ export function applyThemeTokens(projectRoot, cssFile, components) {
|
|
|
33
34
|
return;
|
|
34
35
|
const vars = mergeCssVars(withTokens);
|
|
35
36
|
if (cssFile === undefined) {
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
const detected = detectCssFile(projectRoot);
|
|
38
|
+
const css = detected === undefined ? "" : fs.readFileSync(path.join(projectRoot, detected), "utf8");
|
|
39
|
+
const missing = addCssVars(css, vars).added;
|
|
40
|
+
if (missing.length === 0)
|
|
41
|
+
return;
|
|
42
|
+
const from = detected === undefined ? "your global stylesheet" : c.file(detected);
|
|
43
|
+
console.log(lineWarn(`These components use theme tokens that ${from} lacks. Add them by hand, or set the stylesheet with ${c.cmd(`${UI_COMMAND} init`)} so they are added for you:`));
|
|
44
|
+
for (const line of blockLines(missing))
|
|
38
45
|
console.log(line);
|
|
39
46
|
return;
|
|
40
47
|
}
|
|
@@ -47,6 +54,7 @@ export function applyThemeTokens(projectRoot, cssFile, components) {
|
|
|
47
54
|
if (merged.added.length === 0)
|
|
48
55
|
return;
|
|
49
56
|
fs.writeFileSync(file, merged.css);
|
|
50
|
-
|
|
57
|
+
const names = merged.added.map((token) => `${token.block} ${token.name}`);
|
|
58
|
+
console.log(lineSuccess(`Added ${names.length} theme token${names.length === 1 ? "" : "s"} to ${c.file(cssFile)}: ${names.join(", ")}`));
|
|
51
59
|
}
|
|
52
60
|
//# sourceMappingURL=themeTokens.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"themeTokens.js","sourceRoot":"","sources":["../../src/cli/themeTokens.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE5D;;;;;GAKG;AACH,SAAS,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"themeTokens.js","sourceRoot":"","sources":["../../src/cli/themeTokens.ts"],"names":[],"mappings":"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"}
|