@weme-ui/weme-ui 0.1.4 → 0.2.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/CHANGELOG.md +7 -0
- package/README.md +19 -11
- package/dist/add-DESSspHh.js +56 -0
- package/dist/add-DESSspHh.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +58 -0
- package/dist/index.js.map +1 -0
- package/dist/init-DZjeMuf3.js +219 -0
- package/dist/init-DZjeMuf3.js.map +1 -0
- package/dist/project-BZkWl9YJ.js +685 -0
- package/dist/project-BZkWl9YJ.js.map +1 -0
- package/package.json +72 -48
- package/LICENSE +0 -21
- package/dist/add-7tfye_HI.mjs +0 -53
- package/dist/add-7tfye_HI.mjs.map +0 -1
- package/dist/build-HG3tc2-q.mjs +0 -23
- package/dist/build-HG3tc2-q.mjs.map +0 -1
- package/dist/index.d.mts +0 -1
- package/dist/index.mjs +0 -31
- package/dist/index.mjs.map +0 -1
- package/dist/info-BxG4zcjx.mjs +0 -41
- package/dist/info-BxG4zcjx.mjs.map +0 -1
- package/dist/init-CDwuXmS4.mjs +0 -64
- package/dist/init-CDwuXmS4.mjs.map +0 -1
- package/dist/manifest-QuvehRif.mjs +0 -76
- package/dist/manifest-QuvehRif.mjs.map +0 -1
- package/dist/package-BnOb5LKd.mjs +0 -85
- package/dist/package-BnOb5LKd.mjs.map +0 -1
- package/dist/project-D1-8Zva8.mjs +0 -361
- package/dist/project-D1-8Zva8.mjs.map +0 -1
- package/dist/project-D1CJVddG.mjs +0 -58
- package/dist/project-D1CJVddG.mjs.map +0 -1
- package/dist/project-Du47BQ8B.mjs +0 -148
- package/dist/project-Du47BQ8B.mjs.map +0 -1
- package/dist/registry-Be2pmtXA.mjs +0 -341
- package/dist/registry-Be2pmtXA.mjs.map +0 -1
- package/dist/registry-CUbTtvmU.mjs +0 -147
- package/dist/registry-CUbTtvmU.mjs.map +0 -1
- package/dist/registry-DWimeo5w.mjs +0 -82
- package/dist/registry-DWimeo5w.mjs.map +0 -1
- package/dist/registry-Dj8XmKtl.mjs +0 -8
- package/dist/registry-Dj8XmKtl.mjs.map +0 -1
- package/dist/registry-item-Cz4VyV8f.mjs +0 -143
- package/dist/registry-item-Cz4VyV8f.mjs.map +0 -1
- package/dist/verify-DAzADRvE.mjs +0 -78
- package/dist/verify-DAzADRvE.mjs.map +0 -1
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { c as merge, d as Ok, l as runStep, u as Err } from "./registry-Be2pmtXA.mjs";
|
|
2
|
-
import chalk from "chalk";
|
|
3
|
-
import fs from "node:fs";
|
|
4
|
-
import path from "pathe";
|
|
5
|
-
import { addDependency, runScript } from "nypm";
|
|
6
|
-
|
|
7
|
-
//#region src/utils/schema/package.ts
|
|
8
|
-
/**
|
|
9
|
-
* Load `package.json` from current working directory.
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```ts
|
|
13
|
-
* const pkg = loadPackageJson(process.cwd())
|
|
14
|
-
*
|
|
15
|
-
* if (pkg.isErr()) {
|
|
16
|
-
* console.error(pkg.unwrapErr())
|
|
17
|
-
* return
|
|
18
|
-
* }
|
|
19
|
-
*
|
|
20
|
-
* console.log(pkg.unwrap().name)
|
|
21
|
-
* ```
|
|
22
|
-
*
|
|
23
|
-
* @param cwd - Current working directory
|
|
24
|
-
* @return {Result<PackageJson, string>}
|
|
25
|
-
*/
|
|
26
|
-
function loadPackageJson(cwd) {
|
|
27
|
-
if (!fs.existsSync(path.join(cwd, "package.json"))) return Err("Could not find `package.json`!");
|
|
28
|
-
try {
|
|
29
|
-
const content = fs.readFileSync(path.join(cwd, "package.json"), "utf8");
|
|
30
|
-
if (!content) return Err("`package.json` is empty!");
|
|
31
|
-
return Ok(JSON.parse(content));
|
|
32
|
-
} catch (e) {
|
|
33
|
-
return Err(e.message);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Install dependencies to current working directory.
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
* ```ts
|
|
41
|
-
* await installDependencies(['@vueuse/core', 'nuxt'], { cwd: process.cwd() })
|
|
42
|
-
* ```
|
|
43
|
-
*
|
|
44
|
-
* @param packages - Packages to install
|
|
45
|
-
* @param options - Options for `nypm`
|
|
46
|
-
*/
|
|
47
|
-
async function installDependencies(packages, options = {}) {
|
|
48
|
-
await runStep("Installing dependencies...", async (spinner) => {
|
|
49
|
-
const dependencies = Array.isArray(packages) ? packages : packages?.dependencies || [];
|
|
50
|
-
const devDependencies = Array.isArray(packages) ? [] : packages?.devDependencies || [];
|
|
51
|
-
await addDependency(merge(...dependencies), {
|
|
52
|
-
...options,
|
|
53
|
-
silent: true
|
|
54
|
-
});
|
|
55
|
-
await addDependency(merge(...devDependencies), {
|
|
56
|
-
...options,
|
|
57
|
-
dev: true,
|
|
58
|
-
silent: true
|
|
59
|
-
});
|
|
60
|
-
spinner.stop("Dependencies installed.");
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Run `dev:prepare` script in current working directory.
|
|
65
|
-
*
|
|
66
|
-
* @example
|
|
67
|
-
* ```ts
|
|
68
|
-
* await runDevPrepare(process.cwd())
|
|
69
|
-
* ```
|
|
70
|
-
*
|
|
71
|
-
* @param cwd - Current working directory
|
|
72
|
-
*/
|
|
73
|
-
async function runDevPrepare(cwd) {
|
|
74
|
-
await runStep(`Running ${chalk.cyan("dev:prepare")}...`, async (spinner) => {
|
|
75
|
-
await runScript("dev:prepare", {
|
|
76
|
-
cwd,
|
|
77
|
-
silent: true
|
|
78
|
-
});
|
|
79
|
-
spinner.stop(`${chalk.cyan("dev:prepare")} done.`);
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
//#endregion
|
|
84
|
-
export { loadPackageJson as n, runDevPrepare as r, installDependencies as t };
|
|
85
|
-
//# sourceMappingURL=package-BnOb5LKd.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"package-BnOb5LKd.mjs","names":["e: any"],"sources":["../src/utils/schema/package.ts"],"sourcesContent":["import type { OperationOptions } from 'nypm'\nimport type { PackageJson } from 'pkg-types'\nimport type { Result } from '../result'\nimport fs from 'node:fs'\nimport chalk from 'chalk'\nimport { addDependency, runScript } from 'nypm'\nimport path from 'pathe'\nimport { Err, Ok } from '../result'\nimport { merge, runStep } from '../utilities'\n\n/**\n * Load `package.json` from current working directory.\n *\n * @example\n * ```ts\n * const pkg = loadPackageJson(process.cwd())\n *\n * if (pkg.isErr()) {\n * console.error(pkg.unwrapErr())\n * return\n * }\n *\n * console.log(pkg.unwrap().name)\n * ```\n *\n * @param cwd - Current working directory\n * @return {Result<PackageJson, string>}\n */\nexport function loadPackageJson(cwd: string): Result<PackageJson, string> {\n if (!fs.existsSync(path.join(cwd, 'package.json')))\n return Err('Could not find `package.json`!')\n\n try {\n const content = fs.readFileSync(path.join(cwd, 'package.json'), 'utf8')\n\n if (!content)\n return Err('`package.json` is empty!')\n\n return Ok<PackageJson>(JSON.parse(content))\n }\n catch (e: any) {\n return Err(e.message)\n }\n}\n\n/**\n * Install dependencies to current working directory.\n *\n * @example\n * ```ts\n * await installDependencies(['@vueuse/core', 'nuxt'], { cwd: process.cwd() })\n * ```\n *\n * @param packages - Packages to install\n * @param options - Options for `nypm`\n */\nexport async function installDependencies(\n packages?: string[] | {\n dependencies?: string[]\n devDependencies?: string[]\n },\n options: OperationOptions = {},\n) {\n await runStep('Installing dependencies...', async (spinner) => {\n const dependencies = Array.isArray(packages)\n ? packages\n : packages?.dependencies || []\n\n const devDependencies = Array.isArray(packages)\n ? []\n : packages?.devDependencies || []\n\n await addDependency(merge(...dependencies), { ...options, silent: true })\n await addDependency(merge(...devDependencies), { ...options, dev: true, silent: true })\n\n spinner.stop('Dependencies installed.')\n })\n}\n\n/**\n * Run `dev:prepare` script in current working directory.\n *\n * @example\n * ```ts\n * await runDevPrepare(process.cwd())\n * ```\n *\n * @param cwd - Current working directory\n */\nexport async function runDevPrepare(cwd: string) {\n await runStep(`Running ${chalk.cyan('dev:prepare')}...`, async (spinner) => {\n await runScript('dev:prepare', {\n cwd,\n silent: true,\n })\n\n spinner.stop(`${chalk.cyan('dev:prepare')} done.`)\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,SAAgB,gBAAgB,KAA0C;AACxE,KAAI,CAAC,GAAG,WAAW,KAAK,KAAK,KAAK,eAAe,CAAC,CAChD,QAAO,IAAI,iCAAiC;AAE9C,KAAI;EACF,MAAM,UAAU,GAAG,aAAa,KAAK,KAAK,KAAK,eAAe,EAAE,OAAO;AAEvE,MAAI,CAAC,QACH,QAAO,IAAI,2BAA2B;AAExC,SAAO,GAAgB,KAAK,MAAM,QAAQ,CAAC;UAEtCA,GAAQ;AACb,SAAO,IAAI,EAAE,QAAQ;;;;;;;;;;;;;;AAezB,eAAsB,oBACpB,UAIA,UAA4B,EAAE,EAC9B;AACA,OAAM,QAAQ,8BAA8B,OAAO,YAAY;EAC7D,MAAM,eAAe,MAAM,QAAQ,SAAS,GACxC,WACA,UAAU,gBAAgB,EAAE;EAEhC,MAAM,kBAAkB,MAAM,QAAQ,SAAS,GAC3C,EAAE,GACF,UAAU,mBAAmB,EAAE;AAEnC,QAAM,cAAc,MAAM,GAAG,aAAa,EAAE;GAAE,GAAG;GAAS,QAAQ;GAAM,CAAC;AACzE,QAAM,cAAc,MAAM,GAAG,gBAAgB,EAAE;GAAE,GAAG;GAAS,KAAK;GAAM,QAAQ;GAAM,CAAC;AAEvF,UAAQ,KAAK,0BAA0B;GACvC;;;;;;;;;;;;AAaJ,eAAsB,cAAc,KAAa;AAC/C,OAAM,QAAQ,WAAW,MAAM,KAAK,cAAc,CAAC,MAAM,OAAO,YAAY;AAC1E,QAAM,UAAU,eAAe;GAC7B;GACA,QAAQ;GACT,CAAC;AAEF,UAAQ,KAAK,GAAG,MAAM,KAAK,cAAc,CAAC,QAAQ;GAClD"}
|
|
@@ -1,361 +0,0 @@
|
|
|
1
|
-
import { d as Ok, i as fetchRegistryItems, l as runStep, m as getGithubRepoName, n as fetchManifestConfig, p as fetchURL, u as Err } from "./registry-Be2pmtXA.mjs";
|
|
2
|
-
import { n as loadPackageJson, t as installDependencies } from "./package-BnOb5LKd.mjs";
|
|
3
|
-
import * as p from "@clack/prompts";
|
|
4
|
-
import fs from "node:fs";
|
|
5
|
-
import { PROJECT_FILE_NAME, projectPaths, projectSchema } from "@weme-ui/schema";
|
|
6
|
-
import ora from "ora";
|
|
7
|
-
import path from "pathe";
|
|
8
|
-
import { glob } from "tinyglobby";
|
|
9
|
-
|
|
10
|
-
//#region ../../node_modules/.pnpm/defu@6.1.4/node_modules/defu/dist/defu.mjs
|
|
11
|
-
function isPlainObject(value) {
|
|
12
|
-
if (value === null || typeof value !== "object") return false;
|
|
13
|
-
const prototype = Object.getPrototypeOf(value);
|
|
14
|
-
if (prototype !== null && prototype !== Object.prototype && Object.getPrototypeOf(prototype) !== null) return false;
|
|
15
|
-
if (Symbol.iterator in value) return false;
|
|
16
|
-
if (Symbol.toStringTag in value) return Object.prototype.toString.call(value) === "[object Module]";
|
|
17
|
-
return true;
|
|
18
|
-
}
|
|
19
|
-
function _defu(baseObject, defaults, namespace = ".", merger) {
|
|
20
|
-
if (!isPlainObject(defaults)) return _defu(baseObject, {}, namespace, merger);
|
|
21
|
-
const object = Object.assign({}, defaults);
|
|
22
|
-
for (const key in baseObject) {
|
|
23
|
-
if (key === "__proto__" || key === "constructor") continue;
|
|
24
|
-
const value = baseObject[key];
|
|
25
|
-
if (value === null || value === void 0) continue;
|
|
26
|
-
if (merger && merger(object, key, value, namespace)) continue;
|
|
27
|
-
if (Array.isArray(value) && Array.isArray(object[key])) object[key] = [...value, ...object[key]];
|
|
28
|
-
else if (isPlainObject(value) && isPlainObject(object[key])) object[key] = _defu(value, object[key], (namespace ? `${namespace}.` : "") + key.toString(), merger);
|
|
29
|
-
else object[key] = value;
|
|
30
|
-
}
|
|
31
|
-
return object;
|
|
32
|
-
}
|
|
33
|
-
function createDefu(merger) {
|
|
34
|
-
return (...arguments_) => arguments_.reduce((p$1, c) => _defu(p$1, c, "", merger), {});
|
|
35
|
-
}
|
|
36
|
-
const defu = createDefu();
|
|
37
|
-
const defuFn = createDefu((object, key, currentValue) => {
|
|
38
|
-
if (object[key] !== void 0 && typeof currentValue === "function") {
|
|
39
|
-
object[key] = currentValue(object[key]);
|
|
40
|
-
return true;
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
const defuArrayFn = createDefu((object, key, currentValue) => {
|
|
44
|
-
if (Array.isArray(object[key]) && typeof currentValue === "function") {
|
|
45
|
-
object[key] = currentValue(object[key]);
|
|
46
|
-
return true;
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
//#endregion
|
|
51
|
-
//#region src/utils/schema/project.ts
|
|
52
|
-
/**
|
|
53
|
-
* Load `weme.config.json` from current working directory.
|
|
54
|
-
*
|
|
55
|
-
* @example
|
|
56
|
-
* ```ts
|
|
57
|
-
* const config = loadProjectConfig(process.cwd())
|
|
58
|
-
*
|
|
59
|
-
* if (config.isErr()) {
|
|
60
|
-
* console.error(config.unwrapErr())
|
|
61
|
-
* return
|
|
62
|
-
* }
|
|
63
|
-
*
|
|
64
|
-
* console.log(config.unwrap().name)
|
|
65
|
-
* ```
|
|
66
|
-
*
|
|
67
|
-
* @param cwd - Current working directory
|
|
68
|
-
* @return {Result<ProjectSchema, string>}
|
|
69
|
-
*/
|
|
70
|
-
function loadProjectConfig(cwd) {
|
|
71
|
-
const configPath = path.join(cwd, PROJECT_FILE_NAME);
|
|
72
|
-
if (!fs.existsSync(configPath)) return Err("Could not find your project configuration file!");
|
|
73
|
-
try {
|
|
74
|
-
const json = JSON.parse(fs.readFileSync(configPath, "utf8").toString());
|
|
75
|
-
const config = projectSchema.safeParse(json);
|
|
76
|
-
if (!config.success) return Err(config.error.message);
|
|
77
|
-
return Ok(config.data);
|
|
78
|
-
} catch (e) {
|
|
79
|
-
return Err(e.message);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Load project information from current working directory.
|
|
84
|
-
*
|
|
85
|
-
* @example
|
|
86
|
-
* ```ts
|
|
87
|
-
* const info = await loadProjectInfo(process.cwd())
|
|
88
|
-
*
|
|
89
|
-
* if (info.isErr()) {
|
|
90
|
-
* console.error(info.unwrapErr())
|
|
91
|
-
* return
|
|
92
|
-
* }
|
|
93
|
-
*
|
|
94
|
-
* console.log(info.unwrap().name)
|
|
95
|
-
* ```
|
|
96
|
-
*
|
|
97
|
-
* @param cwd - Current working directory
|
|
98
|
-
* @return {Promise<Result<ProjectInfo, string>>}
|
|
99
|
-
*/
|
|
100
|
-
async function loadProjectInfo(cwd) {
|
|
101
|
-
const spinner = ora().start("Fetching project information...");
|
|
102
|
-
try {
|
|
103
|
-
const pkg = loadPackageJson(cwd);
|
|
104
|
-
const config = loadProjectConfig(cwd);
|
|
105
|
-
if (pkg.isErr() || config.isErr()) return Err("Could not find your project configuration file!");
|
|
106
|
-
const repos = config.unwrap().repos || [];
|
|
107
|
-
const paths = resolvePaths(cwd, config.unwrap().paths);
|
|
108
|
-
if (paths.isErr()) return Err(paths.unwrapErr());
|
|
109
|
-
const registries = await Promise.all(repos.map(async (r) => {
|
|
110
|
-
const manifest = await fetchManifestConfig(r.repo);
|
|
111
|
-
if (manifest.isErr()) throw new Error(manifest.unwrapErr());
|
|
112
|
-
const registry = manifest.unwrap().find((m) => m.name === r.registry);
|
|
113
|
-
if (!registry) throw new Error(`${r.registry} not found.`);
|
|
114
|
-
const installed = await glob(`**/*.vue`, {
|
|
115
|
-
cwd: path.join(paths.unwrap().components, r.prefix || "ui"),
|
|
116
|
-
absolute: false,
|
|
117
|
-
onlyFiles: true
|
|
118
|
-
}).then((files) => files.length);
|
|
119
|
-
return {
|
|
120
|
-
name: r.registry,
|
|
121
|
-
repo: r.repo,
|
|
122
|
-
version: registry.version || "0.0.0",
|
|
123
|
-
description: registry.description || "",
|
|
124
|
-
prefix: r.prefix || registry.prefix,
|
|
125
|
-
access: registry.access,
|
|
126
|
-
default: !!r.default,
|
|
127
|
-
available: Object.entries(registry.items).reduce((acc, [, count]) => acc + count, 0),
|
|
128
|
-
installed
|
|
129
|
-
};
|
|
130
|
-
}));
|
|
131
|
-
return Ok({
|
|
132
|
-
name: pkg.unwrap().name || "",
|
|
133
|
-
description: pkg.unwrap().description || "",
|
|
134
|
-
version: pkg.unwrap().version || "0.0.0",
|
|
135
|
-
repos: repos.map((r) => r.repo),
|
|
136
|
-
registries
|
|
137
|
-
});
|
|
138
|
-
} catch (e) {
|
|
139
|
-
spinner.stop();
|
|
140
|
-
return Err(e.message);
|
|
141
|
-
} finally {
|
|
142
|
-
spinner.stop();
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Update `weme.config.json` from current working directory.
|
|
147
|
-
*
|
|
148
|
-
* @example
|
|
149
|
-
* ```ts
|
|
150
|
-
* await updateProjectConfig(process.cwd(), project, {
|
|
151
|
-
* repo: {
|
|
152
|
-
* repo: 'https://github.com/weme-ui/weme-ui',
|
|
153
|
-
* registry: 'weme-ui/std',
|
|
154
|
-
* prefix: 'ui',
|
|
155
|
-
* default: true,
|
|
156
|
-
* },
|
|
157
|
-
* cssVars: {
|
|
158
|
-
* colors: {
|
|
159
|
-
* primary: 'blue',
|
|
160
|
-
* },
|
|
161
|
-
* },
|
|
162
|
-
* })
|
|
163
|
-
* ```
|
|
164
|
-
*
|
|
165
|
-
* @param cwd - Current working directory
|
|
166
|
-
* @param project - Project configuration
|
|
167
|
-
* @param updates - Updates to apply
|
|
168
|
-
* @param updates.repo - Repository configuration to update
|
|
169
|
-
* @param updates.cssVars - CSS variables to update
|
|
170
|
-
*/
|
|
171
|
-
async function updateProjectConfig(cwd, project, updates) {
|
|
172
|
-
await runStep("Updating project configuration...", async (spinner) => {
|
|
173
|
-
if (updates.repo && project.repos.findIndex((r) => r.repo === updates.repo?.repo && r.registry === updates.repo?.registry) === -1) {
|
|
174
|
-
project.repos.push(updates.repo);
|
|
175
|
-
if (updates.repo.default) project.repos.forEach((repo) => {
|
|
176
|
-
repo.default = repo.registry === updates.repo?.registry;
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
if (updates.cssVars) {
|
|
180
|
-
project.unocss = project.unocss || {};
|
|
181
|
-
project.unocss.cssVars = defu(project.unocss.cssVars || {}, updates.cssVars);
|
|
182
|
-
}
|
|
183
|
-
fs.writeFileSync(path.join(cwd, PROJECT_FILE_NAME), `${JSON.stringify(project, null, 2)}\n`, {
|
|
184
|
-
encoding: "utf8",
|
|
185
|
-
flag: "w"
|
|
186
|
-
});
|
|
187
|
-
spinner.stop("Project configuration updated!");
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Parse project paths.
|
|
192
|
-
*
|
|
193
|
-
* @example
|
|
194
|
-
* ```ts
|
|
195
|
-
* const paths = parsePaths(project.paths)
|
|
196
|
-
*
|
|
197
|
-
* if (paths.isErr()) {
|
|
198
|
-
* console.error(paths.unwrapErr())
|
|
199
|
-
* return
|
|
200
|
-
* }
|
|
201
|
-
*
|
|
202
|
-
* console.log(paths.unwrap().components)
|
|
203
|
-
* ```
|
|
204
|
-
*
|
|
205
|
-
* @param paths - Project paths
|
|
206
|
-
* @return {Result<Required<ProjectPaths>, string>}
|
|
207
|
-
*/
|
|
208
|
-
function parsePaths(paths) {
|
|
209
|
-
const result = projectPaths.safeParse(paths);
|
|
210
|
-
if (!result.success) return Err(result.error.message);
|
|
211
|
-
return Ok(result.data);
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* Resolve project paths.
|
|
215
|
-
*
|
|
216
|
-
* @example
|
|
217
|
-
* ```ts
|
|
218
|
-
* const paths = resolvePaths(process.cwd(), project.paths)
|
|
219
|
-
*
|
|
220
|
-
* if (paths.isErr()) {
|
|
221
|
-
* console.error(paths.unwrapErr())
|
|
222
|
-
* return
|
|
223
|
-
* }
|
|
224
|
-
*
|
|
225
|
-
* console.log(paths.unwrap().components)
|
|
226
|
-
* ```
|
|
227
|
-
*
|
|
228
|
-
* @param cwd - Current working directory
|
|
229
|
-
* @param paths - Project paths
|
|
230
|
-
* @return {Result<Required<ProjectPaths>, string>}
|
|
231
|
-
*/
|
|
232
|
-
function resolvePaths(cwd, paths) {
|
|
233
|
-
const resolved = parsePaths(paths);
|
|
234
|
-
if (resolved.isErr()) return Err(resolved.unwrapErr());
|
|
235
|
-
return Ok(Object.entries(resolved.unwrap()).reduce((acc, [key, value]) => {
|
|
236
|
-
acc[key] = path.resolve(cwd, value.replace("~", "app"));
|
|
237
|
-
return acc;
|
|
238
|
-
}, {}));
|
|
239
|
-
}
|
|
240
|
-
/**
|
|
241
|
-
* Install registry items.
|
|
242
|
-
*
|
|
243
|
-
* @example
|
|
244
|
-
* ```ts
|
|
245
|
-
* await installRegistryItems(
|
|
246
|
-
* process.cwd(),
|
|
247
|
-
* 'weme-ui/weme-ui',
|
|
248
|
-
* 'weme-ui/std',
|
|
249
|
-
* { name: 'button' },
|
|
250
|
-
* )
|
|
251
|
-
* ```
|
|
252
|
-
*
|
|
253
|
-
* @param cwd - Current working directory
|
|
254
|
-
* @param repo - Repository name
|
|
255
|
-
* @param registryName - Registry name
|
|
256
|
-
* @param project - Project configuration
|
|
257
|
-
* @param options - Options
|
|
258
|
-
* @param options.name - Registry item name
|
|
259
|
-
* @param options.type - Registry item type
|
|
260
|
-
*/
|
|
261
|
-
async function installRegistryItems(cwd, repo, registryName, project, options) {
|
|
262
|
-
const manifest = await fetchManifestConfig(repo);
|
|
263
|
-
if (manifest.isErr()) {
|
|
264
|
-
p.log.error(manifest.unwrapErr());
|
|
265
|
-
return;
|
|
266
|
-
}
|
|
267
|
-
const registry = manifest.unwrap().find((r) => r.name === registryName);
|
|
268
|
-
if (!registry) {
|
|
269
|
-
p.log.error("Registry not found.");
|
|
270
|
-
return;
|
|
271
|
-
}
|
|
272
|
-
const { dependencies, devDependencies, files, cssVars } = await fetchRegistryItems(repo, registry.name, options);
|
|
273
|
-
await runStep("Creating registry item files...", async (spinner) => {
|
|
274
|
-
const paths = resolvePaths(cwd, project.paths);
|
|
275
|
-
if (paths.isErr()) {
|
|
276
|
-
p.log.error(paths.unwrapErr());
|
|
277
|
-
return;
|
|
278
|
-
}
|
|
279
|
-
const prefix = project.repos.find((r) => r.registry === registry.name).prefix || "ui";
|
|
280
|
-
await Promise.all(files.map(async (file) => {
|
|
281
|
-
spinner.message(`Creating ${file.path}...`);
|
|
282
|
-
const content = await fetchURL(`https://raw.githubusercontent.com/${getGithubRepoName(repo)}/refs/heads/main/${registry.directory}/${file.path}`);
|
|
283
|
-
if (!content) {
|
|
284
|
-
p.log.error(`Failed to fetch ${file.path}.`);
|
|
285
|
-
return;
|
|
286
|
-
}
|
|
287
|
-
switch (file.type) {
|
|
288
|
-
case "component":
|
|
289
|
-
case "type":
|
|
290
|
-
case "style":
|
|
291
|
-
createFile(content, file.path.replace("components", path.join(paths.unwrap().components, prefix)));
|
|
292
|
-
break;
|
|
293
|
-
case "composable":
|
|
294
|
-
createFile(content, file.path.replace("composables", paths.unwrap().composables));
|
|
295
|
-
break;
|
|
296
|
-
case "plugin":
|
|
297
|
-
createFile(content, file.path.replace("plugins", paths.unwrap().plugins));
|
|
298
|
-
break;
|
|
299
|
-
case "util":
|
|
300
|
-
createFile(content, file.path.replace("utils", paths.unwrap().utils));
|
|
301
|
-
break;
|
|
302
|
-
case "file":
|
|
303
|
-
p.log.warn("File type is not supported yet.");
|
|
304
|
-
break;
|
|
305
|
-
}
|
|
306
|
-
if (file.type === "type") {
|
|
307
|
-
if (!fs.existsSync(paths.unwrap().types)) fs.mkdirSync(paths.unwrap().types, { recursive: true });
|
|
308
|
-
if (!fs.existsSync(path.join(paths.unwrap().types, "index.ts"))) fs.writeFileSync(path.join(paths.unwrap().types, "index.ts"), "export * from './components'\n", {
|
|
309
|
-
encoding: "utf8",
|
|
310
|
-
flag: "w"
|
|
311
|
-
});
|
|
312
|
-
const typePath = path.join(paths.unwrap().types, "components.ts");
|
|
313
|
-
const newLine = `export * from '${file.path.replace("components", path.join(project.paths.components, prefix)).replace(".ts", "")}'`;
|
|
314
|
-
const lines = [];
|
|
315
|
-
if (fs.existsSync(typePath)) {
|
|
316
|
-
const content$1 = fs.readFileSync(typePath, "utf8");
|
|
317
|
-
if (content$1) lines.push(...content$1.split("\n"));
|
|
318
|
-
}
|
|
319
|
-
if (!lines.includes(newLine)) lines.push(newLine);
|
|
320
|
-
fs.writeFileSync(typePath, `${lines.filter(Boolean).sort((a, b) => a.localeCompare(b)).join("\n")}\n`, {
|
|
321
|
-
encoding: "utf8",
|
|
322
|
-
flag: "w"
|
|
323
|
-
});
|
|
324
|
-
}
|
|
325
|
-
}));
|
|
326
|
-
spinner.stop("Registry item files created!");
|
|
327
|
-
});
|
|
328
|
-
await runStep("Installing dependencies...", async (spinner) => {
|
|
329
|
-
await installDependencies({
|
|
330
|
-
dependencies,
|
|
331
|
-
devDependencies
|
|
332
|
-
}, { cwd });
|
|
333
|
-
spinner.stop("Dependencies installed!");
|
|
334
|
-
});
|
|
335
|
-
await updateProjectConfig(cwd, project, { cssVars });
|
|
336
|
-
}
|
|
337
|
-
/**
|
|
338
|
-
* Create file.
|
|
339
|
-
*
|
|
340
|
-
* @example
|
|
341
|
-
* ```ts
|
|
342
|
-
* createFile(content, 'components/ui/button.vue')
|
|
343
|
-
* ```
|
|
344
|
-
*
|
|
345
|
-
* @param content - File content
|
|
346
|
-
* @param dest - File destination
|
|
347
|
-
*/
|
|
348
|
-
function createFile(content, dest) {
|
|
349
|
-
if (!content) return;
|
|
350
|
-
if (fs.existsSync(dest)) return;
|
|
351
|
-
const dirname = path.dirname(dest);
|
|
352
|
-
if (!fs.existsSync(dirname)) fs.mkdirSync(dirname, { recursive: true });
|
|
353
|
-
fs.writeFileSync(dest, content, {
|
|
354
|
-
encoding: "utf8",
|
|
355
|
-
flag: "w"
|
|
356
|
-
});
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
//#endregion
|
|
360
|
-
export { resolvePaths as i, loadProjectConfig as n, loadProjectInfo as r, installRegistryItems as t };
|
|
361
|
-
//# sourceMappingURL=project-D1-8Zva8.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project-D1-8Zva8.mjs","names":["p","e: any","lines: string[]","content"],"sources":["../../../node_modules/.pnpm/defu@6.1.4/node_modules/defu/dist/defu.mjs","../src/utils/schema/project.ts"],"sourcesContent":["function isPlainObject(value) {\n if (value === null || typeof value !== \"object\") {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== null && prototype !== Object.prototype && Object.getPrototypeOf(prototype) !== null) {\n return false;\n }\n if (Symbol.iterator in value) {\n return false;\n }\n if (Symbol.toStringTag in value) {\n return Object.prototype.toString.call(value) === \"[object Module]\";\n }\n return true;\n}\n\nfunction _defu(baseObject, defaults, namespace = \".\", merger) {\n if (!isPlainObject(defaults)) {\n return _defu(baseObject, {}, namespace, merger);\n }\n const object = Object.assign({}, defaults);\n for (const key in baseObject) {\n if (key === \"__proto__\" || key === \"constructor\") {\n continue;\n }\n const value = baseObject[key];\n if (value === null || value === void 0) {\n continue;\n }\n if (merger && merger(object, key, value, namespace)) {\n continue;\n }\n if (Array.isArray(value) && Array.isArray(object[key])) {\n object[key] = [...value, ...object[key]];\n } else if (isPlainObject(value) && isPlainObject(object[key])) {\n object[key] = _defu(\n value,\n object[key],\n (namespace ? `${namespace}.` : \"\") + key.toString(),\n merger\n );\n } else {\n object[key] = value;\n }\n }\n return object;\n}\nfunction createDefu(merger) {\n return (...arguments_) => (\n // eslint-disable-next-line unicorn/no-array-reduce\n arguments_.reduce((p, c) => _defu(p, c, \"\", merger), {})\n );\n}\nconst defu = createDefu();\nconst defuFn = createDefu((object, key, currentValue) => {\n if (object[key] !== void 0 && typeof currentValue === \"function\") {\n object[key] = currentValue(object[key]);\n return true;\n }\n});\nconst defuArrayFn = createDefu((object, key, currentValue) => {\n if (Array.isArray(object[key]) && typeof currentValue === \"function\") {\n object[key] = currentValue(object[key]);\n return true;\n }\n});\n\nexport { createDefu, defu as default, defu, defuArrayFn, defuFn };\n","import type { InlineCssVars, ProjectPaths, ProjectSchema, RegistryItemType } from '@weme-ui/schema'\nimport type { Result } from '../result'\nimport fs from 'node:fs'\nimport * as p from '@clack/prompts'\nimport { PROJECT_FILE_NAME, projectPaths, projectSchema } from '@weme-ui/schema'\nimport { defu } from 'defu'\nimport ora from 'ora'\nimport path from 'pathe'\nimport { glob } from 'tinyglobby'\nimport { fetchURL, getGithubRepoName } from '../fetch'\nimport { Err, Ok } from '../result'\nimport { runStep } from '../utilities'\nimport { installDependencies, loadPackageJson } from './package'\nimport { fetchManifestConfig, fetchRegistryItems } from './registry'\n\nexport interface ProjectInfo {\n name: string\n description: string\n version: string\n repos: string[]\n registries: {\n name: string\n repo: string\n version: string\n description: string\n prefix: string\n access: string\n default: boolean\n available: number\n installed: number\n }[]\n}\n\n/**\n * Load `weme.config.json` from current working directory.\n *\n * @example\n * ```ts\n * const config = loadProjectConfig(process.cwd())\n *\n * if (config.isErr()) {\n * console.error(config.unwrapErr())\n * return\n * }\n *\n * console.log(config.unwrap().name)\n * ```\n *\n * @param cwd - Current working directory\n * @return {Result<ProjectSchema, string>}\n */\nexport function loadProjectConfig(cwd: string): Result<ProjectSchema, string> {\n const configPath = path.join(cwd, PROJECT_FILE_NAME)\n\n if (!fs.existsSync(configPath)) {\n return Err('Could not find your project configuration file!')\n }\n\n try {\n const json = JSON.parse(fs.readFileSync(configPath, 'utf8').toString())\n const config = projectSchema.safeParse(json)\n\n if (!config.success) {\n return Err(config.error.message)\n }\n\n return Ok(config.data)\n }\n catch (e: any) {\n return Err(e.message)\n }\n}\n\n/**\n * Load project information from current working directory.\n *\n * @example\n * ```ts\n * const info = await loadProjectInfo(process.cwd())\n *\n * if (info.isErr()) {\n * console.error(info.unwrapErr())\n * return\n * }\n *\n * console.log(info.unwrap().name)\n * ```\n *\n * @param cwd - Current working directory\n * @return {Promise<Result<ProjectInfo, string>>}\n */\nexport async function loadProjectInfo(cwd: string): Promise<Result<ProjectInfo, string>> {\n const spinner = ora().start('Fetching project information...')\n\n try {\n const pkg = loadPackageJson(cwd)\n const config = loadProjectConfig(cwd)\n\n if (pkg.isErr() || config.isErr()) {\n return Err('Could not find your project configuration file!')\n }\n\n const repos = config.unwrap().repos || []\n const paths = resolvePaths(cwd, config.unwrap().paths)\n\n if (paths.isErr()) {\n return Err(paths.unwrapErr())\n }\n\n const registries = await Promise.all(repos.map(async (r) => {\n const manifest = await fetchManifestConfig(r.repo)\n\n if (manifest.isErr()) {\n throw new Error(manifest.unwrapErr())\n }\n\n const registry = manifest.unwrap().find(m => m.name === r.registry)\n\n if (!registry) {\n throw new Error(`${r.registry} not found.`)\n }\n\n const installed = await glob(`**/*.vue`, {\n cwd: path.join(paths.unwrap().components, r.prefix || 'ui'),\n absolute: false,\n onlyFiles: true,\n }).then(\n files => files.length,\n )\n\n return {\n name: r.registry,\n repo: r.repo,\n version: registry.version || '0.0.0',\n description: registry.description || '',\n prefix: r.prefix || registry.prefix,\n access: registry.access,\n default: !!r.default,\n available: Object.entries(registry.items).reduce(\n (acc, [,count]) => acc + count,\n 0,\n ),\n installed,\n } satisfies ProjectInfo['registries'][number]\n }))\n\n return Ok({\n name: pkg.unwrap().name || '',\n description: pkg.unwrap().description || '',\n version: pkg.unwrap().version || '0.0.0',\n repos: repos.map(r => r.repo),\n registries,\n })\n }\n catch (e: any) {\n spinner.stop()\n return Err(e.message)\n }\n finally {\n spinner.stop()\n }\n}\n\n/**\n * Update `weme.config.json` from current working directory.\n *\n * @example\n * ```ts\n * await updateProjectConfig(process.cwd(), project, {\n * repo: {\n * repo: 'https://github.com/weme-ui/weme-ui',\n * registry: 'weme-ui/std',\n * prefix: 'ui',\n * default: true,\n * },\n * cssVars: {\n * colors: {\n * primary: 'blue',\n * },\n * },\n * })\n * ```\n *\n * @param cwd - Current working directory\n * @param project - Project configuration\n * @param updates - Updates to apply\n * @param updates.repo - Repository configuration to update\n * @param updates.cssVars - CSS variables to update\n */\nexport async function updateProjectConfig(\n cwd: string,\n project: ProjectSchema,\n updates: {\n repo?: ProjectSchema['repos'][number]\n cssVars?: InlineCssVars\n },\n) {\n await runStep('Updating project configuration...', async (spinner) => {\n if (\n updates.repo\n && project.repos.findIndex(\n r => r.repo === updates.repo?.repo\n && r.registry === updates.repo?.registry,\n ) === -1\n ) {\n project.repos.push(updates.repo)\n\n if (updates.repo.default) {\n project.repos.forEach((repo) => {\n repo.default = repo.registry === updates.repo?.registry\n })\n }\n }\n\n if (updates.cssVars) {\n project.unocss = project.unocss || {}\n project.unocss.cssVars = defu(project.unocss.cssVars || {}, updates.cssVars)\n }\n\n fs.writeFileSync(\n path.join(cwd, PROJECT_FILE_NAME),\n `${JSON.stringify(project, null, 2)}\\n`,\n {\n encoding: 'utf8',\n flag: 'w',\n },\n )\n\n spinner.stop('Project configuration updated!')\n })\n}\n\n/**\n * Parse project paths.\n *\n * @example\n * ```ts\n * const paths = parsePaths(project.paths)\n *\n * if (paths.isErr()) {\n * console.error(paths.unwrapErr())\n * return\n * }\n *\n * console.log(paths.unwrap().components)\n * ```\n *\n * @param paths - Project paths\n * @return {Result<Required<ProjectPaths>, string>}\n */\nexport function parsePaths(paths: ProjectPaths): Result<Required<ProjectPaths>, string> {\n const result = projectPaths.safeParse(paths)\n\n if (!result.success) {\n return Err(result.error.message)\n }\n\n return Ok(result.data as Required<ProjectPaths>)\n}\n\n/**\n * Resolve project paths.\n *\n * @example\n * ```ts\n * const paths = resolvePaths(process.cwd(), project.paths)\n *\n * if (paths.isErr()) {\n * console.error(paths.unwrapErr())\n * return\n * }\n *\n * console.log(paths.unwrap().components)\n * ```\n *\n * @param cwd - Current working directory\n * @param paths - Project paths\n * @return {Result<Required<ProjectPaths>, string>}\n */\nexport function resolvePaths(cwd: string, paths: ProjectPaths): Result<Required<ProjectPaths>, string> {\n const resolved = parsePaths(paths)\n\n if (resolved.isErr()) {\n return Err(resolved.unwrapErr())\n }\n\n return Ok(\n Object.entries(resolved.unwrap())\n .reduce((acc, [key, value]) => {\n acc[key as keyof ProjectPaths] = path.resolve(cwd, value.replace('~', 'app'))\n return acc\n }, {} as Required<ProjectPaths>),\n )\n}\n\n/**\n * Resolve project paths.\n *\n * @example\n * ```ts\n * const paths = resolveProjectPaths(process.cwd())\n *\n * if (paths.isErr()) {\n * console.error(paths.unwrapErr())\n * return\n * }\n *\n * console.log(paths.unwrap().components)\n * ```\n *\n * @param cwd - Current working directory\n * @param resolved - Resolve paths\n * @return {Result<Required<ProjectPaths>, string>}\n */\nexport function resolveProjectPaths(cwd: string, resolved = false): Result<Required<ProjectPaths>, string> {\n const project = loadProjectConfig(cwd)\n\n if (project.isErr()) {\n return Err(project.unwrapErr())\n }\n\n return Ok(\n resolved\n ? resolvePaths(cwd, project.unwrap().paths).unwrap()\n : project.unwrap().paths as Required<ProjectPaths>,\n )\n}\n\n/**\n * Install registry items.\n *\n * @example\n * ```ts\n * await installRegistryItems(\n * process.cwd(),\n * 'weme-ui/weme-ui',\n * 'weme-ui/std',\n * { name: 'button' },\n * )\n * ```\n *\n * @param cwd - Current working directory\n * @param repo - Repository name\n * @param registryName - Registry name\n * @param project - Project configuration\n * @param options - Options\n * @param options.name - Registry item name\n * @param options.type - Registry item type\n */\nexport async function installRegistryItems(\n cwd: string,\n repo: string,\n registryName: string,\n project: ProjectSchema,\n options?: {\n name?: string | string[]\n type?: RegistryItemType\n },\n) {\n const manifest = await fetchManifestConfig(repo)\n\n if (manifest.isErr()) {\n p.log.error(manifest.unwrapErr())\n return\n }\n\n const registry = manifest.unwrap().find(r => r.name === registryName)\n\n if (!registry) {\n p.log.error('Registry not found.')\n return\n }\n\n const { dependencies, devDependencies, files, cssVars } = await fetchRegistryItems(\n repo,\n registry.name,\n options,\n )\n\n await runStep('Creating registry item files...', async (spinner) => {\n const paths = resolvePaths(cwd, project.paths)\n\n if (paths.isErr()) {\n p.log.error(paths.unwrapErr())\n return\n }\n\n const prefix = project.repos.find(r => r.registry === registry.name)!.prefix || 'ui'\n\n await Promise.all(files.map(async (file) => {\n spinner.message(`Creating ${file.path}...`)\n\n const content = await fetchURL(\n `https://raw.githubusercontent.com/${getGithubRepoName(repo)}/refs/heads/main/${registry.directory}/${file.path}`,\n )\n\n if (!content) {\n p.log.error(`Failed to fetch ${file.path}.`)\n return\n }\n\n switch (file.type) {\n case 'component':\n case 'type':\n case 'style':\n createFile(content, file.path.replace('components', path.join(paths.unwrap().components, prefix)))\n break\n\n case 'composable':\n createFile(content, file.path.replace('composables', paths.unwrap().composables))\n break\n\n case 'plugin':\n createFile(content, file.path.replace('plugins', paths.unwrap().plugins))\n break\n\n case 'util':\n createFile(content, file.path.replace('utils', paths.unwrap().utils))\n break\n\n case 'file':\n p.log.warn('File type is not supported yet.')\n break\n }\n\n // Update types\n if (file.type === 'type') {\n if (!fs.existsSync(paths.unwrap().types))\n fs.mkdirSync(paths.unwrap().types, { recursive: true })\n\n if (!fs.existsSync(path.join(paths.unwrap().types, 'index.ts'))) {\n fs.writeFileSync(\n path.join(paths.unwrap().types, 'index.ts'),\n 'export * from \\'./components\\'\\n',\n {\n encoding: 'utf8',\n flag: 'w',\n },\n )\n }\n\n const typePath = path.join(paths.unwrap().types, 'components.ts')\n const newLine = `export * from '${file.path.replace('components', path.join(project.paths.components, prefix)).replace('.ts', '')}'`\n const lines: string[] = []\n\n if (fs.existsSync(typePath)) {\n const content = fs.readFileSync(typePath, 'utf8')\n\n if (content) {\n lines.push(\n ...content.split('\\n'),\n )\n }\n }\n\n if (!lines.includes(newLine))\n lines.push(newLine)\n\n fs.writeFileSync(\n typePath,\n `${lines.filter(Boolean).sort((a, b) => a.localeCompare(b)).join('\\n')}\\n`,\n {\n encoding: 'utf8',\n flag: 'w',\n },\n )\n }\n }))\n\n spinner.stop('Registry item files created!')\n })\n\n await runStep('Installing dependencies...', async (spinner) => {\n await installDependencies({\n dependencies,\n devDependencies,\n }, { cwd })\n\n spinner.stop('Dependencies installed!')\n })\n\n await updateProjectConfig(cwd, project, { cssVars })\n}\n\n/**\n * Create file.\n *\n * @example\n * ```ts\n * createFile(content, 'components/ui/button.vue')\n * ```\n *\n * @param content - File content\n * @param dest - File destination\n */\nfunction createFile(content: string, dest: string) {\n if (!content)\n return\n\n if (fs.existsSync(dest))\n return\n\n const dirname = path.dirname(dest)\n\n if (!fs.existsSync(dirname))\n fs.mkdirSync(dirname, { recursive: true })\n\n fs.writeFileSync(dest, content, {\n encoding: 'utf8',\n flag: 'w',\n })\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { r as loadProjectInfo } from "./project-D1-8Zva8.mjs";
|
|
2
|
-
import { m as getGithubRepoName } from "./registry-Be2pmtXA.mjs";
|
|
3
|
-
import "./package-BnOb5LKd.mjs";
|
|
4
|
-
import { exit } from "node:process";
|
|
5
|
-
import chalk from "chalk";
|
|
6
|
-
import path from "pathe";
|
|
7
|
-
import columnify from "columnify";
|
|
8
|
-
|
|
9
|
-
//#region src/commands/info/project.ts
|
|
10
|
-
async function project_default(args) {
|
|
11
|
-
args.cwd = path.resolve(args.cwd);
|
|
12
|
-
const result = await loadProjectInfo(args.cwd);
|
|
13
|
-
if (result.isErr()) {
|
|
14
|
-
console.error(result.unwrapErr());
|
|
15
|
-
exit(1);
|
|
16
|
-
}
|
|
17
|
-
const info = result.unwrap();
|
|
18
|
-
const name = info.description || info.name || "";
|
|
19
|
-
const version = info.version || "0.0.0";
|
|
20
|
-
console.log(`${chalk.whiteBright.bold(name)} ${chalk.gray(`version ${version}`)}`);
|
|
21
|
-
console.log("");
|
|
22
|
-
info.repos.forEach((repo) => {
|
|
23
|
-
const registries = info.registries.filter((r) => r.repo === repo);
|
|
24
|
-
if (registries.length) {
|
|
25
|
-
console.log(`${chalk.bold.cyan(`@${getGithubRepoName(repo)}`)} ${chalk.dim(`(${registries.length})`)}`);
|
|
26
|
-
console.log("");
|
|
27
|
-
console.log(columnify(registries.map((r) => ({
|
|
28
|
-
default: r.default,
|
|
29
|
-
name: [`${r.name}@${r.version} ${chalk.dim(`(${r.prefix})`)}`, chalk.dim(r.description)].join("\n"),
|
|
30
|
-
access: r.access
|
|
31
|
-
})), {
|
|
32
|
-
showHeaders: false,
|
|
33
|
-
preserveNewLines: true,
|
|
34
|
-
config: {
|
|
35
|
-
default: {
|
|
36
|
-
align: "right",
|
|
37
|
-
minWidth: 3,
|
|
38
|
-
dataTransform: (data) => data === "true" ? chalk.greenBright("✓") : ""
|
|
39
|
-
},
|
|
40
|
-
name: { dataTransform: (data) => ` ${chalk.whiteBright(data)}` },
|
|
41
|
-
access: {
|
|
42
|
-
minWidth: 4,
|
|
43
|
-
dataTransform: (data) => data === "private" ? "🔒" : ""
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}));
|
|
47
|
-
console.log("");
|
|
48
|
-
console.log(chalk.gray([` ${chalk.yellow(registries.reduce((acc, r) => acc + r.available, 0))} available`, `${chalk.yellow(registries.reduce((acc, r) => acc + r.installed, 0))} installed`].join(", ")));
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
console.log("");
|
|
52
|
-
console.log(`Run ${chalk.cyan("pnpm dlx @weme-ui/weme-ui info <registry-name>")} to get more information about a specific registry.`);
|
|
53
|
-
console.log(`Run ${chalk.cyan("pnpm dlx @weme-ui/weme-ui update")} to update all installed items.`);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
//#endregion
|
|
57
|
-
export { project_default as default };
|
|
58
|
-
//# sourceMappingURL=project-D1CJVddG.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project-D1CJVddG.mjs","names":[],"sources":["../src/commands/info/project.ts"],"sourcesContent":["import { exit } from 'node:process'\nimport chalk from 'chalk'\nimport columnify from 'columnify'\nimport path from 'pathe'\nimport { getGithubRepoName } from '../../utils/fetch'\nimport { loadProjectInfo } from '../../utils/schema/project'\n\nexport default async function (args: Record<string, any>) {\n args.cwd = path.resolve(args.cwd)\n\n const result = await loadProjectInfo(args.cwd)\n\n if (result.isErr()) {\n console.error(result.unwrapErr())\n exit(1)\n }\n\n const info = result.unwrap()\n\n const name = info.description || info.name || ''\n const version = info.version || '0.0.0'\n\n console.log(`${chalk.whiteBright.bold(name)} ${chalk.gray(`version ${version}`)}`)\n console.log('')\n\n info.repos.forEach((repo) => {\n const registries = info.registries.filter(r => r.repo === repo)\n\n if (registries.length) {\n console.log(`${chalk.bold.cyan(`@${getGithubRepoName(repo)}`)} ${chalk.dim(`(${registries.length})`)}`)\n console.log('')\n\n console.log(\n columnify(\n // Data\n registries.map(r => ({\n default: r.default,\n name: [\n `${r.name}@${r.version} ${chalk.dim(`(${r.prefix})`)}`,\n chalk.dim(r.description),\n ].join('\\n'),\n access: r.access,\n })),\n\n // Options\n {\n showHeaders: false,\n preserveNewLines: true,\n config: {\n default: {\n align: 'right',\n minWidth: 3,\n dataTransform: data => data === 'true' ? chalk.greenBright('✓') : '',\n },\n name: {\n dataTransform: data => ` ${chalk.whiteBright(data)}`,\n },\n access: {\n minWidth: 4,\n dataTransform: data => data === 'private' ? '🔒' : '',\n },\n },\n },\n ),\n )\n\n console.log('')\n console.log(chalk.gray(\n [\n ` ${chalk.yellow(registries.reduce((acc, r) => acc + r.available, 0))} available`,\n `${chalk.yellow(registries.reduce((acc, r) => acc + r.installed, 0))} installed`,\n ].join(', '),\n ))\n }\n })\n\n console.log('')\n console.log(`Run ${chalk.cyan('pnpm dlx @weme-ui/weme-ui info <registry-name>')} to get more information about a specific registry.`)\n console.log(`Run ${chalk.cyan('pnpm dlx @weme-ui/weme-ui update')} to update all installed items.`)\n}\n"],"mappings":";;;;;;;;;AAOA,+BAA+B,MAA2B;AACxD,MAAK,MAAM,KAAK,QAAQ,KAAK,IAAI;CAEjC,MAAM,SAAS,MAAM,gBAAgB,KAAK,IAAI;AAE9C,KAAI,OAAO,OAAO,EAAE;AAClB,UAAQ,MAAM,OAAO,WAAW,CAAC;AACjC,OAAK,EAAE;;CAGT,MAAM,OAAO,OAAO,QAAQ;CAE5B,MAAM,OAAO,KAAK,eAAe,KAAK,QAAQ;CAC9C,MAAM,UAAU,KAAK,WAAW;AAEhC,SAAQ,IAAI,GAAG,MAAM,YAAY,KAAK,KAAK,CAAC,GAAG,MAAM,KAAK,WAAW,UAAU,GAAG;AAClF,SAAQ,IAAI,GAAG;AAEf,MAAK,MAAM,SAAS,SAAS;EAC3B,MAAM,aAAa,KAAK,WAAW,QAAO,MAAK,EAAE,SAAS,KAAK;AAE/D,MAAI,WAAW,QAAQ;AACrB,WAAQ,IAAI,GAAG,MAAM,KAAK,KAAK,IAAI,kBAAkB,KAAK,GAAG,CAAC,GAAG,MAAM,IAAI,IAAI,WAAW,OAAO,GAAG,GAAG;AACvG,WAAQ,IAAI,GAAG;AAEf,WAAQ,IACN,UAEE,WAAW,KAAI,OAAM;IACnB,SAAS,EAAE;IACX,MAAM,CACJ,GAAG,EAAE,KAAK,GAAG,EAAE,QAAQ,GAAG,MAAM,IAAI,IAAI,EAAE,OAAO,GAAG,IACpD,MAAM,IAAI,EAAE,YAAY,CACzB,CAAC,KAAK,KAAK;IACZ,QAAQ,EAAE;IACX,EAAE,EAGH;IACE,aAAa;IACb,kBAAkB;IAClB,QAAQ;KACN,SAAS;MACP,OAAO;MACP,UAAU;MACV,gBAAe,SAAQ,SAAS,SAAS,MAAM,YAAY,IAAI,GAAG;MACnE;KACD,MAAM,EACJ,gBAAe,SAAQ,KAAK,MAAM,YAAY,KAAK,IACpD;KACD,QAAQ;MACN,UAAU;MACV,gBAAe,SAAQ,SAAS,YAAY,OAAO;MACpD;KACF;IACF,CACF,CACF;AAED,WAAQ,IAAI,GAAG;AACf,WAAQ,IAAI,MAAM,KAChB,CACE,KAAK,MAAM,OAAO,WAAW,QAAQ,KAAK,MAAM,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,aACvE,GAAG,MAAM,OAAO,WAAW,QAAQ,KAAK,MAAM,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,YACtE,CAAC,KAAK,KAAK,CACb,CAAC;;GAEJ;AAEF,SAAQ,IAAI,GAAG;AACf,SAAQ,IAAI,OAAO,MAAM,KAAK,iDAAiD,CAAC,qDAAqD;AACrI,SAAQ,IAAI,OAAO,MAAM,KAAK,mCAAmC,CAAC,iCAAiC"}
|