@weme-ui/weme-ui 0.1.2-beta.1 → 0.1.2-beta.4

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 (27) hide show
  1. package/dist/{build-DPZMEzzf.mjs → build-CglClYuP.mjs} +2 -2
  2. package/dist/{build-DPZMEzzf.mjs.map → build-CglClYuP.mjs.map} +1 -1
  3. package/dist/index.mjs +4 -4
  4. package/dist/index.mjs.map +1 -1
  5. package/dist/{info-Bz7qrvGn.mjs → info-U2T2YvOz.mjs} +3 -3
  6. package/dist/{info-Bz7qrvGn.mjs.map → info-U2T2YvOz.mjs.map} +1 -1
  7. package/dist/{init-BHl8Lwuu.mjs → init-DuYt1NgW.mjs} +3 -3
  8. package/dist/{init-BHl8Lwuu.mjs.map → init-DuYt1NgW.mjs.map} +1 -1
  9. package/dist/{manifest-BtSx8-dp.mjs → manifest-B2Fg8BvI.mjs} +15 -3
  10. package/dist/manifest-B2Fg8BvI.mjs.map +1 -0
  11. package/dist/{project-2Uhjf6-l.mjs → project-D7GTkAzz.mjs} +3 -4
  12. package/dist/{project-2Uhjf6-l.mjs.map → project-D7GTkAzz.mjs.map} +1 -1
  13. package/dist/{project-DH8JkbwF.mjs → project-Dt0TFob4.mjs} +3 -4
  14. package/dist/{project-DH8JkbwF.mjs.map → project-Dt0TFob4.mjs.map} +1 -1
  15. package/dist/{project-BV4nSHdV.mjs → project-rHqBMgh9.mjs} +2 -3
  16. package/dist/{project-BV4nSHdV.mjs.map → project-rHqBMgh9.mjs.map} +1 -1
  17. package/dist/{registry-Cm_OqNvK.mjs → registry-CAa9iHPj.mjs} +2 -3
  18. package/dist/{registry-Cm_OqNvK.mjs.map → registry-CAa9iHPj.mjs.map} +1 -1
  19. package/dist/{registry-CqjT93gC.mjs → registry-CK6l29SA.mjs} +3 -4
  20. package/dist/{registry-CqjT93gC.mjs.map → registry-CK6l29SA.mjs.map} +1 -1
  21. package/dist/{registry-BChtLWfr.mjs → registry-_alKtnin.mjs} +97 -19
  22. package/dist/registry-_alKtnin.mjs.map +1 -0
  23. package/package.json +4 -4
  24. package/dist/manifest-BtSx8-dp.mjs.map +0 -1
  25. package/dist/package-e8qxd1tJ.mjs +0 -85
  26. package/dist/package-e8qxd1tJ.mjs.map +0 -1
  27. package/dist/registry-BChtLWfr.mjs.map +0 -1
@@ -14,10 +14,10 @@ var build_default = defineCommand({
14
14
  default: cwd()
15
15
  } },
16
16
  async setup({ args }) {
17
- await import("./manifest-BtSx8-dp.mjs").then((r) => r.default(args));
17
+ await import("./manifest-B2Fg8BvI.mjs").then((r) => r.default(args));
18
18
  }
19
19
  });
20
20
 
21
21
  //#endregion
22
22
  export { build_default as default };
23
- //# sourceMappingURL=build-DPZMEzzf.mjs.map
23
+ //# sourceMappingURL=build-CglClYuP.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-DPZMEzzf.mjs","names":[],"sources":["../src/commands/build/index.ts"],"sourcesContent":["import { cwd } from 'node:process'\nimport { defineCommand } from 'citty'\n\nexport default defineCommand({\n meta: {\n name: 'build',\n description: 'Build your repository.',\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 await import('./manifest').then(r => r.default(args))\n },\n})\n"],"mappings":";;;;AAGA,oBAAe,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,QAAM,OAAO,2BAAc,MAAK,MAAK,EAAE,QAAQ,KAAK,CAAC;;CAExD,CAAC"}
1
+ {"version":3,"file":"build-CglClYuP.mjs","names":[],"sources":["../src/commands/build/index.ts"],"sourcesContent":["import { cwd } from 'node:process'\nimport { defineCommand } from 'citty'\n\nexport default defineCommand({\n meta: {\n name: 'build',\n description: 'Build your repository.',\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 await import('./manifest').then(r => r.default(args))\n },\n})\n"],"mappings":";;;;AAGA,oBAAe,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,QAAM,OAAO,2BAAc,MAAK,MAAK,EAAE,QAAQ,KAAK,CAAC;;CAExD,CAAC"}
package/dist/index.mjs CHANGED
@@ -2,7 +2,7 @@
2
2
  import { defineCommand, runMain } from "citty";
3
3
 
4
4
  //#region package.json
5
- var version = "0.1.2-beta.1";
5
+ var version = "0.1.2-beta.4";
6
6
  var description = "Re-usable UI components with Reka UI and UnoCSS.";
7
7
 
8
8
  //#endregion
@@ -14,9 +14,9 @@ const cli = defineCommand({
14
14
  description
15
15
  },
16
16
  subCommands: {
17
- init: () => import("./init-BHl8Lwuu.mjs").then((r) => r.default),
18
- info: () => import("./info-Bz7qrvGn.mjs").then((r) => r.default),
19
- build: () => import("./build-DPZMEzzf.mjs").then((r) => r.default)
17
+ init: () => import("./init-DuYt1NgW.mjs").then((r) => r.default),
18
+ info: () => import("./info-U2T2YvOz.mjs").then((r) => r.default),
19
+ build: () => import("./build-CglClYuP.mjs").then((r) => r.default)
20
20
  }
21
21
  });
