@gx-design-vue/create-gx-cli 0.1.16 → 0.1.17

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 (135) hide show
  1. package/dist/index.js +62 -0
  2. package/index.js +3 -0
  3. package/package.json +22 -9
  4. package/bin/create-gx-cli +0 -5
  5. package/src/cli.js +0 -115
  6. package/src/git.js +0 -81
  7. package/src/main.js +0 -190
  8. package/template-mobile-vant-cli/.editorconfig +0 -19
  9. package/template-mobile-vant-cli/.env +0 -3
  10. package/template-mobile-vant-cli/.env.development +0 -17
  11. package/template-mobile-vant-cli/.env.pro +0 -28
  12. package/template-mobile-vant-cli/.env.production +0 -31
  13. package/template-mobile-vant-cli/.eslintignore +0 -15
  14. package/template-mobile-vant-cli/.prettierignore +0 -9
  15. package/template-mobile-vant-cli/README.md +0 -1
  16. package/template-mobile-vant-cli/commitlint.config.cjs +0 -32
  17. package/template-mobile-vant-cli/config/default/defaultSettings.ts +0 -70
  18. package/template-mobile-vant-cli/config/default/network.ts +0 -10
  19. package/template-mobile-vant-cli/config/default/proxy.ts +0 -50
  20. package/template-mobile-vant-cli/config/default/theme.ts +0 -3
  21. package/template-mobile-vant-cli/config/index.ts +0 -11
  22. package/template-mobile-vant-cli/eslint.config.js +0 -57
  23. package/template-mobile-vant-cli/index.html +0 -25
  24. package/template-mobile-vant-cli/internal/vite-config/generate/generateModifyVars.ts +0 -7
  25. package/template-mobile-vant-cli/internal/vite-config/rollupOptions/index.ts +0 -22
  26. package/template-mobile-vant-cli/internal/vite-config/util/hash.ts +0 -17
  27. package/template-mobile-vant-cli/internal/vite-config/util/index.ts +0 -132
  28. package/template-mobile-vant-cli/internal/vite-config/vite/cdn.ts +0 -65
  29. package/template-mobile-vant-cli/internal/vite-config/vite/optimizer.ts +0 -26
  30. package/template-mobile-vant-cli/internal/vite-config/vite/plugin/appConfig.ts +0 -91
  31. package/template-mobile-vant-cli/internal/vite-config/vite/plugin/autoImport.ts +0 -28
  32. package/template-mobile-vant-cli/internal/vite-config/vite/plugin/compress.ts +0 -31
  33. package/template-mobile-vant-cli/internal/vite-config/vite/plugin/html.ts +0 -32
  34. package/template-mobile-vant-cli/internal/vite-config/vite/plugin/index.ts +0 -74
  35. package/template-mobile-vant-cli/internal/vite-config/vite/plugin/visualizer.ts +0 -14
  36. package/template-mobile-vant-cli/internal/vite-config/vite/plugin/viteNotice.ts +0 -40
  37. package/template-mobile-vant-cli/mock/config/permissions.ts +0 -15
  38. package/template-mobile-vant-cli/mock/config/user/id.ts +0 -5
  39. package/template-mobile-vant-cli/mock/config/user/index.ts +0 -96
  40. package/template-mobile-vant-cli/mock/index.ts +0 -55
  41. package/template-mobile-vant-cli/mock/routers/table/index.fake.ts +0 -22
  42. package/template-mobile-vant-cli/mock/routers/user/account.fake.ts +0 -52
  43. package/template-mobile-vant-cli/mock/routers/user/index.fake.ts +0 -46
  44. package/template-mobile-vant-cli/mock/utils/crypto.ts +0 -21
  45. package/template-mobile-vant-cli/mock/utils/table.ts +0 -96
  46. package/template-mobile-vant-cli/mock/utils/util.ts +0 -91
  47. package/template-mobile-vant-cli/package.json +0 -74
  48. package/template-mobile-vant-cli/public/css/default.css +0 -54
  49. package/template-mobile-vant-cli/public/favicon.ico +0 -0
  50. package/template-mobile-vant-cli/src/App.vue +0 -9
  51. package/template-mobile-vant-cli/src/assets/logo.png +0 -0
  52. package/template-mobile-vant-cli/src/components/PageContainer/ProSkeleton.tsx +0 -29
  53. package/template-mobile-vant-cli/src/components/PageContainer/index.tsx +0 -207
  54. package/template-mobile-vant-cli/src/components/PageContainer/style.module.less +0 -17
  55. package/template-mobile-vant-cli/src/components/TabsMenu/index.vue +0 -45
  56. package/template-mobile-vant-cli/src/core/gx-design/index.ts +0 -7
  57. package/template-mobile-vant-cli/src/core/index.ts +0 -5
  58. package/template-mobile-vant-cli/src/design/color.less +0 -1
  59. package/template-mobile-vant-cli/src/design/config.less +0 -5
  60. package/template-mobile-vant-cli/src/design/index.less +0 -3
  61. package/template-mobile-vant-cli/src/design/mixin.less +0 -65
  62. package/template-mobile-vant-cli/src/design/reset.less +0 -39
  63. package/template-mobile-vant-cli/src/design/root.less +0 -3
  64. package/template-mobile-vant-cli/src/design/vant/index.less +0 -0
  65. package/template-mobile-vant-cli/src/hooks/web/index.ts +0 -5
  66. package/template-mobile-vant-cli/src/hooks/web/usePageLoading.ts +0 -56
  67. package/template-mobile-vant-cli/src/layout/BasicLayout/index.vue +0 -18
  68. package/template-mobile-vant-cli/src/layout/BasicLayout/style.less +0 -3
  69. package/template-mobile-vant-cli/src/layout/UserLayout/index.vue +0 -18
  70. package/template-mobile-vant-cli/src/layout/UserLayout/style.module.less +0 -36
  71. package/template-mobile-vant-cli/src/main.ts +0 -34
  72. package/template-mobile-vant-cli/src/pages/Account/details.vue +0 -13
  73. package/template-mobile-vant-cli/src/pages/Account/index.vue +0 -102
  74. package/template-mobile-vant-cli/src/pages/Home/index.vue +0 -71
  75. package/template-mobile-vant-cli/src/pages/user/login/index.vue +0 -74
  76. package/template-mobile-vant-cli/src/plugins/dayjs/index.ts +0 -3
  77. package/template-mobile-vant-cli/src/plugins/index.ts +0 -2
  78. package/template-mobile-vant-cli/src/router/guard/index.ts +0 -18
  79. package/template-mobile-vant-cli/src/router/guard/permissions.ts +0 -41
  80. package/template-mobile-vant-cli/src/router/guard/stateGuard.ts +0 -10
  81. package/template-mobile-vant-cli/src/router/index.ts +0 -31
  82. package/template-mobile-vant-cli/src/router/routes/index.ts +0 -46
  83. package/template-mobile-vant-cli/src/router/routes/modules/dataSource.ts +0 -32
  84. package/template-mobile-vant-cli/src/services/index.ts +0 -31
  85. package/template-mobile-vant-cli/src/services/userCenter/account.ts +0 -42
  86. package/template-mobile-vant-cli/src/services/userCenter/index.ts +0 -28
  87. package/template-mobile-vant-cli/src/store/index.ts +0 -20
  88. package/template-mobile-vant-cli/src/store/modules/global.ts +0 -23
  89. package/template-mobile-vant-cli/src/store/modules/user.ts +0 -107
  90. package/template-mobile-vant-cli/src/utils/accessToken.ts +0 -97
  91. package/template-mobile-vant-cli/src/utils/crypto/index.ts +0 -56
  92. package/template-mobile-vant-cli/src/utils/env.ts +0 -50
  93. package/template-mobile-vant-cli/src/utils/pageTitle.ts +0 -20
  94. package/template-mobile-vant-cli/src/utils/request/XHR.ts +0 -137
  95. package/template-mobile-vant-cli/src/utils/request/axiosCancel.ts +0 -69
  96. package/template-mobile-vant-cli/src/utils/request/checkStatus.ts +0 -25
  97. package/template-mobile-vant-cli/src/utils/request/index.ts +0 -155
  98. package/template-mobile-vant-cli/src/utils/request/typings.ts +0 -171
  99. package/template-mobile-vant-cli/src/utils/storage.ts +0 -215
  100. package/template-mobile-vant-cli/src/utils/util.ts +0 -27
  101. package/template-mobile-vant-cli/src/utils/validate.ts +0 -211
  102. package/template-mobile-vant-cli/tsconfig.json +0 -50
  103. package/template-mobile-vant-cli/types/auto-imports.d.ts +0 -80
  104. package/template-mobile-vant-cli/types/components.d.ts +0 -7
  105. package/template-mobile-vant-cli/types/config.d.ts +0 -56
  106. package/template-mobile-vant-cli/types/global.d.ts +0 -80
  107. package/template-mobile-vant-cli/types/mock.d.ts +0 -34
  108. package/template-mobile-vant-cli/types/module.d.ts +0 -53
  109. package/template-mobile-vant-cli/types/response.d.ts +0 -17
  110. package/template-mobile-vant-cli/types/system.d.ts +0 -58
  111. package/template-mobile-vant-cli/types/vant-import.d.ts +0 -24
  112. package/template-mobile-vant-cli/unocss.config.ts +0 -155
  113. package/template-mobile-vant-cli/vite.config.ts +0 -142
  114. package/template-mobile-vant-html/README.md +0 -4
  115. package/template-mobile-vant-html/css/global.css +0 -293
  116. package/template-mobile-vant-html/css/global.css.map +0 -1
  117. package/template-mobile-vant-html/css/global.less +0 -293
  118. package/template-mobile-vant-html/css/index.css +0 -20
  119. package/template-mobile-vant-html/css/index.css.map +0 -1
  120. package/template-mobile-vant-html/css/index.less +0 -21
  121. package/template-mobile-vant-html/image/disconnected.svg +0 -60
  122. package/template-mobile-vant-html/image/empty.svg +0 -52
  123. package/template-mobile-vant-html/image/error.svg +0 -53
  124. package/template-mobile-vant-html/image/loading.svg +0 -1
  125. package/template-mobile-vant-html/index.html +0 -91
  126. package/template-mobile-vant-html/js/index.js +0 -29
  127. package/template-mobile-vant-html/js/plugin/day.min.js +0 -1
  128. package/template-mobile-vant-html/js/plugin/fastclick.js +0 -730
  129. package/template-mobile-vant-html/js/plugin/jquery.min.js +0 -2
  130. package/template-mobile-vant-html/js/plugin/rem.js +0 -28
  131. package/template-mobile-vant-html/js/utils/appUtil.js +0 -70
  132. package/template-mobile-vant-html/js/utils/config.js +0 -3
  133. package/template-mobile-vant-html/js/utils/request.js +0 -61
  134. package/template-mobile-vant-html/js/utils/utils.js +0 -65
  135. package/template-mobile-vant-html/js/utils/validate.js +0 -292
