From b52f2bfb4e8de8bafb1ded446402faa49c9bb459 Mon Sep 17 00:00:00 2001
From: wmn <1525968046@qq.com>
Date: Mon, 2 May 2022 18:38:10 +0800
Subject: [PATCH] init
---
.d.ts | 0
.env.development | 10 +
.env.production | 16 +
.env.test | 16 +
.eslintignore | 7 +
.eslintrc.js | 81 +
.gitignore | 27 +
.npmrc | 1 +
.pnpm-debug.log | 1 +
.prettierignore | 2 +
.prettierrc.js | 22 +
.vscode/extensions.json | 3 +
.vscode/launch.json | 15 +
.vscode/settings.json | 144 +
.vscode/vue.code-snippets | 47 +
LICENSE | 21 +
README-zh_CN.md | 496 +
README.ja-JP.md | 481 +
README.md | 1 +
config/constant.ts | 37 +
config/themeConfig.ts | 10 +
config/vite/plugins/autoImport.ts | 12 +
config/vite/plugins/component.ts | 29 +
config/vite/plugins/compress.ts | 17 +
config/vite/plugins/index.ts | 45 +
config/vite/plugins/mock.ts | 18 +
config/vite/plugins/pages.ts | 13 +
config/vite/plugins/restart.ts | 13 +
config/vite/plugins/svgIcons.ts | 16 +
config/vite/plugins/visualizer.ts | 14 +
config/vite/proxy.ts | 25 +
docs/update.md | 15 +
index.html | 16 +
mock/_createProdMockServer.ts | 14 +
mock/user.ts | 114 +
package.json | 82 +
packages/create-fast-vue3/.gitignore | 4 +
packages/create-fast-vue3/.prettierignore | 1 +
packages/create-fast-vue3/.prettierrc | 7 +
packages/create-fast-vue3/README.md | 9 +
packages/create-fast-vue3/index.js | 186 +
packages/create-fast-vue3/outfile.cjs | 12789 ++++++++
packages/create-fast-vue3/package.json | 45 +
.../utils/directoryTraverse.js | 14 +
packages/create-fast-vue3/utils/getCommand.js | 7 +
packages/juejin-maths-game/.gitignore | 6 +
packages/juejin-maths-game/README.md | 77 +
packages/juejin-maths-game/package.json | 23 +
packages/juejin-maths-game/src/config.js | 10 +
packages/juejin-maths-game/src/index.js | 33 +
.../juejin-maths-game/src/lib/DIngtalkBot.js | 76 +
packages/juejin-maths-game/src/lib/Game.js | 163 +
packages/juejin-maths-game/src/lib/Maths.js | 136 +
packages/juejin-maths-game/src/lib/message.js | 9 +
packages/juejin-maths-game/src/lib/utils.js | 35 +
.../juejin-maths-game/statics/maths-code.png | Bin 0 -> 75809 bytes
packages/juejin-maths-game/statics/maths.png | Bin 0 -> 1015654 bytes
packages/juejin-maths-vue/README.md | 30 +
packages/juejin-maths-vue/babel.config.js | 5 +
packages/juejin-maths-vue/package-lock.json | 27342 ++++++++++++++++
packages/juejin-maths-vue/package.json | 47 +
packages/juejin-maths-vue/public/favicon.ico | Bin 0 -> 4286 bytes
packages/juejin-maths-vue/public/index.html | 17 +
packages/juejin-maths-vue/src/App.vue | 26 +
packages/juejin-maths-vue/src/api/juejin.js | 22 +
.../juejin-maths-vue/src/components/home.vue | 377 +
packages/juejin-maths-vue/src/less/home.less | 91 +
packages/juejin-maths-vue/src/less/index.less | 120 +
packages/juejin-maths-vue/src/main.js | 14 +
.../juejin-maths-vue/src/utils/request.js | 29 +
.../juejin-maths-vue/src/utils/running.env.js | 14 +
packages/juejin-maths-vue/vue.config.js | 36 +
plop-tpls/component/index.hbs | 12 +
plop-tpls/component/prompt.js | 63 +
plop-tpls/page/index.hbs | 15 +
plop-tpls/page/prompt.js | 53 +
plop-tpls/store/index.hbs | 11 +
plop-tpls/store/prompt.js | 50 +
plopfile.js | 6 +
pnpm-workspace.yaml | 2 +
postcss.config.js | 28 +
public/favicon.ico | Bin 0 -> 4286 bytes
src/.pnpm-debug.log | 19 +
src/App.vue | 41 +
src/api/user/index.ts | 24 +
src/api/user/types.ts | 26 +
src/assets/fonts/Blimone-ExtraBold.woff | Bin 0 -> 45464 bytes
src/assets/fonts/Blimone-ExtraLight.woff | Bin 0 -> 26456 bytes
src/assets/fonts/Blimone-Light.woff | Bin 0 -> 26908 bytes
src/assets/fonts/Blimone-Regular.woff | Bin 0 -> 27132 bytes
src/assets/icons/svg/github.svg | 4 +
src/assets/icons/svg/logo.svg | 83 +
src/assets/icons/svg/marks.svg | 4 +
src/assets/icons/svg/test.svg | 12 +
src/assets/icons/svg/ts.svg | 5 +
src/assets/icons/svg/twitter.svg | 4 +
src/assets/images/banner-02.webp | Bin 0 -> 17228 bytes
src/assets/images/banner2.svg | 48 +
src/assets/images/login-banner.png | Bin 0 -> 63369 bytes
src/assets/images/qunerweima.jpg | Bin 0 -> 19960 bytes
src/assets/logo.png | Bin 0 -> 6849 bytes
src/assets/pages-index.jpg | Bin 0 -> 143906 bytes
src/assets/styles/base.less | 0
src/auto-imports.d.ts | 246 +
src/components.d.ts | 16 +
src/components/Header/index.vue | 108 +
src/components/SvgIcon/index.vue | 50 +
src/components/footer/index.vue | 21 +
src/env.d.ts | 13 +
src/hooks/loading.ts | 15 +
src/index.css | 9 +
src/main.ts | 17 +
src/pages/data.ts | 65 +
src/pages/demo/index.vue | 45 +
src/pages/index.vue | 45 +
src/pages/login/index.vue | 3 +
src/pages/start/commuse.vue | 28 +
src/pages/start/components/commuse.vue | 127 +
src/pages/start/components/holyrelic.vue | 170 +
.../start/components/json/holyrelicname.json | 2122 ++
.../start/components/json/holyrelicnmain.json | 266 +
.../start/components/json/holyrelicnx.json | 1330 +
src/pages/start/components/json/monster.json | 266 +
src/pages/start/components/monster.vue | 95 +
src/pages/start/components/startnav.vue | 39 +
src/pages/start/holyrelic.vue | 28 +
src/pages/start/index.vue | 45 +
src/pages/start/monster.vue | 29 +
src/pages/start/other.vue | 29 +
src/pages/start/role.vue | 29 +
src/pages/start/thing.vue | 29 +
src/pages/start/weapon.vue | 30 +
src/router/index.ts | 14 +
src/router/root.ts | 6 +
src/store/index.ts | 8 +
src/store/modules/app/index.ts | 42 +
src/store/modules/app/types.ts | 12 +
src/store/modules/user/index.ts | 68 +
src/store/modules/user/types.ts | 21 +
src/utils/auth.ts | 15 +
src/utils/http/axios/index.ts | 117 +
src/utils/http/axios/status.ts | 41 +
src/utils/http/axios/type.ts | 20 +
src/utils/index.ts | 14 +
src/utils/result.ts | 62 +
tailwind.config.js | 14 +
tsconfig.json | 55 +
vite.config.ts | 76 +
yarn.lock | 5978 ++++
149 files changed, 56069 insertions(+)
create mode 100644 .d.ts
create mode 100644 .env.development
create mode 100644 .env.production
create mode 100644 .env.test
create mode 100644 .eslintignore
create mode 100644 .eslintrc.js
create mode 100644 .gitignore
create mode 100644 .npmrc
create mode 100644 .pnpm-debug.log
create mode 100644 .prettierignore
create mode 100644 .prettierrc.js
create mode 100644 .vscode/extensions.json
create mode 100644 .vscode/launch.json
create mode 100644 .vscode/settings.json
create mode 100644 .vscode/vue.code-snippets
create mode 100644 LICENSE
create mode 100644 README-zh_CN.md
create mode 100644 README.ja-JP.md
create mode 100644 README.md
create mode 100644 config/constant.ts
create mode 100644 config/themeConfig.ts
create mode 100644 config/vite/plugins/autoImport.ts
create mode 100644 config/vite/plugins/component.ts
create mode 100644 config/vite/plugins/compress.ts
create mode 100644 config/vite/plugins/index.ts
create mode 100644 config/vite/plugins/mock.ts
create mode 100644 config/vite/plugins/pages.ts
create mode 100644 config/vite/plugins/restart.ts
create mode 100644 config/vite/plugins/svgIcons.ts
create mode 100644 config/vite/plugins/visualizer.ts
create mode 100644 config/vite/proxy.ts
create mode 100644 docs/update.md
create mode 100644 index.html
create mode 100644 mock/_createProdMockServer.ts
create mode 100644 mock/user.ts
create mode 100644 package.json
create mode 100644 packages/create-fast-vue3/.gitignore
create mode 100644 packages/create-fast-vue3/.prettierignore
create mode 100644 packages/create-fast-vue3/.prettierrc
create mode 100644 packages/create-fast-vue3/README.md
create mode 100644 packages/create-fast-vue3/index.js
create mode 100644 packages/create-fast-vue3/outfile.cjs
create mode 100644 packages/create-fast-vue3/package.json
create mode 100644 packages/create-fast-vue3/utils/directoryTraverse.js
create mode 100644 packages/create-fast-vue3/utils/getCommand.js
create mode 100644 packages/juejin-maths-game/.gitignore
create mode 100644 packages/juejin-maths-game/README.md
create mode 100644 packages/juejin-maths-game/package.json
create mode 100644 packages/juejin-maths-game/src/config.js
create mode 100644 packages/juejin-maths-game/src/index.js
create mode 100644 packages/juejin-maths-game/src/lib/DIngtalkBot.js
create mode 100644 packages/juejin-maths-game/src/lib/Game.js
create mode 100644 packages/juejin-maths-game/src/lib/Maths.js
create mode 100644 packages/juejin-maths-game/src/lib/message.js
create mode 100644 packages/juejin-maths-game/src/lib/utils.js
create mode 100644 packages/juejin-maths-game/statics/maths-code.png
create mode 100644 packages/juejin-maths-game/statics/maths.png
create mode 100644 packages/juejin-maths-vue/README.md
create mode 100644 packages/juejin-maths-vue/babel.config.js
create mode 100644 packages/juejin-maths-vue/package-lock.json
create mode 100644 packages/juejin-maths-vue/package.json
create mode 100644 packages/juejin-maths-vue/public/favicon.ico
create mode 100644 packages/juejin-maths-vue/public/index.html
create mode 100644 packages/juejin-maths-vue/src/App.vue
create mode 100644 packages/juejin-maths-vue/src/api/juejin.js
create mode 100644 packages/juejin-maths-vue/src/components/home.vue
create mode 100644 packages/juejin-maths-vue/src/less/home.less
create mode 100644 packages/juejin-maths-vue/src/less/index.less
create mode 100644 packages/juejin-maths-vue/src/main.js
create mode 100644 packages/juejin-maths-vue/src/utils/request.js
create mode 100644 packages/juejin-maths-vue/src/utils/running.env.js
create mode 100644 packages/juejin-maths-vue/vue.config.js
create mode 100644 plop-tpls/component/index.hbs
create mode 100644 plop-tpls/component/prompt.js
create mode 100644 plop-tpls/page/index.hbs
create mode 100644 plop-tpls/page/prompt.js
create mode 100644 plop-tpls/store/index.hbs
create mode 100644 plop-tpls/store/prompt.js
create mode 100644 plopfile.js
create mode 100644 pnpm-workspace.yaml
create mode 100644 postcss.config.js
create mode 100644 public/favicon.ico
create mode 100644 src/.pnpm-debug.log
create mode 100644 src/App.vue
create mode 100644 src/api/user/index.ts
create mode 100644 src/api/user/types.ts
create mode 100644 src/assets/fonts/Blimone-ExtraBold.woff
create mode 100644 src/assets/fonts/Blimone-ExtraLight.woff
create mode 100644 src/assets/fonts/Blimone-Light.woff
create mode 100644 src/assets/fonts/Blimone-Regular.woff
create mode 100644 src/assets/icons/svg/github.svg
create mode 100644 src/assets/icons/svg/logo.svg
create mode 100644 src/assets/icons/svg/marks.svg
create mode 100644 src/assets/icons/svg/test.svg
create mode 100644 src/assets/icons/svg/ts.svg
create mode 100644 src/assets/icons/svg/twitter.svg
create mode 100644 src/assets/images/banner-02.webp
create mode 100644 src/assets/images/banner2.svg
create mode 100644 src/assets/images/login-banner.png
create mode 100644 src/assets/images/qunerweima.jpg
create mode 100644 src/assets/logo.png
create mode 100644 src/assets/pages-index.jpg
create mode 100644 src/assets/styles/base.less
create mode 100644 src/auto-imports.d.ts
create mode 100644 src/components.d.ts
create mode 100644 src/components/Header/index.vue
create mode 100644 src/components/SvgIcon/index.vue
create mode 100644 src/components/footer/index.vue
create mode 100644 src/env.d.ts
create mode 100644 src/hooks/loading.ts
create mode 100644 src/index.css
create mode 100644 src/main.ts
create mode 100644 src/pages/data.ts
create mode 100644 src/pages/demo/index.vue
create mode 100644 src/pages/index.vue
create mode 100644 src/pages/login/index.vue
create mode 100644 src/pages/start/commuse.vue
create mode 100644 src/pages/start/components/commuse.vue
create mode 100644 src/pages/start/components/holyrelic.vue
create mode 100644 src/pages/start/components/json/holyrelicname.json
create mode 100644 src/pages/start/components/json/holyrelicnmain.json
create mode 100644 src/pages/start/components/json/holyrelicnx.json
create mode 100644 src/pages/start/components/json/monster.json
create mode 100644 src/pages/start/components/monster.vue
create mode 100644 src/pages/start/components/startnav.vue
create mode 100644 src/pages/start/holyrelic.vue
create mode 100644 src/pages/start/index.vue
create mode 100644 src/pages/start/monster.vue
create mode 100644 src/pages/start/other.vue
create mode 100644 src/pages/start/role.vue
create mode 100644 src/pages/start/thing.vue
create mode 100644 src/pages/start/weapon.vue
create mode 100644 src/router/index.ts
create mode 100644 src/router/root.ts
create mode 100644 src/store/index.ts
create mode 100644 src/store/modules/app/index.ts
create mode 100644 src/store/modules/app/types.ts
create mode 100644 src/store/modules/user/index.ts
create mode 100644 src/store/modules/user/types.ts
create mode 100644 src/utils/auth.ts
create mode 100644 src/utils/http/axios/index.ts
create mode 100644 src/utils/http/axios/status.ts
create mode 100644 src/utils/http/axios/type.ts
create mode 100644 src/utils/index.ts
create mode 100644 src/utils/result.ts
create mode 100644 tailwind.config.js
create mode 100644 tsconfig.json
create mode 100644 vite.config.ts
create mode 100644 yarn.lock
diff --git a/.d.ts b/.d.ts
new file mode 100644
index 0000000..e69de29
diff --git a/.env.development b/.env.development
new file mode 100644
index 0000000..df89a72
--- /dev/null
+++ b/.env.development
@@ -0,0 +1,10 @@
+# 开发环境
+
+VITE_APP_TITLE = fast-vue3
+# 接口请求地址,会设置到 axios 的 baseURL 参数上
+VITE_APP_API_BASEURL = /api
+# 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空
+VITE_APP_DEBUG_TOOL = vconsole
+
+# 是否开启代理
+VITE_OPEN_PROXY0 = true
\ No newline at end of file
diff --git a/.env.production b/.env.production
new file mode 100644
index 0000000..49a74a1
--- /dev/null
+++ b/.env.production
@@ -0,0 +1,16 @@
+# 生产环境
+NODE_ENV = production
+
+# 页面标题
+VITE_APP_TITLE = fast-vue3
+# 接口请求地址,会设置到 axios 的 baseURL 参数上
+VITE_APP_API_BASEURL = /
+# 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空
+VITE_APP_DEBUG_TOOL = vconsole
+
+# 是否在打包时生成 sourcemap
+VITE_BUILD_SOURCEMAP = false
+# 是否在打包时删除 console 代码
+VITE_BUILD_DROP_CONSOLE = false
+# 是否在打包时开启压缩,支持 gzip 和 brotli
+VITE_BUILD_COMPRESS = gzip,brotli
\ No newline at end of file
diff --git a/.env.test b/.env.test
new file mode 100644
index 0000000..95c4a8a
--- /dev/null
+++ b/.env.test
@@ -0,0 +1,16 @@
+# 测试环境
+NODE_ENV = production
+
+# 页面标题
+VITE_APP_TITLE = fast-vue3
+# 接口请求地址,会设置到 axios 的 baseURL 参数上
+VITE_APP_API_BASEURL = /
+# 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空
+VITE_APP_DEBUG_TOOL = vconsole
+
+# 是否在打包时生成 sourcemap
+VITE_BUILD_SOURCEMAP = true
+# 是否在打包时删除 console 代码
+VITE_BUILD_DROP_CONSOLE = true
+# 是否在打包时开启压缩,支持 gzip 和 brotli
+VITE_BUILD_COMPRESS =
\ No newline at end of file
diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 0000000..86d19cf
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,7 @@
+# eslint 忽略检查
+node_modules
+dist
+!.prettierrc.js
+/src/assets/fonts
+/src/assets/icons
+/src/assets/images
\ No newline at end of file
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..53ac152
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,81 @@
+// @ts-check
+const { defineConfig } = require('eslint-define-config')
+module.exports = defineConfig({
+ root: true,
+ env: {
+ browser: true,
+ node: true,
+ es6: true,
+ },
+ parser: 'vue-eslint-parser',
+ parserOptions: {
+ parser: '@typescript-eslint/parser',
+ ecmaVersion: 2020,
+ sourceType: 'module',
+ jsxPragma: 'React',
+ ecmaFeatures: {
+ jsx: true,
+ },
+ },
+ extends: [
+ 'plugin:vue/vue3-recommended',
+ 'plugin:@typescript-eslint/recommended',
+ 'prettier',
+ 'plugin:prettier/recommended',
+ 'plugin:jest/recommended',
+ ],
+ rules: {
+ 'vue/script-setup-uses-vars': 'error',
+ 'prettier/prettier': ['error', { endOfLine: 'off' }],
+ '@typescript-eslint/ban-ts-ignore': 'off',
+ '@typescript-eslint/explicit-function-return-type': 'off',
+ '@typescript-eslint/no-explicit-any': 'off',
+ '@typescript-eslint/no-var-requires': 'off',
+ '@typescript-eslint/no-empty-function': 'off',
+ 'vue/custom-event-name-casing': 'off',
+ 'no-use-before-define': 'off',
+ '@typescript-eslint/no-use-before-define': 'off',
+ '@typescript-eslint/ban-ts-comment': 'off',
+ '@typescript-eslint/ban-types': 'off',
+ '@typescript-eslint/no-non-null-assertion': 'off',
+ '@typescript-eslint/explicit-module-boundary-types': 'off',
+ '@typescript-eslint/no-unused-vars': [
+ 'error',
+ {
+ argsIgnorePattern: '^_',
+ varsIgnorePattern: '^_',
+ },
+ ],
+ 'no-unused-vars': [
+ 'error',
+ {
+ argsIgnorePattern: '^_',
+ varsIgnorePattern: '^_',
+ },
+ ],
+ 'space-before-function-paren': 'off',
+
+ 'vue/attributes-order': 'off',
+ 'vue/one-component-per-file': 'off',
+ 'vue/html-closing-bracket-newline': 'off',
+ 'vue/max-attributes-per-line': 'off',
+ 'vue/multiline-html-element-content-newline': 'off',
+ 'vue/singleline-html-element-content-newline': 'off',
+ 'vue/attribute-hyphenation': 'off',
+ 'vue/require-default-prop': 'off',
+ 'vue/require-explicit-emits': 'off',
+ 'vue/html-self-closing': [
+ 'error',
+ {
+ html: {
+ void: 'always',
+ normal: 'never',
+ component: 'always',
+ },
+ svg: 'always',
+ math: 'always',
+ },
+ ],
+ 'vue/multi-word-component-names': 'off',
+ },
+})
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5541a33
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,27 @@
+node_modules
+.DS_Store
+dist
+dist-ssr
+
+.local
+# local env files
+.env.local
+.env.*.local
+.eslintcache
+
+
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+pnpm-lock.yaml*
+
+# Editor directories and files
+.idea
+# .vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
\ No newline at end of file
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 0000000..f13d124
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1 @@
+engine-strict=true
\ No newline at end of file
diff --git a/.pnpm-debug.log b/.pnpm-debug.log
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/.pnpm-debug.log
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 0000000..76add87
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,2 @@
+node_modules
+dist
\ No newline at end of file
diff --git a/.prettierrc.js b/.prettierrc.js
new file mode 100644
index 0000000..f14c4c1
--- /dev/null
+++ b/.prettierrc.js
@@ -0,0 +1,22 @@
+module.exports = {
+ tabWidth: 2,
+ jsxSingleQuote: true,
+ jsxBracketSameLine: true,
+ printWidth: 100,
+ singleQuote: true,
+ semi: false,
+ overrides: [
+ {
+ files: '*.json',
+ options: {
+ printWidth: 200,
+ },
+ },
+ ],
+ arrowParens: 'always',
+ endOfLine: 'auto',
+ vueIndentScriptAndStyle: true,
+ trailingComma: 'all',
+ proseWrap: 'never',
+ htmlWhitespaceSensitivity: 'strict',
+}
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 0000000..3dc5b08
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,3 @@
+{
+ "recommendations": ["johnsoncodehk.volar"]
+}
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000..0d22b58
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,15 @@
+{
+ // 使用 IntelliSense 了解相关属性。
+ // 悬停以查看现有属性的描述。
+ // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "type": "pwa-chrome",
+ "request": "launch",
+ "name": "Launch Chrome against localhost",
+ "url": "http://localhost:8080",
+ "webRoot": "${workspaceFolder}"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..d838527
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,144 @@
+{
+ "typescript.tsdk": "./node_modules/typescript/lib",
+ "volar.tsPlugin": true,
+ "volar.tsPluginStatus": false,
+ "npm.packageManager": "pnpm",
+ "editor.tabSize": 2,
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
+ "files.eol": "\n",
+ "search.exclude": {
+ "**/node_modules": true,
+ "**/*.log": true,
+ "**/*.log*": true,
+ "**/bower_components": true,
+ "**/dist": true,
+ "**/elehukouben": true,
+ "**/.git": true,
+ "**/.gitignore": true,
+ "**/.svn": true,
+ "**/.DS_Store": true,
+ "**/.idea": true,
+ "**/.vscode": false,
+ "**/yarn.lock": true,
+ "**/tmp": true,
+ "out": true,
+ "dist": true,
+ "node_modules": true,
+ "CHANGELOG.md": true,
+ "examples": true,
+ "res": true,
+ "screenshots": true,
+ "yarn-error.log": true,
+ "**/.yarn": true
+ },
+ "files.exclude": {
+ "**/.cache": true,
+ "**/.editorconfig": true,
+ "**/.eslintcache": true,
+ "**/bower_components": true,
+ "**/.idea": true,
+ "**/tmp": true,
+ "**/.git": true,
+ "**/.svn": true,
+ "**/.hg": true,
+ "**/CVS": true,
+ "**/.DS_Store": true
+ },
+ "files.watcherExclude": {
+ "**/.git/objects/**": true,
+ "**/.git/subtree-cache/**": true,
+ "**/.vscode/**": true,
+ "**/node_modules/**": true,
+ "**/tmp/**": true,
+ "**/bower_components/**": true,
+ "**/dist/**": true,
+ "**/yarn.lock": true
+ },
+ "stylelint.enable": true,
+ "stylelint.validate": ["css", "less", "postcss", "scss", "vue", "sass"],
+ "path-intellisense.mappings": {
+ "/@/": "${workspaceRoot}/src"
+ },
+ "[javascriptreact]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+ "[typescript]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+ "[typescriptreact]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+ "[html]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+ "[css]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+ "[less]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+ "[scss]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+ "[markdown]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
+ "editor.codeActionsOnSave": {
+ "source.fixAll.eslint": true
+ },
+ "[vue]": {
+ "editor.codeActionsOnSave": {
+ "source.fixAll.eslint": true,
+ "source.fixAll.stylelint": true
+ },
+ "editor.defaultFormatter": "johnsoncodehk.volar"
+ },
+ "i18n-ally.localesPaths": ["src/locales/lang"],
+ "i18n-ally.keystyle": "nested",
+ "i18n-ally.sortKeys": true,
+ "i18n-ally.namespace": true,
+ "i18n-ally.pathMatcher": "{locale}/{namespaces}.{ext}",
+ "i18n-ally.enabledParsers": ["ts"],
+ "i18n-ally.sourceLanguage": "en",
+ "i18n-ally.displayLanguage": "zh-CN",
+ "i18n-ally.enabledFrameworks": ["vue", "react"],
+ "cSpell.words": [
+ "vben",
+ "windi",
+ "browserslist",
+ "tailwindcss",
+ "esnext",
+ "antv",
+ "tinymce",
+ "qrcode",
+ "sider",
+ "pinia",
+ "sider",
+ "nprogress",
+ "INTLIFY",
+ "stylelint",
+ "esno",
+ "vitejs",
+ "sortablejs",
+ "mockjs",
+ "codemirror",
+ "iconify",
+ "commitlint",
+ "vditor",
+ "echarts",
+ "cropperjs",
+ "logicflow",
+ "vueuse",
+ "zxcvbn",
+ "lintstagedrc",
+ "brotli",
+ "tailwindcss",
+ "sider",
+ "pnpm",
+ "antd",
+ "lint-staged"
+ ],
+ "[javascript]": {
+ "editor.defaultFormatter": "vscode.typescript-language-features"
+ }
+}
diff --git a/.vscode/vue.code-snippets b/.vscode/vue.code-snippets
new file mode 100644
index 0000000..1ffe16f
--- /dev/null
+++ b/.vscode/vue.code-snippets
@@ -0,0 +1,47 @@
+{
+ "store新建页面": {
+ "scope": "typescript",
+ "prefix": "store",
+ "body": [
+ "import { defineStore } from 'pinia'",
+ "import { piniaStore } from '@store'",
+ "",
+ "export const use$1Store = defineStore(",
+ " '${1/(.*)/${1:/camelcase}/}',",
+ " {",
+ " state: () => ({}),",
+ " getters: {},",
+ " actions: {}",
+ " }",
+ ")",
+ "",
+ "export function use$1OutsideStore() {",
+ " return use$1Store(piniaStore)",
+ "}"
+ ],
+ "description": "store page"
+ },
+ "vue新建页面": {
+ "scope": "vue",
+ "prefix": "page",
+ "body": [
+ "",
+ " ",
+ " $3",
+ "
",
+ " ",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "description": "vue page"
+ }
+}
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..b5eb578
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020-present, Fast-vue3
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README-zh_CN.md b/README-zh_CN.md
new file mode 100644
index 0000000..2f4d788
--- /dev/null
+++ b/README-zh_CN.md
@@ -0,0 +1,496 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+一个开箱即用,快速搭建大型应用的Vue3+Vite2+TypeScript+...模板框架。集成了各类插件,并进行了模块化和按需加载的优化,可以放心使用。 [更新文档在此](https://github.com/tobe-fe-dalao/fast-vue3/blob/main/docs/update.md)
+
+[English](./README.md) | 简体中文 | [日本語](./README.ja-JP.md)
+
+
+# 功能亮点
+这里简单介绍一些核心部分,安装部分不再细讲,建议大家直接阅读官方文档或[可视化仓库](https://github1s.com/tobe-fe-dalao/fast-vue3)
+
+## 🪂大厂协作-代码规范
+🪁 目前多数大厂团队一般使用[husky](https://github.com/typicode/husky)和 [lint-staged](https://github.com/okonet/lint-staged) 来约束代码规范,
+- 通过`pre-commit`实现lint检查、单元测试、代码格式化等。
+- 结合VsCode编辑器(保存时自动执行格式化:editor.formatOnSave: true)
+- 配合Git hooks钩子(commit前或提交前执行:pre-commit => npm run lint:lint-staged)
+- IDE 配置(`.editorconfig`)、ESLint 配置(`.eslintrc.js` 和 `.eslintignore`)、StyleLint 配置(`.stylelintrc` 和 `.stylelintignore`),详细请看对应的配置文件。
+
+🔌关闭代码规范
+将 `src/` 目录分别加入 `.eslintignore` 和 `.stylelintignore` 进行忽略即可。
+
+
+## 目录结构
+
+以下是系统的目录结构
+
+```
+├── config
+│ ├── vite // vite配置
+│ ├── constant // 系统常量
+| └── themeConfig // 主题配置
+├── docs // 文档相关
+├── mock // mock数据
+├── plop-tpls // plop模板
+├── src
+│ ├── api // api请求
+│ ├── assets // 静态文件
+│ ├── components // 业务通用组件
+│ ├── page // 业务页面
+│ ├── router // 路由文件
+│ ├── store // 状态管理
+│ ├── utils // 工具类
+│ ├── App.vue // vue模板入口
+│ ├── main.ts // vue模板js
+├── .d.ts // 类型定义
+├── tailwind.config.js // tailwind全局配置
+├── tsconfig.json // ts配置
+└── vite.config.ts // vite全局配置
+```
+
+## 💕支持JSX语法
+
+```json
+{
+ ...
+ "@vitejs/plugin-vue-jsx": "^1.3.3"
+ ...
+}
+```
+## 🎸UI组件按需加载,自动导入
+```typescript
+//模块化写法
+import Components from 'unplugin-vue-components/vite'
+export const AutoRegistryComponents = () => {
+ return Components({
+ extensions: ['vue', 'md'],
+ deep: true,
+ dts: 'src/components.d.ts',
+ directoryAsNamespace: false,
+ globalNamespaces: [],
+ directives: true,
+ include: [/\.vue$/, /\.vue\?vue/, /\.md$/],
+ exclude: [/[\\/]node_modules[\\/]/, /[\\/]\.git[\\/]/, /[\\/]\.nuxt[\\/]/],
+ resolvers: [
+ IconsResolver({
+ componentPrefix: '',
+ }),
+ ArcoResolver({ importStyle: 'less' }),//根据你需要增加UI框架
+ VueUseComponentsResolver(),//默认使用VueUse组件
+ ],
+ })
+}
+```
+
+## 🧩Vite插件模块化
+为了方便管理插件,将所有的`config`统一放入`config/vite/plugins`里面,未来还会有更多插件直接分文件夹管理十分干净。
+值得一提的是,`Fast-Vue3`增加了统一环境变量管理,来区分动态开启某些插件。
+```typescript
+// vite/plugins/index.ts
+/**
+ * @name createVitePlugins
+ * @description 封装plugins数组统一调用
+ */
+import type { Plugin } from 'vite';
+import vue from '@vitejs/plugin-vue';
+import vueJsx from '@vitejs/plugin-vue-jsx';
+import { ConfigSvgIconsPlugin } from './svgIcons';
+import { AutoRegistryComponents } from './component';
+import { AutoImportDeps } from './autoImport';
+import { ConfigMockPlugin } from './mock';
+import { ConfigVisualizerConfig } from './visualizer';
+import { ConfigCompressPlugin } from './compress';
+import { ConfigPagesPlugin } from './pages'
+import { ConfigMarkDownPlugin } from './markdown'
+import { ConfigRestartPlugin } from './restart'
+
+export function createVitePlugins(isBuild: boolean) {
+ const vitePlugins: (Plugin | Plugin[])[] = [
+ // vue支持
+ vue(),
+ // JSX支持
+ vueJsx(),
+ // 自动按需引入组件
+ AutoRegistryComponents(),
+ // 自动按需引入依赖
+ AutoImportDeps(),
+ // 自动生成路由
+ ConfigPagesPlugin(),
+ // 开启.gz压缩 rollup-plugin-gzip
+ ConfigCompressPlugin(),
+ //支持markdown
+ ConfigMarkDownPlugin(),
+ // 监听配置文件改动重启
+ ConfigRestartPlugin(),
+ ];
+ // vite-plugin-svg-icons
+ vitePlugins.push(ConfigSvgIconsPlugin(isBuild));
+ // vite-plugin-mock
+ vitePlugins.push(ConfigMockPlugin(isBuild));
+ // rollup-plugin-visualizer
+ vitePlugins.push(ConfigVisualizerConfig());
+ return vitePlugins;
+}
+```
+而`vite.config.ts`便干净多了
+```typescript
+import { createVitePlugins } from './config/vite/plugins'
+...
+return {
+ resolve: {
+ alias: {
+ "@": path.resolve(__dirname, './src'),
+ '@config': path.resolve(__dirname, './config'),
+ "@components": path.resolve(__dirname, './src/components'),
+ '@utils': path.resolve(__dirname, './src/utils'),
+ '@api': path.resolve(__dirname, './src/api'),
+ }
+ },
+ // plugins
+ plugins: createVitePlugins(isBuild)
+}
+...
+```
+## 📱支持`Pinia` ,下一代`Vuex5`
+创建文件`src/store/index.ts`
+```typescript
+// 支持模块化,配合plop可以通过命令行一键生成
+import { createPinia } from 'pinia';
+import { useAppStore } from './modules/app';
+import { useUserStore } from './modules/user';
+const pinia = createPinia();
+export { useAppStore, useUserStore };
+export default pinia;
+```
+创建文件`src/store/modules/user/index.ts`
+
+```typescript
+import { defineStore } from 'pinia'
+import piniaStore from '@/store'
+export const useUserStore = defineStore(
+ // 唯一ID
+ 'user',
+ {
+ state: () => ({}),
+ getters: {},
+ actions: {}
+ }
+)
+```
+## 🤖 支持`Plop`自动生成文件
+ ⚙️ 代码文件自动生成,提供三种预设模板`pages`,`components`,`store`,也可以根据自己需要设计更多自动生成脚本。一般后端同学惯用此形式,十分高效。
+
+```shell
+# 安装plop
+pnpm add plop
+```
+根目录创建`plopfile.ts`
+```typescript
+import { NodePlopAPI } from 'plop';
+export default function (plop: NodePlopAPI) {
+ plop.setWelcomeMessage('请选择需要创建的模式:')
+ plop.setGenerator('page', require('./plop-tpls/page/prompt'))
+ plop.setGenerator('component', require('./plop-tpls/component/prompt'))
+ plop.setGenerator('store', require('./plop-tpls/store/prompt'))
+}
+```
+
+```shell
+# 启动命令
+pnpm run plop
+```
+![image.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a6756aebd4d6407e8545eed41b6e5864~tplv-k3u1fbpfcp-watermark.image?)
+
+
+## 🖼️ 支持`SVG`图标
+随着浏览器兼容性的提升,SVG的性能逐渐凸显,很多大厂团队都在创建自己的SVG管理库,后面工具库会有推荐。
+```shell
+# 安装svg依赖
+pnpm add vite-plugin-svg-icons
+```
+配置`vite.config.ts`
+```typescript
+import viteSvgIcons from 'vite-plugin-svg-icons';
+export default defineConfig({
+plugins:[
+...
+ viteSvgIcons({
+ // 指定需要缓存的图标文件夹
+ iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
+ // 指定symbolId格式
+ symbolId: 'icon-[dir]-[name]',
+ }),
+]
+...
+})
+```
+
+已封装一个简单的`SvgIcon`组件,可以直接读取文件下的`svg`,可以根据文件夹目录自动查找文件。
+
+```html
+
+
+
+
+
+
+
+```
+## 📦支持`axios(ts版)`
+已封装了主流的拦截器,请求调用等方法,区分了模块`index.ts`/`status.ts`/`type.ts`
+```typescript
+//封装src/api/user/index.ts
+import request from '@utils/http/axios'
+import { IResponse } from '@utils/http/axios/type'
+import { ReqAuth, ReqParams, ResResult } from './type';
+enum URL {
+ login = '/v1/user/login',
+ permission = '/v1/user/permission',
+ userProfile = 'mock/api/userProfile'
+}
+const getUserProfile = async () => request({ url: URL.userProfile });
+const login = async (data: ReqParams) => request({ url: URL.login, data });
+const permission = async () => request({ url: URL.permission });
+export default { getUserProfile, login, permission };
+```
+```typescript
+//调用
+import userApi from "@api/user"
+// setup模式下组件可以直接引用
+const res = await userApi.profile()
+```
+## 👽 自动生成`router`,过滤`components`组件
+支持`vue-router4.0`的模块化,通过检索pages文件夹可自动生成路由,并支持动态路由
+
+```typescript
+import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router'
+import routes from 'virtual:generated-pages'
+
+console.log(routes,'打印生成自动生成的路由')
+//导入生成的路由数据
+const router = createRouter({
+ history: createWebHashHistory(),
+ routes,
+})
+
+export default router
+```
+## 🧬支持Mock数据
+使用`vite-plugin-mock`插件,支持自动区分和启停的环境配置
+
+```javascript
+// vite config
+viteMockServe({
+ ignore: /^\_/,
+ mockPath: 'mock',
+ localEnabled: !isBuild,
+ prodEnabled: false,
+ // https://github.com/anncwb/vite-plugin-mock/issues/9
+ injectCode: `
+ import { setupProdMockServer } from '../mock/_createProdMockServer';
+ setupProdMockServer();
+ `
+ })
+```
+根目录下创建 `_createProductionServer.ts`文件,非`_`开头文件会被自动加载成mock文件
+
+```typescript
+import { createProdMockServer } from 'vite-plugin-mock/es/createProdMockServer';
+// 批量加载
+const modules = import.meta.globEager('./mock/*.ts');
+
+const mockModules: Array = [];
+Object.keys(modules).forEach((key) => {
+ if (key.includes('/_')) {
+ return;
+ }
+ mockModules.push(...modules[key].default);
+});
+export function setupProdMockServer() {
+ createProdMockServer(mockModules);
+}
+```
+## 🎎Proxy代理
+```typescript
+// vite config
+import proxy from '@config/vite/proxy';
+export default defineConfig({
+ ...
+ server: {
+ hmr: { overlay: false }, // 禁用或配置 HMR 连接 设置 server.hmr.overlay 为 false 可以禁用服务器错误遮罩层
+ // 服务配置
+ port: VITE_PORT, // 类型: number 指定服务器端口;
+ open: false, // 类型: boolean | string在服务器启动时自动在浏览器中打开应用程序;
+ cors: false, // 类型: boolean | CorsOptions 为开发服务器配置 CORS。默认启用并允许任何源
+ host: '0.0.0.0', // IP配置,支持从IP启动
+ proxy,
+ }
+ ...
+})
+```
+```typescript
+// proxy.ts
+import {
+ API_BASE_URL,
+ API_TARGET_URL,
+ MOCK_API_BASE_URL,
+ MOCK_API_TARGET_URL,
+} from '@config/constant';
+import { ProxyOptions } from 'vite';
+type ProxyTargetList = Record;
+
+const init: ProxyTargetList = {
+ // test
+ [API_BASE_URL]: {
+ target: API_TARGET_URL,
+ changeOrigin: true,
+ rewrite: (path) => path.replace(new RegExp(`^${API_BASE_URL}`), ''),
+ },
+ // mock
+ [MOCK_API_BASE_URL]: {
+ target: MOCK_API_TARGET_URL,
+ changeOrigin: true,
+ rewrite: (path) => path.replace(new RegExp(`^${MOCK_API_BASE_URL}`), '/api'),
+ },
+};
+
+export default init;
+
+```
+
+## 🎉 其他
+
+- 🏗 支持`vw/vh`移动端布局兼容,也可以使用`plop`自己配置生成文件
+- 还有更多新功能增在`commiting`,如果你有更好的方案欢迎`PR`
+
+
+# 使用
+一键三连: Star 或 Fork 或 [可视化仓库](https://github1s.com/tobe-fe-dalao/fast-vue3)
+
+```shell
+# 拉取仓库代码
+git clone https://github.com/tobe-fe-dalao/fast-vue3.git
+
+# 进入项目文件夹
+cd fast-vue3
+
+# 安装项目依赖
+pnpm install
+
+# 运行
+pnpm run dev
+```
+如果不报错,恭喜你点火成功。否则,请看下面常见问题。
+
+如果你已经了解本模板,建议你拉取 `template` 分支进行项目开发,该分支不含任何示例代码。
+
+```
+# clone template 分支
+git clone -b template https://github.com/tobe-fe-dalao/fast-vue3.git
+```
+
+# 工具库
+学会使用适当的工具库,让`coding`事半功倍。尤其是开源的工具库,值得每个人学习,因为这本身就是你应该达到的层次。这里推荐一些大厂常用的类库,因为我喜新...,以下工具均可直接引入。
+
+## JS库
+- [pnpm](https://pnpm.io/),一个依赖包全局管理的工具,老板再也不用担心我的C盘不够用。Vite官方推荐,字节官方前端团队大规模项目考验
+
+![image-20220110125758056](https://cdn.jsdelivr.net/gh/MaleWeb/picture/images/techblog/image-20220110125758056.png)
+- [mitt 全局事件监听库](https://github.com/developit/mitt),Vue3官方推荐
+- [Hammer](http://hammerjs.github.io/),可以识别由触摸、鼠标和指针事件做出的手势,只有 7.34kb
+- [outils](https://github.com/proYang/outils),开发中常用的函数集,也可以使用`lodash`
+
+- [tailwindcss](https://tailwindcss.com/),艾玛香的一塌糊涂,一行css不写,3分钟出一个页面。不适合初中级前端,建议还是先踏实学基础再用框架。
+
+ ![tailwindcss-1](https://cdn.jsdelivr.net/gh/MaleWeb/picture/images/techblog/tailwindcss-1.gif)
+
+ ![tailwindcss-2](https://cdn.jsdelivr.net/gh/MaleWeb/picture/images/techblog/tailwindcss-2.gif)
+
+- [Vue I18n](https://vue-i18n.intlify.dev/) 是 Vue.js 的国际化插件,如果你想做开源框架,国际化首选插件。
+
+- [ViteSSG](https://github.com/antfu/vite-ssg),SEO优化,这个项目有点意思,大家可以玩玩这个方案,之前我都是通过服务端渲染搞SEO,后来了解到这个可以直接在Vue3的服务器上生成。
+
+- [Vitest](https://github.com/vitest-dev/vitest),基于Vite的单元测试工具,目前迭代比较快,尤大金牌赞助。可以持续关注,不建议使用在小项目中。
+
+ ![image-20220110125605172](https://cdn.jsdelivr.net/gh/MaleWeb/picture/images/techblog/image-20220110125605172.png)
+
+
+# UI库
+- [arco-design](https://github.com/arco-design/arco-design),字节团队新出的UI框架,配置层面更为灵活,`fast-vue3`使用的就是这个,不喜欢的小伙伴可以移除
+- [semi-design](https://github.com/DouyinFE/semi-design),抖音前端出的框架,面向经常撕逼UI和FE,可以尝鲜玩玩
+- [nutui](https://github.com/jdf2e/nutui),京东前端团队出的UI框架,已升级到3.X,个人认为颜值最高并接受反驳
+- [naive-ui](https://github.com/TuSimple/naive-ui),尤大推荐,TypeScript语法,主题可调,这家公司挺厉害
+- 暂时就这些吧,困了,回头再补
+
+# 资料
+- 官方配置文档入口[vite](https://vitejs.cn/config/)、[pinia](https://pinia.vuejs.org/introduction.html)、[vue-router4](https://next.router.vuejs.org/zh/introduction.html)、[plop](https://github.com/plopjs/plop)...
+- 更详细的配置手册:https://juejin.cn/post/7036745610954801166
+- vu3写组件实践案例:https://juejin.cn/post/7052717075168493598
+
+# 贡献者
+
+这个项目的存在要感谢所有做出贡献的人。
+
+并感谢我们所有的支持者! 🙏
+
+
+
+
+
+# 最后
+
+- 欢迎加群[前端水友群](https://link.juejin.cn?target=https%3A%2F%2Fp3-juejin.byteimg.com%2Ftos-cn-i-k3u1fbpfcp%2Ff2747d1a5fcf4d9894e997b140b8a0d8~tplv-k3u1fbpfcp-zoom-1.image "https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f2747d1a5fcf4d9894e997b140b8a0d8~tplv-k3u1fbpfcp-zoom-1.image"),划水,大家一起划水,现在粉丝群甚少讨论技术,那么我们就一起水吧。欢迎关注我的公众号[扫地盲僧](https://link.juejin.cn?target=https%3A%2F%2Fp3-juejin.byteimg.com%2Ftos-cn-i-k3u1fbpfcp%2Fa08fd56556654baa86975b2a5ba6a8f0~tplv-k3u1fbpfcp-watermark.image%2522 "https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a08fd56556654baa86975b2a5ba6a8f0~tplv-k3u1fbpfcp-watermark.image%22")。
+
+- 前沿技术,各类体验、互动相关的技术,各类译文、研报的提前透视。
+- 白嫖,承诺发布的所有付费资源,粉丝群统统免费白嫖,不然大家谁有时间跟你玩,嘿嘿。
+
+
+
+
+
+
+
+
diff --git a/README.ja-JP.md b/README.ja-JP.md
new file mode 100644
index 0000000..eb2bca7
--- /dev/null
+++ b/README.ja-JP.md
@@ -0,0 +1,481 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+すぐに使えるVue3 + Vite2 + TypeScriptなど。 大規模なアプリケーションを迅速に構築するためのテンプレートフレームワーク。 さまざまなプラグインが統合され、モジュール化とリードオンデマンド用に最適化されているため、自信を持って使用できます。 [ドキュメントを更新するには、ここをクリックしてください](https://github.com/tobe-fe-dalao/fast-vue3/blob/main/docs/update.md)
+
+[English](./README.md) | [简体中文](./README-zh_CN.md) | 日本語
+
+# 特徴
+ここでは、いくつかのコアパーツの簡単な紹介を示しますが、インストールパーツについては詳しく説明しません。 公式ドキュメントまたは[ビジュアルウェアハウス](https://github1s.com/tobe-fe-dalao/fast-vue3)を直接読むことをお勧めします。
+
+## 🪂技術巨人のコラボレーション-コード仕様
+🪁 現在、多くのハイテク巨人チームは、一般的に [husky](https://github.com/typicode/husky) と [lint-staged](https://github.com/okonet/lint-staged)を使用してコード仕様を制約しています。
+- `pre-commit`を介して、lintチェック、単体テスト、コードフォーマットなどを実装します。
+- VsCodeと組み合わせる(保存時に自動的にフォーマットする:editor.formatOnSave:true)
+- Gitフックと組み合わせる(コミット前に実行:pre-commit => npm run lint:lint-staged)
+- IDE構成( `.editorconfig`)、ESLint構成(` .eslintrc.js`和 `.eslintignore`)、StyleLint構成(` .stylelintrc`和 `.stylelintignore`)、詳細については、対応する構成ファイルを参照してください.
+
+🔌 コード仕様を閉じる
+`.eslintignore` と ` .stylelintignore`をそれぞれ `src /`ディレクトリに追加して無視します.
+
+
+## ディレクトリ構造
+
+システムのディレクトリ構造は次のとおりです
+
+```
+├── config
+│ ├── vite // vite 構成
+│ ├── constant // システム定数
+| └── themeConfig // theme 構成
+├── docs // ドキュメント関連
+├── mock // モックデータ
+├── plop-tpls // plopテンプレート
+├── src
+│ ├── api // APIリクエスト
+│ ├── assets // 静的ファイル
+│ ├── components // コンポーネント
+│ ├── page // ページ
+│ ├── router // ルーティングファイル
+│ ├── store // 状態管理
+│ ├── utils // ツール
+│ ├── App.vue // vue テンプレート エントリ
+│ ├── main.ts // vue テンプレート js
+├── .d.ts // タイプ定義
+├── tailwind.config.js // tailwind グローバル構成
+├── tsconfig.json // ts 構成
+└── vite.config.ts // vite グローバル構成
+```
+
+## 💕JSX構文をサポートする
+
+```json
+{
+ ...
+ "@vitejs/plugin-vue-jsx": "^1.3.3"
+ ...
+}
+```
+## 🎸 UIコンポーネントはオンデマンドで読み込まれ、自動的にインポートされます
+```typescript
+// モジュラーライティング
+import Components from 'unplugin-vue-components/vite'
+export const AutoRegistryComponents = () => {
+ return Components({
+ extensions: ['vue', 'md'],
+ deep: true,
+ dts: 'src/components.d.ts',
+ directoryAsNamespace: false,
+ globalNamespaces: [],
+ directives: true,
+ include: [/\.vue$/, /\.vue\?vue/, /\.md$/],
+ exclude: [/[\\/]node_modules[\\/]/, /[\\/]\.git[\\/]/, /[\\/]\.nuxt[\\/]/],
+ resolvers: [
+ IconsResolver({
+ componentPrefix: '',
+ }),
+ ArcoResolver({ importStyle: 'less' }),// 必要に応じてUIフレームワークを追加します
+ VueUseComponentsResolver(),// VueUseコンポーネントがデフォルトで使用されます
+ ],
+ })
+}
+```
+
+## 🧩Viteプラグインのモジュール性
+プラグインの管理を容易にするために、すべての `config`を` config / vite / plugins`に入れてください。 将来的には、非常にクリーンに管理するために、フォルダーに直接分割されたプラグインが増える予定です。
+`Fast-Vue3`は、特定のプラグインの動的なオープンを区別するために、統合された環境変数管理を追加することは言及する価値があります。
+```typescript
+// vite/plugins/index.ts
+/**
+ * @name createVitePlugins
+ * @description Encapsulate the plugins array to call uniformly
+ */
+import type { Plugin } from 'vite';
+import vue from '@vitejs/plugin-vue';
+import vueJsx from '@vitejs/plugin-vue-jsx';
+import { ConfigSvgIconsPlugin } from './svgIcons';
+import { AutoRegistryComponents } from './component';
+import { AutoImportDeps } from './autoImport';
+import { ConfigMockPlugin } from './mock';
+import { ConfigVisualizerConfig } from './visualizer';
+import { ConfigCompressPlugin } from './compress';
+import { ConfigPagesPlugin } from './pages'
+import { ConfigMarkDownPlugin } from './markdown'
+import { ConfigRestartPlugin } from './restart'
+
+export function createVitePlugins(isBuild: boolean) {
+ const vitePlugins: (Plugin | Plugin[])[] = [
+ // vueサポート
+ vue(),
+ // JSXサポート
+ vueJsx(),
+ // コンポーネントをオンデマンドで自動的にインポート
+ AutoRegistryComponents(),
+ // 必要に応じて依存関係を自動的にインポートします
+ AutoImportDeps(),
+ // ルートを自動的に生成する
+ ConfigPagesPlugin(),
+ // .gz圧縮を有効にする rollup-plugin-gzip
+ ConfigCompressPlugin(),
+ // markdownサポート
+ ConfigMarkDownPlugin(),
+ // 構成ファイルの変更を監視して再起動します
+ ConfigRestartPlugin(),
+ ];
+ // vite-plugin-svg-icons
+ vitePlugins.push(ConfigSvgIconsPlugin(isBuild));
+ // vite-plugin-mock
+ vitePlugins.push(ConfigMockPlugin(isBuild));
+ // rollup-plugin-visualizer
+ vitePlugins.push(ConfigVisualizerConfig());
+ return vitePlugins;
+}
+```
+`vite.config.ts` is much cleaner
+```typescript
+import { createVitePlugins } from './config/vite/plugins'
+...
+return {
+ resolve: {
+ alias: {
+ "@": path.resolve(__dirname, './src'),
+ '@config': path.resolve(__dirname, './config'),
+ "@components": path.resolve(__dirname, './src/components'),
+ '@utils': path.resolve(__dirname, './src/utils'),
+ '@api': path.resolve(__dirname, './src/api'),
+ }
+ },
+ // plugins
+ plugins: createVitePlugins(isBuild)
+}
+...
+```
+## 📱 Support for `Pinia`, the next generation of `Vuex5`
+ファイルを作成する `src/store/index.ts`
+```typescript
+// モジュール化をサポートし、plopを使用してコマンドラインからワンクリックで生成できます
+import { createPinia } from 'pinia';
+import { useAppStore } from './modules/app';
+import { useUserStore } from './modules/user';
+const pinia = createPinia();
+export { useAppStore, useUserStore };
+export default pinia;
+```
+ファイルを作成する `src/store/modules/user/index.ts`
+
+```typescript
+import { defineStore } from 'pinia'
+import piniaStore from '@/store'
+export const useUserStore = defineStore(
+ // unique id
+ 'user',
+ {
+ state: () => ({}),
+ getters: {},
+ actions: {}
+ }
+)
+```
+## 🤖 ファイルを自動的に生成するための `Plop`をサポート
+ ⚙️ コードファイルは自動的に生成され、3つのプリセットテンプレート `pages`、` components`、 `store`を提供します。また、必要に応じて、より多くの自動生成スクリプトを設計することもできます。 通常、バックエンドエンジニアはこのフォームを使用します。これは非常に効率的です。。
+
+```shell
+# install plop
+pnpm add plop
+```
+ルートディレクトリ `plopfile.ts`に作成します
+```typescript
+import { NodePlopAPI } from 'plop';
+export default function (plop: NodePlopAPI) {
+ plop.setWelcomeMessage('Please select the pattern you want to create')
+ plop.setGenerator('page', require('./plop-tpls/page/prompt'))
+ plop.setGenerator('component', require('./plop-tpls/component/prompt'))
+ plop.setGenerator('store', require('./plop-tpls/store/prompt'))
+}
+```
+
+```shell
+# start command
+pnpm run plop
+```
+![image.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a6756aebd4d6407e8545eed41b6e5864~tplv-k3u1fbpfcp-watermark.image?)
+
+
+## 🖼️ `SVG`アイコンのサポート
+ブラウザの互換性の向上に伴い、SVGのパフォーマンスは徐々に顕著になりました。 多くの技術大手チームが独自のSVG管理ライブラリを作成しており、ツールライブラリは後で推奨されます。
+```shell
+# svg依存関係をインストールします
+pnpm add vite-plugin-svg-icons
+```
+設定 `vite.config.ts`
+```typescript
+import viteSvgIcons from 'vite-plugin-svg-icons';
+export default defineConfig({
+plugins:[
+...
+ viteSvgIcons({
+ // キャッシュする必要のあるアイコンフォルダを指定します
+ iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
+ // symbolId形式を指定します
+ symbolId: 'icon-[dir]-[name]',
+ }),
+]
+...
+})
+```
+
+単純な `SvgIcon`コンポーネントがカプセル化されており、ファイルの下の` svg`を直接読み取ることができ、フォルダーディレクトリに従ってファイルを自動的に見つけることができます。
+
+```html
+
+
+
+
+
+
+
+```
+## 📦 サポート `axios (ts version)`
+主流のインターセプター、リクエスト呼び出し、その他のメソッドをカプセル化し、モジュール `index.ts` /` status.ts` / `type.ts`を区別しています。
+```typescript
+// カプセル化 src/api/user/index.ts
+import request from '@utils/http/axios'
+import { IResponse } from '@utils/http/axios/type'
+import { ReqAuth, ReqParams, ResResult } from './type';
+enum URL {
+ login = '/v1/user/login',
+ userProfile = 'mock/api/userProfile'
+}
+const getUserProfile = async () => request({ url: URL.userProfile });
+const login = async (data: ReqParams) => request({ url: URL.login, data });
+export default { getUserProfile, login };
+```
+```typescript
+// 移行
+import userApi from "@api/user"
+// コンポーネントは、セットアップモードで直接参照できます
+const res = await userApi.profile()
+```
+## 👽 Automatically generate `router`, filter `components` components
+`vue-router4.0`のモジュール化をサポートし、pagesフォルダーを取得してルートを自動的に生成し、動的ルートをサポートします
+
+```typescript
+import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router'
+import routes from 'virtual:generated-pages'
+
+console.log(routes,'print generate auto-generated routes')
+// 生成されたルーティングデータをインポートする
+const router = createRouter({
+ history: createWebHashHistory(),
+ routes,
+})
+
+export default router
+```
+## 🧬 サポート Mock data
+`vite-plugin-mock`プラグインを使用して、自動識別と開始-停止環境構成をサポートします
+
+```javascript
+// vite config
+viteMockServe({
+ ignore: /^\_/,
+ mockPath: 'mock',
+ localEnabled: !isBuild,
+ prodEnabled: false,
+ // https://github.com/anncwb/vite-plugin-mock/issues/9
+ injectCode: `
+ import { setupProdMockServer } from '../mock/_createProdMockServer';
+ setupProdMockServer();
+ `
+ })
+```
+ルートディレクトリに `_createProductionServer.ts`ファイルを作成します。`_`で始まらないファイルは自動的にモックファイルにロードされます
+
+```typescript
+import { createProdMockServer } from 'vite-plugin-mock/es/createProdMockServer';
+// Bulk load
+const modules = import.meta.globEager('./mock/*.ts');
+
+const mockModules: Array = [];
+Object.keys(modules).forEach((key) => {
+ if (key.includes('/_')) {
+ return;
+ }
+ mockModules.push(...modules[key].default);
+});
+export function setupProdMockServer() {
+ createProdMockServer(mockModules);
+}
+```
+## 🎎 プロキシー
+```typescript
+// vite 構成
+import proxy from '@config/vite/proxy';
+export default defineConfig({
+ ...
+ server: {
+ hmr: { overlay: false }, // HMR接続を無効または構成し、server.hmr.overlayをfalseに設定して、サーバーエラーマスキングレイヤーを「無効」にします
+ // サービス構成
+ port: VITE_PORT, // type:number サーバーポートを指定します;
+ open: false, // type:boolean | string サーバーの起動時にブラウザでアプリケーションを自動的に開きます;
+ cors: false, // type:boolean | CorsOptionsは、開発サーバーのCORSを構成します.デフォルトで有効になっており、任意のオリジンを許可します
+ host: '0.0.0.0', // IP構成、IPからの起動をサポート
+ proxy,
+ }
+ ...
+})
+```
+```typescript
+// proxy.ts
+import {
+ API_BASE_URL,
+ API_TARGET_URL,
+ MOCK_API_BASE_URL,
+ MOCK_API_TARGET_URL,
+} from '@config/constant';
+import { ProxyOptions } from 'vite';
+type ProxyTargetList = Record;
+
+const init: ProxyTargetList = {
+ // test
+ [API_BASE_URL]: {
+ target: API_TARGET_URL,
+ changeOrigin: true,
+ rewrite: (path) => path.replace(new RegExp(`^${API_BASE_URL}`), ''),
+ },
+ // mock
+ [MOCK_API_BASE_URL]: {
+ target: MOCK_API_TARGET_URL,
+ changeOrigin: true,
+ rewrite: (path) => path.replace(new RegExp(`^${MOCK_API_BASE_URL}`), '/api'),
+ },
+};
+
+export default init;
+
+```
+
+## 🎉 そのた
+
+- 🏗 `vw / vh`モバイル端末レイアウトの互換性をサポートします。`plop`を使用して、生成されたファイルを自分で構成することもできます
+- `commiting`にはさらに多くの新機能が追加されています。より良い解決策がある場合は、` PR`を歓迎します。
+
+
+# 使用する
+スターとフォロー:スターまたはフォークまたは[ビジュアルウェアハウス](https://github1s.com/tobe-fe-dalao/fast-vue3)
+
+```shell
+# リポジトリコードをプルする
+git clone https://github.com/tobe-fe-dalao/fast-vue3.git
+
+# プロジェクトフォルダに入る
+cd fast-vue3
+
+# プロジェクトの依存関係をインストールする
+pnpm install
+
+# ラン
+pnpm run dev
+```
+エラーが報告されない場合は、点火に成功しました。それ以外の場合は、以下のFAQを参照してください.
+
+このテンプレートをすでに知っている場合は、プロジェクト開発のために `テンプレート`ブランチをプルすることをお勧めします。このブランチには、サンプルコードは含まれていません。
+
+```
+# テンプレートブランチのクローン
+git clone -b template https://github.com/tobe-fe-dalao/fast-vue3.git
+```
+
+# ツール ライブラリ
+適切なツールライブラリを使用して、 `コーディング`がより少ないリソースでより多くのことを実行できるようにする方法を学びます。 特にオープンソースツールライブラリは、到達すべきレベルであるため、誰もが学ぶ価値があります。 新しいものが好きなので、主要なメーカーで一般的に使用されているクラスライブラリをいくつか示します...次のツールを直接インポートできます。
+
+## JS ライブラリ
+- [pnpm](https://pnpm.io/),パッケージのグローバル管理に依存するツールである上司は、私のCドライブが十分でないことを心配する必要がなくなりました。 Vite公式推奨、ByteDance公式フロントエンドチーム大規模プロジェクトテスト
+
+![image-20220110125758056](https://cdn.jsdelivr.net/gh/MaleWeb/picture/images/techblog/image-20220110125758056.png)
+- [mitt Global event listener library](https://github.com/developit/mitt),Vue3の公式推奨
+- [Hammer](http://hammerjs.github.io/),タッチ、マウス、ポインターのイベントによって行われたジェスチャを認識できます。わずか7.34kb
+- [outils](https://github.com/proYang/outils),開発で一般的に使用される関数のセットで、 `lodash`を使用することもできます
+
+- [tailwindcss](https://tailwindcss.com/),ああ、私のイエス様、CSSの行を書かなくても、ページは3分で作成されます。 ジュニアおよび中間のフロントエンドには適していません。 最初に基本を学び、次にフレームワークを使用することをお勧めします。
+
+ ![tailwindcss-1](https://cdn.jsdelivr.net/gh/MaleWeb/picture/images/techblog/tailwindcss-1.gif)
+
+ ![tailwindcss-2](https://cdn.jsdelivr.net/gh/MaleWeb/picture/images/techblog/tailwindcss-2.gif)
+
+- [Vue I18n](https://vue-i18n.intlify.dev/),Vue.jsの国際化プラグイン。 オープンソースフレームワークを作成したい場合は、国際化に適したプラグインです。
+
+- [ViteSSG](https://github.com/antfu/vite-ssg),SEO最適化、このプロジェクトは興味深いです。このソリューションで遊ぶことができます。以前はサーバー側のレンダリングでSEOを実行していましたが、後でVue3サーバーで直接生成できることを学びました。
+
+- [Vitest](https://github.com/vitest-dev/vitest),Viteに基づく単体テストツールである反復は、現在比較的高速であり、EvanYouが後援しています。 引き続き注意を払うことができますが、小さなプロジェクトで使用することはお勧めしません。
+
+ ![image-20220110125605172](https://cdn.jsdelivr.net/gh/MaleWeb/picture/images/techblog/image-20220110125605172.png)
+
+
+# UI ライブラリ
+- [arco-design](https://github.com/arco-design/arco-design),Byte Danceチームの新しいUIフレームワークには、より柔軟な構成レベルがあります。 `fast-vue3`はそれを使用します。 気に入らない場合は削除できます。
+- [semi-design](https://github.com/DouyinFE/semi-design),Douyinのフロントエンドのフレームワークは、UIとFEを絶えず引き裂くことを目的としており、試してみることができます。
+- [nutui](https://github.com/jdf2e/nutui),JDのフロントエンドチームによって開発されたUIフレームワークが3.Xにアップグレードされました。 個人的には見た目が一番高く、反論も受けられると思います。
+- [naive-ui](https://github.com/TuSimple/naive-ui),Evan Youが推奨する、TypeScript構文、調整可能なテーマ、この会社は非常に強力です。
+- 今のところこれですべてです。後で補います。
+
+# 参考
+- 公式の構成ドキュメントエントリ[vite](https://vitejs.cn/config/)、[pinia](https://pinia.vuejs.org/introduction.html)、[vue-router4](https://next.router.vuejs.org/zh/introduction.html)、[plop](https://github.com/plopjs/plop)...
+- より詳細な構成マニュアル:https://juejin.cn/post/7036745610954801166
+- vu3ライティングコンポーネントの練習ケース:https://juejin.cn/post/7052717075168493598
+
+# 最後
+
+- グループへようこそ [前端水友群](https://link.juejin.cn?target=https%3A%2F%2Fp3-juejin.byteimg.com%2Ftos-cn-i-k3u1fbpfcp%2Ff2747d1a5fcf4d9894e997b140b8a0d8~tplv-k3u1fbpfcp-zoom-1.image "https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f2747d1a5fcf4d9894e997b140b8a0d8~tplv-k3u1fbpfcp-zoom-1.image"),さぼる、一緒にさぼるしましょう。今ではファングループがテクノロジーについて話し合うことはめったにないので、一緒にさぼるしましょう。 Wechat公開番号に注目することを歓迎します [扫地盲僧](https://link.juejin.cn?target=https%3A%2F%2Fp3-juejin.byteimg.com%2Ftos-cn-i-k3u1fbpfcp%2Fa08fd56556654baa86975b2a5ba6a8f0~tplv-k3u1fbpfcp-watermark.image%2522 "https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a08fd56556654baa86975b2a5ba6a8f0~tplv-k3u1fbpfcp-watermark.image%22")。
+
+- 最先端のテクノロジー、さまざまな経験や相互作用に関連するテクノロジー、さまざまな翻訳や調査レポートの高度な視点。
+- 無料で使用でき、すべての有料リソースがリリースされることが約束されており、すべてのファングループが無料で使用できます。それ以外の場合は、あなたと遊ぶ時間があります。本当に面白い。
+
+
+
+
+
+
+
+
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..128cbc7
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+# GrasscutterTools
\ No newline at end of file
diff --git a/config/constant.ts b/config/constant.ts
new file mode 100644
index 0000000..18be8b4
--- /dev/null
+++ b/config/constant.ts
@@ -0,0 +1,37 @@
+/**
+ * @name Config
+ * @description 项目配置
+ */
+
+// 应用名
+export const APP_TITLE = 'Fast-Vue3';
+
+// 本地服务端口
+export const VITE_PORT = 3000;
+
+// prefix
+export const API_PREFIX = '/api';
+
+// serve
+export const API_BASE_URL = '/api';
+export const API_TARGET_URL = 'http://localhost:3000';
+
+// mock
+export const MOCK_API_BASE_URL = '/mock/api';
+export const MOCK_API_TARGET_URL = 'http://localhost:3000';
+
+// iconfontUrl
+export const ICONFONTURL = '//at.alicdn.com/t/font_3004192_9jmc1z9neiw.js'; // 去色版
+
+// 包依赖分析
+export const ANALYSIS = true;
+
+// 是否支持Md渲染
+export const MARKDOWN = true;
+
+// 代码压缩
+export const COMPRESSION = true;
+
+
+// 删除 console
+export const VITE_DROP_CONSOLE = true;
diff --git a/config/themeConfig.ts b/config/themeConfig.ts
new file mode 100644
index 0000000..f05d9a9
--- /dev/null
+++ b/config/themeConfig.ts
@@ -0,0 +1,10 @@
+
+// import vitePluginForArco from '@arco-plugins/vite-vue'
+// 很遗憾他们目前只有react的,vue版还没卷出来
+export const generateModifyVars = (dark = false) => {
+ // const modifyVars = vitePluginForArco({ dark });
+ return {
+ // ...modifyVars,
+ // 'primary-color': '#ff6900'
+ }
+}
\ No newline at end of file
diff --git a/config/vite/plugins/autoImport.ts b/config/vite/plugins/autoImport.ts
new file mode 100644
index 0000000..91043fa
--- /dev/null
+++ b/config/vite/plugins/autoImport.ts
@@ -0,0 +1,12 @@
+
+/**
+ * @name AutoImportDeps
+ * @description 按需加载,自动引入
+ */
+import AutoImport from 'unplugin-auto-import/vite'
+export const AutoImportDeps = () => {
+ return AutoImport({
+ dts: 'src/auto-imports.d.ts',
+ imports: ['vue', 'pinia', 'vue-router', '@vueuse/core'],
+ })
+}
\ No newline at end of file
diff --git a/config/vite/plugins/component.ts b/config/vite/plugins/component.ts
new file mode 100644
index 0000000..321049e
--- /dev/null
+++ b/config/vite/plugins/component.ts
@@ -0,0 +1,29 @@
+
+/**
+ * @name AutoRegistryComponents
+ * @description 按需加载,自动引入组件
+ */
+import Components from 'unplugin-vue-components/vite'
+import IconsResolver from 'unplugin-icons/resolver'
+import { ArcoResolver, VueUseComponentsResolver } from 'unplugin-vue-components/resolvers'
+export const AutoRegistryComponents = () => {
+ return Components({
+ // dirs: ['src/components'],
+ extensions: ['vue', 'md'],
+ deep: true,
+ dts: 'src/components.d.ts',
+ directoryAsNamespace: false,
+ globalNamespaces: [],
+ directives: true,
+ include: [/\.vue$/, /\.vue\?vue/, /\.md$/],
+ exclude: [/[\\/]node_modules[\\/]/, /[\\/]\.git[\\/]/, /[\\/]\.nuxt[\\/]/],
+ resolvers: [
+ IconsResolver({
+ componentPrefix: '',
+ }),
+ ArcoResolver({ importStyle: 'less' }),
+ VueUseComponentsResolver(),
+ ],
+ })
+
+}
\ No newline at end of file
diff --git a/config/vite/plugins/compress.ts b/config/vite/plugins/compress.ts
new file mode 100644
index 0000000..0e45dcf
--- /dev/null
+++ b/config/vite/plugins/compress.ts
@@ -0,0 +1,17 @@
+/**
+ * @name ConfigCompressPlugin
+ * @description 开启.gz压缩
+ */
+import viteCompression from 'vite-plugin-compression';
+import { COMPRESSION } from '../../constant';
+
+export const ConfigCompressPlugin = () => {
+ if (COMPRESSION) {
+ return viteCompression({
+ ext: '.gz',
+ verbose: true,
+ deleteOriginFile: false,
+ })
+ }
+ return [];
+}
\ No newline at end of file
diff --git a/config/vite/plugins/index.ts b/config/vite/plugins/index.ts
new file mode 100644
index 0000000..58f8b2d
--- /dev/null
+++ b/config/vite/plugins/index.ts
@@ -0,0 +1,45 @@
+/**
+ * @name createVitePlugins
+ * @description 封装plugins数组统一调用
+ */
+import type { Plugin } from 'vite'
+import vue from '@vitejs/plugin-vue'
+import vueJsx from '@vitejs/plugin-vue-jsx'
+import { ConfigSvgIconsPlugin } from './svgIcons'
+import { AutoRegistryComponents } from './component'
+import { AutoImportDeps } from './autoImport'
+import { ConfigMockPlugin } from './mock'
+import { ConfigVisualizerConfig } from './visualizer'
+import { ConfigCompressPlugin } from './compress'
+import { ConfigPagesPlugin } from './pages'
+import { ConfigRestartPlugin } from './restart'
+
+export function createVitePlugins(isBuild: boolean) {
+ const vitePlugins: (Plugin | Plugin[])[] = [
+ // vue支持
+ vue(),
+ // JSX支持
+ vueJsx(),
+ // 自动按需引入组件
+ AutoRegistryComponents(),
+ // 自动按需引入依赖
+ AutoImportDeps(),
+ // 自动生成路由
+ ConfigPagesPlugin(),
+ // 开启.gz压缩 rollup-plugin-gzip
+ ConfigCompressPlugin(),
+ // 监听配置文件改动重启
+ ConfigRestartPlugin(),
+ ]
+
+ // vite-plugin-svg-icons
+ vitePlugins.push(ConfigSvgIconsPlugin(isBuild))
+
+ // vite-plugin-mock
+ vitePlugins.push(ConfigMockPlugin(isBuild))
+
+ // rollup-plugin-visualizer
+ vitePlugins.push(ConfigVisualizerConfig())
+
+ return vitePlugins
+}
diff --git a/config/vite/plugins/mock.ts b/config/vite/plugins/mock.ts
new file mode 100644
index 0000000..6485a29
--- /dev/null
+++ b/config/vite/plugins/mock.ts
@@ -0,0 +1,18 @@
+/**
+ * @name ConfigMockPlugin
+ * @description 引入mockjs,本地模拟接口
+ */
+import { viteMockServe } from 'vite-plugin-mock'
+export const ConfigMockPlugin = (isBuild: boolean) => {
+ return viteMockServe({
+ ignore: /^\_/,
+ mockPath: 'mock',
+ localEnabled: !isBuild,
+ prodEnabled: false, //实际开发请关闭,会影响打包体积
+ // https://github.com/anncwb/vite-plugin-mock/issues/9
+ injectCode: `
+ import { setupProdMockServer } from '../mock/_createProdMockServer';
+ setupProdMockServer();
+ `,
+ })
+}
\ No newline at end of file
diff --git a/config/vite/plugins/pages.ts b/config/vite/plugins/pages.ts
new file mode 100644
index 0000000..815cc29
--- /dev/null
+++ b/config/vite/plugins/pages.ts
@@ -0,0 +1,13 @@
+/**
+ * @name ConfigPagesPlugin
+ * @description 动态生成路由
+ */
+import Pages from 'vite-plugin-pages'
+export const ConfigPagesPlugin = () => {
+ return Pages({
+ pagesDir: [{ dir: 'src/pages', baseRoute: '' }],
+ extensions: ['vue', 'md'],
+ exclude: ['**/components/*.vue'],
+ nuxtStyle: true,
+ })
+}
\ No newline at end of file
diff --git a/config/vite/plugins/restart.ts b/config/vite/plugins/restart.ts
new file mode 100644
index 0000000..4a782c1
--- /dev/null
+++ b/config/vite/plugins/restart.ts
@@ -0,0 +1,13 @@
+/**
+ * @name ConfigRestartPlugin
+ * @description 监听配置文件修改自动重启Vite
+ */
+import ViteRestart from 'vite-plugin-restart'
+export const ConfigRestartPlugin = () => {
+ return ViteRestart({
+ restart: [
+ '*.config.[jt]s',
+ '**/config/*.[jt]s'
+ ]
+ })
+}
\ No newline at end of file
diff --git a/config/vite/plugins/svgIcons.ts b/config/vite/plugins/svgIcons.ts
new file mode 100644
index 0000000..a1aa28c
--- /dev/null
+++ b/config/vite/plugins/svgIcons.ts
@@ -0,0 +1,16 @@
+/**
+ * @name SvgIconsPlugin
+ * @description 加载SVG文件,自动引入
+ */
+import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
+import path from 'path'
+
+export const ConfigSvgIconsPlugin = (isBuild: boolean) => {
+ return createSvgIconsPlugin({
+ // 指定需要缓存的图标文件夹
+ iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
+ // 指定symbolId格式
+ symbolId: 'icon-[dir]-[name]',
+ svgoOptions: isBuild,
+ })
+}
diff --git a/config/vite/plugins/visualizer.ts b/config/vite/plugins/visualizer.ts
new file mode 100644
index 0000000..c1b8d32
--- /dev/null
+++ b/config/vite/plugins/visualizer.ts
@@ -0,0 +1,14 @@
+import visualizer from 'rollup-plugin-visualizer';
+import { ANALYSIS } from '../../constant';
+
+export function ConfigVisualizerConfig() {
+ if (ANALYSIS) {
+ return visualizer({
+ filename: './node_modules/.cache/visualizer/stats.html',
+ open: true,
+ gzipSize: true,
+ brotliSize: true,
+ });
+ }
+ return [];
+}
\ No newline at end of file
diff --git a/config/vite/proxy.ts b/config/vite/proxy.ts
new file mode 100644
index 0000000..98a52f7
--- /dev/null
+++ b/config/vite/proxy.ts
@@ -0,0 +1,25 @@
+import {
+ API_BASE_URL,
+ API_TARGET_URL,
+ MOCK_API_BASE_URL,
+ MOCK_API_TARGET_URL,
+} from '../../config/constant';
+import { ProxyOptions } from 'vite';
+type ProxyTargetList = Record;
+
+const init: ProxyTargetList = {
+ // test
+ [API_BASE_URL]: {
+ target: API_TARGET_URL,
+ changeOrigin: true,
+ rewrite: (path) => path.replace(new RegExp(`^${API_BASE_URL}`), ''),
+ },
+ // mock
+ [MOCK_API_BASE_URL]: {
+ target: MOCK_API_TARGET_URL,
+ changeOrigin: true,
+ rewrite: (path) => path.replace(new RegExp(`^${MOCK_API_BASE_URL}`), '/api'),
+ },
+};
+
+export default init;
\ No newline at end of file
diff --git a/docs/update.md b/docs/update.md
new file mode 100644
index 0000000..d0461e1
--- /dev/null
+++ b/docs/update.md
@@ -0,0 +1,15 @@
+# Fast-Vue3版本更新
+## V0.1.1-2022/01/28
+- 🚃 咱的mock模拟的是真实登录流程,请访问`login`路由
+- 🥵 修复好几卡车的bug
+- 🎸 搞了一个好看的logo,svg的~
+- 😈 重写axios封装,目前进度80%,敬请期待~
+- 🐯 过年了,代码不写了,祝群里的水友们新年发发发~
+## V0.1.0-2022/01/26
+- 🎉 增加vite-plugin模块化配置,根据环境变量按需打包
+- 📱 增加mock支持,并开启区分环境
+- 🧩 统一管理全局变量`constant.ts`
+- 🎎 调整了store的自动生成,以模块化的方式`npm run plop`
+- 🧬 重写了文档,方便快速上手
+- 🍡 改写了axios,支持到处request或`get`,`post`
+- 🎸 此次改版将更加符合大型项目的结构,下个版本会重点通过mock,解决更加复杂的问题,例如登录,权限,鉴权,nav-menu...等。
\ No newline at end of file
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..c54207b
--- /dev/null
+++ b/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+ GrasscutterTools
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mock/_createProdMockServer.ts b/mock/_createProdMockServer.ts
new file mode 100644
index 0000000..44e3762
--- /dev/null
+++ b/mock/_createProdMockServer.ts
@@ -0,0 +1,14 @@
+import { createProdMockServer } from 'vite-plugin-mock/es/createProdMockServer';
+// 批量加载
+const modules = import.meta.globEager('./mock/*.ts');
+
+const mockModules: Array = [];
+Object.keys(modules).forEach((key) => {
+ if (key.includes('/_')) {
+ return;
+ }
+ mockModules.push(...modules[key].default);
+});
+export function setupProdMockServer() {
+ createProdMockServer(mockModules);
+}
\ No newline at end of file
diff --git a/mock/user.ts b/mock/user.ts
new file mode 100644
index 0000000..444d406
--- /dev/null
+++ b/mock/user.ts
@@ -0,0 +1,114 @@
+import { MockMethod } from "vite-plugin-mock"
+import {
+ successResult,
+ errorResult,
+ pageSuccessResult,
+ requestParams,
+ getRequestToken
+} from "@/utils/result"
+import { isLogin, getToken, TokenPrefix } from '@/utils/auth'
+
+export function createFakeUserList() {
+ return [
+ {
+ user_id: '3306',
+ user_name: 'blindmonk',
+ real_name: '扫地盲僧',
+ avatar: 'https://api.multiavatar.com/blindmonk.svg',
+ desc: '达摩深寺扫地僧,盲崖盘坐思人生',
+ password: 'blindmonk',
+ token: 'P1DeqWBao0HTU47Q',
+ organization: '某大型公司CTO',
+ location: '中国',
+ email: '896226896@qq.com',
+ auths: [],
+ is_admin: 1,
+ dev_languages: 'JavaScript/Vue/React/Node/PHP',
+ blog_github: 'https://github.com/MaleWeb',
+ blog_juejin: 'https://juejin.cn/user/3016715636842622',
+ blog_zhihu: 'https://www.zhihu.com/people/blind_monk',
+ role: 'admin'
+
+ }, {
+ user_id: '80',
+ user_name: 'test',
+ real_name: '盲僧水友',
+ avatar: 'https://api.multiavatar.com/test.svg',
+ desc: '欢迎加入扫地盲僧水友群',
+ password: 'test',
+ token: 'yg8bE8nZwiCL4nQg',
+ organization: '某大型公司CTO',
+ location: '中国',
+ email: '8888@china.com',
+ auths: [],
+ is_admin: 0,
+ dev_languages: 'JavaScript/Vue/React/Node/PHP',
+ blog_github: 'https://github.com/MaleWeb',
+ blog_juejin: 'https://juejin.cn/user/3016715636842622',
+ blog_zhihu: 'https://www.zhihu.com/people/blind_monk',
+ role: 'user',
+ }
+ ]
+}
+export default [
+ {
+ url: '/user/profile',
+ timeout: 200,
+ method: 'get',
+ response: (request: requestParams) => {
+ const token = getRequestToken(request);
+ if (!token) return errorResult('Invalid token')
+ const checkUser = createFakeUserList().find((item) => `${TokenPrefix}${item.token}` === token);
+ if (!checkUser) {
+ return errorResult('未获得相应的用户信息');
+ }
+ return successResult(checkUser);
+ }
+ },
+ {
+ url: '/user/login',
+ timeout: 200,
+ method: 'post',
+ response: (request: requestParams) => {
+ const { username, password } = request?.body;
+ const checkUser = createFakeUserList().find(
+ (item) => item.user_name === username && item.password === password
+ )
+ if (!checkUser) {
+ return errorResult('不存在该用户');
+ }
+ return successResult({ token: checkUser.token })
+ }
+ },
+ {
+ url: '/user/logout',
+ timeout: 200,
+ method: 'post',
+ response: (request: requestParams) => {
+ console.dir(request)
+ const token = getRequestToken(request);
+ if (!token) return errorResult('token缺失!');
+ const checkUser = createFakeUserList().find((item) => `${TokenPrefix}${item.token}` === token);
+ if (!checkUser) {
+ return errorResult('token缺失!');
+ }
+ return successResult('Token 已失效');
+ },
+ },
+ {
+ url: '/text',
+ method: 'post',
+ rawResponse: async (req, res) => {
+ let reqbody = ''
+ await new Promise((resolve) => {
+ req.on('data', (chunk) => {
+ reqbody += chunk
+ })
+ req.on('end', () => resolve(undefined))
+ })
+ res.setHeader('Content-Type', 'text/plain')
+ res.statusCode = 200
+ res.end(`hello, ${reqbody}`)
+ },
+ },
+] as MockMethod[]
\ No newline at end of file
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..b9c1e15
--- /dev/null
+++ b/package.json
@@ -0,0 +1,82 @@
+{
+ "name": "grasscutter-tools",
+ "version": "0.1.1",
+ "author": "wmn1525",
+ "scripts": {
+ "dev": "vite --mode development",
+ "build": "vue-tsc --noEmit && vite build",
+ "preview": "vite preview",
+ "build:dev": "vite build --mode development",
+ "build:pro": "vite build --mode production",
+ "serve": "vite preview",
+ "plop": "plop",
+ "lint": "eslint src --fix --ext .ts,.tsx,.vue,.js,.jsx",
+ "prettier": "prettier --write .",
+ "prepare": "husky install",
+ "deps": "yarn upgrade-interactive --latest"
+ },
+ "dependencies": {
+ "@arco-design/web-vue": "^2.25.2",
+ "@vueuse/components": "^8.3.1",
+ "@vueuse/core": "^8.3.1",
+ "axios": "^0.27.2",
+ "mockjs": "^1.1.0",
+ "naive-ui": "^2.28.2",
+ "nprogress": "^0.2.0",
+ "pinia": "^2.0.13",
+ "plop": "^3.1.0",
+ "qs": "^6.10.3",
+ "vue": "^3.2.33",
+ "vue-router": "^4.0.14"
+ },
+ "devDependencies": {
+ "@types/node": "^17.0.29",
+ "@types/nprogress": "^0.2.0",
+ "@types/qs": "^6.9.7",
+ "@typescript-eslint/eslint-plugin": "^5.21.0",
+ "@typescript-eslint/parser": "^5.21.0",
+ "@vitejs/plugin-vue": "^2.3.1",
+ "@vitejs/plugin-vue-jsx": "^1.3.10",
+ "autoprefixer": "^10.4.5",
+ "eslint": "^8.14.0",
+ "eslint-config-prettier": "^8.5.0",
+ "eslint-define-config": "^1.4.0",
+ "eslint-plugin-prettier": "^4.0.0",
+ "eslint-plugin-vue": "^8.7.1",
+ "husky": "^7.0.4",
+ "import": "^0.0.6",
+ "less": "^4.1.2",
+ "less-loader": "^10.2.0",
+ "lint-staged": "^12.4.1",
+ "postcss": "^8.4.12",
+ "postcss-px-to-viewport": "^1.1.1",
+ "prettier": "^2.6.2",
+ "rollup-plugin-visualizer": "^5.6.0",
+ "tailwindcss": "^3.0.24",
+ "typescript": "^4.6.3",
+ "unplugin-auto-import": "^0.7.1",
+ "unplugin-icons": "^0.14.1",
+ "unplugin-vue-components": "^0.19.3",
+ "vite": "^2.9.6",
+ "vite-plugin-compression": "^0.5.1",
+ "vite-plugin-html": "^3.2.0",
+ "vite-plugin-md": "^0.13.0",
+ "vite-plugin-mock": "^2.9.6",
+ "vite-plugin-pages": "^0.23.0",
+ "vite-plugin-restart": "^0.1.1",
+ "vite-plugin-style-import": "^2.0.0",
+ "vite-plugin-svg-icons": "^2.0.1",
+ "vue-tsc": "^0.34.10"
+ },
+ "husky": {
+ "hooks": {
+ "pre-commit": "lint-staged"
+ }
+ },
+ "lint-staged": {
+ "*.{js,jsx,vue,ts,tsx}": [
+ "yarn lint",
+ "prettier --write"
+ ]
+ }
+}
diff --git a/packages/create-fast-vue3/.gitignore b/packages/create-fast-vue3/.gitignore
new file mode 100644
index 0000000..f854bb1
--- /dev/null
+++ b/packages/create-fast-vue3/.gitignore
@@ -0,0 +1,4 @@
+node_modules
+.husky
+pnpm-lock.yaml
+yarn-error.log
\ No newline at end of file
diff --git a/packages/create-fast-vue3/.prettierignore b/packages/create-fast-vue3/.prettierignore
new file mode 100644
index 0000000..eeeb7be
--- /dev/null
+++ b/packages/create-fast-vue3/.prettierignore
@@ -0,0 +1 @@
+pnpm-lock.yaml
\ No newline at end of file
diff --git a/packages/create-fast-vue3/.prettierrc b/packages/create-fast-vue3/.prettierrc
new file mode 100644
index 0000000..8b47c12
--- /dev/null
+++ b/packages/create-fast-vue3/.prettierrc
@@ -0,0 +1,7 @@
+{
+ "semi": false,
+ "tabWidth": 2,
+ "singleQuote": true,
+ "printWidth": 100,
+ "trailingComma": "none"
+}
diff --git a/packages/create-fast-vue3/README.md b/packages/create-fast-vue3/README.md
new file mode 100644
index 0000000..1c02fbb
--- /dev/null
+++ b/packages/create-fast-vue3/README.md
@@ -0,0 +1,9 @@
+# create-fast-vue3
+
+a scanffold to create vue3 project that use fast-vue3 template
+
+## Usage
+
+```bash
+npm init fast-vue3
+```
diff --git a/packages/create-fast-vue3/index.js b/packages/create-fast-vue3/index.js
new file mode 100644
index 0000000..ee8e779
--- /dev/null
+++ b/packages/create-fast-vue3/index.js
@@ -0,0 +1,186 @@
+#!/usr/bin/env node
+
+import fs from 'fs'
+import path from 'path'
+
+import minimist from 'minimist'
+import prompts from 'prompts'
+import { red, green, bold } from 'kolorist'
+import { postOrderDirectoryTraverse } from './utils/directoryTraverse'
+import getCommand from './utils/getCommand'
+import clone from 'git-clone/promise'
+import ora from 'ora'
+
+async function loading(fn, message, ...args) {
+ const spinner = ora(message)
+ spinner.start()
+
+ try {
+ const result = await fn(...args)
+ spinner.succeed()
+ return result
+ } catch(error) {
+ console.log(error)
+ spinner.fail('Request failed, refetch...')
+ }
+}
+
+function changePackageInfo(root, packageName) {
+ const pkgJSONPath = path.join(root, 'package.json')
+ const pkg = JSON.parse(fs.readFileSync(pkgJSONPath))
+ pkg.name = packageName
+ pkg.version = '0.0.0'
+ delete pkg.author
+ fs.writeFileSync(pkgJSONPath, JSON.stringify(pkg, null, 2) + '\n')
+}
+
+function removeDir(root, dir) {
+ const deleteFolderRecursive = function(path) {
+ if (fs.existsSync(path)) {
+ fs.readdirSync(path).forEach(function(file) {
+ let curPath = path + "/" + file
+ if (fs.lstatSync(curPath).isDirectory()) {
+ deleteFolderRecursive(curPath)
+ } else {
+ fs.unlinkSync(curPath)
+ }
+ })
+ fs.rmdirSync(path)
+ }
+ }
+
+ deleteFolderRecursive(path.join(root, dir))
+}
+
+function isValidPackageName(projectName) {
+ return /^(?:@[a-z0-9-*~][a-z0-9-*._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/.test(projectName)
+}
+
+function toValidPackageName(projectName) {
+ return String(projectName)
+ .trim()
+ .toLowerCase()
+ .replace(/\s+/g, '-')
+ .replace(/^[._]/, '')
+ .replace(/[^a-z0-9-~]+/g, '-')
+}
+
+function canSafelyOverwrite(dir) {
+ return !fs.existsSync(dir) || fs.readdirSync(dir).length === 0
+}
+
+function emptyDir(dir) {
+ postOrderDirectoryTraverse(
+ dir,
+ (dir) => fs.rmdirSync(dir),
+ (file) => fs.unlinkSync(file)
+ )
+}
+
+async function init() {
+ const downloadUrl = 'https://gitee.com/maleweb/fast-vue3.git'
+ const cwd = process.cwd()
+ const argv = minimist(process.argv.slice(2))
+
+ let targetDir = argv._[0]
+ const defaultProjectName = !targetDir ? 'fast-vue3-demo' : targetDir
+
+ const forceOverwrite = argv.force
+
+ let result = {}
+
+ try {
+ result = await prompts(
+ [
+ {
+ name: 'template',
+ type: 'select',
+ message: 'Choice a Template:',
+ choices: [
+ { title: 'template-pc', description: 'This will generate template for web scene', value: 'web' },
+ { title: 'template-mobile', description: 'This will generate template for mobile scene', value: 'mobile' }
+ ],
+ initial: 0
+ },
+ {
+ name: 'projectName',
+ type: targetDir ? null : 'text',
+ message: 'Project name:',
+ initial: defaultProjectName,
+ onState: (state) => (targetDir = String(state.value).trim() || defaultProjectName)
+ },
+ {
+ name: 'shouldOverwrite',
+ type: () => (canSafelyOverwrite(String(targetDir)) || forceOverwrite ? null : 'confirm'),
+ message: () => {
+ const dirForPrompt =
+ targetDir === '.' ? 'Current directory' : `Target directory "${targetDir}"`
+ return `${dirForPrompt} is not empty. Remove existing files and continue?`
+ }
+ },
+ {
+ name: 'overwriteChecker',
+ type: (prev, values = {}) => {
+ if (values.shouldOverwrite === false) {
+ throw new Error(red('✖') + ' Operation cancelled')
+ }
+ return null
+ }
+ },
+ {
+ name: 'packageName',
+ type: () => (isValidPackageName(targetDir) ? null : 'text'),
+ message: 'Package name:',
+ initial: () => toValidPackageName(targetDir),
+ validate: (dir) => isValidPackageName(dir) || 'Invalid package.json name'
+ }
+ ],
+ {
+ onCancel: () => {
+ throw new Error(red('✖') + ' Operation cancelled')
+ }
+ }
+ )
+ } catch (cancelled) {
+ console.log(cancelled.message)
+ process.exit(1)
+ }
+
+ const { packageName = toValidPackageName(defaultProjectName), shouldOverwrite, template } = result
+ const root = path.join(cwd, String(targetDir))
+
+ if (shouldOverwrite) {
+ emptyDir(root)
+ }
+
+ const templates = {
+ 'web': 'main',
+ 'mobile': 'mobile-template'
+ }
+
+ console.log(`\nScaffolding project in ${root}...`)
+
+ await loading(clone, 'waiting download template', downloadUrl, root, { checkout: templates[template] })
+
+ removeDir(root, "packages")
+ removeDir(root, ".git")
+ changePackageInfo(root, packageName)
+
+ const packageManager = /pnpm/.test(process.env.npm_execpath)
+ ? 'pnpm'
+ : /yarn/.test(process.env.npm_execpath)
+ ? 'yarn'
+ : 'npm'
+
+ console.log(`\nDone. Now run:\n`)
+ if (root !== cwd) {
+ console.log(` ${bold(green(`cd ${path.relative(cwd, root)}`))}`)
+ }
+ console.log(` ${bold(green(getCommand(packageManager, 'install')))}`)
+ console.log(` ${bold(green(getCommand(packageManager, 'dev')))}`)
+ console.log()
+}
+
+init().catch((e) => {
+ console.error(e)
+})
diff --git a/packages/create-fast-vue3/outfile.cjs b/packages/create-fast-vue3/outfile.cjs
new file mode 100644
index 0000000..8237f74
--- /dev/null
+++ b/packages/create-fast-vue3/outfile.cjs
@@ -0,0 +1,12789 @@
+#!/usr/bin/env node
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
+var __commonJS = (cb, mod) => function __require() {
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
+};
+var __reExport = (target, module2, copyDefault, desc) => {
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
+ for (let key of __getOwnPropNames(module2))
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
+ }
+ return target;
+};
+var __toESM = (module2, isNodeMode) => {
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
+};
+
+// ../../node_modules/.pnpm/minimist@1.2.5/node_modules/minimist/index.js
+var require_minimist = __commonJS({
+ "../../node_modules/.pnpm/minimist@1.2.5/node_modules/minimist/index.js"(exports, module2) {
+ module2.exports = function(args, opts) {
+ if (!opts)
+ opts = {};
+ var flags = { bools: {}, strings: {}, unknownFn: null };
+ if (typeof opts["unknown"] === "function") {
+ flags.unknownFn = opts["unknown"];
+ }
+ if (typeof opts["boolean"] === "boolean" && opts["boolean"]) {
+ flags.allBools = true;
+ } else {
+ [].concat(opts["boolean"]).filter(Boolean).forEach(function(key2) {
+ flags.bools[key2] = true;
+ });
+ }
+ var aliases = {};
+ Object.keys(opts.alias || {}).forEach(function(key2) {
+ aliases[key2] = [].concat(opts.alias[key2]);
+ aliases[key2].forEach(function(x) {
+ aliases[x] = [key2].concat(aliases[key2].filter(function(y) {
+ return x !== y;
+ }));
+ });
+ });
+ [].concat(opts.string).filter(Boolean).forEach(function(key2) {
+ flags.strings[key2] = true;
+ if (aliases[key2]) {
+ flags.strings[aliases[key2]] = true;
+ }
+ });
+ var defaults = opts["default"] || {};
+ var argv = { _: [] };
+ Object.keys(flags.bools).forEach(function(key2) {
+ setArg(key2, defaults[key2] === void 0 ? false : defaults[key2]);
+ });
+ var notFlags = [];
+ if (args.indexOf("--") !== -1) {
+ notFlags = args.slice(args.indexOf("--") + 1);
+ args = args.slice(0, args.indexOf("--"));
+ }
+ function argDefined(key2, arg2) {
+ return flags.allBools && /^--[^=]+$/.test(arg2) || flags.strings[key2] || flags.bools[key2] || aliases[key2];
+ }
+ function setArg(key2, val, arg2) {
+ if (arg2 && flags.unknownFn && !argDefined(key2, arg2)) {
+ if (flags.unknownFn(arg2) === false)
+ return;
+ }
+ var value2 = !flags.strings[key2] && isNumber(val) ? Number(val) : val;
+ setKey(argv, key2.split("."), value2);
+ (aliases[key2] || []).forEach(function(x) {
+ setKey(argv, x.split("."), value2);
+ });
+ }
+ function setKey(obj, keys, value2) {
+ var o = obj;
+ for (var i2 = 0; i2 < keys.length - 1; i2++) {
+ var key2 = keys[i2];
+ if (key2 === "__proto__")
+ return;
+ if (o[key2] === void 0)
+ o[key2] = {};
+ if (o[key2] === Object.prototype || o[key2] === Number.prototype || o[key2] === String.prototype)
+ o[key2] = {};
+ if (o[key2] === Array.prototype)
+ o[key2] = [];
+ o = o[key2];
+ }
+ var key2 = keys[keys.length - 1];
+ if (key2 === "__proto__")
+ return;
+ if (o === Object.prototype || o === Number.prototype || o === String.prototype)
+ o = {};
+ if (o === Array.prototype)
+ o = [];
+ if (o[key2] === void 0 || flags.bools[key2] || typeof o[key2] === "boolean") {
+ o[key2] = value2;
+ } else if (Array.isArray(o[key2])) {
+ o[key2].push(value2);
+ } else {
+ o[key2] = [o[key2], value2];
+ }
+ }
+ function aliasIsBoolean(key2) {
+ return aliases[key2].some(function(x) {
+ return flags.bools[x];
+ });
+ }
+ for (var i = 0; i < args.length; i++) {
+ var arg = args[i];
+ if (/^--.+=/.test(arg)) {
+ var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
+ var key = m[1];
+ var value = m[2];
+ if (flags.bools[key]) {
+ value = value !== "false";
+ }
+ setArg(key, value, arg);
+ } else if (/^--no-.+/.test(arg)) {
+ var key = arg.match(/^--no-(.+)/)[1];
+ setArg(key, false, arg);
+ } else if (/^--.+/.test(arg)) {
+ var key = arg.match(/^--(.+)/)[1];
+ var next = args[i + 1];
+ if (next !== void 0 && !/^-/.test(next) && !flags.bools[key] && !flags.allBools && (aliases[key] ? !aliasIsBoolean(key) : true)) {
+ setArg(key, next, arg);
+ i++;
+ } else if (/^(true|false)$/.test(next)) {
+ setArg(key, next === "true", arg);
+ i++;
+ } else {
+ setArg(key, flags.strings[key] ? "" : true, arg);
+ }
+ } else if (/^-[^-]+/.test(arg)) {
+ var letters = arg.slice(1, -1).split("");
+ var broken = false;
+ for (var j = 0; j < letters.length; j++) {
+ var next = arg.slice(j + 2);
+ if (next === "-") {
+ setArg(letters[j], next, arg);
+ continue;
+ }
+ if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) {
+ setArg(letters[j], next.split("=")[1], arg);
+ broken = true;
+ break;
+ }
+ if (/[A-Za-z]/.test(letters[j]) && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
+ setArg(letters[j], next, arg);
+ broken = true;
+ break;
+ }
+ if (letters[j + 1] && letters[j + 1].match(/\W/)) {
+ setArg(letters[j], arg.slice(j + 2), arg);
+ broken = true;
+ break;
+ } else {
+ setArg(letters[j], flags.strings[letters[j]] ? "" : true, arg);
+ }
+ }
+ var key = arg.slice(-1)[0];
+ if (!broken && key !== "-") {
+ if (args[i + 1] && !/^(-|--)[^-]/.test(args[i + 1]) && !flags.bools[key] && (aliases[key] ? !aliasIsBoolean(key) : true)) {
+ setArg(key, args[i + 1], arg);
+ i++;
+ } else if (args[i + 1] && /^(true|false)$/.test(args[i + 1])) {
+ setArg(key, args[i + 1] === "true", arg);
+ i++;
+ } else {
+ setArg(key, flags.strings[key] ? "" : true, arg);
+ }
+ }
+ } else {
+ if (!flags.unknownFn || flags.unknownFn(arg) !== false) {
+ argv._.push(flags.strings["_"] || !isNumber(arg) ? arg : Number(arg));
+ }
+ if (opts.stopEarly) {
+ argv._.push.apply(argv._, args.slice(i + 1));
+ break;
+ }
+ }
+ }
+ Object.keys(defaults).forEach(function(key2) {
+ if (!hasKey(argv, key2.split("."))) {
+ setKey(argv, key2.split("."), defaults[key2]);
+ (aliases[key2] || []).forEach(function(x) {
+ setKey(argv, x.split("."), defaults[key2]);
+ });
+ }
+ });
+ if (opts["--"]) {
+ argv["--"] = new Array();
+ notFlags.forEach(function(key2) {
+ argv["--"].push(key2);
+ });
+ } else {
+ notFlags.forEach(function(key2) {
+ argv._.push(key2);
+ });
+ }
+ return argv;
+ };
+ function hasKey(obj, keys) {
+ var o = obj;
+ keys.slice(0, -1).forEach(function(key2) {
+ o = o[key2] || {};
+ });
+ var key = keys[keys.length - 1];
+ return key in o;
+ }
+ function isNumber(x) {
+ if (typeof x === "number")
+ return true;
+ if (/^0x[0-9a-f]+$/i.test(x))
+ return true;
+ return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
+ }
+ }
+});
+
+// ../../node_modules/.pnpm/kleur@3.0.3/node_modules/kleur/index.js
+var require_kleur = __commonJS({
+ "../../node_modules/.pnpm/kleur@3.0.3/node_modules/kleur/index.js"(exports, module2) {
+ "use strict";
+ var { FORCE_COLOR, NODE_DISABLE_COLORS, TERM } = process.env;
+ var $ = {
+ enabled: !NODE_DISABLE_COLORS && TERM !== "dumb" && FORCE_COLOR !== "0",
+ reset: init2(0, 0),
+ bold: init2(1, 22),
+ dim: init2(2, 22),
+ italic: init2(3, 23),
+ underline: init2(4, 24),
+ inverse: init2(7, 27),
+ hidden: init2(8, 28),
+ strikethrough: init2(9, 29),
+ black: init2(30, 39),
+ red: init2(31, 39),
+ green: init2(32, 39),
+ yellow: init2(33, 39),
+ blue: init2(34, 39),
+ magenta: init2(35, 39),
+ cyan: init2(36, 39),
+ white: init2(37, 39),
+ gray: init2(90, 39),
+ grey: init2(90, 39),
+ bgBlack: init2(40, 49),
+ bgRed: init2(41, 49),
+ bgGreen: init2(42, 49),
+ bgYellow: init2(43, 49),
+ bgBlue: init2(44, 49),
+ bgMagenta: init2(45, 49),
+ bgCyan: init2(46, 49),
+ bgWhite: init2(47, 49)
+ };
+ function run(arr, str) {
+ let i = 0, tmp, beg = "", end = "";
+ for (; i < arr.length; i++) {
+ tmp = arr[i];
+ beg += tmp.open;
+ end += tmp.close;
+ if (str.includes(tmp.close)) {
+ str = str.replace(tmp.rgx, tmp.close + tmp.open);
+ }
+ }
+ return beg + str + end;
+ }
+ function chain(has, keys) {
+ let ctx = { has, keys };
+ ctx.reset = $.reset.bind(ctx);
+ ctx.bold = $.bold.bind(ctx);
+ ctx.dim = $.dim.bind(ctx);
+ ctx.italic = $.italic.bind(ctx);
+ ctx.underline = $.underline.bind(ctx);
+ ctx.inverse = $.inverse.bind(ctx);
+ ctx.hidden = $.hidden.bind(ctx);
+ ctx.strikethrough = $.strikethrough.bind(ctx);
+ ctx.black = $.black.bind(ctx);
+ ctx.red = $.red.bind(ctx);
+ ctx.green = $.green.bind(ctx);
+ ctx.yellow = $.yellow.bind(ctx);
+ ctx.blue = $.blue.bind(ctx);
+ ctx.magenta = $.magenta.bind(ctx);
+ ctx.cyan = $.cyan.bind(ctx);
+ ctx.white = $.white.bind(ctx);
+ ctx.gray = $.gray.bind(ctx);
+ ctx.grey = $.grey.bind(ctx);
+ ctx.bgBlack = $.bgBlack.bind(ctx);
+ ctx.bgRed = $.bgRed.bind(ctx);
+ ctx.bgGreen = $.bgGreen.bind(ctx);
+ ctx.bgYellow = $.bgYellow.bind(ctx);
+ ctx.bgBlue = $.bgBlue.bind(ctx);
+ ctx.bgMagenta = $.bgMagenta.bind(ctx);
+ ctx.bgCyan = $.bgCyan.bind(ctx);
+ ctx.bgWhite = $.bgWhite.bind(ctx);
+ return ctx;
+ }
+ function init2(open, close) {
+ let blk = {
+ open: `\x1B[${open}m`,
+ close: `\x1B[${close}m`,
+ rgx: new RegExp(`\\x1b\\[${close}m`, "g")
+ };
+ return function(txt) {
+ if (this !== void 0 && this.has !== void 0) {
+ this.has.includes(open) || (this.has.push(open), this.keys.push(blk));
+ return txt === void 0 ? this : $.enabled ? run(this.keys, txt + "") : txt + "";
+ }
+ return txt === void 0 ? chain([open], [blk]) : $.enabled ? run([blk], txt + "") : txt + "";
+ };
+ }
+ module2.exports = $;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/util/action.js
+var require_action = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/util/action.js"(exports, module2) {
+ "use strict";
+ module2.exports = (key, isSelect) => {
+ if (key.meta && key.name !== "escape")
+ return;
+ if (key.ctrl) {
+ if (key.name === "a")
+ return "first";
+ if (key.name === "c")
+ return "abort";
+ if (key.name === "d")
+ return "abort";
+ if (key.name === "e")
+ return "last";
+ if (key.name === "g")
+ return "reset";
+ }
+ if (isSelect) {
+ if (key.name === "j")
+ return "down";
+ if (key.name === "k")
+ return "up";
+ }
+ if (key.name === "return")
+ return "submit";
+ if (key.name === "enter")
+ return "submit";
+ if (key.name === "backspace")
+ return "delete";
+ if (key.name === "delete")
+ return "deleteForward";
+ if (key.name === "abort")
+ return "abort";
+ if (key.name === "escape")
+ return "exit";
+ if (key.name === "tab")
+ return "next";
+ if (key.name === "pagedown")
+ return "nextPage";
+ if (key.name === "pageup")
+ return "prevPage";
+ if (key.name === "home")
+ return "home";
+ if (key.name === "end")
+ return "end";
+ if (key.name === "up")
+ return "up";
+ if (key.name === "down")
+ return "down";
+ if (key.name === "right")
+ return "right";
+ if (key.name === "left")
+ return "left";
+ return false;
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/util/strip.js
+var require_strip = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/util/strip.js"(exports, module2) {
+ "use strict";
+ module2.exports = (str) => {
+ const pattern = ["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PRZcf-ntqry=><~]))"].join("|");
+ const RGX = new RegExp(pattern, "g");
+ return typeof str === "string" ? str.replace(RGX, "") : str;
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/sisteransi@1.0.5/node_modules/sisteransi/src/index.js
+var require_src = __commonJS({
+ "../../node_modules/.pnpm/sisteransi@1.0.5/node_modules/sisteransi/src/index.js"(exports, module2) {
+ "use strict";
+ var ESC = "\x1B";
+ var CSI = `${ESC}[`;
+ var beep = "\x07";
+ var cursor = {
+ to(x, y) {
+ if (!y)
+ return `${CSI}${x + 1}G`;
+ return `${CSI}${y + 1};${x + 1}H`;
+ },
+ move(x, y) {
+ let ret = "";
+ if (x < 0)
+ ret += `${CSI}${-x}D`;
+ else if (x > 0)
+ ret += `${CSI}${x}C`;
+ if (y < 0)
+ ret += `${CSI}${-y}A`;
+ else if (y > 0)
+ ret += `${CSI}${y}B`;
+ return ret;
+ },
+ up: (count = 1) => `${CSI}${count}A`,
+ down: (count = 1) => `${CSI}${count}B`,
+ forward: (count = 1) => `${CSI}${count}C`,
+ backward: (count = 1) => `${CSI}${count}D`,
+ nextLine: (count = 1) => `${CSI}E`.repeat(count),
+ prevLine: (count = 1) => `${CSI}F`.repeat(count),
+ left: `${CSI}G`,
+ hide: `${CSI}?25l`,
+ show: `${CSI}?25h`,
+ save: `${ESC}7`,
+ restore: `${ESC}8`
+ };
+ var scroll = {
+ up: (count = 1) => `${CSI}S`.repeat(count),
+ down: (count = 1) => `${CSI}T`.repeat(count)
+ };
+ var erase = {
+ screen: `${CSI}2J`,
+ up: (count = 1) => `${CSI}1J`.repeat(count),
+ down: (count = 1) => `${CSI}J`.repeat(count),
+ line: `${CSI}2K`,
+ lineEnd: `${CSI}K`,
+ lineStart: `${CSI}1K`,
+ lines(count) {
+ let clear = "";
+ for (let i = 0; i < count; i++)
+ clear += this.line + (i < count - 1 ? cursor.up() : "");
+ if (count)
+ clear += cursor.left;
+ return clear;
+ }
+ };
+ module2.exports = { cursor, scroll, erase, beep };
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/util/clear.js
+var require_clear = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/util/clear.js"(exports, module2) {
+ "use strict";
+ function _createForOfIteratorHelper(o, allowArrayLike) {
+ var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
+ if (!it) {
+ if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
+ if (it)
+ o = it;
+ var i = 0;
+ var F = function F2() {
+ };
+ return { s: F, n: function n() {
+ if (i >= o.length)
+ return { done: true };
+ return { done: false, value: o[i++] };
+ }, e: function e(_e) {
+ throw _e;
+ }, f: F };
+ }
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+ }
+ var normalCompletion = true, didErr = false, err;
+ return { s: function s() {
+ it = it.call(o);
+ }, n: function n() {
+ var step = it.next();
+ normalCompletion = step.done;
+ return step;
+ }, e: function e(_e2) {
+ didErr = true;
+ err = _e2;
+ }, f: function f() {
+ try {
+ if (!normalCompletion && it.return != null)
+ it.return();
+ } finally {
+ if (didErr)
+ throw err;
+ }
+ } };
+ }
+ function _unsupportedIterableToArray(o, minLen) {
+ if (!o)
+ return;
+ if (typeof o === "string")
+ return _arrayLikeToArray(o, minLen);
+ var n = Object.prototype.toString.call(o).slice(8, -1);
+ if (n === "Object" && o.constructor)
+ n = o.constructor.name;
+ if (n === "Map" || n === "Set")
+ return Array.from(o);
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
+ return _arrayLikeToArray(o, minLen);
+ }
+ function _arrayLikeToArray(arr, len) {
+ if (len == null || len > arr.length)
+ len = arr.length;
+ for (var i = 0, arr2 = new Array(len); i < len; i++)
+ arr2[i] = arr[i];
+ return arr2;
+ }
+ var strip = require_strip();
+ var _require = require_src();
+ var erase = _require.erase;
+ var cursor = _require.cursor;
+ var width = (str) => [...strip(str)].length;
+ module2.exports = function(prompt, perLine) {
+ if (!perLine)
+ return erase.line + cursor.to(0);
+ let rows = 0;
+ const lines = prompt.split(/\r?\n/);
+ var _iterator = _createForOfIteratorHelper(lines), _step;
+ try {
+ for (_iterator.s(); !(_step = _iterator.n()).done; ) {
+ let line = _step.value;
+ rows += 1 + Math.floor(Math.max(width(line) - 1, 0) / perLine);
+ }
+ } catch (err) {
+ _iterator.e(err);
+ } finally {
+ _iterator.f();
+ }
+ return erase.lines(rows);
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/util/figures.js
+var require_figures = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/util/figures.js"(exports, module2) {
+ "use strict";
+ var main = {
+ arrowUp: "\u2191",
+ arrowDown: "\u2193",
+ arrowLeft: "\u2190",
+ arrowRight: "\u2192",
+ radioOn: "\u25C9",
+ radioOff: "\u25EF",
+ tick: "\u2714",
+ cross: "\u2716",
+ ellipsis: "\u2026",
+ pointerSmall: "\u203A",
+ line: "\u2500",
+ pointer: "\u276F"
+ };
+ var win = {
+ arrowUp: main.arrowUp,
+ arrowDown: main.arrowDown,
+ arrowLeft: main.arrowLeft,
+ arrowRight: main.arrowRight,
+ radioOn: "(*)",
+ radioOff: "( )",
+ tick: "\u221A",
+ cross: "\xD7",
+ ellipsis: "...",
+ pointerSmall: "\xBB",
+ line: "\u2500",
+ pointer: ">"
+ };
+ var figures = process.platform === "win32" ? win : main;
+ module2.exports = figures;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/util/style.js
+var require_style = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/util/style.js"(exports, module2) {
+ "use strict";
+ var c = require_kleur();
+ var figures = require_figures();
+ var styles = Object.freeze({
+ password: {
+ scale: 1,
+ render: (input) => "*".repeat(input.length)
+ },
+ emoji: {
+ scale: 2,
+ render: (input) => "\u{1F603}".repeat(input.length)
+ },
+ invisible: {
+ scale: 0,
+ render: (input) => ""
+ },
+ default: {
+ scale: 1,
+ render: (input) => `${input}`
+ }
+ });
+ var render = (type) => styles[type] || styles.default;
+ var symbols = Object.freeze({
+ aborted: c.red(figures.cross),
+ done: c.green(figures.tick),
+ exited: c.yellow(figures.cross),
+ default: c.cyan("?")
+ });
+ var symbol = (done, aborted, exited) => aborted ? symbols.aborted : exited ? symbols.exited : done ? symbols.done : symbols.default;
+ var delimiter = (completing) => c.gray(completing ? figures.ellipsis : figures.pointerSmall);
+ var item = (expandable, expanded) => c.gray(expandable ? expanded ? figures.pointerSmall : "+" : figures.line);
+ module2.exports = {
+ styles,
+ render,
+ symbols,
+ symbol,
+ delimiter,
+ item
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/util/lines.js
+var require_lines = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/util/lines.js"(exports, module2) {
+ "use strict";
+ var strip = require_strip();
+ module2.exports = function(msg, perLine) {
+ let lines = String(strip(msg) || "").split(/\r?\n/);
+ if (!perLine)
+ return lines.length;
+ return lines.map((l) => Math.ceil(l.length / perLine)).reduce((a, b) => a + b);
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/util/wrap.js
+var require_wrap = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/util/wrap.js"(exports, module2) {
+ "use strict";
+ module2.exports = (msg, opts = {}) => {
+ const tab = Number.isSafeInteger(parseInt(opts.margin)) ? new Array(parseInt(opts.margin)).fill(" ").join("") : opts.margin || "";
+ const width = opts.width;
+ return (msg || "").split(/\r?\n/g).map((line) => line.split(/\s+/g).reduce((arr, w) => {
+ if (w.length + tab.length >= width || arr[arr.length - 1].length + w.length + 1 < width)
+ arr[arr.length - 1] += ` ${w}`;
+ else
+ arr.push(`${tab}${w}`);
+ return arr;
+ }, [tab]).join("\n")).join("\n");
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/util/entriesToDisplay.js
+var require_entriesToDisplay = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/util/entriesToDisplay.js"(exports, module2) {
+ "use strict";
+ module2.exports = (cursor, total, maxVisible) => {
+ maxVisible = maxVisible || total;
+ let startIndex = Math.min(total - maxVisible, cursor - Math.floor(maxVisible / 2));
+ if (startIndex < 0)
+ startIndex = 0;
+ let endIndex = Math.min(startIndex + maxVisible, total);
+ return {
+ startIndex,
+ endIndex
+ };
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/util/index.js
+var require_util = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/util/index.js"(exports, module2) {
+ "use strict";
+ module2.exports = {
+ action: require_action(),
+ clear: require_clear(),
+ style: require_style(),
+ strip: require_strip(),
+ figures: require_figures(),
+ lines: require_lines(),
+ wrap: require_wrap(),
+ entriesToDisplay: require_entriesToDisplay()
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/prompt.js
+var require_prompt = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/prompt.js"(exports, module2) {
+ "use strict";
+ var readline = require("readline");
+ var _require = require_util();
+ var action = _require.action;
+ var EventEmitter = require("events");
+ var _require2 = require_src();
+ var beep = _require2.beep;
+ var cursor = _require2.cursor;
+ var color = require_kleur();
+ var Prompt = class extends EventEmitter {
+ constructor(opts = {}) {
+ super();
+ this.firstRender = true;
+ this.in = opts.stdin || process.stdin;
+ this.out = opts.stdout || process.stdout;
+ this.onRender = (opts.onRender || (() => void 0)).bind(this);
+ const rl = readline.createInterface({
+ input: this.in,
+ escapeCodeTimeout: 50
+ });
+ readline.emitKeypressEvents(this.in, rl);
+ if (this.in.isTTY)
+ this.in.setRawMode(true);
+ const isSelect = ["SelectPrompt", "MultiselectPrompt"].indexOf(this.constructor.name) > -1;
+ const keypress = (str, key) => {
+ let a = action(key, isSelect);
+ if (a === false) {
+ this._ && this._(str, key);
+ } else if (typeof this[a] === "function") {
+ this[a](key);
+ } else {
+ this.bell();
+ }
+ };
+ this.close = () => {
+ this.out.write(cursor.show);
+ this.in.removeListener("keypress", keypress);
+ if (this.in.isTTY)
+ this.in.setRawMode(false);
+ rl.close();
+ this.emit(this.aborted ? "abort" : this.exited ? "exit" : "submit", this.value);
+ this.closed = true;
+ };
+ this.in.on("keypress", keypress);
+ }
+ fire() {
+ this.emit("state", {
+ value: this.value,
+ aborted: !!this.aborted,
+ exited: !!this.exited
+ });
+ }
+ bell() {
+ this.out.write(beep);
+ }
+ render() {
+ this.onRender(color);
+ if (this.firstRender)
+ this.firstRender = false;
+ }
+ };
+ module2.exports = Prompt;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/text.js
+var require_text = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/text.js"(exports, module2) {
+ "use strict";
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
+ try {
+ var info = gen[key](arg);
+ var value = info.value;
+ } catch (error) {
+ reject(error);
+ return;
+ }
+ if (info.done) {
+ resolve(value);
+ } else {
+ Promise.resolve(value).then(_next, _throw);
+ }
+ }
+ function _asyncToGenerator(fn) {
+ return function() {
+ var self2 = this, args = arguments;
+ return new Promise(function(resolve, reject) {
+ var gen = fn.apply(self2, args);
+ function _next(value) {
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
+ }
+ function _throw(err) {
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
+ }
+ _next(void 0);
+ });
+ };
+ }
+ var color = require_kleur();
+ var Prompt = require_prompt();
+ var _require = require_src();
+ var erase = _require.erase;
+ var cursor = _require.cursor;
+ var _require2 = require_util();
+ var style = _require2.style;
+ var clear = _require2.clear;
+ var lines = _require2.lines;
+ var figures = _require2.figures;
+ var TextPrompt = class extends Prompt {
+ constructor(opts = {}) {
+ super(opts);
+ this.transform = style.render(opts.style);
+ this.scale = this.transform.scale;
+ this.msg = opts.message;
+ this.initial = opts.initial || ``;
+ this.validator = opts.validate || (() => true);
+ this.value = ``;
+ this.errorMsg = opts.error || `Please Enter A Valid Value`;
+ this.cursor = Number(!!this.initial);
+ this.cursorOffset = 0;
+ this.clear = clear(``, this.out.columns);
+ this.render();
+ }
+ set value(v) {
+ if (!v && this.initial) {
+ this.placeholder = true;
+ this.rendered = color.gray(this.transform.render(this.initial));
+ } else {
+ this.placeholder = false;
+ this.rendered = this.transform.render(v);
+ }
+ this._value = v;
+ this.fire();
+ }
+ get value() {
+ return this._value;
+ }
+ reset() {
+ this.value = ``;
+ this.cursor = Number(!!this.initial);
+ this.cursorOffset = 0;
+ this.fire();
+ this.render();
+ }
+ exit() {
+ this.abort();
+ }
+ abort() {
+ this.value = this.value || this.initial;
+ this.done = this.aborted = true;
+ this.error = false;
+ this.red = false;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ validate() {
+ var _this = this;
+ return _asyncToGenerator(function* () {
+ let valid = yield _this.validator(_this.value);
+ if (typeof valid === `string`) {
+ _this.errorMsg = valid;
+ valid = false;
+ }
+ _this.error = !valid;
+ })();
+ }
+ submit() {
+ var _this2 = this;
+ return _asyncToGenerator(function* () {
+ _this2.value = _this2.value || _this2.initial;
+ _this2.cursorOffset = 0;
+ _this2.cursor = _this2.rendered.length;
+ yield _this2.validate();
+ if (_this2.error) {
+ _this2.red = true;
+ _this2.fire();
+ _this2.render();
+ return;
+ }
+ _this2.done = true;
+ _this2.aborted = false;
+ _this2.fire();
+ _this2.render();
+ _this2.out.write("\n");
+ _this2.close();
+ })();
+ }
+ next() {
+ if (!this.placeholder)
+ return this.bell();
+ this.value = this.initial;
+ this.cursor = this.rendered.length;
+ this.fire();
+ this.render();
+ }
+ moveCursor(n) {
+ if (this.placeholder)
+ return;
+ this.cursor = this.cursor + n;
+ this.cursorOffset += n;
+ }
+ _(c, key) {
+ let s1 = this.value.slice(0, this.cursor);
+ let s2 = this.value.slice(this.cursor);
+ this.value = `${s1}${c}${s2}`;
+ this.red = false;
+ this.cursor = this.placeholder ? 0 : s1.length + 1;
+ this.render();
+ }
+ delete() {
+ if (this.isCursorAtStart())
+ return this.bell();
+ let s1 = this.value.slice(0, this.cursor - 1);
+ let s2 = this.value.slice(this.cursor);
+ this.value = `${s1}${s2}`;
+ this.red = false;
+ if (this.isCursorAtStart()) {
+ this.cursorOffset = 0;
+ } else {
+ this.cursorOffset++;
+ this.moveCursor(-1);
+ }
+ this.render();
+ }
+ deleteForward() {
+ if (this.cursor * this.scale >= this.rendered.length || this.placeholder)
+ return this.bell();
+ let s1 = this.value.slice(0, this.cursor);
+ let s2 = this.value.slice(this.cursor + 1);
+ this.value = `${s1}${s2}`;
+ this.red = false;
+ if (this.isCursorAtEnd()) {
+ this.cursorOffset = 0;
+ } else {
+ this.cursorOffset++;
+ }
+ this.render();
+ }
+ first() {
+ this.cursor = 0;
+ this.render();
+ }
+ last() {
+ this.cursor = this.value.length;
+ this.render();
+ }
+ left() {
+ if (this.cursor <= 0 || this.placeholder)
+ return this.bell();
+ this.moveCursor(-1);
+ this.render();
+ }
+ right() {
+ if (this.cursor * this.scale >= this.rendered.length || this.placeholder)
+ return this.bell();
+ this.moveCursor(1);
+ this.render();
+ }
+ isCursorAtStart() {
+ return this.cursor === 0 || this.placeholder && this.cursor === 1;
+ }
+ isCursorAtEnd() {
+ return this.cursor === this.rendered.length || this.placeholder && this.cursor === this.rendered.length + 1;
+ }
+ render() {
+ if (this.closed)
+ return;
+ if (!this.firstRender) {
+ if (this.outputError)
+ this.out.write(cursor.down(lines(this.outputError, this.out.columns) - 1) + clear(this.outputError, this.out.columns));
+ this.out.write(clear(this.outputText, this.out.columns));
+ }
+ super.render();
+ this.outputError = "";
+ this.outputText = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(this.done), this.red ? color.red(this.rendered) : this.rendered].join(` `);
+ if (this.error) {
+ this.outputError += this.errorMsg.split(`
+`).reduce((a, l, i) => a + `
+${i ? " " : figures.pointerSmall} ${color.red().italic(l)}`, ``);
+ }
+ this.out.write(erase.line + cursor.to(0) + this.outputText + cursor.save + this.outputError + cursor.restore + cursor.move(this.cursorOffset, 0));
+ }
+ };
+ module2.exports = TextPrompt;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/select.js
+var require_select = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/select.js"(exports, module2) {
+ "use strict";
+ var color = require_kleur();
+ var Prompt = require_prompt();
+ var _require = require_util();
+ var style = _require.style;
+ var clear = _require.clear;
+ var figures = _require.figures;
+ var wrap = _require.wrap;
+ var entriesToDisplay = _require.entriesToDisplay;
+ var _require2 = require_src();
+ var cursor = _require2.cursor;
+ var SelectPrompt = class extends Prompt {
+ constructor(opts = {}) {
+ super(opts);
+ this.msg = opts.message;
+ this.hint = opts.hint || "- Use arrow-keys. Return to submit.";
+ this.warn = opts.warn || "- This option is disabled";
+ this.cursor = opts.initial || 0;
+ this.choices = opts.choices.map((ch, idx) => {
+ if (typeof ch === "string")
+ ch = {
+ title: ch,
+ value: idx
+ };
+ return {
+ title: ch && (ch.title || ch.value || ch),
+ value: ch && (ch.value === void 0 ? idx : ch.value),
+ description: ch && ch.description,
+ selected: ch && ch.selected,
+ disabled: ch && ch.disabled
+ };
+ });
+ this.optionsPerPage = opts.optionsPerPage || 10;
+ this.value = (this.choices[this.cursor] || {}).value;
+ this.clear = clear("", this.out.columns);
+ this.render();
+ }
+ moveCursor(n) {
+ this.cursor = n;
+ this.value = this.choices[n].value;
+ this.fire();
+ }
+ reset() {
+ this.moveCursor(0);
+ this.fire();
+ this.render();
+ }
+ exit() {
+ this.abort();
+ }
+ abort() {
+ this.done = this.aborted = true;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ submit() {
+ if (!this.selection.disabled) {
+ this.done = true;
+ this.aborted = false;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ } else
+ this.bell();
+ }
+ first() {
+ this.moveCursor(0);
+ this.render();
+ }
+ last() {
+ this.moveCursor(this.choices.length - 1);
+ this.render();
+ }
+ up() {
+ if (this.cursor === 0) {
+ this.moveCursor(this.choices.length - 1);
+ } else {
+ this.moveCursor(this.cursor - 1);
+ }
+ this.render();
+ }
+ down() {
+ if (this.cursor === this.choices.length - 1) {
+ this.moveCursor(0);
+ } else {
+ this.moveCursor(this.cursor + 1);
+ }
+ this.render();
+ }
+ next() {
+ this.moveCursor((this.cursor + 1) % this.choices.length);
+ this.render();
+ }
+ _(c, key) {
+ if (c === " ")
+ return this.submit();
+ }
+ get selection() {
+ return this.choices[this.cursor];
+ }
+ render() {
+ if (this.closed)
+ return;
+ if (this.firstRender)
+ this.out.write(cursor.hide);
+ else
+ this.out.write(clear(this.outputText, this.out.columns));
+ super.render();
+ let _entriesToDisplay = entriesToDisplay(this.cursor, this.choices.length, this.optionsPerPage), startIndex = _entriesToDisplay.startIndex, endIndex = _entriesToDisplay.endIndex;
+ this.outputText = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(false), this.done ? this.selection.title : this.selection.disabled ? color.yellow(this.warn) : color.gray(this.hint)].join(" ");
+ if (!this.done) {
+ this.outputText += "\n";
+ for (let i = startIndex; i < endIndex; i++) {
+ let title, prefix, desc = "", v = this.choices[i];
+ if (i === startIndex && startIndex > 0) {
+ prefix = figures.arrowUp;
+ } else if (i === endIndex - 1 && endIndex < this.choices.length) {
+ prefix = figures.arrowDown;
+ } else {
+ prefix = " ";
+ }
+ if (v.disabled) {
+ title = this.cursor === i ? color.gray().underline(v.title) : color.strikethrough().gray(v.title);
+ prefix = (this.cursor === i ? color.bold().gray(figures.pointer) + " " : " ") + prefix;
+ } else {
+ title = this.cursor === i ? color.cyan().underline(v.title) : v.title;
+ prefix = (this.cursor === i ? color.cyan(figures.pointer) + " " : " ") + prefix;
+ if (v.description && this.cursor === i) {
+ desc = ` - ${v.description}`;
+ if (prefix.length + title.length + desc.length >= this.out.columns || v.description.split(/\r?\n/).length > 1) {
+ desc = "\n" + wrap(v.description, {
+ margin: 3,
+ width: this.out.columns
+ });
+ }
+ }
+ }
+ this.outputText += `${prefix} ${title}${color.gray(desc)}
+`;
+ }
+ }
+ this.out.write(this.outputText);
+ }
+ };
+ module2.exports = SelectPrompt;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/toggle.js
+var require_toggle = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/toggle.js"(exports, module2) {
+ "use strict";
+ var color = require_kleur();
+ var Prompt = require_prompt();
+ var _require = require_util();
+ var style = _require.style;
+ var clear = _require.clear;
+ var _require2 = require_src();
+ var cursor = _require2.cursor;
+ var erase = _require2.erase;
+ var TogglePrompt = class extends Prompt {
+ constructor(opts = {}) {
+ super(opts);
+ this.msg = opts.message;
+ this.value = !!opts.initial;
+ this.active = opts.active || "on";
+ this.inactive = opts.inactive || "off";
+ this.initialValue = this.value;
+ this.render();
+ }
+ reset() {
+ this.value = this.initialValue;
+ this.fire();
+ this.render();
+ }
+ exit() {
+ this.abort();
+ }
+ abort() {
+ this.done = this.aborted = true;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ submit() {
+ this.done = true;
+ this.aborted = false;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ deactivate() {
+ if (this.value === false)
+ return this.bell();
+ this.value = false;
+ this.render();
+ }
+ activate() {
+ if (this.value === true)
+ return this.bell();
+ this.value = true;
+ this.render();
+ }
+ delete() {
+ this.deactivate();
+ }
+ left() {
+ this.deactivate();
+ }
+ right() {
+ this.activate();
+ }
+ down() {
+ this.deactivate();
+ }
+ up() {
+ this.activate();
+ }
+ next() {
+ this.value = !this.value;
+ this.fire();
+ this.render();
+ }
+ _(c, key) {
+ if (c === " ") {
+ this.value = !this.value;
+ } else if (c === "1") {
+ this.value = true;
+ } else if (c === "0") {
+ this.value = false;
+ } else
+ return this.bell();
+ this.render();
+ }
+ render() {
+ if (this.closed)
+ return;
+ if (this.firstRender)
+ this.out.write(cursor.hide);
+ else
+ this.out.write(clear(this.outputText, this.out.columns));
+ super.render();
+ this.outputText = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(this.done), this.value ? this.inactive : color.cyan().underline(this.inactive), color.gray("/"), this.value ? color.cyan().underline(this.active) : this.active].join(" ");
+ this.out.write(erase.line + cursor.to(0) + this.outputText);
+ }
+ };
+ module2.exports = TogglePrompt;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/dateparts/datepart.js
+var require_datepart = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/dateparts/datepart.js"(exports, module2) {
+ "use strict";
+ var DatePart = class {
+ constructor({
+ token,
+ date,
+ parts,
+ locales
+ }) {
+ this.token = token;
+ this.date = date || new Date();
+ this.parts = parts || [this];
+ this.locales = locales || {};
+ }
+ up() {
+ }
+ down() {
+ }
+ next() {
+ const currentIdx = this.parts.indexOf(this);
+ return this.parts.find((part, idx) => idx > currentIdx && part instanceof DatePart);
+ }
+ setTo(val) {
+ }
+ prev() {
+ let parts = [].concat(this.parts).reverse();
+ const currentIdx = parts.indexOf(this);
+ return parts.find((part, idx) => idx > currentIdx && part instanceof DatePart);
+ }
+ toString() {
+ return String(this.date);
+ }
+ };
+ module2.exports = DatePart;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/dateparts/meridiem.js
+var require_meridiem = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/dateparts/meridiem.js"(exports, module2) {
+ "use strict";
+ var DatePart = require_datepart();
+ var Meridiem = class extends DatePart {
+ constructor(opts = {}) {
+ super(opts);
+ }
+ up() {
+ this.date.setHours((this.date.getHours() + 12) % 24);
+ }
+ down() {
+ this.up();
+ }
+ toString() {
+ let meridiem = this.date.getHours() > 12 ? "pm" : "am";
+ return /\A/.test(this.token) ? meridiem.toUpperCase() : meridiem;
+ }
+ };
+ module2.exports = Meridiem;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/dateparts/day.js
+var require_day = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/dateparts/day.js"(exports, module2) {
+ "use strict";
+ var DatePart = require_datepart();
+ var pos = (n) => {
+ n = n % 10;
+ return n === 1 ? "st" : n === 2 ? "nd" : n === 3 ? "rd" : "th";
+ };
+ var Day = class extends DatePart {
+ constructor(opts = {}) {
+ super(opts);
+ }
+ up() {
+ this.date.setDate(this.date.getDate() + 1);
+ }
+ down() {
+ this.date.setDate(this.date.getDate() - 1);
+ }
+ setTo(val) {
+ this.date.setDate(parseInt(val.substr(-2)));
+ }
+ toString() {
+ let date = this.date.getDate();
+ let day = this.date.getDay();
+ return this.token === "DD" ? String(date).padStart(2, "0") : this.token === "Do" ? date + pos(date) : this.token === "d" ? day + 1 : this.token === "ddd" ? this.locales.weekdaysShort[day] : this.token === "dddd" ? this.locales.weekdays[day] : date;
+ }
+ };
+ module2.exports = Day;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/dateparts/hours.js
+var require_hours = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/dateparts/hours.js"(exports, module2) {
+ "use strict";
+ var DatePart = require_datepart();
+ var Hours = class extends DatePart {
+ constructor(opts = {}) {
+ super(opts);
+ }
+ up() {
+ this.date.setHours(this.date.getHours() + 1);
+ }
+ down() {
+ this.date.setHours(this.date.getHours() - 1);
+ }
+ setTo(val) {
+ this.date.setHours(parseInt(val.substr(-2)));
+ }
+ toString() {
+ let hours = this.date.getHours();
+ if (/h/.test(this.token))
+ hours = hours % 12 || 12;
+ return this.token.length > 1 ? String(hours).padStart(2, "0") : hours;
+ }
+ };
+ module2.exports = Hours;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/dateparts/milliseconds.js
+var require_milliseconds = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/dateparts/milliseconds.js"(exports, module2) {
+ "use strict";
+ var DatePart = require_datepart();
+ var Milliseconds = class extends DatePart {
+ constructor(opts = {}) {
+ super(opts);
+ }
+ up() {
+ this.date.setMilliseconds(this.date.getMilliseconds() + 1);
+ }
+ down() {
+ this.date.setMilliseconds(this.date.getMilliseconds() - 1);
+ }
+ setTo(val) {
+ this.date.setMilliseconds(parseInt(val.substr(-this.token.length)));
+ }
+ toString() {
+ return String(this.date.getMilliseconds()).padStart(4, "0").substr(0, this.token.length);
+ }
+ };
+ module2.exports = Milliseconds;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/dateparts/minutes.js
+var require_minutes = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/dateparts/minutes.js"(exports, module2) {
+ "use strict";
+ var DatePart = require_datepart();
+ var Minutes = class extends DatePart {
+ constructor(opts = {}) {
+ super(opts);
+ }
+ up() {
+ this.date.setMinutes(this.date.getMinutes() + 1);
+ }
+ down() {
+ this.date.setMinutes(this.date.getMinutes() - 1);
+ }
+ setTo(val) {
+ this.date.setMinutes(parseInt(val.substr(-2)));
+ }
+ toString() {
+ let m = this.date.getMinutes();
+ return this.token.length > 1 ? String(m).padStart(2, "0") : m;
+ }
+ };
+ module2.exports = Minutes;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/dateparts/month.js
+var require_month = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/dateparts/month.js"(exports, module2) {
+ "use strict";
+ var DatePart = require_datepart();
+ var Month = class extends DatePart {
+ constructor(opts = {}) {
+ super(opts);
+ }
+ up() {
+ this.date.setMonth(this.date.getMonth() + 1);
+ }
+ down() {
+ this.date.setMonth(this.date.getMonth() - 1);
+ }
+ setTo(val) {
+ val = parseInt(val.substr(-2)) - 1;
+ this.date.setMonth(val < 0 ? 0 : val);
+ }
+ toString() {
+ let month = this.date.getMonth();
+ let tl = this.token.length;
+ return tl === 2 ? String(month + 1).padStart(2, "0") : tl === 3 ? this.locales.monthsShort[month] : tl === 4 ? this.locales.months[month] : String(month + 1);
+ }
+ };
+ module2.exports = Month;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/dateparts/seconds.js
+var require_seconds = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/dateparts/seconds.js"(exports, module2) {
+ "use strict";
+ var DatePart = require_datepart();
+ var Seconds = class extends DatePart {
+ constructor(opts = {}) {
+ super(opts);
+ }
+ up() {
+ this.date.setSeconds(this.date.getSeconds() + 1);
+ }
+ down() {
+ this.date.setSeconds(this.date.getSeconds() - 1);
+ }
+ setTo(val) {
+ this.date.setSeconds(parseInt(val.substr(-2)));
+ }
+ toString() {
+ let s = this.date.getSeconds();
+ return this.token.length > 1 ? String(s).padStart(2, "0") : s;
+ }
+ };
+ module2.exports = Seconds;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/dateparts/year.js
+var require_year = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/dateparts/year.js"(exports, module2) {
+ "use strict";
+ var DatePart = require_datepart();
+ var Year = class extends DatePart {
+ constructor(opts = {}) {
+ super(opts);
+ }
+ up() {
+ this.date.setFullYear(this.date.getFullYear() + 1);
+ }
+ down() {
+ this.date.setFullYear(this.date.getFullYear() - 1);
+ }
+ setTo(val) {
+ this.date.setFullYear(val.substr(-4));
+ }
+ toString() {
+ let year = String(this.date.getFullYear()).padStart(4, "0");
+ return this.token.length === 2 ? year.substr(-2) : year;
+ }
+ };
+ module2.exports = Year;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/dateparts/index.js
+var require_dateparts = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/dateparts/index.js"(exports, module2) {
+ "use strict";
+ module2.exports = {
+ DatePart: require_datepart(),
+ Meridiem: require_meridiem(),
+ Day: require_day(),
+ Hours: require_hours(),
+ Milliseconds: require_milliseconds(),
+ Minutes: require_minutes(),
+ Month: require_month(),
+ Seconds: require_seconds(),
+ Year: require_year()
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/date.js
+var require_date = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/date.js"(exports, module2) {
+ "use strict";
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
+ try {
+ var info = gen[key](arg);
+ var value = info.value;
+ } catch (error) {
+ reject(error);
+ return;
+ }
+ if (info.done) {
+ resolve(value);
+ } else {
+ Promise.resolve(value).then(_next, _throw);
+ }
+ }
+ function _asyncToGenerator(fn) {
+ return function() {
+ var self2 = this, args = arguments;
+ return new Promise(function(resolve, reject) {
+ var gen = fn.apply(self2, args);
+ function _next(value) {
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
+ }
+ function _throw(err) {
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
+ }
+ _next(void 0);
+ });
+ };
+ }
+ var color = require_kleur();
+ var Prompt = require_prompt();
+ var _require = require_util();
+ var style = _require.style;
+ var clear = _require.clear;
+ var figures = _require.figures;
+ var _require2 = require_src();
+ var erase = _require2.erase;
+ var cursor = _require2.cursor;
+ var _require3 = require_dateparts();
+ var DatePart = _require3.DatePart;
+ var Meridiem = _require3.Meridiem;
+ var Day = _require3.Day;
+ var Hours = _require3.Hours;
+ var Milliseconds = _require3.Milliseconds;
+ var Minutes = _require3.Minutes;
+ var Month = _require3.Month;
+ var Seconds = _require3.Seconds;
+ var Year = _require3.Year;
+ var regex = /\\(.)|"((?:\\["\\]|[^"])+)"|(D[Do]?|d{3,4}|d)|(M{1,4})|(YY(?:YY)?)|([aA])|([Hh]{1,2})|(m{1,2})|(s{1,2})|(S{1,4})|./g;
+ var regexGroups = {
+ 1: ({
+ token
+ }) => token.replace(/\\(.)/g, "$1"),
+ 2: (opts) => new Day(opts),
+ 3: (opts) => new Month(opts),
+ 4: (opts) => new Year(opts),
+ 5: (opts) => new Meridiem(opts),
+ 6: (opts) => new Hours(opts),
+ 7: (opts) => new Minutes(opts),
+ 8: (opts) => new Seconds(opts),
+ 9: (opts) => new Milliseconds(opts)
+ };
+ var dfltLocales = {
+ months: "January,February,March,April,May,June,July,August,September,October,November,December".split(","),
+ monthsShort: "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),
+ weekdays: "Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),
+ weekdaysShort: "Sun,Mon,Tue,Wed,Thu,Fri,Sat".split(",")
+ };
+ var DatePrompt = class extends Prompt {
+ constructor(opts = {}) {
+ super(opts);
+ this.msg = opts.message;
+ this.cursor = 0;
+ this.typed = "";
+ this.locales = Object.assign(dfltLocales, opts.locales);
+ this._date = opts.initial || new Date();
+ this.errorMsg = opts.error || "Please Enter A Valid Value";
+ this.validator = opts.validate || (() => true);
+ this.mask = opts.mask || "YYYY-MM-DD HH:mm:ss";
+ this.clear = clear("", this.out.columns);
+ this.render();
+ }
+ get value() {
+ return this.date;
+ }
+ get date() {
+ return this._date;
+ }
+ set date(date) {
+ if (date)
+ this._date.setTime(date.getTime());
+ }
+ set mask(mask) {
+ let result;
+ this.parts = [];
+ while (result = regex.exec(mask)) {
+ let match = result.shift();
+ let idx = result.findIndex((gr) => gr != null);
+ this.parts.push(idx in regexGroups ? regexGroups[idx]({
+ token: result[idx] || match,
+ date: this.date,
+ parts: this.parts,
+ locales: this.locales
+ }) : result[idx] || match);
+ }
+ let parts = this.parts.reduce((arr, i) => {
+ if (typeof i === "string" && typeof arr[arr.length - 1] === "string")
+ arr[arr.length - 1] += i;
+ else
+ arr.push(i);
+ return arr;
+ }, []);
+ this.parts.splice(0);
+ this.parts.push(...parts);
+ this.reset();
+ }
+ moveCursor(n) {
+ this.typed = "";
+ this.cursor = n;
+ this.fire();
+ }
+ reset() {
+ this.moveCursor(this.parts.findIndex((p) => p instanceof DatePart));
+ this.fire();
+ this.render();
+ }
+ exit() {
+ this.abort();
+ }
+ abort() {
+ this.done = this.aborted = true;
+ this.error = false;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ validate() {
+ var _this = this;
+ return _asyncToGenerator(function* () {
+ let valid = yield _this.validator(_this.value);
+ if (typeof valid === "string") {
+ _this.errorMsg = valid;
+ valid = false;
+ }
+ _this.error = !valid;
+ })();
+ }
+ submit() {
+ var _this2 = this;
+ return _asyncToGenerator(function* () {
+ yield _this2.validate();
+ if (_this2.error) {
+ _this2.color = "red";
+ _this2.fire();
+ _this2.render();
+ return;
+ }
+ _this2.done = true;
+ _this2.aborted = false;
+ _this2.fire();
+ _this2.render();
+ _this2.out.write("\n");
+ _this2.close();
+ })();
+ }
+ up() {
+ this.typed = "";
+ this.parts[this.cursor].up();
+ this.render();
+ }
+ down() {
+ this.typed = "";
+ this.parts[this.cursor].down();
+ this.render();
+ }
+ left() {
+ let prev = this.parts[this.cursor].prev();
+ if (prev == null)
+ return this.bell();
+ this.moveCursor(this.parts.indexOf(prev));
+ this.render();
+ }
+ right() {
+ let next = this.parts[this.cursor].next();
+ if (next == null)
+ return this.bell();
+ this.moveCursor(this.parts.indexOf(next));
+ this.render();
+ }
+ next() {
+ let next = this.parts[this.cursor].next();
+ this.moveCursor(next ? this.parts.indexOf(next) : this.parts.findIndex((part) => part instanceof DatePart));
+ this.render();
+ }
+ _(c) {
+ if (/\d/.test(c)) {
+ this.typed += c;
+ this.parts[this.cursor].setTo(this.typed);
+ this.render();
+ }
+ }
+ render() {
+ if (this.closed)
+ return;
+ if (this.firstRender)
+ this.out.write(cursor.hide);
+ else
+ this.out.write(clear(this.outputText, this.out.columns));
+ super.render();
+ this.outputText = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(false), this.parts.reduce((arr, p, idx) => arr.concat(idx === this.cursor && !this.done ? color.cyan().underline(p.toString()) : p), []).join("")].join(" ");
+ if (this.error) {
+ this.outputText += this.errorMsg.split("\n").reduce((a, l, i) => a + `
+${i ? ` ` : figures.pointerSmall} ${color.red().italic(l)}`, ``);
+ }
+ this.out.write(erase.line + cursor.to(0) + this.outputText);
+ }
+ };
+ module2.exports = DatePrompt;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/number.js
+var require_number = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/number.js"(exports, module2) {
+ "use strict";
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
+ try {
+ var info = gen[key](arg);
+ var value = info.value;
+ } catch (error) {
+ reject(error);
+ return;
+ }
+ if (info.done) {
+ resolve(value);
+ } else {
+ Promise.resolve(value).then(_next, _throw);
+ }
+ }
+ function _asyncToGenerator(fn) {
+ return function() {
+ var self2 = this, args = arguments;
+ return new Promise(function(resolve, reject) {
+ var gen = fn.apply(self2, args);
+ function _next(value) {
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
+ }
+ function _throw(err) {
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
+ }
+ _next(void 0);
+ });
+ };
+ }
+ var color = require_kleur();
+ var Prompt = require_prompt();
+ var _require = require_src();
+ var cursor = _require.cursor;
+ var erase = _require.erase;
+ var _require2 = require_util();
+ var style = _require2.style;
+ var figures = _require2.figures;
+ var clear = _require2.clear;
+ var lines = _require2.lines;
+ var isNumber = /[0-9]/;
+ var isDef = (any) => any !== void 0;
+ var round = (number, precision) => {
+ let factor = Math.pow(10, precision);
+ return Math.round(number * factor) / factor;
+ };
+ var NumberPrompt = class extends Prompt {
+ constructor(opts = {}) {
+ super(opts);
+ this.transform = style.render(opts.style);
+ this.msg = opts.message;
+ this.initial = isDef(opts.initial) ? opts.initial : "";
+ this.float = !!opts.float;
+ this.round = opts.round || 2;
+ this.inc = opts.increment || 1;
+ this.min = isDef(opts.min) ? opts.min : -Infinity;
+ this.max = isDef(opts.max) ? opts.max : Infinity;
+ this.errorMsg = opts.error || `Please Enter A Valid Value`;
+ this.validator = opts.validate || (() => true);
+ this.color = `cyan`;
+ this.value = ``;
+ this.typed = ``;
+ this.lastHit = 0;
+ this.render();
+ }
+ set value(v) {
+ if (!v && v !== 0) {
+ this.placeholder = true;
+ this.rendered = color.gray(this.transform.render(`${this.initial}`));
+ this._value = ``;
+ } else {
+ this.placeholder = false;
+ this.rendered = this.transform.render(`${round(v, this.round)}`);
+ this._value = round(v, this.round);
+ }
+ this.fire();
+ }
+ get value() {
+ return this._value;
+ }
+ parse(x) {
+ return this.float ? parseFloat(x) : parseInt(x);
+ }
+ valid(c) {
+ return c === `-` || c === `.` && this.float || isNumber.test(c);
+ }
+ reset() {
+ this.typed = ``;
+ this.value = ``;
+ this.fire();
+ this.render();
+ }
+ exit() {
+ this.abort();
+ }
+ abort() {
+ let x = this.value;
+ this.value = x !== `` ? x : this.initial;
+ this.done = this.aborted = true;
+ this.error = false;
+ this.fire();
+ this.render();
+ this.out.write(`
+`);
+ this.close();
+ }
+ validate() {
+ var _this = this;
+ return _asyncToGenerator(function* () {
+ let valid = yield _this.validator(_this.value);
+ if (typeof valid === `string`) {
+ _this.errorMsg = valid;
+ valid = false;
+ }
+ _this.error = !valid;
+ })();
+ }
+ submit() {
+ var _this2 = this;
+ return _asyncToGenerator(function* () {
+ yield _this2.validate();
+ if (_this2.error) {
+ _this2.color = `red`;
+ _this2.fire();
+ _this2.render();
+ return;
+ }
+ let x = _this2.value;
+ _this2.value = x !== `` ? x : _this2.initial;
+ _this2.done = true;
+ _this2.aborted = false;
+ _this2.error = false;
+ _this2.fire();
+ _this2.render();
+ _this2.out.write(`
+`);
+ _this2.close();
+ })();
+ }
+ up() {
+ this.typed = ``;
+ if (this.value === "") {
+ this.value = this.min - this.inc;
+ }
+ if (this.value >= this.max)
+ return this.bell();
+ this.value += this.inc;
+ this.color = `cyan`;
+ this.fire();
+ this.render();
+ }
+ down() {
+ this.typed = ``;
+ if (this.value === "") {
+ this.value = this.min + this.inc;
+ }
+ if (this.value <= this.min)
+ return this.bell();
+ this.value -= this.inc;
+ this.color = `cyan`;
+ this.fire();
+ this.render();
+ }
+ delete() {
+ let val = this.value.toString();
+ if (val.length === 0)
+ return this.bell();
+ this.value = this.parse(val = val.slice(0, -1)) || ``;
+ if (this.value !== "" && this.value < this.min) {
+ this.value = this.min;
+ }
+ this.color = `cyan`;
+ this.fire();
+ this.render();
+ }
+ next() {
+ this.value = this.initial;
+ this.fire();
+ this.render();
+ }
+ _(c, key) {
+ if (!this.valid(c))
+ return this.bell();
+ const now = Date.now();
+ if (now - this.lastHit > 1e3)
+ this.typed = ``;
+ this.typed += c;
+ this.lastHit = now;
+ this.color = `cyan`;
+ if (c === `.`)
+ return this.fire();
+ this.value = Math.min(this.parse(this.typed), this.max);
+ if (this.value > this.max)
+ this.value = this.max;
+ if (this.value < this.min)
+ this.value = this.min;
+ this.fire();
+ this.render();
+ }
+ render() {
+ if (this.closed)
+ return;
+ if (!this.firstRender) {
+ if (this.outputError)
+ this.out.write(cursor.down(lines(this.outputError, this.out.columns) - 1) + clear(this.outputError, this.out.columns));
+ this.out.write(clear(this.outputText, this.out.columns));
+ }
+ super.render();
+ this.outputError = "";
+ this.outputText = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(this.done), !this.done || !this.done && !this.placeholder ? color[this.color]().underline(this.rendered) : this.rendered].join(` `);
+ if (this.error) {
+ this.outputError += this.errorMsg.split(`
+`).reduce((a, l, i) => a + `
+${i ? ` ` : figures.pointerSmall} ${color.red().italic(l)}`, ``);
+ }
+ this.out.write(erase.line + cursor.to(0) + this.outputText + cursor.save + this.outputError + cursor.restore);
+ }
+ };
+ module2.exports = NumberPrompt;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/multiselect.js
+var require_multiselect = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/multiselect.js"(exports, module2) {
+ "use strict";
+ var color = require_kleur();
+ var _require = require_src();
+ var cursor = _require.cursor;
+ var Prompt = require_prompt();
+ var _require2 = require_util();
+ var clear = _require2.clear;
+ var figures = _require2.figures;
+ var style = _require2.style;
+ var wrap = _require2.wrap;
+ var entriesToDisplay = _require2.entriesToDisplay;
+ var MultiselectPrompt = class extends Prompt {
+ constructor(opts = {}) {
+ super(opts);
+ this.msg = opts.message;
+ this.cursor = opts.cursor || 0;
+ this.scrollIndex = opts.cursor || 0;
+ this.hint = opts.hint || "";
+ this.warn = opts.warn || "- This option is disabled -";
+ this.minSelected = opts.min;
+ this.showMinError = false;
+ this.maxChoices = opts.max;
+ this.instructions = opts.instructions;
+ this.optionsPerPage = opts.optionsPerPage || 10;
+ this.value = opts.choices.map((ch, idx) => {
+ if (typeof ch === "string")
+ ch = {
+ title: ch,
+ value: idx
+ };
+ return {
+ title: ch && (ch.title || ch.value || ch),
+ description: ch && ch.description,
+ value: ch && (ch.value === void 0 ? idx : ch.value),
+ selected: ch && ch.selected,
+ disabled: ch && ch.disabled
+ };
+ });
+ this.clear = clear("", this.out.columns);
+ if (!opts.overrideRender) {
+ this.render();
+ }
+ }
+ reset() {
+ this.value.map((v) => !v.selected);
+ this.cursor = 0;
+ this.fire();
+ this.render();
+ }
+ selected() {
+ return this.value.filter((v) => v.selected);
+ }
+ exit() {
+ this.abort();
+ }
+ abort() {
+ this.done = this.aborted = true;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ submit() {
+ const selected = this.value.filter((e) => e.selected);
+ if (this.minSelected && selected.length < this.minSelected) {
+ this.showMinError = true;
+ this.render();
+ } else {
+ this.done = true;
+ this.aborted = false;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ }
+ first() {
+ this.cursor = 0;
+ this.render();
+ }
+ last() {
+ this.cursor = this.value.length - 1;
+ this.render();
+ }
+ next() {
+ this.cursor = (this.cursor + 1) % this.value.length;
+ this.render();
+ }
+ up() {
+ if (this.cursor === 0) {
+ this.cursor = this.value.length - 1;
+ } else {
+ this.cursor--;
+ }
+ this.render();
+ }
+ down() {
+ if (this.cursor === this.value.length - 1) {
+ this.cursor = 0;
+ } else {
+ this.cursor++;
+ }
+ this.render();
+ }
+ left() {
+ this.value[this.cursor].selected = false;
+ this.render();
+ }
+ right() {
+ if (this.value.filter((e) => e.selected).length >= this.maxChoices)
+ return this.bell();
+ this.value[this.cursor].selected = true;
+ this.render();
+ }
+ handleSpaceToggle() {
+ const v = this.value[this.cursor];
+ if (v.selected) {
+ v.selected = false;
+ this.render();
+ } else if (v.disabled || this.value.filter((e) => e.selected).length >= this.maxChoices) {
+ return this.bell();
+ } else {
+ v.selected = true;
+ this.render();
+ }
+ }
+ toggleAll() {
+ if (this.maxChoices !== void 0 || this.value[this.cursor].disabled) {
+ return this.bell();
+ }
+ const newSelected = !this.value[this.cursor].selected;
+ this.value.filter((v) => !v.disabled).forEach((v) => v.selected = newSelected);
+ this.render();
+ }
+ _(c, key) {
+ if (c === " ") {
+ this.handleSpaceToggle();
+ } else if (c === "a") {
+ this.toggleAll();
+ } else {
+ return this.bell();
+ }
+ }
+ renderInstructions() {
+ if (this.instructions === void 0 || this.instructions) {
+ if (typeof this.instructions === "string") {
+ return this.instructions;
+ }
+ return `
+Instructions:
+ ${figures.arrowUp}/${figures.arrowDown}: Highlight option
+ ${figures.arrowLeft}/${figures.arrowRight}/[space]: Toggle selection
+` + (this.maxChoices === void 0 ? ` a: Toggle all
+` : "") + ` enter/return: Complete answer`;
+ }
+ return "";
+ }
+ renderOption(cursor2, v, i, arrowIndicator) {
+ const prefix = (v.selected ? color.green(figures.radioOn) : figures.radioOff) + " " + arrowIndicator + " ";
+ let title, desc;
+ if (v.disabled) {
+ title = cursor2 === i ? color.gray().underline(v.title) : color.strikethrough().gray(v.title);
+ } else {
+ title = cursor2 === i ? color.cyan().underline(v.title) : v.title;
+ if (cursor2 === i && v.description) {
+ desc = ` - ${v.description}`;
+ if (prefix.length + title.length + desc.length >= this.out.columns || v.description.split(/\r?\n/).length > 1) {
+ desc = "\n" + wrap(v.description, {
+ margin: prefix.length,
+ width: this.out.columns
+ });
+ }
+ }
+ }
+ return prefix + title + color.gray(desc || "");
+ }
+ paginateOptions(options2) {
+ if (options2.length === 0) {
+ return color.red("No matches for this query.");
+ }
+ let _entriesToDisplay = entriesToDisplay(this.cursor, options2.length, this.optionsPerPage), startIndex = _entriesToDisplay.startIndex, endIndex = _entriesToDisplay.endIndex;
+ let prefix, styledOptions = [];
+ for (let i = startIndex; i < endIndex; i++) {
+ if (i === startIndex && startIndex > 0) {
+ prefix = figures.arrowUp;
+ } else if (i === endIndex - 1 && endIndex < options2.length) {
+ prefix = figures.arrowDown;
+ } else {
+ prefix = " ";
+ }
+ styledOptions.push(this.renderOption(this.cursor, options2[i], i, prefix));
+ }
+ return "\n" + styledOptions.join("\n");
+ }
+ renderOptions(options2) {
+ if (!this.done) {
+ return this.paginateOptions(options2);
+ }
+ return "";
+ }
+ renderDoneOrInstructions() {
+ if (this.done) {
+ return this.value.filter((e) => e.selected).map((v) => v.title).join(", ");
+ }
+ const output = [color.gray(this.hint), this.renderInstructions()];
+ if (this.value[this.cursor].disabled) {
+ output.push(color.yellow(this.warn));
+ }
+ return output.join(" ");
+ }
+ render() {
+ if (this.closed)
+ return;
+ if (this.firstRender)
+ this.out.write(cursor.hide);
+ super.render();
+ let prompt = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(false), this.renderDoneOrInstructions()].join(" ");
+ if (this.showMinError) {
+ prompt += color.red(`You must select a minimum of ${this.minSelected} choices.`);
+ this.showMinError = false;
+ }
+ prompt += this.renderOptions(this.value);
+ this.out.write(this.clear + prompt);
+ this.clear = clear(prompt, this.out.columns);
+ }
+ };
+ module2.exports = MultiselectPrompt;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/autocomplete.js
+var require_autocomplete = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/autocomplete.js"(exports, module2) {
+ "use strict";
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
+ try {
+ var info = gen[key](arg);
+ var value = info.value;
+ } catch (error) {
+ reject(error);
+ return;
+ }
+ if (info.done) {
+ resolve(value);
+ } else {
+ Promise.resolve(value).then(_next, _throw);
+ }
+ }
+ function _asyncToGenerator(fn) {
+ return function() {
+ var self2 = this, args = arguments;
+ return new Promise(function(resolve, reject) {
+ var gen = fn.apply(self2, args);
+ function _next(value) {
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
+ }
+ function _throw(err) {
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
+ }
+ _next(void 0);
+ });
+ };
+ }
+ var color = require_kleur();
+ var Prompt = require_prompt();
+ var _require = require_src();
+ var erase = _require.erase;
+ var cursor = _require.cursor;
+ var _require2 = require_util();
+ var style = _require2.style;
+ var clear = _require2.clear;
+ var figures = _require2.figures;
+ var wrap = _require2.wrap;
+ var entriesToDisplay = _require2.entriesToDisplay;
+ var getVal = (arr, i) => arr[i] && (arr[i].value || arr[i].title || arr[i]);
+ var getTitle = (arr, i) => arr[i] && (arr[i].title || arr[i].value || arr[i]);
+ var getIndex = (arr, valOrTitle) => {
+ const index = arr.findIndex((el) => el.value === valOrTitle || el.title === valOrTitle);
+ return index > -1 ? index : void 0;
+ };
+ var AutocompletePrompt = class extends Prompt {
+ constructor(opts = {}) {
+ super(opts);
+ this.msg = opts.message;
+ this.suggest = opts.suggest;
+ this.choices = opts.choices;
+ this.initial = typeof opts.initial === "number" ? opts.initial : getIndex(opts.choices, opts.initial);
+ this.select = this.initial || opts.cursor || 0;
+ this.i18n = {
+ noMatches: opts.noMatches || "no matches found"
+ };
+ this.fallback = opts.fallback || this.initial;
+ this.clearFirst = opts.clearFirst || false;
+ this.suggestions = [];
+ this.input = "";
+ this.limit = opts.limit || 10;
+ this.cursor = 0;
+ this.transform = style.render(opts.style);
+ this.scale = this.transform.scale;
+ this.render = this.render.bind(this);
+ this.complete = this.complete.bind(this);
+ this.clear = clear("", this.out.columns);
+ this.complete(this.render);
+ this.render();
+ }
+ set fallback(fb) {
+ this._fb = Number.isSafeInteger(parseInt(fb)) ? parseInt(fb) : fb;
+ }
+ get fallback() {
+ let choice;
+ if (typeof this._fb === "number")
+ choice = this.choices[this._fb];
+ else if (typeof this._fb === "string")
+ choice = {
+ title: this._fb
+ };
+ return choice || this._fb || {
+ title: this.i18n.noMatches
+ };
+ }
+ moveSelect(i) {
+ this.select = i;
+ if (this.suggestions.length > 0)
+ this.value = getVal(this.suggestions, i);
+ else
+ this.value = this.fallback.value;
+ this.fire();
+ }
+ complete(cb) {
+ var _this = this;
+ return _asyncToGenerator(function* () {
+ const p = _this.completing = _this.suggest(_this.input, _this.choices);
+ const suggestions = yield p;
+ if (_this.completing !== p)
+ return;
+ _this.suggestions = suggestions.map((s, i, arr) => ({
+ title: getTitle(arr, i),
+ value: getVal(arr, i),
+ description: s.description
+ }));
+ _this.completing = false;
+ const l = Math.max(suggestions.length - 1, 0);
+ _this.moveSelect(Math.min(l, _this.select));
+ cb && cb();
+ })();
+ }
+ reset() {
+ this.input = "";
+ this.complete(() => {
+ this.moveSelect(this.initial !== void 0 ? this.initial : 0);
+ this.render();
+ });
+ this.render();
+ }
+ exit() {
+ if (this.clearFirst && this.input.length > 0) {
+ this.reset();
+ } else {
+ this.done = this.exited = true;
+ this.aborted = false;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ }
+ abort() {
+ this.done = this.aborted = true;
+ this.exited = false;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ submit() {
+ this.done = true;
+ this.aborted = this.exited = false;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ _(c, key) {
+ let s1 = this.input.slice(0, this.cursor);
+ let s2 = this.input.slice(this.cursor);
+ this.input = `${s1}${c}${s2}`;
+ this.cursor = s1.length + 1;
+ this.complete(this.render);
+ this.render();
+ }
+ delete() {
+ if (this.cursor === 0)
+ return this.bell();
+ let s1 = this.input.slice(0, this.cursor - 1);
+ let s2 = this.input.slice(this.cursor);
+ this.input = `${s1}${s2}`;
+ this.complete(this.render);
+ this.cursor = this.cursor - 1;
+ this.render();
+ }
+ deleteForward() {
+ if (this.cursor * this.scale >= this.rendered.length)
+ return this.bell();
+ let s1 = this.input.slice(0, this.cursor);
+ let s2 = this.input.slice(this.cursor + 1);
+ this.input = `${s1}${s2}`;
+ this.complete(this.render);
+ this.render();
+ }
+ first() {
+ this.moveSelect(0);
+ this.render();
+ }
+ last() {
+ this.moveSelect(this.suggestions.length - 1);
+ this.render();
+ }
+ up() {
+ if (this.select === 0) {
+ this.moveSelect(this.suggestions.length - 1);
+ } else {
+ this.moveSelect(this.select - 1);
+ }
+ this.render();
+ }
+ down() {
+ if (this.select === this.suggestions.length - 1) {
+ this.moveSelect(0);
+ } else {
+ this.moveSelect(this.select + 1);
+ }
+ this.render();
+ }
+ next() {
+ if (this.select === this.suggestions.length - 1) {
+ this.moveSelect(0);
+ } else
+ this.moveSelect(this.select + 1);
+ this.render();
+ }
+ nextPage() {
+ this.moveSelect(Math.min(this.select + this.limit, this.suggestions.length - 1));
+ this.render();
+ }
+ prevPage() {
+ this.moveSelect(Math.max(this.select - this.limit, 0));
+ this.render();
+ }
+ left() {
+ if (this.cursor <= 0)
+ return this.bell();
+ this.cursor = this.cursor - 1;
+ this.render();
+ }
+ right() {
+ if (this.cursor * this.scale >= this.rendered.length)
+ return this.bell();
+ this.cursor = this.cursor + 1;
+ this.render();
+ }
+ renderOption(v, hovered, isStart, isEnd) {
+ let desc;
+ let prefix = isStart ? figures.arrowUp : isEnd ? figures.arrowDown : " ";
+ let title = hovered ? color.cyan().underline(v.title) : v.title;
+ prefix = (hovered ? color.cyan(figures.pointer) + " " : " ") + prefix;
+ if (v.description) {
+ desc = ` - ${v.description}`;
+ if (prefix.length + title.length + desc.length >= this.out.columns || v.description.split(/\r?\n/).length > 1) {
+ desc = "\n" + wrap(v.description, {
+ margin: 3,
+ width: this.out.columns
+ });
+ }
+ }
+ return prefix + " " + title + color.gray(desc || "");
+ }
+ render() {
+ if (this.closed)
+ return;
+ if (this.firstRender)
+ this.out.write(cursor.hide);
+ else
+ this.out.write(clear(this.outputText, this.out.columns));
+ super.render();
+ let _entriesToDisplay = entriesToDisplay(this.select, this.choices.length, this.limit), startIndex = _entriesToDisplay.startIndex, endIndex = _entriesToDisplay.endIndex;
+ this.outputText = [style.symbol(this.done, this.aborted, this.exited), color.bold(this.msg), style.delimiter(this.completing), this.done && this.suggestions[this.select] ? this.suggestions[this.select].title : this.rendered = this.transform.render(this.input)].join(" ");
+ if (!this.done) {
+ const suggestions = this.suggestions.slice(startIndex, endIndex).map((item, i) => this.renderOption(item, this.select === i + startIndex, i === 0 && startIndex > 0, i + startIndex === endIndex - 1 && endIndex < this.choices.length)).join("\n");
+ this.outputText += `
+` + (suggestions || color.gray(this.fallback.title));
+ }
+ this.out.write(erase.line + cursor.to(0) + this.outputText);
+ }
+ };
+ module2.exports = AutocompletePrompt;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/autocompleteMultiselect.js
+var require_autocompleteMultiselect = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/autocompleteMultiselect.js"(exports, module2) {
+ "use strict";
+ var color = require_kleur();
+ var _require = require_src();
+ var cursor = _require.cursor;
+ var MultiselectPrompt = require_multiselect();
+ var _require2 = require_util();
+ var clear = _require2.clear;
+ var style = _require2.style;
+ var figures = _require2.figures;
+ var AutocompleteMultiselectPrompt = class extends MultiselectPrompt {
+ constructor(opts = {}) {
+ opts.overrideRender = true;
+ super(opts);
+ this.inputValue = "";
+ this.clear = clear("", this.out.columns);
+ this.filteredOptions = this.value;
+ this.render();
+ }
+ last() {
+ this.cursor = this.filteredOptions.length - 1;
+ this.render();
+ }
+ next() {
+ this.cursor = (this.cursor + 1) % this.filteredOptions.length;
+ this.render();
+ }
+ up() {
+ if (this.cursor === 0) {
+ this.cursor = this.filteredOptions.length - 1;
+ } else {
+ this.cursor--;
+ }
+ this.render();
+ }
+ down() {
+ if (this.cursor === this.filteredOptions.length - 1) {
+ this.cursor = 0;
+ } else {
+ this.cursor++;
+ }
+ this.render();
+ }
+ left() {
+ this.filteredOptions[this.cursor].selected = false;
+ this.render();
+ }
+ right() {
+ if (this.value.filter((e) => e.selected).length >= this.maxChoices)
+ return this.bell();
+ this.filteredOptions[this.cursor].selected = true;
+ this.render();
+ }
+ delete() {
+ if (this.inputValue.length) {
+ this.inputValue = this.inputValue.substr(0, this.inputValue.length - 1);
+ this.updateFilteredOptions();
+ }
+ }
+ updateFilteredOptions() {
+ const currentHighlight = this.filteredOptions[this.cursor];
+ this.filteredOptions = this.value.filter((v) => {
+ if (this.inputValue) {
+ if (typeof v.title === "string") {
+ if (v.title.toLowerCase().includes(this.inputValue.toLowerCase())) {
+ return true;
+ }
+ }
+ if (typeof v.value === "string") {
+ if (v.value.toLowerCase().includes(this.inputValue.toLowerCase())) {
+ return true;
+ }
+ }
+ return false;
+ }
+ return true;
+ });
+ const newHighlightIndex = this.filteredOptions.findIndex((v) => v === currentHighlight);
+ this.cursor = newHighlightIndex < 0 ? 0 : newHighlightIndex;
+ this.render();
+ }
+ handleSpaceToggle() {
+ const v = this.filteredOptions[this.cursor];
+ if (v.selected) {
+ v.selected = false;
+ this.render();
+ } else if (v.disabled || this.value.filter((e) => e.selected).length >= this.maxChoices) {
+ return this.bell();
+ } else {
+ v.selected = true;
+ this.render();
+ }
+ }
+ handleInputChange(c) {
+ this.inputValue = this.inputValue + c;
+ this.updateFilteredOptions();
+ }
+ _(c, key) {
+ if (c === " ") {
+ this.handleSpaceToggle();
+ } else {
+ this.handleInputChange(c);
+ }
+ }
+ renderInstructions() {
+ if (this.instructions === void 0 || this.instructions) {
+ if (typeof this.instructions === "string") {
+ return this.instructions;
+ }
+ return `
+Instructions:
+ ${figures.arrowUp}/${figures.arrowDown}: Highlight option
+ ${figures.arrowLeft}/${figures.arrowRight}/[space]: Toggle selection
+ [a,b,c]/delete: Filter choices
+ enter/return: Complete answer
+`;
+ }
+ return "";
+ }
+ renderCurrentInput() {
+ return `
+Filtered results for: ${this.inputValue ? this.inputValue : color.gray("Enter something to filter")}
+`;
+ }
+ renderOption(cursor2, v, i) {
+ let title;
+ if (v.disabled)
+ title = cursor2 === i ? color.gray().underline(v.title) : color.strikethrough().gray(v.title);
+ else
+ title = cursor2 === i ? color.cyan().underline(v.title) : v.title;
+ return (v.selected ? color.green(figures.radioOn) : figures.radioOff) + " " + title;
+ }
+ renderDoneOrInstructions() {
+ if (this.done) {
+ return this.value.filter((e) => e.selected).map((v) => v.title).join(", ");
+ }
+ const output = [color.gray(this.hint), this.renderInstructions(), this.renderCurrentInput()];
+ if (this.filteredOptions.length && this.filteredOptions[this.cursor].disabled) {
+ output.push(color.yellow(this.warn));
+ }
+ return output.join(" ");
+ }
+ render() {
+ if (this.closed)
+ return;
+ if (this.firstRender)
+ this.out.write(cursor.hide);
+ super.render();
+ let prompt = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(false), this.renderDoneOrInstructions()].join(" ");
+ if (this.showMinError) {
+ prompt += color.red(`You must select a minimum of ${this.minSelected} choices.`);
+ this.showMinError = false;
+ }
+ prompt += this.renderOptions(this.filteredOptions);
+ this.out.write(this.clear + prompt);
+ this.clear = clear(prompt, this.out.columns);
+ }
+ };
+ module2.exports = AutocompleteMultiselectPrompt;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/confirm.js
+var require_confirm = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/confirm.js"(exports, module2) {
+ "use strict";
+ var color = require_kleur();
+ var Prompt = require_prompt();
+ var _require = require_util();
+ var style = _require.style;
+ var clear = _require.clear;
+ var _require2 = require_src();
+ var erase = _require2.erase;
+ var cursor = _require2.cursor;
+ var ConfirmPrompt = class extends Prompt {
+ constructor(opts = {}) {
+ super(opts);
+ this.msg = opts.message;
+ this.value = opts.initial;
+ this.initialValue = !!opts.initial;
+ this.yesMsg = opts.yes || "yes";
+ this.yesOption = opts.yesOption || "(Y/n)";
+ this.noMsg = opts.no || "no";
+ this.noOption = opts.noOption || "(y/N)";
+ this.render();
+ }
+ reset() {
+ this.value = this.initialValue;
+ this.fire();
+ this.render();
+ }
+ exit() {
+ this.abort();
+ }
+ abort() {
+ this.done = this.aborted = true;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ submit() {
+ this.value = this.value || false;
+ this.done = true;
+ this.aborted = false;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ _(c, key) {
+ if (c.toLowerCase() === "y") {
+ this.value = true;
+ return this.submit();
+ }
+ if (c.toLowerCase() === "n") {
+ this.value = false;
+ return this.submit();
+ }
+ return this.bell();
+ }
+ render() {
+ if (this.closed)
+ return;
+ if (this.firstRender)
+ this.out.write(cursor.hide);
+ else
+ this.out.write(clear(this.outputText, this.out.columns));
+ super.render();
+ this.outputText = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(this.done), this.done ? this.value ? this.yesMsg : this.noMsg : color.gray(this.initialValue ? this.yesOption : this.noOption)].join(" ");
+ this.out.write(erase.line + cursor.to(0) + this.outputText);
+ }
+ };
+ module2.exports = ConfirmPrompt;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/index.js
+var require_elements = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/elements/index.js"(exports, module2) {
+ "use strict";
+ module2.exports = {
+ TextPrompt: require_text(),
+ SelectPrompt: require_select(),
+ TogglePrompt: require_toggle(),
+ DatePrompt: require_date(),
+ NumberPrompt: require_number(),
+ MultiselectPrompt: require_multiselect(),
+ AutocompletePrompt: require_autocomplete(),
+ AutocompleteMultiselectPrompt: require_autocompleteMultiselect(),
+ ConfirmPrompt: require_confirm()
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/prompts.js
+var require_prompts = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/prompts.js"(exports) {
+ "use strict";
+ var $ = exports;
+ var el = require_elements();
+ var noop = (v) => v;
+ function toPrompt(type, args, opts = {}) {
+ return new Promise((res, rej) => {
+ const p = new el[type](args);
+ const onAbort = opts.onAbort || noop;
+ const onSubmit = opts.onSubmit || noop;
+ const onExit = opts.onExit || noop;
+ p.on("state", args.onState || noop);
+ p.on("submit", (x) => res(onSubmit(x)));
+ p.on("exit", (x) => res(onExit(x)));
+ p.on("abort", (x) => rej(onAbort(x)));
+ });
+ }
+ $.text = (args) => toPrompt("TextPrompt", args);
+ $.password = (args) => {
+ args.style = "password";
+ return $.text(args);
+ };
+ $.invisible = (args) => {
+ args.style = "invisible";
+ return $.text(args);
+ };
+ $.number = (args) => toPrompt("NumberPrompt", args);
+ $.date = (args) => toPrompt("DatePrompt", args);
+ $.confirm = (args) => toPrompt("ConfirmPrompt", args);
+ $.list = (args) => {
+ const sep = args.separator || ",";
+ return toPrompt("TextPrompt", args, {
+ onSubmit: (str) => str.split(sep).map((s) => s.trim())
+ });
+ };
+ $.toggle = (args) => toPrompt("TogglePrompt", args);
+ $.select = (args) => toPrompt("SelectPrompt", args);
+ $.multiselect = (args) => {
+ args.choices = [].concat(args.choices || []);
+ const toSelected = (items) => items.filter((item) => item.selected).map((item) => item.value);
+ return toPrompt("MultiselectPrompt", args, {
+ onAbort: toSelected,
+ onSubmit: toSelected
+ });
+ };
+ $.autocompleteMultiselect = (args) => {
+ args.choices = [].concat(args.choices || []);
+ const toSelected = (items) => items.filter((item) => item.selected).map((item) => item.value);
+ return toPrompt("AutocompleteMultiselectPrompt", args, {
+ onAbort: toSelected,
+ onSubmit: toSelected
+ });
+ };
+ var byTitle = (input, choices) => Promise.resolve(choices.filter((item) => item.title.slice(0, input.length).toLowerCase() === input.toLowerCase()));
+ $.autocomplete = (args) => {
+ args.suggest = args.suggest || byTitle;
+ args.choices = [].concat(args.choices || []);
+ return toPrompt("AutocompletePrompt", args);
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/index.js
+var require_dist = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/dist/index.js"(exports, module2) {
+ "use strict";
+ function ownKeys(object, enumerableOnly) {
+ var keys = Object.keys(object);
+ if (Object.getOwnPropertySymbols) {
+ var symbols = Object.getOwnPropertySymbols(object);
+ if (enumerableOnly) {
+ symbols = symbols.filter(function(sym) {
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
+ });
+ }
+ keys.push.apply(keys, symbols);
+ }
+ return keys;
+ }
+ function _objectSpread(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i] != null ? arguments[i] : {};
+ if (i % 2) {
+ ownKeys(Object(source), true).forEach(function(key) {
+ _defineProperty(target, key, source[key]);
+ });
+ } else if (Object.getOwnPropertyDescriptors) {
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
+ } else {
+ ownKeys(Object(source)).forEach(function(key) {
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
+ });
+ }
+ }
+ return target;
+ }
+ function _defineProperty(obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true });
+ } else {
+ obj[key] = value;
+ }
+ return obj;
+ }
+ function _createForOfIteratorHelper(o, allowArrayLike) {
+ var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
+ if (!it) {
+ if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
+ if (it)
+ o = it;
+ var i = 0;
+ var F = function F2() {
+ };
+ return { s: F, n: function n() {
+ if (i >= o.length)
+ return { done: true };
+ return { done: false, value: o[i++] };
+ }, e: function e(_e) {
+ throw _e;
+ }, f: F };
+ }
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+ }
+ var normalCompletion = true, didErr = false, err;
+ return { s: function s() {
+ it = it.call(o);
+ }, n: function n() {
+ var step = it.next();
+ normalCompletion = step.done;
+ return step;
+ }, e: function e(_e2) {
+ didErr = true;
+ err = _e2;
+ }, f: function f() {
+ try {
+ if (!normalCompletion && it.return != null)
+ it.return();
+ } finally {
+ if (didErr)
+ throw err;
+ }
+ } };
+ }
+ function _unsupportedIterableToArray(o, minLen) {
+ if (!o)
+ return;
+ if (typeof o === "string")
+ return _arrayLikeToArray(o, minLen);
+ var n = Object.prototype.toString.call(o).slice(8, -1);
+ if (n === "Object" && o.constructor)
+ n = o.constructor.name;
+ if (n === "Map" || n === "Set")
+ return Array.from(o);
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
+ return _arrayLikeToArray(o, minLen);
+ }
+ function _arrayLikeToArray(arr, len) {
+ if (len == null || len > arr.length)
+ len = arr.length;
+ for (var i = 0, arr2 = new Array(len); i < len; i++)
+ arr2[i] = arr[i];
+ return arr2;
+ }
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
+ try {
+ var info = gen[key](arg);
+ var value = info.value;
+ } catch (error) {
+ reject(error);
+ return;
+ }
+ if (info.done) {
+ resolve(value);
+ } else {
+ Promise.resolve(value).then(_next, _throw);
+ }
+ }
+ function _asyncToGenerator(fn) {
+ return function() {
+ var self2 = this, args = arguments;
+ return new Promise(function(resolve, reject) {
+ var gen = fn.apply(self2, args);
+ function _next(value) {
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
+ }
+ function _throw(err) {
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
+ }
+ _next(void 0);
+ });
+ };
+ }
+ var prompts2 = require_prompts();
+ var passOn = ["suggest", "format", "onState", "validate", "onRender", "type"];
+ var noop = () => {
+ };
+ function prompt() {
+ return _prompt.apply(this, arguments);
+ }
+ function _prompt() {
+ _prompt = _asyncToGenerator(function* (questions = [], {
+ onSubmit = noop,
+ onCancel = noop
+ } = {}) {
+ const answers = {};
+ const override2 = prompt._override || {};
+ questions = [].concat(questions);
+ let answer, question, quit, name, type, lastPrompt;
+ const getFormattedAnswer = /* @__PURE__ */ function() {
+ var _ref = _asyncToGenerator(function* (question2, answer2, skipValidation = false) {
+ if (!skipValidation && question2.validate && question2.validate(answer2) !== true) {
+ return;
+ }
+ return question2.format ? yield question2.format(answer2, answers) : answer2;
+ });
+ return function getFormattedAnswer2(_x, _x2) {
+ return _ref.apply(this, arguments);
+ };
+ }();
+ var _iterator = _createForOfIteratorHelper(questions), _step;
+ try {
+ for (_iterator.s(); !(_step = _iterator.n()).done; ) {
+ question = _step.value;
+ var _question = question;
+ name = _question.name;
+ type = _question.type;
+ if (typeof type === "function") {
+ type = yield type(answer, _objectSpread({}, answers), question);
+ question["type"] = type;
+ }
+ if (!type)
+ continue;
+ for (let key in question) {
+ if (passOn.includes(key))
+ continue;
+ let value = question[key];
+ question[key] = typeof value === "function" ? yield value(answer, _objectSpread({}, answers), lastPrompt) : value;
+ }
+ lastPrompt = question;
+ if (typeof question.message !== "string") {
+ throw new Error("prompt message is required");
+ }
+ var _question2 = question;
+ name = _question2.name;
+ type = _question2.type;
+ if (prompts2[type] === void 0) {
+ throw new Error(`prompt type (${type}) is not defined`);
+ }
+ if (override2[question.name] !== void 0) {
+ answer = yield getFormattedAnswer(question, override2[question.name]);
+ if (answer !== void 0) {
+ answers[name] = answer;
+ continue;
+ }
+ }
+ try {
+ answer = prompt._injected ? getInjectedAnswer(prompt._injected, question.initial) : yield prompts2[type](question);
+ answers[name] = answer = yield getFormattedAnswer(question, answer, true);
+ quit = yield onSubmit(question, answer, answers);
+ } catch (err) {
+ quit = !(yield onCancel(question, answers));
+ }
+ if (quit)
+ return answers;
+ }
+ } catch (err) {
+ _iterator.e(err);
+ } finally {
+ _iterator.f();
+ }
+ return answers;
+ });
+ return _prompt.apply(this, arguments);
+ }
+ function getInjectedAnswer(injected, deafultValue) {
+ const answer = injected.shift();
+ if (answer instanceof Error) {
+ throw answer;
+ }
+ return answer === void 0 ? deafultValue : answer;
+ }
+ function inject(answers) {
+ prompt._injected = (prompt._injected || []).concat(answers);
+ }
+ function override(answers) {
+ prompt._override = Object.assign({}, answers);
+ }
+ module2.exports = Object.assign(prompt, {
+ prompt,
+ prompts: prompts2,
+ inject,
+ override
+ });
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/util/action.js
+var require_action2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/util/action.js"(exports, module2) {
+ "use strict";
+ module2.exports = (key, isSelect) => {
+ if (key.meta && key.name !== "escape")
+ return;
+ if (key.ctrl) {
+ if (key.name === "a")
+ return "first";
+ if (key.name === "c")
+ return "abort";
+ if (key.name === "d")
+ return "abort";
+ if (key.name === "e")
+ return "last";
+ if (key.name === "g")
+ return "reset";
+ }
+ if (isSelect) {
+ if (key.name === "j")
+ return "down";
+ if (key.name === "k")
+ return "up";
+ }
+ if (key.name === "return")
+ return "submit";
+ if (key.name === "enter")
+ return "submit";
+ if (key.name === "backspace")
+ return "delete";
+ if (key.name === "delete")
+ return "deleteForward";
+ if (key.name === "abort")
+ return "abort";
+ if (key.name === "escape")
+ return "exit";
+ if (key.name === "tab")
+ return "next";
+ if (key.name === "pagedown")
+ return "nextPage";
+ if (key.name === "pageup")
+ return "prevPage";
+ if (key.name === "home")
+ return "home";
+ if (key.name === "end")
+ return "end";
+ if (key.name === "up")
+ return "up";
+ if (key.name === "down")
+ return "down";
+ if (key.name === "right")
+ return "right";
+ if (key.name === "left")
+ return "left";
+ return false;
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/util/strip.js
+var require_strip2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/util/strip.js"(exports, module2) {
+ "use strict";
+ module2.exports = (str) => {
+ const pattern = [
+ "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)",
+ "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PRZcf-ntqry=><~]))"
+ ].join("|");
+ const RGX = new RegExp(pattern, "g");
+ return typeof str === "string" ? str.replace(RGX, "") : str;
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/util/clear.js
+var require_clear2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/util/clear.js"(exports, module2) {
+ "use strict";
+ var strip = require_strip2();
+ var { erase, cursor } = require_src();
+ var width = (str) => [...strip(str)].length;
+ module2.exports = function(prompt, perLine) {
+ if (!perLine)
+ return erase.line + cursor.to(0);
+ let rows = 0;
+ const lines = prompt.split(/\r?\n/);
+ for (let line of lines) {
+ rows += 1 + Math.floor(Math.max(width(line) - 1, 0) / perLine);
+ }
+ return erase.lines(rows);
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/util/figures.js
+var require_figures2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/util/figures.js"(exports, module2) {
+ "use strict";
+ var main = {
+ arrowUp: "\u2191",
+ arrowDown: "\u2193",
+ arrowLeft: "\u2190",
+ arrowRight: "\u2192",
+ radioOn: "\u25C9",
+ radioOff: "\u25EF",
+ tick: "\u2714",
+ cross: "\u2716",
+ ellipsis: "\u2026",
+ pointerSmall: "\u203A",
+ line: "\u2500",
+ pointer: "\u276F"
+ };
+ var win = {
+ arrowUp: main.arrowUp,
+ arrowDown: main.arrowDown,
+ arrowLeft: main.arrowLeft,
+ arrowRight: main.arrowRight,
+ radioOn: "(*)",
+ radioOff: "( )",
+ tick: "\u221A",
+ cross: "\xD7",
+ ellipsis: "...",
+ pointerSmall: "\xBB",
+ line: "\u2500",
+ pointer: ">"
+ };
+ var figures = process.platform === "win32" ? win : main;
+ module2.exports = figures;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/util/style.js
+var require_style2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/util/style.js"(exports, module2) {
+ "use strict";
+ var c = require_kleur();
+ var figures = require_figures2();
+ var styles = Object.freeze({
+ password: { scale: 1, render: (input) => "*".repeat(input.length) },
+ emoji: { scale: 2, render: (input) => "\u{1F603}".repeat(input.length) },
+ invisible: { scale: 0, render: (input) => "" },
+ default: { scale: 1, render: (input) => `${input}` }
+ });
+ var render = (type) => styles[type] || styles.default;
+ var symbols = Object.freeze({
+ aborted: c.red(figures.cross),
+ done: c.green(figures.tick),
+ exited: c.yellow(figures.cross),
+ default: c.cyan("?")
+ });
+ var symbol = (done, aborted, exited) => aborted ? symbols.aborted : exited ? symbols.exited : done ? symbols.done : symbols.default;
+ var delimiter = (completing) => c.gray(completing ? figures.ellipsis : figures.pointerSmall);
+ var item = (expandable, expanded) => c.gray(expandable ? expanded ? figures.pointerSmall : "+" : figures.line);
+ module2.exports = {
+ styles,
+ render,
+ symbols,
+ symbol,
+ delimiter,
+ item
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/util/lines.js
+var require_lines2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/util/lines.js"(exports, module2) {
+ "use strict";
+ var strip = require_strip2();
+ module2.exports = function(msg, perLine) {
+ let lines = String(strip(msg) || "").split(/\r?\n/);
+ if (!perLine)
+ return lines.length;
+ return lines.map((l) => Math.ceil(l.length / perLine)).reduce((a, b) => a + b);
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/util/wrap.js
+var require_wrap2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/util/wrap.js"(exports, module2) {
+ "use strict";
+ module2.exports = (msg, opts = {}) => {
+ const tab = Number.isSafeInteger(parseInt(opts.margin)) ? new Array(parseInt(opts.margin)).fill(" ").join("") : opts.margin || "";
+ const width = opts.width;
+ return (msg || "").split(/\r?\n/g).map((line) => line.split(/\s+/g).reduce((arr, w) => {
+ if (w.length + tab.length >= width || arr[arr.length - 1].length + w.length + 1 < width)
+ arr[arr.length - 1] += ` ${w}`;
+ else
+ arr.push(`${tab}${w}`);
+ return arr;
+ }, [tab]).join("\n")).join("\n");
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/util/entriesToDisplay.js
+var require_entriesToDisplay2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/util/entriesToDisplay.js"(exports, module2) {
+ "use strict";
+ module2.exports = (cursor, total, maxVisible) => {
+ maxVisible = maxVisible || total;
+ let startIndex = Math.min(total - maxVisible, cursor - Math.floor(maxVisible / 2));
+ if (startIndex < 0)
+ startIndex = 0;
+ let endIndex = Math.min(startIndex + maxVisible, total);
+ return { startIndex, endIndex };
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/util/index.js
+var require_util2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/util/index.js"(exports, module2) {
+ "use strict";
+ module2.exports = {
+ action: require_action2(),
+ clear: require_clear2(),
+ style: require_style2(),
+ strip: require_strip2(),
+ figures: require_figures2(),
+ lines: require_lines2(),
+ wrap: require_wrap2(),
+ entriesToDisplay: require_entriesToDisplay2()
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/prompt.js
+var require_prompt2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/prompt.js"(exports, module2) {
+ "use strict";
+ var readline = require("readline");
+ var { action } = require_util2();
+ var EventEmitter = require("events");
+ var { beep, cursor } = require_src();
+ var color = require_kleur();
+ var Prompt = class extends EventEmitter {
+ constructor(opts = {}) {
+ super();
+ this.firstRender = true;
+ this.in = opts.stdin || process.stdin;
+ this.out = opts.stdout || process.stdout;
+ this.onRender = (opts.onRender || (() => void 0)).bind(this);
+ const rl = readline.createInterface({ input: this.in, escapeCodeTimeout: 50 });
+ readline.emitKeypressEvents(this.in, rl);
+ if (this.in.isTTY)
+ this.in.setRawMode(true);
+ const isSelect = ["SelectPrompt", "MultiselectPrompt"].indexOf(this.constructor.name) > -1;
+ const keypress = (str, key) => {
+ let a = action(key, isSelect);
+ if (a === false) {
+ this._ && this._(str, key);
+ } else if (typeof this[a] === "function") {
+ this[a](key);
+ } else {
+ this.bell();
+ }
+ };
+ this.close = () => {
+ this.out.write(cursor.show);
+ this.in.removeListener("keypress", keypress);
+ if (this.in.isTTY)
+ this.in.setRawMode(false);
+ rl.close();
+ this.emit(this.aborted ? "abort" : this.exited ? "exit" : "submit", this.value);
+ this.closed = true;
+ };
+ this.in.on("keypress", keypress);
+ }
+ fire() {
+ this.emit("state", {
+ value: this.value,
+ aborted: !!this.aborted,
+ exited: !!this.exited
+ });
+ }
+ bell() {
+ this.out.write(beep);
+ }
+ render() {
+ this.onRender(color);
+ if (this.firstRender)
+ this.firstRender = false;
+ }
+ };
+ module2.exports = Prompt;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/text.js
+var require_text2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/text.js"(exports, module2) {
+ var color = require_kleur();
+ var Prompt = require_prompt2();
+ var { erase, cursor } = require_src();
+ var { style, clear, lines, figures } = require_util2();
+ var TextPrompt = class extends Prompt {
+ constructor(opts = {}) {
+ super(opts);
+ this.transform = style.render(opts.style);
+ this.scale = this.transform.scale;
+ this.msg = opts.message;
+ this.initial = opts.initial || ``;
+ this.validator = opts.validate || (() => true);
+ this.value = ``;
+ this.errorMsg = opts.error || `Please Enter A Valid Value`;
+ this.cursor = Number(!!this.initial);
+ this.cursorOffset = 0;
+ this.clear = clear(``, this.out.columns);
+ this.render();
+ }
+ set value(v) {
+ if (!v && this.initial) {
+ this.placeholder = true;
+ this.rendered = color.gray(this.transform.render(this.initial));
+ } else {
+ this.placeholder = false;
+ this.rendered = this.transform.render(v);
+ }
+ this._value = v;
+ this.fire();
+ }
+ get value() {
+ return this._value;
+ }
+ reset() {
+ this.value = ``;
+ this.cursor = Number(!!this.initial);
+ this.cursorOffset = 0;
+ this.fire();
+ this.render();
+ }
+ exit() {
+ this.abort();
+ }
+ abort() {
+ this.value = this.value || this.initial;
+ this.done = this.aborted = true;
+ this.error = false;
+ this.red = false;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ async validate() {
+ let valid = await this.validator(this.value);
+ if (typeof valid === `string`) {
+ this.errorMsg = valid;
+ valid = false;
+ }
+ this.error = !valid;
+ }
+ async submit() {
+ this.value = this.value || this.initial;
+ this.cursorOffset = 0;
+ this.cursor = this.rendered.length;
+ await this.validate();
+ if (this.error) {
+ this.red = true;
+ this.fire();
+ this.render();
+ return;
+ }
+ this.done = true;
+ this.aborted = false;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ next() {
+ if (!this.placeholder)
+ return this.bell();
+ this.value = this.initial;
+ this.cursor = this.rendered.length;
+ this.fire();
+ this.render();
+ }
+ moveCursor(n) {
+ if (this.placeholder)
+ return;
+ this.cursor = this.cursor + n;
+ this.cursorOffset += n;
+ }
+ _(c, key) {
+ let s1 = this.value.slice(0, this.cursor);
+ let s2 = this.value.slice(this.cursor);
+ this.value = `${s1}${c}${s2}`;
+ this.red = false;
+ this.cursor = this.placeholder ? 0 : s1.length + 1;
+ this.render();
+ }
+ delete() {
+ if (this.isCursorAtStart())
+ return this.bell();
+ let s1 = this.value.slice(0, this.cursor - 1);
+ let s2 = this.value.slice(this.cursor);
+ this.value = `${s1}${s2}`;
+ this.red = false;
+ if (this.isCursorAtStart()) {
+ this.cursorOffset = 0;
+ } else {
+ this.cursorOffset++;
+ this.moveCursor(-1);
+ }
+ this.render();
+ }
+ deleteForward() {
+ if (this.cursor * this.scale >= this.rendered.length || this.placeholder)
+ return this.bell();
+ let s1 = this.value.slice(0, this.cursor);
+ let s2 = this.value.slice(this.cursor + 1);
+ this.value = `${s1}${s2}`;
+ this.red = false;
+ if (this.isCursorAtEnd()) {
+ this.cursorOffset = 0;
+ } else {
+ this.cursorOffset++;
+ }
+ this.render();
+ }
+ first() {
+ this.cursor = 0;
+ this.render();
+ }
+ last() {
+ this.cursor = this.value.length;
+ this.render();
+ }
+ left() {
+ if (this.cursor <= 0 || this.placeholder)
+ return this.bell();
+ this.moveCursor(-1);
+ this.render();
+ }
+ right() {
+ if (this.cursor * this.scale >= this.rendered.length || this.placeholder)
+ return this.bell();
+ this.moveCursor(1);
+ this.render();
+ }
+ isCursorAtStart() {
+ return this.cursor === 0 || this.placeholder && this.cursor === 1;
+ }
+ isCursorAtEnd() {
+ return this.cursor === this.rendered.length || this.placeholder && this.cursor === this.rendered.length + 1;
+ }
+ render() {
+ if (this.closed)
+ return;
+ if (!this.firstRender) {
+ if (this.outputError)
+ this.out.write(cursor.down(lines(this.outputError, this.out.columns) - 1) + clear(this.outputError, this.out.columns));
+ this.out.write(clear(this.outputText, this.out.columns));
+ }
+ super.render();
+ this.outputError = "";
+ this.outputText = [
+ style.symbol(this.done, this.aborted),
+ color.bold(this.msg),
+ style.delimiter(this.done),
+ this.red ? color.red(this.rendered) : this.rendered
+ ].join(` `);
+ if (this.error) {
+ this.outputError += this.errorMsg.split(`
+`).reduce((a, l, i) => a + `
+${i ? " " : figures.pointerSmall} ${color.red().italic(l)}`, ``);
+ }
+ this.out.write(erase.line + cursor.to(0) + this.outputText + cursor.save + this.outputError + cursor.restore + cursor.move(this.cursorOffset, 0));
+ }
+ };
+ module2.exports = TextPrompt;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/select.js
+var require_select2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/select.js"(exports, module2) {
+ "use strict";
+ var color = require_kleur();
+ var Prompt = require_prompt2();
+ var { style, clear, figures, wrap, entriesToDisplay } = require_util2();
+ var { cursor } = require_src();
+ var SelectPrompt = class extends Prompt {
+ constructor(opts = {}) {
+ super(opts);
+ this.msg = opts.message;
+ this.hint = opts.hint || "- Use arrow-keys. Return to submit.";
+ this.warn = opts.warn || "- This option is disabled";
+ this.cursor = opts.initial || 0;
+ this.choices = opts.choices.map((ch, idx) => {
+ if (typeof ch === "string")
+ ch = { title: ch, value: idx };
+ return {
+ title: ch && (ch.title || ch.value || ch),
+ value: ch && (ch.value === void 0 ? idx : ch.value),
+ description: ch && ch.description,
+ selected: ch && ch.selected,
+ disabled: ch && ch.disabled
+ };
+ });
+ this.optionsPerPage = opts.optionsPerPage || 10;
+ this.value = (this.choices[this.cursor] || {}).value;
+ this.clear = clear("", this.out.columns);
+ this.render();
+ }
+ moveCursor(n) {
+ this.cursor = n;
+ this.value = this.choices[n].value;
+ this.fire();
+ }
+ reset() {
+ this.moveCursor(0);
+ this.fire();
+ this.render();
+ }
+ exit() {
+ this.abort();
+ }
+ abort() {
+ this.done = this.aborted = true;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ submit() {
+ if (!this.selection.disabled) {
+ this.done = true;
+ this.aborted = false;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ } else
+ this.bell();
+ }
+ first() {
+ this.moveCursor(0);
+ this.render();
+ }
+ last() {
+ this.moveCursor(this.choices.length - 1);
+ this.render();
+ }
+ up() {
+ if (this.cursor === 0) {
+ this.moveCursor(this.choices.length - 1);
+ } else {
+ this.moveCursor(this.cursor - 1);
+ }
+ this.render();
+ }
+ down() {
+ if (this.cursor === this.choices.length - 1) {
+ this.moveCursor(0);
+ } else {
+ this.moveCursor(this.cursor + 1);
+ }
+ this.render();
+ }
+ next() {
+ this.moveCursor((this.cursor + 1) % this.choices.length);
+ this.render();
+ }
+ _(c, key) {
+ if (c === " ")
+ return this.submit();
+ }
+ get selection() {
+ return this.choices[this.cursor];
+ }
+ render() {
+ if (this.closed)
+ return;
+ if (this.firstRender)
+ this.out.write(cursor.hide);
+ else
+ this.out.write(clear(this.outputText, this.out.columns));
+ super.render();
+ let { startIndex, endIndex } = entriesToDisplay(this.cursor, this.choices.length, this.optionsPerPage);
+ this.outputText = [
+ style.symbol(this.done, this.aborted),
+ color.bold(this.msg),
+ style.delimiter(false),
+ this.done ? this.selection.title : this.selection.disabled ? color.yellow(this.warn) : color.gray(this.hint)
+ ].join(" ");
+ if (!this.done) {
+ this.outputText += "\n";
+ for (let i = startIndex; i < endIndex; i++) {
+ let title, prefix, desc = "", v = this.choices[i];
+ if (i === startIndex && startIndex > 0) {
+ prefix = figures.arrowUp;
+ } else if (i === endIndex - 1 && endIndex < this.choices.length) {
+ prefix = figures.arrowDown;
+ } else {
+ prefix = " ";
+ }
+ if (v.disabled) {
+ title = this.cursor === i ? color.gray().underline(v.title) : color.strikethrough().gray(v.title);
+ prefix = (this.cursor === i ? color.bold().gray(figures.pointer) + " " : " ") + prefix;
+ } else {
+ title = this.cursor === i ? color.cyan().underline(v.title) : v.title;
+ prefix = (this.cursor === i ? color.cyan(figures.pointer) + " " : " ") + prefix;
+ if (v.description && this.cursor === i) {
+ desc = ` - ${v.description}`;
+ if (prefix.length + title.length + desc.length >= this.out.columns || v.description.split(/\r?\n/).length > 1) {
+ desc = "\n" + wrap(v.description, { margin: 3, width: this.out.columns });
+ }
+ }
+ }
+ this.outputText += `${prefix} ${title}${color.gray(desc)}
+`;
+ }
+ }
+ this.out.write(this.outputText);
+ }
+ };
+ module2.exports = SelectPrompt;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/toggle.js
+var require_toggle2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/toggle.js"(exports, module2) {
+ var color = require_kleur();
+ var Prompt = require_prompt2();
+ var { style, clear } = require_util2();
+ var { cursor, erase } = require_src();
+ var TogglePrompt = class extends Prompt {
+ constructor(opts = {}) {
+ super(opts);
+ this.msg = opts.message;
+ this.value = !!opts.initial;
+ this.active = opts.active || "on";
+ this.inactive = opts.inactive || "off";
+ this.initialValue = this.value;
+ this.render();
+ }
+ reset() {
+ this.value = this.initialValue;
+ this.fire();
+ this.render();
+ }
+ exit() {
+ this.abort();
+ }
+ abort() {
+ this.done = this.aborted = true;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ submit() {
+ this.done = true;
+ this.aborted = false;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ deactivate() {
+ if (this.value === false)
+ return this.bell();
+ this.value = false;
+ this.render();
+ }
+ activate() {
+ if (this.value === true)
+ return this.bell();
+ this.value = true;
+ this.render();
+ }
+ delete() {
+ this.deactivate();
+ }
+ left() {
+ this.deactivate();
+ }
+ right() {
+ this.activate();
+ }
+ down() {
+ this.deactivate();
+ }
+ up() {
+ this.activate();
+ }
+ next() {
+ this.value = !this.value;
+ this.fire();
+ this.render();
+ }
+ _(c, key) {
+ if (c === " ") {
+ this.value = !this.value;
+ } else if (c === "1") {
+ this.value = true;
+ } else if (c === "0") {
+ this.value = false;
+ } else
+ return this.bell();
+ this.render();
+ }
+ render() {
+ if (this.closed)
+ return;
+ if (this.firstRender)
+ this.out.write(cursor.hide);
+ else
+ this.out.write(clear(this.outputText, this.out.columns));
+ super.render();
+ this.outputText = [
+ style.symbol(this.done, this.aborted),
+ color.bold(this.msg),
+ style.delimiter(this.done),
+ this.value ? this.inactive : color.cyan().underline(this.inactive),
+ color.gray("/"),
+ this.value ? color.cyan().underline(this.active) : this.active
+ ].join(" ");
+ this.out.write(erase.line + cursor.to(0) + this.outputText);
+ }
+ };
+ module2.exports = TogglePrompt;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/dateparts/datepart.js
+var require_datepart2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/dateparts/datepart.js"(exports, module2) {
+ "use strict";
+ var DatePart = class {
+ constructor({ token, date, parts, locales }) {
+ this.token = token;
+ this.date = date || new Date();
+ this.parts = parts || [this];
+ this.locales = locales || {};
+ }
+ up() {
+ }
+ down() {
+ }
+ next() {
+ const currentIdx = this.parts.indexOf(this);
+ return this.parts.find((part, idx) => idx > currentIdx && part instanceof DatePart);
+ }
+ setTo(val) {
+ }
+ prev() {
+ let parts = [].concat(this.parts).reverse();
+ const currentIdx = parts.indexOf(this);
+ return parts.find((part, idx) => idx > currentIdx && part instanceof DatePart);
+ }
+ toString() {
+ return String(this.date);
+ }
+ };
+ module2.exports = DatePart;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/dateparts/meridiem.js
+var require_meridiem2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/dateparts/meridiem.js"(exports, module2) {
+ "use strict";
+ var DatePart = require_datepart2();
+ var Meridiem = class extends DatePart {
+ constructor(opts = {}) {
+ super(opts);
+ }
+ up() {
+ this.date.setHours((this.date.getHours() + 12) % 24);
+ }
+ down() {
+ this.up();
+ }
+ toString() {
+ let meridiem = this.date.getHours() > 12 ? "pm" : "am";
+ return /\A/.test(this.token) ? meridiem.toUpperCase() : meridiem;
+ }
+ };
+ module2.exports = Meridiem;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/dateparts/day.js
+var require_day2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/dateparts/day.js"(exports, module2) {
+ "use strict";
+ var DatePart = require_datepart2();
+ var pos = (n) => {
+ n = n % 10;
+ return n === 1 ? "st" : n === 2 ? "nd" : n === 3 ? "rd" : "th";
+ };
+ var Day = class extends DatePart {
+ constructor(opts = {}) {
+ super(opts);
+ }
+ up() {
+ this.date.setDate(this.date.getDate() + 1);
+ }
+ down() {
+ this.date.setDate(this.date.getDate() - 1);
+ }
+ setTo(val) {
+ this.date.setDate(parseInt(val.substr(-2)));
+ }
+ toString() {
+ let date = this.date.getDate();
+ let day = this.date.getDay();
+ return this.token === "DD" ? String(date).padStart(2, "0") : this.token === "Do" ? date + pos(date) : this.token === "d" ? day + 1 : this.token === "ddd" ? this.locales.weekdaysShort[day] : this.token === "dddd" ? this.locales.weekdays[day] : date;
+ }
+ };
+ module2.exports = Day;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/dateparts/hours.js
+var require_hours2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/dateparts/hours.js"(exports, module2) {
+ "use strict";
+ var DatePart = require_datepart2();
+ var Hours = class extends DatePart {
+ constructor(opts = {}) {
+ super(opts);
+ }
+ up() {
+ this.date.setHours(this.date.getHours() + 1);
+ }
+ down() {
+ this.date.setHours(this.date.getHours() - 1);
+ }
+ setTo(val) {
+ this.date.setHours(parseInt(val.substr(-2)));
+ }
+ toString() {
+ let hours = this.date.getHours();
+ if (/h/.test(this.token))
+ hours = hours % 12 || 12;
+ return this.token.length > 1 ? String(hours).padStart(2, "0") : hours;
+ }
+ };
+ module2.exports = Hours;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/dateparts/milliseconds.js
+var require_milliseconds2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/dateparts/milliseconds.js"(exports, module2) {
+ "use strict";
+ var DatePart = require_datepart2();
+ var Milliseconds = class extends DatePart {
+ constructor(opts = {}) {
+ super(opts);
+ }
+ up() {
+ this.date.setMilliseconds(this.date.getMilliseconds() + 1);
+ }
+ down() {
+ this.date.setMilliseconds(this.date.getMilliseconds() - 1);
+ }
+ setTo(val) {
+ this.date.setMilliseconds(parseInt(val.substr(-this.token.length)));
+ }
+ toString() {
+ return String(this.date.getMilliseconds()).padStart(4, "0").substr(0, this.token.length);
+ }
+ };
+ module2.exports = Milliseconds;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/dateparts/minutes.js
+var require_minutes2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/dateparts/minutes.js"(exports, module2) {
+ "use strict";
+ var DatePart = require_datepart2();
+ var Minutes = class extends DatePart {
+ constructor(opts = {}) {
+ super(opts);
+ }
+ up() {
+ this.date.setMinutes(this.date.getMinutes() + 1);
+ }
+ down() {
+ this.date.setMinutes(this.date.getMinutes() - 1);
+ }
+ setTo(val) {
+ this.date.setMinutes(parseInt(val.substr(-2)));
+ }
+ toString() {
+ let m = this.date.getMinutes();
+ return this.token.length > 1 ? String(m).padStart(2, "0") : m;
+ }
+ };
+ module2.exports = Minutes;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/dateparts/month.js
+var require_month2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/dateparts/month.js"(exports, module2) {
+ "use strict";
+ var DatePart = require_datepart2();
+ var Month = class extends DatePart {
+ constructor(opts = {}) {
+ super(opts);
+ }
+ up() {
+ this.date.setMonth(this.date.getMonth() + 1);
+ }
+ down() {
+ this.date.setMonth(this.date.getMonth() - 1);
+ }
+ setTo(val) {
+ val = parseInt(val.substr(-2)) - 1;
+ this.date.setMonth(val < 0 ? 0 : val);
+ }
+ toString() {
+ let month = this.date.getMonth();
+ let tl = this.token.length;
+ return tl === 2 ? String(month + 1).padStart(2, "0") : tl === 3 ? this.locales.monthsShort[month] : tl === 4 ? this.locales.months[month] : String(month + 1);
+ }
+ };
+ module2.exports = Month;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/dateparts/seconds.js
+var require_seconds2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/dateparts/seconds.js"(exports, module2) {
+ "use strict";
+ var DatePart = require_datepart2();
+ var Seconds = class extends DatePart {
+ constructor(opts = {}) {
+ super(opts);
+ }
+ up() {
+ this.date.setSeconds(this.date.getSeconds() + 1);
+ }
+ down() {
+ this.date.setSeconds(this.date.getSeconds() - 1);
+ }
+ setTo(val) {
+ this.date.setSeconds(parseInt(val.substr(-2)));
+ }
+ toString() {
+ let s = this.date.getSeconds();
+ return this.token.length > 1 ? String(s).padStart(2, "0") : s;
+ }
+ };
+ module2.exports = Seconds;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/dateparts/year.js
+var require_year2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/dateparts/year.js"(exports, module2) {
+ "use strict";
+ var DatePart = require_datepart2();
+ var Year = class extends DatePart {
+ constructor(opts = {}) {
+ super(opts);
+ }
+ up() {
+ this.date.setFullYear(this.date.getFullYear() + 1);
+ }
+ down() {
+ this.date.setFullYear(this.date.getFullYear() - 1);
+ }
+ setTo(val) {
+ this.date.setFullYear(val.substr(-4));
+ }
+ toString() {
+ let year = String(this.date.getFullYear()).padStart(4, "0");
+ return this.token.length === 2 ? year.substr(-2) : year;
+ }
+ };
+ module2.exports = Year;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/dateparts/index.js
+var require_dateparts2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/dateparts/index.js"(exports, module2) {
+ "use strict";
+ module2.exports = {
+ DatePart: require_datepart2(),
+ Meridiem: require_meridiem2(),
+ Day: require_day2(),
+ Hours: require_hours2(),
+ Milliseconds: require_milliseconds2(),
+ Minutes: require_minutes2(),
+ Month: require_month2(),
+ Seconds: require_seconds2(),
+ Year: require_year2()
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/date.js
+var require_date2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/date.js"(exports, module2) {
+ "use strict";
+ var color = require_kleur();
+ var Prompt = require_prompt2();
+ var { style, clear, figures } = require_util2();
+ var { erase, cursor } = require_src();
+ var { DatePart, Meridiem, Day, Hours, Milliseconds, Minutes, Month, Seconds, Year } = require_dateparts2();
+ var regex = /\\(.)|"((?:\\["\\]|[^"])+)"|(D[Do]?|d{3,4}|d)|(M{1,4})|(YY(?:YY)?)|([aA])|([Hh]{1,2})|(m{1,2})|(s{1,2})|(S{1,4})|./g;
+ var regexGroups = {
+ 1: ({ token }) => token.replace(/\\(.)/g, "$1"),
+ 2: (opts) => new Day(opts),
+ 3: (opts) => new Month(opts),
+ 4: (opts) => new Year(opts),
+ 5: (opts) => new Meridiem(opts),
+ 6: (opts) => new Hours(opts),
+ 7: (opts) => new Minutes(opts),
+ 8: (opts) => new Seconds(opts),
+ 9: (opts) => new Milliseconds(opts)
+ };
+ var dfltLocales = {
+ months: "January,February,March,April,May,June,July,August,September,October,November,December".split(","),
+ monthsShort: "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),
+ weekdays: "Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),
+ weekdaysShort: "Sun,Mon,Tue,Wed,Thu,Fri,Sat".split(",")
+ };
+ var DatePrompt = class extends Prompt {
+ constructor(opts = {}) {
+ super(opts);
+ this.msg = opts.message;
+ this.cursor = 0;
+ this.typed = "";
+ this.locales = Object.assign(dfltLocales, opts.locales);
+ this._date = opts.initial || new Date();
+ this.errorMsg = opts.error || "Please Enter A Valid Value";
+ this.validator = opts.validate || (() => true);
+ this.mask = opts.mask || "YYYY-MM-DD HH:mm:ss";
+ this.clear = clear("", this.out.columns);
+ this.render();
+ }
+ get value() {
+ return this.date;
+ }
+ get date() {
+ return this._date;
+ }
+ set date(date) {
+ if (date)
+ this._date.setTime(date.getTime());
+ }
+ set mask(mask) {
+ let result;
+ this.parts = [];
+ while (result = regex.exec(mask)) {
+ let match = result.shift();
+ let idx = result.findIndex((gr) => gr != null);
+ this.parts.push(idx in regexGroups ? regexGroups[idx]({ token: result[idx] || match, date: this.date, parts: this.parts, locales: this.locales }) : result[idx] || match);
+ }
+ let parts = this.parts.reduce((arr, i) => {
+ if (typeof i === "string" && typeof arr[arr.length - 1] === "string")
+ arr[arr.length - 1] += i;
+ else
+ arr.push(i);
+ return arr;
+ }, []);
+ this.parts.splice(0);
+ this.parts.push(...parts);
+ this.reset();
+ }
+ moveCursor(n) {
+ this.typed = "";
+ this.cursor = n;
+ this.fire();
+ }
+ reset() {
+ this.moveCursor(this.parts.findIndex((p) => p instanceof DatePart));
+ this.fire();
+ this.render();
+ }
+ exit() {
+ this.abort();
+ }
+ abort() {
+ this.done = this.aborted = true;
+ this.error = false;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ async validate() {
+ let valid = await this.validator(this.value);
+ if (typeof valid === "string") {
+ this.errorMsg = valid;
+ valid = false;
+ }
+ this.error = !valid;
+ }
+ async submit() {
+ await this.validate();
+ if (this.error) {
+ this.color = "red";
+ this.fire();
+ this.render();
+ return;
+ }
+ this.done = true;
+ this.aborted = false;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ up() {
+ this.typed = "";
+ this.parts[this.cursor].up();
+ this.render();
+ }
+ down() {
+ this.typed = "";
+ this.parts[this.cursor].down();
+ this.render();
+ }
+ left() {
+ let prev = this.parts[this.cursor].prev();
+ if (prev == null)
+ return this.bell();
+ this.moveCursor(this.parts.indexOf(prev));
+ this.render();
+ }
+ right() {
+ let next = this.parts[this.cursor].next();
+ if (next == null)
+ return this.bell();
+ this.moveCursor(this.parts.indexOf(next));
+ this.render();
+ }
+ next() {
+ let next = this.parts[this.cursor].next();
+ this.moveCursor(next ? this.parts.indexOf(next) : this.parts.findIndex((part) => part instanceof DatePart));
+ this.render();
+ }
+ _(c) {
+ if (/\d/.test(c)) {
+ this.typed += c;
+ this.parts[this.cursor].setTo(this.typed);
+ this.render();
+ }
+ }
+ render() {
+ if (this.closed)
+ return;
+ if (this.firstRender)
+ this.out.write(cursor.hide);
+ else
+ this.out.write(clear(this.outputText, this.out.columns));
+ super.render();
+ this.outputText = [
+ style.symbol(this.done, this.aborted),
+ color.bold(this.msg),
+ style.delimiter(false),
+ this.parts.reduce((arr, p, idx) => arr.concat(idx === this.cursor && !this.done ? color.cyan().underline(p.toString()) : p), []).join("")
+ ].join(" ");
+ if (this.error) {
+ this.outputText += this.errorMsg.split("\n").reduce((a, l, i) => a + `
+${i ? ` ` : figures.pointerSmall} ${color.red().italic(l)}`, ``);
+ }
+ this.out.write(erase.line + cursor.to(0) + this.outputText);
+ }
+ };
+ module2.exports = DatePrompt;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/number.js
+var require_number2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/number.js"(exports, module2) {
+ var color = require_kleur();
+ var Prompt = require_prompt2();
+ var { cursor, erase } = require_src();
+ var { style, figures, clear, lines } = require_util2();
+ var isNumber = /[0-9]/;
+ var isDef = (any) => any !== void 0;
+ var round = (number, precision) => {
+ let factor = Math.pow(10, precision);
+ return Math.round(number * factor) / factor;
+ };
+ var NumberPrompt = class extends Prompt {
+ constructor(opts = {}) {
+ super(opts);
+ this.transform = style.render(opts.style);
+ this.msg = opts.message;
+ this.initial = isDef(opts.initial) ? opts.initial : "";
+ this.float = !!opts.float;
+ this.round = opts.round || 2;
+ this.inc = opts.increment || 1;
+ this.min = isDef(opts.min) ? opts.min : -Infinity;
+ this.max = isDef(opts.max) ? opts.max : Infinity;
+ this.errorMsg = opts.error || `Please Enter A Valid Value`;
+ this.validator = opts.validate || (() => true);
+ this.color = `cyan`;
+ this.value = ``;
+ this.typed = ``;
+ this.lastHit = 0;
+ this.render();
+ }
+ set value(v) {
+ if (!v && v !== 0) {
+ this.placeholder = true;
+ this.rendered = color.gray(this.transform.render(`${this.initial}`));
+ this._value = ``;
+ } else {
+ this.placeholder = false;
+ this.rendered = this.transform.render(`${round(v, this.round)}`);
+ this._value = round(v, this.round);
+ }
+ this.fire();
+ }
+ get value() {
+ return this._value;
+ }
+ parse(x) {
+ return this.float ? parseFloat(x) : parseInt(x);
+ }
+ valid(c) {
+ return c === `-` || c === `.` && this.float || isNumber.test(c);
+ }
+ reset() {
+ this.typed = ``;
+ this.value = ``;
+ this.fire();
+ this.render();
+ }
+ exit() {
+ this.abort();
+ }
+ abort() {
+ let x = this.value;
+ this.value = x !== `` ? x : this.initial;
+ this.done = this.aborted = true;
+ this.error = false;
+ this.fire();
+ this.render();
+ this.out.write(`
+`);
+ this.close();
+ }
+ async validate() {
+ let valid = await this.validator(this.value);
+ if (typeof valid === `string`) {
+ this.errorMsg = valid;
+ valid = false;
+ }
+ this.error = !valid;
+ }
+ async submit() {
+ await this.validate();
+ if (this.error) {
+ this.color = `red`;
+ this.fire();
+ this.render();
+ return;
+ }
+ let x = this.value;
+ this.value = x !== `` ? x : this.initial;
+ this.done = true;
+ this.aborted = false;
+ this.error = false;
+ this.fire();
+ this.render();
+ this.out.write(`
+`);
+ this.close();
+ }
+ up() {
+ this.typed = ``;
+ if (this.value === "") {
+ this.value = this.min - this.inc;
+ }
+ if (this.value >= this.max)
+ return this.bell();
+ this.value += this.inc;
+ this.color = `cyan`;
+ this.fire();
+ this.render();
+ }
+ down() {
+ this.typed = ``;
+ if (this.value === "") {
+ this.value = this.min + this.inc;
+ }
+ if (this.value <= this.min)
+ return this.bell();
+ this.value -= this.inc;
+ this.color = `cyan`;
+ this.fire();
+ this.render();
+ }
+ delete() {
+ let val = this.value.toString();
+ if (val.length === 0)
+ return this.bell();
+ this.value = this.parse(val = val.slice(0, -1)) || ``;
+ if (this.value !== "" && this.value < this.min) {
+ this.value = this.min;
+ }
+ this.color = `cyan`;
+ this.fire();
+ this.render();
+ }
+ next() {
+ this.value = this.initial;
+ this.fire();
+ this.render();
+ }
+ _(c, key) {
+ if (!this.valid(c))
+ return this.bell();
+ const now = Date.now();
+ if (now - this.lastHit > 1e3)
+ this.typed = ``;
+ this.typed += c;
+ this.lastHit = now;
+ this.color = `cyan`;
+ if (c === `.`)
+ return this.fire();
+ this.value = Math.min(this.parse(this.typed), this.max);
+ if (this.value > this.max)
+ this.value = this.max;
+ if (this.value < this.min)
+ this.value = this.min;
+ this.fire();
+ this.render();
+ }
+ render() {
+ if (this.closed)
+ return;
+ if (!this.firstRender) {
+ if (this.outputError)
+ this.out.write(cursor.down(lines(this.outputError, this.out.columns) - 1) + clear(this.outputError, this.out.columns));
+ this.out.write(clear(this.outputText, this.out.columns));
+ }
+ super.render();
+ this.outputError = "";
+ this.outputText = [
+ style.symbol(this.done, this.aborted),
+ color.bold(this.msg),
+ style.delimiter(this.done),
+ !this.done || !this.done && !this.placeholder ? color[this.color]().underline(this.rendered) : this.rendered
+ ].join(` `);
+ if (this.error) {
+ this.outputError += this.errorMsg.split(`
+`).reduce((a, l, i) => a + `
+${i ? ` ` : figures.pointerSmall} ${color.red().italic(l)}`, ``);
+ }
+ this.out.write(erase.line + cursor.to(0) + this.outputText + cursor.save + this.outputError + cursor.restore);
+ }
+ };
+ module2.exports = NumberPrompt;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/multiselect.js
+var require_multiselect2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/multiselect.js"(exports, module2) {
+ "use strict";
+ var color = require_kleur();
+ var { cursor } = require_src();
+ var Prompt = require_prompt2();
+ var { clear, figures, style, wrap, entriesToDisplay } = require_util2();
+ var MultiselectPrompt = class extends Prompt {
+ constructor(opts = {}) {
+ super(opts);
+ this.msg = opts.message;
+ this.cursor = opts.cursor || 0;
+ this.scrollIndex = opts.cursor || 0;
+ this.hint = opts.hint || "";
+ this.warn = opts.warn || "- This option is disabled -";
+ this.minSelected = opts.min;
+ this.showMinError = false;
+ this.maxChoices = opts.max;
+ this.instructions = opts.instructions;
+ this.optionsPerPage = opts.optionsPerPage || 10;
+ this.value = opts.choices.map((ch, idx) => {
+ if (typeof ch === "string")
+ ch = { title: ch, value: idx };
+ return {
+ title: ch && (ch.title || ch.value || ch),
+ description: ch && ch.description,
+ value: ch && (ch.value === void 0 ? idx : ch.value),
+ selected: ch && ch.selected,
+ disabled: ch && ch.disabled
+ };
+ });
+ this.clear = clear("", this.out.columns);
+ if (!opts.overrideRender) {
+ this.render();
+ }
+ }
+ reset() {
+ this.value.map((v) => !v.selected);
+ this.cursor = 0;
+ this.fire();
+ this.render();
+ }
+ selected() {
+ return this.value.filter((v) => v.selected);
+ }
+ exit() {
+ this.abort();
+ }
+ abort() {
+ this.done = this.aborted = true;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ submit() {
+ const selected = this.value.filter((e) => e.selected);
+ if (this.minSelected && selected.length < this.minSelected) {
+ this.showMinError = true;
+ this.render();
+ } else {
+ this.done = true;
+ this.aborted = false;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ }
+ first() {
+ this.cursor = 0;
+ this.render();
+ }
+ last() {
+ this.cursor = this.value.length - 1;
+ this.render();
+ }
+ next() {
+ this.cursor = (this.cursor + 1) % this.value.length;
+ this.render();
+ }
+ up() {
+ if (this.cursor === 0) {
+ this.cursor = this.value.length - 1;
+ } else {
+ this.cursor--;
+ }
+ this.render();
+ }
+ down() {
+ if (this.cursor === this.value.length - 1) {
+ this.cursor = 0;
+ } else {
+ this.cursor++;
+ }
+ this.render();
+ }
+ left() {
+ this.value[this.cursor].selected = false;
+ this.render();
+ }
+ right() {
+ if (this.value.filter((e) => e.selected).length >= this.maxChoices)
+ return this.bell();
+ this.value[this.cursor].selected = true;
+ this.render();
+ }
+ handleSpaceToggle() {
+ const v = this.value[this.cursor];
+ if (v.selected) {
+ v.selected = false;
+ this.render();
+ } else if (v.disabled || this.value.filter((e) => e.selected).length >= this.maxChoices) {
+ return this.bell();
+ } else {
+ v.selected = true;
+ this.render();
+ }
+ }
+ toggleAll() {
+ if (this.maxChoices !== void 0 || this.value[this.cursor].disabled) {
+ return this.bell();
+ }
+ const newSelected = !this.value[this.cursor].selected;
+ this.value.filter((v) => !v.disabled).forEach((v) => v.selected = newSelected);
+ this.render();
+ }
+ _(c, key) {
+ if (c === " ") {
+ this.handleSpaceToggle();
+ } else if (c === "a") {
+ this.toggleAll();
+ } else {
+ return this.bell();
+ }
+ }
+ renderInstructions() {
+ if (this.instructions === void 0 || this.instructions) {
+ if (typeof this.instructions === "string") {
+ return this.instructions;
+ }
+ return `
+Instructions:
+ ${figures.arrowUp}/${figures.arrowDown}: Highlight option
+ ${figures.arrowLeft}/${figures.arrowRight}/[space]: Toggle selection
+` + (this.maxChoices === void 0 ? ` a: Toggle all
+` : "") + ` enter/return: Complete answer`;
+ }
+ return "";
+ }
+ renderOption(cursor2, v, i, arrowIndicator) {
+ const prefix = (v.selected ? color.green(figures.radioOn) : figures.radioOff) + " " + arrowIndicator + " ";
+ let title, desc;
+ if (v.disabled) {
+ title = cursor2 === i ? color.gray().underline(v.title) : color.strikethrough().gray(v.title);
+ } else {
+ title = cursor2 === i ? color.cyan().underline(v.title) : v.title;
+ if (cursor2 === i && v.description) {
+ desc = ` - ${v.description}`;
+ if (prefix.length + title.length + desc.length >= this.out.columns || v.description.split(/\r?\n/).length > 1) {
+ desc = "\n" + wrap(v.description, { margin: prefix.length, width: this.out.columns });
+ }
+ }
+ }
+ return prefix + title + color.gray(desc || "");
+ }
+ paginateOptions(options2) {
+ if (options2.length === 0) {
+ return color.red("No matches for this query.");
+ }
+ let { startIndex, endIndex } = entriesToDisplay(this.cursor, options2.length, this.optionsPerPage);
+ let prefix, styledOptions = [];
+ for (let i = startIndex; i < endIndex; i++) {
+ if (i === startIndex && startIndex > 0) {
+ prefix = figures.arrowUp;
+ } else if (i === endIndex - 1 && endIndex < options2.length) {
+ prefix = figures.arrowDown;
+ } else {
+ prefix = " ";
+ }
+ styledOptions.push(this.renderOption(this.cursor, options2[i], i, prefix));
+ }
+ return "\n" + styledOptions.join("\n");
+ }
+ renderOptions(options2) {
+ if (!this.done) {
+ return this.paginateOptions(options2);
+ }
+ return "";
+ }
+ renderDoneOrInstructions() {
+ if (this.done) {
+ return this.value.filter((e) => e.selected).map((v) => v.title).join(", ");
+ }
+ const output = [color.gray(this.hint), this.renderInstructions()];
+ if (this.value[this.cursor].disabled) {
+ output.push(color.yellow(this.warn));
+ }
+ return output.join(" ");
+ }
+ render() {
+ if (this.closed)
+ return;
+ if (this.firstRender)
+ this.out.write(cursor.hide);
+ super.render();
+ let prompt = [
+ style.symbol(this.done, this.aborted),
+ color.bold(this.msg),
+ style.delimiter(false),
+ this.renderDoneOrInstructions()
+ ].join(" ");
+ if (this.showMinError) {
+ prompt += color.red(`You must select a minimum of ${this.minSelected} choices.`);
+ this.showMinError = false;
+ }
+ prompt += this.renderOptions(this.value);
+ this.out.write(this.clear + prompt);
+ this.clear = clear(prompt, this.out.columns);
+ }
+ };
+ module2.exports = MultiselectPrompt;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/autocomplete.js
+var require_autocomplete2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/autocomplete.js"(exports, module2) {
+ "use strict";
+ var color = require_kleur();
+ var Prompt = require_prompt2();
+ var { erase, cursor } = require_src();
+ var { style, clear, figures, wrap, entriesToDisplay } = require_util2();
+ var getVal = (arr, i) => arr[i] && (arr[i].value || arr[i].title || arr[i]);
+ var getTitle = (arr, i) => arr[i] && (arr[i].title || arr[i].value || arr[i]);
+ var getIndex = (arr, valOrTitle) => {
+ const index = arr.findIndex((el) => el.value === valOrTitle || el.title === valOrTitle);
+ return index > -1 ? index : void 0;
+ };
+ var AutocompletePrompt = class extends Prompt {
+ constructor(opts = {}) {
+ super(opts);
+ this.msg = opts.message;
+ this.suggest = opts.suggest;
+ this.choices = opts.choices;
+ this.initial = typeof opts.initial === "number" ? opts.initial : getIndex(opts.choices, opts.initial);
+ this.select = this.initial || opts.cursor || 0;
+ this.i18n = { noMatches: opts.noMatches || "no matches found" };
+ this.fallback = opts.fallback || this.initial;
+ this.clearFirst = opts.clearFirst || false;
+ this.suggestions = [];
+ this.input = "";
+ this.limit = opts.limit || 10;
+ this.cursor = 0;
+ this.transform = style.render(opts.style);
+ this.scale = this.transform.scale;
+ this.render = this.render.bind(this);
+ this.complete = this.complete.bind(this);
+ this.clear = clear("", this.out.columns);
+ this.complete(this.render);
+ this.render();
+ }
+ set fallback(fb) {
+ this._fb = Number.isSafeInteger(parseInt(fb)) ? parseInt(fb) : fb;
+ }
+ get fallback() {
+ let choice;
+ if (typeof this._fb === "number")
+ choice = this.choices[this._fb];
+ else if (typeof this._fb === "string")
+ choice = { title: this._fb };
+ return choice || this._fb || { title: this.i18n.noMatches };
+ }
+ moveSelect(i) {
+ this.select = i;
+ if (this.suggestions.length > 0)
+ this.value = getVal(this.suggestions, i);
+ else
+ this.value = this.fallback.value;
+ this.fire();
+ }
+ async complete(cb) {
+ const p = this.completing = this.suggest(this.input, this.choices);
+ const suggestions = await p;
+ if (this.completing !== p)
+ return;
+ this.suggestions = suggestions.map((s, i, arr) => ({ title: getTitle(arr, i), value: getVal(arr, i), description: s.description }));
+ this.completing = false;
+ const l = Math.max(suggestions.length - 1, 0);
+ this.moveSelect(Math.min(l, this.select));
+ cb && cb();
+ }
+ reset() {
+ this.input = "";
+ this.complete(() => {
+ this.moveSelect(this.initial !== void 0 ? this.initial : 0);
+ this.render();
+ });
+ this.render();
+ }
+ exit() {
+ if (this.clearFirst && this.input.length > 0) {
+ this.reset();
+ } else {
+ this.done = this.exited = true;
+ this.aborted = false;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ }
+ abort() {
+ this.done = this.aborted = true;
+ this.exited = false;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ submit() {
+ this.done = true;
+ this.aborted = this.exited = false;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ _(c, key) {
+ let s1 = this.input.slice(0, this.cursor);
+ let s2 = this.input.slice(this.cursor);
+ this.input = `${s1}${c}${s2}`;
+ this.cursor = s1.length + 1;
+ this.complete(this.render);
+ this.render();
+ }
+ delete() {
+ if (this.cursor === 0)
+ return this.bell();
+ let s1 = this.input.slice(0, this.cursor - 1);
+ let s2 = this.input.slice(this.cursor);
+ this.input = `${s1}${s2}`;
+ this.complete(this.render);
+ this.cursor = this.cursor - 1;
+ this.render();
+ }
+ deleteForward() {
+ if (this.cursor * this.scale >= this.rendered.length)
+ return this.bell();
+ let s1 = this.input.slice(0, this.cursor);
+ let s2 = this.input.slice(this.cursor + 1);
+ this.input = `${s1}${s2}`;
+ this.complete(this.render);
+ this.render();
+ }
+ first() {
+ this.moveSelect(0);
+ this.render();
+ }
+ last() {
+ this.moveSelect(this.suggestions.length - 1);
+ this.render();
+ }
+ up() {
+ if (this.select === 0) {
+ this.moveSelect(this.suggestions.length - 1);
+ } else {
+ this.moveSelect(this.select - 1);
+ }
+ this.render();
+ }
+ down() {
+ if (this.select === this.suggestions.length - 1) {
+ this.moveSelect(0);
+ } else {
+ this.moveSelect(this.select + 1);
+ }
+ this.render();
+ }
+ next() {
+ if (this.select === this.suggestions.length - 1) {
+ this.moveSelect(0);
+ } else
+ this.moveSelect(this.select + 1);
+ this.render();
+ }
+ nextPage() {
+ this.moveSelect(Math.min(this.select + this.limit, this.suggestions.length - 1));
+ this.render();
+ }
+ prevPage() {
+ this.moveSelect(Math.max(this.select - this.limit, 0));
+ this.render();
+ }
+ left() {
+ if (this.cursor <= 0)
+ return this.bell();
+ this.cursor = this.cursor - 1;
+ this.render();
+ }
+ right() {
+ if (this.cursor * this.scale >= this.rendered.length)
+ return this.bell();
+ this.cursor = this.cursor + 1;
+ this.render();
+ }
+ renderOption(v, hovered, isStart, isEnd) {
+ let desc;
+ let prefix = isStart ? figures.arrowUp : isEnd ? figures.arrowDown : " ";
+ let title = hovered ? color.cyan().underline(v.title) : v.title;
+ prefix = (hovered ? color.cyan(figures.pointer) + " " : " ") + prefix;
+ if (v.description) {
+ desc = ` - ${v.description}`;
+ if (prefix.length + title.length + desc.length >= this.out.columns || v.description.split(/\r?\n/).length > 1) {
+ desc = "\n" + wrap(v.description, { margin: 3, width: this.out.columns });
+ }
+ }
+ return prefix + " " + title + color.gray(desc || "");
+ }
+ render() {
+ if (this.closed)
+ return;
+ if (this.firstRender)
+ this.out.write(cursor.hide);
+ else
+ this.out.write(clear(this.outputText, this.out.columns));
+ super.render();
+ let { startIndex, endIndex } = entriesToDisplay(this.select, this.choices.length, this.limit);
+ this.outputText = [
+ style.symbol(this.done, this.aborted, this.exited),
+ color.bold(this.msg),
+ style.delimiter(this.completing),
+ this.done && this.suggestions[this.select] ? this.suggestions[this.select].title : this.rendered = this.transform.render(this.input)
+ ].join(" ");
+ if (!this.done) {
+ const suggestions = this.suggestions.slice(startIndex, endIndex).map((item, i) => this.renderOption(item, this.select === i + startIndex, i === 0 && startIndex > 0, i + startIndex === endIndex - 1 && endIndex < this.choices.length)).join("\n");
+ this.outputText += `
+` + (suggestions || color.gray(this.fallback.title));
+ }
+ this.out.write(erase.line + cursor.to(0) + this.outputText);
+ }
+ };
+ module2.exports = AutocompletePrompt;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/autocompleteMultiselect.js
+var require_autocompleteMultiselect2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/autocompleteMultiselect.js"(exports, module2) {
+ "use strict";
+ var color = require_kleur();
+ var { cursor } = require_src();
+ var MultiselectPrompt = require_multiselect2();
+ var { clear, style, figures } = require_util2();
+ var AutocompleteMultiselectPrompt = class extends MultiselectPrompt {
+ constructor(opts = {}) {
+ opts.overrideRender = true;
+ super(opts);
+ this.inputValue = "";
+ this.clear = clear("", this.out.columns);
+ this.filteredOptions = this.value;
+ this.render();
+ }
+ last() {
+ this.cursor = this.filteredOptions.length - 1;
+ this.render();
+ }
+ next() {
+ this.cursor = (this.cursor + 1) % this.filteredOptions.length;
+ this.render();
+ }
+ up() {
+ if (this.cursor === 0) {
+ this.cursor = this.filteredOptions.length - 1;
+ } else {
+ this.cursor--;
+ }
+ this.render();
+ }
+ down() {
+ if (this.cursor === this.filteredOptions.length - 1) {
+ this.cursor = 0;
+ } else {
+ this.cursor++;
+ }
+ this.render();
+ }
+ left() {
+ this.filteredOptions[this.cursor].selected = false;
+ this.render();
+ }
+ right() {
+ if (this.value.filter((e) => e.selected).length >= this.maxChoices)
+ return this.bell();
+ this.filteredOptions[this.cursor].selected = true;
+ this.render();
+ }
+ delete() {
+ if (this.inputValue.length) {
+ this.inputValue = this.inputValue.substr(0, this.inputValue.length - 1);
+ this.updateFilteredOptions();
+ }
+ }
+ updateFilteredOptions() {
+ const currentHighlight = this.filteredOptions[this.cursor];
+ this.filteredOptions = this.value.filter((v) => {
+ if (this.inputValue) {
+ if (typeof v.title === "string") {
+ if (v.title.toLowerCase().includes(this.inputValue.toLowerCase())) {
+ return true;
+ }
+ }
+ if (typeof v.value === "string") {
+ if (v.value.toLowerCase().includes(this.inputValue.toLowerCase())) {
+ return true;
+ }
+ }
+ return false;
+ }
+ return true;
+ });
+ const newHighlightIndex = this.filteredOptions.findIndex((v) => v === currentHighlight);
+ this.cursor = newHighlightIndex < 0 ? 0 : newHighlightIndex;
+ this.render();
+ }
+ handleSpaceToggle() {
+ const v = this.filteredOptions[this.cursor];
+ if (v.selected) {
+ v.selected = false;
+ this.render();
+ } else if (v.disabled || this.value.filter((e) => e.selected).length >= this.maxChoices) {
+ return this.bell();
+ } else {
+ v.selected = true;
+ this.render();
+ }
+ }
+ handleInputChange(c) {
+ this.inputValue = this.inputValue + c;
+ this.updateFilteredOptions();
+ }
+ _(c, key) {
+ if (c === " ") {
+ this.handleSpaceToggle();
+ } else {
+ this.handleInputChange(c);
+ }
+ }
+ renderInstructions() {
+ if (this.instructions === void 0 || this.instructions) {
+ if (typeof this.instructions === "string") {
+ return this.instructions;
+ }
+ return `
+Instructions:
+ ${figures.arrowUp}/${figures.arrowDown}: Highlight option
+ ${figures.arrowLeft}/${figures.arrowRight}/[space]: Toggle selection
+ [a,b,c]/delete: Filter choices
+ enter/return: Complete answer
+`;
+ }
+ return "";
+ }
+ renderCurrentInput() {
+ return `
+Filtered results for: ${this.inputValue ? this.inputValue : color.gray("Enter something to filter")}
+`;
+ }
+ renderOption(cursor2, v, i) {
+ let title;
+ if (v.disabled)
+ title = cursor2 === i ? color.gray().underline(v.title) : color.strikethrough().gray(v.title);
+ else
+ title = cursor2 === i ? color.cyan().underline(v.title) : v.title;
+ return (v.selected ? color.green(figures.radioOn) : figures.radioOff) + " " + title;
+ }
+ renderDoneOrInstructions() {
+ if (this.done) {
+ return this.value.filter((e) => e.selected).map((v) => v.title).join(", ");
+ }
+ const output = [color.gray(this.hint), this.renderInstructions(), this.renderCurrentInput()];
+ if (this.filteredOptions.length && this.filteredOptions[this.cursor].disabled) {
+ output.push(color.yellow(this.warn));
+ }
+ return output.join(" ");
+ }
+ render() {
+ if (this.closed)
+ return;
+ if (this.firstRender)
+ this.out.write(cursor.hide);
+ super.render();
+ let prompt = [
+ style.symbol(this.done, this.aborted),
+ color.bold(this.msg),
+ style.delimiter(false),
+ this.renderDoneOrInstructions()
+ ].join(" ");
+ if (this.showMinError) {
+ prompt += color.red(`You must select a minimum of ${this.minSelected} choices.`);
+ this.showMinError = false;
+ }
+ prompt += this.renderOptions(this.filteredOptions);
+ this.out.write(this.clear + prompt);
+ this.clear = clear(prompt, this.out.columns);
+ }
+ };
+ module2.exports = AutocompleteMultiselectPrompt;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/confirm.js
+var require_confirm2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/confirm.js"(exports, module2) {
+ var color = require_kleur();
+ var Prompt = require_prompt2();
+ var { style, clear } = require_util2();
+ var { erase, cursor } = require_src();
+ var ConfirmPrompt = class extends Prompt {
+ constructor(opts = {}) {
+ super(opts);
+ this.msg = opts.message;
+ this.value = opts.initial;
+ this.initialValue = !!opts.initial;
+ this.yesMsg = opts.yes || "yes";
+ this.yesOption = opts.yesOption || "(Y/n)";
+ this.noMsg = opts.no || "no";
+ this.noOption = opts.noOption || "(y/N)";
+ this.render();
+ }
+ reset() {
+ this.value = this.initialValue;
+ this.fire();
+ this.render();
+ }
+ exit() {
+ this.abort();
+ }
+ abort() {
+ this.done = this.aborted = true;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ submit() {
+ this.value = this.value || false;
+ this.done = true;
+ this.aborted = false;
+ this.fire();
+ this.render();
+ this.out.write("\n");
+ this.close();
+ }
+ _(c, key) {
+ if (c.toLowerCase() === "y") {
+ this.value = true;
+ return this.submit();
+ }
+ if (c.toLowerCase() === "n") {
+ this.value = false;
+ return this.submit();
+ }
+ return this.bell();
+ }
+ render() {
+ if (this.closed)
+ return;
+ if (this.firstRender)
+ this.out.write(cursor.hide);
+ else
+ this.out.write(clear(this.outputText, this.out.columns));
+ super.render();
+ this.outputText = [
+ style.symbol(this.done, this.aborted),
+ color.bold(this.msg),
+ style.delimiter(this.done),
+ this.done ? this.value ? this.yesMsg : this.noMsg : color.gray(this.initialValue ? this.yesOption : this.noOption)
+ ].join(" ");
+ this.out.write(erase.line + cursor.to(0) + this.outputText);
+ }
+ };
+ module2.exports = ConfirmPrompt;
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/index.js
+var require_elements2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/elements/index.js"(exports, module2) {
+ "use strict";
+ module2.exports = {
+ TextPrompt: require_text2(),
+ SelectPrompt: require_select2(),
+ TogglePrompt: require_toggle2(),
+ DatePrompt: require_date2(),
+ NumberPrompt: require_number2(),
+ MultiselectPrompt: require_multiselect2(),
+ AutocompletePrompt: require_autocomplete2(),
+ AutocompleteMultiselectPrompt: require_autocompleteMultiselect2(),
+ ConfirmPrompt: require_confirm2()
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/prompts.js
+var require_prompts2 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/prompts.js"(exports) {
+ "use strict";
+ var $ = exports;
+ var el = require_elements2();
+ var noop = (v) => v;
+ function toPrompt(type, args, opts = {}) {
+ return new Promise((res, rej) => {
+ const p = new el[type](args);
+ const onAbort = opts.onAbort || noop;
+ const onSubmit = opts.onSubmit || noop;
+ const onExit = opts.onExit || noop;
+ p.on("state", args.onState || noop);
+ p.on("submit", (x) => res(onSubmit(x)));
+ p.on("exit", (x) => res(onExit(x)));
+ p.on("abort", (x) => rej(onAbort(x)));
+ });
+ }
+ $.text = (args) => toPrompt("TextPrompt", args);
+ $.password = (args) => {
+ args.style = "password";
+ return $.text(args);
+ };
+ $.invisible = (args) => {
+ args.style = "invisible";
+ return $.text(args);
+ };
+ $.number = (args) => toPrompt("NumberPrompt", args);
+ $.date = (args) => toPrompt("DatePrompt", args);
+ $.confirm = (args) => toPrompt("ConfirmPrompt", args);
+ $.list = (args) => {
+ const sep = args.separator || ",";
+ return toPrompt("TextPrompt", args, {
+ onSubmit: (str) => str.split(sep).map((s) => s.trim())
+ });
+ };
+ $.toggle = (args) => toPrompt("TogglePrompt", args);
+ $.select = (args) => toPrompt("SelectPrompt", args);
+ $.multiselect = (args) => {
+ args.choices = [].concat(args.choices || []);
+ const toSelected = (items) => items.filter((item) => item.selected).map((item) => item.value);
+ return toPrompt("MultiselectPrompt", args, {
+ onAbort: toSelected,
+ onSubmit: toSelected
+ });
+ };
+ $.autocompleteMultiselect = (args) => {
+ args.choices = [].concat(args.choices || []);
+ const toSelected = (items) => items.filter((item) => item.selected).map((item) => item.value);
+ return toPrompt("AutocompleteMultiselectPrompt", args, {
+ onAbort: toSelected,
+ onSubmit: toSelected
+ });
+ };
+ var byTitle = (input, choices) => Promise.resolve(choices.filter((item) => item.title.slice(0, input.length).toLowerCase() === input.toLowerCase()));
+ $.autocomplete = (args) => {
+ args.suggest = args.suggest || byTitle;
+ args.choices = [].concat(args.choices || []);
+ return toPrompt("AutocompletePrompt", args);
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/index.js
+var require_lib = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/lib/index.js"(exports, module2) {
+ "use strict";
+ var prompts2 = require_prompts2();
+ var passOn = ["suggest", "format", "onState", "validate", "onRender", "type"];
+ var noop = () => {
+ };
+ async function prompt(questions = [], { onSubmit = noop, onCancel = noop } = {}) {
+ const answers = {};
+ const override2 = prompt._override || {};
+ questions = [].concat(questions);
+ let answer, question, quit, name, type, lastPrompt;
+ const getFormattedAnswer = async (question2, answer2, skipValidation = false) => {
+ if (!skipValidation && question2.validate && question2.validate(answer2) !== true) {
+ return;
+ }
+ return question2.format ? await question2.format(answer2, answers) : answer2;
+ };
+ for (question of questions) {
+ ({ name, type } = question);
+ if (typeof type === "function") {
+ type = await type(answer, { ...answers }, question);
+ question["type"] = type;
+ }
+ if (!type)
+ continue;
+ for (let key in question) {
+ if (passOn.includes(key))
+ continue;
+ let value = question[key];
+ question[key] = typeof value === "function" ? await value(answer, { ...answers }, lastPrompt) : value;
+ }
+ lastPrompt = question;
+ if (typeof question.message !== "string") {
+ throw new Error("prompt message is required");
+ }
+ ({ name, type } = question);
+ if (prompts2[type] === void 0) {
+ throw new Error(`prompt type (${type}) is not defined`);
+ }
+ if (override2[question.name] !== void 0) {
+ answer = await getFormattedAnswer(question, override2[question.name]);
+ if (answer !== void 0) {
+ answers[name] = answer;
+ continue;
+ }
+ }
+ try {
+ answer = prompt._injected ? getInjectedAnswer(prompt._injected, question.initial) : await prompts2[type](question);
+ answers[name] = answer = await getFormattedAnswer(question, answer, true);
+ quit = await onSubmit(question, answer, answers);
+ } catch (err) {
+ quit = !await onCancel(question, answers);
+ }
+ if (quit)
+ return answers;
+ }
+ return answers;
+ }
+ function getInjectedAnswer(injected, deafultValue) {
+ const answer = injected.shift();
+ if (answer instanceof Error) {
+ throw answer;
+ }
+ return answer === void 0 ? deafultValue : answer;
+ }
+ function inject(answers) {
+ prompt._injected = (prompt._injected || []).concat(answers);
+ }
+ function override(answers) {
+ prompt._override = Object.assign({}, answers);
+ }
+ module2.exports = Object.assign(prompt, { prompt, prompts: prompts2, inject, override });
+ }
+});
+
+// ../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/index.js
+var require_prompts3 = __commonJS({
+ "../../node_modules/.pnpm/prompts@2.4.2/node_modules/prompts/index.js"(exports, module2) {
+ function isNodeLT(tar) {
+ tar = (Array.isArray(tar) ? tar : tar.split(".")).map(Number);
+ let i = 0, src = process.versions.node.split(".").map(Number);
+ for (; i < tar.length; i++) {
+ if (src[i] > tar[i])
+ return false;
+ if (tar[i] > src[i])
+ return true;
+ }
+ return false;
+ }
+ module2.exports = isNodeLT("8.6.0") ? require_dist() : require_lib();
+ }
+});
+
+// ../../node_modules/.pnpm/git-clone@0.2.0/node_modules/git-clone/private/util.js
+var require_util3 = __commonJS({
+ "../../node_modules/.pnpm/git-clone@0.2.0/node_modules/git-clone/private/util.js"(exports) {
+ function git(opts) {
+ return opts.git || "git";
+ }
+ exports.buildCloneCommand = function(repo, targetPath, opts) {
+ let args = ["clone"];
+ const userArgs = opts.args || [];
+ if (opts.shallow) {
+ if (userArgs.indexOf("--depth") >= 0) {
+ throw new Error("'--depth' cannot be specified when shallow is set to 'true'");
+ }
+ args.push("--depth", "1");
+ }
+ args = args.concat(userArgs);
+ args.push("--", repo, targetPath);
+ return [git(opts), args];
+ };
+ exports.buildCheckoutCommand = function(ref, opts) {
+ return [git(opts), ["checkout", ref]];
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/git-clone@0.2.0/node_modules/git-clone/private/impl.js
+var require_impl = __commonJS({
+ "../../node_modules/.pnpm/git-clone@0.2.0/node_modules/git-clone/private/impl.js"(exports, module2) {
+ var {
+ buildCloneCommand,
+ buildCheckoutCommand
+ } = require_util3();
+ var spawn = require("child_process").spawn;
+ module2.exports = function clone2(repo, targetPath, opts, onSuccess, onError) {
+ const [cmd, args] = buildCloneCommand(repo, targetPath, opts);
+ const proc = spawn(cmd, args);
+ proc.on("close", (status) => {
+ if (status == 0) {
+ if (opts.checkout) {
+ _checkout();
+ } else {
+ onSuccess();
+ }
+ } else {
+ onError(new Error("'git clone' failed with status " + status));
+ }
+ });
+ function _checkout() {
+ const [cmd2, args2] = buildCheckoutCommand(opts.checkout, opts);
+ const proc2 = spawn(cmd2, args2, { cwd: targetPath });
+ proc2.on("close", function(status) {
+ if (status == 0) {
+ onSuccess();
+ } else {
+ onError(new Error("'git checkout' failed with status " + status));
+ }
+ });
+ }
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/git-clone@0.2.0/node_modules/git-clone/promise.js
+var require_promise = __commonJS({
+ "../../node_modules/.pnpm/git-clone@0.2.0/node_modules/git-clone/promise.js"(exports, module2) {
+ var impl = require_impl();
+ module2.exports = function(repo, targetPath, opts) {
+ return new Promise((yes, no) => {
+ impl(repo, targetPath, opts || {}, yes, no);
+ });
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js
+var require_color_name = __commonJS({
+ "../../node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js"(exports, module2) {
+ "use strict";
+ module2.exports = {
+ "aliceblue": [240, 248, 255],
+ "antiquewhite": [250, 235, 215],
+ "aqua": [0, 255, 255],
+ "aquamarine": [127, 255, 212],
+ "azure": [240, 255, 255],
+ "beige": [245, 245, 220],
+ "bisque": [255, 228, 196],
+ "black": [0, 0, 0],
+ "blanchedalmond": [255, 235, 205],
+ "blue": [0, 0, 255],
+ "blueviolet": [138, 43, 226],
+ "brown": [165, 42, 42],
+ "burlywood": [222, 184, 135],
+ "cadetblue": [95, 158, 160],
+ "chartreuse": [127, 255, 0],
+ "chocolate": [210, 105, 30],
+ "coral": [255, 127, 80],
+ "cornflowerblue": [100, 149, 237],
+ "cornsilk": [255, 248, 220],
+ "crimson": [220, 20, 60],
+ "cyan": [0, 255, 255],
+ "darkblue": [0, 0, 139],
+ "darkcyan": [0, 139, 139],
+ "darkgoldenrod": [184, 134, 11],
+ "darkgray": [169, 169, 169],
+ "darkgreen": [0, 100, 0],
+ "darkgrey": [169, 169, 169],
+ "darkkhaki": [189, 183, 107],
+ "darkmagenta": [139, 0, 139],
+ "darkolivegreen": [85, 107, 47],
+ "darkorange": [255, 140, 0],
+ "darkorchid": [153, 50, 204],
+ "darkred": [139, 0, 0],
+ "darksalmon": [233, 150, 122],
+ "darkseagreen": [143, 188, 143],
+ "darkslateblue": [72, 61, 139],
+ "darkslategray": [47, 79, 79],
+ "darkslategrey": [47, 79, 79],
+ "darkturquoise": [0, 206, 209],
+ "darkviolet": [148, 0, 211],
+ "deeppink": [255, 20, 147],
+ "deepskyblue": [0, 191, 255],
+ "dimgray": [105, 105, 105],
+ "dimgrey": [105, 105, 105],
+ "dodgerblue": [30, 144, 255],
+ "firebrick": [178, 34, 34],
+ "floralwhite": [255, 250, 240],
+ "forestgreen": [34, 139, 34],
+ "fuchsia": [255, 0, 255],
+ "gainsboro": [220, 220, 220],
+ "ghostwhite": [248, 248, 255],
+ "gold": [255, 215, 0],
+ "goldenrod": [218, 165, 32],
+ "gray": [128, 128, 128],
+ "green": [0, 128, 0],
+ "greenyellow": [173, 255, 47],
+ "grey": [128, 128, 128],
+ "honeydew": [240, 255, 240],
+ "hotpink": [255, 105, 180],
+ "indianred": [205, 92, 92],
+ "indigo": [75, 0, 130],
+ "ivory": [255, 255, 240],
+ "khaki": [240, 230, 140],
+ "lavender": [230, 230, 250],
+ "lavenderblush": [255, 240, 245],
+ "lawngreen": [124, 252, 0],
+ "lemonchiffon": [255, 250, 205],
+ "lightblue": [173, 216, 230],
+ "lightcoral": [240, 128, 128],
+ "lightcyan": [224, 255, 255],
+ "lightgoldenrodyellow": [250, 250, 210],
+ "lightgray": [211, 211, 211],
+ "lightgreen": [144, 238, 144],
+ "lightgrey": [211, 211, 211],
+ "lightpink": [255, 182, 193],
+ "lightsalmon": [255, 160, 122],
+ "lightseagreen": [32, 178, 170],
+ "lightskyblue": [135, 206, 250],
+ "lightslategray": [119, 136, 153],
+ "lightslategrey": [119, 136, 153],
+ "lightsteelblue": [176, 196, 222],
+ "lightyellow": [255, 255, 224],
+ "lime": [0, 255, 0],
+ "limegreen": [50, 205, 50],
+ "linen": [250, 240, 230],
+ "magenta": [255, 0, 255],
+ "maroon": [128, 0, 0],
+ "mediumaquamarine": [102, 205, 170],
+ "mediumblue": [0, 0, 205],
+ "mediumorchid": [186, 85, 211],
+ "mediumpurple": [147, 112, 219],
+ "mediumseagreen": [60, 179, 113],
+ "mediumslateblue": [123, 104, 238],
+ "mediumspringgreen": [0, 250, 154],
+ "mediumturquoise": [72, 209, 204],
+ "mediumvioletred": [199, 21, 133],
+ "midnightblue": [25, 25, 112],
+ "mintcream": [245, 255, 250],
+ "mistyrose": [255, 228, 225],
+ "moccasin": [255, 228, 181],
+ "navajowhite": [255, 222, 173],
+ "navy": [0, 0, 128],
+ "oldlace": [253, 245, 230],
+ "olive": [128, 128, 0],
+ "olivedrab": [107, 142, 35],
+ "orange": [255, 165, 0],
+ "orangered": [255, 69, 0],
+ "orchid": [218, 112, 214],
+ "palegoldenrod": [238, 232, 170],
+ "palegreen": [152, 251, 152],
+ "paleturquoise": [175, 238, 238],
+ "palevioletred": [219, 112, 147],
+ "papayawhip": [255, 239, 213],
+ "peachpuff": [255, 218, 185],
+ "peru": [205, 133, 63],
+ "pink": [255, 192, 203],
+ "plum": [221, 160, 221],
+ "powderblue": [176, 224, 230],
+ "purple": [128, 0, 128],
+ "rebeccapurple": [102, 51, 153],
+ "red": [255, 0, 0],
+ "rosybrown": [188, 143, 143],
+ "royalblue": [65, 105, 225],
+ "saddlebrown": [139, 69, 19],
+ "salmon": [250, 128, 114],
+ "sandybrown": [244, 164, 96],
+ "seagreen": [46, 139, 87],
+ "seashell": [255, 245, 238],
+ "sienna": [160, 82, 45],
+ "silver": [192, 192, 192],
+ "skyblue": [135, 206, 235],
+ "slateblue": [106, 90, 205],
+ "slategray": [112, 128, 144],
+ "slategrey": [112, 128, 144],
+ "snow": [255, 250, 250],
+ "springgreen": [0, 255, 127],
+ "steelblue": [70, 130, 180],
+ "tan": [210, 180, 140],
+ "teal": [0, 128, 128],
+ "thistle": [216, 191, 216],
+ "tomato": [255, 99, 71],
+ "turquoise": [64, 224, 208],
+ "violet": [238, 130, 238],
+ "wheat": [245, 222, 179],
+ "white": [255, 255, 255],
+ "whitesmoke": [245, 245, 245],
+ "yellow": [255, 255, 0],
+ "yellowgreen": [154, 205, 50]
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/conversions.js
+var require_conversions = __commonJS({
+ "../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/conversions.js"(exports, module2) {
+ var cssKeywords = require_color_name();
+ var reverseKeywords = {};
+ for (const key of Object.keys(cssKeywords)) {
+ reverseKeywords[cssKeywords[key]] = key;
+ }
+ var convert = {
+ rgb: { channels: 3, labels: "rgb" },
+ hsl: { channels: 3, labels: "hsl" },
+ hsv: { channels: 3, labels: "hsv" },
+ hwb: { channels: 3, labels: "hwb" },
+ cmyk: { channels: 4, labels: "cmyk" },
+ xyz: { channels: 3, labels: "xyz" },
+ lab: { channels: 3, labels: "lab" },
+ lch: { channels: 3, labels: "lch" },
+ hex: { channels: 1, labels: ["hex"] },
+ keyword: { channels: 1, labels: ["keyword"] },
+ ansi16: { channels: 1, labels: ["ansi16"] },
+ ansi256: { channels: 1, labels: ["ansi256"] },
+ hcg: { channels: 3, labels: ["h", "c", "g"] },
+ apple: { channels: 3, labels: ["r16", "g16", "b16"] },
+ gray: { channels: 1, labels: ["gray"] }
+ };
+ module2.exports = convert;
+ for (const model of Object.keys(convert)) {
+ if (!("channels" in convert[model])) {
+ throw new Error("missing channels property: " + model);
+ }
+ if (!("labels" in convert[model])) {
+ throw new Error("missing channel labels property: " + model);
+ }
+ if (convert[model].labels.length !== convert[model].channels) {
+ throw new Error("channel and label counts mismatch: " + model);
+ }
+ const { channels, labels } = convert[model];
+ delete convert[model].channels;
+ delete convert[model].labels;
+ Object.defineProperty(convert[model], "channels", { value: channels });
+ Object.defineProperty(convert[model], "labels", { value: labels });
+ }
+ convert.rgb.hsl = function(rgb) {
+ const r = rgb[0] / 255;
+ const g = rgb[1] / 255;
+ const b = rgb[2] / 255;
+ const min = Math.min(r, g, b);
+ const max = Math.max(r, g, b);
+ const delta = max - min;
+ let h;
+ let s;
+ if (max === min) {
+ h = 0;
+ } else if (r === max) {
+ h = (g - b) / delta;
+ } else if (g === max) {
+ h = 2 + (b - r) / delta;
+ } else if (b === max) {
+ h = 4 + (r - g) / delta;
+ }
+ h = Math.min(h * 60, 360);
+ if (h < 0) {
+ h += 360;
+ }
+ const l = (min + max) / 2;
+ if (max === min) {
+ s = 0;
+ } else if (l <= 0.5) {
+ s = delta / (max + min);
+ } else {
+ s = delta / (2 - max - min);
+ }
+ return [h, s * 100, l * 100];
+ };
+ convert.rgb.hsv = function(rgb) {
+ let rdif;
+ let gdif;
+ let bdif;
+ let h;
+ let s;
+ const r = rgb[0] / 255;
+ const g = rgb[1] / 255;
+ const b = rgb[2] / 255;
+ const v = Math.max(r, g, b);
+ const diff = v - Math.min(r, g, b);
+ const diffc = function(c) {
+ return (v - c) / 6 / diff + 1 / 2;
+ };
+ if (diff === 0) {
+ h = 0;
+ s = 0;
+ } else {
+ s = diff / v;
+ rdif = diffc(r);
+ gdif = diffc(g);
+ bdif = diffc(b);
+ if (r === v) {
+ h = bdif - gdif;
+ } else if (g === v) {
+ h = 1 / 3 + rdif - bdif;
+ } else if (b === v) {
+ h = 2 / 3 + gdif - rdif;
+ }
+ if (h < 0) {
+ h += 1;
+ } else if (h > 1) {
+ h -= 1;
+ }
+ }
+ return [
+ h * 360,
+ s * 100,
+ v * 100
+ ];
+ };
+ convert.rgb.hwb = function(rgb) {
+ const r = rgb[0];
+ const g = rgb[1];
+ let b = rgb[2];
+ const h = convert.rgb.hsl(rgb)[0];
+ const w = 1 / 255 * Math.min(r, Math.min(g, b));
+ b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));
+ return [h, w * 100, b * 100];
+ };
+ convert.rgb.cmyk = function(rgb) {
+ const r = rgb[0] / 255;
+ const g = rgb[1] / 255;
+ const b = rgb[2] / 255;
+ const k = Math.min(1 - r, 1 - g, 1 - b);
+ const c = (1 - r - k) / (1 - k) || 0;
+ const m = (1 - g - k) / (1 - k) || 0;
+ const y = (1 - b - k) / (1 - k) || 0;
+ return [c * 100, m * 100, y * 100, k * 100];
+ };
+ function comparativeDistance(x, y) {
+ return (x[0] - y[0]) ** 2 + (x[1] - y[1]) ** 2 + (x[2] - y[2]) ** 2;
+ }
+ convert.rgb.keyword = function(rgb) {
+ const reversed = reverseKeywords[rgb];
+ if (reversed) {
+ return reversed;
+ }
+ let currentClosestDistance = Infinity;
+ let currentClosestKeyword;
+ for (const keyword of Object.keys(cssKeywords)) {
+ const value = cssKeywords[keyword];
+ const distance = comparativeDistance(rgb, value);
+ if (distance < currentClosestDistance) {
+ currentClosestDistance = distance;
+ currentClosestKeyword = keyword;
+ }
+ }
+ return currentClosestKeyword;
+ };
+ convert.keyword.rgb = function(keyword) {
+ return cssKeywords[keyword];
+ };
+ convert.rgb.xyz = function(rgb) {
+ let r = rgb[0] / 255;
+ let g = rgb[1] / 255;
+ let b = rgb[2] / 255;
+ r = r > 0.04045 ? ((r + 0.055) / 1.055) ** 2.4 : r / 12.92;
+ g = g > 0.04045 ? ((g + 0.055) / 1.055) ** 2.4 : g / 12.92;
+ b = b > 0.04045 ? ((b + 0.055) / 1.055) ** 2.4 : b / 12.92;
+ const x = r * 0.4124 + g * 0.3576 + b * 0.1805;
+ const y = r * 0.2126 + g * 0.7152 + b * 0.0722;
+ const z = r * 0.0193 + g * 0.1192 + b * 0.9505;
+ return [x * 100, y * 100, z * 100];
+ };
+ convert.rgb.lab = function(rgb) {
+ const xyz = convert.rgb.xyz(rgb);
+ let x = xyz[0];
+ let y = xyz[1];
+ let z = xyz[2];
+ x /= 95.047;
+ y /= 100;
+ z /= 108.883;
+ x = x > 8856e-6 ? x ** (1 / 3) : 7.787 * x + 16 / 116;
+ y = y > 8856e-6 ? y ** (1 / 3) : 7.787 * y + 16 / 116;
+ z = z > 8856e-6 ? z ** (1 / 3) : 7.787 * z + 16 / 116;
+ const l = 116 * y - 16;
+ const a = 500 * (x - y);
+ const b = 200 * (y - z);
+ return [l, a, b];
+ };
+ convert.hsl.rgb = function(hsl) {
+ const h = hsl[0] / 360;
+ const s = hsl[1] / 100;
+ const l = hsl[2] / 100;
+ let t2;
+ let t3;
+ let val;
+ if (s === 0) {
+ val = l * 255;
+ return [val, val, val];
+ }
+ if (l < 0.5) {
+ t2 = l * (1 + s);
+ } else {
+ t2 = l + s - l * s;
+ }
+ const t1 = 2 * l - t2;
+ const rgb = [0, 0, 0];
+ for (let i = 0; i < 3; i++) {
+ t3 = h + 1 / 3 * -(i - 1);
+ if (t3 < 0) {
+ t3++;
+ }
+ if (t3 > 1) {
+ t3--;
+ }
+ if (6 * t3 < 1) {
+ val = t1 + (t2 - t1) * 6 * t3;
+ } else if (2 * t3 < 1) {
+ val = t2;
+ } else if (3 * t3 < 2) {
+ val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
+ } else {
+ val = t1;
+ }
+ rgb[i] = val * 255;
+ }
+ return rgb;
+ };
+ convert.hsl.hsv = function(hsl) {
+ const h = hsl[0];
+ let s = hsl[1] / 100;
+ let l = hsl[2] / 100;
+ let smin = s;
+ const lmin = Math.max(l, 0.01);
+ l *= 2;
+ s *= l <= 1 ? l : 2 - l;
+ smin *= lmin <= 1 ? lmin : 2 - lmin;
+ const v = (l + s) / 2;
+ const sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s);
+ return [h, sv * 100, v * 100];
+ };
+ convert.hsv.rgb = function(hsv) {
+ const h = hsv[0] / 60;
+ const s = hsv[1] / 100;
+ let v = hsv[2] / 100;
+ const hi = Math.floor(h) % 6;
+ const f = h - Math.floor(h);
+ const p = 255 * v * (1 - s);
+ const q = 255 * v * (1 - s * f);
+ const t = 255 * v * (1 - s * (1 - f));
+ v *= 255;
+ switch (hi) {
+ case 0:
+ return [v, t, p];
+ case 1:
+ return [q, v, p];
+ case 2:
+ return [p, v, t];
+ case 3:
+ return [p, q, v];
+ case 4:
+ return [t, p, v];
+ case 5:
+ return [v, p, q];
+ }
+ };
+ convert.hsv.hsl = function(hsv) {
+ const h = hsv[0];
+ const s = hsv[1] / 100;
+ const v = hsv[2] / 100;
+ const vmin = Math.max(v, 0.01);
+ let sl;
+ let l;
+ l = (2 - s) * v;
+ const lmin = (2 - s) * vmin;
+ sl = s * vmin;
+ sl /= lmin <= 1 ? lmin : 2 - lmin;
+ sl = sl || 0;
+ l /= 2;
+ return [h, sl * 100, l * 100];
+ };
+ convert.hwb.rgb = function(hwb) {
+ const h = hwb[0] / 360;
+ let wh = hwb[1] / 100;
+ let bl = hwb[2] / 100;
+ const ratio = wh + bl;
+ let f;
+ if (ratio > 1) {
+ wh /= ratio;
+ bl /= ratio;
+ }
+ const i = Math.floor(6 * h);
+ const v = 1 - bl;
+ f = 6 * h - i;
+ if ((i & 1) !== 0) {
+ f = 1 - f;
+ }
+ const n = wh + f * (v - wh);
+ let r;
+ let g;
+ let b;
+ switch (i) {
+ default:
+ case 6:
+ case 0:
+ r = v;
+ g = n;
+ b = wh;
+ break;
+ case 1:
+ r = n;
+ g = v;
+ b = wh;
+ break;
+ case 2:
+ r = wh;
+ g = v;
+ b = n;
+ break;
+ case 3:
+ r = wh;
+ g = n;
+ b = v;
+ break;
+ case 4:
+ r = n;
+ g = wh;
+ b = v;
+ break;
+ case 5:
+ r = v;
+ g = wh;
+ b = n;
+ break;
+ }
+ return [r * 255, g * 255, b * 255];
+ };
+ convert.cmyk.rgb = function(cmyk) {
+ const c = cmyk[0] / 100;
+ const m = cmyk[1] / 100;
+ const y = cmyk[2] / 100;
+ const k = cmyk[3] / 100;
+ const r = 1 - Math.min(1, c * (1 - k) + k);
+ const g = 1 - Math.min(1, m * (1 - k) + k);
+ const b = 1 - Math.min(1, y * (1 - k) + k);
+ return [r * 255, g * 255, b * 255];
+ };
+ convert.xyz.rgb = function(xyz) {
+ const x = xyz[0] / 100;
+ const y = xyz[1] / 100;
+ const z = xyz[2] / 100;
+ let r;
+ let g;
+ let b;
+ r = x * 3.2406 + y * -1.5372 + z * -0.4986;
+ g = x * -0.9689 + y * 1.8758 + z * 0.0415;
+ b = x * 0.0557 + y * -0.204 + z * 1.057;
+ r = r > 31308e-7 ? 1.055 * r ** (1 / 2.4) - 0.055 : r * 12.92;
+ g = g > 31308e-7 ? 1.055 * g ** (1 / 2.4) - 0.055 : g * 12.92;
+ b = b > 31308e-7 ? 1.055 * b ** (1 / 2.4) - 0.055 : b * 12.92;
+ r = Math.min(Math.max(0, r), 1);
+ g = Math.min(Math.max(0, g), 1);
+ b = Math.min(Math.max(0, b), 1);
+ return [r * 255, g * 255, b * 255];
+ };
+ convert.xyz.lab = function(xyz) {
+ let x = xyz[0];
+ let y = xyz[1];
+ let z = xyz[2];
+ x /= 95.047;
+ y /= 100;
+ z /= 108.883;
+ x = x > 8856e-6 ? x ** (1 / 3) : 7.787 * x + 16 / 116;
+ y = y > 8856e-6 ? y ** (1 / 3) : 7.787 * y + 16 / 116;
+ z = z > 8856e-6 ? z ** (1 / 3) : 7.787 * z + 16 / 116;
+ const l = 116 * y - 16;
+ const a = 500 * (x - y);
+ const b = 200 * (y - z);
+ return [l, a, b];
+ };
+ convert.lab.xyz = function(lab) {
+ const l = lab[0];
+ const a = lab[1];
+ const b = lab[2];
+ let x;
+ let y;
+ let z;
+ y = (l + 16) / 116;
+ x = a / 500 + y;
+ z = y - b / 200;
+ const y2 = y ** 3;
+ const x2 = x ** 3;
+ const z2 = z ** 3;
+ y = y2 > 8856e-6 ? y2 : (y - 16 / 116) / 7.787;
+ x = x2 > 8856e-6 ? x2 : (x - 16 / 116) / 7.787;
+ z = z2 > 8856e-6 ? z2 : (z - 16 / 116) / 7.787;
+ x *= 95.047;
+ y *= 100;
+ z *= 108.883;
+ return [x, y, z];
+ };
+ convert.lab.lch = function(lab) {
+ const l = lab[0];
+ const a = lab[1];
+ const b = lab[2];
+ let h;
+ const hr = Math.atan2(b, a);
+ h = hr * 360 / 2 / Math.PI;
+ if (h < 0) {
+ h += 360;
+ }
+ const c = Math.sqrt(a * a + b * b);
+ return [l, c, h];
+ };
+ convert.lch.lab = function(lch) {
+ const l = lch[0];
+ const c = lch[1];
+ const h = lch[2];
+ const hr = h / 360 * 2 * Math.PI;
+ const a = c * Math.cos(hr);
+ const b = c * Math.sin(hr);
+ return [l, a, b];
+ };
+ convert.rgb.ansi16 = function(args, saturation = null) {
+ const [r, g, b] = args;
+ let value = saturation === null ? convert.rgb.hsv(args)[2] : saturation;
+ value = Math.round(value / 50);
+ if (value === 0) {
+ return 30;
+ }
+ let ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255));
+ if (value === 2) {
+ ansi += 60;
+ }
+ return ansi;
+ };
+ convert.hsv.ansi16 = function(args) {
+ return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);
+ };
+ convert.rgb.ansi256 = function(args) {
+ const r = args[0];
+ const g = args[1];
+ const b = args[2];
+ if (r === g && g === b) {
+ if (r < 8) {
+ return 16;
+ }
+ if (r > 248) {
+ return 231;
+ }
+ return Math.round((r - 8) / 247 * 24) + 232;
+ }
+ const ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5);
+ return ansi;
+ };
+ convert.ansi16.rgb = function(args) {
+ let color = args % 10;
+ if (color === 0 || color === 7) {
+ if (args > 50) {
+ color += 3.5;
+ }
+ color = color / 10.5 * 255;
+ return [color, color, color];
+ }
+ const mult = (~~(args > 50) + 1) * 0.5;
+ const r = (color & 1) * mult * 255;
+ const g = (color >> 1 & 1) * mult * 255;
+ const b = (color >> 2 & 1) * mult * 255;
+ return [r, g, b];
+ };
+ convert.ansi256.rgb = function(args) {
+ if (args >= 232) {
+ const c = (args - 232) * 10 + 8;
+ return [c, c, c];
+ }
+ args -= 16;
+ let rem;
+ const r = Math.floor(args / 36) / 5 * 255;
+ const g = Math.floor((rem = args % 36) / 6) / 5 * 255;
+ const b = rem % 6 / 5 * 255;
+ return [r, g, b];
+ };
+ convert.rgb.hex = function(args) {
+ const integer = ((Math.round(args[0]) & 255) << 16) + ((Math.round(args[1]) & 255) << 8) + (Math.round(args[2]) & 255);
+ const string = integer.toString(16).toUpperCase();
+ return "000000".substring(string.length) + string;
+ };
+ convert.hex.rgb = function(args) {
+ const match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
+ if (!match) {
+ return [0, 0, 0];
+ }
+ let colorString = match[0];
+ if (match[0].length === 3) {
+ colorString = colorString.split("").map((char) => {
+ return char + char;
+ }).join("");
+ }
+ const integer = parseInt(colorString, 16);
+ const r = integer >> 16 & 255;
+ const g = integer >> 8 & 255;
+ const b = integer & 255;
+ return [r, g, b];
+ };
+ convert.rgb.hcg = function(rgb) {
+ const r = rgb[0] / 255;
+ const g = rgb[1] / 255;
+ const b = rgb[2] / 255;
+ const max = Math.max(Math.max(r, g), b);
+ const min = Math.min(Math.min(r, g), b);
+ const chroma = max - min;
+ let grayscale;
+ let hue;
+ if (chroma < 1) {
+ grayscale = min / (1 - chroma);
+ } else {
+ grayscale = 0;
+ }
+ if (chroma <= 0) {
+ hue = 0;
+ } else if (max === r) {
+ hue = (g - b) / chroma % 6;
+ } else if (max === g) {
+ hue = 2 + (b - r) / chroma;
+ } else {
+ hue = 4 + (r - g) / chroma;
+ }
+ hue /= 6;
+ hue %= 1;
+ return [hue * 360, chroma * 100, grayscale * 100];
+ };
+ convert.hsl.hcg = function(hsl) {
+ const s = hsl[1] / 100;
+ const l = hsl[2] / 100;
+ const c = l < 0.5 ? 2 * s * l : 2 * s * (1 - l);
+ let f = 0;
+ if (c < 1) {
+ f = (l - 0.5 * c) / (1 - c);
+ }
+ return [hsl[0], c * 100, f * 100];
+ };
+ convert.hsv.hcg = function(hsv) {
+ const s = hsv[1] / 100;
+ const v = hsv[2] / 100;
+ const c = s * v;
+ let f = 0;
+ if (c < 1) {
+ f = (v - c) / (1 - c);
+ }
+ return [hsv[0], c * 100, f * 100];
+ };
+ convert.hcg.rgb = function(hcg) {
+ const h = hcg[0] / 360;
+ const c = hcg[1] / 100;
+ const g = hcg[2] / 100;
+ if (c === 0) {
+ return [g * 255, g * 255, g * 255];
+ }
+ const pure = [0, 0, 0];
+ const hi = h % 1 * 6;
+ const v = hi % 1;
+ const w = 1 - v;
+ let mg = 0;
+ switch (Math.floor(hi)) {
+ case 0:
+ pure[0] = 1;
+ pure[1] = v;
+ pure[2] = 0;
+ break;
+ case 1:
+ pure[0] = w;
+ pure[1] = 1;
+ pure[2] = 0;
+ break;
+ case 2:
+ pure[0] = 0;
+ pure[1] = 1;
+ pure[2] = v;
+ break;
+ case 3:
+ pure[0] = 0;
+ pure[1] = w;
+ pure[2] = 1;
+ break;
+ case 4:
+ pure[0] = v;
+ pure[1] = 0;
+ pure[2] = 1;
+ break;
+ default:
+ pure[0] = 1;
+ pure[1] = 0;
+ pure[2] = w;
+ }
+ mg = (1 - c) * g;
+ return [
+ (c * pure[0] + mg) * 255,
+ (c * pure[1] + mg) * 255,
+ (c * pure[2] + mg) * 255
+ ];
+ };
+ convert.hcg.hsv = function(hcg) {
+ const c = hcg[1] / 100;
+ const g = hcg[2] / 100;
+ const v = c + g * (1 - c);
+ let f = 0;
+ if (v > 0) {
+ f = c / v;
+ }
+ return [hcg[0], f * 100, v * 100];
+ };
+ convert.hcg.hsl = function(hcg) {
+ const c = hcg[1] / 100;
+ const g = hcg[2] / 100;
+ const l = g * (1 - c) + 0.5 * c;
+ let s = 0;
+ if (l > 0 && l < 0.5) {
+ s = c / (2 * l);
+ } else if (l >= 0.5 && l < 1) {
+ s = c / (2 * (1 - l));
+ }
+ return [hcg[0], s * 100, l * 100];
+ };
+ convert.hcg.hwb = function(hcg) {
+ const c = hcg[1] / 100;
+ const g = hcg[2] / 100;
+ const v = c + g * (1 - c);
+ return [hcg[0], (v - c) * 100, (1 - v) * 100];
+ };
+ convert.hwb.hcg = function(hwb) {
+ const w = hwb[1] / 100;
+ const b = hwb[2] / 100;
+ const v = 1 - b;
+ const c = v - w;
+ let g = 0;
+ if (c < 1) {
+ g = (v - c) / (1 - c);
+ }
+ return [hwb[0], c * 100, g * 100];
+ };
+ convert.apple.rgb = function(apple) {
+ return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255];
+ };
+ convert.rgb.apple = function(rgb) {
+ return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535];
+ };
+ convert.gray.rgb = function(args) {
+ return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];
+ };
+ convert.gray.hsl = function(args) {
+ return [0, 0, args[0]];
+ };
+ convert.gray.hsv = convert.gray.hsl;
+ convert.gray.hwb = function(gray2) {
+ return [0, 100, gray2[0]];
+ };
+ convert.gray.cmyk = function(gray2) {
+ return [0, 0, 0, gray2[0]];
+ };
+ convert.gray.lab = function(gray2) {
+ return [gray2[0], 0, 0];
+ };
+ convert.gray.hex = function(gray2) {
+ const val = Math.round(gray2[0] / 100 * 255) & 255;
+ const integer = (val << 16) + (val << 8) + val;
+ const string = integer.toString(16).toUpperCase();
+ return "000000".substring(string.length) + string;
+ };
+ convert.rgb.gray = function(rgb) {
+ const val = (rgb[0] + rgb[1] + rgb[2]) / 3;
+ return [val / 255 * 100];
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/route.js
+var require_route = __commonJS({
+ "../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/route.js"(exports, module2) {
+ var conversions = require_conversions();
+ function buildGraph() {
+ const graph = {};
+ const models = Object.keys(conversions);
+ for (let len = models.length, i = 0; i < len; i++) {
+ graph[models[i]] = {
+ distance: -1,
+ parent: null
+ };
+ }
+ return graph;
+ }
+ function deriveBFS(fromModel) {
+ const graph = buildGraph();
+ const queue = [fromModel];
+ graph[fromModel].distance = 0;
+ while (queue.length) {
+ const current = queue.pop();
+ const adjacents = Object.keys(conversions[current]);
+ for (let len = adjacents.length, i = 0; i < len; i++) {
+ const adjacent = adjacents[i];
+ const node = graph[adjacent];
+ if (node.distance === -1) {
+ node.distance = graph[current].distance + 1;
+ node.parent = current;
+ queue.unshift(adjacent);
+ }
+ }
+ }
+ return graph;
+ }
+ function link(from, to) {
+ return function(args) {
+ return to(from(args));
+ };
+ }
+ function wrapConversion(toModel, graph) {
+ const path3 = [graph[toModel].parent, toModel];
+ let fn = conversions[graph[toModel].parent][toModel];
+ let cur = graph[toModel].parent;
+ while (graph[cur].parent) {
+ path3.unshift(graph[cur].parent);
+ fn = link(conversions[graph[cur].parent][cur], fn);
+ cur = graph[cur].parent;
+ }
+ fn.conversion = path3;
+ return fn;
+ }
+ module2.exports = function(fromModel) {
+ const graph = deriveBFS(fromModel);
+ const conversion = {};
+ const models = Object.keys(graph);
+ for (let len = models.length, i = 0; i < len; i++) {
+ const toModel = models[i];
+ const node = graph[toModel];
+ if (node.parent === null) {
+ continue;
+ }
+ conversion[toModel] = wrapConversion(toModel, graph);
+ }
+ return conversion;
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/index.js
+var require_color_convert = __commonJS({
+ "../../node_modules/.pnpm/color-convert@2.0.1/node_modules/color-convert/index.js"(exports, module2) {
+ var conversions = require_conversions();
+ var route = require_route();
+ var convert = {};
+ var models = Object.keys(conversions);
+ function wrapRaw(fn) {
+ const wrappedFn = function(...args) {
+ const arg0 = args[0];
+ if (arg0 === void 0 || arg0 === null) {
+ return arg0;
+ }
+ if (arg0.length > 1) {
+ args = arg0;
+ }
+ return fn(args);
+ };
+ if ("conversion" in fn) {
+ wrappedFn.conversion = fn.conversion;
+ }
+ return wrappedFn;
+ }
+ function wrapRounded(fn) {
+ const wrappedFn = function(...args) {
+ const arg0 = args[0];
+ if (arg0 === void 0 || arg0 === null) {
+ return arg0;
+ }
+ if (arg0.length > 1) {
+ args = arg0;
+ }
+ const result = fn(args);
+ if (typeof result === "object") {
+ for (let len = result.length, i = 0; i < len; i++) {
+ result[i] = Math.round(result[i]);
+ }
+ }
+ return result;
+ };
+ if ("conversion" in fn) {
+ wrappedFn.conversion = fn.conversion;
+ }
+ return wrappedFn;
+ }
+ models.forEach((fromModel) => {
+ convert[fromModel] = {};
+ Object.defineProperty(convert[fromModel], "channels", { value: conversions[fromModel].channels });
+ Object.defineProperty(convert[fromModel], "labels", { value: conversions[fromModel].labels });
+ const routes = route(fromModel);
+ const routeModels = Object.keys(routes);
+ routeModels.forEach((toModel) => {
+ const fn = routes[toModel];
+ convert[fromModel][toModel] = wrapRounded(fn);
+ convert[fromModel][toModel].raw = wrapRaw(fn);
+ });
+ });
+ module2.exports = convert;
+ }
+});
+
+// ../../node_modules/.pnpm/ansi-styles@4.3.0/node_modules/ansi-styles/index.js
+var require_ansi_styles = __commonJS({
+ "../../node_modules/.pnpm/ansi-styles@4.3.0/node_modules/ansi-styles/index.js"(exports, module2) {
+ "use strict";
+ var wrapAnsi16 = (fn, offset) => (...args) => {
+ const code = fn(...args);
+ return `\x1B[${code + offset}m`;
+ };
+ var wrapAnsi256 = (fn, offset) => (...args) => {
+ const code = fn(...args);
+ return `\x1B[${38 + offset};5;${code}m`;
+ };
+ var wrapAnsi16m = (fn, offset) => (...args) => {
+ const rgb = fn(...args);
+ return `\x1B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;
+ };
+ var ansi2ansi = (n) => n;
+ var rgb2rgb = (r, g, b) => [r, g, b];
+ var setLazyProperty = (object, property, get) => {
+ Object.defineProperty(object, property, {
+ get: () => {
+ const value = get();
+ Object.defineProperty(object, property, {
+ value,
+ enumerable: true,
+ configurable: true
+ });
+ return value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ };
+ var colorConvert;
+ var makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {
+ if (colorConvert === void 0) {
+ colorConvert = require_color_convert();
+ }
+ const offset = isBackground ? 10 : 0;
+ const styles = {};
+ for (const [sourceSpace, suite] of Object.entries(colorConvert)) {
+ const name = sourceSpace === "ansi16" ? "ansi" : sourceSpace;
+ if (sourceSpace === targetSpace) {
+ styles[name] = wrap(identity, offset);
+ } else if (typeof suite === "object") {
+ styles[name] = wrap(suite[targetSpace], offset);
+ }
+ }
+ return styles;
+ };
+ function assembleStyles() {
+ const codes = /* @__PURE__ */ new Map();
+ const styles = {
+ modifier: {
+ reset: [0, 0],
+ bold: [1, 22],
+ dim: [2, 22],
+ italic: [3, 23],
+ underline: [4, 24],
+ 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],
+ 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],
+ bgRedBright: [101, 49],
+ bgGreenBright: [102, 49],
+ bgYellowBright: [103, 49],
+ bgBlueBright: [104, 49],
+ bgMagentaBright: [105, 49],
+ bgCyanBright: [106, 49],
+ bgWhiteBright: [107, 49]
+ }
+ };
+ styles.color.gray = styles.color.blackBright;
+ styles.bgColor.bgGray = styles.bgColor.bgBlackBright;
+ styles.color.grey = styles.color.blackBright;
+ styles.bgColor.bgGrey = styles.bgColor.bgBlackBright;
+ for (const [groupName, group] of Object.entries(styles)) {
+ for (const [styleName, style] of Object.entries(group)) {
+ styles[styleName] = {
+ open: `\x1B[${style[0]}m`,
+ close: `\x1B[${style[1]}m`
+ };
+ group[styleName] = styles[styleName];
+ codes.set(style[0], style[1]);
+ }
+ Object.defineProperty(styles, groupName, {
+ value: group,
+ enumerable: false
+ });
+ }
+ Object.defineProperty(styles, "codes", {
+ value: codes,
+ enumerable: false
+ });
+ styles.color.close = "\x1B[39m";
+ styles.bgColor.close = "\x1B[49m";
+ setLazyProperty(styles.color, "ansi", () => makeDynamicStyles(wrapAnsi16, "ansi16", ansi2ansi, false));
+ setLazyProperty(styles.color, "ansi256", () => makeDynamicStyles(wrapAnsi256, "ansi256", ansi2ansi, false));
+ setLazyProperty(styles.color, "ansi16m", () => makeDynamicStyles(wrapAnsi16m, "rgb", rgb2rgb, false));
+ setLazyProperty(styles.bgColor, "ansi", () => makeDynamicStyles(wrapAnsi16, "ansi16", ansi2ansi, true));
+ setLazyProperty(styles.bgColor, "ansi256", () => makeDynamicStyles(wrapAnsi256, "ansi256", ansi2ansi, true));
+ setLazyProperty(styles.bgColor, "ansi16m", () => makeDynamicStyles(wrapAnsi16m, "rgb", rgb2rgb, true));
+ return styles;
+ }
+ Object.defineProperty(module2, "exports", {
+ enumerable: true,
+ get: assembleStyles
+ });
+ }
+});
+
+// ../../node_modules/.pnpm/has-flag@4.0.0/node_modules/has-flag/index.js
+var require_has_flag = __commonJS({
+ "../../node_modules/.pnpm/has-flag@4.0.0/node_modules/has-flag/index.js"(exports, module2) {
+ "use strict";
+ module2.exports = (flag, argv = process.argv) => {
+ const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
+ const position = argv.indexOf(prefix + flag);
+ const terminatorPosition = argv.indexOf("--");
+ return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/supports-color@7.2.0/node_modules/supports-color/index.js
+var require_supports_color = __commonJS({
+ "../../node_modules/.pnpm/supports-color@7.2.0/node_modules/supports-color/index.js"(exports, module2) {
+ "use strict";
+ var os = require("os");
+ var tty = require("tty");
+ var hasFlag = require_has_flag();
+ var { env } = process;
+ var forceColor;
+ if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) {
+ forceColor = 0;
+ } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) {
+ forceColor = 1;
+ }
+ if ("FORCE_COLOR" in env) {
+ if (env.FORCE_COLOR === "true") {
+ forceColor = 1;
+ } else if (env.FORCE_COLOR === "false") {
+ forceColor = 0;
+ } else {
+ forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);
+ }
+ }
+ function translateLevel(level) {
+ if (level === 0) {
+ return false;
+ }
+ return {
+ level,
+ hasBasic: true,
+ has256: level >= 2,
+ has16m: level >= 3
+ };
+ }
+ function supportsColor(haveStream, streamIsTTY) {
+ if (forceColor === 0) {
+ return 0;
+ }
+ if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) {
+ return 3;
+ }
+ if (hasFlag("color=256")) {
+ return 2;
+ }
+ if (haveStream && !streamIsTTY && forceColor === void 0) {
+ return 0;
+ }
+ const min = forceColor || 0;
+ if (env.TERM === "dumb") {
+ return min;
+ }
+ if (process.platform === "win32") {
+ const osRelease = os.release().split(".");
+ if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
+ return Number(osRelease[2]) >= 14931 ? 3 : 2;
+ }
+ return 1;
+ }
+ if ("CI" in env) {
+ if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "GITHUB_ACTIONS", "BUILDKITE"].some((sign) => sign in env) || env.CI_NAME === "codeship") {
+ return 1;
+ }
+ return min;
+ }
+ if ("TEAMCITY_VERSION" in env) {
+ return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
+ }
+ if (env.COLORTERM === "truecolor") {
+ return 3;
+ }
+ if ("TERM_PROGRAM" in env) {
+ const version = parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
+ switch (env.TERM_PROGRAM) {
+ case "iTerm.app":
+ return version >= 3 ? 3 : 2;
+ case "Apple_Terminal":
+ return 2;
+ }
+ }
+ if (/-256(color)?$/i.test(env.TERM)) {
+ return 2;
+ }
+ if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
+ return 1;
+ }
+ if ("COLORTERM" in env) {
+ return 1;
+ }
+ return min;
+ }
+ function getSupportLevel(stream) {
+ const level = supportsColor(stream, stream && stream.isTTY);
+ return translateLevel(level);
+ }
+ module2.exports = {
+ supportsColor: getSupportLevel,
+ stdout: translateLevel(supportsColor(true, tty.isatty(1))),
+ stderr: translateLevel(supportsColor(true, tty.isatty(2)))
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/chalk@4.1.2/node_modules/chalk/source/util.js
+var require_util4 = __commonJS({
+ "../../node_modules/.pnpm/chalk@4.1.2/node_modules/chalk/source/util.js"(exports, module2) {
+ "use strict";
+ var stringReplaceAll = (string, substring, replacer) => {
+ let index = string.indexOf(substring);
+ if (index === -1) {
+ return string;
+ }
+ const substringLength = substring.length;
+ let endIndex = 0;
+ let returnValue = "";
+ do {
+ returnValue += string.substr(endIndex, index - endIndex) + substring + replacer;
+ endIndex = index + substringLength;
+ index = string.indexOf(substring, endIndex);
+ } while (index !== -1);
+ returnValue += string.substr(endIndex);
+ return returnValue;
+ };
+ var stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {
+ let endIndex = 0;
+ let returnValue = "";
+ do {
+ const gotCR = string[index - 1] === "\r";
+ returnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? "\r\n" : "\n") + postfix;
+ endIndex = index + 1;
+ index = string.indexOf("\n", endIndex);
+ } while (index !== -1);
+ returnValue += string.substr(endIndex);
+ return returnValue;
+ };
+ module2.exports = {
+ stringReplaceAll,
+ stringEncaseCRLFWithFirstIndex
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/chalk@4.1.2/node_modules/chalk/source/templates.js
+var require_templates = __commonJS({
+ "../../node_modules/.pnpm/chalk@4.1.2/node_modules/chalk/source/templates.js"(exports, module2) {
+ "use strict";
+ var TEMPLATE_REGEX = /(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi;
+ var STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g;
+ var STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/;
+ var ESCAPE_REGEX = /\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi;
+ var ESCAPES = /* @__PURE__ */ new Map([
+ ["n", "\n"],
+ ["r", "\r"],
+ ["t", " "],
+ ["b", "\b"],
+ ["f", "\f"],
+ ["v", "\v"],
+ ["0", "\0"],
+ ["\\", "\\"],
+ ["e", "\x1B"],
+ ["a", "\x07"]
+ ]);
+ function unescape(c) {
+ const u = c[0] === "u";
+ const bracket = c[1] === "{";
+ if (u && !bracket && c.length === 5 || c[0] === "x" && c.length === 3) {
+ return String.fromCharCode(parseInt(c.slice(1), 16));
+ }
+ if (u && bracket) {
+ return String.fromCodePoint(parseInt(c.slice(2, -1), 16));
+ }
+ return ESCAPES.get(c) || c;
+ }
+ function parseArguments(name, arguments_) {
+ const results = [];
+ const chunks = arguments_.trim().split(/\s*,\s*/g);
+ let matches;
+ for (const chunk of chunks) {
+ const number = Number(chunk);
+ if (!Number.isNaN(number)) {
+ results.push(number);
+ } else if (matches = chunk.match(STRING_REGEX)) {
+ results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));
+ } else {
+ throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);
+ }
+ }
+ return results;
+ }
+ function parseStyle(style) {
+ STYLE_REGEX.lastIndex = 0;
+ const results = [];
+ let matches;
+ while ((matches = STYLE_REGEX.exec(style)) !== null) {
+ const name = matches[1];
+ if (matches[2]) {
+ const args = parseArguments(name, matches[2]);
+ results.push([name].concat(args));
+ } else {
+ results.push([name]);
+ }
+ }
+ return results;
+ }
+ function buildStyle(chalk, styles) {
+ const enabled2 = {};
+ for (const layer of styles) {
+ for (const style of layer.styles) {
+ enabled2[style[0]] = layer.inverse ? null : style.slice(1);
+ }
+ }
+ let current = chalk;
+ for (const [styleName, styles2] of Object.entries(enabled2)) {
+ if (!Array.isArray(styles2)) {
+ continue;
+ }
+ if (!(styleName in current)) {
+ throw new Error(`Unknown Chalk style: ${styleName}`);
+ }
+ current = styles2.length > 0 ? current[styleName](...styles2) : current[styleName];
+ }
+ return current;
+ }
+ module2.exports = (chalk, temporary) => {
+ const styles = [];
+ const chunks = [];
+ let chunk = [];
+ temporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse2, style, close, character) => {
+ if (escapeCharacter) {
+ chunk.push(unescape(escapeCharacter));
+ } else if (style) {
+ const string = chunk.join("");
+ chunk = [];
+ chunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));
+ styles.push({ inverse: inverse2, styles: parseStyle(style) });
+ } else if (close) {
+ if (styles.length === 0) {
+ throw new Error("Found extraneous } in Chalk template literal");
+ }
+ chunks.push(buildStyle(chalk, styles)(chunk.join("")));
+ chunk = [];
+ styles.pop();
+ } else {
+ chunk.push(character);
+ }
+ });
+ chunks.push(chunk.join(""));
+ if (styles.length > 0) {
+ const errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? "" : "s"} (\`}\`)`;
+ throw new Error(errMessage);
+ }
+ return chunks.join("");
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/chalk@4.1.2/node_modules/chalk/source/index.js
+var require_source = __commonJS({
+ "../../node_modules/.pnpm/chalk@4.1.2/node_modules/chalk/source/index.js"(exports, module2) {
+ "use strict";
+ var ansiStyles = require_ansi_styles();
+ var { stdout: stdoutColor, stderr: stderrColor } = require_supports_color();
+ var {
+ stringReplaceAll,
+ stringEncaseCRLFWithFirstIndex
+ } = require_util4();
+ var { isArray } = Array;
+ var levelMapping = [
+ "ansi",
+ "ansi",
+ "ansi256",
+ "ansi16m"
+ ];
+ var styles = /* @__PURE__ */ Object.create(null);
+ var applyOptions = (object, options2 = {}) => {
+ if (options2.level && !(Number.isInteger(options2.level) && options2.level >= 0 && options2.level <= 3)) {
+ throw new Error("The `level` option should be an integer from 0 to 3");
+ }
+ const colorLevel = stdoutColor ? stdoutColor.level : 0;
+ object.level = options2.level === void 0 ? colorLevel : options2.level;
+ };
+ var ChalkClass = class {
+ constructor(options2) {
+ return chalkFactory(options2);
+ }
+ };
+ var chalkFactory = (options2) => {
+ const chalk2 = {};
+ applyOptions(chalk2, options2);
+ chalk2.template = (...arguments_) => chalkTag(chalk2.template, ...arguments_);
+ Object.setPrototypeOf(chalk2, Chalk.prototype);
+ Object.setPrototypeOf(chalk2.template, chalk2);
+ chalk2.template.constructor = () => {
+ throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.");
+ };
+ chalk2.template.Instance = ChalkClass;
+ return chalk2.template;
+ };
+ function Chalk(options2) {
+ return chalkFactory(options2);
+ }
+ for (const [styleName, style] of Object.entries(ansiStyles)) {
+ styles[styleName] = {
+ get() {
+ const builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);
+ Object.defineProperty(this, styleName, { value: builder });
+ return builder;
+ }
+ };
+ }
+ styles.visible = {
+ get() {
+ const builder = createBuilder(this, this._styler, true);
+ Object.defineProperty(this, "visible", { value: builder });
+ return builder;
+ }
+ };
+ var usedModels = ["rgb", "hex", "keyword", "hsl", "hsv", "hwb", "ansi", "ansi256"];
+ for (const model of usedModels) {
+ styles[model] = {
+ get() {
+ const { level } = this;
+ return function(...arguments_) {
+ const styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);
+ return createBuilder(this, styler, this._isEmpty);
+ };
+ }
+ };
+ }
+ for (const model of usedModels) {
+ const bgModel = "bg" + model[0].toUpperCase() + model.slice(1);
+ styles[bgModel] = {
+ get() {
+ const { level } = this;
+ return function(...arguments_) {
+ const styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);
+ return createBuilder(this, styler, this._isEmpty);
+ };
+ }
+ };
+ }
+ var proto = Object.defineProperties(() => {
+ }, {
+ ...styles,
+ level: {
+ enumerable: true,
+ get() {
+ return this._generator.level;
+ },
+ set(level) {
+ this._generator.level = level;
+ }
+ }
+ });
+ var createStyler = (open, close, parent) => {
+ let openAll;
+ let closeAll;
+ if (parent === void 0) {
+ openAll = open;
+ closeAll = close;
+ } else {
+ openAll = parent.openAll + open;
+ closeAll = close + parent.closeAll;
+ }
+ return {
+ open,
+ close,
+ openAll,
+ closeAll,
+ parent
+ };
+ };
+ var createBuilder = (self2, _styler, _isEmpty) => {
+ const builder = (...arguments_) => {
+ if (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {
+ return applyStyle(builder, chalkTag(builder, ...arguments_));
+ }
+ return applyStyle(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" "));
+ };
+ Object.setPrototypeOf(builder, proto);
+ builder._generator = self2;
+ builder._styler = _styler;
+ builder._isEmpty = _isEmpty;
+ return builder;
+ };
+ var applyStyle = (self2, string) => {
+ if (self2.level <= 0 || !string) {
+ return self2._isEmpty ? "" : string;
+ }
+ let styler = self2._styler;
+ if (styler === void 0) {
+ return string;
+ }
+ const { openAll, closeAll } = styler;
+ if (string.indexOf("\x1B") !== -1) {
+ while (styler !== void 0) {
+ string = stringReplaceAll(string, styler.close, styler.open);
+ styler = styler.parent;
+ }
+ }
+ const lfIndex = string.indexOf("\n");
+ if (lfIndex !== -1) {
+ string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);
+ }
+ return openAll + string + closeAll;
+ };
+ var template;
+ var chalkTag = (chalk2, ...strings) => {
+ const [firstString] = strings;
+ if (!isArray(firstString) || !isArray(firstString.raw)) {
+ return strings.join(" ");
+ }
+ const arguments_ = strings.slice(1);
+ const parts = [firstString.raw[0]];
+ for (let i = 1; i < firstString.length; i++) {
+ parts.push(String(arguments_[i - 1]).replace(/[{}\\]/g, "\\$&"), String(firstString.raw[i]));
+ }
+ if (template === void 0) {
+ template = require_templates();
+ }
+ return template(chalk2, parts.join(""));
+ };
+ Object.defineProperties(Chalk.prototype, styles);
+ var chalk = Chalk();
+ chalk.supportsColor = stdoutColor;
+ chalk.stderr = Chalk({ level: stderrColor ? stderrColor.level : 0 });
+ chalk.stderr.supportsColor = stderrColor;
+ module2.exports = chalk;
+ }
+});
+
+// ../../node_modules/.pnpm/mimic-fn@2.1.0/node_modules/mimic-fn/index.js
+var require_mimic_fn = __commonJS({
+ "../../node_modules/.pnpm/mimic-fn@2.1.0/node_modules/mimic-fn/index.js"(exports, module2) {
+ "use strict";
+ var mimicFn = (to, from) => {
+ for (const prop of Reflect.ownKeys(from)) {
+ Object.defineProperty(to, prop, Object.getOwnPropertyDescriptor(from, prop));
+ }
+ return to;
+ };
+ module2.exports = mimicFn;
+ module2.exports.default = mimicFn;
+ }
+});
+
+// ../../node_modules/.pnpm/onetime@5.1.2/node_modules/onetime/index.js
+var require_onetime = __commonJS({
+ "../../node_modules/.pnpm/onetime@5.1.2/node_modules/onetime/index.js"(exports, module2) {
+ "use strict";
+ var mimicFn = require_mimic_fn();
+ var calledFunctions = /* @__PURE__ */ new WeakMap();
+ var onetime = (function_, options2 = {}) => {
+ if (typeof function_ !== "function") {
+ throw new TypeError("Expected a function");
+ }
+ let returnValue;
+ let callCount = 0;
+ const functionName = function_.displayName || function_.name || "";
+ const onetime2 = function(...arguments_) {
+ calledFunctions.set(onetime2, ++callCount);
+ if (callCount === 1) {
+ returnValue = function_.apply(this, arguments_);
+ function_ = null;
+ } else if (options2.throw === true) {
+ throw new Error(`Function \`${functionName}\` can only be called once`);
+ }
+ return returnValue;
+ };
+ mimicFn(onetime2, function_);
+ calledFunctions.set(onetime2, callCount);
+ return onetime2;
+ };
+ module2.exports = onetime;
+ module2.exports.default = onetime;
+ module2.exports.callCount = (function_) => {
+ if (!calledFunctions.has(function_)) {
+ throw new Error(`The given function \`${function_.name}\` is not wrapped by the \`onetime\` package`);
+ }
+ return calledFunctions.get(function_);
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/signal-exit@3.0.6/node_modules/signal-exit/signals.js
+var require_signals = __commonJS({
+ "../../node_modules/.pnpm/signal-exit@3.0.6/node_modules/signal-exit/signals.js"(exports, module2) {
+ module2.exports = [
+ "SIGABRT",
+ "SIGALRM",
+ "SIGHUP",
+ "SIGINT",
+ "SIGTERM"
+ ];
+ if (process.platform !== "win32") {
+ module2.exports.push("SIGVTALRM", "SIGXCPU", "SIGXFSZ", "SIGUSR2", "SIGTRAP", "SIGSYS", "SIGQUIT", "SIGIOT");
+ }
+ if (process.platform === "linux") {
+ module2.exports.push("SIGIO", "SIGPOLL", "SIGPWR", "SIGSTKFLT", "SIGUNUSED");
+ }
+ }
+});
+
+// ../../node_modules/.pnpm/signal-exit@3.0.6/node_modules/signal-exit/index.js
+var require_signal_exit = __commonJS({
+ "../../node_modules/.pnpm/signal-exit@3.0.6/node_modules/signal-exit/index.js"(exports, module2) {
+ var process2 = global.process;
+ var processOk = function(process3) {
+ return process3 && typeof process3 === "object" && typeof process3.removeListener === "function" && typeof process3.emit === "function" && typeof process3.reallyExit === "function" && typeof process3.listeners === "function" && typeof process3.kill === "function" && typeof process3.pid === "number" && typeof process3.on === "function";
+ };
+ if (!processOk(process2)) {
+ module2.exports = function() {
+ };
+ } else {
+ assert = require("assert");
+ signals = require_signals();
+ isWin = /^win/i.test(process2.platform);
+ EE = require("events");
+ if (typeof EE !== "function") {
+ EE = EE.EventEmitter;
+ }
+ if (process2.__signal_exit_emitter__) {
+ emitter = process2.__signal_exit_emitter__;
+ } else {
+ emitter = process2.__signal_exit_emitter__ = new EE();
+ emitter.count = 0;
+ emitter.emitted = {};
+ }
+ if (!emitter.infinite) {
+ emitter.setMaxListeners(Infinity);
+ emitter.infinite = true;
+ }
+ module2.exports = function(cb, opts) {
+ if (!processOk(global.process)) {
+ return;
+ }
+ assert.equal(typeof cb, "function", "a callback must be provided for exit handler");
+ if (loaded === false) {
+ load();
+ }
+ var ev = "exit";
+ if (opts && opts.alwaysLast) {
+ ev = "afterexit";
+ }
+ var remove = function() {
+ emitter.removeListener(ev, cb);
+ if (emitter.listeners("exit").length === 0 && emitter.listeners("afterexit").length === 0) {
+ unload();
+ }
+ };
+ emitter.on(ev, cb);
+ return remove;
+ };
+ unload = function unload2() {
+ if (!loaded || !processOk(global.process)) {
+ return;
+ }
+ loaded = false;
+ signals.forEach(function(sig) {
+ try {
+ process2.removeListener(sig, sigListeners[sig]);
+ } catch (er) {
+ }
+ });
+ process2.emit = originalProcessEmit;
+ process2.reallyExit = originalProcessReallyExit;
+ emitter.count -= 1;
+ };
+ module2.exports.unload = unload;
+ emit = function emit2(event, code, signal) {
+ if (emitter.emitted[event]) {
+ return;
+ }
+ emitter.emitted[event] = true;
+ emitter.emit(event, code, signal);
+ };
+ sigListeners = {};
+ signals.forEach(function(sig) {
+ sigListeners[sig] = function listener() {
+ if (!processOk(global.process)) {
+ return;
+ }
+ var listeners = process2.listeners(sig);
+ if (listeners.length === emitter.count) {
+ unload();
+ emit("exit", null, sig);
+ emit("afterexit", null, sig);
+ if (isWin && sig === "SIGHUP") {
+ sig = "SIGINT";
+ }
+ process2.kill(process2.pid, sig);
+ }
+ };
+ });
+ module2.exports.signals = function() {
+ return signals;
+ };
+ loaded = false;
+ load = function load2() {
+ if (loaded || !processOk(global.process)) {
+ return;
+ }
+ loaded = true;
+ emitter.count += 1;
+ signals = signals.filter(function(sig) {
+ try {
+ process2.on(sig, sigListeners[sig]);
+ return true;
+ } catch (er) {
+ return false;
+ }
+ });
+ process2.emit = processEmit;
+ process2.reallyExit = processReallyExit;
+ };
+ module2.exports.load = load;
+ originalProcessReallyExit = process2.reallyExit;
+ processReallyExit = function processReallyExit2(code) {
+ if (!processOk(global.process)) {
+ return;
+ }
+ process2.exitCode = code || 0;
+ emit("exit", process2.exitCode, null);
+ emit("afterexit", process2.exitCode, null);
+ originalProcessReallyExit.call(process2, process2.exitCode);
+ };
+ originalProcessEmit = process2.emit;
+ processEmit = function processEmit2(ev, arg) {
+ if (ev === "exit" && processOk(global.process)) {
+ if (arg !== void 0) {
+ process2.exitCode = arg;
+ }
+ var ret = originalProcessEmit.apply(this, arguments);
+ emit("exit", process2.exitCode, null);
+ emit("afterexit", process2.exitCode, null);
+ return ret;
+ } else {
+ return originalProcessEmit.apply(this, arguments);
+ }
+ };
+ }
+ var assert;
+ var signals;
+ var isWin;
+ var EE;
+ var emitter;
+ var unload;
+ var emit;
+ var sigListeners;
+ var loaded;
+ var load;
+ var originalProcessReallyExit;
+ var processReallyExit;
+ var originalProcessEmit;
+ var processEmit;
+ }
+});
+
+// ../../node_modules/.pnpm/restore-cursor@3.1.0/node_modules/restore-cursor/index.js
+var require_restore_cursor = __commonJS({
+ "../../node_modules/.pnpm/restore-cursor@3.1.0/node_modules/restore-cursor/index.js"(exports, module2) {
+ "use strict";
+ var onetime = require_onetime();
+ var signalExit = require_signal_exit();
+ module2.exports = onetime(() => {
+ signalExit(() => {
+ process.stderr.write("\x1B[?25h");
+ }, { alwaysLast: true });
+ });
+ }
+});
+
+// ../../node_modules/.pnpm/cli-cursor@3.1.0/node_modules/cli-cursor/index.js
+var require_cli_cursor = __commonJS({
+ "../../node_modules/.pnpm/cli-cursor@3.1.0/node_modules/cli-cursor/index.js"(exports) {
+ "use strict";
+ var restoreCursor = require_restore_cursor();
+ var isHidden = false;
+ exports.show = (writableStream = process.stderr) => {
+ if (!writableStream.isTTY) {
+ return;
+ }
+ isHidden = false;
+ writableStream.write("\x1B[?25h");
+ };
+ exports.hide = (writableStream = process.stderr) => {
+ if (!writableStream.isTTY) {
+ return;
+ }
+ restoreCursor();
+ isHidden = true;
+ writableStream.write("\x1B[?25l");
+ };
+ exports.toggle = (force, writableStream) => {
+ if (force !== void 0) {
+ isHidden = force;
+ }
+ if (isHidden) {
+ exports.show(writableStream);
+ } else {
+ exports.hide(writableStream);
+ }
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/cli-spinners@2.6.1/node_modules/cli-spinners/spinners.json
+var require_spinners = __commonJS({
+ "../../node_modules/.pnpm/cli-spinners@2.6.1/node_modules/cli-spinners/spinners.json"(exports, module2) {
+ module2.exports = {
+ dots: {
+ interval: 80,
+ frames: [
+ "\u280B",
+ "\u2819",
+ "\u2839",
+ "\u2838",
+ "\u283C",
+ "\u2834",
+ "\u2826",
+ "\u2827",
+ "\u2807",
+ "\u280F"
+ ]
+ },
+ dots2: {
+ interval: 80,
+ frames: [
+ "\u28FE",
+ "\u28FD",
+ "\u28FB",
+ "\u28BF",
+ "\u287F",
+ "\u28DF",
+ "\u28EF",
+ "\u28F7"
+ ]
+ },
+ dots3: {
+ interval: 80,
+ frames: [
+ "\u280B",
+ "\u2819",
+ "\u281A",
+ "\u281E",
+ "\u2816",
+ "\u2826",
+ "\u2834",
+ "\u2832",
+ "\u2833",
+ "\u2813"
+ ]
+ },
+ dots4: {
+ interval: 80,
+ frames: [
+ "\u2804",
+ "\u2806",
+ "\u2807",
+ "\u280B",
+ "\u2819",
+ "\u2838",
+ "\u2830",
+ "\u2820",
+ "\u2830",
+ "\u2838",
+ "\u2819",
+ "\u280B",
+ "\u2807",
+ "\u2806"
+ ]
+ },
+ dots5: {
+ interval: 80,
+ frames: [
+ "\u280B",
+ "\u2819",
+ "\u281A",
+ "\u2812",
+ "\u2802",
+ "\u2802",
+ "\u2812",
+ "\u2832",
+ "\u2834",
+ "\u2826",
+ "\u2816",
+ "\u2812",
+ "\u2810",
+ "\u2810",
+ "\u2812",
+ "\u2813",
+ "\u280B"
+ ]
+ },
+ dots6: {
+ interval: 80,
+ frames: [
+ "\u2801",
+ "\u2809",
+ "\u2819",
+ "\u281A",
+ "\u2812",
+ "\u2802",
+ "\u2802",
+ "\u2812",
+ "\u2832",
+ "\u2834",
+ "\u2824",
+ "\u2804",
+ "\u2804",
+ "\u2824",
+ "\u2834",
+ "\u2832",
+ "\u2812",
+ "\u2802",
+ "\u2802",
+ "\u2812",
+ "\u281A",
+ "\u2819",
+ "\u2809",
+ "\u2801"
+ ]
+ },
+ dots7: {
+ interval: 80,
+ frames: [
+ "\u2808",
+ "\u2809",
+ "\u280B",
+ "\u2813",
+ "\u2812",
+ "\u2810",
+ "\u2810",
+ "\u2812",
+ "\u2816",
+ "\u2826",
+ "\u2824",
+ "\u2820",
+ "\u2820",
+ "\u2824",
+ "\u2826",
+ "\u2816",
+ "\u2812",
+ "\u2810",
+ "\u2810",
+ "\u2812",
+ "\u2813",
+ "\u280B",
+ "\u2809",
+ "\u2808"
+ ]
+ },
+ dots8: {
+ interval: 80,
+ frames: [
+ "\u2801",
+ "\u2801",
+ "\u2809",
+ "\u2819",
+ "\u281A",
+ "\u2812",
+ "\u2802",
+ "\u2802",
+ "\u2812",
+ "\u2832",
+ "\u2834",
+ "\u2824",
+ "\u2804",
+ "\u2804",
+ "\u2824",
+ "\u2820",
+ "\u2820",
+ "\u2824",
+ "\u2826",
+ "\u2816",
+ "\u2812",
+ "\u2810",
+ "\u2810",
+ "\u2812",
+ "\u2813",
+ "\u280B",
+ "\u2809",
+ "\u2808",
+ "\u2808"
+ ]
+ },
+ dots9: {
+ interval: 80,
+ frames: [
+ "\u28B9",
+ "\u28BA",
+ "\u28BC",
+ "\u28F8",
+ "\u28C7",
+ "\u2867",
+ "\u2857",
+ "\u284F"
+ ]
+ },
+ dots10: {
+ interval: 80,
+ frames: [
+ "\u2884",
+ "\u2882",
+ "\u2881",
+ "\u2841",
+ "\u2848",
+ "\u2850",
+ "\u2860"
+ ]
+ },
+ dots11: {
+ interval: 100,
+ frames: [
+ "\u2801",
+ "\u2802",
+ "\u2804",
+ "\u2840",
+ "\u2880",
+ "\u2820",
+ "\u2810",
+ "\u2808"
+ ]
+ },
+ dots12: {
+ interval: 80,
+ frames: [
+ "\u2880\u2800",
+ "\u2840\u2800",
+ "\u2804\u2800",
+ "\u2882\u2800",
+ "\u2842\u2800",
+ "\u2805\u2800",
+ "\u2883\u2800",
+ "\u2843\u2800",
+ "\u280D\u2800",
+ "\u288B\u2800",
+ "\u284B\u2800",
+ "\u280D\u2801",
+ "\u288B\u2801",
+ "\u284B\u2801",
+ "\u280D\u2809",
+ "\u280B\u2809",
+ "\u280B\u2809",
+ "\u2809\u2819",
+ "\u2809\u2819",
+ "\u2809\u2829",
+ "\u2808\u2899",
+ "\u2808\u2859",
+ "\u2888\u2829",
+ "\u2840\u2899",
+ "\u2804\u2859",
+ "\u2882\u2829",
+ "\u2842\u2898",
+ "\u2805\u2858",
+ "\u2883\u2828",
+ "\u2843\u2890",
+ "\u280D\u2850",
+ "\u288B\u2820",
+ "\u284B\u2880",
+ "\u280D\u2841",
+ "\u288B\u2801",
+ "\u284B\u2801",
+ "\u280D\u2809",
+ "\u280B\u2809",
+ "\u280B\u2809",
+ "\u2809\u2819",
+ "\u2809\u2819",
+ "\u2809\u2829",
+ "\u2808\u2899",
+ "\u2808\u2859",
+ "\u2808\u2829",
+ "\u2800\u2899",
+ "\u2800\u2859",
+ "\u2800\u2829",
+ "\u2800\u2898",
+ "\u2800\u2858",
+ "\u2800\u2828",
+ "\u2800\u2890",
+ "\u2800\u2850",
+ "\u2800\u2820",
+ "\u2800\u2880",
+ "\u2800\u2840"
+ ]
+ },
+ dots8Bit: {
+ interval: 80,
+ frames: [
+ "\u2800",
+ "\u2801",
+ "\u2802",
+ "\u2803",
+ "\u2804",
+ "\u2805",
+ "\u2806",
+ "\u2807",
+ "\u2840",
+ "\u2841",
+ "\u2842",
+ "\u2843",
+ "\u2844",
+ "\u2845",
+ "\u2846",
+ "\u2847",
+ "\u2808",
+ "\u2809",
+ "\u280A",
+ "\u280B",
+ "\u280C",
+ "\u280D",
+ "\u280E",
+ "\u280F",
+ "\u2848",
+ "\u2849",
+ "\u284A",
+ "\u284B",
+ "\u284C",
+ "\u284D",
+ "\u284E",
+ "\u284F",
+ "\u2810",
+ "\u2811",
+ "\u2812",
+ "\u2813",
+ "\u2814",
+ "\u2815",
+ "\u2816",
+ "\u2817",
+ "\u2850",
+ "\u2851",
+ "\u2852",
+ "\u2853",
+ "\u2854",
+ "\u2855",
+ "\u2856",
+ "\u2857",
+ "\u2818",
+ "\u2819",
+ "\u281A",
+ "\u281B",
+ "\u281C",
+ "\u281D",
+ "\u281E",
+ "\u281F",
+ "\u2858",
+ "\u2859",
+ "\u285A",
+ "\u285B",
+ "\u285C",
+ "\u285D",
+ "\u285E",
+ "\u285F",
+ "\u2820",
+ "\u2821",
+ "\u2822",
+ "\u2823",
+ "\u2824",
+ "\u2825",
+ "\u2826",
+ "\u2827",
+ "\u2860",
+ "\u2861",
+ "\u2862",
+ "\u2863",
+ "\u2864",
+ "\u2865",
+ "\u2866",
+ "\u2867",
+ "\u2828",
+ "\u2829",
+ "\u282A",
+ "\u282B",
+ "\u282C",
+ "\u282D",
+ "\u282E",
+ "\u282F",
+ "\u2868",
+ "\u2869",
+ "\u286A",
+ "\u286B",
+ "\u286C",
+ "\u286D",
+ "\u286E",
+ "\u286F",
+ "\u2830",
+ "\u2831",
+ "\u2832",
+ "\u2833",
+ "\u2834",
+ "\u2835",
+ "\u2836",
+ "\u2837",
+ "\u2870",
+ "\u2871",
+ "\u2872",
+ "\u2873",
+ "\u2874",
+ "\u2875",
+ "\u2876",
+ "\u2877",
+ "\u2838",
+ "\u2839",
+ "\u283A",
+ "\u283B",
+ "\u283C",
+ "\u283D",
+ "\u283E",
+ "\u283F",
+ "\u2878",
+ "\u2879",
+ "\u287A",
+ "\u287B",
+ "\u287C",
+ "\u287D",
+ "\u287E",
+ "\u287F",
+ "\u2880",
+ "\u2881",
+ "\u2882",
+ "\u2883",
+ "\u2884",
+ "\u2885",
+ "\u2886",
+ "\u2887",
+ "\u28C0",
+ "\u28C1",
+ "\u28C2",
+ "\u28C3",
+ "\u28C4",
+ "\u28C5",
+ "\u28C6",
+ "\u28C7",
+ "\u2888",
+ "\u2889",
+ "\u288A",
+ "\u288B",
+ "\u288C",
+ "\u288D",
+ "\u288E",
+ "\u288F",
+ "\u28C8",
+ "\u28C9",
+ "\u28CA",
+ "\u28CB",
+ "\u28CC",
+ "\u28CD",
+ "\u28CE",
+ "\u28CF",
+ "\u2890",
+ "\u2891",
+ "\u2892",
+ "\u2893",
+ "\u2894",
+ "\u2895",
+ "\u2896",
+ "\u2897",
+ "\u28D0",
+ "\u28D1",
+ "\u28D2",
+ "\u28D3",
+ "\u28D4",
+ "\u28D5",
+ "\u28D6",
+ "\u28D7",
+ "\u2898",
+ "\u2899",
+ "\u289A",
+ "\u289B",
+ "\u289C",
+ "\u289D",
+ "\u289E",
+ "\u289F",
+ "\u28D8",
+ "\u28D9",
+ "\u28DA",
+ "\u28DB",
+ "\u28DC",
+ "\u28DD",
+ "\u28DE",
+ "\u28DF",
+ "\u28A0",
+ "\u28A1",
+ "\u28A2",
+ "\u28A3",
+ "\u28A4",
+ "\u28A5",
+ "\u28A6",
+ "\u28A7",
+ "\u28E0",
+ "\u28E1",
+ "\u28E2",
+ "\u28E3",
+ "\u28E4",
+ "\u28E5",
+ "\u28E6",
+ "\u28E7",
+ "\u28A8",
+ "\u28A9",
+ "\u28AA",
+ "\u28AB",
+ "\u28AC",
+ "\u28AD",
+ "\u28AE",
+ "\u28AF",
+ "\u28E8",
+ "\u28E9",
+ "\u28EA",
+ "\u28EB",
+ "\u28EC",
+ "\u28ED",
+ "\u28EE",
+ "\u28EF",
+ "\u28B0",
+ "\u28B1",
+ "\u28B2",
+ "\u28B3",
+ "\u28B4",
+ "\u28B5",
+ "\u28B6",
+ "\u28B7",
+ "\u28F0",
+ "\u28F1",
+ "\u28F2",
+ "\u28F3",
+ "\u28F4",
+ "\u28F5",
+ "\u28F6",
+ "\u28F7",
+ "\u28B8",
+ "\u28B9",
+ "\u28BA",
+ "\u28BB",
+ "\u28BC",
+ "\u28BD",
+ "\u28BE",
+ "\u28BF",
+ "\u28F8",
+ "\u28F9",
+ "\u28FA",
+ "\u28FB",
+ "\u28FC",
+ "\u28FD",
+ "\u28FE",
+ "\u28FF"
+ ]
+ },
+ line: {
+ interval: 130,
+ frames: [
+ "-",
+ "\\",
+ "|",
+ "/"
+ ]
+ },
+ line2: {
+ interval: 100,
+ frames: [
+ "\u2802",
+ "-",
+ "\u2013",
+ "\u2014",
+ "\u2013",
+ "-"
+ ]
+ },
+ pipe: {
+ interval: 100,
+ frames: [
+ "\u2524",
+ "\u2518",
+ "\u2534",
+ "\u2514",
+ "\u251C",
+ "\u250C",
+ "\u252C",
+ "\u2510"
+ ]
+ },
+ simpleDots: {
+ interval: 400,
+ frames: [
+ ". ",
+ ".. ",
+ "...",
+ " "
+ ]
+ },
+ simpleDotsScrolling: {
+ interval: 200,
+ frames: [
+ ". ",
+ ".. ",
+ "...",
+ " ..",
+ " .",
+ " "
+ ]
+ },
+ star: {
+ interval: 70,
+ frames: [
+ "\u2736",
+ "\u2738",
+ "\u2739",
+ "\u273A",
+ "\u2739",
+ "\u2737"
+ ]
+ },
+ star2: {
+ interval: 80,
+ frames: [
+ "+",
+ "x",
+ "*"
+ ]
+ },
+ flip: {
+ interval: 70,
+ frames: [
+ "_",
+ "_",
+ "_",
+ "-",
+ "`",
+ "`",
+ "'",
+ "\xB4",
+ "-",
+ "_",
+ "_",
+ "_"
+ ]
+ },
+ hamburger: {
+ interval: 100,
+ frames: [
+ "\u2631",
+ "\u2632",
+ "\u2634"
+ ]
+ },
+ growVertical: {
+ interval: 120,
+ frames: [
+ "\u2581",
+ "\u2583",
+ "\u2584",
+ "\u2585",
+ "\u2586",
+ "\u2587",
+ "\u2586",
+ "\u2585",
+ "\u2584",
+ "\u2583"
+ ]
+ },
+ growHorizontal: {
+ interval: 120,
+ frames: [
+ "\u258F",
+ "\u258E",
+ "\u258D",
+ "\u258C",
+ "\u258B",
+ "\u258A",
+ "\u2589",
+ "\u258A",
+ "\u258B",
+ "\u258C",
+ "\u258D",
+ "\u258E"
+ ]
+ },
+ balloon: {
+ interval: 140,
+ frames: [
+ " ",
+ ".",
+ "o",
+ "O",
+ "@",
+ "*",
+ " "
+ ]
+ },
+ balloon2: {
+ interval: 120,
+ frames: [
+ ".",
+ "o",
+ "O",
+ "\xB0",
+ "O",
+ "o",
+ "."
+ ]
+ },
+ noise: {
+ interval: 100,
+ frames: [
+ "\u2593",
+ "\u2592",
+ "\u2591"
+ ]
+ },
+ bounce: {
+ interval: 120,
+ frames: [
+ "\u2801",
+ "\u2802",
+ "\u2804",
+ "\u2802"
+ ]
+ },
+ boxBounce: {
+ interval: 120,
+ frames: [
+ "\u2596",
+ "\u2598",
+ "\u259D",
+ "\u2597"
+ ]
+ },
+ boxBounce2: {
+ interval: 100,
+ frames: [
+ "\u258C",
+ "\u2580",
+ "\u2590",
+ "\u2584"
+ ]
+ },
+ triangle: {
+ interval: 50,
+ frames: [
+ "\u25E2",
+ "\u25E3",
+ "\u25E4",
+ "\u25E5"
+ ]
+ },
+ arc: {
+ interval: 100,
+ frames: [
+ "\u25DC",
+ "\u25E0",
+ "\u25DD",
+ "\u25DE",
+ "\u25E1",
+ "\u25DF"
+ ]
+ },
+ circle: {
+ interval: 120,
+ frames: [
+ "\u25E1",
+ "\u2299",
+ "\u25E0"
+ ]
+ },
+ squareCorners: {
+ interval: 180,
+ frames: [
+ "\u25F0",
+ "\u25F3",
+ "\u25F2",
+ "\u25F1"
+ ]
+ },
+ circleQuarters: {
+ interval: 120,
+ frames: [
+ "\u25F4",
+ "\u25F7",
+ "\u25F6",
+ "\u25F5"
+ ]
+ },
+ circleHalves: {
+ interval: 50,
+ frames: [
+ "\u25D0",
+ "\u25D3",
+ "\u25D1",
+ "\u25D2"
+ ]
+ },
+ squish: {
+ interval: 100,
+ frames: [
+ "\u256B",
+ "\u256A"
+ ]
+ },
+ toggle: {
+ interval: 250,
+ frames: [
+ "\u22B6",
+ "\u22B7"
+ ]
+ },
+ toggle2: {
+ interval: 80,
+ frames: [
+ "\u25AB",
+ "\u25AA"
+ ]
+ },
+ toggle3: {
+ interval: 120,
+ frames: [
+ "\u25A1",
+ "\u25A0"
+ ]
+ },
+ toggle4: {
+ interval: 100,
+ frames: [
+ "\u25A0",
+ "\u25A1",
+ "\u25AA",
+ "\u25AB"
+ ]
+ },
+ toggle5: {
+ interval: 100,
+ frames: [
+ "\u25AE",
+ "\u25AF"
+ ]
+ },
+ toggle6: {
+ interval: 300,
+ frames: [
+ "\u101D",
+ "\u1040"
+ ]
+ },
+ toggle7: {
+ interval: 80,
+ frames: [
+ "\u29BE",
+ "\u29BF"
+ ]
+ },
+ toggle8: {
+ interval: 100,
+ frames: [
+ "\u25CD",
+ "\u25CC"
+ ]
+ },
+ toggle9: {
+ interval: 100,
+ frames: [
+ "\u25C9",
+ "\u25CE"
+ ]
+ },
+ toggle10: {
+ interval: 100,
+ frames: [
+ "\u3282",
+ "\u3280",
+ "\u3281"
+ ]
+ },
+ toggle11: {
+ interval: 50,
+ frames: [
+ "\u29C7",
+ "\u29C6"
+ ]
+ },
+ toggle12: {
+ interval: 120,
+ frames: [
+ "\u2617",
+ "\u2616"
+ ]
+ },
+ toggle13: {
+ interval: 80,
+ frames: [
+ "=",
+ "*",
+ "-"
+ ]
+ },
+ arrow: {
+ interval: 100,
+ frames: [
+ "\u2190",
+ "\u2196",
+ "\u2191",
+ "\u2197",
+ "\u2192",
+ "\u2198",
+ "\u2193",
+ "\u2199"
+ ]
+ },
+ arrow2: {
+ interval: 80,
+ frames: [
+ "\u2B06\uFE0F ",
+ "\u2197\uFE0F ",
+ "\u27A1\uFE0F ",
+ "\u2198\uFE0F ",
+ "\u2B07\uFE0F ",
+ "\u2199\uFE0F ",
+ "\u2B05\uFE0F ",
+ "\u2196\uFE0F "
+ ]
+ },
+ arrow3: {
+ interval: 120,
+ frames: [
+ "\u25B9\u25B9\u25B9\u25B9\u25B9",
+ "\u25B8\u25B9\u25B9\u25B9\u25B9",
+ "\u25B9\u25B8\u25B9\u25B9\u25B9",
+ "\u25B9\u25B9\u25B8\u25B9\u25B9",
+ "\u25B9\u25B9\u25B9\u25B8\u25B9",
+ "\u25B9\u25B9\u25B9\u25B9\u25B8"
+ ]
+ },
+ bouncingBar: {
+ interval: 80,
+ frames: [
+ "[ ]",
+ "[= ]",
+ "[== ]",
+ "[=== ]",
+ "[ ===]",
+ "[ ==]",
+ "[ =]",
+ "[ ]",
+ "[ =]",
+ "[ ==]",
+ "[ ===]",
+ "[====]",
+ "[=== ]",
+ "[== ]",
+ "[= ]"
+ ]
+ },
+ bouncingBall: {
+ interval: 80,
+ frames: [
+ "( \u25CF )",
+ "( \u25CF )",
+ "( \u25CF )",
+ "( \u25CF )",
+ "( \u25CF)",
+ "( \u25CF )",
+ "( \u25CF )",
+ "( \u25CF )",
+ "( \u25CF )",
+ "(\u25CF )"
+ ]
+ },
+ smiley: {
+ interval: 200,
+ frames: [
+ "\u{1F604} ",
+ "\u{1F61D} "
+ ]
+ },
+ monkey: {
+ interval: 300,
+ frames: [
+ "\u{1F648} ",
+ "\u{1F648} ",
+ "\u{1F649} ",
+ "\u{1F64A} "
+ ]
+ },
+ hearts: {
+ interval: 100,
+ frames: [
+ "\u{1F49B} ",
+ "\u{1F499} ",
+ "\u{1F49C} ",
+ "\u{1F49A} ",
+ "\u2764\uFE0F "
+ ]
+ },
+ clock: {
+ interval: 100,
+ frames: [
+ "\u{1F55B} ",
+ "\u{1F550} ",
+ "\u{1F551} ",
+ "\u{1F552} ",
+ "\u{1F553} ",
+ "\u{1F554} ",
+ "\u{1F555} ",
+ "\u{1F556} ",
+ "\u{1F557} ",
+ "\u{1F558} ",
+ "\u{1F559} ",
+ "\u{1F55A} "
+ ]
+ },
+ earth: {
+ interval: 180,
+ frames: [
+ "\u{1F30D} ",
+ "\u{1F30E} ",
+ "\u{1F30F} "
+ ]
+ },
+ material: {
+ interval: 17,
+ frames: [
+ "\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
+ "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
+ "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
+ "\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581",
+ "\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
+ "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
+ "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
+ "\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
+ "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
+ "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
+ "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
+ "\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
+ "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
+ "\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
+ "\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
+ "\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
+ "\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
+ "\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
+ "\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581",
+ "\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581",
+ "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
+ "\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581",
+ "\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581"
+ ]
+ },
+ moon: {
+ interval: 80,
+ frames: [
+ "\u{1F311} ",
+ "\u{1F312} ",
+ "\u{1F313} ",
+ "\u{1F314} ",
+ "\u{1F315} ",
+ "\u{1F316} ",
+ "\u{1F317} ",
+ "\u{1F318} "
+ ]
+ },
+ runner: {
+ interval: 140,
+ frames: [
+ "\u{1F6B6} ",
+ "\u{1F3C3} "
+ ]
+ },
+ pong: {
+ interval: 80,
+ frames: [
+ "\u2590\u2802 \u258C",
+ "\u2590\u2808 \u258C",
+ "\u2590 \u2802 \u258C",
+ "\u2590 \u2820 \u258C",
+ "\u2590 \u2840 \u258C",
+ "\u2590 \u2820 \u258C",
+ "\u2590 \u2802 \u258C",
+ "\u2590 \u2808 \u258C",
+ "\u2590 \u2802 \u258C",
+ "\u2590 \u2820 \u258C",
+ "\u2590 \u2840 \u258C",
+ "\u2590 \u2820 \u258C",
+ "\u2590 \u2802 \u258C",
+ "\u2590 \u2808 \u258C",
+ "\u2590 \u2802\u258C",
+ "\u2590 \u2820\u258C",
+ "\u2590 \u2840\u258C",
+ "\u2590 \u2820 \u258C",
+ "\u2590 \u2802 \u258C",
+ "\u2590 \u2808 \u258C",
+ "\u2590 \u2802 \u258C",
+ "\u2590 \u2820 \u258C",
+ "\u2590 \u2840 \u258C",
+ "\u2590 \u2820 \u258C",
+ "\u2590 \u2802 \u258C",
+ "\u2590 \u2808 \u258C",
+ "\u2590 \u2802 \u258C",
+ "\u2590 \u2820 \u258C",
+ "\u2590 \u2840 \u258C",
+ "\u2590\u2820 \u258C"
+ ]
+ },
+ shark: {
+ interval: 120,
+ frames: [
+ "\u2590|\\____________\u258C",
+ "\u2590_|\\___________\u258C",
+ "\u2590__|\\__________\u258C",
+ "\u2590___|\\_________\u258C",
+ "\u2590____|\\________\u258C",
+ "\u2590_____|\\_______\u258C",
+ "\u2590______|\\______\u258C",
+ "\u2590_______|\\_____\u258C",
+ "\u2590________|\\____\u258C",
+ "\u2590_________|\\___\u258C",
+ "\u2590__________|\\__\u258C",
+ "\u2590___________|\\_\u258C",
+ "\u2590____________|\\\u258C",
+ "\u2590____________/|\u258C",
+ "\u2590___________/|_\u258C",
+ "\u2590__________/|__\u258C",
+ "\u2590_________/|___\u258C",
+ "\u2590________/|____\u258C",
+ "\u2590_______/|_____\u258C",
+ "\u2590______/|______\u258C",
+ "\u2590_____/|_______\u258C",
+ "\u2590____/|________\u258C",
+ "\u2590___/|_________\u258C",
+ "\u2590__/|__________\u258C",
+ "\u2590_/|___________\u258C",
+ "\u2590/|____________\u258C"
+ ]
+ },
+ dqpb: {
+ interval: 100,
+ frames: [
+ "d",
+ "q",
+ "p",
+ "b"
+ ]
+ },
+ weather: {
+ interval: 100,
+ frames: [
+ "\u2600\uFE0F ",
+ "\u2600\uFE0F ",
+ "\u2600\uFE0F ",
+ "\u{1F324} ",
+ "\u26C5\uFE0F ",
+ "\u{1F325} ",
+ "\u2601\uFE0F ",
+ "\u{1F327} ",
+ "\u{1F328} ",
+ "\u{1F327} ",
+ "\u{1F328} ",
+ "\u{1F327} ",
+ "\u{1F328} ",
+ "\u26C8 ",
+ "\u{1F328} ",
+ "\u{1F327} ",
+ "\u{1F328} ",
+ "\u2601\uFE0F ",
+ "\u{1F325} ",
+ "\u26C5\uFE0F ",
+ "\u{1F324} ",
+ "\u2600\uFE0F ",
+ "\u2600\uFE0F "
+ ]
+ },
+ christmas: {
+ interval: 400,
+ frames: [
+ "\u{1F332}",
+ "\u{1F384}"
+ ]
+ },
+ grenade: {
+ interval: 80,
+ frames: [
+ "\u060C ",
+ "\u2032 ",
+ " \xB4 ",
+ " \u203E ",
+ " \u2E0C",
+ " \u2E0A",
+ " |",
+ " \u204E",
+ " \u2055",
+ " \u0DF4 ",
+ " \u2053",
+ " ",
+ " ",
+ " "
+ ]
+ },
+ point: {
+ interval: 125,
+ frames: [
+ "\u2219\u2219\u2219",
+ "\u25CF\u2219\u2219",
+ "\u2219\u25CF\u2219",
+ "\u2219\u2219\u25CF",
+ "\u2219\u2219\u2219"
+ ]
+ },
+ layer: {
+ interval: 150,
+ frames: [
+ "-",
+ "=",
+ "\u2261"
+ ]
+ },
+ betaWave: {
+ interval: 80,
+ frames: [
+ "\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2",
+ "\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2",
+ "\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2",
+ "\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2",
+ "\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2",
+ "\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2",
+ "\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1"
+ ]
+ },
+ fingerDance: {
+ interval: 160,
+ frames: [
+ "\u{1F918} ",
+ "\u{1F91F} ",
+ "\u{1F596} ",
+ "\u270B ",
+ "\u{1F91A} ",
+ "\u{1F446} "
+ ]
+ },
+ fistBump: {
+ interval: 80,
+ frames: [
+ "\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ",
+ "\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ",
+ "\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ",
+ "\u3000\u{1F91C}\u3000\u3000\u{1F91B}\u3000 ",
+ "\u3000\u3000\u{1F91C}\u{1F91B}\u3000\u3000 ",
+ "\u3000\u{1F91C}\u2728\u{1F91B}\u3000\u3000 ",
+ "\u{1F91C}\u3000\u2728\u3000\u{1F91B}\u3000 "
+ ]
+ },
+ soccerHeader: {
+ interval: 80,
+ frames: [
+ " \u{1F9D1}\u26BD\uFE0F \u{1F9D1} ",
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
+ "\u{1F9D1} \u26BD\uFE0F\u{1F9D1} ",
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ",
+ "\u{1F9D1} \u26BD\uFE0F \u{1F9D1} "
+ ]
+ },
+ mindblown: {
+ interval: 160,
+ frames: [
+ "\u{1F610} ",
+ "\u{1F610} ",
+ "\u{1F62E} ",
+ "\u{1F62E} ",
+ "\u{1F626} ",
+ "\u{1F626} ",
+ "\u{1F627} ",
+ "\u{1F627} ",
+ "\u{1F92F} ",
+ "\u{1F4A5} ",
+ "\u2728 ",
+ "\u3000 ",
+ "\u3000 ",
+ "\u3000 "
+ ]
+ },
+ speaker: {
+ interval: 160,
+ frames: [
+ "\u{1F508} ",
+ "\u{1F509} ",
+ "\u{1F50A} ",
+ "\u{1F509} "
+ ]
+ },
+ orangePulse: {
+ interval: 100,
+ frames: [
+ "\u{1F538} ",
+ "\u{1F536} ",
+ "\u{1F7E0} ",
+ "\u{1F7E0} ",
+ "\u{1F536} "
+ ]
+ },
+ bluePulse: {
+ interval: 100,
+ frames: [
+ "\u{1F539} ",
+ "\u{1F537} ",
+ "\u{1F535} ",
+ "\u{1F535} ",
+ "\u{1F537} "
+ ]
+ },
+ orangeBluePulse: {
+ interval: 100,
+ frames: [
+ "\u{1F538} ",
+ "\u{1F536} ",
+ "\u{1F7E0} ",
+ "\u{1F7E0} ",
+ "\u{1F536} ",
+ "\u{1F539} ",
+ "\u{1F537} ",
+ "\u{1F535} ",
+ "\u{1F535} ",
+ "\u{1F537} "
+ ]
+ },
+ timeTravel: {
+ interval: 100,
+ frames: [
+ "\u{1F55B} ",
+ "\u{1F55A} ",
+ "\u{1F559} ",
+ "\u{1F558} ",
+ "\u{1F557} ",
+ "\u{1F556} ",
+ "\u{1F555} ",
+ "\u{1F554} ",
+ "\u{1F553} ",
+ "\u{1F552} ",
+ "\u{1F551} ",
+ "\u{1F550} "
+ ]
+ },
+ aesthetic: {
+ interval: 80,
+ frames: [
+ "\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1",
+ "\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1",
+ "\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1",
+ "\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1",
+ "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1",
+ "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1",
+ "\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0",
+ "\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1"
+ ]
+ }
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/cli-spinners@2.6.1/node_modules/cli-spinners/index.js
+var require_cli_spinners = __commonJS({
+ "../../node_modules/.pnpm/cli-spinners@2.6.1/node_modules/cli-spinners/index.js"(exports, module2) {
+ "use strict";
+ var spinners = Object.assign({}, require_spinners());
+ var spinnersList = Object.keys(spinners);
+ Object.defineProperty(spinners, "random", {
+ get() {
+ const randomIndex = Math.floor(Math.random() * spinnersList.length);
+ const spinnerName = spinnersList[randomIndex];
+ return spinners[spinnerName];
+ }
+ });
+ module2.exports = spinners;
+ }
+});
+
+// ../../node_modules/.pnpm/is-unicode-supported@0.1.0/node_modules/is-unicode-supported/index.js
+var require_is_unicode_supported = __commonJS({
+ "../../node_modules/.pnpm/is-unicode-supported@0.1.0/node_modules/is-unicode-supported/index.js"(exports, module2) {
+ "use strict";
+ module2.exports = () => {
+ if (process.platform !== "win32") {
+ return true;
+ }
+ return Boolean(process.env.CI) || Boolean(process.env.WT_SESSION) || process.env.TERM_PROGRAM === "vscode" || process.env.TERM === "xterm-256color" || process.env.TERM === "alacritty";
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/log-symbols@4.1.0/node_modules/log-symbols/index.js
+var require_log_symbols = __commonJS({
+ "../../node_modules/.pnpm/log-symbols@4.1.0/node_modules/log-symbols/index.js"(exports, module2) {
+ "use strict";
+ var chalk = require_source();
+ var isUnicodeSupported = require_is_unicode_supported();
+ var main = {
+ info: chalk.blue("\u2139"),
+ success: chalk.green("\u2714"),
+ warning: chalk.yellow("\u26A0"),
+ error: chalk.red("\u2716")
+ };
+ var fallback = {
+ info: chalk.blue("i"),
+ success: chalk.green("\u221A"),
+ warning: chalk.yellow("\u203C"),
+ error: chalk.red("\xD7")
+ };
+ module2.exports = isUnicodeSupported() ? main : fallback;
+ }
+});
+
+// ../../node_modules/.pnpm/ansi-regex@5.0.1/node_modules/ansi-regex/index.js
+var require_ansi_regex = __commonJS({
+ "../../node_modules/.pnpm/ansi-regex@5.0.1/node_modules/ansi-regex/index.js"(exports, module2) {
+ "use strict";
+ module2.exports = ({ onlyFirst = false } = {}) => {
+ const pattern = [
+ "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)",
+ "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"
+ ].join("|");
+ return new RegExp(pattern, onlyFirst ? void 0 : "g");
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/strip-ansi@6.0.1/node_modules/strip-ansi/index.js
+var require_strip_ansi = __commonJS({
+ "../../node_modules/.pnpm/strip-ansi@6.0.1/node_modules/strip-ansi/index.js"(exports, module2) {
+ "use strict";
+ var ansiRegex = require_ansi_regex();
+ module2.exports = (string) => typeof string === "string" ? string.replace(ansiRegex(), "") : string;
+ }
+});
+
+// ../../node_modules/.pnpm/clone@1.0.4/node_modules/clone/clone.js
+var require_clone = __commonJS({
+ "../../node_modules/.pnpm/clone@1.0.4/node_modules/clone/clone.js"(exports, module2) {
+ var clone2 = function() {
+ "use strict";
+ function clone3(parent, circular, depth, prototype) {
+ var filter;
+ if (typeof circular === "object") {
+ depth = circular.depth;
+ prototype = circular.prototype;
+ filter = circular.filter;
+ circular = circular.circular;
+ }
+ var allParents = [];
+ var allChildren = [];
+ var useBuffer = typeof Buffer != "undefined";
+ if (typeof circular == "undefined")
+ circular = true;
+ if (typeof depth == "undefined")
+ depth = Infinity;
+ function _clone(parent2, depth2) {
+ if (parent2 === null)
+ return null;
+ if (depth2 == 0)
+ return parent2;
+ var child;
+ var proto;
+ if (typeof parent2 != "object") {
+ return parent2;
+ }
+ if (clone3.__isArray(parent2)) {
+ child = [];
+ } else if (clone3.__isRegExp(parent2)) {
+ child = new RegExp(parent2.source, __getRegExpFlags(parent2));
+ if (parent2.lastIndex)
+ child.lastIndex = parent2.lastIndex;
+ } else if (clone3.__isDate(parent2)) {
+ child = new Date(parent2.getTime());
+ } else if (useBuffer && Buffer.isBuffer(parent2)) {
+ if (Buffer.allocUnsafe) {
+ child = Buffer.allocUnsafe(parent2.length);
+ } else {
+ child = new Buffer(parent2.length);
+ }
+ parent2.copy(child);
+ return child;
+ } else {
+ if (typeof prototype == "undefined") {
+ proto = Object.getPrototypeOf(parent2);
+ child = Object.create(proto);
+ } else {
+ child = Object.create(prototype);
+ proto = prototype;
+ }
+ }
+ if (circular) {
+ var index = allParents.indexOf(parent2);
+ if (index != -1) {
+ return allChildren[index];
+ }
+ allParents.push(parent2);
+ allChildren.push(child);
+ }
+ for (var i in parent2) {
+ var attrs;
+ if (proto) {
+ attrs = Object.getOwnPropertyDescriptor(proto, i);
+ }
+ if (attrs && attrs.set == null) {
+ continue;
+ }
+ child[i] = _clone(parent2[i], depth2 - 1);
+ }
+ return child;
+ }
+ return _clone(parent, depth);
+ }
+ clone3.clonePrototype = function clonePrototype(parent) {
+ if (parent === null)
+ return null;
+ var c = function() {
+ };
+ c.prototype = parent;
+ return new c();
+ };
+ function __objToStr(o) {
+ return Object.prototype.toString.call(o);
+ }
+ ;
+ clone3.__objToStr = __objToStr;
+ function __isDate(o) {
+ return typeof o === "object" && __objToStr(o) === "[object Date]";
+ }
+ ;
+ clone3.__isDate = __isDate;
+ function __isArray(o) {
+ return typeof o === "object" && __objToStr(o) === "[object Array]";
+ }
+ ;
+ clone3.__isArray = __isArray;
+ function __isRegExp(o) {
+ return typeof o === "object" && __objToStr(o) === "[object RegExp]";
+ }
+ ;
+ clone3.__isRegExp = __isRegExp;
+ function __getRegExpFlags(re) {
+ var flags = "";
+ if (re.global)
+ flags += "g";
+ if (re.ignoreCase)
+ flags += "i";
+ if (re.multiline)
+ flags += "m";
+ return flags;
+ }
+ ;
+ clone3.__getRegExpFlags = __getRegExpFlags;
+ return clone3;
+ }();
+ if (typeof module2 === "object" && module2.exports) {
+ module2.exports = clone2;
+ }
+ }
+});
+
+// ../../node_modules/.pnpm/defaults@1.0.3/node_modules/defaults/index.js
+var require_defaults = __commonJS({
+ "../../node_modules/.pnpm/defaults@1.0.3/node_modules/defaults/index.js"(exports, module2) {
+ var clone2 = require_clone();
+ module2.exports = function(options2, defaults) {
+ options2 = options2 || {};
+ Object.keys(defaults).forEach(function(key) {
+ if (typeof options2[key] === "undefined") {
+ options2[key] = clone2(defaults[key]);
+ }
+ });
+ return options2;
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/wcwidth@1.0.1/node_modules/wcwidth/combining.js
+var require_combining = __commonJS({
+ "../../node_modules/.pnpm/wcwidth@1.0.1/node_modules/wcwidth/combining.js"(exports, module2) {
+ module2.exports = [
+ [768, 879],
+ [1155, 1158],
+ [1160, 1161],
+ [1425, 1469],
+ [1471, 1471],
+ [1473, 1474],
+ [1476, 1477],
+ [1479, 1479],
+ [1536, 1539],
+ [1552, 1557],
+ [1611, 1630],
+ [1648, 1648],
+ [1750, 1764],
+ [1767, 1768],
+ [1770, 1773],
+ [1807, 1807],
+ [1809, 1809],
+ [1840, 1866],
+ [1958, 1968],
+ [2027, 2035],
+ [2305, 2306],
+ [2364, 2364],
+ [2369, 2376],
+ [2381, 2381],
+ [2385, 2388],
+ [2402, 2403],
+ [2433, 2433],
+ [2492, 2492],
+ [2497, 2500],
+ [2509, 2509],
+ [2530, 2531],
+ [2561, 2562],
+ [2620, 2620],
+ [2625, 2626],
+ [2631, 2632],
+ [2635, 2637],
+ [2672, 2673],
+ [2689, 2690],
+ [2748, 2748],
+ [2753, 2757],
+ [2759, 2760],
+ [2765, 2765],
+ [2786, 2787],
+ [2817, 2817],
+ [2876, 2876],
+ [2879, 2879],
+ [2881, 2883],
+ [2893, 2893],
+ [2902, 2902],
+ [2946, 2946],
+ [3008, 3008],
+ [3021, 3021],
+ [3134, 3136],
+ [3142, 3144],
+ [3146, 3149],
+ [3157, 3158],
+ [3260, 3260],
+ [3263, 3263],
+ [3270, 3270],
+ [3276, 3277],
+ [3298, 3299],
+ [3393, 3395],
+ [3405, 3405],
+ [3530, 3530],
+ [3538, 3540],
+ [3542, 3542],
+ [3633, 3633],
+ [3636, 3642],
+ [3655, 3662],
+ [3761, 3761],
+ [3764, 3769],
+ [3771, 3772],
+ [3784, 3789],
+ [3864, 3865],
+ [3893, 3893],
+ [3895, 3895],
+ [3897, 3897],
+ [3953, 3966],
+ [3968, 3972],
+ [3974, 3975],
+ [3984, 3991],
+ [3993, 4028],
+ [4038, 4038],
+ [4141, 4144],
+ [4146, 4146],
+ [4150, 4151],
+ [4153, 4153],
+ [4184, 4185],
+ [4448, 4607],
+ [4959, 4959],
+ [5906, 5908],
+ [5938, 5940],
+ [5970, 5971],
+ [6002, 6003],
+ [6068, 6069],
+ [6071, 6077],
+ [6086, 6086],
+ [6089, 6099],
+ [6109, 6109],
+ [6155, 6157],
+ [6313, 6313],
+ [6432, 6434],
+ [6439, 6440],
+ [6450, 6450],
+ [6457, 6459],
+ [6679, 6680],
+ [6912, 6915],
+ [6964, 6964],
+ [6966, 6970],
+ [6972, 6972],
+ [6978, 6978],
+ [7019, 7027],
+ [7616, 7626],
+ [7678, 7679],
+ [8203, 8207],
+ [8234, 8238],
+ [8288, 8291],
+ [8298, 8303],
+ [8400, 8431],
+ [12330, 12335],
+ [12441, 12442],
+ [43014, 43014],
+ [43019, 43019],
+ [43045, 43046],
+ [64286, 64286],
+ [65024, 65039],
+ [65056, 65059],
+ [65279, 65279],
+ [65529, 65531],
+ [68097, 68099],
+ [68101, 68102],
+ [68108, 68111],
+ [68152, 68154],
+ [68159, 68159],
+ [119143, 119145],
+ [119155, 119170],
+ [119173, 119179],
+ [119210, 119213],
+ [119362, 119364],
+ [917505, 917505],
+ [917536, 917631],
+ [917760, 917999]
+ ];
+ }
+});
+
+// ../../node_modules/.pnpm/wcwidth@1.0.1/node_modules/wcwidth/index.js
+var require_wcwidth = __commonJS({
+ "../../node_modules/.pnpm/wcwidth@1.0.1/node_modules/wcwidth/index.js"(exports, module2) {
+ "use strict";
+ var defaults = require_defaults();
+ var combining = require_combining();
+ var DEFAULTS = {
+ nul: 0,
+ control: 0
+ };
+ module2.exports = function wcwidth2(str) {
+ return wcswidth(str, DEFAULTS);
+ };
+ module2.exports.config = function(opts) {
+ opts = defaults(opts || {}, DEFAULTS);
+ return function wcwidth2(str) {
+ return wcswidth(str, opts);
+ };
+ };
+ function wcswidth(str, opts) {
+ if (typeof str !== "string")
+ return wcwidth(str, opts);
+ var s = 0;
+ for (var i = 0; i < str.length; i++) {
+ var n = wcwidth(str.charCodeAt(i), opts);
+ if (n < 0)
+ return -1;
+ s += n;
+ }
+ return s;
+ }
+ function wcwidth(ucs, opts) {
+ if (ucs === 0)
+ return opts.nul;
+ if (ucs < 32 || ucs >= 127 && ucs < 160)
+ return opts.control;
+ if (bisearch(ucs))
+ return 0;
+ return 1 + (ucs >= 4352 && (ucs <= 4447 || ucs == 9001 || ucs == 9002 || ucs >= 11904 && ucs <= 42191 && ucs != 12351 || ucs >= 44032 && ucs <= 55203 || ucs >= 63744 && ucs <= 64255 || ucs >= 65040 && ucs <= 65049 || ucs >= 65072 && ucs <= 65135 || ucs >= 65280 && ucs <= 65376 || ucs >= 65504 && ucs <= 65510 || ucs >= 131072 && ucs <= 196605 || ucs >= 196608 && ucs <= 262141));
+ }
+ function bisearch(ucs) {
+ var min = 0;
+ var max = combining.length - 1;
+ var mid;
+ if (ucs < combining[0][0] || ucs > combining[max][1])
+ return false;
+ while (max >= min) {
+ mid = Math.floor((min + max) / 2);
+ if (ucs > combining[mid][1])
+ min = mid + 1;
+ else if (ucs < combining[mid][0])
+ max = mid - 1;
+ else
+ return true;
+ }
+ return false;
+ }
+ }
+});
+
+// ../../node_modules/.pnpm/is-interactive@1.0.0/node_modules/is-interactive/index.js
+var require_is_interactive = __commonJS({
+ "../../node_modules/.pnpm/is-interactive@1.0.0/node_modules/is-interactive/index.js"(exports, module2) {
+ "use strict";
+ module2.exports = ({ stream = process.stdout } = {}) => {
+ return Boolean(stream && stream.isTTY && process.env.TERM !== "dumb" && !("CI" in process.env));
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/stream.js
+var require_stream = __commonJS({
+ "../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/stream.js"(exports, module2) {
+ module2.exports = require("stream");
+ }
+});
+
+// ../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/buffer_list.js
+var require_buffer_list = __commonJS({
+ "../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/buffer_list.js"(exports, module2) {
+ "use strict";
+ function ownKeys(object, enumerableOnly) {
+ var keys = Object.keys(object);
+ if (Object.getOwnPropertySymbols) {
+ var symbols = Object.getOwnPropertySymbols(object);
+ if (enumerableOnly)
+ symbols = symbols.filter(function(sym) {
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
+ });
+ keys.push.apply(keys, symbols);
+ }
+ return keys;
+ }
+ function _objectSpread(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i] != null ? arguments[i] : {};
+ if (i % 2) {
+ ownKeys(Object(source), true).forEach(function(key) {
+ _defineProperty(target, key, source[key]);
+ });
+ } else if (Object.getOwnPropertyDescriptors) {
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
+ } else {
+ ownKeys(Object(source)).forEach(function(key) {
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
+ });
+ }
+ }
+ return target;
+ }
+ function _defineProperty(obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true });
+ } else {
+ obj[key] = value;
+ }
+ return obj;
+ }
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+ function _defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor)
+ descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ function _createClass(Constructor, protoProps, staticProps) {
+ if (protoProps)
+ _defineProperties(Constructor.prototype, protoProps);
+ if (staticProps)
+ _defineProperties(Constructor, staticProps);
+ return Constructor;
+ }
+ var _require = require("buffer");
+ var Buffer2 = _require.Buffer;
+ var _require2 = require("util");
+ var inspect = _require2.inspect;
+ var custom = inspect && inspect.custom || "inspect";
+ function copyBuffer(src, target, offset) {
+ Buffer2.prototype.copy.call(src, target, offset);
+ }
+ module2.exports = /* @__PURE__ */ function() {
+ function BufferList() {
+ _classCallCheck(this, BufferList);
+ this.head = null;
+ this.tail = null;
+ this.length = 0;
+ }
+ _createClass(BufferList, [{
+ key: "push",
+ value: function push(v) {
+ var entry = {
+ data: v,
+ next: null
+ };
+ if (this.length > 0)
+ this.tail.next = entry;
+ else
+ this.head = entry;
+ this.tail = entry;
+ ++this.length;
+ }
+ }, {
+ key: "unshift",
+ value: function unshift(v) {
+ var entry = {
+ data: v,
+ next: this.head
+ };
+ if (this.length === 0)
+ this.tail = entry;
+ this.head = entry;
+ ++this.length;
+ }
+ }, {
+ key: "shift",
+ value: function shift() {
+ if (this.length === 0)
+ return;
+ var ret = this.head.data;
+ if (this.length === 1)
+ this.head = this.tail = null;
+ else
+ this.head = this.head.next;
+ --this.length;
+ return ret;
+ }
+ }, {
+ key: "clear",
+ value: function clear() {
+ this.head = this.tail = null;
+ this.length = 0;
+ }
+ }, {
+ key: "join",
+ value: function join(s) {
+ if (this.length === 0)
+ return "";
+ var p = this.head;
+ var ret = "" + p.data;
+ while (p = p.next) {
+ ret += s + p.data;
+ }
+ return ret;
+ }
+ }, {
+ key: "concat",
+ value: function concat(n) {
+ if (this.length === 0)
+ return Buffer2.alloc(0);
+ var ret = Buffer2.allocUnsafe(n >>> 0);
+ var p = this.head;
+ var i = 0;
+ while (p) {
+ copyBuffer(p.data, ret, i);
+ i += p.data.length;
+ p = p.next;
+ }
+ return ret;
+ }
+ }, {
+ key: "consume",
+ value: function consume(n, hasStrings) {
+ var ret;
+ if (n < this.head.data.length) {
+ ret = this.head.data.slice(0, n);
+ this.head.data = this.head.data.slice(n);
+ } else if (n === this.head.data.length) {
+ ret = this.shift();
+ } else {
+ ret = hasStrings ? this._getString(n) : this._getBuffer(n);
+ }
+ return ret;
+ }
+ }, {
+ key: "first",
+ value: function first() {
+ return this.head.data;
+ }
+ }, {
+ key: "_getString",
+ value: function _getString(n) {
+ var p = this.head;
+ var c = 1;
+ var ret = p.data;
+ n -= ret.length;
+ while (p = p.next) {
+ var str = p.data;
+ var nb = n > str.length ? str.length : n;
+ if (nb === str.length)
+ ret += str;
+ else
+ ret += str.slice(0, n);
+ n -= nb;
+ if (n === 0) {
+ if (nb === str.length) {
+ ++c;
+ if (p.next)
+ this.head = p.next;
+ else
+ this.head = this.tail = null;
+ } else {
+ this.head = p;
+ p.data = str.slice(nb);
+ }
+ break;
+ }
+ ++c;
+ }
+ this.length -= c;
+ return ret;
+ }
+ }, {
+ key: "_getBuffer",
+ value: function _getBuffer(n) {
+ var ret = Buffer2.allocUnsafe(n);
+ var p = this.head;
+ var c = 1;
+ p.data.copy(ret);
+ n -= p.data.length;
+ while (p = p.next) {
+ var buf = p.data;
+ var nb = n > buf.length ? buf.length : n;
+ buf.copy(ret, ret.length - n, 0, nb);
+ n -= nb;
+ if (n === 0) {
+ if (nb === buf.length) {
+ ++c;
+ if (p.next)
+ this.head = p.next;
+ else
+ this.head = this.tail = null;
+ } else {
+ this.head = p;
+ p.data = buf.slice(nb);
+ }
+ break;
+ }
+ ++c;
+ }
+ this.length -= c;
+ return ret;
+ }
+ }, {
+ key: custom,
+ value: function value(_, options2) {
+ return inspect(this, _objectSpread({}, options2, {
+ depth: 0,
+ customInspect: false
+ }));
+ }
+ }]);
+ return BufferList;
+ }();
+ }
+});
+
+// ../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/destroy.js
+var require_destroy = __commonJS({
+ "../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/destroy.js"(exports, module2) {
+ "use strict";
+ function destroy(err, cb) {
+ var _this = this;
+ var readableDestroyed = this._readableState && this._readableState.destroyed;
+ var writableDestroyed = this._writableState && this._writableState.destroyed;
+ if (readableDestroyed || writableDestroyed) {
+ if (cb) {
+ cb(err);
+ } else if (err) {
+ if (!this._writableState) {
+ process.nextTick(emitErrorNT, this, err);
+ } else if (!this._writableState.errorEmitted) {
+ this._writableState.errorEmitted = true;
+ process.nextTick(emitErrorNT, this, err);
+ }
+ }
+ return this;
+ }
+ if (this._readableState) {
+ this._readableState.destroyed = true;
+ }
+ if (this._writableState) {
+ this._writableState.destroyed = true;
+ }
+ this._destroy(err || null, function(err2) {
+ if (!cb && err2) {
+ if (!_this._writableState) {
+ process.nextTick(emitErrorAndCloseNT, _this, err2);
+ } else if (!_this._writableState.errorEmitted) {
+ _this._writableState.errorEmitted = true;
+ process.nextTick(emitErrorAndCloseNT, _this, err2);
+ } else {
+ process.nextTick(emitCloseNT, _this);
+ }
+ } else if (cb) {
+ process.nextTick(emitCloseNT, _this);
+ cb(err2);
+ } else {
+ process.nextTick(emitCloseNT, _this);
+ }
+ });
+ return this;
+ }
+ function emitErrorAndCloseNT(self2, err) {
+ emitErrorNT(self2, err);
+ emitCloseNT(self2);
+ }
+ function emitCloseNT(self2) {
+ if (self2._writableState && !self2._writableState.emitClose)
+ return;
+ if (self2._readableState && !self2._readableState.emitClose)
+ return;
+ self2.emit("close");
+ }
+ function undestroy() {
+ if (this._readableState) {
+ this._readableState.destroyed = false;
+ this._readableState.reading = false;
+ this._readableState.ended = false;
+ this._readableState.endEmitted = false;
+ }
+ if (this._writableState) {
+ this._writableState.destroyed = false;
+ this._writableState.ended = false;
+ this._writableState.ending = false;
+ this._writableState.finalCalled = false;
+ this._writableState.prefinished = false;
+ this._writableState.finished = false;
+ this._writableState.errorEmitted = false;
+ }
+ }
+ function emitErrorNT(self2, err) {
+ self2.emit("error", err);
+ }
+ function errorOrDestroy(stream, err) {
+ var rState = stream._readableState;
+ var wState = stream._writableState;
+ if (rState && rState.autoDestroy || wState && wState.autoDestroy)
+ stream.destroy(err);
+ else
+ stream.emit("error", err);
+ }
+ module2.exports = {
+ destroy,
+ undestroy,
+ errorOrDestroy
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/errors.js
+var require_errors = __commonJS({
+ "../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/errors.js"(exports, module2) {
+ "use strict";
+ var codes = {};
+ function createErrorType(code, message, Base) {
+ if (!Base) {
+ Base = Error;
+ }
+ function getMessage(arg1, arg2, arg3) {
+ if (typeof message === "string") {
+ return message;
+ } else {
+ return message(arg1, arg2, arg3);
+ }
+ }
+ class NodeError extends Base {
+ constructor(arg1, arg2, arg3) {
+ super(getMessage(arg1, arg2, arg3));
+ }
+ }
+ NodeError.prototype.name = Base.name;
+ NodeError.prototype.code = code;
+ codes[code] = NodeError;
+ }
+ function oneOf(expected, thing) {
+ if (Array.isArray(expected)) {
+ const len = expected.length;
+ expected = expected.map((i) => String(i));
+ if (len > 2) {
+ return `one of ${thing} ${expected.slice(0, len - 1).join(", ")}, or ` + expected[len - 1];
+ } else if (len === 2) {
+ return `one of ${thing} ${expected[0]} or ${expected[1]}`;
+ } else {
+ return `of ${thing} ${expected[0]}`;
+ }
+ } else {
+ return `of ${thing} ${String(expected)}`;
+ }
+ }
+ function startsWith(str, search, pos) {
+ return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;
+ }
+ function endsWith(str, search, this_len) {
+ if (this_len === void 0 || this_len > str.length) {
+ this_len = str.length;
+ }
+ return str.substring(this_len - search.length, this_len) === search;
+ }
+ function includes(str, search, start) {
+ if (typeof start !== "number") {
+ start = 0;
+ }
+ if (start + search.length > str.length) {
+ return false;
+ } else {
+ return str.indexOf(search, start) !== -1;
+ }
+ }
+ createErrorType("ERR_INVALID_OPT_VALUE", function(name, value) {
+ return 'The value "' + value + '" is invalid for option "' + name + '"';
+ }, TypeError);
+ createErrorType("ERR_INVALID_ARG_TYPE", function(name, expected, actual) {
+ let determiner;
+ if (typeof expected === "string" && startsWith(expected, "not ")) {
+ determiner = "must not be";
+ expected = expected.replace(/^not /, "");
+ } else {
+ determiner = "must be";
+ }
+ let msg;
+ if (endsWith(name, " argument")) {
+ msg = `The ${name} ${determiner} ${oneOf(expected, "type")}`;
+ } else {
+ const type = includes(name, ".") ? "property" : "argument";
+ msg = `The "${name}" ${type} ${determiner} ${oneOf(expected, "type")}`;
+ }
+ msg += `. Received type ${typeof actual}`;
+ return msg;
+ }, TypeError);
+ createErrorType("ERR_STREAM_PUSH_AFTER_EOF", "stream.push() after EOF");
+ createErrorType("ERR_METHOD_NOT_IMPLEMENTED", function(name) {
+ return "The " + name + " method is not implemented";
+ });
+ createErrorType("ERR_STREAM_PREMATURE_CLOSE", "Premature close");
+ createErrorType("ERR_STREAM_DESTROYED", function(name) {
+ return "Cannot call " + name + " after a stream was destroyed";
+ });
+ createErrorType("ERR_MULTIPLE_CALLBACK", "Callback called multiple times");
+ createErrorType("ERR_STREAM_CANNOT_PIPE", "Cannot pipe, not readable");
+ createErrorType("ERR_STREAM_WRITE_AFTER_END", "write after end");
+ createErrorType("ERR_STREAM_NULL_VALUES", "May not write null values to stream", TypeError);
+ createErrorType("ERR_UNKNOWN_ENCODING", function(arg) {
+ return "Unknown encoding: " + arg;
+ }, TypeError);
+ createErrorType("ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "stream.unshift() after end event");
+ module2.exports.codes = codes;
+ }
+});
+
+// ../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/state.js
+var require_state = __commonJS({
+ "../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/state.js"(exports, module2) {
+ "use strict";
+ var ERR_INVALID_OPT_VALUE = require_errors().codes.ERR_INVALID_OPT_VALUE;
+ function highWaterMarkFrom(options2, isDuplex, duplexKey) {
+ return options2.highWaterMark != null ? options2.highWaterMark : isDuplex ? options2[duplexKey] : null;
+ }
+ function getHighWaterMark(state, options2, duplexKey, isDuplex) {
+ var hwm = highWaterMarkFrom(options2, isDuplex, duplexKey);
+ if (hwm != null) {
+ if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {
+ var name = isDuplex ? duplexKey : "highWaterMark";
+ throw new ERR_INVALID_OPT_VALUE(name, hwm);
+ }
+ return Math.floor(hwm);
+ }
+ return state.objectMode ? 16 : 16 * 1024;
+ }
+ module2.exports = {
+ getHighWaterMark
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js
+var require_inherits_browser = __commonJS({
+ "../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js"(exports, module2) {
+ if (typeof Object.create === "function") {
+ module2.exports = function inherits(ctor, superCtor) {
+ if (superCtor) {
+ ctor.super_ = superCtor;
+ ctor.prototype = Object.create(superCtor.prototype, {
+ constructor: {
+ value: ctor,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ }
+ };
+ } else {
+ module2.exports = function inherits(ctor, superCtor) {
+ if (superCtor) {
+ ctor.super_ = superCtor;
+ var TempCtor = function() {
+ };
+ TempCtor.prototype = superCtor.prototype;
+ ctor.prototype = new TempCtor();
+ ctor.prototype.constructor = ctor;
+ }
+ };
+ }
+ }
+});
+
+// ../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits.js
+var require_inherits = __commonJS({
+ "../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits.js"(exports, module2) {
+ try {
+ util = require("util");
+ if (typeof util.inherits !== "function")
+ throw "";
+ module2.exports = util.inherits;
+ } catch (e) {
+ module2.exports = require_inherits_browser();
+ }
+ var util;
+ }
+});
+
+// ../../node_modules/.pnpm/util-deprecate@1.0.2/node_modules/util-deprecate/node.js
+var require_node = __commonJS({
+ "../../node_modules/.pnpm/util-deprecate@1.0.2/node_modules/util-deprecate/node.js"(exports, module2) {
+ module2.exports = require("util").deprecate;
+ }
+});
+
+// ../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/_stream_writable.js
+var require_stream_writable = __commonJS({
+ "../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/_stream_writable.js"(exports, module2) {
+ "use strict";
+ module2.exports = Writable;
+ function CorkedRequest(state) {
+ var _this = this;
+ this.next = null;
+ this.entry = null;
+ this.finish = function() {
+ onCorkedFinish(_this, state);
+ };
+ }
+ var Duplex;
+ Writable.WritableState = WritableState;
+ var internalUtil = {
+ deprecate: require_node()
+ };
+ var Stream = require_stream();
+ var Buffer2 = require("buffer").Buffer;
+ var OurUint8Array = global.Uint8Array || function() {
+ };
+ function _uint8ArrayToBuffer(chunk) {
+ return Buffer2.from(chunk);
+ }
+ function _isUint8Array(obj) {
+ return Buffer2.isBuffer(obj) || obj instanceof OurUint8Array;
+ }
+ var destroyImpl = require_destroy();
+ var _require = require_state();
+ var getHighWaterMark = _require.getHighWaterMark;
+ var _require$codes = require_errors().codes;
+ var ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE;
+ var ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED;
+ var ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK;
+ var ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE;
+ var ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;
+ var ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES;
+ var ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END;
+ var ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;
+ var errorOrDestroy = destroyImpl.errorOrDestroy;
+ require_inherits()(Writable, Stream);
+ function nop() {
+ }
+ function WritableState(options2, stream, isDuplex) {
+ Duplex = Duplex || require_stream_duplex();
+ options2 = options2 || {};
+ if (typeof isDuplex !== "boolean")
+ isDuplex = stream instanceof Duplex;
+ this.objectMode = !!options2.objectMode;
+ if (isDuplex)
+ this.objectMode = this.objectMode || !!options2.writableObjectMode;
+ this.highWaterMark = getHighWaterMark(this, options2, "writableHighWaterMark", isDuplex);
+ this.finalCalled = false;
+ this.needDrain = false;
+ this.ending = false;
+ this.ended = false;
+ this.finished = false;
+ this.destroyed = false;
+ var noDecode = options2.decodeStrings === false;
+ this.decodeStrings = !noDecode;
+ this.defaultEncoding = options2.defaultEncoding || "utf8";
+ this.length = 0;
+ this.writing = false;
+ this.corked = 0;
+ this.sync = true;
+ this.bufferProcessing = false;
+ this.onwrite = function(er) {
+ onwrite(stream, er);
+ };
+ this.writecb = null;
+ this.writelen = 0;
+ this.bufferedRequest = null;
+ this.lastBufferedRequest = null;
+ this.pendingcb = 0;
+ this.prefinished = false;
+ this.errorEmitted = false;
+ this.emitClose = options2.emitClose !== false;
+ this.autoDestroy = !!options2.autoDestroy;
+ this.bufferedRequestCount = 0;
+ this.corkedRequestsFree = new CorkedRequest(this);
+ }
+ WritableState.prototype.getBuffer = function getBuffer() {
+ var current = this.bufferedRequest;
+ var out = [];
+ while (current) {
+ out.push(current);
+ current = current.next;
+ }
+ return out;
+ };
+ (function() {
+ try {
+ Object.defineProperty(WritableState.prototype, "buffer", {
+ get: internalUtil.deprecate(function writableStateBufferGetter() {
+ return this.getBuffer();
+ }, "_writableState.buffer is deprecated. Use _writableState.getBuffer instead.", "DEP0003")
+ });
+ } catch (_) {
+ }
+ })();
+ var realHasInstance;
+ if (typeof Symbol === "function" && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === "function") {
+ realHasInstance = Function.prototype[Symbol.hasInstance];
+ Object.defineProperty(Writable, Symbol.hasInstance, {
+ value: function value(object) {
+ if (realHasInstance.call(this, object))
+ return true;
+ if (this !== Writable)
+ return false;
+ return object && object._writableState instanceof WritableState;
+ }
+ });
+ } else {
+ realHasInstance = function realHasInstance2(object) {
+ return object instanceof this;
+ };
+ }
+ function Writable(options2) {
+ Duplex = Duplex || require_stream_duplex();
+ var isDuplex = this instanceof Duplex;
+ if (!isDuplex && !realHasInstance.call(Writable, this))
+ return new Writable(options2);
+ this._writableState = new WritableState(options2, this, isDuplex);
+ this.writable = true;
+ if (options2) {
+ if (typeof options2.write === "function")
+ this._write = options2.write;
+ if (typeof options2.writev === "function")
+ this._writev = options2.writev;
+ if (typeof options2.destroy === "function")
+ this._destroy = options2.destroy;
+ if (typeof options2.final === "function")
+ this._final = options2.final;
+ }
+ Stream.call(this);
+ }
+ Writable.prototype.pipe = function() {
+ errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());
+ };
+ function writeAfterEnd(stream, cb) {
+ var er = new ERR_STREAM_WRITE_AFTER_END();
+ errorOrDestroy(stream, er);
+ process.nextTick(cb, er);
+ }
+ function validChunk(stream, state, chunk, cb) {
+ var er;
+ if (chunk === null) {
+ er = new ERR_STREAM_NULL_VALUES();
+ } else if (typeof chunk !== "string" && !state.objectMode) {
+ er = new ERR_INVALID_ARG_TYPE("chunk", ["string", "Buffer"], chunk);
+ }
+ if (er) {
+ errorOrDestroy(stream, er);
+ process.nextTick(cb, er);
+ return false;
+ }
+ return true;
+ }
+ Writable.prototype.write = function(chunk, encoding, cb) {
+ var state = this._writableState;
+ var ret = false;
+ var isBuf = !state.objectMode && _isUint8Array(chunk);
+ if (isBuf && !Buffer2.isBuffer(chunk)) {
+ chunk = _uint8ArrayToBuffer(chunk);
+ }
+ if (typeof encoding === "function") {
+ cb = encoding;
+ encoding = null;
+ }
+ if (isBuf)
+ encoding = "buffer";
+ else if (!encoding)
+ encoding = state.defaultEncoding;
+ if (typeof cb !== "function")
+ cb = nop;
+ if (state.ending)
+ writeAfterEnd(this, cb);
+ else if (isBuf || validChunk(this, state, chunk, cb)) {
+ state.pendingcb++;
+ ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
+ }
+ return ret;
+ };
+ Writable.prototype.cork = function() {
+ this._writableState.corked++;
+ };
+ Writable.prototype.uncork = function() {
+ var state = this._writableState;
+ if (state.corked) {
+ state.corked--;
+ if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest)
+ clearBuffer(this, state);
+ }
+ };
+ Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
+ if (typeof encoding === "string")
+ encoding = encoding.toLowerCase();
+ if (!(["hex", "utf8", "utf-8", "ascii", "binary", "base64", "ucs2", "ucs-2", "utf16le", "utf-16le", "raw"].indexOf((encoding + "").toLowerCase()) > -1))
+ throw new ERR_UNKNOWN_ENCODING(encoding);
+ this._writableState.defaultEncoding = encoding;
+ return this;
+ };
+ Object.defineProperty(Writable.prototype, "writableBuffer", {
+ enumerable: false,
+ get: function get() {
+ return this._writableState && this._writableState.getBuffer();
+ }
+ });
+ function decodeChunk(state, chunk, encoding) {
+ if (!state.objectMode && state.decodeStrings !== false && typeof chunk === "string") {
+ chunk = Buffer2.from(chunk, encoding);
+ }
+ return chunk;
+ }
+ Object.defineProperty(Writable.prototype, "writableHighWaterMark", {
+ enumerable: false,
+ get: function get() {
+ return this._writableState.highWaterMark;
+ }
+ });
+ function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
+ if (!isBuf) {
+ var newChunk = decodeChunk(state, chunk, encoding);
+ if (chunk !== newChunk) {
+ isBuf = true;
+ encoding = "buffer";
+ chunk = newChunk;
+ }
+ }
+ var len = state.objectMode ? 1 : chunk.length;
+ state.length += len;
+ var ret = state.length < state.highWaterMark;
+ if (!ret)
+ state.needDrain = true;
+ if (state.writing || state.corked) {
+ var last = state.lastBufferedRequest;
+ state.lastBufferedRequest = {
+ chunk,
+ encoding,
+ isBuf,
+ callback: cb,
+ next: null
+ };
+ if (last) {
+ last.next = state.lastBufferedRequest;
+ } else {
+ state.bufferedRequest = state.lastBufferedRequest;
+ }
+ state.bufferedRequestCount += 1;
+ } else {
+ doWrite(stream, state, false, len, chunk, encoding, cb);
+ }
+ return ret;
+ }
+ function doWrite(stream, state, writev, len, chunk, encoding, cb) {
+ state.writelen = len;
+ state.writecb = cb;
+ state.writing = true;
+ state.sync = true;
+ if (state.destroyed)
+ state.onwrite(new ERR_STREAM_DESTROYED("write"));
+ else if (writev)
+ stream._writev(chunk, state.onwrite);
+ else
+ stream._write(chunk, encoding, state.onwrite);
+ state.sync = false;
+ }
+ function onwriteError(stream, state, sync, er, cb) {
+ --state.pendingcb;
+ if (sync) {
+ process.nextTick(cb, er);
+ process.nextTick(finishMaybe, stream, state);
+ stream._writableState.errorEmitted = true;
+ errorOrDestroy(stream, er);
+ } else {
+ cb(er);
+ stream._writableState.errorEmitted = true;
+ errorOrDestroy(stream, er);
+ finishMaybe(stream, state);
+ }
+ }
+ function onwriteStateUpdate(state) {
+ state.writing = false;
+ state.writecb = null;
+ state.length -= state.writelen;
+ state.writelen = 0;
+ }
+ function onwrite(stream, er) {
+ var state = stream._writableState;
+ var sync = state.sync;
+ var cb = state.writecb;
+ if (typeof cb !== "function")
+ throw new ERR_MULTIPLE_CALLBACK();
+ onwriteStateUpdate(state);
+ if (er)
+ onwriteError(stream, state, sync, er, cb);
+ else {
+ var finished = needFinish(state) || stream.destroyed;
+ if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
+ clearBuffer(stream, state);
+ }
+ if (sync) {
+ process.nextTick(afterWrite, stream, state, finished, cb);
+ } else {
+ afterWrite(stream, state, finished, cb);
+ }
+ }
+ }
+ function afterWrite(stream, state, finished, cb) {
+ if (!finished)
+ onwriteDrain(stream, state);
+ state.pendingcb--;
+ cb();
+ finishMaybe(stream, state);
+ }
+ function onwriteDrain(stream, state) {
+ if (state.length === 0 && state.needDrain) {
+ state.needDrain = false;
+ stream.emit("drain");
+ }
+ }
+ function clearBuffer(stream, state) {
+ state.bufferProcessing = true;
+ var entry = state.bufferedRequest;
+ if (stream._writev && entry && entry.next) {
+ var l = state.bufferedRequestCount;
+ var buffer = new Array(l);
+ var holder = state.corkedRequestsFree;
+ holder.entry = entry;
+ var count = 0;
+ var allBuffers = true;
+ while (entry) {
+ buffer[count] = entry;
+ if (!entry.isBuf)
+ allBuffers = false;
+ entry = entry.next;
+ count += 1;
+ }
+ buffer.allBuffers = allBuffers;
+ doWrite(stream, state, true, state.length, buffer, "", holder.finish);
+ state.pendingcb++;
+ state.lastBufferedRequest = null;
+ if (holder.next) {
+ state.corkedRequestsFree = holder.next;
+ holder.next = null;
+ } else {
+ state.corkedRequestsFree = new CorkedRequest(state);
+ }
+ state.bufferedRequestCount = 0;
+ } else {
+ while (entry) {
+ var chunk = entry.chunk;
+ var encoding = entry.encoding;
+ var cb = entry.callback;
+ var len = state.objectMode ? 1 : chunk.length;
+ doWrite(stream, state, false, len, chunk, encoding, cb);
+ entry = entry.next;
+ state.bufferedRequestCount--;
+ if (state.writing) {
+ break;
+ }
+ }
+ if (entry === null)
+ state.lastBufferedRequest = null;
+ }
+ state.bufferedRequest = entry;
+ state.bufferProcessing = false;
+ }
+ Writable.prototype._write = function(chunk, encoding, cb) {
+ cb(new ERR_METHOD_NOT_IMPLEMENTED("_write()"));
+ };
+ Writable.prototype._writev = null;
+ Writable.prototype.end = function(chunk, encoding, cb) {
+ var state = this._writableState;
+ if (typeof chunk === "function") {
+ cb = chunk;
+ chunk = null;
+ encoding = null;
+ } else if (typeof encoding === "function") {
+ cb = encoding;
+ encoding = null;
+ }
+ if (chunk !== null && chunk !== void 0)
+ this.write(chunk, encoding);
+ if (state.corked) {
+ state.corked = 1;
+ this.uncork();
+ }
+ if (!state.ending)
+ endWritable(this, state, cb);
+ return this;
+ };
+ Object.defineProperty(Writable.prototype, "writableLength", {
+ enumerable: false,
+ get: function get() {
+ return this._writableState.length;
+ }
+ });
+ function needFinish(state) {
+ return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
+ }
+ function callFinal(stream, state) {
+ stream._final(function(err) {
+ state.pendingcb--;
+ if (err) {
+ errorOrDestroy(stream, err);
+ }
+ state.prefinished = true;
+ stream.emit("prefinish");
+ finishMaybe(stream, state);
+ });
+ }
+ function prefinish(stream, state) {
+ if (!state.prefinished && !state.finalCalled) {
+ if (typeof stream._final === "function" && !state.destroyed) {
+ state.pendingcb++;
+ state.finalCalled = true;
+ process.nextTick(callFinal, stream, state);
+ } else {
+ state.prefinished = true;
+ stream.emit("prefinish");
+ }
+ }
+ }
+ function finishMaybe(stream, state) {
+ var need = needFinish(state);
+ if (need) {
+ prefinish(stream, state);
+ if (state.pendingcb === 0) {
+ state.finished = true;
+ stream.emit("finish");
+ if (state.autoDestroy) {
+ var rState = stream._readableState;
+ if (!rState || rState.autoDestroy && rState.endEmitted) {
+ stream.destroy();
+ }
+ }
+ }
+ }
+ return need;
+ }
+ function endWritable(stream, state, cb) {
+ state.ending = true;
+ finishMaybe(stream, state);
+ if (cb) {
+ if (state.finished)
+ process.nextTick(cb);
+ else
+ stream.once("finish", cb);
+ }
+ state.ended = true;
+ stream.writable = false;
+ }
+ function onCorkedFinish(corkReq, state, err) {
+ var entry = corkReq.entry;
+ corkReq.entry = null;
+ while (entry) {
+ var cb = entry.callback;
+ state.pendingcb--;
+ cb(err);
+ entry = entry.next;
+ }
+ state.corkedRequestsFree.next = corkReq;
+ }
+ Object.defineProperty(Writable.prototype, "destroyed", {
+ enumerable: false,
+ get: function get() {
+ if (this._writableState === void 0) {
+ return false;
+ }
+ return this._writableState.destroyed;
+ },
+ set: function set(value) {
+ if (!this._writableState) {
+ return;
+ }
+ this._writableState.destroyed = value;
+ }
+ });
+ Writable.prototype.destroy = destroyImpl.destroy;
+ Writable.prototype._undestroy = destroyImpl.undestroy;
+ Writable.prototype._destroy = function(err, cb) {
+ cb(err);
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/_stream_duplex.js
+var require_stream_duplex = __commonJS({
+ "../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/_stream_duplex.js"(exports, module2) {
+ "use strict";
+ var objectKeys = Object.keys || function(obj) {
+ var keys2 = [];
+ for (var key in obj) {
+ keys2.push(key);
+ }
+ return keys2;
+ };
+ module2.exports = Duplex;
+ var Readable = require_stream_readable();
+ var Writable = require_stream_writable();
+ require_inherits()(Duplex, Readable);
+ {
+ keys = objectKeys(Writable.prototype);
+ for (v = 0; v < keys.length; v++) {
+ method = keys[v];
+ if (!Duplex.prototype[method])
+ Duplex.prototype[method] = Writable.prototype[method];
+ }
+ }
+ var keys;
+ var method;
+ var v;
+ function Duplex(options2) {
+ if (!(this instanceof Duplex))
+ return new Duplex(options2);
+ Readable.call(this, options2);
+ Writable.call(this, options2);
+ this.allowHalfOpen = true;
+ if (options2) {
+ if (options2.readable === false)
+ this.readable = false;
+ if (options2.writable === false)
+ this.writable = false;
+ if (options2.allowHalfOpen === false) {
+ this.allowHalfOpen = false;
+ this.once("end", onend);
+ }
+ }
+ }
+ Object.defineProperty(Duplex.prototype, "writableHighWaterMark", {
+ enumerable: false,
+ get: function get() {
+ return this._writableState.highWaterMark;
+ }
+ });
+ Object.defineProperty(Duplex.prototype, "writableBuffer", {
+ enumerable: false,
+ get: function get() {
+ return this._writableState && this._writableState.getBuffer();
+ }
+ });
+ Object.defineProperty(Duplex.prototype, "writableLength", {
+ enumerable: false,
+ get: function get() {
+ return this._writableState.length;
+ }
+ });
+ function onend() {
+ if (this._writableState.ended)
+ return;
+ process.nextTick(onEndNT, this);
+ }
+ function onEndNT(self2) {
+ self2.end();
+ }
+ Object.defineProperty(Duplex.prototype, "destroyed", {
+ enumerable: false,
+ get: function get() {
+ if (this._readableState === void 0 || this._writableState === void 0) {
+ return false;
+ }
+ return this._readableState.destroyed && this._writableState.destroyed;
+ },
+ set: function set(value) {
+ if (this._readableState === void 0 || this._writableState === void 0) {
+ return;
+ }
+ this._readableState.destroyed = value;
+ this._writableState.destroyed = value;
+ }
+ });
+ }
+});
+
+// ../../node_modules/.pnpm/safe-buffer@5.2.1/node_modules/safe-buffer/index.js
+var require_safe_buffer = __commonJS({
+ "../../node_modules/.pnpm/safe-buffer@5.2.1/node_modules/safe-buffer/index.js"(exports, module2) {
+ var buffer = require("buffer");
+ var Buffer2 = buffer.Buffer;
+ function copyProps(src, dst) {
+ for (var key in src) {
+ dst[key] = src[key];
+ }
+ }
+ if (Buffer2.from && Buffer2.alloc && Buffer2.allocUnsafe && Buffer2.allocUnsafeSlow) {
+ module2.exports = buffer;
+ } else {
+ copyProps(buffer, exports);
+ exports.Buffer = SafeBuffer;
+ }
+ function SafeBuffer(arg, encodingOrOffset, length) {
+ return Buffer2(arg, encodingOrOffset, length);
+ }
+ SafeBuffer.prototype = Object.create(Buffer2.prototype);
+ copyProps(Buffer2, SafeBuffer);
+ SafeBuffer.from = function(arg, encodingOrOffset, length) {
+ if (typeof arg === "number") {
+ throw new TypeError("Argument must not be a number");
+ }
+ return Buffer2(arg, encodingOrOffset, length);
+ };
+ SafeBuffer.alloc = function(size, fill, encoding) {
+ if (typeof size !== "number") {
+ throw new TypeError("Argument must be a number");
+ }
+ var buf = Buffer2(size);
+ if (fill !== void 0) {
+ if (typeof encoding === "string") {
+ buf.fill(fill, encoding);
+ } else {
+ buf.fill(fill);
+ }
+ } else {
+ buf.fill(0);
+ }
+ return buf;
+ };
+ SafeBuffer.allocUnsafe = function(size) {
+ if (typeof size !== "number") {
+ throw new TypeError("Argument must be a number");
+ }
+ return Buffer2(size);
+ };
+ SafeBuffer.allocUnsafeSlow = function(size) {
+ if (typeof size !== "number") {
+ throw new TypeError("Argument must be a number");
+ }
+ return buffer.SlowBuffer(size);
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/string_decoder@1.3.0/node_modules/string_decoder/lib/string_decoder.js
+var require_string_decoder = __commonJS({
+ "../../node_modules/.pnpm/string_decoder@1.3.0/node_modules/string_decoder/lib/string_decoder.js"(exports) {
+ "use strict";
+ var Buffer2 = require_safe_buffer().Buffer;
+ var isEncoding = Buffer2.isEncoding || function(encoding) {
+ encoding = "" + encoding;
+ switch (encoding && encoding.toLowerCase()) {
+ case "hex":
+ case "utf8":
+ case "utf-8":
+ case "ascii":
+ case "binary":
+ case "base64":
+ case "ucs2":
+ case "ucs-2":
+ case "utf16le":
+ case "utf-16le":
+ case "raw":
+ return true;
+ default:
+ return false;
+ }
+ };
+ function _normalizeEncoding(enc) {
+ if (!enc)
+ return "utf8";
+ var retried;
+ while (true) {
+ switch (enc) {
+ case "utf8":
+ case "utf-8":
+ return "utf8";
+ case "ucs2":
+ case "ucs-2":
+ case "utf16le":
+ case "utf-16le":
+ return "utf16le";
+ case "latin1":
+ case "binary":
+ return "latin1";
+ case "base64":
+ case "ascii":
+ case "hex":
+ return enc;
+ default:
+ if (retried)
+ return;
+ enc = ("" + enc).toLowerCase();
+ retried = true;
+ }
+ }
+ }
+ function normalizeEncoding(enc) {
+ var nenc = _normalizeEncoding(enc);
+ if (typeof nenc !== "string" && (Buffer2.isEncoding === isEncoding || !isEncoding(enc)))
+ throw new Error("Unknown encoding: " + enc);
+ return nenc || enc;
+ }
+ exports.StringDecoder = StringDecoder;
+ function StringDecoder(encoding) {
+ this.encoding = normalizeEncoding(encoding);
+ var nb;
+ switch (this.encoding) {
+ case "utf16le":
+ this.text = utf16Text;
+ this.end = utf16End;
+ nb = 4;
+ break;
+ case "utf8":
+ this.fillLast = utf8FillLast;
+ nb = 4;
+ break;
+ case "base64":
+ this.text = base64Text;
+ this.end = base64End;
+ nb = 3;
+ break;
+ default:
+ this.write = simpleWrite;
+ this.end = simpleEnd;
+ return;
+ }
+ this.lastNeed = 0;
+ this.lastTotal = 0;
+ this.lastChar = Buffer2.allocUnsafe(nb);
+ }
+ StringDecoder.prototype.write = function(buf) {
+ if (buf.length === 0)
+ return "";
+ var r;
+ var i;
+ if (this.lastNeed) {
+ r = this.fillLast(buf);
+ if (r === void 0)
+ return "";
+ i = this.lastNeed;
+ this.lastNeed = 0;
+ } else {
+ i = 0;
+ }
+ if (i < buf.length)
+ return r ? r + this.text(buf, i) : this.text(buf, i);
+ return r || "";
+ };
+ StringDecoder.prototype.end = utf8End;
+ StringDecoder.prototype.text = utf8Text;
+ StringDecoder.prototype.fillLast = function(buf) {
+ if (this.lastNeed <= buf.length) {
+ buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
+ return this.lastChar.toString(this.encoding, 0, this.lastTotal);
+ }
+ buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
+ this.lastNeed -= buf.length;
+ };
+ function utf8CheckByte(byte) {
+ if (byte <= 127)
+ return 0;
+ else if (byte >> 5 === 6)
+ return 2;
+ else if (byte >> 4 === 14)
+ return 3;
+ else if (byte >> 3 === 30)
+ return 4;
+ return byte >> 6 === 2 ? -1 : -2;
+ }
+ function utf8CheckIncomplete(self2, buf, i) {
+ var j = buf.length - 1;
+ if (j < i)
+ return 0;
+ var nb = utf8CheckByte(buf[j]);
+ if (nb >= 0) {
+ if (nb > 0)
+ self2.lastNeed = nb - 1;
+ return nb;
+ }
+ if (--j < i || nb === -2)
+ return 0;
+ nb = utf8CheckByte(buf[j]);
+ if (nb >= 0) {
+ if (nb > 0)
+ self2.lastNeed = nb - 2;
+ return nb;
+ }
+ if (--j < i || nb === -2)
+ return 0;
+ nb = utf8CheckByte(buf[j]);
+ if (nb >= 0) {
+ if (nb > 0) {
+ if (nb === 2)
+ nb = 0;
+ else
+ self2.lastNeed = nb - 3;
+ }
+ return nb;
+ }
+ return 0;
+ }
+ function utf8CheckExtraBytes(self2, buf, p) {
+ if ((buf[0] & 192) !== 128) {
+ self2.lastNeed = 0;
+ return "\uFFFD";
+ }
+ if (self2.lastNeed > 1 && buf.length > 1) {
+ if ((buf[1] & 192) !== 128) {
+ self2.lastNeed = 1;
+ return "\uFFFD";
+ }
+ if (self2.lastNeed > 2 && buf.length > 2) {
+ if ((buf[2] & 192) !== 128) {
+ self2.lastNeed = 2;
+ return "\uFFFD";
+ }
+ }
+ }
+ }
+ function utf8FillLast(buf) {
+ var p = this.lastTotal - this.lastNeed;
+ var r = utf8CheckExtraBytes(this, buf, p);
+ if (r !== void 0)
+ return r;
+ if (this.lastNeed <= buf.length) {
+ buf.copy(this.lastChar, p, 0, this.lastNeed);
+ return this.lastChar.toString(this.encoding, 0, this.lastTotal);
+ }
+ buf.copy(this.lastChar, p, 0, buf.length);
+ this.lastNeed -= buf.length;
+ }
+ function utf8Text(buf, i) {
+ var total = utf8CheckIncomplete(this, buf, i);
+ if (!this.lastNeed)
+ return buf.toString("utf8", i);
+ this.lastTotal = total;
+ var end = buf.length - (total - this.lastNeed);
+ buf.copy(this.lastChar, 0, end);
+ return buf.toString("utf8", i, end);
+ }
+ function utf8End(buf) {
+ var r = buf && buf.length ? this.write(buf) : "";
+ if (this.lastNeed)
+ return r + "\uFFFD";
+ return r;
+ }
+ function utf16Text(buf, i) {
+ if ((buf.length - i) % 2 === 0) {
+ var r = buf.toString("utf16le", i);
+ if (r) {
+ var c = r.charCodeAt(r.length - 1);
+ if (c >= 55296 && c <= 56319) {
+ this.lastNeed = 2;
+ this.lastTotal = 4;
+ this.lastChar[0] = buf[buf.length - 2];
+ this.lastChar[1] = buf[buf.length - 1];
+ return r.slice(0, -1);
+ }
+ }
+ return r;
+ }
+ this.lastNeed = 1;
+ this.lastTotal = 2;
+ this.lastChar[0] = buf[buf.length - 1];
+ return buf.toString("utf16le", i, buf.length - 1);
+ }
+ function utf16End(buf) {
+ var r = buf && buf.length ? this.write(buf) : "";
+ if (this.lastNeed) {
+ var end = this.lastTotal - this.lastNeed;
+ return r + this.lastChar.toString("utf16le", 0, end);
+ }
+ return r;
+ }
+ function base64Text(buf, i) {
+ var n = (buf.length - i) % 3;
+ if (n === 0)
+ return buf.toString("base64", i);
+ this.lastNeed = 3 - n;
+ this.lastTotal = 3;
+ if (n === 1) {
+ this.lastChar[0] = buf[buf.length - 1];
+ } else {
+ this.lastChar[0] = buf[buf.length - 2];
+ this.lastChar[1] = buf[buf.length - 1];
+ }
+ return buf.toString("base64", i, buf.length - n);
+ }
+ function base64End(buf) {
+ var r = buf && buf.length ? this.write(buf) : "";
+ if (this.lastNeed)
+ return r + this.lastChar.toString("base64", 0, 3 - this.lastNeed);
+ return r;
+ }
+ function simpleWrite(buf) {
+ return buf.toString(this.encoding);
+ }
+ function simpleEnd(buf) {
+ return buf && buf.length ? this.write(buf) : "";
+ }
+ }
+});
+
+// ../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/end-of-stream.js
+var require_end_of_stream = __commonJS({
+ "../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/end-of-stream.js"(exports, module2) {
+ "use strict";
+ var ERR_STREAM_PREMATURE_CLOSE = require_errors().codes.ERR_STREAM_PREMATURE_CLOSE;
+ function once(callback) {
+ var called = false;
+ return function() {
+ if (called)
+ return;
+ called = true;
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+ callback.apply(this, args);
+ };
+ }
+ function noop() {
+ }
+ function isRequest(stream) {
+ return stream.setHeader && typeof stream.abort === "function";
+ }
+ function eos(stream, opts, callback) {
+ if (typeof opts === "function")
+ return eos(stream, null, opts);
+ if (!opts)
+ opts = {};
+ callback = once(callback || noop);
+ var readable = opts.readable || opts.readable !== false && stream.readable;
+ var writable = opts.writable || opts.writable !== false && stream.writable;
+ var onlegacyfinish = function onlegacyfinish2() {
+ if (!stream.writable)
+ onfinish();
+ };
+ var writableEnded = stream._writableState && stream._writableState.finished;
+ var onfinish = function onfinish2() {
+ writable = false;
+ writableEnded = true;
+ if (!readable)
+ callback.call(stream);
+ };
+ var readableEnded = stream._readableState && stream._readableState.endEmitted;
+ var onend = function onend2() {
+ readable = false;
+ readableEnded = true;
+ if (!writable)
+ callback.call(stream);
+ };
+ var onerror = function onerror2(err) {
+ callback.call(stream, err);
+ };
+ var onclose = function onclose2() {
+ var err;
+ if (readable && !readableEnded) {
+ if (!stream._readableState || !stream._readableState.ended)
+ err = new ERR_STREAM_PREMATURE_CLOSE();
+ return callback.call(stream, err);
+ }
+ if (writable && !writableEnded) {
+ if (!stream._writableState || !stream._writableState.ended)
+ err = new ERR_STREAM_PREMATURE_CLOSE();
+ return callback.call(stream, err);
+ }
+ };
+ var onrequest = function onrequest2() {
+ stream.req.on("finish", onfinish);
+ };
+ if (isRequest(stream)) {
+ stream.on("complete", onfinish);
+ stream.on("abort", onclose);
+ if (stream.req)
+ onrequest();
+ else
+ stream.on("request", onrequest);
+ } else if (writable && !stream._writableState) {
+ stream.on("end", onlegacyfinish);
+ stream.on("close", onlegacyfinish);
+ }
+ stream.on("end", onend);
+ stream.on("finish", onfinish);
+ if (opts.error !== false)
+ stream.on("error", onerror);
+ stream.on("close", onclose);
+ return function() {
+ stream.removeListener("complete", onfinish);
+ stream.removeListener("abort", onclose);
+ stream.removeListener("request", onrequest);
+ if (stream.req)
+ stream.req.removeListener("finish", onfinish);
+ stream.removeListener("end", onlegacyfinish);
+ stream.removeListener("close", onlegacyfinish);
+ stream.removeListener("finish", onfinish);
+ stream.removeListener("end", onend);
+ stream.removeListener("error", onerror);
+ stream.removeListener("close", onclose);
+ };
+ }
+ module2.exports = eos;
+ }
+});
+
+// ../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/async_iterator.js
+var require_async_iterator = __commonJS({
+ "../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/async_iterator.js"(exports, module2) {
+ "use strict";
+ var _Object$setPrototypeO;
+ function _defineProperty(obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true });
+ } else {
+ obj[key] = value;
+ }
+ return obj;
+ }
+ var finished = require_end_of_stream();
+ var kLastResolve = Symbol("lastResolve");
+ var kLastReject = Symbol("lastReject");
+ var kError = Symbol("error");
+ var kEnded = Symbol("ended");
+ var kLastPromise = Symbol("lastPromise");
+ var kHandlePromise = Symbol("handlePromise");
+ var kStream = Symbol("stream");
+ function createIterResult(value, done) {
+ return {
+ value,
+ done
+ };
+ }
+ function readAndResolve(iter) {
+ var resolve = iter[kLastResolve];
+ if (resolve !== null) {
+ var data = iter[kStream].read();
+ if (data !== null) {
+ iter[kLastPromise] = null;
+ iter[kLastResolve] = null;
+ iter[kLastReject] = null;
+ resolve(createIterResult(data, false));
+ }
+ }
+ }
+ function onReadable(iter) {
+ process.nextTick(readAndResolve, iter);
+ }
+ function wrapForNext(lastPromise, iter) {
+ return function(resolve, reject) {
+ lastPromise.then(function() {
+ if (iter[kEnded]) {
+ resolve(createIterResult(void 0, true));
+ return;
+ }
+ iter[kHandlePromise](resolve, reject);
+ }, reject);
+ };
+ }
+ var AsyncIteratorPrototype = Object.getPrototypeOf(function() {
+ });
+ var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {
+ get stream() {
+ return this[kStream];
+ },
+ next: function next() {
+ var _this = this;
+ var error = this[kError];
+ if (error !== null) {
+ return Promise.reject(error);
+ }
+ if (this[kEnded]) {
+ return Promise.resolve(createIterResult(void 0, true));
+ }
+ if (this[kStream].destroyed) {
+ return new Promise(function(resolve, reject) {
+ process.nextTick(function() {
+ if (_this[kError]) {
+ reject(_this[kError]);
+ } else {
+ resolve(createIterResult(void 0, true));
+ }
+ });
+ });
+ }
+ var lastPromise = this[kLastPromise];
+ var promise;
+ if (lastPromise) {
+ promise = new Promise(wrapForNext(lastPromise, this));
+ } else {
+ var data = this[kStream].read();
+ if (data !== null) {
+ return Promise.resolve(createIterResult(data, false));
+ }
+ promise = new Promise(this[kHandlePromise]);
+ }
+ this[kLastPromise] = promise;
+ return promise;
+ }
+ }, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function() {
+ return this;
+ }), _defineProperty(_Object$setPrototypeO, "return", function _return() {
+ var _this2 = this;
+ return new Promise(function(resolve, reject) {
+ _this2[kStream].destroy(null, function(err) {
+ if (err) {
+ reject(err);
+ return;
+ }
+ resolve(createIterResult(void 0, true));
+ });
+ });
+ }), _Object$setPrototypeO), AsyncIteratorPrototype);
+ var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator2(stream) {
+ var _Object$create;
+ var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {
+ value: stream,
+ writable: true
+ }), _defineProperty(_Object$create, kLastResolve, {
+ value: null,
+ writable: true
+ }), _defineProperty(_Object$create, kLastReject, {
+ value: null,
+ writable: true
+ }), _defineProperty(_Object$create, kError, {
+ value: null,
+ writable: true
+ }), _defineProperty(_Object$create, kEnded, {
+ value: stream._readableState.endEmitted,
+ writable: true
+ }), _defineProperty(_Object$create, kHandlePromise, {
+ value: function value(resolve, reject) {
+ var data = iterator[kStream].read();
+ if (data) {
+ iterator[kLastPromise] = null;
+ iterator[kLastResolve] = null;
+ iterator[kLastReject] = null;
+ resolve(createIterResult(data, false));
+ } else {
+ iterator[kLastResolve] = resolve;
+ iterator[kLastReject] = reject;
+ }
+ },
+ writable: true
+ }), _Object$create));
+ iterator[kLastPromise] = null;
+ finished(stream, function(err) {
+ if (err && err.code !== "ERR_STREAM_PREMATURE_CLOSE") {
+ var reject = iterator[kLastReject];
+ if (reject !== null) {
+ iterator[kLastPromise] = null;
+ iterator[kLastResolve] = null;
+ iterator[kLastReject] = null;
+ reject(err);
+ }
+ iterator[kError] = err;
+ return;
+ }
+ var resolve = iterator[kLastResolve];
+ if (resolve !== null) {
+ iterator[kLastPromise] = null;
+ iterator[kLastResolve] = null;
+ iterator[kLastReject] = null;
+ resolve(createIterResult(void 0, true));
+ }
+ iterator[kEnded] = true;
+ });
+ stream.on("readable", onReadable.bind(null, iterator));
+ return iterator;
+ };
+ module2.exports = createReadableStreamAsyncIterator;
+ }
+});
+
+// ../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/from.js
+var require_from = __commonJS({
+ "../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/from.js"(exports, module2) {
+ "use strict";
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
+ try {
+ var info = gen[key](arg);
+ var value = info.value;
+ } catch (error) {
+ reject(error);
+ return;
+ }
+ if (info.done) {
+ resolve(value);
+ } else {
+ Promise.resolve(value).then(_next, _throw);
+ }
+ }
+ function _asyncToGenerator(fn) {
+ return function() {
+ var self2 = this, args = arguments;
+ return new Promise(function(resolve, reject) {
+ var gen = fn.apply(self2, args);
+ function _next(value) {
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
+ }
+ function _throw(err) {
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
+ }
+ _next(void 0);
+ });
+ };
+ }
+ function ownKeys(object, enumerableOnly) {
+ var keys = Object.keys(object);
+ if (Object.getOwnPropertySymbols) {
+ var symbols = Object.getOwnPropertySymbols(object);
+ if (enumerableOnly)
+ symbols = symbols.filter(function(sym) {
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
+ });
+ keys.push.apply(keys, symbols);
+ }
+ return keys;
+ }
+ function _objectSpread(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i] != null ? arguments[i] : {};
+ if (i % 2) {
+ ownKeys(Object(source), true).forEach(function(key) {
+ _defineProperty(target, key, source[key]);
+ });
+ } else if (Object.getOwnPropertyDescriptors) {
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
+ } else {
+ ownKeys(Object(source)).forEach(function(key) {
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
+ });
+ }
+ }
+ return target;
+ }
+ function _defineProperty(obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true });
+ } else {
+ obj[key] = value;
+ }
+ return obj;
+ }
+ var ERR_INVALID_ARG_TYPE = require_errors().codes.ERR_INVALID_ARG_TYPE;
+ function from(Readable, iterable, opts) {
+ var iterator;
+ if (iterable && typeof iterable.next === "function") {
+ iterator = iterable;
+ } else if (iterable && iterable[Symbol.asyncIterator])
+ iterator = iterable[Symbol.asyncIterator]();
+ else if (iterable && iterable[Symbol.iterator])
+ iterator = iterable[Symbol.iterator]();
+ else
+ throw new ERR_INVALID_ARG_TYPE("iterable", ["Iterable"], iterable);
+ var readable = new Readable(_objectSpread({
+ objectMode: true
+ }, opts));
+ var reading = false;
+ readable._read = function() {
+ if (!reading) {
+ reading = true;
+ next();
+ }
+ };
+ function next() {
+ return _next2.apply(this, arguments);
+ }
+ function _next2() {
+ _next2 = _asyncToGenerator(function* () {
+ try {
+ var _ref = yield iterator.next(), value = _ref.value, done = _ref.done;
+ if (done) {
+ readable.push(null);
+ } else if (readable.push(yield value)) {
+ next();
+ } else {
+ reading = false;
+ }
+ } catch (err) {
+ readable.destroy(err);
+ }
+ });
+ return _next2.apply(this, arguments);
+ }
+ return readable;
+ }
+ module2.exports = from;
+ }
+});
+
+// ../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/_stream_readable.js
+var require_stream_readable = __commonJS({
+ "../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/_stream_readable.js"(exports, module2) {
+ "use strict";
+ module2.exports = Readable;
+ var Duplex;
+ Readable.ReadableState = ReadableState;
+ var EE = require("events").EventEmitter;
+ var EElistenerCount = function EElistenerCount2(emitter, type) {
+ return emitter.listeners(type).length;
+ };
+ var Stream = require_stream();
+ var Buffer2 = require("buffer").Buffer;
+ var OurUint8Array = global.Uint8Array || function() {
+ };
+ function _uint8ArrayToBuffer(chunk) {
+ return Buffer2.from(chunk);
+ }
+ function _isUint8Array(obj) {
+ return Buffer2.isBuffer(obj) || obj instanceof OurUint8Array;
+ }
+ var debugUtil = require("util");
+ var debug;
+ if (debugUtil && debugUtil.debuglog) {
+ debug = debugUtil.debuglog("stream");
+ } else {
+ debug = function debug2() {
+ };
+ }
+ var BufferList = require_buffer_list();
+ var destroyImpl = require_destroy();
+ var _require = require_state();
+ var getHighWaterMark = _require.getHighWaterMark;
+ var _require$codes = require_errors().codes;
+ var ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE;
+ var ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF;
+ var ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED;
+ var ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;
+ var StringDecoder;
+ var createReadableStreamAsyncIterator;
+ var from;
+ require_inherits()(Readable, Stream);
+ var errorOrDestroy = destroyImpl.errorOrDestroy;
+ var kProxyEvents = ["error", "close", "destroy", "pause", "resume"];
+ function prependListener(emitter, event, fn) {
+ if (typeof emitter.prependListener === "function")
+ return emitter.prependListener(event, fn);
+ if (!emitter._events || !emitter._events[event])
+ emitter.on(event, fn);
+ else if (Array.isArray(emitter._events[event]))
+ emitter._events[event].unshift(fn);
+ else
+ emitter._events[event] = [fn, emitter._events[event]];
+ }
+ function ReadableState(options2, stream, isDuplex) {
+ Duplex = Duplex || require_stream_duplex();
+ options2 = options2 || {};
+ if (typeof isDuplex !== "boolean")
+ isDuplex = stream instanceof Duplex;
+ this.objectMode = !!options2.objectMode;
+ if (isDuplex)
+ this.objectMode = this.objectMode || !!options2.readableObjectMode;
+ this.highWaterMark = getHighWaterMark(this, options2, "readableHighWaterMark", isDuplex);
+ this.buffer = new BufferList();
+ this.length = 0;
+ this.pipes = null;
+ this.pipesCount = 0;
+ this.flowing = null;
+ this.ended = false;
+ this.endEmitted = false;
+ this.reading = false;
+ this.sync = true;
+ this.needReadable = false;
+ this.emittedReadable = false;
+ this.readableListening = false;
+ this.resumeScheduled = false;
+ this.paused = true;
+ this.emitClose = options2.emitClose !== false;
+ this.autoDestroy = !!options2.autoDestroy;
+ this.destroyed = false;
+ this.defaultEncoding = options2.defaultEncoding || "utf8";
+ this.awaitDrain = 0;
+ this.readingMore = false;
+ this.decoder = null;
+ this.encoding = null;
+ if (options2.encoding) {
+ if (!StringDecoder)
+ StringDecoder = require_string_decoder().StringDecoder;
+ this.decoder = new StringDecoder(options2.encoding);
+ this.encoding = options2.encoding;
+ }
+ }
+ function Readable(options2) {
+ Duplex = Duplex || require_stream_duplex();
+ if (!(this instanceof Readable))
+ return new Readable(options2);
+ var isDuplex = this instanceof Duplex;
+ this._readableState = new ReadableState(options2, this, isDuplex);
+ this.readable = true;
+ if (options2) {
+ if (typeof options2.read === "function")
+ this._read = options2.read;
+ if (typeof options2.destroy === "function")
+ this._destroy = options2.destroy;
+ }
+ Stream.call(this);
+ }
+ Object.defineProperty(Readable.prototype, "destroyed", {
+ enumerable: false,
+ get: function get() {
+ if (this._readableState === void 0) {
+ return false;
+ }
+ return this._readableState.destroyed;
+ },
+ set: function set(value) {
+ if (!this._readableState) {
+ return;
+ }
+ this._readableState.destroyed = value;
+ }
+ });
+ Readable.prototype.destroy = destroyImpl.destroy;
+ Readable.prototype._undestroy = destroyImpl.undestroy;
+ Readable.prototype._destroy = function(err, cb) {
+ cb(err);
+ };
+ Readable.prototype.push = function(chunk, encoding) {
+ var state = this._readableState;
+ var skipChunkCheck;
+ if (!state.objectMode) {
+ if (typeof chunk === "string") {
+ encoding = encoding || state.defaultEncoding;
+ if (encoding !== state.encoding) {
+ chunk = Buffer2.from(chunk, encoding);
+ encoding = "";
+ }
+ skipChunkCheck = true;
+ }
+ } else {
+ skipChunkCheck = true;
+ }
+ return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
+ };
+ Readable.prototype.unshift = function(chunk) {
+ return readableAddChunk(this, chunk, null, true, false);
+ };
+ function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
+ debug("readableAddChunk", chunk);
+ var state = stream._readableState;
+ if (chunk === null) {
+ state.reading = false;
+ onEofChunk(stream, state);
+ } else {
+ var er;
+ if (!skipChunkCheck)
+ er = chunkInvalid(state, chunk);
+ if (er) {
+ errorOrDestroy(stream, er);
+ } else if (state.objectMode || chunk && chunk.length > 0) {
+ if (typeof chunk !== "string" && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer2.prototype) {
+ chunk = _uint8ArrayToBuffer(chunk);
+ }
+ if (addToFront) {
+ if (state.endEmitted)
+ errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());
+ else
+ addChunk(stream, state, chunk, true);
+ } else if (state.ended) {
+ errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());
+ } else if (state.destroyed) {
+ return false;
+ } else {
+ state.reading = false;
+ if (state.decoder && !encoding) {
+ chunk = state.decoder.write(chunk);
+ if (state.objectMode || chunk.length !== 0)
+ addChunk(stream, state, chunk, false);
+ else
+ maybeReadMore(stream, state);
+ } else {
+ addChunk(stream, state, chunk, false);
+ }
+ }
+ } else if (!addToFront) {
+ state.reading = false;
+ maybeReadMore(stream, state);
+ }
+ }
+ return !state.ended && (state.length < state.highWaterMark || state.length === 0);
+ }
+ function addChunk(stream, state, chunk, addToFront) {
+ if (state.flowing && state.length === 0 && !state.sync) {
+ state.awaitDrain = 0;
+ stream.emit("data", chunk);
+ } else {
+ state.length += state.objectMode ? 1 : chunk.length;
+ if (addToFront)
+ state.buffer.unshift(chunk);
+ else
+ state.buffer.push(chunk);
+ if (state.needReadable)
+ emitReadable(stream);
+ }
+ maybeReadMore(stream, state);
+ }
+ function chunkInvalid(state, chunk) {
+ var er;
+ if (!_isUint8Array(chunk) && typeof chunk !== "string" && chunk !== void 0 && !state.objectMode) {
+ er = new ERR_INVALID_ARG_TYPE("chunk", ["string", "Buffer", "Uint8Array"], chunk);
+ }
+ return er;
+ }
+ Readable.prototype.isPaused = function() {
+ return this._readableState.flowing === false;
+ };
+ Readable.prototype.setEncoding = function(enc) {
+ if (!StringDecoder)
+ StringDecoder = require_string_decoder().StringDecoder;
+ var decoder = new StringDecoder(enc);
+ this._readableState.decoder = decoder;
+ this._readableState.encoding = this._readableState.decoder.encoding;
+ var p = this._readableState.buffer.head;
+ var content = "";
+ while (p !== null) {
+ content += decoder.write(p.data);
+ p = p.next;
+ }
+ this._readableState.buffer.clear();
+ if (content !== "")
+ this._readableState.buffer.push(content);
+ this._readableState.length = content.length;
+ return this;
+ };
+ var MAX_HWM = 1073741824;
+ function computeNewHighWaterMark(n) {
+ if (n >= MAX_HWM) {
+ n = MAX_HWM;
+ } else {
+ n--;
+ n |= n >>> 1;
+ n |= n >>> 2;
+ n |= n >>> 4;
+ n |= n >>> 8;
+ n |= n >>> 16;
+ n++;
+ }
+ return n;
+ }
+ function howMuchToRead(n, state) {
+ if (n <= 0 || state.length === 0 && state.ended)
+ return 0;
+ if (state.objectMode)
+ return 1;
+ if (n !== n) {
+ if (state.flowing && state.length)
+ return state.buffer.head.data.length;
+ else
+ return state.length;
+ }
+ if (n > state.highWaterMark)
+ state.highWaterMark = computeNewHighWaterMark(n);
+ if (n <= state.length)
+ return n;
+ if (!state.ended) {
+ state.needReadable = true;
+ return 0;
+ }
+ return state.length;
+ }
+ Readable.prototype.read = function(n) {
+ debug("read", n);
+ n = parseInt(n, 10);
+ var state = this._readableState;
+ var nOrig = n;
+ if (n !== 0)
+ state.emittedReadable = false;
+ if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {
+ debug("read: emitReadable", state.length, state.ended);
+ if (state.length === 0 && state.ended)
+ endReadable(this);
+ else
+ emitReadable(this);
+ return null;
+ }
+ n = howMuchToRead(n, state);
+ if (n === 0 && state.ended) {
+ if (state.length === 0)
+ endReadable(this);
+ return null;
+ }
+ var doRead = state.needReadable;
+ debug("need readable", doRead);
+ if (state.length === 0 || state.length - n < state.highWaterMark) {
+ doRead = true;
+ debug("length less than watermark", doRead);
+ }
+ if (state.ended || state.reading) {
+ doRead = false;
+ debug("reading or ended", doRead);
+ } else if (doRead) {
+ debug("do read");
+ state.reading = true;
+ state.sync = true;
+ if (state.length === 0)
+ state.needReadable = true;
+ this._read(state.highWaterMark);
+ state.sync = false;
+ if (!state.reading)
+ n = howMuchToRead(nOrig, state);
+ }
+ var ret;
+ if (n > 0)
+ ret = fromList(n, state);
+ else
+ ret = null;
+ if (ret === null) {
+ state.needReadable = state.length <= state.highWaterMark;
+ n = 0;
+ } else {
+ state.length -= n;
+ state.awaitDrain = 0;
+ }
+ if (state.length === 0) {
+ if (!state.ended)
+ state.needReadable = true;
+ if (nOrig !== n && state.ended)
+ endReadable(this);
+ }
+ if (ret !== null)
+ this.emit("data", ret);
+ return ret;
+ };
+ function onEofChunk(stream, state) {
+ debug("onEofChunk");
+ if (state.ended)
+ return;
+ if (state.decoder) {
+ var chunk = state.decoder.end();
+ if (chunk && chunk.length) {
+ state.buffer.push(chunk);
+ state.length += state.objectMode ? 1 : chunk.length;
+ }
+ }
+ state.ended = true;
+ if (state.sync) {
+ emitReadable(stream);
+ } else {
+ state.needReadable = false;
+ if (!state.emittedReadable) {
+ state.emittedReadable = true;
+ emitReadable_(stream);
+ }
+ }
+ }
+ function emitReadable(stream) {
+ var state = stream._readableState;
+ debug("emitReadable", state.needReadable, state.emittedReadable);
+ state.needReadable = false;
+ if (!state.emittedReadable) {
+ debug("emitReadable", state.flowing);
+ state.emittedReadable = true;
+ process.nextTick(emitReadable_, stream);
+ }
+ }
+ function emitReadable_(stream) {
+ var state = stream._readableState;
+ debug("emitReadable_", state.destroyed, state.length, state.ended);
+ if (!state.destroyed && (state.length || state.ended)) {
+ stream.emit("readable");
+ state.emittedReadable = false;
+ }
+ state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;
+ flow(stream);
+ }
+ function maybeReadMore(stream, state) {
+ if (!state.readingMore) {
+ state.readingMore = true;
+ process.nextTick(maybeReadMore_, stream, state);
+ }
+ }
+ function maybeReadMore_(stream, state) {
+ while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {
+ var len = state.length;
+ debug("maybeReadMore read 0");
+ stream.read(0);
+ if (len === state.length)
+ break;
+ }
+ state.readingMore = false;
+ }
+ Readable.prototype._read = function(n) {
+ errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED("_read()"));
+ };
+ Readable.prototype.pipe = function(dest, pipeOpts) {
+ var src = this;
+ var state = this._readableState;
+ switch (state.pipesCount) {
+ case 0:
+ state.pipes = dest;
+ break;
+ case 1:
+ state.pipes = [state.pipes, dest];
+ break;
+ default:
+ state.pipes.push(dest);
+ break;
+ }
+ state.pipesCount += 1;
+ debug("pipe count=%d opts=%j", state.pipesCount, pipeOpts);
+ var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
+ var endFn = doEnd ? onend : unpipe;
+ if (state.endEmitted)
+ process.nextTick(endFn);
+ else
+ src.once("end", endFn);
+ dest.on("unpipe", onunpipe);
+ function onunpipe(readable, unpipeInfo) {
+ debug("onunpipe");
+ if (readable === src) {
+ if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
+ unpipeInfo.hasUnpiped = true;
+ cleanup();
+ }
+ }
+ }
+ function onend() {
+ debug("onend");
+ dest.end();
+ }
+ var ondrain = pipeOnDrain(src);
+ dest.on("drain", ondrain);
+ var cleanedUp = false;
+ function cleanup() {
+ debug("cleanup");
+ dest.removeListener("close", onclose);
+ dest.removeListener("finish", onfinish);
+ dest.removeListener("drain", ondrain);
+ dest.removeListener("error", onerror);
+ dest.removeListener("unpipe", onunpipe);
+ src.removeListener("end", onend);
+ src.removeListener("end", unpipe);
+ src.removeListener("data", ondata);
+ cleanedUp = true;
+ if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain))
+ ondrain();
+ }
+ src.on("data", ondata);
+ function ondata(chunk) {
+ debug("ondata");
+ var ret = dest.write(chunk);
+ debug("dest.write", ret);
+ if (ret === false) {
+ if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
+ debug("false write response, pause", state.awaitDrain);
+ state.awaitDrain++;
+ }
+ src.pause();
+ }
+ }
+ function onerror(er) {
+ debug("onerror", er);
+ unpipe();
+ dest.removeListener("error", onerror);
+ if (EElistenerCount(dest, "error") === 0)
+ errorOrDestroy(dest, er);
+ }
+ prependListener(dest, "error", onerror);
+ function onclose() {
+ dest.removeListener("finish", onfinish);
+ unpipe();
+ }
+ dest.once("close", onclose);
+ function onfinish() {
+ debug("onfinish");
+ dest.removeListener("close", onclose);
+ unpipe();
+ }
+ dest.once("finish", onfinish);
+ function unpipe() {
+ debug("unpipe");
+ src.unpipe(dest);
+ }
+ dest.emit("pipe", src);
+ if (!state.flowing) {
+ debug("pipe resume");
+ src.resume();
+ }
+ return dest;
+ };
+ function pipeOnDrain(src) {
+ return function pipeOnDrainFunctionResult() {
+ var state = src._readableState;
+ debug("pipeOnDrain", state.awaitDrain);
+ if (state.awaitDrain)
+ state.awaitDrain--;
+ if (state.awaitDrain === 0 && EElistenerCount(src, "data")) {
+ state.flowing = true;
+ flow(src);
+ }
+ };
+ }
+ Readable.prototype.unpipe = function(dest) {
+ var state = this._readableState;
+ var unpipeInfo = {
+ hasUnpiped: false
+ };
+ if (state.pipesCount === 0)
+ return this;
+ if (state.pipesCount === 1) {
+ if (dest && dest !== state.pipes)
+ return this;
+ if (!dest)
+ dest = state.pipes;
+ state.pipes = null;
+ state.pipesCount = 0;
+ state.flowing = false;
+ if (dest)
+ dest.emit("unpipe", this, unpipeInfo);
+ return this;
+ }
+ if (!dest) {
+ var dests = state.pipes;
+ var len = state.pipesCount;
+ state.pipes = null;
+ state.pipesCount = 0;
+ state.flowing = false;
+ for (var i = 0; i < len; i++) {
+ dests[i].emit("unpipe", this, {
+ hasUnpiped: false
+ });
+ }
+ return this;
+ }
+ var index = indexOf(state.pipes, dest);
+ if (index === -1)
+ return this;
+ state.pipes.splice(index, 1);
+ state.pipesCount -= 1;
+ if (state.pipesCount === 1)
+ state.pipes = state.pipes[0];
+ dest.emit("unpipe", this, unpipeInfo);
+ return this;
+ };
+ Readable.prototype.on = function(ev, fn) {
+ var res = Stream.prototype.on.call(this, ev, fn);
+ var state = this._readableState;
+ if (ev === "data") {
+ state.readableListening = this.listenerCount("readable") > 0;
+ if (state.flowing !== false)
+ this.resume();
+ } else if (ev === "readable") {
+ if (!state.endEmitted && !state.readableListening) {
+ state.readableListening = state.needReadable = true;
+ state.flowing = false;
+ state.emittedReadable = false;
+ debug("on readable", state.length, state.reading);
+ if (state.length) {
+ emitReadable(this);
+ } else if (!state.reading) {
+ process.nextTick(nReadingNextTick, this);
+ }
+ }
+ }
+ return res;
+ };
+ Readable.prototype.addListener = Readable.prototype.on;
+ Readable.prototype.removeListener = function(ev, fn) {
+ var res = Stream.prototype.removeListener.call(this, ev, fn);
+ if (ev === "readable") {
+ process.nextTick(updateReadableListening, this);
+ }
+ return res;
+ };
+ Readable.prototype.removeAllListeners = function(ev) {
+ var res = Stream.prototype.removeAllListeners.apply(this, arguments);
+ if (ev === "readable" || ev === void 0) {
+ process.nextTick(updateReadableListening, this);
+ }
+ return res;
+ };
+ function updateReadableListening(self2) {
+ var state = self2._readableState;
+ state.readableListening = self2.listenerCount("readable") > 0;
+ if (state.resumeScheduled && !state.paused) {
+ state.flowing = true;
+ } else if (self2.listenerCount("data") > 0) {
+ self2.resume();
+ }
+ }
+ function nReadingNextTick(self2) {
+ debug("readable nexttick read 0");
+ self2.read(0);
+ }
+ Readable.prototype.resume = function() {
+ var state = this._readableState;
+ if (!state.flowing) {
+ debug("resume");
+ state.flowing = !state.readableListening;
+ resume(this, state);
+ }
+ state.paused = false;
+ return this;
+ };
+ function resume(stream, state) {
+ if (!state.resumeScheduled) {
+ state.resumeScheduled = true;
+ process.nextTick(resume_, stream, state);
+ }
+ }
+ function resume_(stream, state) {
+ debug("resume", state.reading);
+ if (!state.reading) {
+ stream.read(0);
+ }
+ state.resumeScheduled = false;
+ stream.emit("resume");
+ flow(stream);
+ if (state.flowing && !state.reading)
+ stream.read(0);
+ }
+ Readable.prototype.pause = function() {
+ debug("call pause flowing=%j", this._readableState.flowing);
+ if (this._readableState.flowing !== false) {
+ debug("pause");
+ this._readableState.flowing = false;
+ this.emit("pause");
+ }
+ this._readableState.paused = true;
+ return this;
+ };
+ function flow(stream) {
+ var state = stream._readableState;
+ debug("flow", state.flowing);
+ while (state.flowing && stream.read() !== null) {
+ ;
+ }
+ }
+ Readable.prototype.wrap = function(stream) {
+ var _this = this;
+ var state = this._readableState;
+ var paused = false;
+ stream.on("end", function() {
+ debug("wrapped end");
+ if (state.decoder && !state.ended) {
+ var chunk = state.decoder.end();
+ if (chunk && chunk.length)
+ _this.push(chunk);
+ }
+ _this.push(null);
+ });
+ stream.on("data", function(chunk) {
+ debug("wrapped data");
+ if (state.decoder)
+ chunk = state.decoder.write(chunk);
+ if (state.objectMode && (chunk === null || chunk === void 0))
+ return;
+ else if (!state.objectMode && (!chunk || !chunk.length))
+ return;
+ var ret = _this.push(chunk);
+ if (!ret) {
+ paused = true;
+ stream.pause();
+ }
+ });
+ for (var i in stream) {
+ if (this[i] === void 0 && typeof stream[i] === "function") {
+ this[i] = function methodWrap(method) {
+ return function methodWrapReturnFunction() {
+ return stream[method].apply(stream, arguments);
+ };
+ }(i);
+ }
+ }
+ for (var n = 0; n < kProxyEvents.length; n++) {
+ stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));
+ }
+ this._read = function(n2) {
+ debug("wrapped _read", n2);
+ if (paused) {
+ paused = false;
+ stream.resume();
+ }
+ };
+ return this;
+ };
+ if (typeof Symbol === "function") {
+ Readable.prototype[Symbol.asyncIterator] = function() {
+ if (createReadableStreamAsyncIterator === void 0) {
+ createReadableStreamAsyncIterator = require_async_iterator();
+ }
+ return createReadableStreamAsyncIterator(this);
+ };
+ }
+ Object.defineProperty(Readable.prototype, "readableHighWaterMark", {
+ enumerable: false,
+ get: function get() {
+ return this._readableState.highWaterMark;
+ }
+ });
+ Object.defineProperty(Readable.prototype, "readableBuffer", {
+ enumerable: false,
+ get: function get() {
+ return this._readableState && this._readableState.buffer;
+ }
+ });
+ Object.defineProperty(Readable.prototype, "readableFlowing", {
+ enumerable: false,
+ get: function get() {
+ return this._readableState.flowing;
+ },
+ set: function set(state) {
+ if (this._readableState) {
+ this._readableState.flowing = state;
+ }
+ }
+ });
+ Readable._fromList = fromList;
+ Object.defineProperty(Readable.prototype, "readableLength", {
+ enumerable: false,
+ get: function get() {
+ return this._readableState.length;
+ }
+ });
+ function fromList(n, state) {
+ if (state.length === 0)
+ return null;
+ var ret;
+ if (state.objectMode)
+ ret = state.buffer.shift();
+ else if (!n || n >= state.length) {
+ if (state.decoder)
+ ret = state.buffer.join("");
+ else if (state.buffer.length === 1)
+ ret = state.buffer.first();
+ else
+ ret = state.buffer.concat(state.length);
+ state.buffer.clear();
+ } else {
+ ret = state.buffer.consume(n, state.decoder);
+ }
+ return ret;
+ }
+ function endReadable(stream) {
+ var state = stream._readableState;
+ debug("endReadable", state.endEmitted);
+ if (!state.endEmitted) {
+ state.ended = true;
+ process.nextTick(endReadableNT, state, stream);
+ }
+ }
+ function endReadableNT(state, stream) {
+ debug("endReadableNT", state.endEmitted, state.length);
+ if (!state.endEmitted && state.length === 0) {
+ state.endEmitted = true;
+ stream.readable = false;
+ stream.emit("end");
+ if (state.autoDestroy) {
+ var wState = stream._writableState;
+ if (!wState || wState.autoDestroy && wState.finished) {
+ stream.destroy();
+ }
+ }
+ }
+ }
+ if (typeof Symbol === "function") {
+ Readable.from = function(iterable, opts) {
+ if (from === void 0) {
+ from = require_from();
+ }
+ return from(Readable, iterable, opts);
+ };
+ }
+ function indexOf(xs, x) {
+ for (var i = 0, l = xs.length; i < l; i++) {
+ if (xs[i] === x)
+ return i;
+ }
+ return -1;
+ }
+ }
+});
+
+// ../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/_stream_transform.js
+var require_stream_transform = __commonJS({
+ "../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/_stream_transform.js"(exports, module2) {
+ "use strict";
+ module2.exports = Transform;
+ var _require$codes = require_errors().codes;
+ var ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED;
+ var ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK;
+ var ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING;
+ var ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;
+ var Duplex = require_stream_duplex();
+ require_inherits()(Transform, Duplex);
+ function afterTransform(er, data) {
+ var ts = this._transformState;
+ ts.transforming = false;
+ var cb = ts.writecb;
+ if (cb === null) {
+ return this.emit("error", new ERR_MULTIPLE_CALLBACK());
+ }
+ ts.writechunk = null;
+ ts.writecb = null;
+ if (data != null)
+ this.push(data);
+ cb(er);
+ var rs = this._readableState;
+ rs.reading = false;
+ if (rs.needReadable || rs.length < rs.highWaterMark) {
+ this._read(rs.highWaterMark);
+ }
+ }
+ function Transform(options2) {
+ if (!(this instanceof Transform))
+ return new Transform(options2);
+ Duplex.call(this, options2);
+ this._transformState = {
+ afterTransform: afterTransform.bind(this),
+ needTransform: false,
+ transforming: false,
+ writecb: null,
+ writechunk: null,
+ writeencoding: null
+ };
+ this._readableState.needReadable = true;
+ this._readableState.sync = false;
+ if (options2) {
+ if (typeof options2.transform === "function")
+ this._transform = options2.transform;
+ if (typeof options2.flush === "function")
+ this._flush = options2.flush;
+ }
+ this.on("prefinish", prefinish);
+ }
+ function prefinish() {
+ var _this = this;
+ if (typeof this._flush === "function" && !this._readableState.destroyed) {
+ this._flush(function(er, data) {
+ done(_this, er, data);
+ });
+ } else {
+ done(this, null, null);
+ }
+ }
+ Transform.prototype.push = function(chunk, encoding) {
+ this._transformState.needTransform = false;
+ return Duplex.prototype.push.call(this, chunk, encoding);
+ };
+ Transform.prototype._transform = function(chunk, encoding, cb) {
+ cb(new ERR_METHOD_NOT_IMPLEMENTED("_transform()"));
+ };
+ Transform.prototype._write = function(chunk, encoding, cb) {
+ var ts = this._transformState;
+ ts.writecb = cb;
+ ts.writechunk = chunk;
+ ts.writeencoding = encoding;
+ if (!ts.transforming) {
+ var rs = this._readableState;
+ if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark)
+ this._read(rs.highWaterMark);
+ }
+ };
+ Transform.prototype._read = function(n) {
+ var ts = this._transformState;
+ if (ts.writechunk !== null && !ts.transforming) {
+ ts.transforming = true;
+ this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
+ } else {
+ ts.needTransform = true;
+ }
+ };
+ Transform.prototype._destroy = function(err, cb) {
+ Duplex.prototype._destroy.call(this, err, function(err2) {
+ cb(err2);
+ });
+ };
+ function done(stream, er, data) {
+ if (er)
+ return stream.emit("error", er);
+ if (data != null)
+ stream.push(data);
+ if (stream._writableState.length)
+ throw new ERR_TRANSFORM_WITH_LENGTH_0();
+ if (stream._transformState.transforming)
+ throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();
+ return stream.push(null);
+ }
+ }
+});
+
+// ../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/_stream_passthrough.js
+var require_stream_passthrough = __commonJS({
+ "../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/_stream_passthrough.js"(exports, module2) {
+ "use strict";
+ module2.exports = PassThrough;
+ var Transform = require_stream_transform();
+ require_inherits()(PassThrough, Transform);
+ function PassThrough(options2) {
+ if (!(this instanceof PassThrough))
+ return new PassThrough(options2);
+ Transform.call(this, options2);
+ }
+ PassThrough.prototype._transform = function(chunk, encoding, cb) {
+ cb(null, chunk);
+ };
+ }
+});
+
+// ../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/pipeline.js
+var require_pipeline = __commonJS({
+ "../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/lib/internal/streams/pipeline.js"(exports, module2) {
+ "use strict";
+ var eos;
+ function once(callback) {
+ var called = false;
+ return function() {
+ if (called)
+ return;
+ called = true;
+ callback.apply(void 0, arguments);
+ };
+ }
+ var _require$codes = require_errors().codes;
+ var ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;
+ var ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;
+ function noop(err) {
+ if (err)
+ throw err;
+ }
+ function isRequest(stream) {
+ return stream.setHeader && typeof stream.abort === "function";
+ }
+ function destroyer(stream, reading, writing, callback) {
+ callback = once(callback);
+ var closed = false;
+ stream.on("close", function() {
+ closed = true;
+ });
+ if (eos === void 0)
+ eos = require_end_of_stream();
+ eos(stream, {
+ readable: reading,
+ writable: writing
+ }, function(err) {
+ if (err)
+ return callback(err);
+ closed = true;
+ callback();
+ });
+ var destroyed = false;
+ return function(err) {
+ if (closed)
+ return;
+ if (destroyed)
+ return;
+ destroyed = true;
+ if (isRequest(stream))
+ return stream.abort();
+ if (typeof stream.destroy === "function")
+ return stream.destroy();
+ callback(err || new ERR_STREAM_DESTROYED("pipe"));
+ };
+ }
+ function call(fn) {
+ fn();
+ }
+ function pipe(from, to) {
+ return from.pipe(to);
+ }
+ function popCallback(streams) {
+ if (!streams.length)
+ return noop;
+ if (typeof streams[streams.length - 1] !== "function")
+ return noop;
+ return streams.pop();
+ }
+ function pipeline() {
+ for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {
+ streams[_key] = arguments[_key];
+ }
+ var callback = popCallback(streams);
+ if (Array.isArray(streams[0]))
+ streams = streams[0];
+ if (streams.length < 2) {
+ throw new ERR_MISSING_ARGS("streams");
+ }
+ var error;
+ var destroys = streams.map(function(stream, i) {
+ var reading = i < streams.length - 1;
+ var writing = i > 0;
+ return destroyer(stream, reading, writing, function(err) {
+ if (!error)
+ error = err;
+ if (err)
+ destroys.forEach(call);
+ if (reading)
+ return;
+ destroys.forEach(call);
+ callback(error);
+ });
+ });
+ return streams.reduce(pipe);
+ }
+ module2.exports = pipeline;
+ }
+});
+
+// ../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/readable.js
+var require_readable = __commonJS({
+ "../../node_modules/.pnpm/readable-stream@3.6.0/node_modules/readable-stream/readable.js"(exports, module2) {
+ var Stream = require("stream");
+ if (process.env.READABLE_STREAM === "disable" && Stream) {
+ module2.exports = Stream.Readable;
+ Object.assign(module2.exports, Stream);
+ module2.exports.Stream = Stream;
+ } else {
+ exports = module2.exports = require_stream_readable();
+ exports.Stream = Stream || exports;
+ exports.Readable = exports;
+ exports.Writable = require_stream_writable();
+ exports.Duplex = require_stream_duplex();
+ exports.Transform = require_stream_transform();
+ exports.PassThrough = require_stream_passthrough();
+ exports.finished = require_end_of_stream();
+ exports.pipeline = require_pipeline();
+ }
+ }
+});
+
+// ../../node_modules/.pnpm/bl@4.1.0/node_modules/bl/BufferList.js
+var require_BufferList = __commonJS({
+ "../../node_modules/.pnpm/bl@4.1.0/node_modules/bl/BufferList.js"(exports, module2) {
+ "use strict";
+ var { Buffer: Buffer2 } = require("buffer");
+ var symbol = Symbol.for("BufferList");
+ function BufferList(buf) {
+ if (!(this instanceof BufferList)) {
+ return new BufferList(buf);
+ }
+ BufferList._init.call(this, buf);
+ }
+ BufferList._init = function _init(buf) {
+ Object.defineProperty(this, symbol, { value: true });
+ this._bufs = [];
+ this.length = 0;
+ if (buf) {
+ this.append(buf);
+ }
+ };
+ BufferList.prototype._new = function _new(buf) {
+ return new BufferList(buf);
+ };
+ BufferList.prototype._offset = function _offset(offset) {
+ if (offset === 0) {
+ return [0, 0];
+ }
+ let tot = 0;
+ for (let i = 0; i < this._bufs.length; i++) {
+ const _t = tot + this._bufs[i].length;
+ if (offset < _t || i === this._bufs.length - 1) {
+ return [i, offset - tot];
+ }
+ tot = _t;
+ }
+ };
+ BufferList.prototype._reverseOffset = function(blOffset) {
+ const bufferId = blOffset[0];
+ let offset = blOffset[1];
+ for (let i = 0; i < bufferId; i++) {
+ offset += this._bufs[i].length;
+ }
+ return offset;
+ };
+ BufferList.prototype.get = function get(index) {
+ if (index > this.length || index < 0) {
+ return void 0;
+ }
+ const offset = this._offset(index);
+ return this._bufs[offset[0]][offset[1]];
+ };
+ BufferList.prototype.slice = function slice(start, end) {
+ if (typeof start === "number" && start < 0) {
+ start += this.length;
+ }
+ if (typeof end === "number" && end < 0) {
+ end += this.length;
+ }
+ return this.copy(null, 0, start, end);
+ };
+ BufferList.prototype.copy = function copy(dst, dstStart, srcStart, srcEnd) {
+ if (typeof srcStart !== "number" || srcStart < 0) {
+ srcStart = 0;
+ }
+ if (typeof srcEnd !== "number" || srcEnd > this.length) {
+ srcEnd = this.length;
+ }
+ if (srcStart >= this.length) {
+ return dst || Buffer2.alloc(0);
+ }
+ if (srcEnd <= 0) {
+ return dst || Buffer2.alloc(0);
+ }
+ const copy2 = !!dst;
+ const off = this._offset(srcStart);
+ const len = srcEnd - srcStart;
+ let bytes = len;
+ let bufoff = copy2 && dstStart || 0;
+ let start = off[1];
+ if (srcStart === 0 && srcEnd === this.length) {
+ if (!copy2) {
+ return this._bufs.length === 1 ? this._bufs[0] : Buffer2.concat(this._bufs, this.length);
+ }
+ for (let i = 0; i < this._bufs.length; i++) {
+ this._bufs[i].copy(dst, bufoff);
+ bufoff += this._bufs[i].length;
+ }
+ return dst;
+ }
+ if (bytes <= this._bufs[off[0]].length - start) {
+ return copy2 ? this._bufs[off[0]].copy(dst, dstStart, start, start + bytes) : this._bufs[off[0]].slice(start, start + bytes);
+ }
+ if (!copy2) {
+ dst = Buffer2.allocUnsafe(len);
+ }
+ for (let i = off[0]; i < this._bufs.length; i++) {
+ const l = this._bufs[i].length - start;
+ if (bytes > l) {
+ this._bufs[i].copy(dst, bufoff, start);
+ bufoff += l;
+ } else {
+ this._bufs[i].copy(dst, bufoff, start, start + bytes);
+ bufoff += l;
+ break;
+ }
+ bytes -= l;
+ if (start) {
+ start = 0;
+ }
+ }
+ if (dst.length > bufoff)
+ return dst.slice(0, bufoff);
+ return dst;
+ };
+ BufferList.prototype.shallowSlice = function shallowSlice(start, end) {
+ start = start || 0;
+ end = typeof end !== "number" ? this.length : end;
+ if (start < 0) {
+ start += this.length;
+ }
+ if (end < 0) {
+ end += this.length;
+ }
+ if (start === end) {
+ return this._new();
+ }
+ const startOffset = this._offset(start);
+ const endOffset = this._offset(end);
+ const buffers = this._bufs.slice(startOffset[0], endOffset[0] + 1);
+ if (endOffset[1] === 0) {
+ buffers.pop();
+ } else {
+ buffers[buffers.length - 1] = buffers[buffers.length - 1].slice(0, endOffset[1]);
+ }
+ if (startOffset[1] !== 0) {
+ buffers[0] = buffers[0].slice(startOffset[1]);
+ }
+ return this._new(buffers);
+ };
+ BufferList.prototype.toString = function toString(encoding, start, end) {
+ return this.slice(start, end).toString(encoding);
+ };
+ BufferList.prototype.consume = function consume(bytes) {
+ bytes = Math.trunc(bytes);
+ if (Number.isNaN(bytes) || bytes <= 0)
+ return this;
+ while (this._bufs.length) {
+ if (bytes >= this._bufs[0].length) {
+ bytes -= this._bufs[0].length;
+ this.length -= this._bufs[0].length;
+ this._bufs.shift();
+ } else {
+ this._bufs[0] = this._bufs[0].slice(bytes);
+ this.length -= bytes;
+ break;
+ }
+ }
+ return this;
+ };
+ BufferList.prototype.duplicate = function duplicate() {
+ const copy = this._new();
+ for (let i = 0; i < this._bufs.length; i++) {
+ copy.append(this._bufs[i]);
+ }
+ return copy;
+ };
+ BufferList.prototype.append = function append(buf) {
+ if (buf == null) {
+ return this;
+ }
+ if (buf.buffer) {
+ this._appendBuffer(Buffer2.from(buf.buffer, buf.byteOffset, buf.byteLength));
+ } else if (Array.isArray(buf)) {
+ for (let i = 0; i < buf.length; i++) {
+ this.append(buf[i]);
+ }
+ } else if (this._isBufferList(buf)) {
+ for (let i = 0; i < buf._bufs.length; i++) {
+ this.append(buf._bufs[i]);
+ }
+ } else {
+ if (typeof buf === "number") {
+ buf = buf.toString();
+ }
+ this._appendBuffer(Buffer2.from(buf));
+ }
+ return this;
+ };
+ BufferList.prototype._appendBuffer = function appendBuffer(buf) {
+ this._bufs.push(buf);
+ this.length += buf.length;
+ };
+ BufferList.prototype.indexOf = function(search, offset, encoding) {
+ if (encoding === void 0 && typeof offset === "string") {
+ encoding = offset;
+ offset = void 0;
+ }
+ if (typeof search === "function" || Array.isArray(search)) {
+ throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.');
+ } else if (typeof search === "number") {
+ search = Buffer2.from([search]);
+ } else if (typeof search === "string") {
+ search = Buffer2.from(search, encoding);
+ } else if (this._isBufferList(search)) {
+ search = search.slice();
+ } else if (Array.isArray(search.buffer)) {
+ search = Buffer2.from(search.buffer, search.byteOffset, search.byteLength);
+ } else if (!Buffer2.isBuffer(search)) {
+ search = Buffer2.from(search);
+ }
+ offset = Number(offset || 0);
+ if (isNaN(offset)) {
+ offset = 0;
+ }
+ if (offset < 0) {
+ offset = this.length + offset;
+ }
+ if (offset < 0) {
+ offset = 0;
+ }
+ if (search.length === 0) {
+ return offset > this.length ? this.length : offset;
+ }
+ const blOffset = this._offset(offset);
+ let blIndex = blOffset[0];
+ let buffOffset = blOffset[1];
+ for (; blIndex < this._bufs.length; blIndex++) {
+ const buff = this._bufs[blIndex];
+ while (buffOffset < buff.length) {
+ const availableWindow = buff.length - buffOffset;
+ if (availableWindow >= search.length) {
+ const nativeSearchResult = buff.indexOf(search, buffOffset);
+ if (nativeSearchResult !== -1) {
+ return this._reverseOffset([blIndex, nativeSearchResult]);
+ }
+ buffOffset = buff.length - search.length + 1;
+ } else {
+ const revOffset = this._reverseOffset([blIndex, buffOffset]);
+ if (this._match(revOffset, search)) {
+ return revOffset;
+ }
+ buffOffset++;
+ }
+ }
+ buffOffset = 0;
+ }
+ return -1;
+ };
+ BufferList.prototype._match = function(offset, search) {
+ if (this.length - offset < search.length) {
+ return false;
+ }
+ for (let searchOffset = 0; searchOffset < search.length; searchOffset++) {
+ if (this.get(offset + searchOffset) !== search[searchOffset]) {
+ return false;
+ }
+ }
+ return true;
+ };
+ (function() {
+ const methods = {
+ readDoubleBE: 8,
+ readDoubleLE: 8,
+ readFloatBE: 4,
+ readFloatLE: 4,
+ readInt32BE: 4,
+ readInt32LE: 4,
+ readUInt32BE: 4,
+ readUInt32LE: 4,
+ readInt16BE: 2,
+ readInt16LE: 2,
+ readUInt16BE: 2,
+ readUInt16LE: 2,
+ readInt8: 1,
+ readUInt8: 1,
+ readIntBE: null,
+ readIntLE: null,
+ readUIntBE: null,
+ readUIntLE: null
+ };
+ for (const m in methods) {
+ (function(m2) {
+ if (methods[m2] === null) {
+ BufferList.prototype[m2] = function(offset, byteLength) {
+ return this.slice(offset, offset + byteLength)[m2](0, byteLength);
+ };
+ } else {
+ BufferList.prototype[m2] = function(offset = 0) {
+ return this.slice(offset, offset + methods[m2])[m2](0);
+ };
+ }
+ })(m);
+ }
+ })();
+ BufferList.prototype._isBufferList = function _isBufferList(b) {
+ return b instanceof BufferList || BufferList.isBufferList(b);
+ };
+ BufferList.isBufferList = function isBufferList(b) {
+ return b != null && b[symbol];
+ };
+ module2.exports = BufferList;
+ }
+});
+
+// ../../node_modules/.pnpm/bl@4.1.0/node_modules/bl/bl.js
+var require_bl = __commonJS({
+ "../../node_modules/.pnpm/bl@4.1.0/node_modules/bl/bl.js"(exports, module2) {
+ "use strict";
+ var DuplexStream = require_readable().Duplex;
+ var inherits = require_inherits();
+ var BufferList = require_BufferList();
+ function BufferListStream(callback) {
+ if (!(this instanceof BufferListStream)) {
+ return new BufferListStream(callback);
+ }
+ if (typeof callback === "function") {
+ this._callback = callback;
+ const piper = function piper2(err) {
+ if (this._callback) {
+ this._callback(err);
+ this._callback = null;
+ }
+ }.bind(this);
+ this.on("pipe", function onPipe(src) {
+ src.on("error", piper);
+ });
+ this.on("unpipe", function onUnpipe(src) {
+ src.removeListener("error", piper);
+ });
+ callback = null;
+ }
+ BufferList._init.call(this, callback);
+ DuplexStream.call(this);
+ }
+ inherits(BufferListStream, DuplexStream);
+ Object.assign(BufferListStream.prototype, BufferList.prototype);
+ BufferListStream.prototype._new = function _new(callback) {
+ return new BufferListStream(callback);
+ };
+ BufferListStream.prototype._write = function _write(buf, encoding, callback) {
+ this._appendBuffer(buf);
+ if (typeof callback === "function") {
+ callback();
+ }
+ };
+ BufferListStream.prototype._read = function _read(size) {
+ if (!this.length) {
+ return this.push(null);
+ }
+ size = Math.min(size, this.length);
+ this.push(this.slice(0, size));
+ this.consume(size);
+ };
+ BufferListStream.prototype.end = function end(chunk) {
+ DuplexStream.prototype.end.call(this, chunk);
+ if (this._callback) {
+ this._callback(null, this.slice());
+ this._callback = null;
+ }
+ };
+ BufferListStream.prototype._destroy = function _destroy(err, cb) {
+ this._bufs.length = 0;
+ this.length = 0;
+ cb(err);
+ };
+ BufferListStream.prototype._isBufferList = function _isBufferList(b) {
+ return b instanceof BufferListStream || b instanceof BufferList || BufferListStream.isBufferList(b);
+ };
+ BufferListStream.isBufferList = BufferList.isBufferList;
+ module2.exports = BufferListStream;
+ module2.exports.BufferListStream = BufferListStream;
+ module2.exports.BufferList = BufferList;
+ }
+});
+
+// ../../node_modules/.pnpm/ora@5.4.1/node_modules/ora/index.js
+var require_ora = __commonJS({
+ "../../node_modules/.pnpm/ora@5.4.1/node_modules/ora/index.js"(exports, module2) {
+ "use strict";
+ var readline = require("readline");
+ var chalk = require_source();
+ var cliCursor = require_cli_cursor();
+ var cliSpinners = require_cli_spinners();
+ var logSymbols = require_log_symbols();
+ var stripAnsi = require_strip_ansi();
+ var wcwidth = require_wcwidth();
+ var isInteractive = require_is_interactive();
+ var isUnicodeSupported = require_is_unicode_supported();
+ var { BufferListStream } = require_bl();
+ var TEXT = Symbol("text");
+ var PREFIX_TEXT = Symbol("prefixText");
+ var ASCII_ETX_CODE = 3;
+ var StdinDiscarder = class {
+ constructor() {
+ this.requests = 0;
+ this.mutedStream = new BufferListStream();
+ this.mutedStream.pipe(process.stdout);
+ const self2 = this;
+ this.ourEmit = function(event, data, ...args) {
+ const { stdin } = process;
+ if (self2.requests > 0 || stdin.emit === self2.ourEmit) {
+ if (event === "keypress") {
+ return;
+ }
+ if (event === "data" && data.includes(ASCII_ETX_CODE)) {
+ process.emit("SIGINT");
+ }
+ Reflect.apply(self2.oldEmit, this, [event, data, ...args]);
+ } else {
+ Reflect.apply(process.stdin.emit, this, [event, data, ...args]);
+ }
+ };
+ }
+ start() {
+ this.requests++;
+ if (this.requests === 1) {
+ this.realStart();
+ }
+ }
+ stop() {
+ if (this.requests <= 0) {
+ throw new Error("`stop` called more times than `start`");
+ }
+ this.requests--;
+ if (this.requests === 0) {
+ this.realStop();
+ }
+ }
+ realStart() {
+ if (process.platform === "win32") {
+ return;
+ }
+ this.rl = readline.createInterface({
+ input: process.stdin,
+ output: this.mutedStream
+ });
+ this.rl.on("SIGINT", () => {
+ if (process.listenerCount("SIGINT") === 0) {
+ process.emit("SIGINT");
+ } else {
+ this.rl.close();
+ process.kill(process.pid, "SIGINT");
+ }
+ });
+ }
+ realStop() {
+ if (process.platform === "win32") {
+ return;
+ }
+ this.rl.close();
+ this.rl = void 0;
+ }
+ };
+ var stdinDiscarder;
+ var Ora = class {
+ constructor(options2) {
+ if (!stdinDiscarder) {
+ stdinDiscarder = new StdinDiscarder();
+ }
+ if (typeof options2 === "string") {
+ options2 = {
+ text: options2
+ };
+ }
+ this.options = {
+ text: "",
+ color: "cyan",
+ stream: process.stderr,
+ discardStdin: true,
+ ...options2
+ };
+ this.spinner = this.options.spinner;
+ this.color = this.options.color;
+ this.hideCursor = this.options.hideCursor !== false;
+ this.interval = this.options.interval || this.spinner.interval || 100;
+ this.stream = this.options.stream;
+ this.id = void 0;
+ this.isEnabled = typeof this.options.isEnabled === "boolean" ? this.options.isEnabled : isInteractive({ stream: this.stream });
+ this.isSilent = typeof this.options.isSilent === "boolean" ? this.options.isSilent : false;
+ this.text = this.options.text;
+ this.prefixText = this.options.prefixText;
+ this.linesToClear = 0;
+ this.indent = this.options.indent;
+ this.discardStdin = this.options.discardStdin;
+ this.isDiscardingStdin = false;
+ }
+ get indent() {
+ return this._indent;
+ }
+ set indent(indent = 0) {
+ if (!(indent >= 0 && Number.isInteger(indent))) {
+ throw new Error("The `indent` option must be an integer from 0 and up");
+ }
+ this._indent = indent;
+ }
+ _updateInterval(interval) {
+ if (interval !== void 0) {
+ this.interval = interval;
+ }
+ }
+ get spinner() {
+ return this._spinner;
+ }
+ set spinner(spinner) {
+ this.frameIndex = 0;
+ if (typeof spinner === "object") {
+ if (spinner.frames === void 0) {
+ throw new Error("The given spinner must have a `frames` property");
+ }
+ this._spinner = spinner;
+ } else if (!isUnicodeSupported()) {
+ this._spinner = cliSpinners.line;
+ } else if (spinner === void 0) {
+ this._spinner = cliSpinners.dots;
+ } else if (spinner !== "default" && cliSpinners[spinner]) {
+ this._spinner = cliSpinners[spinner];
+ } else {
+ throw new Error(`There is no built-in spinner named '${spinner}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`);
+ }
+ this._updateInterval(this._spinner.interval);
+ }
+ get text() {
+ return this[TEXT];
+ }
+ set text(value) {
+ this[TEXT] = value;
+ this.updateLineCount();
+ }
+ get prefixText() {
+ return this[PREFIX_TEXT];
+ }
+ set prefixText(value) {
+ this[PREFIX_TEXT] = value;
+ this.updateLineCount();
+ }
+ get isSpinning() {
+ return this.id !== void 0;
+ }
+ getFullPrefixText(prefixText = this[PREFIX_TEXT], postfix = " ") {
+ if (typeof prefixText === "string") {
+ return prefixText + postfix;
+ }
+ if (typeof prefixText === "function") {
+ return prefixText() + postfix;
+ }
+ return "";
+ }
+ updateLineCount() {
+ const columns = this.stream.columns || 80;
+ const fullPrefixText = this.getFullPrefixText(this.prefixText, "-");
+ this.lineCount = 0;
+ for (const line of stripAnsi(fullPrefixText + "--" + this[TEXT]).split("\n")) {
+ this.lineCount += Math.max(1, Math.ceil(wcwidth(line) / columns));
+ }
+ }
+ get isEnabled() {
+ return this._isEnabled && !this.isSilent;
+ }
+ set isEnabled(value) {
+ if (typeof value !== "boolean") {
+ throw new TypeError("The `isEnabled` option must be a boolean");
+ }
+ this._isEnabled = value;
+ }
+ get isSilent() {
+ return this._isSilent;
+ }
+ set isSilent(value) {
+ if (typeof value !== "boolean") {
+ throw new TypeError("The `isSilent` option must be a boolean");
+ }
+ this._isSilent = value;
+ }
+ frame() {
+ const { frames } = this.spinner;
+ let frame = frames[this.frameIndex];
+ if (this.color) {
+ frame = chalk[this.color](frame);
+ }
+ this.frameIndex = ++this.frameIndex % frames.length;
+ const fullPrefixText = typeof this.prefixText === "string" && this.prefixText !== "" ? this.prefixText + " " : "";
+ const fullText = typeof this.text === "string" ? " " + this.text : "";
+ return fullPrefixText + frame + fullText;
+ }
+ clear() {
+ if (!this.isEnabled || !this.stream.isTTY) {
+ return this;
+ }
+ for (let i = 0; i < this.linesToClear; i++) {
+ if (i > 0) {
+ this.stream.moveCursor(0, -1);
+ }
+ this.stream.clearLine();
+ this.stream.cursorTo(this.indent);
+ }
+ this.linesToClear = 0;
+ return this;
+ }
+ render() {
+ if (this.isSilent) {
+ return this;
+ }
+ this.clear();
+ this.stream.write(this.frame());
+ this.linesToClear = this.lineCount;
+ return this;
+ }
+ start(text) {
+ if (text) {
+ this.text = text;
+ }
+ if (this.isSilent) {
+ return this;
+ }
+ if (!this.isEnabled) {
+ if (this.text) {
+ this.stream.write(`- ${this.text}
+`);
+ }
+ return this;
+ }
+ if (this.isSpinning) {
+ return this;
+ }
+ if (this.hideCursor) {
+ cliCursor.hide(this.stream);
+ }
+ if (this.discardStdin && process.stdin.isTTY) {
+ this.isDiscardingStdin = true;
+ stdinDiscarder.start();
+ }
+ this.render();
+ this.id = setInterval(this.render.bind(this), this.interval);
+ return this;
+ }
+ stop() {
+ if (!this.isEnabled) {
+ return this;
+ }
+ clearInterval(this.id);
+ this.id = void 0;
+ this.frameIndex = 0;
+ this.clear();
+ if (this.hideCursor) {
+ cliCursor.show(this.stream);
+ }
+ if (this.discardStdin && process.stdin.isTTY && this.isDiscardingStdin) {
+ stdinDiscarder.stop();
+ this.isDiscardingStdin = false;
+ }
+ return this;
+ }
+ succeed(text) {
+ return this.stopAndPersist({ symbol: logSymbols.success, text });
+ }
+ fail(text) {
+ return this.stopAndPersist({ symbol: logSymbols.error, text });
+ }
+ warn(text) {
+ return this.stopAndPersist({ symbol: logSymbols.warning, text });
+ }
+ info(text) {
+ return this.stopAndPersist({ symbol: logSymbols.info, text });
+ }
+ stopAndPersist(options2 = {}) {
+ if (this.isSilent) {
+ return this;
+ }
+ const prefixText = options2.prefixText || this.prefixText;
+ const text = options2.text || this.text;
+ const fullText = typeof text === "string" ? " " + text : "";
+ this.stop();
+ this.stream.write(`${this.getFullPrefixText(prefixText, " ")}${options2.symbol || " "}${fullText}
+`);
+ return this;
+ }
+ };
+ var oraFactory = function(options2) {
+ return new Ora(options2);
+ };
+ module2.exports = oraFactory;
+ module2.exports.promise = (action, options2) => {
+ if (typeof action.then !== "function") {
+ throw new TypeError("Parameter `action` must be a Promise");
+ }
+ const spinner = new Ora(options2);
+ spinner.start();
+ (async () => {
+ try {
+ await action;
+ spinner.succeed();
+ } catch {
+ spinner.fail();
+ }
+ })();
+ return spinner;
+ };
+ }
+});
+
+// index.js
+var import_fs2 = __toESM(require("fs"), 1);
+var import_path2 = __toESM(require("path"), 1);
+var import_minimist = __toESM(require_minimist(), 1);
+var import_prompts = __toESM(require_prompts3(), 1);
+
+// ../../node_modules/.pnpm/kolorist@1.5.1/node_modules/kolorist/dist/esm/index.mjs
+var enabled = true;
+var globalVar = typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {};
+var supportLevel = 0;
+if (globalVar.process && globalVar.process.env && globalVar.process.stdout) {
+ const { FORCE_COLOR, NODE_DISABLE_COLORS, TERM } = globalVar.process.env;
+ if (NODE_DISABLE_COLORS || FORCE_COLOR === "0") {
+ enabled = false;
+ } else if (FORCE_COLOR === "1") {
+ enabled = true;
+ } else if (TERM === "dumb") {
+ enabled = false;
+ } else if ("CI" in globalVar.process.env && [
+ "TRAVIS",
+ "CIRCLECI",
+ "APPVEYOR",
+ "GITLAB_CI",
+ "GITHUB_ACTIONS",
+ "BUILDKITE",
+ "DRONE"
+ ].some((vendor) => vendor in globalVar.process.env)) {
+ enabled = true;
+ } else {
+ enabled = process.stdout.isTTY;
+ }
+ if (enabled) {
+ supportLevel = TERM && TERM.endsWith("-256color") ? 2 : 1;
+ }
+}
+var options = {
+ enabled,
+ supportLevel
+};
+function kolorist(start, end, level = 1) {
+ const open = `\x1B[${start}m`;
+ const close = `\x1B[${end}m`;
+ const regex = new RegExp(`\\x1b\\[${end}m`, "g");
+ return (str) => {
+ return options.enabled && options.supportLevel >= level ? open + ("" + str).replace(regex, open) + close : "" + str;
+ };
+}
+var reset = kolorist(0, 0);
+var bold = kolorist(1, 22);
+var dim = kolorist(2, 22);
+var italic = kolorist(3, 23);
+var underline = kolorist(4, 24);
+var inverse = kolorist(7, 27);
+var hidden = kolorist(8, 28);
+var strikethrough = kolorist(9, 29);
+var black = kolorist(30, 39);
+var red = kolorist(31, 39);
+var green = kolorist(32, 39);
+var yellow = kolorist(33, 39);
+var blue = kolorist(34, 39);
+var magenta = kolorist(35, 39);
+var cyan = kolorist(36, 39);
+var white = kolorist(97, 39);
+var gray = kolorist(90, 39);
+var lightGray = kolorist(37, 39);
+var lightRed = kolorist(91, 39);
+var lightGreen = kolorist(92, 39);
+var lightYellow = kolorist(93, 39);
+var lightBlue = kolorist(94, 39);
+var lightMagenta = kolorist(95, 39);
+var lightCyan = kolorist(96, 39);
+var bgBlack = kolorist(40, 49);
+var bgRed = kolorist(41, 49);
+var bgGreen = kolorist(42, 49);
+var bgYellow = kolorist(43, 49);
+var bgBlue = kolorist(44, 49);
+var bgMagenta = kolorist(45, 49);
+var bgCyan = kolorist(46, 49);
+var bgWhite = kolorist(107, 49);
+var bgGray = kolorist(100, 49);
+var bgLightRed = kolorist(101, 49);
+var bgLightGreen = kolorist(102, 49);
+var bgLightYellow = kolorist(103, 49);
+var bgLightBlue = kolorist(104, 49);
+var bgLightMagenta = kolorist(105, 49);
+var bgLightCyan = kolorist(106, 49);
+var bgLightGray = kolorist(47, 49);
+
+// utils/directoryTraverse.js
+var import_fs = __toESM(require("fs"), 1);
+var import_path = __toESM(require("path"), 1);
+function postOrderDirectoryTraverse(dir, dirCallback, fileCallback) {
+ for (const filename of import_fs.default.readdirSync(dir)) {
+ const fullpath = import_path.default.resolve(dir, filename);
+ if (import_fs.default.lstatSync(fullpath).isDirectory()) {
+ postOrderDirectoryTraverse(fullpath, dirCallback, fileCallback);
+ dirCallback(fullpath);
+ continue;
+ }
+ fileCallback(fullpath);
+ }
+}
+
+// utils/getCommand.js
+function getCommand(packageManager, scriptName) {
+ if (scriptName === "install") {
+ return packageManager === "yarn" ? "yarn" : `${packageManager} install`;
+ }
+ return packageManager === "npm" ? `npm run ${scriptName}` : `${packageManager} ${scriptName}`;
+}
+
+// index.js
+var import_promise = __toESM(require_promise(), 1);
+var import_ora = __toESM(require_ora(), 1);
+async function loading(fn, message, ...args) {
+ const spinner = (0, import_ora.default)(message);
+ spinner.start();
+ try {
+ const result = await fn(...args);
+ spinner.succeed();
+ return result;
+ } catch (error) {
+ console.log(error);
+ spinner.fail("Request failed, refetch...");
+ }
+}
+function changePackageInfo(root, packageName) {
+ const pkgJSONPath = import_path2.default.join(root, "package.json");
+ const pkg = JSON.parse(import_fs2.default.readFileSync(pkgJSONPath));
+ pkg.name = packageName;
+ pkg.version = "0.0.0";
+ delete pkg.author;
+ import_fs2.default.writeFileSync(pkgJSONPath, JSON.stringify(pkg, null, 2) + "\n");
+}
+function removeDir(root, dir) {
+ const deleteFolderRecursive = function(path3) {
+ if (import_fs2.default.existsSync(path3)) {
+ import_fs2.default.readdirSync(path3).forEach(function(file) {
+ let curPath = path3 + "/" + file;
+ if (import_fs2.default.lstatSync(curPath).isDirectory()) {
+ deleteFolderRecursive(curPath);
+ } else {
+ import_fs2.default.unlinkSync(curPath);
+ }
+ });
+ import_fs2.default.rmdirSync(path3);
+ }
+ };
+ deleteFolderRecursive(import_path2.default.join(root, dir));
+}
+function isValidPackageName(projectName) {
+ return /^(?:@[a-z0-9-*~][a-z0-9-*._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/.test(projectName);
+}
+function toValidPackageName(projectName) {
+ return String(projectName).trim().toLowerCase().replace(/\s+/g, "-").replace(/^[._]/, "").replace(/[^a-z0-9-~]+/g, "-");
+}
+function canSafelyOverwrite(dir) {
+ return !import_fs2.default.existsSync(dir) || import_fs2.default.readdirSync(dir).length === 0;
+}
+function emptyDir(dir) {
+ postOrderDirectoryTraverse(dir, (dir2) => import_fs2.default.rmdirSync(dir2), (file) => import_fs2.default.unlinkSync(file));
+}
+async function init() {
+ const downloadUrl = "https://gitee.com/maleweb/fast-vue3.git";
+ const cwd = process.cwd();
+ const argv = (0, import_minimist.default)(process.argv.slice(2));
+ let targetDir = argv._[0];
+ const defaultProjectName = !targetDir ? "fast-vue3-demo" : targetDir;
+ const forceOverwrite = argv.force;
+ let result = {};
+ try {
+ result = await (0, import_prompts.default)([
+ {
+ name: "template",
+ type: "select",
+ message: "Choice a Template:",
+ choices: [
+ { title: "template-pc", description: "This will generate template for web scene", value: "web" },
+ { title: "template-mobile", description: "This will generate template for mobile scene", value: "mobile" }
+ ],
+ initial: 0
+ },
+ {
+ name: "projectName",
+ type: targetDir ? null : "text",
+ message: "Project name:",
+ initial: defaultProjectName,
+ onState: (state) => targetDir = String(state.value).trim() || defaultProjectName
+ },
+ {
+ name: "shouldOverwrite",
+ type: () => canSafelyOverwrite(String(targetDir)) || forceOverwrite ? null : "confirm",
+ message: () => {
+ const dirForPrompt = targetDir === "." ? "Current directory" : `Target directory "${targetDir}"`;
+ return `${dirForPrompt} is not empty. Remove existing files and continue?`;
+ }
+ },
+ {
+ name: "overwriteChecker",
+ type: (prev, values = {}) => {
+ if (values.shouldOverwrite === false) {
+ throw new Error(red("\u2716") + " Operation cancelled");
+ }
+ return null;
+ }
+ },
+ {
+ name: "packageName",
+ type: () => isValidPackageName(targetDir) ? null : "text",
+ message: "Package name:",
+ initial: () => toValidPackageName(targetDir),
+ validate: (dir) => isValidPackageName(dir) || "Invalid package.json name"
+ }
+ ], {
+ onCancel: () => {
+ throw new Error(red("\u2716") + " Operation cancelled");
+ }
+ });
+ } catch (cancelled) {
+ console.log(cancelled.message);
+ process.exit(1);
+ }
+ const { packageName = toValidPackageName(defaultProjectName), shouldOverwrite, template } = result;
+ const root = import_path2.default.join(cwd, String(targetDir));
+ if (shouldOverwrite) {
+ emptyDir(root);
+ }
+ const templates = {
+ "web": "main",
+ "mobile": "mobile-template"
+ };
+ console.log(`
+Scaffolding project in ${root}...`);
+ await loading(import_promise.default, "waiting download template", downloadUrl, root, { checkout: templates[template] });
+ removeDir(root, "packages");
+ removeDir(root, ".git");
+ changePackageInfo(root, packageName);
+ const packageManager = /pnpm/.test(process.env.npm_execpath) ? "pnpm" : /yarn/.test(process.env.npm_execpath) ? "yarn" : "npm";
+ console.log(`
+Done. Now run:
+`);
+ if (root !== cwd) {
+ console.log(` ${bold(green(`cd ${import_path2.default.relative(cwd, root)}`))}`);
+ }
+ console.log(` ${bold(green(getCommand(packageManager, "install")))}`);
+ console.log(` ${bold(green(getCommand(packageManager, "dev")))}`);
+ console.log();
+}
+init().catch((e) => {
+ console.error(e);
+});
+/*! safe-buffer. MIT License. Feross Aboukhadijeh */
diff --git a/packages/create-fast-vue3/package.json b/packages/create-fast-vue3/package.json
new file mode 100644
index 0000000..f5c79f4
--- /dev/null
+++ b/packages/create-fast-vue3/package.json
@@ -0,0 +1,45 @@
+{
+ "name": "create-fast-vue3",
+ "type": "module",
+ "version": "0.0.13",
+ "description": "a easy way to create vue3 project based of fast-vue3 template",
+ "bin": {
+ "create-fast-vue3": "outfile.cjs"
+ },
+ "files": [
+ "outfile.cjs"
+ ],
+ "scripts": {
+ "format": "prettier --write .",
+ "build": "esbuild --bundle index.js --format=cjs --platform=node --outfile=outfile.cjs"
+ },
+ "keywords": [
+ "vue3",
+ "vite",
+ "fast-vue3"
+ ],
+ "homepage": "https://github.com/study-vue3/fast-vue3/tree/main/packages/create-fast-vue3#readme",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/study-vue3/fast-vue3.git",
+ "directory": "packages/create-fast-vue3"
+ },
+ "author": "liulei",
+ "license": "MIT",
+ "devDependencies": {
+ "esbuild": "^0.14.14",
+ "git-clone": "^0.2.0",
+ "husky": "^7.0.4",
+ "kolorist": "^1.5.1",
+ "lint-staged": "^12.3.2",
+ "minimist": "^1.2.5",
+ "ora": "^5.0",
+ "prettier": "^2.5.1",
+ "prompts": "^2.4.2"
+ },
+ "lint-staged": {
+ "*.{js,json}": [
+ "prettier --write"
+ ]
+ }
+}
diff --git a/packages/create-fast-vue3/utils/directoryTraverse.js b/packages/create-fast-vue3/utils/directoryTraverse.js
new file mode 100644
index 0000000..2697c2e
--- /dev/null
+++ b/packages/create-fast-vue3/utils/directoryTraverse.js
@@ -0,0 +1,14 @@
+import fs from 'fs'
+import path from 'path'
+
+export function postOrderDirectoryTraverse(dir, dirCallback, fileCallback) {
+ for (const filename of fs.readdirSync(dir)) {
+ const fullpath = path.resolve(dir, filename)
+ if (fs.lstatSync(fullpath).isDirectory()) {
+ postOrderDirectoryTraverse(fullpath, dirCallback, fileCallback)
+ dirCallback(fullpath)
+ continue
+ }
+ fileCallback(fullpath)
+ }
+}
diff --git a/packages/create-fast-vue3/utils/getCommand.js b/packages/create-fast-vue3/utils/getCommand.js
new file mode 100644
index 0000000..96d4976
--- /dev/null
+++ b/packages/create-fast-vue3/utils/getCommand.js
@@ -0,0 +1,7 @@
+export default function getCommand(packageManager, scriptName) {
+ if (scriptName === 'install') {
+ return packageManager === 'yarn' ? 'yarn' : `${packageManager} install`
+ }
+
+ return packageManager === 'npm' ? `npm run ${scriptName}` : `${packageManager} ${scriptName}`
+}
diff --git a/packages/juejin-maths-game/.gitignore b/packages/juejin-maths-game/.gitignore
new file mode 100644
index 0000000..ee05591
--- /dev/null
+++ b/packages/juejin-maths-game/.gitignore
@@ -0,0 +1,6 @@
+.DS_Store
+*.log
+node_modules/
+.idea
+yarn.lock
+.env
\ No newline at end of file
diff --git a/packages/juejin-maths-game/README.md b/packages/juejin-maths-game/README.md
new file mode 100644
index 0000000..d77b619
--- /dev/null
+++ b/packages/juejin-maths-game/README.md
@@ -0,0 +1,77 @@
+# 掘金游戏“数字谜题”算法助手
+> 非外挂哦,只是最快速找到算法,仍需要根据算法手动完成游戏
+
+某个夜黑风高的晚上,某程序员摸鱼时无意间发现到了JJ的新游戏,玩了一会不得不佩服JJ运营和技术的头脑,太烧脑了。
+模式上采用`共建`方式,既能收集题目又能调动参与,复杂的解体再加上变态的陷阱路线,简直SaoD不能再Sao。
+
+基于某位掘友的算法,进行进一步改良和加工,仓库地址[juejin-maths-game](https://github.com/study-vue3/fast-vue3)
+
+感谢[wangscaler](https://github.com/wangscaler)提供的可视化地址:[http://math.wangscaler.com/](http://math.wangscaler.com/)
+
+# 加强版
+
+
+
+
+- 🎉 双模双待,自动读取关卡的数字,运算符,目标数字。
+- 🧩 答案萃取,增加了对上百种结果的过滤和萃取,更加接近答案值。
+- 🪂 钉钉PUSH,可以推到钉钉,手机电脑两步走
+- 🧬 优化了Maths库ing,针对`.`合并运算符进行解析处理
+- 🤡 仅供学习,欢迎一起完善`Game`的自动寻路功能
+
+
+# 模式
+>有两种模式分别是手动和自动,针对不同的使用场景可自由切换,默认为自动模式
+
+`手动模式`,需要自己根据游戏关卡展示的`数字`,`结果`,`字符`输入到`命令`,然后运行,此模式不需要`COOKIE和UID`
+```javascript
+# src/index.js
+handleRunning([1,2,3,4], ['/', '*', '-'], 10)
+```
+
+`自动模式`,根据用户的信息自动登录游戏查询到关卡数据,并且直接运行解析算法,给出正确结果。如果通关,再次执行自动模式命令即可。
+```javascript
+# src/index.js
+autoRunning()
+
+```
+
+# 使用
+
+`.env` 不要fork,不上上传你的数据,本地跑就可以
+```
+# 用户cookie
+COOKIE=
+# 用户ID,随便url可查
+USERID=
+# 钉钉机器人
+DINGTALK_WEBHOOK=
+# 钉钉机器人密钥
+DINGTALK_SECRET=
+```
+
+```sh
+# clone
+$ git clone https://github.com/study-vue3/fast-vue3.git
+
+# pnpm/yarn/npm均可安装
+$ pnpm install
+
+# 运行
+$ npm run start
+```
+
+
+
+
+
+# 最后
+- 欢迎加群前端水友群,大家一起划水,因为讨论技术和装X的都被T出去了,那么我们就一起水吧。 加微信,备注来源和姓名,拉进入群。
+- 前沿技术,各类体验、互动相关的技术,各类译文、研报的提前透视。
+
+
+
+
+
+
+
diff --git a/packages/juejin-maths-game/package.json b/packages/juejin-maths-game/package.json
new file mode 100644
index 0000000..0848482
--- /dev/null
+++ b/packages/juejin-maths-game/package.json
@@ -0,0 +1,23 @@
+{
+ "name": "juejin-maths-game",
+ "version": "1.0.0",
+ "description": "掘金数字谜题游戏算法解析",
+ "main": "./src/index",
+ "homepage": "https://github.com/study-vue3/fast-vue3/tree/main/packages/juejin-maths-game",
+ "scripts": {
+ "start": "node ./src/index",
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "author": "仅供学习交流",
+ "license": "MIT",
+ "dependencies": {
+ "async": "^3.2.3",
+ "axios": "^0.21.1",
+ "colors": "^1.4.0",
+ "dayjs": "^1.10.6",
+ "dotenv": "^16.0.0",
+ "got": "^11.8.2",
+ "jsonwebtoken": "^8.5.1",
+ "node-schedule": "^2.1.0"
+ }
+}
\ No newline at end of file
diff --git a/packages/juejin-maths-game/src/config.js b/packages/juejin-maths-game/src/config.js
new file mode 100644
index 0000000..1968af8
--- /dev/null
+++ b/packages/juejin-maths-game/src/config.js
@@ -0,0 +1,10 @@
+const path = require('path')
+require('dotenv').config({ path: path.join(__dirname, '../.env') })
+module.exports = {
+ COOKIE: process.env.COOKIE || '',
+ // 自动玩游戏需要此参数,在掘金首页打开控制台输入这行代码`window.__NUXT__.state.auth.user.id`就可以得到
+ USERID: process.env.USERID || '',
+ DINGTALK_WEBHOOK: process.env.DINGTALK_WEBHOOK || '',
+ DINGTALK_SECRET: process.env.DINGTALK_SECRET || '',
+ RESULT_COUNT: process.env.RESULT_COUNT || ''
+}
\ No newline at end of file
diff --git a/packages/juejin-maths-game/src/index.js b/packages/juejin-maths-game/src/index.js
new file mode 100644
index 0000000..be2db2e
--- /dev/null
+++ b/packages/juejin-maths-game/src/index.js
@@ -0,0 +1,33 @@
+const { COOKIE, USERID, RESULT_COUNT } = require('./config')
+const { Game } = require('./lib/Game')
+const { Maths } = require('./lib/Maths')
+const { operatorArr } = require('./lib/utils')
+const message = require('./lib/message')
+
+//自动模式
+const autoRunning = async (needNum) => {
+ //1,拿到关卡数据
+ const res = new Game(USERID, COOKIE)
+ const resList = await res.openGame()
+
+ //2,解析关卡数据
+ const { nums, options } = operatorArr(resList.map)
+ const target = resList.target;
+
+ //3, 执行算法解析
+ const getMatch = new Maths(nums, options, target)
+
+ //5,前五个答案
+ getMatch.run(needNum)
+}
+//手动模式
+const handleRunning = async (nums, options, target) => {
+ const getMatch = new Maths(nums, options, target)
+ getMatch.run(5)
+}
+autoRunning(5)
+
+// handleRunning([1, 4, 5], ['+', '*'], 21)
+
+
+
diff --git a/packages/juejin-maths-game/src/lib/DIngtalkBot.js b/packages/juejin-maths-game/src/lib/DIngtalkBot.js
new file mode 100644
index 0000000..7ffc872
--- /dev/null
+++ b/packages/juejin-maths-game/src/lib/DIngtalkBot.js
@@ -0,0 +1,76 @@
+const axios = require('axios')
+const crypto = require('crypto')
+const dayjs = require('dayjs')
+
+const defaultOptions = {
+ msgtype: 'text',
+ text: {
+ content: 'hello~',
+ },
+}
+
+class DingtalkBot {
+ constructor(options = {}) {
+ this.text = ''
+
+ this.webhook = options.webhook
+ this.secret = options.secret
+ const timestamp = new Date().getTime()
+ const sign = this.signFn(this.secret, `${timestamp}\n${this.secret}`)
+ this.allWebhookUrl = `${this.webhook}×tamp=${timestamp}&sign=${sign}`
+ }
+
+ signFn(secret, content) {
+ // 加签
+ const str = crypto
+ .createHmac('sha256', secret)
+ .update(content)
+ .digest()
+ .toString('base64')
+ return encodeURIComponent(str)
+ }
+
+ send(data = defaultOptions) {
+ let p
+ // 没有这两个参数则静默失败
+ if (!this.webhook || !this.secret) {
+ p = Promise.resolve({
+ errcode: -1,
+ errmsg: 'webhook和secret不能为空',
+ })
+ } else {
+ p = axios({
+ url: this.allWebhookUrl,
+ method: 'POST',
+ data,
+ headers: {
+ 'Content-Type': 'application/json;charset=utf-8',
+ },
+ }).then((res) => {
+ return res.data
+ })
+ }
+ return p
+ }
+
+ sendMessage(msg) {
+ if (this.timer) {
+ clearTimeout(this.timer)
+ this.timer = null
+ }
+ this.text += `- ${dayjs().format('HH:mm:ss')} ${msg}\n`
+ this.timer = setTimeout(() => {
+ this.send({
+ msgtype: 'markdown',
+ markdown: {
+ title: 'JueJinLog',
+ text: this.text,
+ }
+ }).then(() => {
+ this.text = ''
+ })
+ }, 1000)
+ }
+}
+
+module.exports = DingtalkBot
diff --git a/packages/juejin-maths-game/src/lib/Game.js b/packages/juejin-maths-game/src/lib/Game.js
new file mode 100644
index 0000000..c31528e
--- /dev/null
+++ b/packages/juejin-maths-game/src/lib/Game.js
@@ -0,0 +1,163 @@
+const got = require('got')
+
+const GET_TOKEN_URL = 'https://juejin.cn/get/token'
+const HEADER = {
+ 'user-agent':
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.67'
+}
+
+const HOST_BASE = 'https://juejin-game.bytedance.com/game/num-puzz'
+const GET_USER = 'https://api.juejin.cn/user_api/v1/user/get'
+const START_GAME_URL = HOST_BASE + '/ugc/start?'
+const LOGIN_GAME_URL = HOST_BASE + '/user/login?'
+const OVER_GAME_URL = HOST_BASE + '/game/over?'
+
+class Game {
+ #uid
+ #username
+ #cookie
+ #authorization
+
+ constructor(uid, cookie) {
+ this.#uid = uid
+ this.#cookie = cookie
+ }
+
+ /**
+ * @desc 获取authorization授权
+ * @returns
+ */
+ #getToken = () => {
+ const cookie = this.#cookie
+ return got.post(GET_TOKEN_URL, {
+ hooks: {
+ beforeRequest: [
+ options => {
+ Object.assign(options.headers, {
+ ...HEADER,
+ cookie
+ })
+ }
+ ]
+ }
+ })
+ }
+
+ /**
+ * @desc 获取用户信息
+ * @returns
+ */
+ #getInfo = () => {
+ const URL = GET_USER
+ const cookie = this.#cookie
+ return got.get(URL, {
+ hooks: {
+ beforeRequest: [
+ options => {
+ Object.assign(options.headers, {
+ ...HEADER,
+ cookie
+ })
+ }
+ ]
+ }
+ })
+ }
+
+ /**
+ * @desc 登录游戏
+ * @returns
+ */
+ #loginGame = () => {
+ const URL = LOGIN_GAME_URL + `uid=${this.#uid}&time=` + new Date().getTime()
+ const body = { name: this.#username }
+ const authorization = this.#authorization
+ return got.post(URL, {
+ hooks: {
+ beforeRequest: [
+ options => {
+ Object.assign(options.headers, {
+ ...HEADER,
+ authorization: authorization
+ })
+ }
+ ]
+ },
+ json: body
+ })
+ }
+
+ /**
+ * @desc 开始游戏
+ * @param {Number} name 角色id
+ */
+ #startGame = () => {
+ const URL = START_GAME_URL + `uid=${this.#uid}&time=` + new Date().getTime()
+ const body = {}
+ const authorization = this.#authorization
+ return got.post(URL, {
+ hooks: {
+ beforeRequest: [
+ options => {
+ Object.assign(options.headers, {
+ ...HEADER,
+ authorization: authorization
+ })
+ }
+ ]
+ },
+ json: body
+ })
+ }
+
+ /**
+ * @desc 结束游戏
+ */
+ outGame = () => {
+ const URL = OVER_GAME_URL + `uid=${this.#uid}&time=` + new Date().getTime()
+ const body = { isButton: 1 }
+ const authorization = this.#authorization
+ return got.post(URL, {
+ hooks: {
+ beforeRequest: [
+ options => {
+ Object.assign(options.headers, {
+ ...HEADER,
+ authorization: authorization
+ })
+ }
+ ]
+ },
+ json: body
+ })
+ }
+
+
+
+ /**
+ * @desc 启动游戏
+ * @returns {Boolean} 是否启动成功
+ */
+ openGame = async () => {
+ // 1.获取授权
+ let res = await this.#getToken().json()
+ this.#authorization = 'Bearer ' + res.data
+
+ // 2.获取用户名
+ res = await this.#getInfo().json()
+ this.#username = res.data.user_name
+
+ // 3.登录游戏
+ // res = await this.#loginGame().json()
+
+
+ // 4.开始游戏,获得关卡数据
+ res = await this.#startGame().json()
+
+
+ // 5.游戏启动成功返回游戏信息
+ return res.code === 0 ? res.data : undefined
+ }
+}
+
+exports.Game = Game
diff --git a/packages/juejin-maths-game/src/lib/Maths.js b/packages/juejin-maths-game/src/lib/Maths.js
new file mode 100644
index 0000000..23630fc
--- /dev/null
+++ b/packages/juejin-maths-game/src/lib/Maths.js
@@ -0,0 +1,136 @@
+const colors = require('colors');
+colors.setTheme({
+ silly: 'rainbow',
+ input: 'grey',
+ verbose: 'cyan',
+ prompt: 'grey',
+ info: 'green',
+ data: 'grey',
+ help: 'cyan',
+ warn: 'yellow',
+ debug: 'blue',
+ error: 'red'
+});
+class Maths {
+ //解析算法部分-升级改造版 源地址:https://juejin.cn/post/7067862481800003591
+ constructor(nums, options, target) {
+ this.nums = nums;
+ this.options = options;
+ this.target = target;
+ this.cache = {}
+ this.type = 2;//第二代
+ this.needNum = 5;//正确解的数量
+ }
+ calc(a, option, b) {
+ let res;
+ let formula;
+ switch (option) {
+ case '+':
+ res = a.value + b.value;
+ formula = a.formula + '+' + b.formula;
+ break;
+ case '-':
+ res = a.value - b.value;
+ formula = a.formula + '-' + b.formula;
+ break;
+ case '*':
+ res = a.value * b.value;
+ formula = a.formula + '*' + b.formula;
+ break;
+ case '/':
+ res = a.value / b.value;
+ formula = a.formula + '/' + b.formula;
+ break;
+ case '.':
+ res = Number([a.value, b.value].join(""));
+ formula = a.formula + '.' + b.formula;
+ break;
+ }
+
+ if (res < 0 || res % 1 !== 0) {
+ res = NaN;
+ }
+ return {
+ value: res,
+ formula: '(' + formula + ')',
+ };;
+ };
+ calcSum = () => {
+ let cha = this.nums.length - 1 - this.options.length;
+ this.cache = {};
+ if (cha) {
+ this.options.push(...'.'.repeat(cha))
+ }
+ this.nowNum = 0
+ this.options.sort()
+ let len = this.nums.length
+ this.nums.sort()
+ for (let i = 0; i < len; i++) {
+ let num = this.nums[i]
+ this.nums[i] = {
+ value: num,
+ formula: '' + num,
+ }
+ }
+ this.calcLoop(this.nums, this.options, this.target)
+ this.cache = null;
+ };
+ calcLoop = (nums, options, target) => {
+ let cache = this.cache
+ if (nums.length === 1 && options.length == 0 && nums[0].value == target) {
+ console.log(colors.warn(`算法破解:${nums[0].formula}`));
+ this.nowNum++;
+ if (this.nowNum >= this.needNum) {
+ console.log(colors.info('扫地盲僧第三代算法--运行结束--!'))
+ return true
+ }
+ return// nums[0]
+ }
+
+ let nums2 = nums.map((v) => v.value)
+ nums2.sort()
+ let key = nums2.join() + '|' + options.join();
+ if (cache[key]) {
+ return
+ }
+ cache[key] = true
+ for (let i of '*+-/.') {
+ let index = options.indexOf(i);
+ if (index >= 0) {
+ let newOptions = [...options];
+ newOptions.splice(index, 1);
+ let len = nums.length
+ for (let j = 0; j < len - 1; j++) {
+ let newNums = [...nums];
+ newNums.splice(j, 1);
+ for (let k = j + 1; k < len; k++) {
+ let newNums2 = [...newNums];
+ //newNums2.splice(newNums2.indexOf(nums[k]), 1);
+ let newNum = this.calc(nums[j], i, nums[k])
+ if (isNaN(newNum.value)) {
+ }
+ else {
+ newNums2[k - 1] = newNum//[newNum.formula, ...newNums2]
+ if (this.calcLoop(newNums2, newOptions, target)) return true;
+ }
+ if (i != '+' && i != '*') {
+ let newNum = this.calc(nums[k], i, nums[j]);
+ if (isNaN(newNum.value)) {
+ }
+ else {
+ newNums2[k - 1] = newNum
+ if (this.calcLoop(newNums2, newOptions, target)) return true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ run = (needNum = 5) => {
+ this.needNum = needNum;
+ this.calcSum(this.nums, this.options, this.target)
+
+ }
+}
+exports.Maths = Maths
\ No newline at end of file
diff --git a/packages/juejin-maths-game/src/lib/message.js b/packages/juejin-maths-game/src/lib/message.js
new file mode 100644
index 0000000..59fd771
--- /dev/null
+++ b/packages/juejin-maths-game/src/lib/message.js
@@ -0,0 +1,9 @@
+const DingtalkBot = require('./DingtalkBot')
+const config = require('../config')
+const DingRobot = new DingtalkBot({
+ webhook: config.DINGTALK_WEBHOOK, // Webhook地址
+ secret: config.DINGTALK_SECRET, // 安全设置:加签的secret
+})
+module.exports = function message(msg) {
+ DingRobot.sendMessage(msg)
+}
\ No newline at end of file
diff --git a/packages/juejin-maths-game/src/lib/utils.js b/packages/juejin-maths-game/src/lib/utils.js
new file mode 100644
index 0000000..b183e56
--- /dev/null
+++ b/packages/juejin-maths-game/src/lib/utils.js
@@ -0,0 +1,35 @@
+module.exports = {
+ //解析运算符
+ operatorArr(arr) {
+ let nums = [];
+ let options = [];
+ arr.forEach(item => {
+ item.forEach(key => {
+ //整数为数字
+ if (key % 1 === 0) {
+ nums.push(key)
+ } else {
+ //运算符匹配
+ switch (key) {
+ case 0.3:
+ options.push('+')
+ break;
+ case 0.4:
+ options.push('-')
+ break;
+ case 0.5:
+ options.push('*')
+ break;
+ case 0.6:
+ options.push('/')
+ break;
+ case 0.4:
+ options.push('-')
+ break;
+ }
+ }
+ })
+ });
+ return { nums, options }
+ },
+}
\ No newline at end of file
diff --git a/packages/juejin-maths-game/statics/maths-code.png b/packages/juejin-maths-game/statics/maths-code.png
new file mode 100644
index 0000000000000000000000000000000000000000..e76f10d8aa0d5a080a1c5fc0824f86af84638576
GIT binary patch
literal 75809
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