22
22
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../package.json","../src/cli.ts","../src/index.ts"],"sourcesContent":["{\n \"name\": \"@weme-ui/weme-ui\",\n \"type\": \"module\",\n \"version\": \"0.1.2-beta.1\",\n \"packageManager\": \"pnpm@10.20.0\",\n \"description\": \"Re-usable UI components with Reka UI and UnoCSS.\",\n \"author\": \"Allen Luo <luoyi@mouji.net>\",\n \"license\": \"MIT\",\n \"homepage\": \"https://github.com/weme-ui/weme-ui\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/weme-ui/weme-ui.git\",\n \"directory\": \"packages/cli\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/weme-ui/weme-ui/issues\"\n },\n \"keywords\": [\n \"weme-ui\",\n \"reusable\",\n \"ui-components\",\n \"reka-ui\",\n \"unocss\"\n ],\n \"sideEffects\": false,\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.mts\",\n \"import\": \"./dist/index.mjs\"\n }\n },\n \"main\": \"./dist/index.mjs\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.mts\",\n \"typesVersions\": {\n \"*\": {\n \"*\": [\n \"./dist/*\",\n \"./dist/index.d.mts\"\n ]\n }\n },\n \"bin\": \"./dist/index.mjs\",\n \"files\": [\n \"dist\",\n \"package.json\"\n ],\n \"scripts\": {\n \"build\": \"tsdown\",\n \"dev\": \"tsdown --watch\",\n \"dev:prepare\": \"pnpm run build\",\n \"prepublishOnly\": \"pnpm run build\",\n \"test\": \"vitest\",\n \"typecheck\": \"tsgo --noEmit\"\n },\n \"dependencies\": {\n \"@clack/prompts\": \"catalog:utils\",\n \"@weme-ui/schema\": \"workspace:*\",\n \"chalk\": \"catalog:utils\",\n \"citty\": \"catalog:utils\",\n \"columnify\": \"catalog:utils\",\n \"debug\": \"catalog:utils\",\n \"handlebars\": \"catalog:utils\",\n \"make-fetch-happen\": \"catalog:utils\",\n \"mkdirp\": \"catalog:utils\",\n \"nypm\": \"catalog:utils\",\n \"ora\": \"catalog:utils\",\n \"pathe\": \"catalog:utils\",\n \"pkg-types\": \"catalog:utils\",\n \"scule\": \"catalog:utils\",\n \"tinyexec\": \"catalog:utils\",\n \"tinyglobby\": \"catalog:utils\",\n \"zod\": \"catalog:utils\"\n },\n \"devDependencies\": {\n \"@types/columnify\": \"catalog:utils\",\n \"@types/make-fetch-happen\": \"catalog:utils\",\n \"@types/node\": \"catalog:build\",\n \"bumpp\": \"catalog:build\",\n \"tsdown\": \"catalog:build\",\n \"typescript\": \"catalog:build\",\n \"vitest\": \"catalog:testing\"\n }\n}\n","import { defineCommand } from 'citty'\nimport { description, version } from '../package.json'\n\nexport const cli = defineCommand({\n meta: {\n name: 'weme-ui',\n version,\n description,\n },\n\n subCommands: {\n // add: () => import('./commands/add').then(r => r.default),\n init: () => import('./commands/init').then(r => r.default),\n info: () => import('./commands/info').then(r => r.default),\n build: () => import('./commands/build').then(r => r.default),\n },\n})\n","#!/usr/bin/env node\nimport { runMain } from 'citty'\nimport { cli } from './cli'\n\nrunMain(cli)\n"],"mappings":";;;;cAGa;kBAEI;;;;ACFjB,MAAa,MAAM,cAAc;CAC/B,MAAM;EACJ,MAAM;EACN;EACA;EACD;CAED,aAAa;EAEX,YAAY,OAAO,uBAAmB,MAAK,MAAK,EAAE,QAAQ;EAC1D,YAAY,OAAO,uBAAmB,MAAK,MAAK,EAAE,QAAQ;EAC1D,aAAa,OAAO,wBAAoB,MAAK,MAAK,EAAE,QAAQ;EAC7D;CACF,CAAC;;;;ACZF,QAAQ,IAAI"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../package.json","../src/cli.ts","../src/index.ts"],"sourcesContent":["{\n \"name\": \"@weme-ui/weme-ui\",\n \"type\": \"module\",\n \"version\": \"0.1.2-beta.4\",\n \"packageManager\": \"pnpm@10.20.0\",\n \"description\": \"Re-usable UI components with Reka UI and UnoCSS.\",\n \"author\": \"Allen Luo <luoyi@mouji.net>\",\n \"license\": \"MIT\",\n \"homepage\": \"https://github.com/weme-ui/weme-ui\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/weme-ui/weme-ui.git\",\n \"directory\": \"packages/cli\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/weme-ui/weme-ui/issues\"\n },\n \"keywords\": [\n \"weme-ui\",\n \"reusable\",\n \"ui-components\",\n \"reka-ui\",\n \"unocss\"\n ],\n \"sideEffects\": false,\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.mts\",\n \"import\": \"./dist/index.mjs\"\n }\n },\n \"main\": \"./dist/index.mjs\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.mts\",\n \"typesVersions\": {\n \"*\": {\n \"*\": [\n \"./dist/*\",\n \"./dist/index.d.mts\"\n ]\n }\n },\n \"bin\": \"./dist/index.mjs\",\n \"files\": [\n \"dist\",\n \"package.json\"\n ],\n \"scripts\": {\n \"build\": \"tsdown\",\n \"dev\": \"tsdown --watch\",\n \"dev:prepare\": \"pnpm run build\",\n \"prepublishOnly\": \"pnpm run build\",\n \"test\": \"vitest\",\n \"typecheck\": \"tsgo --noEmit\"\n },\n \"dependencies\": {\n \"@clack/prompts\": \"catalog:utils\",\n \"@weme-ui/schema\": \"workspace:*\",\n \"chalk\": \"catalog:utils\",\n \"citty\": \"catalog:utils\",\n \"columnify\": \"catalog:utils\",\n \"debug\": \"catalog:utils\",\n \"handlebars\": \"catalog:utils\",\n \"make-fetch-happen\": \"catalog:utils\",\n \"mkdirp\": \"catalog:utils\",\n \"nypm\": \"catalog:utils\",\n \"ora\": \"catalog:utils\",\n \"pathe\": \"catalog:utils\",\n \"pkg-types\": \"catalog:utils\",\n \"scule\": \"catalog:utils\",\n \"tinyexec\": \"catalog:utils\",\n \"tinyglobby\": \"catalog:utils\",\n \"zod\": \"catalog:utils\"\n },\n \"devDependencies\": {\n \"@types/columnify\": \"catalog:utils\",\n \"@types/make-fetch-happen\": \"catalog:utils\",\n \"@types/node\": \"catalog:build\",\n \"bumpp\": \"catalog:build\",\n \"tsdown\": \"catalog:build\",\n \"typescript\": \"catalog:build\",\n \"vitest\": \"catalog:testing\"\n }\n}\n","import { defineCommand } from 'citty'\nimport { description, version } from '../package.json'\n\nexport const cli = defineCommand({\n meta: {\n name: 'weme-ui',\n version,\n description,\n },\n\n subCommands: {\n // add: () => import('./commands/add').then(r => r.default),\n init: () => import('./commands/init').then(r => r.default),\n info: () => import('./commands/info').then(r => r.default),\n build: () => import('./commands/build').then(r => r.default),\n },\n})\n","#!/usr/bin/env node\nimport { runMain } from 'citty'\nimport { cli } from './cli'\n\nrunMain(cli)\n"],"mappings":";;;;cAGa;kBAEI;;;;ACFjB,MAAa,MAAM,cAAc;CAC/B,MAAM;EACJ,MAAM;EACN;EACA;EACD;CAED,aAAa;EAEX,YAAY,OAAO,uBAAmB,MAAK,MAAK,EAAE,QAAQ;EAC1D,YAAY,OAAO,uBAAmB,MAAK,MAAK,EAAE,QAAQ;EAC1D,aAAa,OAAO,wBAAoB,MAAK,MAAK,EAAE,QAAQ;EAC7D;CACF,CAAC;;;;ACZF,QAAQ,IAAI"}
@@ -31,11 +31,11 @@ var info_default = defineCommand({
31
31
  }
32
32
  },
