@weme-ui/weme-ui 0.1.4-beta.1 → 0.1.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.
Files changed (37) hide show
  1. package/dist/add-5ZrkTNC3.mjs +53 -0
  2. package/dist/add-5ZrkTNC3.mjs.map +1 -0
  3. package/dist/{build-CglClYuP.mjs → build-DAAgZct5.mjs} +2 -2
  4. package/dist/{build-CglClYuP.mjs.map → build-DAAgZct5.mjs.map} +1 -1
  5. package/dist/index.mjs +6 -4
  6. package/dist/index.mjs.map +1 -1
  7. package/dist/{info-U2T2YvOz.mjs → info-BBRg1Z-t.mjs} +3 -3
  8. package/dist/{info-U2T2YvOz.mjs.map → info-BBRg1Z-t.mjs.map} +1 -1
  9. package/dist/{init-DuYt1NgW.mjs → init-BlbSgl_W.mjs} +3 -3
  10. package/dist/{init-DuYt1NgW.mjs.map → init-BlbSgl_W.mjs.map} +1 -1
  11. package/dist/{manifest-B2Fg8BvI.mjs → manifest-DtYvp2uU.mjs} +6 -4
  12. package/dist/manifest-DtYvp2uU.mjs.map +1 -0
  13. package/dist/package-DPYgVv-f.mjs +85 -0
  14. package/dist/package-DPYgVv-f.mjs.map +1 -0
  15. package/dist/{project-rHqBMgh9.mjs → project-BpqIQqfR.mjs} +25 -5
  16. package/dist/project-BpqIQqfR.mjs.map +1 -0
  17. package/dist/{project-D7GTkAzz.mjs → project-COPHBstt.mjs} +4 -3
  18. package/dist/{project-D7GTkAzz.mjs.map → project-COPHBstt.mjs.map} +1 -1
  19. package/dist/{project-Dt0TFob4.mjs → project-kIk5Kz3k.mjs} +13 -5
  20. package/dist/project-kIk5Kz3k.mjs.map +1 -0
  21. package/dist/{registry-CK6l29SA.mjs → registry-CU5Ejwes.mjs} +4 -3
  22. package/dist/{registry-CK6l29SA.mjs.map → registry-CU5Ejwes.mjs.map} +1 -1
  23. package/dist/{registry-CAa9iHPj.mjs → registry-DtG09FVz.mjs} +4 -3
  24. package/dist/{registry-CAa9iHPj.mjs.map → registry-DtG09FVz.mjs.map} +1 -1
  25. package/dist/registry-NSadym2Q.mjs +8 -0
  26. package/dist/registry-NSadym2Q.mjs.map +1 -0
  27. package/dist/{registry-_alKtnin.mjs → registry-bjxXghAl.mjs} +38 -102
  28. package/dist/registry-bjxXghAl.mjs.map +1 -0
  29. package/dist/registry-item-B_neG4VO.mjs +143 -0
  30. package/dist/registry-item-B_neG4VO.mjs.map +1 -0
  31. package/dist/verify-CXBxJkzK.mjs +78 -0
  32. package/dist/verify-CXBxJkzK.mjs.map +1 -0
  33. package/package.json +5 -5
  34. package/dist/manifest-B2Fg8BvI.mjs.map +0 -1
  35. package/dist/project-Dt0TFob4.mjs.map +0 -1
  36. package/dist/project-rHqBMgh9.mjs.map +0 -1
  37. package/dist/registry-_alKtnin.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"registry-CAa9iHPj.mjs","names":["e: any","cwd"],"sources":["../src/commands/init/registry/context.ts","../src/commands/init/registry/templates.ts","../src/commands/init/registry/index.ts"],"sourcesContent":["import { existsSync } from 'node:fs'\nimport { exit } from 'node:process'\nimport * as p from '@clack/prompts'\nimport path from 'pathe'\nimport { REGISTRY_DIRNAME } from '../../../utils/schema/registry'\n\nexport interface InitRegistryContext {\n name: string\n description: string\n version: string\n directory: string\n prefix: string\n access: string\n author: string\n homepage: string\n github: string\n cwd: string\n}\n\nexport async function createContext(args: Record<string, any>): Promise<InitRegistryContext> {\n args.cwd = path.resolve(args.cwd)\n\n const answers = await p.group({\n name: async () => {\n if (args.name)\n return args.name.trim().toLowerCase()\n\n return p.text({\n message: 'What is the name of the registry?',\n placeholder: 'weme-ui/std',\n defaultValue: args.name?.trim().toLowerCase(),\n validate: (value: string) => {\n if (!value)\n return 'Name is required'\n\n if (value.includes(' '))\n return 'Name should not contain spaces'\n\n if (!value.includes('/'))\n return 'Name should contain slashes, e.g. weme-ui/std'\n\n if (existsSync(path.join(args.cwd, value)))\n return 'Registry already exists'\n },\n })\n },\n description: () => p.text({\n message: 'What is the description of the registry?',\n placeholder: 'The standard components for Weme UI.',\n defaultValue: '',\n }),\n version: () => p.text({\n message: 'What is the version of the registry?',\n placeholder: '0.0.0',\n validate: (value: string) => {\n if (!value)\n return 'Version is required'\n },\n }),\n prefix: () => p.text({\n message: 'What is the prefix of the registry?',\n placeholder: 'ui',\n defaultValue: 'ui',\n }),\n access: () => p.select({\n message: 'Which access do you want to use?',\n options: [\n { label: 'Public', value: 'public' },\n { label: 'Private', value: 'private' },\n ],\n initialValue: 'public',\n }),\n author: () => p.text({\n message: 'What is the author of the registry?',\n placeholder: 'Allen Luo <luoyi@mouji.net>',\n defaultValue: '',\n }),\n homepage: () => p.text({\n message: 'What is the homepage of the registry?',\n placeholder: 'https://github.com/weme-ui/weme-ui',\n defaultValue: '',\n }),\n github: () => p.text({\n message: 'What is the github of the registry?',\n placeholder: 'https://github.com/weme-ui/weme-ui',\n defaultValue: '',\n }),\n }, {\n onCancel: () => {\n p.cancel('Operation cancelled.')\n exit(0)\n },\n })\n\n return {\n ...answers,\n directory: path.join(REGISTRY_DIRNAME, answers.name.split('/')[1]),\n cwd: args.cwd,\n }\n}\n","import type { InitRegistryContext } from './context'\nimport fs from 'node:fs'\nimport path from 'pathe'\nimport { fetchURL } from '../../../utils/fetch'\nimport { compile, runStep } from '../../../utils/utilities'\n\nexport async function generateTemplates(ctx: InitRegistryContext) {\n await runStep('Generating files...', async (spinner) => {\n await Promise.all([\n 'utils/props.ts.hbs',\n 'utils/slots.ts.hbs',\n 'utils/styles.ts.hbs',\n 'README.md.hbs',\n 'nuxt.config.ts.hbs',\n 'package.json.hbs',\n 'registry.json.hbs',\n 'tsconfig.json.hbs',\n 'uno.config.ts.hbs',\n ].map(\n async (tpl) => {\n try {\n const name = tpl.replace('.hbs', '')\n\n spinner.message(`Generating ${name}...`)\n\n const text = await fetchURL(\n `https://raw.githubusercontent.com/weme-ui/templates/refs/heads/main/registry/${tpl}`,\n )\n if (!text) {\n throw new Error(`Failed to fetch ${name}.`)\n }\n\n const content = compile(text, ctx)\n if (!content) {\n throw new Error(`Failed to compile ${name}.`)\n }\n\n const filePath = path.join(ctx.cwd, ctx.directory, name)\n const dirname = path.dirname(filePath)\n\n if (!fs.existsSync(dirname))\n fs.mkdirSync(dirname, { recursive: true })\n\n fs.writeFileSync(filePath, content, {\n encoding: 'utf8',\n flag: 'w',\n })\n }\n catch (e: any) {\n spinner.stop(e.message)\n }\n },\n ))\n\n spinner.stop('Files generated.')\n })\n}\n","import * as p from '@clack/prompts'\nimport chalk from 'chalk'\nimport path from 'pathe'\nimport { installDependencies, runDevPrepare } from '../../../utils/schema/package'\nimport { createContext } from './context'\nimport { generateTemplates } from './templates'\n\nexport default async function (args: Record<string, any>) {\n p.intro(chalk.bold.blue('✨ Initializing Weme UI Registry'))\n\n const ctx = await createContext(args)\n const cwd = path.join(ctx.cwd, ctx.directory)\n\n await generateTemplates(ctx)\n await installDependencies([\n '@vueuse/core',\n 'clsx',\n 'tailwind-merge',\n 'tailwind-variants',\n 'reka-ui',\n 'unocss',\n 'nuxt',\n 'vue',\n 'vue-router',\n ], { cwd })\n await runDevPrepare(cwd)\n\n p.note([\n `1. Enter the registry directory: ${chalk.cyan(`cd ${ctx.directory}`)}`,\n `2. Start development server: ${chalk.cyan('pnpm dev')}`,\n `3. Build registry: ${chalk.cyan('pnpm @weme-ui/nuxt build')}`,\n ].join('\\n'), 'Next?')\n\n p.outro('🥤 All done!')\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"registry-DtG09FVz.mjs","names":["e: any","cwd"],"sources":["../src/commands/init/registry/context.ts","../src/commands/init/registry/templates.ts","../src/commands/init/registry/index.ts"],"sourcesContent":["import { existsSync } from 'node:fs'\nimport { exit } from 'node:process'\nimport * as p from '@clack/prompts'\nimport path from 'pathe'\nimport { REGISTRY_DIRNAME } from '../../../utils/schema/registry'\n\nexport interface InitRegistryContext {\n name: string\n description: string\n version: string\n directory: string\n prefix: string\n access: string\n author: string\n homepage: string\n github: string\n cwd: string\n}\n\nexport async function createContext(args: Record<string, any>): Promise<InitRegistryContext> {\n args.cwd = path.resolve(args.cwd)\n\n const answers = await p.group({\n name: async () => {\n if (args.name)\n return args.name.trim().toLowerCase()\n\n return p.text({\n message: 'What is the name of the registry?',\n placeholder: 'weme-ui/std',\n defaultValue: args.name?.trim().toLowerCase(),\n validate: (value: string) => {\n if (!value)\n return 'Name is required'\n\n if (value.includes(' '))\n return 'Name should not contain spaces'\n\n if (!value.includes('/'))\n return 'Name should contain slashes, e.g. weme-ui/std'\n\n if (existsSync(path.join(args.cwd, value)))\n return 'Registry already exists'\n },\n })\n },\n description: () => p.text({\n message: 'What is the description of the registry?',\n placeholder: 'The standard components for Weme UI.',\n defaultValue: '',\n }),\n version: () => p.text({\n message: 'What is the version of the registry?',\n placeholder: '0.0.0',\n validate: (value: string) => {\n if (!value)\n return 'Version is required'\n },\n }),\n prefix: () => p.text({\n message: 'What is the prefix of the registry?',\n placeholder: 'ui',\n defaultValue: 'ui',\n }),\n access: () => p.select({\n message: 'Which access do you want to use?',\n options: [\n { label: 'Public', value: 'public' },\n { label: 'Private', value: 'private' },\n ],\n initialValue: 'public',\n }),\n author: () => p.text({\n message: 'What is the author of the registry?',\n placeholder: 'Allen Luo <luoyi@mouji.net>',\n defaultValue: '',\n }),\n homepage: () => p.text({\n message: 'What is the homepage of the registry?',\n placeholder: 'https://github.com/weme-ui/weme-ui',\n defaultValue: '',\n }),\n github: () => p.text({\n message: 'What is the github of the registry?',\n placeholder: 'https://github.com/weme-ui/weme-ui',\n defaultValue: '',\n }),\n }, {\n onCancel: () => {\n p.cancel('Operation cancelled.')\n exit(0)\n },\n })\n\n return {\n ...answers,\n directory: path.join(REGISTRY_DIRNAME, answers.name.split('/')[1]),\n cwd: args.cwd,\n }\n}\n","import type { InitRegistryContext } from './context'\nimport fs from 'node:fs'\nimport path from 'pathe'\nimport { fetchURL } from '../../../utils/fetch'\nimport { compile, runStep } from '../../../utils/utilities'\n\nexport async function generateTemplates(ctx: InitRegistryContext) {\n await runStep('Generating files...', async (spinner) => {\n await Promise.all([\n 'utils/props.ts.hbs',\n 'utils/slots.ts.hbs',\n 'utils/styles.ts.hbs',\n 'README.md.hbs',\n 'nuxt.config.ts.hbs',\n 'package.json.hbs',\n 'registry.json.hbs',\n 'tsconfig.json.hbs',\n 'uno.config.ts.hbs',\n ].map(\n async (tpl) => {\n try {\n const name = tpl.replace('.hbs', '')\n\n spinner.message(`Generating ${name}...`)\n\n const text = await fetchURL(\n `https://raw.githubusercontent.com/weme-ui/templates/refs/heads/main/registry/${tpl}`,\n )\n if (!text) {\n throw new Error(`Failed to fetch ${name}.`)\n }\n\n const content = compile(text, ctx)\n if (!content) {\n throw new Error(`Failed to compile ${name}.`)\n }\n\n const filePath = path.join(ctx.cwd, ctx.directory, name)\n const dirname = path.dirname(filePath)\n\n if (!fs.existsSync(dirname))\n fs.mkdirSync(dirname, { recursive: true })\n\n fs.writeFileSync(filePath, content, {\n encoding: 'utf8',\n flag: 'w',\n })\n }\n catch (e: any) {\n spinner.stop(e.message)\n }\n },\n ))\n\n spinner.stop('Files generated.')\n })\n}\n","import * as p from '@clack/prompts'\nimport chalk from 'chalk'\nimport path from 'pathe'\nimport { installDependencies, runDevPrepare } from '../../../utils/schema/package'\nimport { createContext } from './context'\nimport { generateTemplates } from './templates'\n\nexport default async function (args: Record<string, any>) {\n p.intro(chalk.bold.blue('✨ Initializing Weme UI Registry'))\n\n const ctx = await createContext(args)\n const cwd = path.join(ctx.cwd, ctx.directory)\n\n await generateTemplates(ctx)\n await installDependencies([\n '@vueuse/core',\n 'clsx',\n 'tailwind-merge',\n 'tailwind-variants',\n 'reka-ui',\n 'unocss',\n 'nuxt',\n 'vue',\n 'vue-router',\n ], { cwd })\n await runDevPrepare(cwd)\n\n p.note([\n `1. Enter the registry directory: ${chalk.cyan(`cd ${ctx.directory}`)}`,\n `2. Start development server: ${chalk.cyan('pnpm dev')}`,\n `3. Build registry: ${chalk.cyan('pnpm @weme-ui/nuxt build')}`,\n ].join('\\n'), 'Next?')\n\n p.outro('🥤 All done!')\n}\n"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ //#region src/commands/add/registry/index.ts
2
+ async function registry_default(args) {
3
+ console.log("Adding registry items", args);
4
+ }
5
+
6
+ //#endregion
7
+ export { registry_default as default };
8
+ //# sourceMappingURL=registry-NSadym2Q.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-NSadym2Q.mjs","names":[],"sources":["../src/commands/add/registry/index.ts"],"sourcesContent":["export default async function (args: Record<string, any>) {\n console.log('Adding registry items', args)\n}\n"],"mappings":";AAAA,gCAA+B,MAA2B;AACxD,SAAQ,IAAI,yBAAyB,KAAK"}
@@ -1,14 +1,29 @@
1
1
  import { exit } from "node:process";
2
- import fs from "node:fs";
3
2
  import * as p from "@clack/prompts";
4
- import { MANIFEST_FILE_NAME, REGISTRY_FILE_NAME, manifestSchema, registrySchema } from "@weme-ui/schema";
5
3
  import chalk from "chalk";
4
+ import fs from "node:fs";
5
+ import { MANIFEST_FILE_NAME, REGISTRY_FILE_NAME, manifestSchema, registrySchema } from "@weme-ui/schema";
6
6
  import path from "pathe";
7
- import { addDependency, runScript } from "nypm";
7
+ import makeFetch from "make-fetch-happen";
8
8
  import handlebars from "handlebars";
9
9
  import { camelCase, kebabCase, pascalCase, titleCase } from "scule";
10
- import makeFetch from "make-fetch-happen";
11
10
 
11
+ //#region src/utils/fetch.ts
12
+ const fetch = makeFetch.defaults({ cachePath: ".weme" });
13
+ async function fetchJSON(url) {
14
+ return (await fetch(url)).json();
15
+ }
16
+ async function fetchURL(url) {
17
+ return (await fetch(url)).text();
18
+ }
19
+ async function fetchBinary(url) {
20
+ return (await fetch(url)).arrayBuffer();
21
+ }
22
+ function getGithubRepoName$1(url) {
23
+ return url.trim().replace(/^https?:\/\/github.com\//, "").replace(/\.git$/, "");
24
+ }
25
+
26
+ //#endregion
12
27
  //#region src/utils/result.ts
13
28
  var Result = class {
14
29
  result;
@@ -83,99 +98,6 @@ async function runStep(loading, fn) {
83
98
  return fn(spinner);
84
99
  }
85
100
 
86
- //#endregion
87
- //#region src/utils/schema/package.ts
88
- /**
89
- * Load `package.json` from current working directory.
90
- *
91
- * @example
92
- * ```ts
93
- * const pkg = loadPackageJson(process.cwd())
94
- *
95
- * if (pkg.isErr()) {
96
- * console.error(pkg.unwrapErr())
97
- * return
98
- * }
99
- *
100
- * console.log(pkg.unwrap().name)
101
- * ```
102
- *
103
- * @param cwd - Current working directory
104
- * @return {Result<PackageJson, string>}
105
- */
106
- function loadPackageJson(cwd$1) {
107
- if (!fs.existsSync(path.join(cwd$1, "package.json"))) return Err("Could not find `package.json`!");
108
- try {
109
- const content = fs.readFileSync(path.join(cwd$1, "package.json"), "utf8");
110
- if (!content) return Err("`package.json` is empty!");
111
- return Ok(JSON.parse(content));
112
- } catch (e) {
113
- return Err(e.message);
114
- }
115
- }
116
- /**
117
- * Install dependencies to current working directory.
118
- *
119
- * @example
120
- * ```ts
121
- * await installDependencies(['@vueuse/core', 'nuxt'], { cwd: process.cwd() })
122
- * ```
123
- *
124
- * @param packages - Packages to install
125
- * @param options - Options for `nypm`
126
- */
127
- async function installDependencies(packages, options = {}) {
128
- await runStep("Installing dependencies...", async (spinner) => {
129
- const dependencies = Array.isArray(packages) ? packages : packages?.dependencies || [];
130
- const devDependencies = Array.isArray(packages) ? [] : packages?.devDependencies || [];
131
- await addDependency(merge(...dependencies), {
132
- ...options,
133
- silent: true
134
- });
135
- await addDependency(merge(...devDependencies), {
136
- ...options,
137
- dev: true,
138
- silent: true
139
- });
140
- spinner.stop("Dependencies installed.");
141
- });
142
- }
143
- /**
144
- * Run `dev:prepare` script in current working directory.
145
- *
146
- * @example
147
- * ```ts
148
- * await runDevPrepare(process.cwd())
149
- * ```
150
- *
151
- * @param cwd - Current working directory
152
- */
153
- async function runDevPrepare(cwd$1) {
154
- await runStep(`Running ${chalk.cyan("dev:prepare")}...`, async (spinner) => {
155
- await runScript("dev:prepare", {
156
- cwd: cwd$1,
157
- silent: true
158
- });
159
- spinner.stop(`${chalk.cyan("dev:prepare")} done.`);
160
- });
161
- }
162
-
163
- //#endregion
164
- //#region src/utils/fetch.ts
165
- const fetch = makeFetch.defaults({ cachePath: ".weme" });
166
- async function fetchJSON(url) {
167
- return (await fetch(url)).json();
168
- }
169
- async function fetchURL(url) {
170
- return (await fetch(url)).text();
171
- }
172
- async function fetchBinary(url) {
173
- return (await fetch(url)).arrayBuffer();
174
- }
175
- function getGithubRepoName$1(url) {
176
- return url.trim().replace(/^https?:\/\/github.com\//, "").replace(/\.git$/, "");
177
- }
178
-
179
101
  //#endregion
180
102
  //#region src/utils/schema/registry.ts
181
103
  const REGISTRY_DIRNAME = "registry";
@@ -350,13 +272,27 @@ async function fetchRegistryItems(repo, registry, options) {
350
272
  spinner.stop("Failed to fetch registry configuration.", 1);
351
273
  exit(0);
352
274
  }
353
- const items = normalizeRegistryItems(registryConfig.unwrap().items.filter((item) => {
275
+ const registryItems = registryConfig.unwrap().items;
276
+ const matched = registryItems.filter((item) => {
354
277
  if (options?.type && item.type !== options.type) return false;
355
278
  if (options?.name) return Array.isArray(options.name) ? options.name.includes(item.name) : item.name === options.name;
356
279
  return true;
357
- }));
280
+ });
281
+ if (matched.length === 0) return {
282
+ dependencies: [],
283
+ devDependencies: [],
284
+ files: [],
285
+ cssVars: {}
286
+ };
287
+ const items = matched.reduce((acc, item) => {
288
+ acc.push(item);
289
+ if (item.registryDependencies) registryItems.forEach((i) => {
290
+ if (item.registryDependencies.includes(i.name)) acc.push(i);
291
+ });
292
+ return acc;
293
+ }, []);
358
294
  spinner.stop("Registry items fetched.");
359
- return items;
295
+ return normalizeRegistryItems(items);
360
296
  });
361
297
  }
362
298
  /**
@@ -415,5 +351,5 @@ function getGithubRepoName(url) {
415
351
  }
416
352
 
417
353
  //#endregion
418
- export { selectRegistry as a, getGithubRepoName$1 as c, runDevPrepare as d, compile as f, Ok as h, loadRegistryConfig as i, installDependencies as l, Err as m, fetchManifestConfig as n, fetchBinary as o, runStep as p, fetchRegistryItems as r, fetchURL as s, REGISTRY_DIRNAME as t, loadPackageJson as u };
419
- //# sourceMappingURL=registry-_alKtnin.mjs.map
354
+ export { loadRegistryConfig as a, merge as c, Ok as d, fetchBinary as f, fetchRegistryItems as i, runStep as l, getGithubRepoName$1 as m, fetchManifestConfig as n, selectRegistry as o, fetchURL as p, fetchRegistryConfig as r, compile as s, REGISTRY_DIRNAME as t, Err as u };
355
+ //# sourceMappingURL=registry-bjxXghAl.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-bjxXghAl.mjs","names":["getGithubRepoName","e: any","cwd"],"sources":["../src/utils/fetch.ts","../src/utils/result.ts","../src/utils/utilities.ts","../src/utils/schema/registry.ts"],"sourcesContent":["import makeFetch from 'make-fetch-happen'\n\nconst fetch = makeFetch.defaults({\n cachePath: '.weme',\n})\n\nexport async function fetchJSON<T>(url: string) {\n const res = await fetch(url)\n return res.json() as Promise<T>\n}\n\nexport async function fetchURL<T extends string>(url: string) {\n const res = await fetch(url)\n return res.text() as Promise<T>\n}\n\nexport async function fetchBinary(url: string) {\n const res = await fetch(url)\n return res.arrayBuffer() as Promise<ArrayBuffer>\n}\n\nexport function getGithubRepoName(url: string) {\n return url\n .trim()\n .replace(/^https?:\\/\\/github.com\\//, '')\n .replace(/\\.git$/, '')\n}\n","type ResultOptions<T, E> = { ok: true, value: T } | { ok: false, error: E }\n\nclass Result<T, E> {\n private readonly result: ResultOptions<T, E>\n\n constructor(result: ResultOptions<T, E>) {\n this.result = result\n }\n\n match<A, B = A>(success: (value: T) => A, error: (error: E) => B) {\n return this.result.ok\n ? success(this.result.value)\n : error(this.result.error)\n }\n\n map<A>(fn: (value: T) => A) {\n return this.match(\n value => Ok(fn(value)),\n error => Err(error),\n )\n }\n\n unwrap(): T {\n return this.match(\n value => value,\n () => {\n throw new Error('Called `.unwrap()` on a non `Ok` value.')\n },\n )\n }\n\n unwrapErr(): E {\n return this.match(\n () => {\n throw new Error('Called `.unwrapErr()` on a non `Err` value.')\n },\n error => error,\n )\n }\n\n expect(message: string) {\n return this.match(\n value => value,\n () => {\n throw new Error(message)\n },\n )\n }\n\n expectErr(message: string) {\n return this.match(\n () => {\n throw new Error(message)\n },\n error => error,\n )\n }\n\n isOk() {\n return this.match(\n () => true,\n () => false,\n )\n }\n\n isErr() {\n return this.match(\n () => false,\n () => true,\n )\n }\n}\n\nexport function Ok<T>(value: T) {\n return new Result<T, never>({ ok: true, value })\n}\n\nexport function Err<E>(error: E) {\n return new Result<never, E>({ ok: false, error })\n}\n\nexport type { Result }\n","import * as p from '@clack/prompts'\nimport handlebars from 'handlebars'\nimport { camelCase, kebabCase, pascalCase, titleCase } from 'scule'\n\nhandlebars.registerHelper('titleCase', value => titleCase(value))\nhandlebars.registerHelper('kebabCase', value => kebabCase(value))\nhandlebars.registerHelper('camelCase', value => camelCase(value))\nhandlebars.registerHelper('pascalCase', value => pascalCase(value))\nhandlebars.registerHelper('lowerCase', value => value.toLowerCase())\n\nexport function compile(input: string, data?: Record<string, any>) {\n return handlebars.compile(input)(data)\n}\n\nexport function merge(...packages: string[]): string[] {\n return packages.reduce((acc, item) => {\n if (!acc.includes(item))\n acc.push(item)\n return acc\n }, [] as string[])\n}\n\nexport async function runStep<T>(\n loading: string,\n fn: (spinner: ReturnType<typeof p.spinner>) => Promise<T>,\n): Promise<T> {\n const spinner = p.spinner()\n\n spinner.start(loading)\n\n return fn(spinner)\n}\n","import type { InlineCssVars, ManifestSchema, RegistryItem, RegistryItemFile, RegistryItemType, RegistrySchema } from '@weme-ui/schema'\nimport type { Result } from '../result'\nimport fs from 'node:fs'\nimport { exit } from 'node:process'\nimport * as p from '@clack/prompts'\nimport { MANIFEST_FILE_NAME, manifestSchema, REGISTRY_FILE_NAME, registrySchema } from '@weme-ui/schema'\nimport chalk from 'chalk'\nimport path from 'pathe'\nimport { fetchJSON } from '../fetch'\nimport { Err, Ok } from '../result'\nimport { runStep } from '../utilities'\n\nexport const REGISTRY_DIRNAME = 'registry'\n\nexport interface NormalizedRegistryItems {\n dependencies: string[]\n devDependencies: string[]\n files: RegistryItemFile[]\n cssVars: InlineCssVars\n}\n\n/**\n * Fetch `manifest.json` from repository.\n *\n * @example\n * ```ts\n * const result = await fetchManifestConfig('weme-ui/weme-ui')\n *\n * if (result.isErr()) {\n * console.error(result.unwrapErr())\n * return\n * }\n *\n * console.log(result.unwrap())\n * ```\n *\n * @param repo - Repository name\n * @return {Result<ManifestSchema[], string>}\n */\nexport async function fetchManifestConfig(repo: string): Promise<Result<ManifestSchema[], string>> {\n try {\n const json = await fetchJSON<ManifestSchema[]>(\n `https://raw.githubusercontent.com/${getGithubRepoName(repo)}/refs/heads/main/${REGISTRY_DIRNAME}/${MANIFEST_FILE_NAME}`,\n )\n\n const result = manifestSchema.array().safeParse(json)\n\n if (!result.success) {\n return Err(result.error.message)\n }\n\n return Ok(result.data)\n }\n catch (e: any) {\n return Err(e.message)\n }\n}\n\n/**\n * Fetch `registry.json` from repository.\n *\n * @example\n * ```ts\n * const result = await fetchRegistryConfig('weme-ui/weme-ui', 'weme-ui/std')\n *\n * if (result.isErr()) {\n * console.error(result.unwrapErr())\n * return\n * }\n *\n * console.log(result.unwrap())\n * ```\n *\n * @param repo - Repository name\n * @param registry - Registry name\n * @return {Result<RegistrySchema, string>}\n */\nexport async function fetchRegistryConfig(repo: string, registry: string): Promise<Result<RegistrySchema, string>> {\n try {\n const manifest = await fetchManifestConfig(repo)\n\n if (manifest.isErr()) {\n return Err(manifest.unwrapErr())\n }\n\n const config = manifest.unwrap().find(r => r.name === registry)\n\n if (!config) {\n return Err('Registry not found.')\n }\n\n const json = await fetchJSON<RegistrySchema>(\n `https://raw.githubusercontent.com/${getGithubRepoName(repo)}/refs/heads/main/${config.directory}/${REGISTRY_FILE_NAME}`,\n )\n\n const result = registrySchema.safeParse(json)\n\n if (!result.success) {\n return Err(result.error.message)\n }\n\n return Ok(result.data)\n }\n catch (e: any) {\n return Err(e.message)\n }\n}\n\n/**\n * Load `registry.json` from current working directory.\n *\n * @example\n * ```ts\n * const config = loadRegistryConfig(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<RegistrySchema, string>}\n */\nexport function loadRegistryConfig(cwd: string): Result<RegistrySchema, string> {\n try {\n const configPath = path.join(cwd, REGISTRY_FILE_NAME)\n\n if (!fs.existsSync(configPath)) {\n return Err('Could not find your registry configuration file!')\n }\n\n const json = JSON.parse(fs.readFileSync(configPath, 'utf8').toString())\n const result = registrySchema.safeParse(json)\n\n if (!result.success) {\n return Err(result.error.message)\n }\n\n return Ok(result.data)\n }\n catch (e: any) {\n return Err(e.message)\n }\n}\n\n/**\n * Select registry from repository.\n *\n * @example\n * ```ts\n * const registry = await selectRegistry('weme-ui/weme-ui')\n *\n * if (registry.isErr()) {\n * console.error(registry.unwrapErr())\n * return\n * }\n *\n * console.log(registry.unwrap().name)\n * ```\n */\nexport async function selectRegistry(repo: string) {\n return await runStep('Fetching repository information...', async (spinner) => {\n const repository = await fetchManifestConfig(repo)\n\n if (repository.isErr()) {\n spinner.stop('Failed to fetch repository configuration file.', 1)\n exit(0)\n }\n\n const registries = repository.unwrap().map(r => ({\n label: r.name,\n value: r.name,\n hint: r.description,\n }))\n\n spinner.stop(chalk.dim('Repository information fetched.'))\n\n const registry = await p.select({\n message: 'What is the default registry?',\n options: registries,\n initialValue: registries[0].value,\n })\n\n if (p.isCancel(registry)) {\n p.cancel('Operation cancelled.')\n exit(0)\n }\n\n const registryConfig = repository.unwrap().find(r => r.name === registry)!\n\n return {\n name: registryConfig.name,\n directory: registryConfig.directory,\n prefix: registryConfig.prefix,\n access: registryConfig.access,\n }\n })\n}\n\n/**\n * Fetch registry items.\n *\n * @example\n * ```ts\n * const items = await fetchRegistryItems(\n * 'weme-ui/weme-ui',\n * 'weme-ui/std',\n * 'component',\n * 'button',\n * )\n *\n * if (items.isErr()) {\n * console.error(items.unwrapErr())\n * return\n * }\n *\n * console.log(items.unwrap().dependencies)\n * ```\n *\n * @param repo - Repository name\n * @param registry - Registry name\n * @param options - Options\n * @param options.name - Registry item name\n * @param options.type - Registry item type\n * @return {Result<NormalizedRegistryItems, string>}\n */\nexport async function fetchRegistryItems(\n repo: string,\n registry: string,\n options?: {\n name?: string | string[]\n type?: RegistryItemType\n },\n): Promise<NormalizedRegistryItems> {\n return await runStep('Fetching registry items...', async (spinner) => {\n const registryConfig = await fetchRegistryConfig(repo, registry)\n\n if (registryConfig.isErr()) {\n spinner.stop('Failed to fetch registry configuration.', 1)\n exit(0)\n }\n\n const registryItems = registryConfig.unwrap().items\n\n const matched = registryItems.filter((item) => {\n if (options?.type && item.type !== options.type) {\n return false\n }\n\n if (options?.name) {\n return Array.isArray(options.name)\n ? options.name.includes(item.name)\n : item.name === options.name\n }\n\n return true\n })\n\n if (matched.length === 0) {\n return {\n dependencies: [],\n devDependencies: [],\n files: [],\n cssVars: {},\n }\n }\n\n const items = matched.reduce((acc, item) => {\n acc.push(item)\n\n if (item.registryDependencies) {\n registryItems.forEach((i) => {\n if (item.registryDependencies!.includes(i.name)) {\n acc.push(i)\n }\n })\n }\n\n return acc\n }, [] as RegistryItem[])\n\n spinner.stop('Registry items fetched.')\n\n return normalizeRegistryItems(items)\n })\n}\n\n/**\n * Normalize registry items.\n *\n * @example\n * ```ts\n * const items = normalizeRegistryItems(config.items)\n *\n * console.log(items.dependencies)\n * ```\n *\n * @param items - Registry items\n * @return {NormalizedRegistryItems}\n */\nexport function normalizeRegistryItems(items: RegistryItem[]): NormalizedRegistryItems {\n const dependencies = items.reduce((acc, item) => {\n acc.push(...(item.dependencies || []))\n return acc\n }, [] as string[])\n\n const devDependencies = items.reduce((acc, item) => {\n acc.push(...(item.devDependencies || []))\n return acc\n }, [] as string[])\n\n const files = items.reduce((acc, item) => {\n acc.push(...(item.files || []))\n return acc\n }, [] as RegistryItemFile[])\n\n const cssVars = items.reduce((acc, item) => {\n const nested = item.cssVars\n if (nested && Object.keys(nested).length > 0) {\n Object.entries(nested).forEach(\n ([name, value]) => {\n Object.entries(value).forEach(([subName, subValue]) => {\n acc[`${name}-${subName}`] = subValue\n })\n },\n )\n }\n\n return acc\n }, {} as InlineCssVars)\n\n return {\n dependencies,\n devDependencies,\n files,\n cssVars,\n }\n}\n\n/**\n * Get github repository name from url.\n *\n * @example\n * ```ts\n * const name = getGithubRepoName('https://github.com/weme-ui/weme-ui')\n *\n * console.log(name) // weme-ui/weme-ui\n * ```\n *\n * @param url - Github repository url\n * @return {string}\n */\nexport function getGithubRepoName(url: string): string {\n return url\n .trim()\n .replace(/^https?:\\/\\/github.com\\//, '')\n .replace(/\\.git$/, '')\n}\n"],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ import { i as resolvePaths, n as loadProjectConfig, t as installRegistryItems } from "./project-BpqIQqfR.mjs";
2
+ import { r as fetchRegistryConfig } from "./registry-bjxXghAl.mjs";
3
+ import "./package-DPYgVv-f.mjs";
4
+ import { exit } from "node:process";
5
+ import * as p from "@clack/prompts";
6
+ import chalk from "chalk";
7
+ import fs from "node:fs";
8
+ import { DEFAULT_REGISTRY_PREFIX } from "@weme-ui/schema";
9
+ import path from "pathe";
10
+
11
+ //#region src/commands/add/registry-item/context.ts
12
+ async function createContext(args) {
13
+ const context = {
14
+ project: {},
15
+ names: [],
16
+ repo: "",
17
+ registry: "",
18
+ prefix: "",
19
+ cwd: path.resolve(args.cwd)
20
+ };
21
+ if (args.names) context.names = args.names.split(",");
22
+ const project = loadProjectConfig(args.cwd);
23
+ if (project.isErr()) {
24
+ console.error(project.unwrapErr());
25
+ return context;
26
+ }
27
+ context.project = project.unwrap();
28
+ const defaultRegistry = project.unwrap().repos.find((r) => r.default);
29
+ if (defaultRegistry) {
30
+ context.repo = args.repo || defaultRegistry.repo;
31
+ context.registry = args.registry || defaultRegistry.registry;
32
+ context.prefix = defaultRegistry.prefix || DEFAULT_REGISTRY_PREFIX;
33
+ } else {
34
+ const selectRegistry = await p.select({
35
+ message: "Choose a registry?",
36
+ options: project.unwrap().repos.map((r) => ({
37
+ label: r.registry,
38
+ value: r,
39
+ hint: r.repo
40
+ }))
41
+ });
42
+ if (p.isCancel(selectRegistry)) {
43
+ p.cancel("Operation cancelled.");
44
+ exit(0);
45
+ }
46
+ context.registry = selectRegistry.registry;
47
+ context.repo = selectRegistry.repo;
48
+ context.prefix = selectRegistry.prefix || DEFAULT_REGISTRY_PREFIX;
49
+ }
50
+ if (context.names.length === 0) {
51
+ const remote = await fetchRegistryConfig(context.repo, context.registry);
52
+ if (remote.isErr()) {
53
+ console.error(remote.unwrapErr());
54
+ return context;
55
+ }
56
+ let options = await getOptionsByType(remote.unwrap().items);
57
+ while (options.length === 0) {
58
+ p.log.warn("No items found, please choose another type.");
59
+ options = await getOptionsByType(remote.unwrap().items);
60
+ }
61
+ const selectItems = await p.multiselect({
62
+ message: "Choose registry items to add:",
63
+ options,
64
+ maxItems: 10
65
+ });
66
+ if (p.isCancel(selectItems)) {
67
+ p.cancel("Operation cancelled.");
68
+ exit(0);
69
+ }
70
+ const paths = resolvePaths(context.cwd, context.project.paths).unwrap();
71
+ const updates = selectItems.filter((i) => {
72
+ let _path = "";
73
+ switch (i.type) {
74
+ case "component":
75
+ _path = path.join(paths.components, context.prefix, i.name);
76
+ break;
77
+ case "layout":
78
+ _path = path.join(paths.layouts, context.prefix, i.name);
79
+ break;
80
+ case "theme":
81
+ _path = path.join(paths.themes, context.prefix, i.name);
82
+ break;
83
+ case "page":
84
+ _path = path.join(paths.pages, i.name);
85
+ break;
86
+ }
87
+ return fs.existsSync(_path);
88
+ }).map((i) => i.name);
89
+ context.names = selectItems.filter((i) => !updates.includes(i.name)).map((i) => i.name);
90
+ }
91
+ return context;
92
+ }
93
+ async function getOptionsByType(items) {
94
+ const type = await p.select({
95
+ message: "Choose a type of registry items?",
96
+ options: [
97
+ {
98
+ label: "Component",
99
+ value: "component",
100
+ hint: `${items.filter((i) => i.type === "component").length} items`
101
+ },
102
+ {
103
+ label: "Layout",
104
+ value: "layout",
105
+ hint: `${items.filter((i) => i.type === "layout").length} items`
106
+ },
107
+ {
108
+ label: "Theme",
109
+ value: "theme",
110
+ hint: `${items.filter((i) => i.type === "theme").length} items`
111
+ },
112
+ {
113
+ label: "Block",
114
+ value: "block",
115
+ hint: `${items.filter((i) => i.type === "block").length} items`
116
+ },
117
+ {
118
+ label: "Page",
119
+ value: "page",
120
+ hint: `${items.filter((i) => i.type === "page").length} items`
121
+ }
122
+ ]
123
+ });
124
+ if (p.isCancel(type)) p.cancel("Operation cancelled.");
125
+ return items.filter((i) => i.type === type).sort((a, b) => a.name.localeCompare(b.name)).map((i) => ({
126
+ label: `${i.title} ${i.type}`,
127
+ value: i,
128
+ hint: i.description || ""
129
+ }));
130
+ }
131
+
132
+ //#endregion
133
+ //#region src/commands/add/registry-item/index.ts
134
+ async function registry_item_default(args) {
135
+ p.intro(chalk.bold.blue("✨ Adding Registry Items"));
136
+ const ctx = await createContext(args);
137
+ await installRegistryItems(ctx.cwd, ctx.repo, ctx.registry, ctx.project, { name: ctx.names });
138
+ p.outro("🥤 All done!");
139
+ }
140
+
141
+ //#endregion
142
+ export { registry_item_default as default };
143
+ //# sourceMappingURL=registry-item-B_neG4VO.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-item-B_neG4VO.mjs","names":["context: AddRegistryItemContext"],"sources":["../src/commands/add/registry-item/context.ts","../src/commands/add/registry-item/index.ts"],"sourcesContent":["import type { ProjectSchema, RegistryItem } from '@weme-ui/schema'\nimport fs from 'node:fs'\nimport { exit } from 'node:process'\nimport * as p from '@clack/prompts'\nimport { DEFAULT_REGISTRY_PREFIX } from '@weme-ui/schema'\nimport path from 'pathe'\nimport { loadProjectConfig, resolvePaths } from '../../../utils/schema/project'\nimport { fetchRegistryConfig } from '../../../utils/schema/registry'\n\nexport interface AddRegistryItemContext {\n project: ProjectSchema\n names: string[]\n repo: string\n registry: string\n prefix: string\n cwd: string\n}\n\nexport async function createContext(args: Record<string, any>): Promise<AddRegistryItemContext> {\n const context: AddRegistryItemContext = {\n project: {} as ProjectSchema,\n names: [],\n repo: '',\n registry: '',\n prefix: '',\n cwd: path.resolve(args.cwd),\n }\n\n if (args.names)\n context.names = args.names.split(',')\n\n const project = loadProjectConfig(args.cwd)\n\n if (project.isErr()) {\n console.error(project.unwrapErr())\n return context\n }\n\n context.project = project.unwrap()\n\n const defaultRegistry = project.unwrap().repos.find(r => r.default)\n\n if (defaultRegistry) {\n context.repo = args.repo || defaultRegistry.repo\n context.registry = args.registry || defaultRegistry.registry\n context.prefix = defaultRegistry.prefix || DEFAULT_REGISTRY_PREFIX\n }\n else {\n const selectRegistry = await p.select({\n message: 'Choose a registry?',\n options: project.unwrap().repos.map(r => ({\n label: r.registry,\n value: r,\n hint: r.repo,\n })),\n })\n\n if (p.isCancel(selectRegistry)) {\n p.cancel('Operation cancelled.')\n exit(0)\n }\n\n context.registry = selectRegistry.registry\n context.repo = selectRegistry.repo\n context.prefix = selectRegistry.prefix || DEFAULT_REGISTRY_PREFIX\n }\n\n if (context.names.length === 0) {\n const remote = await fetchRegistryConfig(context.repo, context.registry)\n\n if (remote.isErr()) {\n console.error(remote.unwrapErr())\n return context\n }\n\n let options = await getOptionsByType(remote.unwrap().items)\n\n while (options.length === 0) {\n p.log.warn('No items found, please choose another type.')\n options = await getOptionsByType(remote.unwrap().items)\n }\n\n const selectItems = await p.multiselect({\n message: 'Choose registry items to add:',\n options,\n maxItems: 10,\n })\n\n if (p.isCancel(selectItems)) {\n p.cancel('Operation cancelled.')\n exit(0)\n }\n\n const paths = resolvePaths(context.cwd, context.project.paths).unwrap()\n\n // TODO: diff updates and merge them all.\n const updates = selectItems\n .filter((i) => {\n let _path = ''\n\n switch (i.type) {\n case 'component':\n _path = path.join(paths.components, context.prefix, i.name)\n break\n case 'layout':\n _path = path.join(paths.layouts, context.prefix, i.name)\n break\n case 'theme':\n _path = path.join(paths.themes, context.prefix, i.name)\n break\n case 'page':\n _path = path.join(paths.pages, i.name)\n break\n }\n\n return fs.existsSync(_path)\n })\n .map(i => i.name)\n\n context.names = selectItems\n .filter(i => !updates.includes(i.name))\n .map(i => i.name)\n }\n\n return context\n}\n\nasync function getOptionsByType(\n items: RegistryItem[],\n): Promise<{\n label: string\n value: RegistryItem\n hint: string\n}[]> {\n const type = await p.select({\n message: 'Choose a type of registry items?',\n options: [\n { label: 'Component', value: 'component', hint: `${items.filter(i => i.type === 'component').length} items` },\n { label: 'Layout', value: 'layout', hint: `${items.filter(i => i.type === 'layout').length} items` },\n { label: 'Theme', value: 'theme', hint: `${items.filter(i => i.type === 'theme').length} items` },\n { label: 'Block', value: 'block', hint: `${items.filter(i => i.type === 'block').length} items` },\n { label: 'Page', value: 'page', hint: `${items.filter(i => i.type === 'page').length} items` },\n ],\n })\n\n if (p.isCancel(type)) {\n p.cancel('Operation cancelled.')\n }\n\n return items\n .filter(i => i.type === type)\n .sort((a, b) => a.name.localeCompare(b.name))\n .map(i => ({\n label: `${i.title} ${i.type}`,\n value: i,\n hint: i.description || '',\n }))\n}\n","import * as p from '@clack/prompts'\nimport chalk from 'chalk'\nimport { installRegistryItems } from '../../../utils/schema/project'\nimport { createContext } from './context'\n\nexport default async function (args: Record<string, any>) {\n p.intro(chalk.bold.blue('✨ Adding Registry Items'))\n\n const ctx = await createContext(args)\n\n await installRegistryItems(\n ctx.cwd,\n ctx.repo,\n ctx.registry,\n ctx.project,\n { name: ctx.names },\n )\n\n p.outro('🥤 All done!')\n}\n"],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import { a as loadRegistryConfig, t as REGISTRY_DIRNAME } from "./registry-bjxXghAl.mjs";
2
+ import { defineCommand } from "citty";
3
+ import { cwd } from "node:process";
4
+ import * as p from "@clack/prompts";
5
+ import chalk from "chalk";
6
+ import fs from "node:fs";
7
+ import path from "pathe";
8
+ import { glob } from "tinyglobby";
9
+
10
+ //#region src/commands/verify/index.ts
11
+ /**
12
+ * Usage
13
+ *
14
+ * - **Verify all registries**:
15
+ * - ```weme-ui verify```
16
+ */
17
+ var verify_default = defineCommand({
18
+ meta: {
19
+ name: "verify",
20
+ description: "Verify all registries."
21
+ },
22
+ args: { cwd: {
23
+ type: "string",
24
+ description: "Change working directory.",
25
+ valueHint: "PATH",
26
+ default: cwd()
27
+ } },
28
+ async setup({ args }) {
29
+ p.intro(chalk.bold.white("✨ Verifying registries..."));
30
+ args.cwd = path.resolve(args.cwd);
31
+ if (!fs.existsSync(path.join(args.cwd, REGISTRY_DIRNAME))) {
32
+ p.cancel("No registries found.");
33
+ return;
34
+ }
35
+ const dirs = await glob([`${REGISTRY_DIRNAME}/*`], {
36
+ cwd: args.cwd,
37
+ absolute: false,
38
+ onlyDirectories: true,
39
+ ignore: ["**/node_modules/**"]
40
+ });
41
+ (await Promise.all(dirs.map(async (dir) => {
42
+ const results = {};
43
+ const registry = loadRegistryConfig(path.join(args.cwd, dir));
44
+ if (registry.isErr()) {
45
+ p.log.error(registry.unwrapErr());
46
+ return results;
47
+ }
48
+ const registryName = registry.unwrap().name;
49
+ (registry.unwrap().items || []).forEach((item) => {
50
+ if (item.files.length === 0) {
51
+ results[registryName] = results[registryName] || [];
52
+ results[registryName].push(`${item.name} : No files found.`);
53
+ return;
54
+ }
55
+ item.files.forEach((file) => {
56
+ if (!fs.existsSync(path.join(args.cwd, dir, file.path))) {
57
+ results[registryName] = results[registryName] || [];
58
+ results[registryName].push(`${item.name}: ${chalk.underline.yellow(file.path)} not exists.`);
59
+ }
60
+ });
61
+ });
62
+ return results;
63
+ }))).forEach((error) => {
64
+ Object.entries(error).forEach(([name, messages]) => {
65
+ if (messages.length === 0) return;
66
+ p.log.info(chalk.bold(name));
67
+ messages.forEach((message) => {
68
+ p.log.warn(message);
69
+ });
70
+ });
71
+ });
72
+ p.outro("🥤 All done!");
73
+ }
74
+ });
75
+
76
+ //#endregion
77
+ export { verify_default as default };
78
+ //# sourceMappingURL=verify-CXBxJkzK.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-CXBxJkzK.mjs","names":["results: Record<string, string[]>"],"sources":["../src/commands/verify/index.ts"],"sourcesContent":["import fs from 'node:fs'\nimport { cwd } from 'node:process'\nimport * as p from '@clack/prompts'\nimport chalk from 'chalk'\nimport { defineCommand } from 'citty'\nimport path from 'pathe'\nimport { glob } from 'tinyglobby'\nimport { loadRegistryConfig, REGISTRY_DIRNAME } from '../../utils/schema/registry'\n\n/**\n * Usage\n *\n * - **Verify all registries**:\n * - ```weme-ui verify```\n */\nexport default defineCommand({\n meta: {\n name: 'verify',\n description: 'Verify all registries.',\n },\n\n args: {\n cwd: {\n type: 'string',\n description: 'Change working directory.',\n valueHint: 'PATH',\n default: cwd(),\n },\n },\n\n async setup({ args }) {\n p.intro(chalk.bold.white('✨ Verifying registries...'))\n\n args.cwd = path.resolve(args.cwd)\n\n if (!fs.existsSync(path.join(args.cwd, REGISTRY_DIRNAME))) {\n p.cancel('No registries found.')\n return\n }\n\n const dirs = await glob([`${REGISTRY_DIRNAME}/*`], {\n cwd: args.cwd,\n absolute: false,\n onlyDirectories: true,\n ignore: ['**/node_modules/**'],\n })\n\n const errors = await Promise.all(dirs.map(async (dir) => {\n const results: Record<string, string[]> = {}\n const registry = loadRegistryConfig(path.join(args.cwd, dir))\n\n if (registry.isErr()) {\n p.log.error(registry.unwrapErr())\n return results\n }\n\n const registryName = registry.unwrap().name\n const items = registry.unwrap().items || []\n\n items.forEach((item) => {\n if (item.files.length === 0) {\n results[registryName] = results[registryName] || []\n results[registryName].push(`${item.name} : No files found.`)\n return\n }\n\n item.files.forEach((file) => {\n if (!fs.existsSync(path.join(args.cwd, dir, file.path))) {\n results[registryName] = results[registryName] || []\n results[registryName].push(`${item.name}: ${chalk.underline.yellow(file.path)} not exists.`)\n }\n })\n })\n\n return results\n }))\n\n // Display errors\n errors.forEach((error) => {\n Object.entries(error).forEach(([name, messages]) => {\n if (messages.length === 0)\n return\n\n p.log.info(chalk.bold(name))\n messages.forEach((message) => {\n p.log.warn(message)\n })\n })\n })\n\n p.outro('🥤 All done!')\n },\n})\n"],"mappings":";;;;;;;;;;;;;;;;AAeA,qBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;EACd;CAED,MAAM,EACJ,KAAK;EACH,MAAM;EACN,aAAa;EACb,WAAW;EACX,SAAS,KAAK;EACf,EACF;CAED,MAAM,MAAM,EAAE,QAAQ;AACpB,IAAE,MAAM,MAAM,KAAK,MAAM,4BAA4B,CAAC;AAEtD,OAAK,MAAM,KAAK,QAAQ,KAAK,IAAI;AAEjC,MAAI,CAAC,GAAG,WAAW,KAAK,KAAK,KAAK,KAAK,iBAAiB,CAAC,EAAE;AACzD,KAAE,OAAO,uBAAuB;AAChC;;EAGF,MAAM,OAAO,MAAM,KAAK,CAAC,GAAG,iBAAiB,IAAI,EAAE;GACjD,KAAK,KAAK;GACV,UAAU;GACV,iBAAiB;GACjB,QAAQ,CAAC,qBAAqB;GAC/B,CAAC;AAiCF,GA/Be,MAAM,QAAQ,IAAI,KAAK,IAAI,OAAO,QAAQ;GACvD,MAAMA,UAAoC,EAAE;GAC5C,MAAM,WAAW,mBAAmB,KAAK,KAAK,KAAK,KAAK,IAAI,CAAC;AAE7D,OAAI,SAAS,OAAO,EAAE;AACpB,MAAE,IAAI,MAAM,SAAS,WAAW,CAAC;AACjC,WAAO;;GAGT,MAAM,eAAe,SAAS,QAAQ,CAAC;AAGvC,IAFc,SAAS,QAAQ,CAAC,SAAS,EAAE,EAErC,SAAS,SAAS;AACtB,QAAI,KAAK,MAAM,WAAW,GAAG;AAC3B,aAAQ,gBAAgB,QAAQ,iBAAiB,EAAE;AACnD,aAAQ,cAAc,KAAK,GAAG,KAAK,KAAK,oBAAoB;AAC5D;;AAGF,SAAK,MAAM,SAAS,SAAS;AAC3B,SAAI,CAAC,GAAG,WAAW,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,CAAC,EAAE;AACvD,cAAQ,gBAAgB,QAAQ,iBAAiB,EAAE;AACnD,cAAQ,cAAc,KAAK,GAAG,KAAK,KAAK,IAAI,MAAM,UAAU,OAAO,KAAK,KAAK,CAAC,cAAc;;MAE9F;KACF;AAEF,UAAO;IACP,CAAC,EAGI,SAAS,UAAU;AACxB,UAAO,QAAQ,MAAM,CAAC,SAAS,CAAC,MAAM,cAAc;AAClD,QAAI,SAAS,WAAW,EACtB;AAEF,MAAE,IAAI,KAAK,MAAM,KAAK,KAAK,CAAC;AAC5B,aAAS,SAAS,YAAY;AAC5B,OAAE,IAAI,KAAK,QAAQ;MACnB;KACF;IACF;AAEF,IAAE,MAAM,eAAe;;CAE1B,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@weme-ui/weme-ui",
3
3
  "type": "module",
4
- "version": "0.1.4-beta.1",
4
+ "version": "0.1.5",
5
5
  "description": "Re-usable UI components with Reka UI and UnoCSS.",
6
6
  "author": "Allen Luo <luoyi@mouji.net>",
7
7
  "license": "MIT",
@@ -51,7 +51,7 @@
51
51
  "columnify": "^1.6.0",
52
52
  "debug": "^4.4.3",
53
53
  "handlebars": "^4.7.8",
54
- "make-fetch-happen": "^15.0.2",
54
+ "make-fetch-happen": "^15.0.3",
55
55
  "mkdirp": "^3.0.1",
56
56
  "nypm": "^0.6.2",
57
57
  "ora": "^9.0.0",
@@ -61,16 +61,16 @@
61
61
  "tinyexec": "^1.0.2",
62
62
  "tinyglobby": "^0.2.15",
63
63
  "zod": "^4.1.12",
64
- "@weme-ui/schema": "0.1.4-beta.1"
64
+ "@weme-ui/schema": "0.1.5"
65
65
  },
66
66
  "devDependencies": {
67
67
  "@types/columnify": "^1.5.4",
68
68
  "@types/make-fetch-happen": "^10.0.4",
69
69
  "@types/node": "24.0.15",
70
70
  "bumpp": "^10.3.1",
71
- "tsdown": "^0.16.1",
71
+ "tsdown": "^0.16.6",
72
72
  "typescript": "^5.9.3",
73
- "vitest": "^4.0.8"
73
+ "vitest": "^4.0.13"
74
74
  },
75
75
  "scripts": {
76
76
  "build": "tsdown",
@@ -1 +0,0 @@
1
- {"version":3,"file":"manifest-B2Fg8BvI.mjs","names":[],"sources":["../src/commands/build/manifest.ts"],"sourcesContent":["import type { ManifestSchema } from '@weme-ui/schema'\nimport fs from 'node:fs'\nimport * as p from '@clack/prompts'\nimport { DEFAULT_REGISTRY_PREFIX, MANIFEST_FILE_NAME, manifestSchema, REGISTRY_FILE_NAME } from '@weme-ui/schema'\nimport chalk from 'chalk'\nimport path from 'pathe'\nimport { glob } from 'tinyglobby'\nimport { loadPackageJson } from '../../utils/schema/package'\nimport { loadRegistryConfig, REGISTRY_DIRNAME } from '../../utils/schema/registry'\n\nexport default async function (args: Record<string, any>) {\n p.intro(chalk.bold.blue('✨ Building Weme UI Repository'))\n\n const registries = await loadRegistries(args.cwd)\n await updateRegistries(args.cwd, registries)\n await updateManifest(args.cwd, registries)\n\n p.outro('🥤 All done!')\n}\n\nasync function loadRegistries(cwd: string): Promise<ManifestSchema[]> {\n const spinner = p.spinner()\n\n spinner.start('Loading registries...')\n\n const files = await glob([`**/${REGISTRY_FILE_NAME}`], {\n cwd: path.resolve(cwd, REGISTRY_DIRNAME),\n absolute: false,\n onlyFiles: true,\n ignore: ['**/node_modules/**'],\n })\n\n const registries = files.reduce(\n (acc, file) => {\n const directory = path.dirname(file)\n const config = loadRegistryConfig(path.resolve(cwd, REGISTRY_DIRNAME, directory))\n const pkg = loadPackageJson(path.resolve(cwd, REGISTRY_DIRNAME, directory))\n\n if (config.isOk()) {\n const result = manifestSchema.safeParse({\n name: config.unwrap().name,\n description: config.unwrap().description,\n version: pkg.unwrap().version || '0.0.0',\n directory: path.join(REGISTRY_DIRNAME, directory),\n prefix: config.unwrap().prefix || DEFAULT_REGISTRY_PREFIX,\n access: config.unwrap().access || 'public',\n items: {\n components: config.unwrap().items.filter(item => item.type === 'component').length,\n layouts: config.unwrap().items.filter(item => item.type === 'layout').length,\n themes: config.unwrap().items.filter(item => item.type === 'theme').length,\n blocks: config.unwrap().items.filter(item => item.type === 'block').length,\n pages: config.unwrap().items.filter(item => item.type === 'page').length,\n },\n updated: new Date().toISOString(),\n })\n\n if (result.success) {\n spinner.message(`Building ${result.data.name}...`)\n acc.push(result.data)\n }\n }\n\n return acc\n },\n [] as ManifestSchema[],\n )\n\n spinner.stop('Registries loaded!')\n\n return registries\n}\n\nasync function updateRegistries(cwd: string, registries: ManifestSchema[]) {\n const spinner = p.spinner()\n\n spinner.start('Updating registries...')\n\n registries.forEach((reg) => {\n const registry = loadRegistryConfig(path.resolve(cwd, reg.directory)).unwrap()\n\n registry.version = reg.version\n\n fs.writeFileSync(\n path.resolve(cwd, reg.directory, REGISTRY_FILE_NAME),\n `${JSON.stringify(registry, null, 2)}\\n`,\n )\n })\n\n spinner.stop('Registries updated!')\n}\n\nasync function updateManifest(cwd: string, registries: ManifestSchema[]) {\n const spinner = p.spinner()\n\n spinner.start('Updating manifest...')\n\n fs.writeFileSync(\n path.resolve(cwd, REGISTRY_DIRNAME, MANIFEST_FILE_NAME),\n `${JSON.stringify(registries, null, 2)}\\n`,\n )\n\n spinner.stop('Manifest updated!')\n}\n"],"mappings":";;;;;;;;;AAUA,gCAA+B,MAA2B;AACxD,GAAE,MAAM,MAAM,KAAK,KAAK,gCAAgC,CAAC;CAEzD,MAAM,aAAa,MAAM,eAAe,KAAK,IAAI;AACjD,OAAM,iBAAiB,KAAK,KAAK,WAAW;AAC5C,OAAM,eAAe,KAAK,KAAK,WAAW;AAE1C,GAAE,MAAM,eAAe;;AAGzB,eAAe,eAAe,KAAwC;CACpE,MAAM,UAAU,EAAE,SAAS;AAE3B,SAAQ,MAAM,wBAAwB;CAStC,MAAM,cAPQ,MAAM,KAAK,CAAC,MAAM,qBAAqB,EAAE;EACrD,KAAK,KAAK,QAAQ,KAAK,iBAAiB;EACxC,UAAU;EACV,WAAW;EACX,QAAQ,CAAC,qBAAqB;EAC/B,CAAC,EAEuB,QACtB,KAAK,SAAS;EACb,MAAM,YAAY,KAAK,QAAQ,KAAK;EACpC,MAAM,SAAS,mBAAmB,KAAK,QAAQ,KAAK,kBAAkB,UAAU,CAAC;EACjF,MAAM,MAAM,gBAAgB,KAAK,QAAQ,KAAK,kBAAkB,UAAU,CAAC;AAE3E,MAAI,OAAO,MAAM,EAAE;GACjB,MAAM,SAAS,eAAe,UAAU;IACtC,MAAM,OAAO,QAAQ,CAAC;IACtB,aAAa,OAAO,QAAQ,CAAC;IAC7B,SAAS,IAAI,QAAQ,CAAC,WAAW;IACjC,WAAW,KAAK,KAAK,kBAAkB,UAAU;IACjD,QAAQ,OAAO,QAAQ,CAAC,UAAU;IAClC,QAAQ,OAAO,QAAQ,CAAC,UAAU;IAClC,OAAO;KACL,YAAY,OAAO,QAAQ,CAAC,MAAM,QAAO,SAAQ,KAAK,SAAS,YAAY,CAAC;KAC5E,SAAS,OAAO,QAAQ,CAAC,MAAM,QAAO,SAAQ,KAAK,SAAS,SAAS,CAAC;KACtE,QAAQ,OAAO,QAAQ,CAAC,MAAM,QAAO,SAAQ,KAAK,SAAS,QAAQ,CAAC;KACpE,QAAQ,OAAO,QAAQ,CAAC,MAAM,QAAO,SAAQ,KAAK,SAAS,QAAQ,CAAC;KACpE,OAAO,OAAO,QAAQ,CAAC,MAAM,QAAO,SAAQ,KAAK,SAAS,OAAO,CAAC;KACnE;IACD,0BAAS,IAAI,MAAM,EAAC,aAAa;IAClC,CAAC;AAEF,OAAI,OAAO,SAAS;AAClB,YAAQ,QAAQ,YAAY,OAAO,KAAK,KAAK,KAAK;AAClD,QAAI,KAAK,OAAO,KAAK;;;AAIzB,SAAO;IAET,EAAE,CACH;AAED,SAAQ,KAAK,qBAAqB;AAElC,QAAO;;AAGT,eAAe,iBAAiB,KAAa,YAA8B;CACzE,MAAM,UAAU,EAAE,SAAS;AAE3B,SAAQ,MAAM,yBAAyB;AAEvC,YAAW,SAAS,QAAQ;EAC1B,MAAM,WAAW,mBAAmB,KAAK,QAAQ,KAAK,IAAI,UAAU,CAAC,CAAC,QAAQ;AAE9E,WAAS,UAAU,IAAI;AAEvB,KAAG,cACD,KAAK,QAAQ,KAAK,IAAI,WAAW,mBAAmB,EACpD,GAAG,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC,IACtC;GACD;AAEF,SAAQ,KAAK,sBAAsB;;AAGrC,eAAe,eAAe,KAAa,YAA8B;CACvE,MAAM,UAAU,EAAE,SAAS;AAE3B,SAAQ,MAAM,uBAAuB;AAErC,IAAG,cACD,KAAK,QAAQ,KAAK,kBAAkB,mBAAmB,EACvD,GAAG,KAAK,UAAU,YAAY,MAAM,EAAE,CAAC,IACxC;AAED,SAAQ,KAAK,oBAAoB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-Dt0TFob4.mjs","names":["cwd","lines: string[]"],"sources":["../src/commands/init/project/context.ts","../src/commands/init/project/files.ts","../src/commands/init/project/index.ts"],"sourcesContent":["import type { ProjectPaths } from '@weme-ui/schema'\nimport fs from 'node:fs'\nimport { exit } from 'node:process'\nimport * as p from '@clack/prompts'\nimport path from 'pathe'\nimport { selectRegistry } from '../../../utils/schema/registry'\n\nexport interface InitProjectContext {\n repo: string\n registry: string\n directory: string\n prefix: string\n access: string\n paths: ProjectPaths\n cwd: string\n}\n\nexport async function createContext(args: Record<string, any>): Promise<InitProjectContext> {\n const cwd = path.resolve(args.cwd)\n\n if (!fs.existsSync(cwd))\n fs.mkdirSync(cwd, { recursive: true })\n\n const components = await p.text({\n message: 'Please enter a default path to install the components.',\n placeholder: '~/components',\n defaultValue: '~/components',\n validate: (value: string) => {\n if (!value)\n return 'Path is required!'\n },\n })\n\n if (p.isCancel(components)) {\n p.cancel('Operation cancelled.')\n exit(0)\n }\n\n const repo = args.repo || 'weme-ui/weme-ui'\n const registry = await selectRegistry(repo)\n\n const prefix = await p.text({\n message: 'What is the prefix of the registry?',\n placeholder: registry.prefix,\n defaultValue: registry.prefix,\n })\n\n if (p.isCancel(prefix)) {\n p.cancel('Operation cancelled.')\n exit(0)\n }\n\n return {\n repo,\n registry: registry.name,\n directory: registry.directory,\n prefix,\n access: registry.access,\n paths: {\n components,\n },\n cwd,\n }\n}\n","import type { InitProjectContext } from './context'\nimport { Buffer } from 'node:buffer'\nimport fs from 'node:fs'\nimport * as p from '@clack/prompts'\nimport { PROJECT_FILE_NAME, PROJECT_SCHEMA_URL, projectSchema } from '@weme-ui/schema'\nimport chalk from 'chalk'\nimport path from 'pathe'\nimport { fetchBinary, fetchURL } from '../../../utils/fetch'\nimport { runStep } from '../../../utils/utilities'\n\nexport async function createFiles(ctx: InitProjectContext) {\n await runStep('Generating project files...', async (spinner) => {\n await Promise.all([\n 'app/app.vue',\n 'public/robots.txt',\n 'public/favicon.ico',\n 'package.json',\n 'tsconfig.json',\n '.gitignore',\n 'README.md',\n ].map(async (file) => {\n spinner.message(`Generating ${chalk.cyan(file)}...`)\n\n const isFavicon = file === 'public/favicon.ico'\n const fetchFn = isFavicon ? fetchBinary : fetchURL\n\n const content = await fetchFn(\n `https://raw.githubusercontent.com/weme-ui/templates/refs/heads/main/project/${file}`,\n )\n\n if (content) {\n const filePath = path.join(ctx.cwd, file)\n const dirname = path.dirname(filePath)\n\n if (!fs.existsSync(dirname))\n fs.mkdirSync(dirname, { recursive: true })\n\n if (isFavicon) {\n const buffer = Buffer.from(content as ArrayBuffer)\n fs.writeFileSync(filePath, buffer, {\n flag: 'w',\n })\n }\n else {\n fs.writeFileSync(\n path.join(ctx.cwd, file),\n content as string,\n {\n encoding: 'utf8',\n flag: 'w',\n },\n )\n }\n }\n }))\n\n spinner.stop('Project files generated!')\n })\n}\n\nexport async function createNuxtConfig(ctx: InitProjectContext) {\n await runStep(`Generating ${chalk.cyan('nuxt.config.ts')}...`, async (spinner) => {\n const lines: string[] = [\n 'export default defineNuxtConfig({',\n ' devtools: {',\n ' enabled: true,',\n ' },',\n ` compatibilityDate: ${JSON.stringify(new Date().toISOString().slice(0, 10))},`,\n '})',\n ]\n\n fs.writeFileSync(\n path.join(ctx.cwd, 'nuxt.config.ts'),\n `${lines.join('\\n')}\\n`,\n {\n encoding: 'utf8',\n flag: 'w',\n },\n )\n\n spinner.stop(`${chalk.cyan('nuxt.config.ts')} generated!`)\n })\n}\n\nexport async function createProjectConfig(ctx: InitProjectContext) {\n return await runStep(`Generating ${chalk.cyan(PROJECT_FILE_NAME)}...`, async (spinner) => {\n const config = projectSchema.safeParse({\n $schema: PROJECT_SCHEMA_URL,\n repos: [\n {\n repo: ctx.repo,\n registry: ctx.registry,\n prefix: ctx.prefix,\n default: true,\n },\n ],\n paths: ctx.paths,\n })\n\n if (!config.success) {\n p.log.error(config.error.message)\n return\n }\n\n fs.writeFileSync(\n path.join(ctx.cwd, PROJECT_FILE_NAME),\n `${JSON.stringify(config.data, null, 2)}\\n`,\n {\n encoding: 'utf8',\n flag: 'w',\n },\n )\n\n spinner.stop(`${chalk.cyan(PROJECT_FILE_NAME)} generated!`)\n\n return config.data\n })\n}\n","import * as p from '@clack/prompts'\nimport chalk from 'chalk'\nimport { runDevPrepare } from '../../../utils/schema/package'\nimport { installRegistryItems } from '../../../utils/schema/project'\nimport { createContext } from './context'\nimport { createFiles, createNuxtConfig, createProjectConfig } from './files'\n\nexport default async function (args: Record<string, any>) {\n p.intro(chalk.bold.blue('✨ Initializing Weme UI Project'))\n\n const ctx = await createContext(args)\n const project = await createProjectConfig(ctx)\n\n if (project) {\n await createFiles(ctx)\n await createNuxtConfig(ctx)\n\n await installRegistryItems(\n ctx.cwd,\n ctx.repo,\n ctx.registry,\n project,\n { type: 'init' },\n )\n\n await runDevPrepare(ctx.cwd)\n }\n else {\n p.log.error('Failed to create project configuration file.')\n }\n\n p.outro('🥤 All done!')\n}\n"],"mappings":"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"}