package/dist/index.js ADDED
@@ -0,0 +1,62 @@
1
+ import e from"node:fs";import t from"node:path";import{fileURLToPath as n}from"node:url";import{promisify as r,stripVTControlCharacters as i}from"node:util";import a,{stdin as o,stdout as s}from"node:process";import*as c from"node:readline";import l from"node:readline";import{Writable as u}from"node:stream";import d from"chalk";import f from"minimist";import ee from"listr";import te from"ncp";import{spawn as p}from"child_process";import{rimraf as m}from"rimraf";var h=Object.create,g=Object.defineProperty,_=Object.getOwnPropertyDescriptor,ne=Object.getOwnPropertyNames,re=Object.getPrototypeOf,ie=Object.prototype.hasOwnProperty,ae=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),oe=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=ne(t),a=0,o=i.length,s;a<o;a++)s=i[a],!ie.call(e,s)&&s!==n&&g(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=_(t,s))||r.enumerable});return e},v=(e,t,n)=>(n=e==null?{}:h(re(e)),oe(t||!e||!e.__esModule?g(n,`default`,{value:e,enumerable:!0}):n,e)),se=ae(((exports,t)=>{let n={to(e,t){return t?`[${t+1};${e+1}H`:`[${e+1}G`},move(e,t){let n=``;return e<0?n+=`[${-e}D`:e>0&&(n+=`[${e}C`),t<0?n+=`[${-t}A`:t>0&&(n+=`[${t}B`),n},up:(e=1)=>`[${e}A`,down:(e=1)=>`[${e}B`,forward:(e=1)=>`[${e}C`,backward:(e=1)=>`[${e}D`,nextLine:(e=1)=>`\x1B[E`.repeat(e),prevLine:(e=1)=>`\x1B[F`.repeat(e),left:`\x1B[G`,hide:`\x1B[?25l`,show:`\x1B[?25h`,save:`\x1B7`,restore:`\x1B8`},r={up:(e=1)=>`\x1B[S`.repeat(e),down:(e=1)=>`\x1B[T`.repeat(e)},i={screen:`\x1B[2J`,up:(e=1)=>`\x1B[1J`.repeat(e),down:(e=1)=>`\x1B[J`.repeat(e),line:`\x1B[2K`,lineEnd:`\x1B[K`,lineStart:`\x1B[1K`,lines(e){let t=``;for(let r=0;r<e;r++)t+=this.line+(r<e-1?n.up():``);return e&&(t+=n.left),t}};t.exports={cursor:n,scroll:r,erase:i,beep:`\x07`}})),y=ae(((exports,t)=>{let n=process||{},r=n.argv||[],i=n.env||{},a=!(i.NO_COLOR||r.includes(`--no-color`))&&(!!i.FORCE_COLOR||r.includes(`--color`)||n.platform===`win32`||(n.stdout||{}).isTTY&&i.TERM!==`dumb`||!!i.CI),o=(e,t,n=e)=>r=>{let i=``+r,a=i.indexOf(t,e.length);return~a?e+s(i,t,n,a)+t:e+i+t},s=(e,t,n,r)=>{let i=``,a=0;do i+=e.substring(a,r)+n,a=r+t.length,r=e.indexOf(t,a);while(~r);return i+e.substring(a)},c=(e=a)=>{let t=e?o:()=>String;return{isColorSupported:e,reset:t(`\x1B[0m`,`\x1B[0m`),bold:t(`\x1B[1m`,`\x1B[22m`,`\x1B[22m\x1B[1m`),dim:t(`\x1B[2m`,`\x1B[22m`,`\x1B[22m\x1B[2m`),italic:t(`\x1B[3m`,`\x1B[23m`),underline:t(`\x1B[4m`,`\x1B[24m`),inverse:t(`\x1B[7m`,`\x1B[27m`),hidden:t(`\x1B[8m`,`\x1B[28m`),strikethrough:t(`\x1B[9m`,`\x1B[29m`),black:t(`\x1B[30m`,`\x1B[39m`),red:t(`\x1B[31m`,`\x1B[39m`),green:t(`\x1B[32m`,`\x1B[39m`),yellow:t(`\x1B[33m`,`\x1B[39m`),blue:t(`\x1B[34m`,`\x1B[39m`),magenta:t(`\x1B[35m`,`\x1B[39m`),cyan:t(`\x1B[36m`,`\x1B[39m`),white:t(`\x1B[37m`,`\x1B[39m`),gray:t(`\x1B[90m`,`\x1B[39m`),bgBlack:t(`\x1B[40m`,`\x1B[49m`),bgRed:t(`\x1B[41m`,`\x1B[49m`),bgGreen:t(`\x1B[42m`,`\x1B[49m`),bgYellow:t(`\x1B[43m`,`\x1B[49m`),bgBlue:t(`\x1B[44m`,`\x1B[49m`),bgMagenta:t(`\x1B[45m`,`\x1B[49m`),bgCyan:t(`\x1B[46m`,`\x1B[49m`),bgWhite:t(`\x1B[47m`,`\x1B[49m`),blackBright:t(`\x1B[90m`,`\x1B[39m`),redBright:t(`\x1B[91m`,`\x1B[39m`),greenBright:t(`\x1B[92m`,`\x1B[39m`),yellowBright:t(`\x1B[93m`,`\x1B[39m`),blueBright:t(`\x1B[94m`,`\x1B[39m`),magentaBright:t(`\x1B[95m`,`\x1B[39m`),cyanBright:t(`\x1B[96m`,`\x1B[39m`),whiteBright:t(`\x1B[97m`,`\x1B[39m`),bgBlackBright:t(`\x1B[100m`,`\x1B[49m`),bgRedBright:t(`\x1B[101m`,`\x1B[49m`),bgGreenBright:t(`\x1B[102m`,`\x1B[49m`),bgYellowBright:t(`\x1B[103m`,`\x1B[49m`),bgBlueBright:t(`\x1B[104m`,`\x1B[49m`),bgMagentaBright:t(`\x1B[105m`,`\x1B[49m`),bgCyanBright:t(`\x1B[106m`,`\x1B[49m`),bgWhiteBright:t(`\x1B[107m`,`\x1B[49m`)}};t.exports=c(),t.exports.createColors=c})),b=v(se(),1),ce=v(y(),1);function le({onlyFirst:e=!1}={}){let t=[`[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))`,`(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))`].join(`|`);return new RegExp(t,e?void 0:`g`)}const ue=le();function x(e){if(typeof e!=`string`)throw TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(ue,``)}function S(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,`default`)?e.default:e}var C={exports:{}};(function(e){var t={};e.exports=t,t.eastAsianWidth=function(e){var t=e.charCodeAt(0),n=e.length==2?e.charCodeAt(1):0,r=t;return 55296<=t&&t<=56319&&56320<=n&&n<=57343&&(t&=1023,n&=1023,r=t<<10|n,r+=65536),r==12288||65281<=r&&r<=65376||65504<=r&&r<=65510?`F`:r==8361||65377<=r&&r<=65470||65474<=r&&r<=65479||65482<=r&&r<=65487||65490<=r&&r<=65495||65498<=r&&r<=65500||65512<=r&&r<=65518?`H`:4352<=r&&r<=4447||4515<=r&&r<=4519||4602<=r&&r<=4607||9001<=r&&r<=9002||11904<=r&&r<=11929||11931<=r&&r<=12019||12032<=r&&r<=12245||12272<=r&&r<=12283||12289<=r&&r<=12350||12353<=r&&r<=12438||12441<=r&&r<=12543||12549<=r&&r<=12589||12593<=r&&r<=12686||12688<=r&&r<=12730||12736<=r&&r<=12771||12784<=r&&r<=12830||12832<=r&&r<=12871||12880<=r&&r<=13054||13056<=r&&r<=19903||19968<=r&&r<=42124||42128<=r&&r<=42182||43360<=r&&r<=43388||44032<=r&&r<=55203||55216<=r&&r<=55238||55243<=r&&r<=55291||63744<=r&&r<=64255||65040<=r&&r<=65049||65072<=r&&r<=65106||65108<=r&&r<=65126||65128<=r&&r<=65131||110592<=r&&r<=110593||127488<=r&&r<=127490||127504<=r&&r<=127546||127552<=r&&r<=127560||127568<=r&&r<=127569||131072<=r&&r<=194367||177984<=r&&r<=196605||196608<=r&&r<=262141?`W`:32<=r&&r<=126||162<=r&&r<=163||165<=r&&r<=166||r==172||r==175||10214<=r&&r<=10221||10629<=r&&r<=10630?`Na`:r==161||r==164||167<=r&&r<=168||r==170||173<=r&&r<=174||176<=r&&r<=180||182<=r&&r<=186||188<=r&&r<=191||r==198||r==208||215<=r&&r<=216||222<=r&&r<=225||r==230||232<=r&&r<=234||236<=r&&r<=237||r==240||242<=r&&r<=243||247<=r&&r<=250||r==252||r==254||r==257||r==273||r==275||r==283||294<=r&&r<=295||r==299||305<=r&&r<=307||r==312||319<=r&&r<=322||r==324||328<=r&&r<=331||r==333||338<=r&&r<=339||358<=r&&r<=359||r==363||r==462||r==464||r==466||r==468||r==470||r==472||r==474||r==476||r==593||r==609||r==708||r==711||713<=r&&r<=715||r==717||r==720||728<=r&&r<=731||r==733||r==735||768<=r&&r<=879||913<=r&&r<=929||931<=r&&r<=937||945<=r&&r<=961||963<=r&&r<=969||r==1025||1040<=r&&r<=1103||r==1105||r==8208||8211<=r&&r<=8214||8216<=r&&r<=8217||8220<=r&&r<=8221||8224<=r&&r<=8226||8228<=r&&r<=8231||r==8240||8242<=r&&r<=8243||r==8245||r==8251||r==8254||r==8308||r==8319||8321<=r&&r<=8324||r==8364||r==8451||r==8453||r==8457||r==8467||r==8470||8481<=r&&r<=8482||r==8486||r==8491||8531<=r&&r<=8532||8539<=r&&r<=8542||8544<=r&&r<=8555||8560<=r&&r<=8569||r==8585||8592<=r&&r<=8601||8632<=r&&r<=8633||r==8658||r==8660||r==8679||r==8704||8706<=r&&r<=8707||8711<=r&&r<=8712||r==8715||r==8719||r==8721||r==8725||r==8730||8733<=r&&r<=8736||r==8739||r==8741||8743<=r&&r<=8748||r==8750||8756<=r&&r<=8759||8764<=r&&r<=8765||r==8776||r==8780||r==8786||8800<=r&&r<=8801||8804<=r&&r<=8807||8810<=r&&r<=8811||8814<=r&&r<=8815||8834<=r&&r<=8835||8838<=r&&r<=8839||r==8853||r==8857||r==8869||r==8895||r==8978||9312<=r&&r<=9449||9451<=r&&r<=9547||9552<=r&&r<=9587||9600<=r&&r<=9615||9618<=r&&r<=9621||9632<=r&&r<=9633||9635<=r&&r<=9641||9650<=r&&r<=9651||9654<=r&&r<=9655||9660<=r&&r<=9661||9664<=r&&r<=9665||9670<=r&&r<=9672||r==9675||9678<=r&&r<=9681||9698<=r&&r<=9701||r==9711||9733<=r&&r<=9734||r==9737||9742<=r&&r<=9743||9748<=r&&r<=9749||r==9756||r==9758||r==9792||r==9794||9824<=r&&r<=9825||9827<=r&&r<=9829||9831<=r&&r<=9834||9836<=r&&r<=9837||r==9839||9886<=r&&r<=9887||9918<=r&&r<=9919||9924<=r&&r<=9933||9935<=r&&r<=9953||r==9955||9960<=r&&r<=9983||r==10045||r==10071||10102<=r&&r<=10111||11093<=r&&r<=11097||12872<=r&&r<=12879||57344<=r&&r<=63743||65024<=r&&r<=65039||r==65533||127232<=r&&r<=127242||127248<=r&&r<=127277||127280<=r&&r<=127337||127344<=r&&r<=127386||917760<=r&&r<=917999||983040<=r&&r<=1048573||1048576<=r&&r<=1114109?`A`:`N`},t.characterLength=function(e){var t=this.eastAsianWidth(e);return t==`F`||t==`W`||t==`A`?2:1};function n(e){return e.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}t.length=function(e){for(var t=n(e),r=0,i=0;i<t.length;i++)r+=this.characterLength(t[i]);return r},t.slice=function(e,r,i){textLen=t.length(e),r=r||0,i=i||1,r<0&&(r=textLen+r),i<0&&(i=textLen+i);for(var a=``,o=0,s=n(e),c=0;c<s.length;c++){var l=s[c],u=t.length(l);if(o>=r-(u==2?1:0))if(o+u<=i)a+=l;else break;o+=u}return a}})(C);var de=C.exports;const fe=S(de);var pe=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g};const me=S(pe);function w(e,t={}){if(typeof e!=`string`||e.length===0||(t={ambiguousIsNarrow:!0,...t},e=x(e),e.length===0))return 0;e=e.replace(me(),` `);let n=t.ambiguousIsNarrow?1:2,r=0;for(let t of e){let e=t.codePointAt(0);if(e<=31||e>=127&&e<=159||e>=768&&e<=879)continue;switch(fe.eastAsianWidth(t)){case`F`:case`W`:r+=2;break;case`A`:r+=n;break;default:r+=1}}return r}const he=(e=0)=>t=>`\x1B[${t+e}m`,ge=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,_e=(e=0)=>(t,n,r)=>`\x1B[${38+e};2;${t};${n};${r}m`,T={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(T.modifier);const ve=Object.keys(T.color),ye=Object.keys(T.bgColor);[...ve,...ye];function be(){let e=new Map;for(let[t,n]of Object.entries(T)){for(let[t,r]of Object.entries(n))T[t]={open:`\x1B[${r[0]}m`,close:`\x1B[${r[1]}m`},n[t]=T[t],e.set(r[0],r[1]);Object.defineProperty(T,t,{value:n,enumerable:!1})}return Object.defineProperty(T,`codes`,{value:e,enumerable:!1}),T.color.close=`\x1B[39m`,T.bgColor.close=`\x1B[49m`,T.color.ansi=he(),T.color.ansi256=ge(),T.color.ansi16m=_e(),T.bgColor.ansi=he(10),T.bgColor.ansi256=ge(10),T.bgColor.ansi16m=_e(10),Object.defineProperties(T,{rgbToAnsi256:{value:(e,t,n)=>e===t&&t===n?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(n/255*5),enumerable:!1},hexToRgb:{value:e=>{let t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!t)return[0,0,0];let[n]=t;n.length===3&&(n=[...n].map(e=>e+e).join(``));let r=Number.parseInt(n,16);return[r>>16&255,r>>8&255,r&255]},enumerable:!1},hexToAnsi256:{value:e=>T.rgbToAnsi256(...T.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value:e=>{if(e<8)return 30+e;if(e<16)return 90+(e-8);let t,n,r;if(e>=232)t=((e-232)*10+8)/255,n=t,r=t;else{e-=16;let i=e%36;t=Math.floor(e/36)/5,n=Math.floor(i/6)/5,r=i%6/5}let i=Math.max(t,n,r)*2;if(i===0)return 30;let a=30+(Math.round(r)<<2|Math.round(n)<<1|Math.round(t));return i===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(e,t,n)=>T.ansi256ToAnsi(T.rgbToAnsi256(e,t,n)),enumerable:!1},hexToAnsi:{value:e=>T.ansi256ToAnsi(T.hexToAnsi256(e)),enumerable:!1}}),T}const xe=be(),E=new Set([`\x1B`,`›`]),D=`]8;;`,Se=e=>`${E.values().next().value}[${e}m`,Ce=e=>`${E.values().next().value}${D}${e}`,we=e=>e.split(` `).map(e=>w(e)),O=(e,t,n)=>{let r=[...t],i=!1,a=!1,o=w(x(e[e.length-1]));for(let[t,s]of r.entries()){let c=w(s);if(o+c<=n?e[e.length-1]+=s:(e.push(s),o=0),E.has(s)&&(i=!0,a=r.slice(t+1).join(``).startsWith(D)),i){a?s===`\x07`&&(i=!1,a=!1):s===`m`&&(i=!1);continue}o+=c,o===n&&t<r.length-1&&(e.push(``),o=0)}!o&&e[e.length-1].length>0&&e.length>1&&(e[e.length-2]+=e.pop())},Te=e=>{let t=e.split(` `),n=t.length;for(;n>0&&!(w(t[n-1])>0);)n--;return n===t.length?e:t.slice(0,n).join(` `)+t.slice(n).join(``)},Ee=(e,t,n={})=>{if(n.trim!==!1&&e.trim()===``)return``;let r=``,i,a,o=we(e),s=[``];for(let[r,i]of e.split(` `).entries()){n.trim!==!1&&(s[s.length-1]=s[s.length-1].trimStart());let e=w(s[s.length-1]);if(r!==0&&(e>=t&&(n.wordWrap===!1||n.trim===!1)&&(s.push(``),e=0),(e>0||n.trim===!1)&&(s[s.length-1]+=` `,e++)),n.hard&&o[r]>t){let n=t-e,a=1+Math.floor((o[r]-n-1)/t);Math.floor((o[r]-1)/t)<a&&s.push(``),O(s,i,t);continue}if(e+o[r]>t&&e>0&&o[r]>0){if(n.wordWrap===!1&&e<t){O(s,i,t);continue}s.push(``)}if(e+o[r]>t&&n.wordWrap===!1){O(s,i,t);continue}s[s.length-1]+=i}n.trim!==!1&&(s=s.map(e=>Te(e)));let c=[...s.join(`
2
+ `)];for(let[e,t]of c.entries()){if(r+=t,E.has(t)){let{groups:t}=RegExp(`(?:\\[(?<code>\\d+)m|\\${D}(?<uri>.*))`).exec(c.slice(e).join(``))||{groups:{}};if(t.code!==void 0){let e=Number.parseFloat(t.code);i=e===39?void 0:e}else t.uri!==void 0&&(a=t.uri.length===0?void 0:t.uri)}let n=xe.codes.get(Number(i));c[e+1]===`
3
+ `?(a&&(r+=Ce(``)),i&&n&&(r+=Se(n))):t===`
4
+ `&&(i&&n&&(r+=Se(i)),a&&(r+=Ce(a)))}return r};function k(e,t,n){return String(e).normalize().replace(/\r\n/g,`
5
+ `).split(`
6
+ `).map(e=>Ee(e,t,n)).join(`
7
+ `)}const De=[`up`,`down`,`left`,`right`,`space`,`enter`,`cancel`],A={actions:new Set(De),aliases:new Map([[`k`,`up`],[`j`,`down`],[`h`,`left`],[`l`,`right`],[``,`cancel`],[`escape`,`cancel`]])};function j(e,t){if(typeof e==`string`)return A.aliases.get(e)===t;for(let n of e)if(n!==void 0&&j(n,t))return!0;return!1}function Oe(e,t){if(e===t)return;let n=e.split(`
8
+ `),r=t.split(`
9
+ `),i=[];for(let e=0;e<Math.max(n.length,r.length);e++)n[e]!==r[e]&&i.push(e);return i}const ke=globalThis.process.platform.startsWith(`win`),M=Symbol(`clack:cancel`);function N(e){return e===M}function P(e,t){let n=e;n.isTTY&&n.setRawMode(t)}function Ae({input:e=o,output:t=s,overwrite:n=!0,hideCursor:r=!0}={}){let i=c.createInterface({input:e,output:t,prompt:``,tabSize:1});c.emitKeypressEvents(e,i),e.isTTY&&e.setRawMode(!0);let a=(i,{name:o,sequence:s})=>{let l=String(i);if(j([l,o,s],`cancel`)){r&&t.write(b.cursor.show),process.exit(0);return}if(!n)return;let u=o===`return`?0:-1,d=o===`return`?-1:0;c.moveCursor(t,u,d,()=>{c.clearLine(t,1,()=>{e.once(`keypress`,a)})})};return r&&t.write(b.cursor.hide),e.once(`keypress`,a),()=>{e.off(`keypress`,a),r&&t.write(b.cursor.show),e.isTTY&&!ke&&e.setRawMode(!1),i.terminal=!1,i.close()}}var je=Object.defineProperty,Me=(e,t,n)=>t in e?je(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,F=(e,t,n)=>(Me(e,typeof t==`symbol`?t:t+``,n),n),I=class{constructor(e,t=!0){F(this,`input`),F(this,`output`),F(this,`_abortSignal`),F(this,`rl`),F(this,`opts`),F(this,`_render`),F(this,`_track`,!1),F(this,`_prevFrame`,``),F(this,`_subscribers`,new Map),F(this,`_cursor`,0),F(this,`state`,`initial`),F(this,`error`,``),F(this,`value`);let{input:n=o,output:r=s,render:i,signal:a,...c}=e;this.opts=c,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=i.bind(this),this._track=t,this._abortSignal=a,this.input=n,this.output=r}unsubscribe(){this._subscribers.clear()}setSubscriber(e,t){let n=this._subscribers.get(e)??[];n.push(t),this._subscribers.set(e,n)}on(e,t){this.setSubscriber(e,{cb:t})}once(e,t){this.setSubscriber(e,{cb:t,once:!0})}emit(e,...t){let n=this._subscribers.get(e)??[],r=[];for(let e of n)e.cb(...t),e.once&&r.push(()=>n.splice(n.indexOf(e),1));for(let e of r)e()}prompt(){return new Promise((e,t)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state=`cancel`,this.close(),e(M);this._abortSignal.addEventListener(`abort`,()=>{this.state=`cancel`,this.close()},{once:!0})}let n=new u;n._write=(e,t,n)=>{this._track&&(this.value=this.rl?.line.replace(/\t/g,``),this._cursor=this.rl?.cursor??0,this.emit(`value`,this.value)),n()},this.input.pipe(n),this.rl=l.createInterface({input:this.input,output:n,tabSize:2,prompt:``,escapeCodeTimeout:50,terminal:!0}),l.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on(`keypress`,this.onKeypress),P(this.input,!0),this.output.on(`resize`,this.render),this.render(),this.once(`submit`,()=>{this.output.write(b.cursor.show),this.output.off(`resize`,this.render),P(this.input,!1),e(this.value)}),this.once(`cancel`,()=>{this.output.write(b.cursor.show),this.output.off(`resize`,this.render),P(this.input,!1),e(M)})})}onKeypress(e,t){if(this.state===`error`&&(this.state=`active`),t?.name&&(!this._track&&A.aliases.has(t.name)&&this.emit(`cursor`,A.aliases.get(t.name)),A.actions.has(t.name)&&this.emit(`cursor`,t.name)),e&&(e.toLowerCase()===`y`||e.toLowerCase()===`n`)&&this.emit(`confirm`,e.toLowerCase()===`y`),e===` `&&this.opts.placeholder&&(this.value||(this.rl?.write(this.opts.placeholder),this.emit(`value`,this.opts.placeholder))),e&&this.emit(`key`,e.toLowerCase()),t?.name===`return`){if(this.opts.validate){let e=this.opts.validate(this.value);e&&(this.error=e instanceof Error?e.message:e,this.state=`error`,this.rl?.write(this.value))}this.state!==`error`&&(this.state=`submit`)}j([e,t?.name,t?.sequence],`cancel`)&&(this.state=`cancel`),(this.state===`submit`||this.state===`cancel`)&&this.emit(`finalize`),this.render(),(this.state===`submit`||this.state===`cancel`)&&this.close()}close(){this.input.unpipe(),this.input.removeListener(`keypress`,this.onKeypress),this.output.write(`
10
+ `),P(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let e=k(this._prevFrame,process.stdout.columns,{hard:!0}).split(`
11
+ `).length-1;this.output.write(b.cursor.move(-999,e*-1))}render(){let e=k(this._render(this)??``,process.stdout.columns,{hard:!0});if(e!==this._prevFrame){if(this.state===`initial`)this.output.write(b.cursor.hide);else{let t=Oe(this._prevFrame,e);if(this.restoreCursor(),t&&t?.length===1){let n=t[0];this.output.write(b.cursor.move(0,n)),this.output.write(b.erase.lines(1));let r=e.split(`
12
+ `);this.output.write(r[n]),this._prevFrame=e,this.output.write(b.cursor.move(0,r.length-n-1));return}if(t&&t?.length>1){let n=t[0];this.output.write(b.cursor.move(0,n)),this.output.write(b.erase.down());let r=e.split(`
13
+ `).slice(n);this.output.write(r.join(`
14
+ `)),this._prevFrame=e;return}this.output.write(b.erase.down())}this.output.write(e),this.state===`initial`&&(this.state=`active`),this._prevFrame=e}}};Object.defineProperty;var Ne;Ne=new WeakMap;var Pe=Object.defineProperty,Fe=(e,t,n)=>t in e?Pe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ie=(e,t,n)=>(Fe(e,typeof t==`symbol`?t:t+``,n),n);let Le=class extends I{constructor(e){super(e,!1),Ie(this,`options`),Ie(this,`cursor`,0),this.options=e.options,this.value=[...e.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:t})=>t===e.cursorAt),0),this.on(`key`,e=>{e===`a`&&this.toggleAll()}),this.on(`cursor`,e=>{switch(e){case`left`:case`up`:this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case`down`:case`right`:this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case`space`:this.toggleValue();break}})}get _value(){return this.options[this.cursor].value}toggleAll(){let e=this.value.length===this.options.length;this.value=e?[]:this.options.map(e=>e.value)}toggleValue(){let e=this.value.includes(this._value);this.value=e?this.value.filter(e=>e!==this._value):[...this.value,this._value]}};Object.defineProperty;var Re=Object.defineProperty,ze=(e,t,n)=>t in e?Re(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Be=(e,t,n)=>(ze(e,typeof t==`symbol`?t:t+``,n),n),Ve=class extends I{constructor(e){super(e,!1),Be(this,`options`),Be(this,`cursor`,0),this.options=e.options,this.cursor=this.options.findIndex(({value:t})=>t===e.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on(`cursor`,e=>{switch(e){case`left`:case`up`:this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case`down`:case`right`:this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}};Object.defineProperty;var He=class extends I{get valueWithCursor(){if(this.state===`submit`)return this.value;if(this.cursor>=this.value.length)return`${this.value}\u2588`;let e=this.value.slice(0,this.cursor),[t,...n]=this.value.slice(this.cursor);return`${e}${ce.default.inverse(t)}${n.join(``)}`}get cursor(){return this._cursor}constructor(e){super(e),this.on(`finalize`,()=>{this.value||(this.value=e.defaultValue)})}},L=v(y(),1),Ue=v(se(),1);function We(){return a.platform===`win32`?!!a.env.CI||!!a.env.WT_SESSION||!!a.env.TERMINUS_SUBLIME||a.env.ConEmuTask===`{cmd::Cmder}`||a.env.TERM_PROGRAM===`Terminus-Sublime`||a.env.TERM_PROGRAM===`vscode`||a.env.TERM===`xterm-256color`||a.env.TERM===`alacritty`||a.env.TERMINAL_EMULATOR===`JetBrains-JediTerm`:a.env.TERM!==`linux`}const R=We(),z=(e,t)=>R?e:t,Ge=z(`◆`,`*`),Ke=z(`■`,`x`),qe=z(`▲`,`x`),B=z(`◇`,`o`);z(`┌`,`T`);const V=z(`│`,`|`),H=z(`└`,`—`),Je=z(`●`,`>`),Ye=z(`○`,` `),Xe=z(`◻`,`[•]`),Ze=z(`◼`,`[+]`),Qe=z(`◻`,`[ ]`);z(`▪`,`•`),z(`─`,`-`),z(`╮`,`+`),z(`├`,`+`),z(`╯`,`+`);const $e=z(`●`,`•`),et=z(`◆`,`*`),tt=z(`▲`,`!`),nt=z(`■`,`x`),U=e=>{switch(e){case`initial`:case`active`:return L.default.cyan(Ge);case`cancel`:return L.default.red(Ke);case`error`:return L.default.yellow(qe);case`submit`:return L.default.green(B)}},W=e=>{let{cursor:t,options:n,style:r}=e,i=e.maxItems??1/0,a=Math.max(process.stdout.rows-4,0),o=Math.min(a,Math.max(i,5)),s=0;t>=s+o-3?s=Math.max(Math.min(t-o+3,n.length-o),0):t<s+2&&(s=Math.max(t-2,0));let c=o<n.length&&s>0,l=o<n.length&&s+o<n.length;return n.slice(s,s+o).map((e,n,i)=>{let a=n===0&&c,o=n===i.length-1&&l;return a||o?L.default.dim(`...`):r(e,n+s===t)})},rt=e=>new He({validate:e.validate,placeholder:e.placeholder,defaultValue:e.defaultValue,initialValue:e.initialValue,render(){let t=`${L.default.gray(V)}
15
+ ${U(this.state)} ${e.message}
16
+ `,n=e.placeholder?L.default.inverse(e.placeholder[0])+L.default.dim(e.placeholder.slice(1)):L.default.inverse(L.default.hidden(`_`)),r=this.value?this.valueWithCursor:n;switch(this.state){case`error`:return`${t.trim()}
17
+ ${L.default.yellow(V)} ${r}
18
+ ${L.default.yellow(H)} ${L.default.yellow(this.error)}
19
+ `;case`submit`:return`${t}${L.default.gray(V)} ${L.default.dim(this.value||e.placeholder)}`;case`cancel`:return`${t}${L.default.gray(V)} ${L.default.strikethrough(L.default.dim(this.value??``))}${this.value?.trim()?`
20
+ ${L.default.gray(V)}`:``}`;default:return`${t}${L.default.cyan(V)} ${r}
21
+ ${L.default.cyan(H)}
22
+ `}}}).prompt(),G=e=>{let t=(e,t)=>{let n=e.label??String(e.value);switch(t){case`selected`:return`${L.default.dim(n)}`;case`active`:return`${L.default.green(Je)} ${n} ${e.hint?L.default.dim(`(${e.hint})`):``}`;case`cancelled`:return`${L.default.strikethrough(L.default.dim(n))}`;default:return`${L.default.dim(Ye)} ${L.default.dim(n)}`}};return new Ve({options:e.options,initialValue:e.initialValue,render(){let n=`${L.default.gray(V)}
23
+ ${U(this.state)} ${e.message}
24
+ `;switch(this.state){case`submit`:return`${n}${L.default.gray(V)} ${t(this.options[this.cursor],`selected`)}`;case`cancel`:return`${n}${L.default.gray(V)} ${t(this.options[this.cursor],`cancelled`)}
25
+ ${L.default.gray(V)}`;default:return`${n}${L.default.cyan(V)} ${W({cursor:this.cursor,options:this.options,maxItems:e.maxItems,style:(e,n)=>t(e,n?`active`:`inactive`)}).join(`
26
+ ${L.default.cyan(V)} `)}
27
+ ${L.default.cyan(H)}
28
+ `}}}).prompt()},it=e=>{let t=(e,t)=>{let n=e.label??String(e.value);return t===`active`?`${L.default.cyan(Xe)} ${n} ${e.hint?L.default.dim(`(${e.hint})`):``}`:t===`selected`?`${L.default.green(Ze)} ${L.default.dim(n)} ${e.hint?L.default.dim(`(${e.hint})`):``}`:t===`cancelled`?`${L.default.strikethrough(L.default.dim(n))}`:t===`active-selected`?`${L.default.green(Ze)} ${n} ${e.hint?L.default.dim(`(${e.hint})`):``}`:t===`submitted`?`${L.default.dim(n)}`:`${L.default.dim(Qe)} ${L.default.dim(n)}`};return new Le({options:e.options,initialValues:e.initialValues,required:e.required??!0,cursorAt:e.cursorAt,validate(e){if(this.required&&e.length===0)return`Please select at least one option.
29
+ ${L.default.reset(L.default.dim(`Press ${L.default.gray(L.default.bgWhite(L.default.inverse(` space `)))} to select, ${L.default.gray(L.default.bgWhite(L.default.inverse(` enter `)))} to submit`))}`},render(){let n=`${L.default.gray(V)}
30
+ ${U(this.state)} ${e.message}
31
+ `,r=(e,n)=>{let r=this.value.includes(e.value);return n&&r?t(e,`active-selected`):r?t(e,`selected`):t(e,n?`active`:`inactive`)};switch(this.state){case`submit`:return`${n}${L.default.gray(V)} ${this.options.filter(({value:e})=>this.value.includes(e)).map(e=>t(e,`submitted`)).join(L.default.dim(`, `))||L.default.dim(`none`)}`;case`cancel`:{let e=this.options.filter(({value:e})=>this.value.includes(e)).map(e=>t(e,`cancelled`)).join(L.default.dim(`, `));return`${n}${L.default.gray(V)} ${e.trim()?`${e}
32
+ ${L.default.gray(V)}`:``}`}case`error`:{let t=this.error.split(`
33
+ `).map((e,t)=>t===0?`${L.default.yellow(H)} ${L.default.yellow(e)}`:` ${e}`).join(`
34
+ `);return`${n+L.default.yellow(V)} ${W({options:this.options,cursor:this.cursor,maxItems:e.maxItems,style:r}).join(`
35
+ ${L.default.yellow(V)} `)}
36
+ ${t}
37
+ `}default:return`${n}${L.default.cyan(V)} ${W({options:this.options,cursor:this.cursor,maxItems:e.maxItems,style:r}).join(`
38
+ ${L.default.cyan(V)} `)}
39
+ ${L.default.cyan(H)}
40
+ `}}}).prompt()},at=(e=``)=>{process.stdout.write(`${L.default.gray(H)} ${L.default.red(e)}
41
+
42
+ `)},ot=(e=``)=>{process.stdout.write(`${L.default.gray(V)}
43
+ ${L.default.gray(H)} ${e}
44
+
45
+ `)},K={message:(e=``,{symbol:t=L.default.gray(V)}={})=>{let n=[`${L.default.gray(V)}`];if(e){let[r,...i]=e.split(`
46
+ `);n.push(`${t} ${r}`,...i.map(e=>`${L.default.gray(V)} ${e}`))}process.stdout.write(`${n.join(`
47
+ `)}
48
+ `)},info:e=>{K.message(e,{symbol:L.default.blue($e)})},success:e=>{K.message(e,{symbol:L.default.green(et)})},step:e=>{K.message(e,{symbol:L.default.green(B)})},warn:e=>{K.message(e,{symbol:L.default.yellow(tt)})},warning:e=>{K.warn(e)},error:e=>{K.message(e,{symbol:L.default.red(nt)})}},st=`${L.default.gray(V)} `,q={message:async(e,{symbol:t=L.default.gray(V)}={})=>{process.stdout.write(`${L.default.gray(V)}
49
+ ${t} `);let n=3;for await(let t of e){t=t.replace(/\n/g,`
50
+ ${st}`),t.includes(`
51
+ `)&&(n=3+i(t.slice(t.lastIndexOf(`
52
+ `))).length);let e=i(t).length;n+e<process.stdout.columns?(n+=e,process.stdout.write(t)):(process.stdout.write(`
53
+ ${st}${t.trimStart()}`),n=3+i(t.trimStart()).length)}process.stdout.write(`
54
+ `)},info:e=>q.message(e,{symbol:L.default.blue($e)}),success:e=>q.message(e,{symbol:L.default.green(et)}),step:e=>q.message(e,{symbol:L.default.green(B)}),warn:e=>q.message(e,{symbol:L.default.yellow(tt)}),warning:e=>q.warn(e),error:e=>q.message(e,{symbol:L.default.red(nt)})},ct=({indicator:e=`dots`}={})=>{let t=R?[`◒`,`◐`,`◓`,`◑`]:[`•`,`o`,`O`,`0`],n=R?80:120,r=process.env.CI===`true`,i,a,o=!1,s=``,c,l=performance.now(),u=e=>{let t=e>1?`Something went wrong`:`Canceled`;o&&_(t,e)},d=()=>u(2),f=()=>u(1),ee=()=>{process.on(`uncaughtExceptionMonitor`,d),process.on(`unhandledRejection`,d),process.on(`SIGINT`,f),process.on(`SIGTERM`,f),process.on(`exit`,u)},te=()=>{process.removeListener(`uncaughtExceptionMonitor`,d),process.removeListener(`unhandledRejection`,d),process.removeListener(`SIGINT`,f),process.removeListener(`SIGTERM`,f),process.removeListener(`exit`,u)},p=()=>{if(c===void 0)return;r&&process.stdout.write(`
55
+ `);let e=c.split(`
56
+ `);process.stdout.write(Ue.cursor.move(-999,e.length-1)),process.stdout.write(Ue.erase.down(e.length))},m=e=>e.replace(/\.+$/,``),h=e=>{let t=(performance.now()-e)/1e3,n=Math.floor(t/60),r=Math.floor(t%60);return n>0?`[${n}m ${r}s]`:`[${r}s]`},g=(u=``)=>{o=!0,i=Ae(),s=m(u),l=performance.now(),process.stdout.write(`${L.default.gray(V)}
57
+ `);let d=0,f=0;ee(),a=setInterval(()=>{if(r&&s===c)return;p(),c=s;let n=L.default.magenta(t[d]);if(r)process.stdout.write(`${n} ${s}...`);else if(e===`timer`)process.stdout.write(`${n} ${s} ${h(l)}`);else{let e=`.`.repeat(Math.floor(f)).slice(0,3);process.stdout.write(`${n} ${s}${e}`)}d=d+1<t.length?d+1:0,f=f<t.length?f+.125:0},n)},_=(t=``,n=0)=>{o=!1,clearInterval(a),p();let r=n===0?L.default.green(B):n===1?L.default.red(Ke):L.default.red(qe);s=m(t??s),e===`timer`?process.stdout.write(`${r} ${s} ${h(l)}
58
+ `):process.stdout.write(`${r} ${s}
59
+ `),te(),i()};return{start:g,stop:_,message:(e=``)=>{s=m(e??s)}}};function lt(e){return e.git||`git`}function ut(e,t,n){let r=[`clone`],i=n.args||[];if(n.shallow){if(i.includes(`--depth`))throw Error(`'--depth' cannot be specified when shallow is set to 'true'`);r.push(`--depth`,`1`)}return n.progress&&r.push(`--progress`),r=r.concat(i),r.push(`--`,e,t),[lt(n),r]}function dt(e,t){return[lt(t),[`checkout`,e]]}function ft(e,t,n,r,i){let[a,o]=ut(e,t,n),s=p(a,o);n.progress&&s.stderr.on(`data`,e=>{let t=e.toString();t.match(/Receiving objects:\s+(\d+)%/)?n.progress({phase:`receivingObjects`,percent:Number(RegExp.$1)}):t.match(/Resolving deltas:\s+(\d+)%/)&&n.progress({phase:`resolvingDeltas`,percent:Number(RegExp.$1)})}),s.on(`close`,e=>{e===0?n.checkout?c():(m(`${t}/.git`),r()):i(Error(`'git clone' failed with status `+e))});function c(){let[e,a]=dt(n.checkout,n),o=p(e,a,{cwd:t});o.on(`close`,function(e){e===0?r():i(Error(`'git checkout' failed with status `+e))})}}var pt=v(y(),1);const{cyan:mt,green:ht,magenta:gt,red:J,redBright:_t,blue:vt,yellow:yt,blueBright:bt,reset:xt}=pt.default,St=[yt,ht,mt,gt,J,_t,vt,bt,J,gt,xt],Ct=process.cwd(),wt=n(import.meta.url),Tt=t.dirname(wt);let Y=e.readFileSync(t.join(Tt,`../../../../script/version.json`),`utf-8`),X=e.readFileSync(t.join(Tt,`../../../tsconfig/tsconfig.base.json`),`utf-8`);Y=JSON.parse(Y),X=JSON.parse(X);const{proPackages:Et}=Y,Dt=[];Object.keys(Et).forEach((e,t)=>{Dt.push({name:e,version:Et[e],color:St[t]??J})});const Ot=r(te),kt=[{name:`gx-design-pro`,children:[{name:`Gitee`,url:`https://gitee.com/gx12358/vue3-antd-admin.git`},{name:`Github`,url:`https://github.com/gx12358/vue3-antd-admin.git`}]},{name:`gx-design-pro-thin`,children:[{name:`Gitee`,url:`https://github.com/gx12358/vue3-antd-admin-thin.git`},{name:`Github`,url:`https://github.com/gx12358/vue3-antd-admin-thin.git`}]}];function At(e){if(!e)return;let t=e.split(` `)[0],n=t.split(`/`);return{name:n[0],version:n[1]}}async function jt(e,n){let r=[`node_modules`];return Ot(e,n,{clobber:!1,filter:n=>{let i=t.relative(e,n),a=i.split(t.sep),o=a.length>1?a[1]:a[0];return!r.includes(o)}})}function Z(t,n){Object.keys(n).length>0&&e.writeFileSync(t,n)}function Mt(n,{name:r,dependencies:i={},tsConfig:a={}}){let o={};if(e.existsSync(t.join(n,`package.json`))){o=JSON.parse(e.readFileSync(t.join(n,`package.json`),`utf-8`)),o.name=r,o.dependencies={...o.dependencies||{},...i},a&&(a.include=[`src/**/*.ts`,`src/**/*.d.ts`,`src/**/*.tsx`,`src/**/*.vue`],a.exclude=[`dist`,`node_modules`,`**/*.js`],a.compilerOptions.paths={"@/*":[`src/*`]},Z(t.join(n,`tsconfig.app.json`),JSON.stringify(a,null,2)));let s=e.existsSync(t.join(n,`.npmrc`));s||Z(t.join(n,`.npmrc`),`shamefully-hoist=true`),Z(t.join(n,`package.json`),JSON.stringify(o,null,2))}}function Nt(e,n){let r=At(process.env.npm_config_user_agent),i=r?r.name:`npm`,a=``,o=t.relative(e,n);switch(a+=`Done. Now run:
60
+ `,n!==e&&(a+=`\n cd ${o.includes(` `)?`"${o}"`:o}`),i){case`yarn`:a+=`
61
+ yarn`,a+=`
62
+ yarn dev`;break;default:a+=`\n ${i} install`,a+=`\n ${i} run dev`;break}ot(a)}function Pt(e){return e===`.`?t.basename(t.resolve()):e}function Ft(e,t,n){let r=ct({indicator:`dots`});r.start(`Downloading project in ${t}...`),ft(`${e}`,t,{clone:!0},async()=>{await Mt(t,{name:n||Pt(n)}),r.stop(`Scaffolding project in ${t}...`),Nt(process.cwd(),t)},async e=>{r.stop(`error: ${e}`)})}async function It(r){let i=t.join(Ct,r.projectName),a=kt.find(e=>e.name===r.template),o=t.resolve(n(import.meta.url),`../..`,`template-${r.template}`),s=e.existsSync(o);s||a||(console.log(d.redBright(`模版目录不存在`)),process.exit(1));let c=()=>at(`Operation cancelled`);if(a)if(a.children&&a.children.length>0){let e=await G({message:xt(`Select a Git:`),options:a.children.map(e=>({label:e.name,value:e.url}))});if(N(e)){c();return}Ft(e,i,r.projectName)}else a.url&&Ft(a.url,i,r.projectName);else{let e={};if(r.template===`vite-project`){let t=await it({message:`Select packages:`,options:Dt.map(e=>({label:e.color(e.name),value:e}))});if(N(t)){c();return}t.forEach(t=>{e[t.name]=t.version})}let t=[{title:`Create project`,task:()=>jt(o,i)}];r.template!==`mobile-vant-html`&&t.push({title:`Init project`,task:async()=>{Mt(i,{name:r.projectName||Pt(r.projectName),dependencies:e,tsConfig:X})}});let n=new ee(t,{exitOnError:!1});await n.run(),r.template===`mobile-vant-html`?console.log(d.blueBright(`init success`)):Nt(Ct,i)}return!0}var Lt=v(y(),1);const Rt=n(import.meta.url),zt=t.dirname(Rt);let Q=e.readFileSync(t.join(zt,`../package.json`),`utf-8`);Q=JSON.parse(Q);const{version:Bt}=Q,{cyan:Vt,green:Ht,magenta:Ut,red:Wt,yellow:Gt}=Lt.default,Kt=`vue3-project`,qt=[{name:`vite-project`,color:Gt,customCommand:`pnpm create vite`},{name:`gx-design-pro`,color:Ht},{name:`gx-design-pro-thin`,color:Vt},{name:`mobile-vant-cli`,color:Ut},{name:`mobile-vant-html`,color:Wt}],Jt=qt.map(e=>[e.name]).reduce((e,t)=>e.concat(t),[]);function Yt(t){let n=e.readdirSync(t);return n.length===0||n.length===1&&n[0]===`.git`}function Xt(n){if(e.existsSync(n))for(let r of e.readdirSync(n)){if(r===`.git`)continue;e.rmSync(t.resolve(n,r),{recursive:!0,force:!0})}}function $(e){return e?e.trim().replace(/\/+$/g,``):``}function Zt(){let e=f(process.argv.slice(2),{string:[`_`]}),t=$(e._[0]),n=e.template||e.t;return{v:e.v,overwrite:e.overwrite,template:n,projectName:t}}async function Qt(t){let n=t.projectName||``,r=()=>at(`Operation cancelled`);if(!n){let e=await rt({message:`Project name:`,defaultValue:Kt,placeholder:Kt,validate:e=>e.length===0||$(e).length>0?void 0:`Invalid project name`});if(N(e)){r();return}n=$(e)}if(e.existsSync(n)&&!Yt(n)){let e=t.overwrite?`yes`:await G({message:(n===`.`?`Current directory`:`Target directory "${n}"`)+` is not empty. Please choose how to proceed:`,options:[{label:`Cancel operation`,value:`no`},{label:`Remove existing files and continue`,value:`yes`},{label:`Ignore files and continue`,value:`ignore`}]});if(N(e)){r();return}switch(e){case`yes`:Xt(n);break;case`no`:r();return}}let i=t.template,a=!1;if(t.template&&!Jt.includes(t.template)&&(i=void 0,a=!0),!i){let e=await G({message:a?`"${t.template}" isn't a valid template. Please choose from below: `:`Select a template:`,options:qt.map(e=>{let t=e.color;return{label:t(e.name),value:e.name}})});if(N(e)){r();return}i=e}return{...t,template:i,projectName:n}}async function $t(){let e=Zt();e.v&&(console.log(d.blueBright(Bt)),process.exit(1)),e=await Qt(e),e&&e.template&&e.projectName?await It(e):process.exit(1)}$t().catch(e=>{console.error(e)});export{$t as init};
package/index.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ import './dist/index.js'
package/package.json CHANGED
@@ -1,18 +1,26 @@
1
1
  {
2
2
  "name": "@gx-design-vue/create-gx-cli",
3
- "version": "0.1.16",
3
+ "version": "0.1.17",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "description": "a cli to bootstrap gx project",
7
7
  "main": "bin/create-gx-cli",
8
- "bin": "bin/create-gx-cli",
9
- "publishConfig": {
10
- "access": "public"
8
+ "bin": {
9
+ "create-gx-cli": "index.js"
11
10
  },
12
11
  "keywords": [
13
12
  "create-gx-cli",
14
13
  "create-project"
15
14
  ],
15
+ "scripts": {
16
+ "dev": "tsdown --watch",
17
+ "build": "tsdown",
18
+ "typecheck": "tsc",
19
+ "prepublishOnly": "npm run build"
20
+ },
21
+ "engines": {
22
+ "node": "^20.19.0 || >=22.12.0"
23
+ },
16
24
  "author": "gx12358",
17
25
  "dependencies": {
18
26
  "chalk": "^2.4.2",
@@ -27,11 +35,16 @@
27
35
  "prompts": "^2.4.1",
28
36
  "rimraf": "^6.0.1"
29
37
  },
38
+ "devDependencies": {
39
+ "@clack/prompts": "^0.11.0",
40
+ "cross-spawn": "^7.0.6",
41
+ "mri": "^1.2.0",
42
+ "picocolors": "^1.1.1",
43
+ "tsdown": "^0.14.0"
44
+ },
30
45
  "files": [
31
- "bin/",
32
- "src/",
33
- "template-gx-design-thin/*",
34
- "template-mobile-vant-html/*",
35
- "template-mobile-vant-cli/*"
46
+ "index.js",
47
+ "template-*",
48
+ "dist"
36
49
  ]
37
50
  }
package/bin/create-gx-cli DELETED
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { cli } from '../src/cli.js'
4
-
5
- cli()
package/src/cli.js DELETED
@@ -1,115 +0,0 @@
1
- import chalk from 'chalk'
2
- import fs from 'node:fs'
3
- import { fileURLToPath } from 'node:url'
4
- import path from 'node:path'
5
- import minimist from 'minimist'
6
- import prompts from 'prompts'
7
- import { blue, green, red, reset, yellow } from 'kolorist'
8
- import { createProject } from './main.js'
9
-
10
- const __filename = fileURLToPath(import.meta.url)
11
- const __dirname = path.dirname(__filename)
12
- let packageJSON = fs.readFileSync(path.join(__dirname, '../package.json'), 'utf-8')
13
- packageJSON = JSON.parse(packageJSON)
14
- const { version } = packageJSON
15
-
16
- const defaultTargetDir = 'vue3-project'
17
-
18
- const FRAMEWORKS = [
19
- {
20
- name: 'gx-design-pro',
21
- color: red
22
- },
23
- {
24
- name: 'gx-design-pro-thin',
25
- color: blue
26
- },
27
- {
28
- name: 'mobile-vant-cli',
29
- color: yellow
30
- },
31
- {
32
- name: 'mobile-vant-html',
33
- color: green
34
- }
35
- ]
36
-
37
- const TEMPLATES = FRAMEWORKS.map(
38
- f => (f.variants && f.variants.map(v => v.name)) || [ f.name ]
39
- ).reduce((a, b) => a.concat(b), [])
40
-
41
- function formatTargetDir(targetDir) {
42
- return targetDir ? targetDir.trim().replace(/\/+$/g, '') : ''
43
- }
44
-
45
- function parseArgumentsIntoOptions() {
46
- const argv = minimist(process.argv.slice(2), { string: [ '_' ] })
47
- const argTargetDir = formatTargetDir(argv._[0])
48
- const argTemplate = argv.template || argv.t
49
- return {
50
- v: argv.v,
51
- template: argTemplate,
52
- projectName: argTargetDir
53
- }
54
- }
55
-
56
- async function promptForMissingOptions(options) {
57
- const projectNamePrompts = []
58
- if (!options.projectName) {
59
- projectNamePrompts.push({
60
- type: options.projectName ? null : 'text',
61
- name: 'projectName',
62
- message: reset('Project name:'),
63
- initial: defaultTargetDir
64
- })
65
- }
66
- if (typeof options.template !== 'string' || !TEMPLATES.includes(options.template)) {
67
- projectNamePrompts.push({
68
- type: 'select',
69
- name: 'template',
70
- message:
71
- typeof options.template === 'string' && !TEMPLATES.includes(options.template)
72
- ? reset(
73
- `"${options.template}" isn't a valid template. Please choose from below: `
74
- )
75
- : reset('Select a Template:'),
76
- choices: FRAMEWORKS.map((framework) => {
77
- const frameworkColor = framework.color
78
- return {
79
- title: frameworkColor(framework.name),
80
- value: framework
81
- }
82
- })
83
- })
84
- }
85
- let answers = {
86
- template: {
87
- name: ''
88
- },
89
- projectName: ''
90
- }
91
-
92
- if (projectNamePrompts.length) {
93
- answers = await prompts(projectNamePrompts)
94
- }
95
-
96
- return {
97
- ...options,
98
- template: options.template || (answers.template ? answers.template.name : ''),
99
- projectName: options.projectName || answers.projectName || ''
100
- }
101
- }
102
-
103
- export async function cli() {
104
- let options = parseArgumentsIntoOptions()
105
- if (options.v) {
106
- console.log(chalk.blueBright(version))
107
- process.exit(1)
108
- }
109
- options = await promptForMissingOptions(options)
110
- if (options.template && options.projectName) {
111
- await createProject(options)
112
- } else {
113
- process.exit(1)
114
- }
115
- }
package/src/git.js DELETED
@@ -1,81 +0,0 @@
1
- // eslint-disable-next-line unicorn/prefer-node-protocol
2
- import { spawn } from 'child_process'
3
- import { rimraf } from 'rimraf'
4
-
5
- function git(opts) {
6
- return opts.git || 'git'
7
- }
8
-
9
- function buildCloneCommand(repo, targetPath, opts) {
10
- let args = [ 'clone' ]
11
- const userArgs = opts.args || []
12
-
13
- if (opts.shallow) {
14
- if (userArgs.includes('--depth')) {
15
- throw new Error('\'--depth\' cannot be specified when shallow is set to \'true\'')
16
- }
17
- args.push('--depth', '1')
18
- }
19
-
20
- if (opts.progress) {
21
- args.push('--progress')
22
- }
23
-
24
- args = args.concat(userArgs)
25
- args.push('--', repo, targetPath)
26
-
27
- return [ git(opts), args ]
28
- }
29
-
30
- function buildCheckoutCommand(ref, opts) {
31
- return [ git(opts), [ 'checkout', ref ] ]
32
- }
33
-
34
- export function clone(repo, targetPath, opts, onSuccess, onError) {
35
- const [ cmd, args ] = buildCloneCommand(repo, targetPath, opts)
36
- const proc = spawn(cmd, args)
37
-
38
- if (opts.progress) {
39
- proc.stderr.on('data', (evt) => {
40
- const line = evt.toString()
41
- if (line.match(/Receiving objects:\s+(\d+)%/)) {
42
- opts.progress({
43
- phase: 'receivingObjects',
44
- // eslint-disable-next-line regexp/no-legacy-features
45
- percent: Number(RegExp.$1)
46
- })
47
- } else if (line.match(/Resolving deltas:\s+(\d+)%/)) {
48
- opts.progress({
49
- phase: 'resolvingDeltas',
50
- // eslint-disable-next-line regexp/no-legacy-features
51
- percent: Number(RegExp.$1)
52
- })
53
- }
54
- })
55
- }
56
-
57
- proc.on('close', (status) => {
58
- if (status === 0) {
59
- if (opts.checkout) {
60
- _checkout()
61
- } else {
62
- rimraf(`${targetPath}/.git`)
63
- onSuccess()
64
- }
65
- } else {
66
- onError(new Error('\'git clone\' failed with status ' + status))
67
- }
68
- })
69
-
70
- function _checkout() {
71
- const [ cmd, args ] = buildCheckoutCommand(opts.checkout, opts)
72
- const proc = spawn(cmd, args, { cwd: targetPath })
73
- proc.on('close', function (status) {
74
- if (status === 0) {
75
- onSuccess()
76
- } else {
77
- onError(new Error('\'git checkout\' failed with status ' + status))
78
- }
79
- })
80
- }
81
- }
package/src/main.js DELETED
@@ -1,190 +0,0 @@
1
- import fs from 'node:fs'
2
- import path from 'node:path'
3
- import { fileURLToPath } from 'node:url'
4
- import { promisify } from 'node:util'
5
- import chalk from 'chalk'
6
- import { reset } from 'kolorist'
7
- import Listr from 'listr'
8
- import { createSpinner } from 'nanospinner'
9
- import ncp from 'ncp'
10
- import prompts from 'prompts'
11
- import { clone } from './git.js'
12
-
13
- const copy = promisify(ncp)
14
-
15
- const gitRepositoryList = [
16
- {
17
- name: 'gx-design-pro',
18
- children: [
19
- {
20
- name: 'Gitee',
21
- url: 'https://gitee.com/gx12358/vue3-antd-admin.git'
22
- },
23
- {
24
- name: 'Github',
25
- url: 'https://github.com/gx12358/vue3-antd-admin.git'
26
- }
27
- ]
28
- },
29
- {
30
- name: 'gx-design-pro-thin',
31
- children: [
32
- {
33
- name: 'Gitee',
34
- url: 'https://github.com/gx12358/vue3-antd-admin-thin.git'
35
- },
36
- {
37
- name: 'Github',
38
- url: 'https://github.com/gx12358/vue3-antd-admin-thin.git'
39
- }
40
- ]
41
- }
42
- ]
43
-
44
- async function copyTemplateFiles(templateDir, root) {
45
- const exclusions = [ 'node_modules' ]
46
- return copy(templateDir, root, {
47
- clobber: false,
48
- filter: (sourcePath) => {
49
- const relativePath = path.relative(templateDir, sourcePath)
50
- const folders = relativePath.split(path.sep)
51
- const folderToCheck = folders.length > 1 ? folders[1] : folders[0]
52
- return !exclusions.includes(folderToCheck)
53
- }
54
- })
55
- }
56
-
57
- function writeFile(path, content) {
58
- if (Object.keys(content).length > 0) {
59
- fs.writeFileSync(path, content)
60
- }
61
- }
62
-
63
- function editPackageJson(root, projectName) {
64
- let pkg = {}
65
-
66
- if (fs.existsSync(path.join(root, `package.json`))) {
67
- pkg = JSON.parse(
68
- fs.readFileSync(path.join(root, `package.json`), 'utf-8')
69
- )
70
-
71
- pkg.name = projectName
72
-
73
- const dirIsExists = fs.existsSync(path.join(root, '.npmrc'))
74
-
75
- if (!dirIsExists) {
76
- writeFile(path.join(root, '.npmrc'), 'shamefully-hoist=true')
77
- }
78
-
79
- writeFile(path.join(root, 'package.json'), JSON.stringify(pkg, null, 2))
80
- }
81
- }
82
-
83
- function doneLog(cwd, root) {
84
- if (root !== cwd) {
85
- console.log(chalk.blueBright(`cd ${path.relative(cwd, root)}`))
86
- }
87
- console.log(chalk.blueBright(`pnpm、yarn、npm install`))
88
- console.log(chalk.blueBright(`pnpm、yarn、npm run dev`))
89
- console.log()
90
- }
91
-
92
- function getProjectName(projectName) {
93
- return projectName === '.' ? path.basename(path.resolve()) : projectName
94
- }
95
-
96
- function download(url, root, projectName) {
97
- const spinner = createSpinner(`开始下载...${url}`).start()
98
- // 下载git代码
99
- clone(`${url}`, root, { clone: true }, async () => {
100
- await editPackageJson(root, projectName || getProjectName(projectName))
101
- spinner.success({
102
- text: '项目创建成功,请依次执行以下命令'
103
- })
104
- doneLog(process.cwd(), root)
105
- }, async (err) => {
106
- console.log(err)
107
- spinner.error({ text: '下载失败' })
108
- })
109
- }
110
-
111
- export async function createProject(options) {
112
- const cwd = process.cwd()
113
-
114
- const root = path.join(cwd, options.projectName)
115
-
116
- const downloadGit = gitRepositoryList.find(el => el.name === options.template)
117
-
118
- const templateDir = path.resolve(
119
- fileURLToPath(import.meta.url),
120
- '../..',
121
- `template-${options.template}`
122
- )
123
-
124
- const dirIsTemplate = fs.existsSync(templateDir)
125
-
126
- if (!dirIsTemplate) {
127
- if (!downloadGit) {
128
- console.log(chalk.redBright('模版目录不存在'))
129
- process.exit(1)
130
- }
131
- }
132
-
133
- // 目录是否已经存在
134
- const dirIsExists = fs.existsSync(root)
135
-
136
- if (dirIsExists) {
137
- console.log(chalk.redBright('目录已经存在'))
138
- process.exit(1)
139
- }
140
-
141
- if (downloadGit) {
142
- if (downloadGit.children && downloadGit.children.length > 0) {
143
- prompts([
144
- {
145
- type: 'select',
146
- name: 'url',
147
- message: reset('Select a Url:'),
148
- choices: downloadGit.children.map((item) => {
149
- return {
150
- title: item.name,
151
- value: item.url
152
- }
153
- })
154
- }
155
- ]).then((answers) => {
156
- if (answers.url) download(answers.url, root, options.projectName)
157
- })
158
- } else if (downloadGit.url) {
159
- download(downloadGit.url, root, options.projectName)
160
- }
161
- } else {
162
- const listr = [
163
- {
164
- title: '项目创建',
165
- task: () => copyTemplateFiles(templateDir, root)
166
- }
167
- ]
168
- if (options.template !== 'mobile-vant-html') {
169
- listr.push({
170
- title: '初始化项目',
171
- task: () => editPackageJson(root, options.projectName || getProjectName(options.projectName))
172
- })
173
- }
174
- const tasks = new Listr(
175
- listr,
176
- {
177
- exitOnError: false
178
- }
179
- )
180
-
181
- await tasks.run()
182
-
183
- if (options.template !== 'mobile-vant-html') {
184
- doneLog(cwd, root)
185
- } else {
186
- console.log(chalk.blueBright(`init success`))
187
- }
188
- }
189
- return true
190
- }
@@ -1,19 +0,0 @@
1
- root = true
2
-
3
- [*]
4
- charset=utf-8
5
- end_of_line=lf
6
- insert_final_newline=true
7
- indent_style=space
8
- indent_size=2
9
- max_line_length = 100
10
-
11
- [*.{yml,yaml,json}]
12
- indent_style = space
13
- indent_size = 2
14
-
15
- [*.md]
16
- trim_trailing_whitespace = false
17
-
18
- [Makefile]
19
- indent_style = tab
@@ -1,3 +0,0 @@
1
- VITE_IP_ADRESS=101.200.182.125
2
- VITE_HOME_PAGE=http://101.200.182.125/
3
- VITE_UPLOAD_PATH=api/prod-api
@@ -1,17 +0,0 @@
1
- # 实际执行环境 development
2
- VITE_NODE_ENV= development
3
-
4
- # environment 代码环境
5
- VITE_USE_MODE = development
6
-
7
- # 是否开启mock
8
- VITE_USE_MOCK = true
9
-
10
- # 是否删除console
11
- VITE_DROP_CONSOLE = false
12
-
13
- # proxy 代理的api 前缀
14
- VITE_PROXY_PREFIX = /devApi
15
-
16
- # api前缀
17
- VITE_BASE_URL=/api/prod-api