33
33
  async setup({ args }) {
34
- if (args.name) await import("./registry-CqjT93gC.mjs").then((r) => r.default(args));
35
- else await import("./project-2Uhjf6-l.mjs").then((r) => r.default(args));
34
+ if (args.name) await import("./registry-CK6l29SA.mjs").then((r) => r.default(args));
35
+ else await import("./project-D7GTkAzz.mjs").then((r) => r.default(args));
36
36
  }
37
37
  });
38
38
 
39
39
  //#endregion
40
40
  export { info_default as default };
41
- //# sourceMappingURL=info-Bz7qrvGn.mjs.map
41
+ //# sourceMappingURL=info-U2T2YvOz.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"info-Bz7qrvGn.mjs","names":[],"sources":["../src/commands/info/index.ts"],"sourcesContent":["import { cwd } from 'node:process'\nimport { defineCommand } from 'citty'\n\n/**\n * Usage\n *\n * - **Get information about current project**:\n * - ```weme-ui info```\n *\n * - **Get information about added registry**:\n * - ```weme-ui info weme-ui/std```\n */\nexport default defineCommand({\n meta: {\n name: 'info',\n description: 'Get information about your project or added registry.',\n },\n\n args: {\n name: {\n type: 'positional',\n required: false,\n description: 'Name of the registry.',\n valueHint: 'STRING',\n },\n cwd: {\n type: 'string',\n description: 'Change working directory.',\n valueHint: 'PATH',\n default: cwd(),\n },\n },\n\n async setup({ args }) {\n if (args.name) {\n await import('./registry').then(r => r.default(args))\n }\n else {\n await import('./project').then(r => r.default(args))\n }\n },\n})\n"],"mappings":";;;;;;;;;;;;;AAYA,mBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;EACd;CAED,MAAM;EACJ,MAAM;GACJ,MAAM;GACN,UAAU;GACV,aAAa;GACb,WAAW;GACZ;EACD,KAAK;GACH,MAAM;GACN,aAAa;GACb,WAAW;GACX,SAAS,KAAK;GACf;EACF;CAED,MAAM,MAAM,EAAE,QAAQ;AACpB,MAAI,KAAK,KACP,OAAM,OAAO,2BAAc,MAAK,MAAK,EAAE,QAAQ,KAAK,CAAC;MAGrD,OAAM,OAAO,0BAAa,MAAK,MAAK,EAAE,QAAQ,KAAK,CAAC;;CAGzD,CAAC"}
1
+ {"version":3,"file":"info-U2T2YvOz.mjs","names":[],"sources":["../src/commands/info/index.ts"],"sourcesContent":["import { cwd } from 'node:process'\nimport { defineCommand } from 'citty'\n\n/**\n * Usage\n *\n * - **Get information about current project**:\n * - ```weme-ui info```\n *\n * - **Get information about added registry**:\n * - ```weme-ui info weme-ui/std```\n */\nexport default defineCommand({\n meta: {\n name: 'info',\n description: 'Get information about your project or added registry.',\n },\n\n args: {\n name: {\n type: 'positional',\n required: false,\n description: 'Name of the registry.',\n valueHint: 'STRING',\n },\n cwd: {\n type: 'string',\n description: 'Change working directory.',\n valueHint: 'PATH',\n default: cwd(),\n },\n },\n\n async setup({ args }) {\n if (args.name) {\n await import('./registry').then(r => r.default(args))\n }\n else {\n await import('./project').then(r => r.default(args))\n }\n },\n})\n"],"mappings":";;;;;;;;;;;;;AAYA,mBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;EACd;CAED,MAAM;EACJ,MAAM;GACJ,MAAM;GACN,UAAU;GACV,aAAa;GACb,WAAW;GACZ;EACD,KAAK;GACH,MAAM;GACN,aAAa;GACb,WAAW;GACX,SAAS,KAAK;GACf;EACF;CAED,MAAM,MAAM,EAAE,QAAQ;AACpB,MAAI,KAAK,KACP,OAAM,OAAO,2BAAc,MAAK,MAAK,EAAE,QAAQ,KAAK,CAAC;MAGrD,OAAM,OAAO,0BAAa,MAAK,MAAK,EAAE,QAAQ,KAAK,CAAC;;CAGzD,CAAC"}
@@ -54,11 +54,11 @@ var init_default = defineCommand({
54
54
  },
55
55
  async setup({ args }) {
56
56
  args.cwd = args.cwd || cwd();
57
- if (args.registry) await import("./registry-Cm_OqNvK.mjs").then((r) => r.default(args));
58
- else await import("./project-DH8JkbwF.mjs").then((r) => r.default(args));
57
+ if (args.registry) await import("./registry-CAa9iHPj.mjs").then((r) => r.default(args));
58
+ else await import("./project-Dt0TFob4.mjs").then((r) => r.default(args));
59
59
  }
60
60
  });
61
61
 
62
62
  //#endregion
63
63
  export { init_default as default };
64
- //# sourceMappingURL=init-BHl8Lwuu.mjs.map
64
+ //# sourceMappingURL=init-DuYt1NgW.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"init-BHl8Lwuu.mjs","names":[],"sources":["../src/commands/init/index.ts"],"sourcesContent":["import { cwd } from 'node:process'\nimport { defineCommand } from 'citty'\n\n/**\n * Usage\n *\n * - **Initialize a new project**:\n * - ```weme-ui init```\n *\n * - **Initialize a new project with default registry**:\n * - ```weme-ui init weme-ui/plus --repo https://github.com/weme-ui/weme-ui```\n *\n * - **Initialize a new registry**:\n * - ```weme-ui init weme-ui/plus --registry```\n *\n * - **Generate component skeleton**:\n * - ```weme-ui init button --component```\n */\nexport default defineCommand({\n meta: {\n name: 'init',\n description: 'Initialize a registry or project with Weme UI.',\n },\n\n args: {\n name: {\n type: 'positional',\n required: false,\n description: 'Name of the scoped registry. (i.e. `weme-ui/std`)',\n },\n repo: {\n type: 'string',\n description: 'Change repository of the registry.',\n valueHint: 'STRING',\n },\n cwd: {\n type: 'string',\n description: 'Change working directory.',\n valueHint: 'PATH',\n default: cwd(),\n },\n registry: {\n type: 'boolean',\n description: 'Initialize a registry.',\n alias: 'r',\n default: false,\n },\n component: {\n type: 'boolean',\n description: 'Generate a component skeleton in your registry.',\n alias: 'c',\n default: false,\n },\n },\n\n async setup({ args }) {\n args.cwd = args.cwd || cwd()\n\n if (args.registry) {\n await import('./registry').then(r => r.default(args))\n }\n else {\n await import('./project').then(r => r.default(args))\n }\n },\n})\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAkBA,mBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;EACd;CAED,MAAM;EACJ,MAAM;GACJ,MAAM;GACN,UAAU;GACV,aAAa;GACd;EACD,MAAM;GACJ,MAAM;GACN,aAAa;GACb,WAAW;GACZ;EACD,KAAK;GACH,MAAM;GACN,aAAa;GACb,WAAW;GACX,SAAS,KAAK;GACf;EACD,UAAU;GACR,MAAM;GACN,aAAa;GACb,OAAO;GACP,SAAS;GACV;EACD,WAAW;GACT,MAAM;GACN,aAAa;GACb,OAAO;GACP,SAAS;GACV;EACF;CAED,MAAM,MAAM,EAAE,QAAQ;AACpB,OAAK,MAAM,KAAK,OAAO,KAAK;AAE5B,MAAI,KAAK,SACP,OAAM,OAAO,2BAAc,MAAK,MAAK,EAAE,QAAQ,KAAK,CAAC;MAGrD,OAAM,OAAO,0BAAa,MAAK,MAAK,EAAE,QAAQ,KAAK,CAAC;;CAGzD,CAAC"}
1
+ {"version":3,"file":"init-DuYt1NgW.mjs","names":[],"sources":["../src/commands/init/index.ts"],"sourcesContent":["import { cwd } from 'node:process'\nimport { defineCommand } from 'citty'\n\n/**\n * Usage\n *\n * - **Initialize a new project**:\n * - ```weme-ui init```\n *\n * - **Initialize a new project with default registry**:\n * - ```weme-ui init weme-ui/plus --repo https://github.com/weme-ui/weme-ui```\n *\n * - **Initialize a new registry**:\n * - ```weme-ui init weme-ui/plus --registry```\n *\n * - **Generate component skeleton**:\n * - ```weme-ui init button --component```\n */\nexport default defineCommand({\n meta: {\n name: 'init',\n description: 'Initialize a registry or project with Weme UI.',\n },\n\n args: {\n name: {\n type: 'positional',\n required: false,\n description: 'Name of the scoped registry. (i.e. `weme-ui/std`)',\n },\n repo: {\n type: 'string',\n description: 'Change repository of the registry.',\n valueHint: 'STRING',\n },\n cwd: {\n type: 'string',\n description: 'Change working directory.',\n valueHint: 'PATH',\n default: cwd(),\n },\n registry: {\n type: 'boolean',\n description: 'Initialize a registry.',\n alias: 'r',\n default: false,\n },\n component: {\n type: 'boolean',\n description: 'Generate a component skeleton in your registry.',\n alias: 'c',\n default: false,\n },\n },\n\n async setup({ args }) {\n args.cwd = args.cwd || cwd()\n\n if (args.registry) {\n await import('./registry').then(r => r.default(args))\n }\n else {\n await import('./project').then(r => r.default(args))\n }\n },\n})\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAkBA,mBAAe,cAAc;CAC3B,MAAM;EACJ,MAAM;EACN,aAAa;EACd;CAED,MAAM;EACJ,MAAM;GACJ,MAAM;GACN,UAAU;GACV,aAAa;GACd;EACD,MAAM;GACJ,MAAM;GACN,aAAa;GACb,WAAW;GACZ;EACD,KAAK;GACH,MAAM;GACN,aAAa;GACb,WAAW;GACX,SAAS,KAAK;GACf;EACD,UAAU;GACR,MAAM;GACN,aAAa;GACb,OAAO;GACP,SAAS;GACV;EACD,WAAW;GACT,MAAM;GACN,aAAa;GACb,OAAO;GACP,SAAS;GACV;EACF;CAED,MAAM,MAAM,EAAE,QAAQ;AACpB,OAAK,MAAM,KAAK,OAAO,KAAK;AAE5B,MAAI,KAAK,SACP,OAAM,OAAO,2BAAc,MAAK,MAAK,EAAE,QAAQ,KAAK,CAAC;MAGrD,OAAM,OAAO,0BAAa,MAAK,MAAK,EAAE,QAAQ,KAAK,CAAC;;CAGzD,CAAC"}
@@ -1,4 +1,4 @@
1
- import { i as loadRegistryConfig, t as REGISTRY_DIRNAME } from "./registry-BChtLWfr.mjs";
1
+ import { i as loadRegistryConfig, t as REGISTRY_DIRNAME, u as loadPackageJson } from "./registry-_alKtnin.mjs";
2
2
  import fs from "node:fs";
3
3
  import * as p from "@clack/prompts";
4
4
  import { DEFAULT_REGISTRY_PREFIX, MANIFEST_FILE_NAME, REGISTRY_FILE_NAME, manifestSchema } from "@weme-ui/schema";
@@ -10,6 +10,7 @@ import { glob } from "tinyglobby";
10
10
  async function manifest_default(args) {
11
11
  p.intro(chalk.bold.blue("✨ Building Weme UI Repository"));
12
12
  const registries = await loadRegistries(args.cwd);
13
+ await updateRegistries(args.cwd, registries);
13
14
  await updateManifest(args.cwd, registries);
14
15
  p.outro("🥤 All done!");
15
16
  }
@@ -24,11 +25,12 @@ async function loadRegistries(cwd) {
24
25
  })).reduce((acc, file) => {
25
26
  const directory = path.dirname(file);
26
27
  const config = loadRegistryConfig(path.resolve(cwd, REGISTRY_DIRNAME, directory));
28
+ const pkg = loadPackageJson(path.resolve(cwd, REGISTRY_DIRNAME, directory));
27
29
  if (config.isOk()) {
28
30
  const result = manifestSchema.safeParse({
29
31
  name: config.unwrap().name,
30
32
  description: config.unwrap().description,
31
- version: config.unwrap().version || "0.0.0",
33
+ version: pkg.unwrap().version || "0.0.0",
32
34
  directory: path.join(REGISTRY_DIRNAME, directory),
33
35
  prefix: config.unwrap().prefix || DEFAULT_REGISTRY_PREFIX,
34
36
  access: config.unwrap().access || "public",
@@ -51,6 +53,16 @@ async function loadRegistries(cwd) {
51
53
  spinner.stop("Registries loaded!");
52
54
  return registries;
53
55
  }
56
+ async function updateRegistries(cwd, registries) {
57
+ const spinner = p.spinner();
58
+ spinner.start("Updating registries...");
59
+ registries.forEach((reg) => {
60
+ const registry = loadRegistryConfig(path.resolve(cwd, reg.directory)).unwrap();
61
+ registry.version = reg.version;
62
+ fs.writeFileSync(path.resolve(cwd, reg.directory, REGISTRY_FILE_NAME), `${JSON.stringify(registry, null, 2)}\n`);
63
+ });
64
+ spinner.stop("Registries updated!");
65
+ }
54
66
  async function updateManifest(cwd, registries) {
55
67
  const spinner = p.spinner();
56
68
  spinner.start("Updating manifest...");
@@ -60,4 +72,4 @@ async function updateManifest(cwd, registries) {
60
72
 
61
73
  //#endregion
62
74
  export { manifest_default as default };
63
- //# sourceMappingURL=manifest-BtSx8-dp.mjs.map
75
+ //# sourceMappingURL=manifest-B2Fg8BvI.mjs.map
@@ -0,0 +1 @@
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,6 +1,5 @@
1
- import { p as getGithubRepoName } from "./registry-BChtLWfr.mjs";
2
- import { n as loadProjectInfo } from "./project-BV4nSHdV.mjs";
3
- import "./package-e8qxd1tJ.mjs";
1
+ import { c as getGithubRepoName } from "./registry-_alKtnin.mjs";
2
+ import { n as loadProjectInfo } from "./project-rHqBMgh9.mjs";
4
3
  import { exit } from "node:process";
5
4
  import chalk from "chalk";
6
5
  import path from "pathe";
@@ -55,4 +54,4 @@ async function project_default(args) {
55
54
 
56
55
  //#endregion
57
56
  export { project_default as default };
58
- //# sourceMappingURL=project-2Uhjf6-l.mjs.map
57
+ //# sourceMappingURL=project-D7GTkAzz.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"project-2Uhjf6-l.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"}
1
+ {"version":3,"file":"project-D7GTkAzz.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"}
@@ -1,6 +1,5 @@
1
- import { a as selectRegistry, c as runStep, d as fetchBinary, f as fetchURL } from "./registry-BChtLWfr.mjs";
2
- import { t as installRegistryItems } from "./project-BV4nSHdV.mjs";
3
- import { r as runDevPrepare } from "./package-e8qxd1tJ.mjs";
1
+ import { a as selectRegistry, d as runDevPrepare, o as fetchBinary, p as runStep, s as fetchURL } from "./registry-_alKtnin.mjs";
2
+ import { t as installRegistryItems } from "./project-rHqBMgh9.mjs";
4
3
  import { exit } from "node:process";
5
4
  import fs from "node:fs";
6
5
  import * as p from "@clack/prompts";
@@ -138,4 +137,4 @@ async function project_default(args) {
138
137
 
139
138
  //#endregion
140
139
  export { project_default as default };
141
- //# sourceMappingURL=project-DH8JkbwF.mjs.map
140
+ //# sourceMappingURL=project-Dt0TFob4.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"project-DH8JkbwF.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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"}
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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"}
@@ -1,5 +1,4 @@
1
- import { c as runStep, f as fetchURL, l as Err, n as fetchManifestConfig, p as getGithubRepoName, r as fetchRegistryItems, u as Ok } from "./registry-BChtLWfr.mjs";
2
- import { n as loadPackageJson, t as installDependencies } from "./package-e8qxd1tJ.mjs";
1
+ import { c as getGithubRepoName, h as Ok, l as installDependencies, m as Err, n as fetchManifestConfig, p as runStep, r as fetchRegistryItems, s as fetchURL, u as loadPackageJson } from "./registry-_alKtnin.mjs";
3
2
  import fs from "node:fs";
4
3
  import * as p from "@clack/prompts";
5
4
  import { PROJECT_FILE_NAME, projectPaths, projectSchema } from "@weme-ui/schema";
@@ -339,4 +338,4 @@ function createFile(content, dest) {
339
338
 
340
339
  //#endregion
341
340
  export { loadProjectInfo as n, installRegistryItems as t };
342
- //# sourceMappingURL=project-BV4nSHdV.mjs.map
341
+ //# sourceMappingURL=project-rHqBMgh9.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"project-BV4nSHdV.mjs","names":["p","e: any"],"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\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
+ {"version":3,"file":"project-rHqBMgh9.mjs","names":["p","e: any"],"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\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,5 +1,4 @@
1
- import { c as runStep, f as fetchURL, o as compile, t as REGISTRY_DIRNAME } from "./registry-BChtLWfr.mjs";
2
- import { r as runDevPrepare, t as installDependencies } from "./package-e8qxd1tJ.mjs";
1
+ import { d as runDevPrepare, f as compile, l as installDependencies, p as runStep, s as fetchURL, t as REGISTRY_DIRNAME } from "./registry-_alKtnin.mjs";
3
2
  import { exit } from "node:process";
4
3
  import fs, { existsSync } from "node:fs";
5
4
  import * as p from "@clack/prompts";
@@ -144,4 +143,4 @@ async function registry_default(args) {
144
143
 
145
144
  //#endregion
146
145
  export { registry_default as default };
147
- //# sourceMappingURL=registry-Cm_OqNvK.mjs.map
146
+ //# sourceMappingURL=registry-CAa9iHPj.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry-Cm_OqNvK.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":";;;;;;;;;AAmBA,eAAsB,cAAc,MAAyD;AAC3F,MAAK,MAAM,KAAK,QAAQ,KAAK,IAAI;CAEjC,MAAM,UAAU,MAAM,EAAE,MAAM;EAC5B,MAAM,YAAY;AAChB,OAAI,KAAK,KACP,QAAO,KAAK,KAAK,MAAM,CAAC,aAAa;AAEvC,UAAO,EAAE,KAAK;IACZ,SAAS;IACT,aAAa;IACb,cAAc,KAAK,MAAM,MAAM,CAAC,aAAa;IAC7C,WAAW,UAAkB;AAC3B,SAAI,CAAC,MACH,QAAO;AAET,SAAI,MAAM,SAAS,IAAI,CACrB,QAAO;AAET,SAAI,CAAC,MAAM,SAAS,IAAI,CACtB,QAAO;AAET,SAAI,WAAW,KAAK,KAAK,KAAK,KAAK,MAAM,CAAC,CACxC,QAAO;;IAEZ,CAAC;;EAEJ,mBAAmB,EAAE,KAAK;GACxB,SAAS;GACT,aAAa;GACb,cAAc;GACf,CAAC;EACF,eAAe,EAAE,KAAK;GACpB,SAAS;GACT,aAAa;GACb,WAAW,UAAkB;AAC3B,QAAI,CAAC,MACH,QAAO;;GAEZ,CAAC;EACF,cAAc,EAAE,KAAK;GACnB,SAAS;GACT,aAAa;GACb,cAAc;GACf,CAAC;EACF,cAAc,EAAE,OAAO;GACrB,SAAS;GACT,SAAS,CACP;IAAE,OAAO;IAAU,OAAO;IAAU,EACpC;IAAE,OAAO;IAAW,OAAO;IAAW,CACvC;GACD,cAAc;GACf,CAAC;EACF,cAAc,EAAE,KAAK;GACnB,SAAS;GACT,aAAa;GACb,cAAc;GACf,CAAC;EACF,gBAAgB,EAAE,KAAK;GACrB,SAAS;GACT,aAAa;GACb,cAAc;GACf,CAAC;EACF,cAAc,EAAE,KAAK;GACnB,SAAS;GACT,aAAa;GACb,cAAc;GACf,CAAC;EACH,EAAE,EACD,gBAAgB;AACd,IAAE,OAAO,uBAAuB;AAChC,OAAK,EAAE;IAEV,CAAC;AAEF,QAAO;EACL,GAAG;EACH,WAAW,KAAK,KAAK,kBAAkB,QAAQ,KAAK,MAAM,IAAI,CAAC,GAAG;EAClE,KAAK,KAAK;EACX;;;;;AC5FH,eAAsB,kBAAkB,KAA0B;AAChE,OAAM,QAAQ,uBAAuB,OAAO,YAAY;AACtD,QAAM,QAAQ,IAAI;GAChB;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAC,IACA,OAAO,QAAQ;AACb,OAAI;IACF,MAAM,OAAO,IAAI,QAAQ,QAAQ,GAAG;AAEpC,YAAQ,QAAQ,cAAc,KAAK,KAAK;IAExC,MAAM,OAAO,MAAM,SACjB,gFAAgF,MACjF;AACD,QAAI,CAAC,KACH,OAAM,IAAI,MAAM,mBAAmB,KAAK,GAAG;IAG7C,MAAM,UAAU,QAAQ,MAAM,IAAI;AAClC,QAAI,CAAC,QACH,OAAM,IAAI,MAAM,qBAAqB,KAAK,GAAG;IAG/C,MAAM,WAAW,KAAK,KAAK,IAAI,KAAK,IAAI,WAAW,KAAK;IACxD,MAAM,UAAU,KAAK,QAAQ,SAAS;AAEtC,QAAI,CAAC,GAAG,WAAW,QAAQ,CACzB,IAAG,UAAU,SAAS,EAAE,WAAW,MAAM,CAAC;AAE5C,OAAG,cAAc,UAAU,SAAS;KAClC,UAAU;KACV,MAAM;KACP,CAAC;YAEGA,GAAQ;AACb,YAAQ,KAAK,EAAE,QAAQ;;IAG5B,CAAC;AAEF,UAAQ,KAAK,mBAAmB;GAChC;;;;;AChDJ,gCAA+B,MAA2B;AACxD,GAAE,MAAM,MAAM,KAAK,KAAK,kCAAkC,CAAC;CAE3D,MAAM,MAAM,MAAM,cAAc,KAAK;CACrC,MAAMC,QAAM,KAAK,KAAK,IAAI,KAAK,IAAI,UAAU;AAE7C,OAAM,kBAAkB,IAAI;AAC5B,OAAM,oBAAoB;EACxB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,EAAE,EAAE,YAAK,CAAC;AACX,OAAM,cAAcA,MAAI;AAExB,GAAE,KAAK;EACL,oCAAoC,MAAM,KAAK,MAAM,IAAI,YAAY;EACrE,gCAAgC,MAAM,KAAK,WAAW;EACtD,sBAAsB,MAAM,KAAK,2BAA2B;EAC7D,CAAC,KAAK,KAAK,EAAE,QAAQ;AAEtB,GAAE,MAAM,eAAe"}
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,6 +1,5 @@
1
- import { n as fetchManifestConfig, p as getGithubRepoName } from "./registry-BChtLWfr.mjs";
2
- import { n as loadProjectInfo } from "./project-BV4nSHdV.mjs";
3
- import "./package-e8qxd1tJ.mjs";
1
+ import { c as getGithubRepoName, n as fetchManifestConfig } from "./registry-_alKtnin.mjs";
2
+ import { n as loadProjectInfo } from "./project-rHqBMgh9.mjs";
4
3
  import { exit } from "node:process";
5
4
  import chalk from "chalk";
6
5
  import path from "pathe";
@@ -79,4 +78,4 @@ async function registry_default(args) {
79
78
 
80
79
  //#endregion
81
80
  export { registry_default as default };
82
- //# sourceMappingURL=registry-CqjT93gC.mjs.map
81
+ //# sourceMappingURL=registry-CK6l29SA.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry-CqjT93gC.mjs","names":[],"sources":["../src/commands/info/registry.ts"],"sourcesContent":["import { exit } from 'node:process'\nimport chalk from 'chalk'\nimport columnify from 'columnify'\nimport path from 'pathe'\nimport { titleCase } from 'scule'\nimport { getGithubRepoName } from '../../utils/fetch'\nimport { loadProjectInfo } from '../../utils/schema/project'\nimport { fetchManifestConfig } from '../../utils/schema/registry'\n\n/**\n * Display registry information.\n *\n * @example\n * ```bash\n * pnpm dlx @weme-ui/weme-ui info weme-ui/std\n *\n * The standard components for Weme UI.\n *\n * @weme-ui/weme-ui ⇢ weme-ui/std (0.0.0) 🔒\n *\n * Available items:\n *\n * Components 46\n * Layouts 0\n * Themes 0\n * Blocks 0\n * Pages 0\n *\n * 46 available, 0 installed\n *\n * Run pnpm dlx @weme-ui/weme-ui info to get project all information.\n * ```\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 const registry = info.registries.find(r => r.name === args.name)\n\n if (!registry) {\n console.error('Registry not found.')\n exit(0)\n }\n\n if (registry.description) {\n console.log(chalk.bold.whiteBright(registry.description))\n console.log('')\n }\n\n console.log(\n chalk.cyan.underline(`@${getGithubRepoName(registry.repo)}`),\n chalk.dim(' ⇢ '),\n chalk.underline.white(registry.name) + (registry.access === 'private' ? '🔒' : ''),\n chalk.dim(`(${registry.version})`),\n )\n\n const manifest = await fetchManifestConfig(registry.repo)\n\n if (manifest.isErr()) {\n console.error('Could not find repository configuration file!')\n exit(1)\n }\n\n const total = manifest.unwrap().find(m => m.name === registry.name)\n\n if (total) {\n console.log('')\n console.log(chalk.dim('Available items:'))\n console.log('')\n\n console.log(columnify(total.items, {\n showHeaders: false,\n config: {\n key: {\n dataTransform: data => titleCase(data),\n },\n value: {\n minWidth: 4,\n align: 'right',\n dataTransform: data => Number.parseInt(data) > 0 ? chalk.yellow(data) : chalk.dim(data),\n },\n },\n }))\n\n console.log('')\n }\n\n console.log(chalk.gray(\n [\n `${chalk.yellow(registry.available)} available`,\n `${chalk.yellow(registry.installed)} installed`,\n ].join(', '),\n ))\n\n console.log('')\n console.log(`Run ${chalk.cyan('pnpm dlx @weme-ui/weme-ui info')} to get project all information.`)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,gCAA+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;;CAIT,MAAM,WADO,OAAO,QAAQ,CACN,WAAW,MAAK,MAAK,EAAE,SAAS,KAAK,KAAK;AAEhE,KAAI,CAAC,UAAU;AACb,UAAQ,MAAM,sBAAsB;AACpC,OAAK,EAAE;;AAGT,KAAI,SAAS,aAAa;AACxB,UAAQ,IAAI,MAAM,KAAK,YAAY,SAAS,YAAY,CAAC;AACzD,UAAQ,IAAI,GAAG;;AAGjB,SAAQ,IACN,MAAM,KAAK,UAAU,IAAI,kBAAkB,SAAS,KAAK,GAAG,EAC5D,MAAM,IAAI,MAAM,EAChB,MAAM,UAAU,MAAM,SAAS,KAAK,IAAI,SAAS,WAAW,YAAY,OAAO,KAC/E,MAAM,IAAI,IAAI,SAAS,QAAQ,GAAG,CACnC;CAED,MAAM,WAAW,MAAM,oBAAoB,SAAS,KAAK;AAEzD,KAAI,SAAS,OAAO,EAAE;AACpB,UAAQ,MAAM,gDAAgD;AAC9D,OAAK,EAAE;;CAGT,MAAM,QAAQ,SAAS,QAAQ,CAAC,MAAK,MAAK,EAAE,SAAS,SAAS,KAAK;AAEnE,KAAI,OAAO;AACT,UAAQ,IAAI,GAAG;AACf,UAAQ,IAAI,MAAM,IAAI,mBAAmB,CAAC;AAC1C,UAAQ,IAAI,GAAG;AAEf,UAAQ,IAAI,UAAU,MAAM,OAAO;GACjC,aAAa;GACb,QAAQ;IACN,KAAK,EACH,gBAAe,SAAQ,UAAU,KAAK,EACvC;IACD,OAAO;KACL,UAAU;KACV,OAAO;KACP,gBAAe,SAAQ,OAAO,SAAS,KAAK,GAAG,IAAI,MAAM,OAAO,KAAK,GAAG,MAAM,IAAI,KAAK;KACxF;IACF;GACF,CAAC,CAAC;AAEH,UAAQ,IAAI,GAAG;;AAGjB,SAAQ,IAAI,MAAM,KAChB,CACE,GAAG,MAAM,OAAO,SAAS,UAAU,CAAC,aACpC,GAAG,MAAM,OAAO,SAAS,UAAU,CAAC,YACrC,CAAC,KAAK,KAAK,CACb,CAAC;AAEF,SAAQ,IAAI,GAAG;AACf,SAAQ,IAAI,OAAO,MAAM,KAAK,iCAAiC,CAAC,kCAAkC"}
1
+ {"version":3,"file":"registry-CK6l29SA.mjs","names":[],"sources":["../src/commands/info/registry.ts"],"sourcesContent":["import { exit } from 'node:process'\nimport chalk from 'chalk'\nimport columnify from 'columnify'\nimport path from 'pathe'\nimport { titleCase } from 'scule'\nimport { getGithubRepoName } from '../../utils/fetch'\nimport { loadProjectInfo } from '../../utils/schema/project'\nimport { fetchManifestConfig } from '../../utils/schema/registry'\n\n/**\n * Display registry information.\n *\n * @example\n * ```bash\n * pnpm dlx @weme-ui/weme-ui info weme-ui/std\n *\n * The standard components for Weme UI.\n *\n * @weme-ui/weme-ui ⇢ weme-ui/std (0.0.0) 🔒\n *\n * Available items:\n *\n * Components 46\n * Layouts 0\n * Themes 0\n * Blocks 0\n * Pages 0\n *\n * 46 available, 0 installed\n *\n * Run pnpm dlx @weme-ui/weme-ui info to get project all information.\n * ```\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 const registry = info.registries.find(r => r.name === args.name)\n\n if (!registry) {\n console.error('Registry not found.')\n exit(0)\n }\n\n if (registry.description) {\n console.log(chalk.bold.whiteBright(registry.description))\n console.log('')\n }\n\n console.log(\n chalk.cyan.underline(`@${getGithubRepoName(registry.repo)}`),\n chalk.dim(' ⇢ '),\n chalk.underline.white(registry.name) + (registry.access === 'private' ? '🔒' : ''),\n chalk.dim(`(${registry.version})`),\n )\n\n const manifest = await fetchManifestConfig(registry.repo)\n\n if (manifest.isErr()) {\n console.error('Could not find repository configuration file!')\n exit(1)\n }\n\n const total = manifest.unwrap().find(m => m.name === registry.name)\n\n if (total) {\n console.log('')\n console.log(chalk.dim('Available items:'))\n console.log('')\n\n console.log(columnify(total.items, {\n showHeaders: false,\n config: {\n key: {\n dataTransform: data => titleCase(data),\n },\n value: {\n minWidth: 4,\n align: 'right',\n dataTransform: data => Number.parseInt(data) > 0 ? chalk.yellow(data) : chalk.dim(data),\n },\n },\n }))\n\n console.log('')\n }\n\n console.log(chalk.gray(\n [\n `${chalk.yellow(registry.available)} available`,\n `${chalk.yellow(registry.installed)} installed`,\n ].join(', '),\n ))\n\n console.log('')\n console.log(`Run ${chalk.cyan('pnpm dlx @weme-ui/weme-ui info')} to get project all information.`)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,gCAA+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;;CAIT,MAAM,WADO,OAAO,QAAQ,CACN,WAAW,MAAK,MAAK,EAAE,SAAS,KAAK,KAAK;AAEhE,KAAI,CAAC,UAAU;AACb,UAAQ,MAAM,sBAAsB;AACpC,OAAK,EAAE;;AAGT,KAAI,SAAS,aAAa;AACxB,UAAQ,IAAI,MAAM,KAAK,YAAY,SAAS,YAAY,CAAC;AACzD,UAAQ,IAAI,GAAG;;AAGjB,SAAQ,IACN,MAAM,KAAK,UAAU,IAAI,kBAAkB,SAAS,KAAK,GAAG,EAC5D,MAAM,IAAI,MAAM,EAChB,MAAM,UAAU,MAAM,SAAS,KAAK,IAAI,SAAS,WAAW,YAAY,OAAO,KAC/E,MAAM,IAAI,IAAI,SAAS,QAAQ,GAAG,CACnC;CAED,MAAM,WAAW,MAAM,oBAAoB,SAAS,KAAK;AAEzD,KAAI,SAAS,OAAO,EAAE;AACpB,UAAQ,MAAM,gDAAgD;AAC9D,OAAK,EAAE;;CAGT,MAAM,QAAQ,SAAS,QAAQ,CAAC,MAAK,MAAK,EAAE,SAAS,SAAS,KAAK;AAEnE,KAAI,OAAO;AACT,UAAQ,IAAI,GAAG;AACf,UAAQ,IAAI,MAAM,IAAI,mBAAmB,CAAC;AAC1C,UAAQ,IAAI,GAAG;AAEf,UAAQ,IAAI,UAAU,MAAM,OAAO;GACjC,aAAa;GACb,QAAQ;IACN,KAAK,EACH,gBAAe,SAAQ,UAAU,KAAK,EACvC;IACD,OAAO;KACL,UAAU;KACV,OAAO;KACP,gBAAe,SAAQ,OAAO,SAAS,KAAK,GAAG,IAAI,MAAM,OAAO,KAAK,GAAG,MAAM,IAAI,KAAK;KACxF;IACF;GACF,CAAC,CAAC;AAEH,UAAQ,IAAI,GAAG;;AAGjB,SAAQ,IAAI,MAAM,KAChB,CACE,GAAG,MAAM,OAAO,SAAS,UAAU,CAAC,aACpC,GAAG,MAAM,OAAO,SAAS,UAAU,CAAC,YACrC,CAAC,KAAK,KAAK,CACb,CAAC;AAEF,SAAQ,IAAI,GAAG;AACf,SAAQ,IAAI,OAAO,MAAM,KAAK,iCAAiC,CAAC,kCAAkC"}
@@ -4,26 +4,11 @@ import * as p from "@clack/prompts";
4
4
  import { MANIFEST_FILE_NAME, REGISTRY_FILE_NAME, manifestSchema, registrySchema } from "@weme-ui/schema";
5
5
  import chalk from "chalk";
6
6
  import path from "pathe";
7
- import makeFetch from "make-fetch-happen";
7
+ import { addDependency, runScript } from "nypm";
8
8
  import handlebars from "handlebars";
9
9
  import { camelCase, kebabCase, pascalCase, titleCase } from "scule";
10
+ import makeFetch from "make-fetch-happen";
10
11
 
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
27
12
  //#region src/utils/result.ts
28
13
  var Result = class {
29
14
  result;
@@ -98,6 +83,99 @@ async function runStep(loading, fn) {
98
83
  return fn(spinner);
99
84
  }
100
85
 
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
+
101
179
  //#endregion
102
180
  //#region src/utils/schema/registry.ts
103
181
  const REGISTRY_DIRNAME = "registry";
@@ -337,5 +415,5 @@ function getGithubRepoName(url) {
337
415
  }
338
416
 
339
417
  //#endregion
340
- export { selectRegistry as a, runStep as c, fetchBinary as d, fetchURL as f, loadRegistryConfig as i, Err as l, fetchManifestConfig as n, compile as o, getGithubRepoName$1 as p, fetchRegistryItems as r, merge as s, REGISTRY_DIRNAME as t, Ok as u };
341
- //# sourceMappingURL=registry-BChtLWfr.mjs.map
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-_alKtnin.mjs","names":["cwd","e: any","getGithubRepoName","e: any","cwd"],"sources":["../src/utils/result.ts","../src/utils/utilities.ts","../src/utils/schema/package.ts","../src/utils/fetch.ts","../src/utils/schema/registry.ts"],"sourcesContent":["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 { 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","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","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 items = normalizeRegistryItems(\n registryConfig.unwrap().items.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\n spinner.stop('Registry items fetched.')\n\n return 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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"}
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.2-beta.1",
4
+ "version": "0.1.2-beta.4",
5
5
  "description": "Re-usable UI components with Reka UI and UnoCSS.",
6
6
  "author": "Allen Luo <luoyi@mouji.net>",
7
7
  "license": "MIT",
@@ -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.2-beta.1"
64
+ "@weme-ui/schema": "0.1.2-beta.4"
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.0",
71
+ "tsdown": "^0.16.1",
72
72
  "typescript": "^5.9.3",
73
- "vitest": "^4.0.7"
73
+ "vitest": "^4.0.8"
74
74
  },
75
75
  "scripts": {
76
76
  "build": "tsdown",
@@ -1 +0,0 @@
1
- {"version":3,"file":"manifest-BtSx8-dp.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 { 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 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\n if (config.isOk()) {\n const result = manifestSchema.safeParse({\n name: config.unwrap().name,\n description: config.unwrap().description,\n version: config.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 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":";;;;;;;;;AASA,gCAA+B,MAA2B;AACxD,GAAE,MAAM,MAAM,KAAK,KAAK,gCAAgC,CAAC;CAEzD,MAAM,aAAa,MAAM,eAAe,KAAK,IAAI;AACjD,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;AAEjF,MAAI,OAAO,MAAM,EAAE;GACjB,MAAM,SAAS,eAAe,UAAU;IACtC,MAAM,OAAO,QAAQ,CAAC;IACtB,aAAa,OAAO,QAAQ,CAAC;IAC7B,SAAS,OAAO,QAAQ,CAAC,WAAW;IACpC,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,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,85 +0,0 @@
1
- import { c as runStep, l as Err, s as merge, u as Ok } from "./registry-BChtLWfr.mjs";
2
- import fs from "node:fs";
3
- import chalk from "chalk";
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-e8qxd1tJ.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"package-e8qxd1tJ.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 +0,0 @@
1
- {"version":3,"file":"registry-BChtLWfr.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 items = normalizeRegistryItems(\n registryConfig.unwrap().items.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\n spinner.stop('Registry items fetched.')\n\n return 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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"}