zixulu 1.26.3 → 1.26.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +13 -5
- package/dist/index.js.map +2 -2
- package/package.json +1 -1
- package/src/index.ts +15 -7
package/dist/index.js
CHANGED
|
@@ -125,12 +125,16 @@ export default defineConfig({
|
|
|
125
125
|
await (0, import_utils.setTsConfig)("target", import_utils.Target.ESNext);
|
|
126
126
|
});
|
|
127
127
|
program.command("upgrade-dependency").alias("ud").description("升级所有依赖").action(async () => {
|
|
128
|
-
|
|
129
|
-
|
|
128
|
+
if (await (0, import_utils.isCommandExisted)("git")) {
|
|
129
|
+
const status = await (0, import_utils.execAsync)("git status");
|
|
130
|
+
if (status === "fatal: not a git repository (or any of the parent directories): .git") {
|
|
131
|
+
import_consola.default.warn("请在使用本功能前备份代码");
|
|
132
|
+
} else if (!status.includes("nothing to commit, working tree clean")) {
|
|
133
|
+
import_consola.default.warn("请在使用本功能前提交代码");
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
} else {
|
|
130
137
|
import_consola.default.warn("请在使用本功能前备份代码");
|
|
131
|
-
} else if (!status.includes("nothing to commit, working tree clean")) {
|
|
132
|
-
import_consola.default.warn("请在使用本功能前提交代码");
|
|
133
|
-
return;
|
|
134
138
|
}
|
|
135
139
|
const { default: inquirer } = await import("inquirer");
|
|
136
140
|
const packageJson = await (0, import_utils.readPackageJson)();
|
|
@@ -146,6 +150,7 @@ program.command("upgrade-dependency").alias("ud").description("升级所有依
|
|
|
146
150
|
message: "请选择升级的级别",
|
|
147
151
|
choices: ["major", "minor", "patch"]
|
|
148
152
|
});
|
|
153
|
+
let hasUpgrade = false;
|
|
149
154
|
for (const type of types) {
|
|
150
155
|
const upgrades = [];
|
|
151
156
|
const allPkgs = Object.keys(packageJson[type]);
|
|
@@ -168,10 +173,13 @@ program.command("upgrade-dependency").alias("ud").description("升级所有依
|
|
|
168
173
|
choices: upgrades.map((upgrade) => ({ name: `${upgrade.package} ${upgrade.oldVersion} => ${upgrade.newVersion}`, value: upgrade.package }))
|
|
169
174
|
});
|
|
170
175
|
pkgs.forEach((pkg2) => {
|
|
176
|
+
hasUpgrade = true;
|
|
171
177
|
const upgrade = upgrades.find((upgrade2) => upgrade2.package === pkg2);
|
|
172
178
|
packageJson[type][pkg2] = upgrade.strVersion;
|
|
173
179
|
});
|
|
174
180
|
}
|
|
181
|
+
if (!hasUpgrade)
|
|
182
|
+
return;
|
|
175
183
|
await (0, import_utils.writePackageJson)(packageJson);
|
|
176
184
|
const status1 = await (0, import_utils.execAsync)("git status");
|
|
177
185
|
const reg = /modified: *package\.json/m;
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["#!/usr/bin/env node\r\n\r\nimport { exec } from \"child_process\"\r\nimport { Argument, Command } from \"commander\"\r\nimport consola from \"consola\"\r\nimport { mkdir, readdir, readFile, rename, rm, writeFile } from \"fs/promises\"\r\nimport { join, resolve } from \"path\"\r\nimport { PackageManager, Registry, Software } from \"./constant\"\r\nimport { addAntd, addDependencies, addDevDependencies, addGitignore, addPostCSSConfig, addPrettier, addPrisma, addTailwind, addTailwindConfig, addTailwindToCSS, createIndexHtml, downloadVscodeExts, execAsync, getFiles, getPackageManager, getPackageUpgradeVersion, getPidInfoFromPort, getProcessInfoFromPid, getTypeInGenerics, getVersionFromRequiredVersion, installDependcies, Module, ModuleResolution, readPackageJson, readPackageJsonSync, removeComment, removeESLint, setTsConfig, SoftwareDownloadMap, sortArrayOrObject, spawnAsync, splitExtendsType, Target, vite, writeInstallVscodeExtScript, writePackageJson, writeRsbuildConfig, zipDir } from \"./utils\"\r\n\r\nconst program = new Command()\r\n\r\nconst pkg = readPackageJsonSync(resolve(__dirname, \"../\"))\r\n\r\nprogram.name(\"格数科技\").version(pkg.version)\r\n\r\nprogram.command(\"eslint\").description(\"删除 ESLint 配置文件\").action(removeESLint)\r\n\r\nprogram\r\n .command(\"prettier\")\r\n .description(\"添加 prettier 配置文件\")\r\n .action(async () => {\r\n await addPrettier()\r\n await installDependcies()\r\n })\r\n\r\nprogram.command(\"vite\").description(\"删除 vite 模板中的某些配置\").action(vite)\r\n\r\nprogram\r\n .command(\"tailwind\")\r\n .description(\"添加 tailwind 配置文件\")\r\n .action(async () => {\r\n await addTailwind()\r\n await installDependcies()\r\n })\r\n\r\nprogram.command(\"remove-comment\").description(\"删除所有注释\").addArgument(new Argument(\"path\")).action(removeComment)\r\n\r\nprogram\r\n .command(\"ts-target\")\r\n .description(\"设置 tsconfig 中 target 字段\")\r\n .action(async () => {\r\n const target = await consola.prompt(\"Please choose a target\", {\r\n type: \"select\",\r\n options: Object.values(Target),\r\n initial: Target.ESNext\r\n })\r\n await setTsConfig(\"target\", target)\r\n })\r\n\r\nprogram\r\n .command(\"ts-module\")\r\n .description(\"设置 tsconfig 中 module 字段\")\r\n .action(async () => {\r\n const module = await consola.prompt(\"Please choose a module\", {\r\n type: \"select\",\r\n options: Object.values(Module),\r\n initial: Module.ESNext\r\n })\r\n await setTsConfig(\"module\", module)\r\n })\r\n\r\nprogram\r\n .command(\"ts-module-resolution\")\r\n .alias(\"ts-mr\")\r\n .description(\"设置 tsconfig 中 module 字段\")\r\n .action(async () => {\r\n const moduleResolution = await consola.prompt(\"Please choose a module resolution\", {\r\n type: \"select\",\r\n options: Object.values(ModuleResolution),\r\n initial: ModuleResolution.NodeNext\r\n })\r\n await setTsConfig(\"moduleResolution\", moduleResolution)\r\n })\r\n\r\nprogram\r\n .command(\"father-setting\")\r\n .alias(\"fs\")\r\n .description(\"修改 father 项目配置\")\r\n .action(async () => {\r\n let packageJson = await readPackageJson()\r\n packageJson.publishConfig ??= {}\r\n packageJson.publishConfig.access = \"public\"\r\n packageJson.publishConfig.registry = \"https://registry.npmjs.org/\"\r\n packageJson.publishConfig = sortArrayOrObject(packageJson.publishConfig)\r\n packageJson.files ??= []\r\n if (!packageJson.files.includes(\"src\")) packageJson.files.push(\"src\")\r\n packageJson.files = sortArrayOrObject(packageJson.files)\r\n const dependencies = packageJson.dependencies\r\n const devDependencies = packageJson.devDependencies\r\n const peerDependencies = packageJson.peerDependencies\r\n if (packageJson.repository?.url && !packageJson.repository.url.startsWith(\"git+\")) packageJson.repository.url = `git+${packageJson.repository.url}.git`\r\n packageJson.repository ??= {}\r\n packageJson.repository.type ??= \"git\"\r\n packageJson.repository.url ??= `git+https://github.com/1adybug/${packageJson.name}.git`\r\n if (!packageJson.types) {\r\n packageJson = Object.entries(packageJson).reduce((prev: Record<string, any>, [key, value]) => {\r\n prev[key] = value\r\n if (Object.hasOwn(packageJson, \"module\")) {\r\n if (key === \"module\") prev.types = value.replace(/\\.js$/, \".d.ts\")\r\n } else if (Object.hasOwn(packageJson, \"main\")) {\r\n if (key === \"main\") prev.types = value.replace(/\\.js$/, \".d.ts\")\r\n }\r\n return prev\r\n }, {})\r\n }\r\n packageJson.scripts ??= {}\r\n packageJson.scripts.prepublishOnly = \"npx zixulu upgrade && father doctor && npm run build\"\r\n delete packageJson.dependencies\r\n delete packageJson.devDependencies\r\n delete packageJson.peerDependencies\r\n packageJson.dependencies = sortArrayOrObject(dependencies)\r\n packageJson.devDependencies = sortArrayOrObject(devDependencies)\r\n packageJson.peerDependencies = sortArrayOrObject(peerDependencies)\r\n const fatherrcCode = `import { defineConfig } from \"father\"\r\n\r\nexport default defineConfig({\r\n esm: {},\r\n cjs: {},\r\n targets: {\r\n node: 18,\r\n chrome: 100\r\n },\r\n sourcemap: true\r\n})\r\n`\r\n await addGitignore()\r\n await writePackageJson(packageJson)\r\n await writeFile(\".fatherrc.ts\", fatherrcCode)\r\n await setTsConfig(\"target\", Target.ESNext)\r\n })\r\n\r\nprogram\r\n .command(\"upgrade-dependency\")\r\n .alias(\"ud\")\r\n .description(\"升级所有依赖\")\r\n .action(async () => {\r\n const status = await execAsync(\"git status\")\r\n\r\n if (status === \"fatal: not a git repository (or any of the parent directories): .git\") {\r\n consola.warn(\"请在使用本功能前备份代码\")\r\n } else if (!status.includes(\"nothing to commit, working tree clean\")) {\r\n consola.warn(\"请在使用本功能前提交代码\")\r\n return\r\n }\r\n\r\n const { default: inquirer } = await import(\"inquirer\")\r\n\r\n const packageJson = await readPackageJson()\r\n\r\n const { types } = await inquirer.prompt({\r\n type: \"checkbox\",\r\n name: \"types\",\r\n message: \"请选择要升级的依赖类型\",\r\n choices: [\"dependencies\", \"devDependencies\"].filter(type => !!packageJson[type])\r\n })\r\n\r\n const { level } = await inquirer.prompt({\r\n type: \"list\",\r\n name: \"level\",\r\n message: \"请选择升级的级别\",\r\n choices: [\"major\", \"minor\", \"patch\"]\r\n })\r\n\r\n for (const type of types) {\r\n const upgrades: { package: string; oldVersion: string; newVersion: string; strVersion: string }[] = []\r\n const allPkgs = Object.keys(packageJson[type])\r\n\r\n for (let i = 0; i < allPkgs.length; i++) {\r\n const pkg = allPkgs[i]\r\n const rv = packageJson[type][pkg]\r\n const s = rv.match(/^\\D*/)![0]\r\n const cv = getVersionFromRequiredVersion(rv)\r\n const version = await getPackageUpgradeVersion(pkg, cv, level)\r\n if (!version) continue\r\n upgrades.push({ package: pkg, oldVersion: cv, newVersion: version, strVersion: `${s}${version}` })\r\n }\r\n\r\n if (upgrades.length === 0) continue\r\n\r\n const { pkgs } = await inquirer.prompt({\r\n type: \"checkbox\",\r\n name: \"pkgs\",\r\n message: \"请选择要升级的包\",\r\n choices: upgrades.map(upgrade => ({ name: `${upgrade.package} ${upgrade.oldVersion} => ${upgrade.newVersion}`, value: upgrade.package }))\r\n })\r\n\r\n pkgs.forEach((pkg: string) => {\r\n const upgrade = upgrades.find(upgrade => upgrade.package === pkg)!\r\n packageJson[type][pkg] = upgrade.strVersion\r\n })\r\n }\r\n\r\n await writePackageJson(packageJson)\r\n\r\n const status1 = await execAsync(\"git status\")\r\n\r\n const reg = /modified: *package\\.json/m\r\n\r\n if (reg.test(status1)) {\r\n consola.start(\"提交代码\")\r\n await execAsync(\"git add package.json\")\r\n await execAsync(`git commit -m \"✨feature: upgrade dependencies\"`)\r\n const result = await installDependcies()\r\n if (result) exec(\"npx tsc --noEmit\")\r\n }\r\n })\r\n\r\nprogram\r\n .command(\"registry\")\r\n .description(\"设置 npm registry\")\r\n .action(async () => {\r\n const { default: inquirer } = await import(\"inquirer\")\r\n\r\n const { manager } = await inquirer.prompt({\r\n type: \"list\",\r\n name: \"manager\",\r\n message: \"请选择包管理器\",\r\n choices: Object.keys(PackageManager)\r\n })\r\n\r\n const { registry } = await inquirer.prompt({\r\n type: \"list\",\r\n name: \"registry\",\r\n message: \"请选择要更换的源\",\r\n choices: Object.keys(Registry)\r\n })\r\n\r\n const command = `${manager} config set registry ${Registry[registry as keyof typeof Registry]}`\r\n await spawnAsync(command)\r\n })\r\n\r\nprogram\r\n .command(\"sort-package-json\")\r\n .alias(\"spj\")\r\n .description(\"对 package.json 中的依赖进行排序\")\r\n .action(async () => {\r\n const packageJson = await readPackageJson()\r\n packageJson.dependencies = sortArrayOrObject(packageJson.dependencies)\r\n packageJson.devDependencies = sortArrayOrObject(packageJson.devDependencies)\r\n packageJson.peerDependencies = sortArrayOrObject(packageJson.peerDependencies)\r\n packageJson.peerDevDependencies = sortArrayOrObject(packageJson.peerDevDependencies)\r\n await writePackageJson(packageJson)\r\n })\r\n\r\ntype Choice = {\r\n value: string\r\n short: string\r\n name: string\r\n checked: boolean\r\n}\r\n\r\nprogram\r\n .command(\"arrow-to-function\")\r\n .alias(\"a2f\")\r\n .description(\"将箭头函数组件转换为函数组件\")\r\n .action(async () => {\r\n consola.warn(\"请在使用本功能前提交或备份代码\")\r\n const { default: inquirer } = await import(\"inquirer\")\r\n const files = await getFiles({\r\n path: \"./src\",\r\n match: (path, stats) => path.ext === \".tsx\" && stats.isFile()\r\n })\r\n const reg = /^(export )?const \\w+?: FC.+?$/gm\r\n const { auto } = await inquirer.prompt({\r\n type: \"confirm\",\r\n name: \"auto\",\r\n message: \"是否自动选择要转换的组件\"\r\n })\r\n\r\n const warnFiles: Set<string> = new Set()\r\n const modifiedFiles: Set<string> = new Set()\r\n\r\n if (auto) {\r\n for (const file of files) {\r\n let code = await readFile(file, \"utf-8\")\r\n let exportDefaultReg: RegExp | undefined = undefined\r\n code = code.replace(reg, match => {\r\n if (match.includes(\"memo(\") || match.includes(\"forwardRef(\")) {\r\n warnFiles.add(file)\r\n return match\r\n }\r\n modifiedFiles.add(file)\r\n const hasExport = match.startsWith(\"export \")\r\n const name = match.match(/const (\\w+?):/)![1]\r\n const edReg = new RegExp(`^export default ${name}$`, \"m\")\r\n let hasExportDefault = false\r\n if (!exportDefaultReg && !hasExport && edReg.test(code)) {\r\n exportDefaultReg = edReg\r\n hasExportDefault = true\r\n }\r\n const typeIndex = match.indexOf(\"FC<\")\r\n if (typeIndex > 0) {\r\n const type = getTypeInGenerics(match, typeIndex + 2)\r\n return `${hasExport ? \"export \" : \"\"}${hasExportDefault ? \"export default \" : \"\"}function ${name}(props: ${type}) {`\r\n }\r\n return `${hasExport ? \"export \" : \"\"}${hasExportDefault ? \"export default \" : \"\"}function ${name}() {`\r\n })\r\n if (exportDefaultReg) code = code.replace(exportDefaultReg, \"\")\r\n await writeFile(file, code, \"utf-8\")\r\n }\r\n } else {\r\n for (const file of files) {\r\n let code = await readFile(file, \"utf-8\")\r\n const matches = code.match(reg)\r\n if (!matches) continue\r\n consola.start(file)\r\n const choices = Array.from(matches).reduce((prev: Choice[], match, index) => {\r\n if (match.includes(\"memo(\") || match.includes(\"forwardRef(\")) {\r\n warnFiles.add(file)\r\n return prev\r\n }\r\n modifiedFiles.add(file)\r\n const hasExport = match.startsWith(\"export \")\r\n const funName = match.match(/const (\\w+?):/)![1]\r\n const typeIndex = match.indexOf(\"FC<\")\r\n if (typeIndex > 0) {\r\n const type = getTypeInGenerics(match, typeIndex + 2)\r\n const name = `◆ ${match}\r\n ◆ ${hasExport ? \"export \" : \"\"}function ${funName}(props: ${type}) {`\r\n prev.push({ value: index.toString(), short: funName, name, checked: true })\r\n } else {\r\n const name = `◆ ${match}\r\n ◆ ${hasExport ? \"export \" : \"\"}function ${funName}() {`\r\n prev.push({ value: index.toString(), short: funName, name, checked: true })\r\n }\r\n\r\n return prev\r\n }, [])\r\n\r\n const length = choices.length.toString().length\r\n\r\n choices.forEach((choice, index) => {\r\n let first = true\r\n choice.name = choice.name.replace(/◆/g, () => {\r\n if (first) {\r\n first = false\r\n return `◆ ${(index + 1).toString().padStart(length, \"0\")}.`\r\n }\r\n return \"\".padStart(length + 3, \" \")\r\n })\r\n })\r\n\r\n const { indexs } = await inquirer.prompt({\r\n type: \"checkbox\",\r\n name: \"indexs\",\r\n message: `total ${choices.length} component${choices.length > 1 ? \"s\" : \"\"}`,\r\n choices\r\n })\r\n\r\n let index = 0\r\n\r\n let exportDefaultReg: RegExp | undefined = undefined\r\n\r\n code = code.replace(reg, match => {\r\n if (!indexs.includes(index.toString())) return match\r\n const hasExport = match.startsWith(\"export \")\r\n const name = match.match(/const (\\w+?):/)![1]\r\n const edReg = new RegExp(`^export default ${name}$`, \"m\")\r\n let hasExportDefault = false\r\n if (!exportDefaultReg && !hasExport && edReg.test(code)) {\r\n exportDefaultReg = edReg\r\n hasExportDefault = true\r\n }\r\n const typeIndex = match.indexOf(\"FC<\")\r\n if (typeIndex > 0) {\r\n const type = getTypeInGenerics(match, typeIndex + 2)\r\n return `${hasExport ? \"export \" : \"\"}${hasExportDefault ? \"export default \" : \"\"}function ${name}(props: ${type}) {`\r\n }\r\n return `${hasExport ? \"export \" : \"\"}${hasExportDefault ? \"export default \" : \"\"}function ${name}() {`\r\n })\r\n\r\n if (exportDefaultReg) code = code.replace(exportDefaultReg, \"\")\r\n\r\n console.log()\r\n\r\n await writeFile(file, code, \"utf-8\")\r\n }\r\n }\r\n\r\n if (modifiedFiles.size > 0) consola.success(`以下文件中的箭头函数组件已经转换为函数组件:\\n\\n${Array.from(modifiedFiles).join(\"\\n\")}`)\r\n\r\n if (warnFiles.size > 0) consola.warn(`以下文件中存在 memo 或 forwardRef,请手动转换:\\n\\n${Array.from(warnFiles).join(\"\\n\")}`)\r\n\r\n consola.start(\"格式化代码\")\r\n\r\n await addPrettier()\r\n\r\n await installDependcies(true)\r\n\r\n await spawnAsync(\"npx prettier --write ./src\")\r\n\r\n consola.start(\"检查项目是否存在 TypeScript 错误\")\r\n\r\n await spawnAsync(\"npx tsc --noEmit\")\r\n })\r\n\r\nprogram\r\n .command(\"interface-to-type\")\r\n .alias(\"i2t\")\r\n .description(\"将 interface 转换为 type\")\r\n .action(async () => {\r\n consola.warn(\"请在使用本功能前提交或备份代码\")\r\n\r\n const files = await getFiles({\r\n match: (path, stats) => (path.ext === \".tsx\" || path.ext === \".ts\") && !path.base.endsWith(\".d.ts\") && stats.isFile(),\r\n exclude: (path, stats) => stats.isDirectory() && path.base === \"node_modules\"\r\n })\r\n\r\n const { default: inquirer } = await import(\"inquirer\")\r\n\r\n const { ifContinue } = await inquirer.prompt({\r\n type: \"confirm\",\r\n name: \"ifContinue\",\r\n message: \"是否继续\"\r\n })\r\n\r\n if (!ifContinue) return\r\n\r\n const reg = /(export )?interface (.+?) {/gm\r\n const reg1 = /\\bexport\\b/\r\n const reg2 = /(\\w+?) extends (.+)/\r\n const modifiedFiles: Set<string> = new Set()\r\n\r\n for (const file of files) {\r\n const code = await readFile(file, \"utf-8\")\r\n const newCode = code.replace(reg, match => {\r\n modifiedFiles.add(file)\r\n const hasExport = reg1.test(match)\r\n const $2 = match.replace(reg, \"$2\")\r\n const matches = $2.match(reg2)\r\n if (matches) {\r\n const name = matches[1]\r\n const extendsTypes = splitExtendsType(matches[2]).join(\" & \")\r\n\r\n return `${hasExport ? \"export \" : \"\"}type ${name} = ${extendsTypes} & {`\r\n }\r\n return `${hasExport ? \"export \" : \"\"}type ${$2} = {`\r\n })\r\n await writeFile(file, newCode, \"utf-8\")\r\n }\r\n\r\n if (modifiedFiles.size > 0) consola.success(`以下文件中的 interface 已经转换为 type:\\n\\n${Array.from(modifiedFiles).join(\"\\n\")}`)\r\n\r\n consola.start(\"检查项目是否存在 TypeScript 错误\")\r\n\r\n await spawnAsync(\"npx tsc --noEmit\")\r\n })\r\n\r\nprogram.command(\"gitignore\").description(\"添加 .gitignore 文件\").action(addGitignore)\r\n\r\nprogram\r\n .command(\"rsbuild-setting\")\r\n .alias(\"rs\")\r\n .description(\"rsbuild 常用设置\")\r\n .action(async () => {\r\n await writeRsbuildConfig()\r\n await createIndexHtml()\r\n await setTsConfig(\"noEmit\", true)\r\n await addGitignore()\r\n await addDependencies(\"@ant-design/cssinjs\")\r\n await addDependencies(\"@ant-design/icons\")\r\n await addDependencies(\"@emotion/css\")\r\n await addDependencies(\"ahooks\")\r\n await addDependencies(\"antd\")\r\n await addDependencies(\"deepsea-components\")\r\n await addDependencies(\"deepsea-tools\")\r\n await addDependencies(\"react-router-dom\")\r\n await addDependencies(\"react-soda\")\r\n await addDevDependencies(\"@types/node\")\r\n await addDevDependencies(\"prettier\")\r\n await addDevDependencies(\"prettier-plugin-tailwindcss\")\r\n await addDevDependencies(\"tailwindcss\")\r\n await addTailwindConfig()\r\n await addPostCSSConfig()\r\n await addTailwindToCSS()\r\n await addPrettier()\r\n await installDependcies()\r\n })\r\n\r\nprogram\r\n .command(\"git-proxy\")\r\n .alias(\"gp\")\r\n .description(\"设置 git 代理\")\r\n .action(async () => {\r\n const { default: inquirer } = await import(\"inquirer\")\r\n const { global } = await inquirer.prompt({\r\n type: \"list\",\r\n name: \"global\",\r\n message: \"请选择\",\r\n choices: [\r\n {\r\n name: \"全局代理\",\r\n value: true\r\n },\r\n {\r\n name: \"当前项目\",\r\n value: false\r\n }\r\n ]\r\n })\r\n const { open } = await inquirer.prompt({\r\n type: \"list\",\r\n name: \"open\",\r\n message: \"请选择\",\r\n choices: [\r\n {\r\n name: \"打开代理\",\r\n value: true\r\n },\r\n {\r\n name: \"关闭代理\",\r\n value: false\r\n }\r\n ]\r\n })\r\n if (!open) {\r\n try {\r\n await spawnAsync(`git config${global ? \" --global\" : \"\"} --unset http.proxy`)\r\n } catch (error) {}\r\n try {\r\n await spawnAsync(`git config${global ? \" --global\" : \"\"} --unset https.proxy`)\r\n } catch (error) {}\r\n return\r\n }\r\n const { proxy } = await inquirer.prompt({\r\n type: \"input\",\r\n name: \"proxy\",\r\n message: \"请输入代理地址\",\r\n default: \"http://localhost:7890\"\r\n })\r\n await spawnAsync(`git config${global ? \" --global\" : \"\"} http.proxy ${proxy}`)\r\n await spawnAsync(`git config${global ? \" --global\" : \"\"} https.proxy ${proxy}`)\r\n })\r\n\r\nprogram\r\n .command(\"shell-proxy\")\r\n .alias(\"sp\")\r\n .description(\"设置 powershell 代理\")\r\n .action(async () => {\r\n const { default: inquirer } = await import(\"inquirer\")\r\n const { open } = await inquirer.prompt({\r\n type: \"list\",\r\n name: \"open\",\r\n message: \"请选择\",\r\n choices: [\r\n {\r\n name: \"打开代理\",\r\n value: true\r\n },\r\n {\r\n name: \"关闭代理\",\r\n value: false\r\n }\r\n ]\r\n })\r\n if (!open) return await spawnAsync(`netsh winhttp reset proxy`)\r\n const { proxy } = await inquirer.prompt({\r\n type: \"input\",\r\n name: \"proxy\",\r\n message: \"请输入代理地址\",\r\n default: \"http://localhost:7890\"\r\n })\r\n await spawnAsync(`netsh winhttp set proxy \"${proxy}\" \"<local>\"`)\r\n })\r\n\r\nprogram\r\n .command(\"download-software\")\r\n .alias(\"ds\")\r\n .description(\"下载最新版软件\")\r\n .action(async () => {\r\n const { default: inquirer } = await import(\"inquirer\")\r\n const dir = `softwares-${Date.now()}`\r\n const { softwares } = await inquirer.prompt({\r\n type: \"checkbox\",\r\n name: \"softwares\",\r\n message: \"请选择要下载的软件\",\r\n choices: Object.values(Software),\r\n default: Object.values(Software)\r\n })\r\n if (softwares.length === 0) return\r\n await mkdir(dir, { recursive: true })\r\n for (const software of softwares) {\r\n consola.start(`正在下载 ${software}`)\r\n await SoftwareDownloadMap[software as Software](dir)\r\n }\r\n })\r\n\r\nprogram\r\n .command(\"download-vscode-extension\")\r\n .alias(\"dve\")\r\n .description(\"下载 VS Code 插件\")\r\n .action(async () => {\r\n const dir = `vscode-${Date.now()}`\r\n await mkdir(dir, { recursive: true })\r\n await downloadVscodeExts(dir)\r\n await writeInstallVscodeExtScript(dir)\r\n })\r\n\r\nprogram\r\n .command(\"port\")\r\n .argument(\"port\", \"端口号\")\r\n .action(async port => {\r\n const { default: inquirer } = await import(\"inquirer\")\r\n const pidInfos = await getPidInfoFromPort(parseInt(port))\r\n const choices: { name: string; value: number }[] = []\r\n for (const { pid, info } of pidInfos) {\r\n const name = await getProcessInfoFromPid(pid)\r\n if (name) choices.push({ name: `${info} ${name}`, value: pid })\r\n }\r\n if (choices.length === 0) {\r\n consola.warn(\"没有找到对应的进程\")\r\n return\r\n }\r\n const { chosenPids } = await inquirer.prompt({\r\n type: \"checkbox\",\r\n name: \"chosenPids\",\r\n message: \"请选择要结束的进程\",\r\n choices,\r\n default: choices.map(choice => choice.value)\r\n })\r\n for (const pid of chosenPids) {\r\n exec(`taskkill /f /pid ${pid}`)\r\n }\r\n })\r\n\r\nprogram\r\n .command(\"rm-git\")\r\n .argument(\"path\")\r\n .option(\"-r, --recursive\", \"适用于文件夹\")\r\n .action(async (path, options) => {\r\n await execAsync(`git filter-branch --force --index-filter \"git rm${options.recursive ? \" -r\" : \"\"} --cached --ignore-unmatch ${path}\" --prune-empty --tag-name-filter cat -- --all`)\r\n })\r\n\r\nprogram\r\n .command(\"npm-download\")\r\n .alias(\"nd\")\r\n .argument(\"name\")\r\n .action(async name => {\r\n const folder = `.${name}`\r\n const file = `${name}.zip`\r\n const dir = await readdir(\".\")\r\n if (dir.includes(folder)) {\r\n consola.warn(\"文件夹已存在\")\r\n return\r\n }\r\n if (dir.includes(file)) {\r\n consola.warn(\"文件已存在\")\r\n return\r\n }\r\n await mkdir(folder, { recursive: true })\r\n await execAsync(`npm init -y`, { cwd: folder })\r\n await execAsync(`npm install ${name}`, { cwd: folder })\r\n await mkdir(join(folder, \"node_modules\", name, \"node_modules\"))\r\n const dir1 = await readdir(join(folder, \"node_modules\"))\r\n for (const d of dir1) {\r\n if (d === name) continue\r\n if (d.startsWith(\".\")) {\r\n await rm(join(folder, \"node_modules\", d), { recursive: true })\r\n continue\r\n }\r\n await rename(join(folder, \"node_modules\", d), join(folder, \"node_modules\", name, \"node_modules\", d))\r\n }\r\n await zipDir(join(folder, \"node_modules\"), file)\r\n await rm(folder, { recursive: true })\r\n })\r\n\r\nprogram.command(\"prisma\").description(\"添加 prisma 配置\").action(addPrisma)\r\n\r\nprogram\r\n .command(\"prisma-generate\")\r\n .alias(\"pg\")\r\n .description(\"生成 prisma client\")\r\n .action(async () => {\r\n await spawnAsync(\"npx prisma db push && npx prisma generate\")\r\n })\r\n\r\nprogram.command(\"antd\").description(\"添加 antd 配置\").action(addAntd)\r\n\r\nprogram.command(\"init\").action(async () => {\r\n const { default: inquirer } = await import(\"inquirer\")\r\n await addGitignore()\r\n const manager = await getPackageManager()\r\n const packageJson = await readPackageJson()\r\n const allDependcies = Object.keys(packageJson.dependencies || {}).concat(Object.keys(packageJson.devDependencies || {}))\r\n if (allDependcies.some(item => item.includes(\"eslint\"))) {\r\n const { removeEslintConfig } = await inquirer.prompt({\r\n type: \"confirm\",\r\n name: \"removeEslintConfig\",\r\n message: \"是否删除 ESLint 配置文件\",\r\n default: true\r\n })\r\n if (removeEslintConfig) await removeESLint()\r\n }\r\n const isFullStack = allDependcies.some(item => item === \"next\" || item.startsWith(\"@remix-run/\"))\r\n const choices = isFullStack ? [\"antd\", \"dayjs\", \"deepsea-components\", \"deepsea-tools\", \"prisma\", \"stable-hash\", \"tailwind\", \"zod\"] : [\"antd\", \"dayjs\", \"deepsea-components\", \"deepsea-tools\", \"stable-hash\", \"tailwind\"]\r\n const { modules } = await inquirer.prompt({\r\n type: \"checkbox\",\r\n name: \"modules\",\r\n message: \"请选择要添加的模块\",\r\n choices,\r\n default: choices\r\n })\r\n if (modules.includes(\"antd\")) await addAntd()\r\n if (modules.includes(\"tailwind\")) await addTailwind()\r\n if (modules.includes(\"dayjs\")) await addDependencies(\"dayjs\")\r\n if (modules.includes(\"deepsea-components\")) await addDependencies(\"deepsea-components\")\r\n if (modules.includes(\"deepsea-tools\")) await addDependencies(\"deepsea-tools\")\r\n if (modules.includes(\"stable-hash\")) await addDependencies(\"stable-hash\")\r\n if (modules.includes(\"zod\")) await addDependencies(\"zod\")\r\n await addPrettier()\r\n let installed = false\r\n if (modules.includes(\"prisma\")) {\r\n await addPrisma(manager)\r\n installed = true\r\n }\r\n if (!installed) await installDependcies(true, manager)\r\n})\r\n\r\nprogram\r\n .command(\"tsc\")\r\n .description(\"类型检查\")\r\n .action(async () => await spawnAsync(\"npx tsc --noEmit\"))\r\n\r\nprogram.parse()\r\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["#!/usr/bin/env node\r\n\r\nimport { exec } from \"child_process\"\r\nimport { Argument, Command } from \"commander\"\r\nimport consola from \"consola\"\r\nimport { mkdir, readdir, readFile, rename, rm, writeFile } from \"fs/promises\"\r\nimport { join, resolve } from \"path\"\r\nimport { PackageManager, Registry, Software } from \"./constant\"\r\nimport { addAntd, addDependencies, addDevDependencies, addGitignore, addPostCSSConfig, addPrettier, addPrisma, addTailwind, addTailwindConfig, addTailwindToCSS, createIndexHtml, downloadVscodeExts, execAsync, getFiles, getPackageManager, getPackageUpgradeVersion, getPidInfoFromPort, getProcessInfoFromPid, getTypeInGenerics, getVersionFromRequiredVersion, installDependcies, isCommandExisted, Module, ModuleResolution, readPackageJson, readPackageJsonSync, removeComment, removeESLint, setTsConfig, SoftwareDownloadMap, sortArrayOrObject, spawnAsync, splitExtendsType, Target, vite, writeInstallVscodeExtScript, writePackageJson, writeRsbuildConfig, zipDir } from \"./utils\"\r\n\r\nconst program = new Command()\r\n\r\nconst pkg = readPackageJsonSync(resolve(__dirname, \"../\"))\r\n\r\nprogram.name(\"格数科技\").version(pkg.version)\r\n\r\nprogram.command(\"eslint\").description(\"删除 ESLint 配置文件\").action(removeESLint)\r\n\r\nprogram\r\n .command(\"prettier\")\r\n .description(\"添加 prettier 配置文件\")\r\n .action(async () => {\r\n await addPrettier()\r\n await installDependcies()\r\n })\r\n\r\nprogram.command(\"vite\").description(\"删除 vite 模板中的某些配置\").action(vite)\r\n\r\nprogram\r\n .command(\"tailwind\")\r\n .description(\"添加 tailwind 配置文件\")\r\n .action(async () => {\r\n await addTailwind()\r\n await installDependcies()\r\n })\r\n\r\nprogram.command(\"remove-comment\").description(\"删除所有注释\").addArgument(new Argument(\"path\")).action(removeComment)\r\n\r\nprogram\r\n .command(\"ts-target\")\r\n .description(\"设置 tsconfig 中 target 字段\")\r\n .action(async () => {\r\n const target = await consola.prompt(\"Please choose a target\", {\r\n type: \"select\",\r\n options: Object.values(Target),\r\n initial: Target.ESNext\r\n })\r\n await setTsConfig(\"target\", target)\r\n })\r\n\r\nprogram\r\n .command(\"ts-module\")\r\n .description(\"设置 tsconfig 中 module 字段\")\r\n .action(async () => {\r\n const module = await consola.prompt(\"Please choose a module\", {\r\n type: \"select\",\r\n options: Object.values(Module),\r\n initial: Module.ESNext\r\n })\r\n await setTsConfig(\"module\", module)\r\n })\r\n\r\nprogram\r\n .command(\"ts-module-resolution\")\r\n .alias(\"ts-mr\")\r\n .description(\"设置 tsconfig 中 module 字段\")\r\n .action(async () => {\r\n const moduleResolution = await consola.prompt(\"Please choose a module resolution\", {\r\n type: \"select\",\r\n options: Object.values(ModuleResolution),\r\n initial: ModuleResolution.NodeNext\r\n })\r\n await setTsConfig(\"moduleResolution\", moduleResolution)\r\n })\r\n\r\nprogram\r\n .command(\"father-setting\")\r\n .alias(\"fs\")\r\n .description(\"修改 father 项目配置\")\r\n .action(async () => {\r\n let packageJson = await readPackageJson()\r\n packageJson.publishConfig ??= {}\r\n packageJson.publishConfig.access = \"public\"\r\n packageJson.publishConfig.registry = \"https://registry.npmjs.org/\"\r\n packageJson.publishConfig = sortArrayOrObject(packageJson.publishConfig)\r\n packageJson.files ??= []\r\n if (!packageJson.files.includes(\"src\")) packageJson.files.push(\"src\")\r\n packageJson.files = sortArrayOrObject(packageJson.files)\r\n const dependencies = packageJson.dependencies\r\n const devDependencies = packageJson.devDependencies\r\n const peerDependencies = packageJson.peerDependencies\r\n if (packageJson.repository?.url && !packageJson.repository.url.startsWith(\"git+\")) packageJson.repository.url = `git+${packageJson.repository.url}.git`\r\n packageJson.repository ??= {}\r\n packageJson.repository.type ??= \"git\"\r\n packageJson.repository.url ??= `git+https://github.com/1adybug/${packageJson.name}.git`\r\n if (!packageJson.types) {\r\n packageJson = Object.entries(packageJson).reduce((prev: Record<string, any>, [key, value]) => {\r\n prev[key] = value\r\n if (Object.hasOwn(packageJson, \"module\")) {\r\n if (key === \"module\") prev.types = value.replace(/\\.js$/, \".d.ts\")\r\n } else if (Object.hasOwn(packageJson, \"main\")) {\r\n if (key === \"main\") prev.types = value.replace(/\\.js$/, \".d.ts\")\r\n }\r\n return prev\r\n }, {})\r\n }\r\n packageJson.scripts ??= {}\r\n packageJson.scripts.prepublishOnly = \"npx zixulu upgrade && father doctor && npm run build\"\r\n delete packageJson.dependencies\r\n delete packageJson.devDependencies\r\n delete packageJson.peerDependencies\r\n packageJson.dependencies = sortArrayOrObject(dependencies)\r\n packageJson.devDependencies = sortArrayOrObject(devDependencies)\r\n packageJson.peerDependencies = sortArrayOrObject(peerDependencies)\r\n const fatherrcCode = `import { defineConfig } from \"father\"\r\n\r\nexport default defineConfig({\r\n esm: {},\r\n cjs: {},\r\n targets: {\r\n node: 18,\r\n chrome: 100\r\n },\r\n sourcemap: true\r\n})\r\n`\r\n await addGitignore()\r\n await writePackageJson(packageJson)\r\n await writeFile(\".fatherrc.ts\", fatherrcCode)\r\n await setTsConfig(\"target\", Target.ESNext)\r\n })\r\n\r\nprogram\r\n .command(\"upgrade-dependency\")\r\n .alias(\"ud\")\r\n .description(\"升级所有依赖\")\r\n .action(async () => {\r\n if (await isCommandExisted(\"git\")) {\r\n const status = await execAsync(\"git status\")\r\n if (status === \"fatal: not a git repository (or any of the parent directories): .git\") {\r\n consola.warn(\"请在使用本功能前备份代码\")\r\n } else if (!status.includes(\"nothing to commit, working tree clean\")) {\r\n consola.warn(\"请在使用本功能前提交代码\")\r\n return\r\n }\r\n } else {\r\n consola.warn(\"请在使用本功能前备份代码\")\r\n }\r\n\r\n const { default: inquirer } = await import(\"inquirer\")\r\n\r\n const packageJson = await readPackageJson()\r\n\r\n const { types } = await inquirer.prompt({\r\n type: \"checkbox\",\r\n name: \"types\",\r\n message: \"请选择要升级的依赖类型\",\r\n choices: [\"dependencies\", \"devDependencies\"].filter(type => !!packageJson[type])\r\n })\r\n\r\n const { level } = await inquirer.prompt({\r\n type: \"list\",\r\n name: \"level\",\r\n message: \"请选择升级的级别\",\r\n choices: [\"major\", \"minor\", \"patch\"]\r\n })\r\n\r\n let hasUpgrade = false\r\n\r\n for (const type of types) {\r\n const upgrades: { package: string; oldVersion: string; newVersion: string; strVersion: string }[] = []\r\n const allPkgs = Object.keys(packageJson[type])\r\n\r\n for (let i = 0; i < allPkgs.length; i++) {\r\n const pkg = allPkgs[i]\r\n const rv = packageJson[type][pkg]\r\n const s = rv.match(/^\\D*/)![0]\r\n const cv = getVersionFromRequiredVersion(rv)\r\n const version = await getPackageUpgradeVersion(pkg, cv, level)\r\n if (!version) continue\r\n upgrades.push({ package: pkg, oldVersion: cv, newVersion: version, strVersion: `${s}${version}` })\r\n }\r\n\r\n if (upgrades.length === 0) continue\r\n\r\n const { pkgs } = await inquirer.prompt({\r\n type: \"checkbox\",\r\n name: \"pkgs\",\r\n message: \"请选择要升级的包\",\r\n choices: upgrades.map(upgrade => ({ name: `${upgrade.package} ${upgrade.oldVersion} => ${upgrade.newVersion}`, value: upgrade.package }))\r\n })\r\n\r\n pkgs.forEach((pkg: string) => {\r\n hasUpgrade = true\r\n const upgrade = upgrades.find(upgrade => upgrade.package === pkg)!\r\n packageJson[type][pkg] = upgrade.strVersion\r\n })\r\n }\r\n\r\n if (!hasUpgrade) return\r\n\r\n await writePackageJson(packageJson)\r\n\r\n const status1 = await execAsync(\"git status\")\r\n\r\n const reg = /modified: *package\\.json/m\r\n\r\n if (reg.test(status1)) {\r\n consola.start(\"提交代码\")\r\n await execAsync(\"git add package.json\")\r\n await execAsync(`git commit -m \"✨feature: upgrade dependencies\"`)\r\n const result = await installDependcies()\r\n if (result) exec(\"npx tsc --noEmit\")\r\n }\r\n })\r\n\r\nprogram\r\n .command(\"registry\")\r\n .description(\"设置 npm registry\")\r\n .action(async () => {\r\n const { default: inquirer } = await import(\"inquirer\")\r\n\r\n const { manager } = await inquirer.prompt({\r\n type: \"list\",\r\n name: \"manager\",\r\n message: \"请选择包管理器\",\r\n choices: Object.keys(PackageManager)\r\n })\r\n\r\n const { registry } = await inquirer.prompt({\r\n type: \"list\",\r\n name: \"registry\",\r\n message: \"请选择要更换的源\",\r\n choices: Object.keys(Registry)\r\n })\r\n\r\n const command = `${manager} config set registry ${Registry[registry as keyof typeof Registry]}`\r\n await spawnAsync(command)\r\n })\r\n\r\nprogram\r\n .command(\"sort-package-json\")\r\n .alias(\"spj\")\r\n .description(\"对 package.json 中的依赖进行排序\")\r\n .action(async () => {\r\n const packageJson = await readPackageJson()\r\n packageJson.dependencies = sortArrayOrObject(packageJson.dependencies)\r\n packageJson.devDependencies = sortArrayOrObject(packageJson.devDependencies)\r\n packageJson.peerDependencies = sortArrayOrObject(packageJson.peerDependencies)\r\n packageJson.peerDevDependencies = sortArrayOrObject(packageJson.peerDevDependencies)\r\n await writePackageJson(packageJson)\r\n })\r\n\r\ntype Choice = {\r\n value: string\r\n short: string\r\n name: string\r\n checked: boolean\r\n}\r\n\r\nprogram\r\n .command(\"arrow-to-function\")\r\n .alias(\"a2f\")\r\n .description(\"将箭头函数组件转换为函数组件\")\r\n .action(async () => {\r\n consola.warn(\"请在使用本功能前提交或备份代码\")\r\n const { default: inquirer } = await import(\"inquirer\")\r\n const files = await getFiles({\r\n path: \"./src\",\r\n match: (path, stats) => path.ext === \".tsx\" && stats.isFile()\r\n })\r\n const reg = /^(export )?const \\w+?: FC.+?$/gm\r\n const { auto } = await inquirer.prompt({\r\n type: \"confirm\",\r\n name: \"auto\",\r\n message: \"是否自动选择要转换的组件\"\r\n })\r\n\r\n const warnFiles: Set<string> = new Set()\r\n const modifiedFiles: Set<string> = new Set()\r\n\r\n if (auto) {\r\n for (const file of files) {\r\n let code = await readFile(file, \"utf-8\")\r\n let exportDefaultReg: RegExp | undefined = undefined\r\n code = code.replace(reg, match => {\r\n if (match.includes(\"memo(\") || match.includes(\"forwardRef(\")) {\r\n warnFiles.add(file)\r\n return match\r\n }\r\n modifiedFiles.add(file)\r\n const hasExport = match.startsWith(\"export \")\r\n const name = match.match(/const (\\w+?):/)![1]\r\n const edReg = new RegExp(`^export default ${name}$`, \"m\")\r\n let hasExportDefault = false\r\n if (!exportDefaultReg && !hasExport && edReg.test(code)) {\r\n exportDefaultReg = edReg\r\n hasExportDefault = true\r\n }\r\n const typeIndex = match.indexOf(\"FC<\")\r\n if (typeIndex > 0) {\r\n const type = getTypeInGenerics(match, typeIndex + 2)\r\n return `${hasExport ? \"export \" : \"\"}${hasExportDefault ? \"export default \" : \"\"}function ${name}(props: ${type}) {`\r\n }\r\n return `${hasExport ? \"export \" : \"\"}${hasExportDefault ? \"export default \" : \"\"}function ${name}() {`\r\n })\r\n if (exportDefaultReg) code = code.replace(exportDefaultReg, \"\")\r\n await writeFile(file, code, \"utf-8\")\r\n }\r\n } else {\r\n for (const file of files) {\r\n let code = await readFile(file, \"utf-8\")\r\n const matches = code.match(reg)\r\n if (!matches) continue\r\n consola.start(file)\r\n const choices = Array.from(matches).reduce((prev: Choice[], match, index) => {\r\n if (match.includes(\"memo(\") || match.includes(\"forwardRef(\")) {\r\n warnFiles.add(file)\r\n return prev\r\n }\r\n modifiedFiles.add(file)\r\n const hasExport = match.startsWith(\"export \")\r\n const funName = match.match(/const (\\w+?):/)![1]\r\n const typeIndex = match.indexOf(\"FC<\")\r\n if (typeIndex > 0) {\r\n const type = getTypeInGenerics(match, typeIndex + 2)\r\n const name = `◆ ${match}\r\n ◆ ${hasExport ? \"export \" : \"\"}function ${funName}(props: ${type}) {`\r\n prev.push({ value: index.toString(), short: funName, name, checked: true })\r\n } else {\r\n const name = `◆ ${match}\r\n ◆ ${hasExport ? \"export \" : \"\"}function ${funName}() {`\r\n prev.push({ value: index.toString(), short: funName, name, checked: true })\r\n }\r\n\r\n return prev\r\n }, [])\r\n\r\n const length = choices.length.toString().length\r\n\r\n choices.forEach((choice, index) => {\r\n let first = true\r\n choice.name = choice.name.replace(/◆/g, () => {\r\n if (first) {\r\n first = false\r\n return `◆ ${(index + 1).toString().padStart(length, \"0\")}.`\r\n }\r\n return \"\".padStart(length + 3, \" \")\r\n })\r\n })\r\n\r\n const { indexs } = await inquirer.prompt({\r\n type: \"checkbox\",\r\n name: \"indexs\",\r\n message: `total ${choices.length} component${choices.length > 1 ? \"s\" : \"\"}`,\r\n choices\r\n })\r\n\r\n let index = 0\r\n\r\n let exportDefaultReg: RegExp | undefined = undefined\r\n\r\n code = code.replace(reg, match => {\r\n if (!indexs.includes(index.toString())) return match\r\n const hasExport = match.startsWith(\"export \")\r\n const name = match.match(/const (\\w+?):/)![1]\r\n const edReg = new RegExp(`^export default ${name}$`, \"m\")\r\n let hasExportDefault = false\r\n if (!exportDefaultReg && !hasExport && edReg.test(code)) {\r\n exportDefaultReg = edReg\r\n hasExportDefault = true\r\n }\r\n const typeIndex = match.indexOf(\"FC<\")\r\n if (typeIndex > 0) {\r\n const type = getTypeInGenerics(match, typeIndex + 2)\r\n return `${hasExport ? \"export \" : \"\"}${hasExportDefault ? \"export default \" : \"\"}function ${name}(props: ${type}) {`\r\n }\r\n return `${hasExport ? \"export \" : \"\"}${hasExportDefault ? \"export default \" : \"\"}function ${name}() {`\r\n })\r\n\r\n if (exportDefaultReg) code = code.replace(exportDefaultReg, \"\")\r\n\r\n console.log()\r\n\r\n await writeFile(file, code, \"utf-8\")\r\n }\r\n }\r\n\r\n if (modifiedFiles.size > 0) consola.success(`以下文件中的箭头函数组件已经转换为函数组件:\\n\\n${Array.from(modifiedFiles).join(\"\\n\")}`)\r\n\r\n if (warnFiles.size > 0) consola.warn(`以下文件中存在 memo 或 forwardRef,请手动转换:\\n\\n${Array.from(warnFiles).join(\"\\n\")}`)\r\n\r\n consola.start(\"格式化代码\")\r\n\r\n await addPrettier()\r\n\r\n await installDependcies(true)\r\n\r\n await spawnAsync(\"npx prettier --write ./src\")\r\n\r\n consola.start(\"检查项目是否存在 TypeScript 错误\")\r\n\r\n await spawnAsync(\"npx tsc --noEmit\")\r\n })\r\n\r\nprogram\r\n .command(\"interface-to-type\")\r\n .alias(\"i2t\")\r\n .description(\"将 interface 转换为 type\")\r\n .action(async () => {\r\n consola.warn(\"请在使用本功能前提交或备份代码\")\r\n\r\n const files = await getFiles({\r\n match: (path, stats) => (path.ext === \".tsx\" || path.ext === \".ts\") && !path.base.endsWith(\".d.ts\") && stats.isFile(),\r\n exclude: (path, stats) => stats.isDirectory() && path.base === \"node_modules\"\r\n })\r\n\r\n const { default: inquirer } = await import(\"inquirer\")\r\n\r\n const { ifContinue } = await inquirer.prompt({\r\n type: \"confirm\",\r\n name: \"ifContinue\",\r\n message: \"是否继续\"\r\n })\r\n\r\n if (!ifContinue) return\r\n\r\n const reg = /(export )?interface (.+?) {/gm\r\n const reg1 = /\\bexport\\b/\r\n const reg2 = /(\\w+?) extends (.+)/\r\n const modifiedFiles: Set<string> = new Set()\r\n\r\n for (const file of files) {\r\n const code = await readFile(file, \"utf-8\")\r\n const newCode = code.replace(reg, match => {\r\n modifiedFiles.add(file)\r\n const hasExport = reg1.test(match)\r\n const $2 = match.replace(reg, \"$2\")\r\n const matches = $2.match(reg2)\r\n if (matches) {\r\n const name = matches[1]\r\n const extendsTypes = splitExtendsType(matches[2]).join(\" & \")\r\n\r\n return `${hasExport ? \"export \" : \"\"}type ${name} = ${extendsTypes} & {`\r\n }\r\n return `${hasExport ? \"export \" : \"\"}type ${$2} = {`\r\n })\r\n await writeFile(file, newCode, \"utf-8\")\r\n }\r\n\r\n if (modifiedFiles.size > 0) consola.success(`以下文件中的 interface 已经转换为 type:\\n\\n${Array.from(modifiedFiles).join(\"\\n\")}`)\r\n\r\n consola.start(\"检查项目是否存在 TypeScript 错误\")\r\n\r\n await spawnAsync(\"npx tsc --noEmit\")\r\n })\r\n\r\nprogram.command(\"gitignore\").description(\"添加 .gitignore 文件\").action(addGitignore)\r\n\r\nprogram\r\n .command(\"rsbuild-setting\")\r\n .alias(\"rs\")\r\n .description(\"rsbuild 常用设置\")\r\n .action(async () => {\r\n await writeRsbuildConfig()\r\n await createIndexHtml()\r\n await setTsConfig(\"noEmit\", true)\r\n await addGitignore()\r\n await addDependencies(\"@ant-design/cssinjs\")\r\n await addDependencies(\"@ant-design/icons\")\r\n await addDependencies(\"@emotion/css\")\r\n await addDependencies(\"ahooks\")\r\n await addDependencies(\"antd\")\r\n await addDependencies(\"deepsea-components\")\r\n await addDependencies(\"deepsea-tools\")\r\n await addDependencies(\"react-router-dom\")\r\n await addDependencies(\"react-soda\")\r\n await addDevDependencies(\"@types/node\")\r\n await addDevDependencies(\"prettier\")\r\n await addDevDependencies(\"prettier-plugin-tailwindcss\")\r\n await addDevDependencies(\"tailwindcss\")\r\n await addTailwindConfig()\r\n await addPostCSSConfig()\r\n await addTailwindToCSS()\r\n await addPrettier()\r\n await installDependcies()\r\n })\r\n\r\nprogram\r\n .command(\"git-proxy\")\r\n .alias(\"gp\")\r\n .description(\"设置 git 代理\")\r\n .action(async () => {\r\n const { default: inquirer } = await import(\"inquirer\")\r\n const { global } = await inquirer.prompt({\r\n type: \"list\",\r\n name: \"global\",\r\n message: \"请选择\",\r\n choices: [\r\n {\r\n name: \"全局代理\",\r\n value: true\r\n },\r\n {\r\n name: \"当前项目\",\r\n value: false\r\n }\r\n ]\r\n })\r\n const { open } = await inquirer.prompt({\r\n type: \"list\",\r\n name: \"open\",\r\n message: \"请选择\",\r\n choices: [\r\n {\r\n name: \"打开代理\",\r\n value: true\r\n },\r\n {\r\n name: \"关闭代理\",\r\n value: false\r\n }\r\n ]\r\n })\r\n if (!open) {\r\n try {\r\n await spawnAsync(`git config${global ? \" --global\" : \"\"} --unset http.proxy`)\r\n } catch (error) {}\r\n try {\r\n await spawnAsync(`git config${global ? \" --global\" : \"\"} --unset https.proxy`)\r\n } catch (error) {}\r\n return\r\n }\r\n const { proxy } = await inquirer.prompt({\r\n type: \"input\",\r\n name: \"proxy\",\r\n message: \"请输入代理地址\",\r\n default: \"http://localhost:7890\"\r\n })\r\n await spawnAsync(`git config${global ? \" --global\" : \"\"} http.proxy ${proxy}`)\r\n await spawnAsync(`git config${global ? \" --global\" : \"\"} https.proxy ${proxy}`)\r\n })\r\n\r\nprogram\r\n .command(\"shell-proxy\")\r\n .alias(\"sp\")\r\n .description(\"设置 powershell 代理\")\r\n .action(async () => {\r\n const { default: inquirer } = await import(\"inquirer\")\r\n const { open } = await inquirer.prompt({\r\n type: \"list\",\r\n name: \"open\",\r\n message: \"请选择\",\r\n choices: [\r\n {\r\n name: \"打开代理\",\r\n value: true\r\n },\r\n {\r\n name: \"关闭代理\",\r\n value: false\r\n }\r\n ]\r\n })\r\n if (!open) return await spawnAsync(`netsh winhttp reset proxy`)\r\n const { proxy } = await inquirer.prompt({\r\n type: \"input\",\r\n name: \"proxy\",\r\n message: \"请输入代理地址\",\r\n default: \"http://localhost:7890\"\r\n })\r\n await spawnAsync(`netsh winhttp set proxy \"${proxy}\" \"<local>\"`)\r\n })\r\n\r\nprogram\r\n .command(\"download-software\")\r\n .alias(\"ds\")\r\n .description(\"下载最新版软件\")\r\n .action(async () => {\r\n const { default: inquirer } = await import(\"inquirer\")\r\n const dir = `softwares-${Date.now()}`\r\n const { softwares } = await inquirer.prompt({\r\n type: \"checkbox\",\r\n name: \"softwares\",\r\n message: \"请选择要下载的软件\",\r\n choices: Object.values(Software),\r\n default: Object.values(Software)\r\n })\r\n if (softwares.length === 0) return\r\n await mkdir(dir, { recursive: true })\r\n for (const software of softwares) {\r\n consola.start(`正在下载 ${software}`)\r\n await SoftwareDownloadMap[software as Software](dir)\r\n }\r\n })\r\n\r\nprogram\r\n .command(\"download-vscode-extension\")\r\n .alias(\"dve\")\r\n .description(\"下载 VS Code 插件\")\r\n .action(async () => {\r\n const dir = `vscode-${Date.now()}`\r\n await mkdir(dir, { recursive: true })\r\n await downloadVscodeExts(dir)\r\n await writeInstallVscodeExtScript(dir)\r\n })\r\n\r\nprogram\r\n .command(\"port\")\r\n .argument(\"port\", \"端口号\")\r\n .action(async port => {\r\n const { default: inquirer } = await import(\"inquirer\")\r\n const pidInfos = await getPidInfoFromPort(parseInt(port))\r\n const choices: { name: string; value: number }[] = []\r\n for (const { pid, info } of pidInfos) {\r\n const name = await getProcessInfoFromPid(pid)\r\n if (name) choices.push({ name: `${info} ${name}`, value: pid })\r\n }\r\n if (choices.length === 0) {\r\n consola.warn(\"没有找到对应的进程\")\r\n return\r\n }\r\n const { chosenPids } = await inquirer.prompt({\r\n type: \"checkbox\",\r\n name: \"chosenPids\",\r\n message: \"请选择要结束的进程\",\r\n choices,\r\n default: choices.map(choice => choice.value)\r\n })\r\n for (const pid of chosenPids) {\r\n exec(`taskkill /f /pid ${pid}`)\r\n }\r\n })\r\n\r\nprogram\r\n .command(\"rm-git\")\r\n .argument(\"path\")\r\n .option(\"-r, --recursive\", \"适用于文件夹\")\r\n .action(async (path, options) => {\r\n await execAsync(`git filter-branch --force --index-filter \"git rm${options.recursive ? \" -r\" : \"\"} --cached --ignore-unmatch ${path}\" --prune-empty --tag-name-filter cat -- --all`)\r\n })\r\n\r\nprogram\r\n .command(\"npm-download\")\r\n .alias(\"nd\")\r\n .argument(\"name\")\r\n .action(async name => {\r\n const folder = `.${name}`\r\n const file = `${name}.zip`\r\n const dir = await readdir(\".\")\r\n if (dir.includes(folder)) {\r\n consola.warn(\"文件夹已存在\")\r\n return\r\n }\r\n if (dir.includes(file)) {\r\n consola.warn(\"文件已存在\")\r\n return\r\n }\r\n await mkdir(folder, { recursive: true })\r\n await execAsync(`npm init -y`, { cwd: folder })\r\n await execAsync(`npm install ${name}`, { cwd: folder })\r\n await mkdir(join(folder, \"node_modules\", name, \"node_modules\"))\r\n const dir1 = await readdir(join(folder, \"node_modules\"))\r\n for (const d of dir1) {\r\n if (d === name) continue\r\n if (d.startsWith(\".\")) {\r\n await rm(join(folder, \"node_modules\", d), { recursive: true })\r\n continue\r\n }\r\n await rename(join(folder, \"node_modules\", d), join(folder, \"node_modules\", name, \"node_modules\", d))\r\n }\r\n await zipDir(join(folder, \"node_modules\"), file)\r\n await rm(folder, { recursive: true })\r\n })\r\n\r\nprogram.command(\"prisma\").description(\"添加 prisma 配置\").action(addPrisma)\r\n\r\nprogram\r\n .command(\"prisma-generate\")\r\n .alias(\"pg\")\r\n .description(\"生成 prisma client\")\r\n .action(async () => {\r\n await spawnAsync(\"npx prisma db push && npx prisma generate\")\r\n })\r\n\r\nprogram.command(\"antd\").description(\"添加 antd 配置\").action(addAntd)\r\n\r\nprogram.command(\"init\").action(async () => {\r\n const { default: inquirer } = await import(\"inquirer\")\r\n await addGitignore()\r\n const manager = await getPackageManager()\r\n const packageJson = await readPackageJson()\r\n const allDependcies = Object.keys(packageJson.dependencies || {}).concat(Object.keys(packageJson.devDependencies || {}))\r\n if (allDependcies.some(item => item.includes(\"eslint\"))) {\r\n const { removeEslintConfig } = await inquirer.prompt({\r\n type: \"confirm\",\r\n name: \"removeEslintConfig\",\r\n message: \"是否删除 ESLint 配置文件\",\r\n default: true\r\n })\r\n if (removeEslintConfig) await removeESLint()\r\n }\r\n const isFullStack = allDependcies.some(item => item === \"next\" || item.startsWith(\"@remix-run/\"))\r\n const choices = isFullStack ? [\"antd\", \"dayjs\", \"deepsea-components\", \"deepsea-tools\", \"prisma\", \"stable-hash\", \"tailwind\", \"zod\"] : [\"antd\", \"dayjs\", \"deepsea-components\", \"deepsea-tools\", \"stable-hash\", \"tailwind\"]\r\n const { modules } = await inquirer.prompt({\r\n type: \"checkbox\",\r\n name: \"modules\",\r\n message: \"请选择要添加的模块\",\r\n choices,\r\n default: choices\r\n })\r\n if (modules.includes(\"antd\")) await addAntd()\r\n if (modules.includes(\"tailwind\")) await addTailwind()\r\n if (modules.includes(\"dayjs\")) await addDependencies(\"dayjs\")\r\n if (modules.includes(\"deepsea-components\")) await addDependencies(\"deepsea-components\")\r\n if (modules.includes(\"deepsea-tools\")) await addDependencies(\"deepsea-tools\")\r\n if (modules.includes(\"stable-hash\")) await addDependencies(\"stable-hash\")\r\n if (modules.includes(\"zod\")) await addDependencies(\"zod\")\r\n await addPrettier()\r\n let installed = false\r\n if (modules.includes(\"prisma\")) {\r\n await addPrisma(manager)\r\n installed = true\r\n }\r\n if (!installed) await installDependcies(true, manager)\r\n})\r\n\r\nprogram\r\n .command(\"tsc\")\r\n .description(\"类型检查\")\r\n .action(async () => await spawnAsync(\"npx tsc --noEmit\"))\r\n\r\nprogram.parse()\r\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAEA,2BAAqB;AACrB,uBAAkC;AAClC,qBAAoB;AACpB,sBAAgE;AAChE,kBAA8B;AAC9B,sBAAmD;AACnD,mBAAypB;AAEzpB,IAAM,UAAU,IAAI,yBAAQ;AAE5B,IAAM,UAAM,sCAAoB,qBAAQ,WAAW,KAAK,CAAC;AAEzD,QAAQ,KAAK,MAAM,EAAE,QAAQ,IAAI,OAAO;AAExC,QAAQ,QAAQ,QAAQ,EAAE,YAAY,gBAAgB,EAAE,OAAO,yBAAY;AAE3E,QACK,QAAQ,UAAU,EAClB,YAAY,kBAAkB,EAC9B,OAAO,YAAY;AAChB,YAAM,0BAAY;AAClB,YAAM,gCAAkB;AAC5B,CAAC;AAEL,QAAQ,QAAQ,MAAM,EAAE,YAAY,kBAAkB,EAAE,OAAO,iBAAI;AAEnE,QACK,QAAQ,UAAU,EAClB,YAAY,kBAAkB,EAC9B,OAAO,YAAY;AAChB,YAAM,0BAAY;AAClB,YAAM,gCAAkB;AAC5B,CAAC;AAEL,QAAQ,QAAQ,gBAAgB,EAAE,YAAY,QAAQ,EAAE,YAAY,IAAI,0BAAS,MAAM,CAAC,EAAE,OAAO,0BAAa;AAE9G,QACK,QAAQ,WAAW,EACnB,YAAY,yBAAyB,EACrC,OAAO,YAAY;AAChB,QAAM,SAAS,MAAM,eAAAA,QAAQ,OAAO,0BAA0B;AAAA,IAC1D,MAAM;AAAA,IACN,SAAS,OAAO,OAAO,mBAAM;AAAA,IAC7B,SAAS,oBAAO;AAAA,EACpB,CAAC;AACD,YAAM,0BAAY,UAAU,MAAM;AACtC,CAAC;AAEL,QACK,QAAQ,WAAW,EACnB,YAAY,yBAAyB,EACrC,OAAO,YAAY;AAChB,QAAMC,UAAS,MAAM,eAAAD,QAAQ,OAAO,0BAA0B;AAAA,IAC1D,MAAM;AAAA,IACN,SAAS,OAAO,OAAO,mBAAM;AAAA,IAC7B,SAAS,oBAAO;AAAA,EACpB,CAAC;AACD,YAAM,0BAAY,UAAUC,OAAM;AACtC,CAAC;AAEL,QACK,QAAQ,sBAAsB,EAC9B,MAAM,OAAO,EACb,YAAY,yBAAyB,EACrC,OAAO,YAAY;AAChB,QAAM,mBAAmB,MAAM,eAAAD,QAAQ,OAAO,qCAAqC;AAAA,IAC/E,MAAM;AAAA,IACN,SAAS,OAAO,OAAO,6BAAgB;AAAA,IACvC,SAAS,8BAAiB;AAAA,EAC9B,CAAC;AACD,YAAM,0BAAY,oBAAoB,gBAAgB;AAC1D,CAAC;AAEL,QACK,QAAQ,gBAAgB,EACxB,MAAM,IAAI,EACV,YAAY,gBAAgB,EAC5B,OAAO,YAAY;AAChB,MAAI,cAAc,UAAM,8BAAgB;AACxC,cAAY,kBAAkB,CAAC;AAC/B,cAAY,cAAc,SAAS;AACnC,cAAY,cAAc,WAAW;AACrC,cAAY,oBAAgB,gCAAkB,YAAY,aAAa;AACvE,cAAY,UAAU,CAAC;AACvB,MAAI,CAAC,YAAY,MAAM,SAAS,KAAK;AAAG,gBAAY,MAAM,KAAK,KAAK;AACpE,cAAY,YAAQ,gCAAkB,YAAY,KAAK;AACvD,QAAM,eAAe,YAAY;AACjC,QAAM,kBAAkB,YAAY;AACpC,QAAM,mBAAmB,YAAY;AACrC,MAAI,YAAY,YAAY,OAAO,CAAC,YAAY,WAAW,IAAI,WAAW,MAAM;AAAG,gBAAY,WAAW,MAAM,OAAO,YAAY,WAAW;AAC9I,cAAY,eAAe,CAAC;AAC5B,cAAY,WAAW,SAAS;AAChC,cAAY,WAAW,QAAQ,kCAAkC,YAAY;AAC7E,MAAI,CAAC,YAAY,OAAO;AACpB,kBAAc,OAAO,QAAQ,WAAW,EAAE,OAAO,CAAC,MAA2B,CAAC,KAAK,KAAK,MAAM;AAC1F,WAAK,GAAG,IAAI;AACZ,UAAI,OAAO,OAAO,aAAa,QAAQ,GAAG;AACtC,YAAI,QAAQ;AAAU,eAAK,QAAQ,MAAM,QAAQ,SAAS,OAAO;AAAA,MACrE,WAAW,OAAO,OAAO,aAAa,MAAM,GAAG;AAC3C,YAAI,QAAQ;AAAQ,eAAK,QAAQ,MAAM,QAAQ,SAAS,OAAO;AAAA,MACnE;AACA,aAAO;AAAA,IACX,GAAG,CAAC,CAAC;AAAA,EACT;AACA,cAAY,YAAY,CAAC;AACzB,cAAY,QAAQ,iBAAiB;AACrC,SAAO,YAAY;AACnB,SAAO,YAAY;AACnB,SAAO,YAAY;AACnB,cAAY,mBAAe,gCAAkB,YAAY;AACzD,cAAY,sBAAkB,gCAAkB,eAAe;AAC/D,cAAY,uBAAmB,gCAAkB,gBAAgB;AACjE,QAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYrB,YAAM,2BAAa;AACnB,YAAM,+BAAiB,WAAW;AAClC,YAAM,2BAAU,gBAAgB,YAAY;AAC5C,YAAM,0BAAY,UAAU,oBAAO,MAAM;AAC7C,CAAC;AAEL,QACK,QAAQ,oBAAoB,EAC5B,MAAM,IAAI,EACV,YAAY,QAAQ,EACpB,OAAO,YAAY;AAChB,MAAI,UAAM,+BAAiB,KAAK,GAAG;AAC/B,UAAM,SAAS,UAAM,wBAAU,YAAY;AAC3C,QAAI,WAAW,wEAAwE;AACnF,qBAAAA,QAAQ,KAAK,cAAc;AAAA,IAC/B,WAAW,CAAC,OAAO,SAAS,uCAAuC,GAAG;AAClE,qBAAAA,QAAQ,KAAK,cAAc;AAC3B;AAAA,IACJ;AAAA,EACJ,OAAO;AACH,mBAAAA,QAAQ,KAAK,cAAc;AAAA,EAC/B;AAEA,QAAM,EAAE,SAAS,SAAS,IAAI,MAAM,OAAO,UAAU;AAErD,QAAM,cAAc,UAAM,8BAAgB;AAE1C,QAAM,EAAE,MAAM,IAAI,MAAM,SAAS,OAAO;AAAA,IACpC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS,CAAC,gBAAgB,iBAAiB,EAAE,OAAO,UAAQ,CAAC,CAAC,YAAY,IAAI,CAAC;AAAA,EACnF,CAAC;AAED,QAAM,EAAE,MAAM,IAAI,MAAM,SAAS,OAAO;AAAA,IACpC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS,CAAC,SAAS,SAAS,OAAO;AAAA,EACvC,CAAC;AAED,MAAI,aAAa;AAEjB,aAAW,QAAQ,OAAO;AACtB,UAAM,WAA8F,CAAC;AACrG,UAAM,UAAU,OAAO,KAAK,YAAY,IAAI,CAAC;AAE7C,aAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACrC,YAAME,OAAM,QAAQ,CAAC;AACrB,YAAM,KAAK,YAAY,IAAI,EAAEA,IAAG;AAChC,YAAM,IAAI,GAAG,MAAM,MAAM,EAAG,CAAC;AAC7B,YAAM,SAAK,4CAA8B,EAAE;AAC3C,YAAM,UAAU,UAAM,uCAAyBA,MAAK,IAAI,KAAK;AAC7D,UAAI,CAAC;AAAS;AACd,eAAS,KAAK,EAAE,SAASA,MAAK,YAAY,IAAI,YAAY,SAAS,YAAY,GAAG,IAAI,UAAU,CAAC;AAAA,IACrG;AAEA,QAAI,SAAS,WAAW;AAAG;AAE3B,UAAM,EAAE,KAAK,IAAI,MAAM,SAAS,OAAO;AAAA,MACnC,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS,SAAS,IAAI,cAAY,EAAE,MAAM,GAAG,QAAQ,WAAW,QAAQ,iBAAiB,QAAQ,cAAc,OAAO,QAAQ,QAAQ,EAAE;AAAA,IAC5I,CAAC;AAED,SAAK,QAAQ,CAACA,SAAgB;AAC1B,mBAAa;AACb,YAAM,UAAU,SAAS,KAAK,CAAAC,aAAWA,SAAQ,YAAYD,IAAG;AAChE,kBAAY,IAAI,EAAEA,IAAG,IAAI,QAAQ;AAAA,IACrC,CAAC;AAAA,EACL;AAEA,MAAI,CAAC;AAAY;AAEjB,YAAM,+BAAiB,WAAW;AAElC,QAAM,UAAU,UAAM,wBAAU,YAAY;AAE5C,QAAM,MAAM;AAEZ,MAAI,IAAI,KAAK,OAAO,GAAG;AACnB,mBAAAF,QAAQ,MAAM,MAAM;AACpB,cAAM,wBAAU,sBAAsB;AACtC,cAAM,wBAAU,gDAAgD;AAChE,UAAM,SAAS,UAAM,gCAAkB;AACvC,QAAI;AAAQ,qCAAK,kBAAkB;AAAA,EACvC;AACJ,CAAC;AAEL,QACK,QAAQ,UAAU,EAClB,YAAY,iBAAiB,EAC7B,OAAO,YAAY;AAChB,QAAM,EAAE,SAAS,SAAS,IAAI,MAAM,OAAO,UAAU;AAErD,QAAM,EAAE,QAAQ,IAAI,MAAM,SAAS,OAAO;AAAA,IACtC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS,OAAO,KAAK,8BAAc;AAAA,EACvC,CAAC;AAED,QAAM,EAAE,SAAS,IAAI,MAAM,SAAS,OAAO;AAAA,IACvC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS,OAAO,KAAK,wBAAQ;AAAA,EACjC,CAAC;AAED,QAAM,UAAU,GAAG,+BAA+B,yBAAS,QAAiC;AAC5F,YAAM,yBAAW,OAAO;AAC5B,CAAC;AAEL,QACK,QAAQ,mBAAmB,EAC3B,MAAM,KAAK,EACX,YAAY,yBAAyB,EACrC,OAAO,YAAY;AAChB,QAAM,cAAc,UAAM,8BAAgB;AAC1C,cAAY,mBAAe,gCAAkB,YAAY,YAAY;AACrE,cAAY,sBAAkB,gCAAkB,YAAY,eAAe;AAC3E,cAAY,uBAAmB,gCAAkB,YAAY,gBAAgB;AAC7E,cAAY,0BAAsB,gCAAkB,YAAY,mBAAmB;AACnF,YAAM,+BAAiB,WAAW;AACtC,CAAC;AASL,QACK,QAAQ,mBAAmB,EAC3B,MAAM,KAAK,EACX,YAAY,gBAAgB,EAC5B,OAAO,YAAY;AAChB,iBAAAA,QAAQ,KAAK,iBAAiB;AAC9B,QAAM,EAAE,SAAS,SAAS,IAAI,MAAM,OAAO,UAAU;AACrD,QAAM,QAAQ,UAAM,uBAAS;AAAA,IACzB,MAAM;AAAA,IACN,OAAO,CAAC,MAAM,UAAU,KAAK,QAAQ,UAAU,MAAM,OAAO;AAAA,EAChE,CAAC;AACD,QAAM,MAAM;AACZ,QAAM,EAAE,KAAK,IAAI,MAAM,SAAS,OAAO;AAAA,IACnC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,EACb,CAAC;AAED,QAAM,YAAyB,oBAAI,IAAI;AACvC,QAAM,gBAA6B,oBAAI,IAAI;AAE3C,MAAI,MAAM;AACN,eAAW,QAAQ,OAAO;AACtB,UAAI,OAAO,UAAM,0BAAS,MAAM,OAAO;AACvC,UAAI,mBAAuC;AAC3C,aAAO,KAAK,QAAQ,KAAK,WAAS;AAC9B,YAAI,MAAM,SAAS,OAAO,KAAK,MAAM,SAAS,aAAa,GAAG;AAC1D,oBAAU,IAAI,IAAI;AAClB,iBAAO;AAAA,QACX;AACA,sBAAc,IAAI,IAAI;AACtB,cAAM,YAAY,MAAM,WAAW,SAAS;AAC5C,cAAM,OAAO,MAAM,MAAM,eAAe,EAAG,CAAC;AAC5C,cAAM,QAAQ,IAAI,OAAO,mBAAmB,SAAS,GAAG;AACxD,YAAI,mBAAmB;AACvB,YAAI,CAAC,oBAAoB,CAAC,aAAa,MAAM,KAAK,IAAI,GAAG;AACrD,6BAAmB;AACnB,6BAAmB;AAAA,QACvB;AACA,cAAM,YAAY,MAAM,QAAQ,KAAK;AACrC,YAAI,YAAY,GAAG;AACf,gBAAM,WAAO,gCAAkB,OAAO,YAAY,CAAC;AACnD,iBAAO,GAAG,YAAY,YAAY,KAAK,mBAAmB,oBAAoB,cAAc,eAAe;AAAA,QAC/G;AACA,eAAO,GAAG,YAAY,YAAY,KAAK,mBAAmB,oBAAoB,cAAc;AAAA,MAChG,CAAC;AACD,UAAI;AAAkB,eAAO,KAAK,QAAQ,kBAAkB,EAAE;AAC9D,gBAAM,2BAAU,MAAM,MAAM,OAAO;AAAA,IACvC;AAAA,EACJ,OAAO;AACH,eAAW,QAAQ,OAAO;AACtB,UAAI,OAAO,UAAM,0BAAS,MAAM,OAAO;AACvC,YAAM,UAAU,KAAK,MAAM,GAAG;AAC9B,UAAI,CAAC;AAAS;AACd,qBAAAA,QAAQ,MAAM,IAAI;AAClB,YAAM,UAAU,MAAM,KAAK,OAAO,EAAE,OAAO,CAAC,MAAgB,OAAOI,WAAU;AACzE,YAAI,MAAM,SAAS,OAAO,KAAK,MAAM,SAAS,aAAa,GAAG;AAC1D,oBAAU,IAAI,IAAI;AAClB,iBAAO;AAAA,QACX;AACA,sBAAc,IAAI,IAAI;AACtB,cAAM,YAAY,MAAM,WAAW,SAAS;AAC5C,cAAM,UAAU,MAAM,MAAM,eAAe,EAAG,CAAC;AAC/C,cAAM,YAAY,MAAM,QAAQ,KAAK;AACrC,YAAI,YAAY,GAAG;AACf,gBAAM,WAAO,gCAAkB,OAAO,YAAY,CAAC;AACnD,gBAAM,OAAO,KAAK;AAAA,SACjC,YAAY,YAAY,cAAc,kBAAkB;AACzC,eAAK,KAAK,EAAE,OAAOA,OAAM,SAAS,GAAG,OAAO,SAAS,MAAM,SAAS,KAAK,CAAC;AAAA,QAC9E,OAAO;AACH,gBAAM,OAAO,KAAK;AAAA,SACjC,YAAY,YAAY,cAAc;AACvB,eAAK,KAAK,EAAE,OAAOA,OAAM,SAAS,GAAG,OAAO,SAAS,MAAM,SAAS,KAAK,CAAC;AAAA,QAC9E;AAEA,eAAO;AAAA,MACX,GAAG,CAAC,CAAC;AAEL,YAAM,SAAS,QAAQ,OAAO,SAAS,EAAE;AAEzC,cAAQ,QAAQ,CAAC,QAAQA,WAAU;AAC/B,YAAI,QAAQ;AACZ,eAAO,OAAO,OAAO,KAAK,QAAQ,MAAM,MAAM;AAC1C,cAAI,OAAO;AACP,oBAAQ;AACR,mBAAO,MAAMA,SAAQ,GAAG,SAAS,EAAE,SAAS,QAAQ,GAAG;AAAA,UAC3D;AACA,iBAAO,GAAG,SAAS,SAAS,GAAG,GAAG;AAAA,QACtC,CAAC;AAAA,MACL,CAAC;AAED,YAAM,EAAE,OAAO,IAAI,MAAM,SAAS,OAAO;AAAA,QACrC,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS,SAAS,QAAQ,mBAAmB,QAAQ,SAAS,IAAI,MAAM;AAAA,QACxE;AAAA,MACJ,CAAC;AAED,UAAI,QAAQ;AAEZ,UAAI,mBAAuC;AAE3C,aAAO,KAAK,QAAQ,KAAK,WAAS;AAC9B,YAAI,CAAC,OAAO,SAAS,MAAM,SAAS,CAAC;AAAG,iBAAO;AAC/C,cAAM,YAAY,MAAM,WAAW,SAAS;AAC5C,cAAM,OAAO,MAAM,MAAM,eAAe,EAAG,CAAC;AAC5C,cAAM,QAAQ,IAAI,OAAO,mBAAmB,SAAS,GAAG;AACxD,YAAI,mBAAmB;AACvB,YAAI,CAAC,oBAAoB,CAAC,aAAa,MAAM,KAAK,IAAI,GAAG;AACrD,6BAAmB;AACnB,6BAAmB;AAAA,QACvB;AACA,cAAM,YAAY,MAAM,QAAQ,KAAK;AACrC,YAAI,YAAY,GAAG;AACf,gBAAM,WAAO,gCAAkB,OAAO,YAAY,CAAC;AACnD,iBAAO,GAAG,YAAY,YAAY,KAAK,mBAAmB,oBAAoB,cAAc,eAAe;AAAA,QAC/G;AACA,eAAO,GAAG,YAAY,YAAY,KAAK,mBAAmB,oBAAoB,cAAc;AAAA,MAChG,CAAC;AAED,UAAI;AAAkB,eAAO,KAAK,QAAQ,kBAAkB,EAAE;AAE9D,cAAQ,IAAI;AAEZ,gBAAM,2BAAU,MAAM,MAAM,OAAO;AAAA,IACvC;AAAA,EACJ;AAEA,MAAI,cAAc,OAAO;AAAG,mBAAAJ,QAAQ,QAAQ;AAAA;AAAA,EAA6B,MAAM,KAAK,aAAa,EAAE,KAAK,IAAI,GAAG;AAE/G,MAAI,UAAU,OAAO;AAAG,mBAAAA,QAAQ,KAAK;AAAA;AAAA,EAAuC,MAAM,KAAK,SAAS,EAAE,KAAK,IAAI,GAAG;AAE9G,iBAAAA,QAAQ,MAAM,OAAO;AAErB,YAAM,0BAAY;AAElB,YAAM,gCAAkB,IAAI;AAE5B,YAAM,yBAAW,4BAA4B;AAE7C,iBAAAA,QAAQ,MAAM,wBAAwB;AAEtC,YAAM,yBAAW,kBAAkB;AACvC,CAAC;AAEL,QACK,QAAQ,mBAAmB,EAC3B,MAAM,KAAK,EACX,YAAY,sBAAsB,EAClC,OAAO,YAAY;AAChB,iBAAAA,QAAQ,KAAK,iBAAiB;AAE9B,QAAM,QAAQ,UAAM,uBAAS;AAAA,IACzB,OAAO,CAAC,MAAM,WAAW,KAAK,QAAQ,UAAU,KAAK,QAAQ,UAAU,CAAC,KAAK,KAAK,SAAS,OAAO,KAAK,MAAM,OAAO;AAAA,IACpH,SAAS,CAAC,MAAM,UAAU,MAAM,YAAY,KAAK,KAAK,SAAS;AAAA,EACnE,CAAC;AAED,QAAM,EAAE,SAAS,SAAS,IAAI,MAAM,OAAO,UAAU;AAErD,QAAM,EAAE,WAAW,IAAI,MAAM,SAAS,OAAO;AAAA,IACzC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,EACb,CAAC;AAED,MAAI,CAAC;AAAY;AAEjB,QAAM,MAAM;AACZ,QAAM,OAAO;AACb,QAAM,OAAO;AACb,QAAM,gBAA6B,oBAAI,IAAI;AAE3C,aAAW,QAAQ,OAAO;AACtB,UAAM,OAAO,UAAM,0BAAS,MAAM,OAAO;AACzC,UAAM,UAAU,KAAK,QAAQ,KAAK,WAAS;AACvC,oBAAc,IAAI,IAAI;AACtB,YAAM,YAAY,KAAK,KAAK,KAAK;AACjC,YAAM,KAAK,MAAM,QAAQ,KAAK,IAAI;AAClC,YAAM,UAAU,GAAG,MAAM,IAAI;AAC7B,UAAI,SAAS;AACT,cAAM,OAAO,QAAQ,CAAC;AACtB,cAAM,mBAAe,+BAAiB,QAAQ,CAAC,CAAC,EAAE,KAAK,KAAK;AAE5D,eAAO,GAAG,YAAY,YAAY,UAAU,UAAU;AAAA,MAC1D;AACA,aAAO,GAAG,YAAY,YAAY,UAAU;AAAA,IAChD,CAAC;AACD,cAAM,2BAAU,MAAM,SAAS,OAAO;AAAA,EAC1C;AAEA,MAAI,cAAc,OAAO;AAAG,mBAAAA,QAAQ,QAAQ;AAAA;AAAA,EAAmC,MAAM,KAAK,aAAa,EAAE,KAAK,IAAI,GAAG;AAErH,iBAAAA,QAAQ,MAAM,wBAAwB;AAEtC,YAAM,yBAAW,kBAAkB;AACvC,CAAC;AAEL,QAAQ,QAAQ,WAAW,EAAE,YAAY,kBAAkB,EAAE,OAAO,yBAAY;AAEhF,QACK,QAAQ,iBAAiB,EACzB,MAAM,IAAI,EACV,YAAY,cAAc,EAC1B,OAAO,YAAY;AAChB,YAAM,iCAAmB;AACzB,YAAM,8BAAgB;AACtB,YAAM,0BAAY,UAAU,IAAI;AAChC,YAAM,2BAAa;AACnB,YAAM,8BAAgB,qBAAqB;AAC3C,YAAM,8BAAgB,mBAAmB;AACzC,YAAM,8BAAgB,cAAc;AACpC,YAAM,8BAAgB,QAAQ;AAC9B,YAAM,8BAAgB,MAAM;AAC5B,YAAM,8BAAgB,oBAAoB;AAC1C,YAAM,8BAAgB,eAAe;AACrC,YAAM,8BAAgB,kBAAkB;AACxC,YAAM,8BAAgB,YAAY;AAClC,YAAM,iCAAmB,aAAa;AACtC,YAAM,iCAAmB,UAAU;AACnC,YAAM,iCAAmB,6BAA6B;AACtD,YAAM,iCAAmB,aAAa;AACtC,YAAM,gCAAkB;AACxB,YAAM,+BAAiB;AACvB,YAAM,+BAAiB;AACvB,YAAM,0BAAY;AAClB,YAAM,gCAAkB;AAC5B,CAAC;AAEL,QACK,QAAQ,WAAW,EACnB,MAAM,IAAI,EACV,YAAY,WAAW,EACvB,OAAO,YAAY;AAChB,QAAM,EAAE,SAAS,SAAS,IAAI,MAAM,OAAO,UAAU;AACrD,QAAM,EAAE,OAAO,IAAI,MAAM,SAAS,OAAO;AAAA,IACrC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,MACL;AAAA,QACI,MAAM;AAAA,QACN,OAAO;AAAA,MACX;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,OAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ,CAAC;AACD,QAAM,EAAE,KAAK,IAAI,MAAM,SAAS,OAAO;AAAA,IACnC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,MACL;AAAA,QACI,MAAM;AAAA,QACN,OAAO;AAAA,MACX;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,OAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ,CAAC;AACD,MAAI,CAAC,MAAM;AACP,QAAI;AACA,gBAAM,yBAAW,aAAa,SAAS,cAAc,uBAAuB;AAAA,IAChF,SAAS,OAAP;AAAA,IAAe;AACjB,QAAI;AACA,gBAAM,yBAAW,aAAa,SAAS,cAAc,wBAAwB;AAAA,IACjF,SAAS,OAAP;AAAA,IAAe;AACjB;AAAA,EACJ;AACA,QAAM,EAAE,MAAM,IAAI,MAAM,SAAS,OAAO;AAAA,IACpC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,EACb,CAAC;AACD,YAAM,yBAAW,aAAa,SAAS,cAAc,iBAAiB,OAAO;AAC7E,YAAM,yBAAW,aAAa,SAAS,cAAc,kBAAkB,OAAO;AAClF,CAAC;AAEL,QACK,QAAQ,aAAa,EACrB,MAAM,IAAI,EACV,YAAY,kBAAkB,EAC9B,OAAO,YAAY;AAChB,QAAM,EAAE,SAAS,SAAS,IAAI,MAAM,OAAO,UAAU;AACrD,QAAM,EAAE,KAAK,IAAI,MAAM,SAAS,OAAO;AAAA,IACnC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,MACL;AAAA,QACI,MAAM;AAAA,QACN,OAAO;AAAA,MACX;AAAA,MACA;AAAA,QACI,MAAM;AAAA,QACN,OAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ,CAAC;AACD,MAAI,CAAC;AAAM,WAAO,UAAM,yBAAW,2BAA2B;AAC9D,QAAM,EAAE,MAAM,IAAI,MAAM,SAAS,OAAO;AAAA,IACpC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,EACb,CAAC;AACD,YAAM,yBAAW,4BAA4B,kBAAkB;AACnE,CAAC;AAEL,QACK,QAAQ,mBAAmB,EAC3B,MAAM,IAAI,EACV,YAAY,SAAS,EACrB,OAAO,YAAY;AAChB,QAAM,EAAE,SAAS,SAAS,IAAI,MAAM,OAAO,UAAU;AACrD,QAAM,MAAM,aAAa,KAAK,IAAI;AAClC,QAAM,EAAE,UAAU,IAAI,MAAM,SAAS,OAAO;AAAA,IACxC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS,OAAO,OAAO,wBAAQ;AAAA,IAC/B,SAAS,OAAO,OAAO,wBAAQ;AAAA,EACnC,CAAC;AACD,MAAI,UAAU,WAAW;AAAG;AAC5B,YAAM,uBAAM,KAAK,EAAE,WAAW,KAAK,CAAC;AACpC,aAAW,YAAY,WAAW;AAC9B,mBAAAA,QAAQ,MAAM,QAAQ,UAAU;AAChC,UAAM,iCAAoB,QAAoB,EAAE,GAAG;AAAA,EACvD;AACJ,CAAC;AAEL,QACK,QAAQ,2BAA2B,EACnC,MAAM,KAAK,EACX,YAAY,eAAe,EAC3B,OAAO,YAAY;AAChB,QAAM,MAAM,UAAU,KAAK,IAAI;AAC/B,YAAM,uBAAM,KAAK,EAAE,WAAW,KAAK,CAAC;AACpC,YAAM,iCAAmB,GAAG;AAC5B,YAAM,0CAA4B,GAAG;AACzC,CAAC;AAEL,QACK,QAAQ,MAAM,EACd,SAAS,QAAQ,KAAK,EACtB,OAAO,OAAM,SAAQ;AAClB,QAAM,EAAE,SAAS,SAAS,IAAI,MAAM,OAAO,UAAU;AACrD,QAAM,WAAW,UAAM,iCAAmB,SAAS,IAAI,CAAC;AACxD,QAAM,UAA6C,CAAC;AACpD,aAAW,EAAE,KAAK,KAAK,KAAK,UAAU;AAClC,UAAM,OAAO,UAAM,oCAAsB,GAAG;AAC5C,QAAI;AAAM,cAAQ,KAAK,EAAE,MAAM,GAAG,QAAQ,QAAQ,OAAO,IAAI,CAAC;AAAA,EAClE;AACA,MAAI,QAAQ,WAAW,GAAG;AACtB,mBAAAA,QAAQ,KAAK,WAAW;AACxB;AAAA,EACJ;AACA,QAAM,EAAE,WAAW,IAAI,MAAM,SAAS,OAAO;AAAA,IACzC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT;AAAA,IACA,SAAS,QAAQ,IAAI,YAAU,OAAO,KAAK;AAAA,EAC/C,CAAC;AACD,aAAW,OAAO,YAAY;AAC1B,mCAAK,oBAAoB,KAAK;AAAA,EAClC;AACJ,CAAC;AAEL,QACK,QAAQ,QAAQ,EAChB,SAAS,MAAM,EACf,OAAO,mBAAmB,QAAQ,EAClC,OAAO,OAAO,MAAM,YAAY;AAC7B,YAAM,wBAAU,mDAAmD,QAAQ,YAAY,QAAQ,gCAAgC,oDAAoD;AACvL,CAAC;AAEL,QACK,QAAQ,cAAc,EACtB,MAAM,IAAI,EACV,SAAS,MAAM,EACf,OAAO,OAAM,SAAQ;AAClB,QAAM,SAAS,IAAI;AACnB,QAAM,OAAO,GAAG;AAChB,QAAM,MAAM,UAAM,yBAAQ,GAAG;AAC7B,MAAI,IAAI,SAAS,MAAM,GAAG;AACtB,mBAAAA,QAAQ,KAAK,QAAQ;AACrB;AAAA,EACJ;AACA,MAAI,IAAI,SAAS,IAAI,GAAG;AACpB,mBAAAA,QAAQ,KAAK,OAAO;AACpB;AAAA,EACJ;AACA,YAAM,uBAAM,QAAQ,EAAE,WAAW,KAAK,CAAC;AACvC,YAAM,wBAAU,eAAe,EAAE,KAAK,OAAO,CAAC;AAC9C,YAAM,wBAAU,eAAe,QAAQ,EAAE,KAAK,OAAO,CAAC;AACtD,YAAM,2BAAM,kBAAK,QAAQ,gBAAgB,MAAM,cAAc,CAAC;AAC9D,QAAM,OAAO,UAAM,6BAAQ,kBAAK,QAAQ,cAAc,CAAC;AACvD,aAAW,KAAK,MAAM;AAClB,QAAI,MAAM;AAAM;AAChB,QAAI,EAAE,WAAW,GAAG,GAAG;AACnB,gBAAM,wBAAG,kBAAK,QAAQ,gBAAgB,CAAC,GAAG,EAAE,WAAW,KAAK,CAAC;AAC7D;AAAA,IACJ;AACA,cAAM,4BAAO,kBAAK,QAAQ,gBAAgB,CAAC,OAAG,kBAAK,QAAQ,gBAAgB,MAAM,gBAAgB,CAAC,CAAC;AAAA,EACvG;AACA,YAAM,yBAAO,kBAAK,QAAQ,cAAc,GAAG,IAAI;AAC/C,YAAM,oBAAG,QAAQ,EAAE,WAAW,KAAK,CAAC;AACxC,CAAC;AAEL,QAAQ,QAAQ,QAAQ,EAAE,YAAY,cAAc,EAAE,OAAO,sBAAS;AAEtE,QACK,QAAQ,iBAAiB,EACzB,MAAM,IAAI,EACV,YAAY,kBAAkB,EAC9B,OAAO,YAAY;AAChB,YAAM,yBAAW,2CAA2C;AAChE,CAAC;AAEL,QAAQ,QAAQ,MAAM,EAAE,YAAY,YAAY,EAAE,OAAO,oBAAO;AAEhE,QAAQ,QAAQ,MAAM,EAAE,OAAO,YAAY;AACvC,QAAM,EAAE,SAAS,SAAS,IAAI,MAAM,OAAO,UAAU;AACrD,YAAM,2BAAa;AACnB,QAAM,UAAU,UAAM,gCAAkB;AACxC,QAAM,cAAc,UAAM,8BAAgB;AAC1C,QAAM,gBAAgB,OAAO,KAAK,YAAY,gBAAgB,CAAC,CAAC,EAAE,OAAO,OAAO,KAAK,YAAY,mBAAmB,CAAC,CAAC,CAAC;AACvH,MAAI,cAAc,KAAK,UAAQ,KAAK,SAAS,QAAQ,CAAC,GAAG;AACrD,UAAM,EAAE,mBAAmB,IAAI,MAAM,SAAS,OAAO;AAAA,MACjD,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,IACb,CAAC;AACD,QAAI;AAAoB,gBAAM,2BAAa;AAAA,EAC/C;AACA,QAAM,cAAc,cAAc,KAAK,UAAQ,SAAS,UAAU,KAAK,WAAW,aAAa,CAAC;AAChG,QAAM,UAAU,cAAc,CAAC,QAAQ,SAAS,sBAAsB,iBAAiB,UAAU,eAAe,YAAY,KAAK,IAAI,CAAC,QAAQ,SAAS,sBAAsB,iBAAiB,eAAe,UAAU;AACvN,QAAM,EAAE,QAAQ,IAAI,MAAM,SAAS,OAAO;AAAA,IACtC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT;AAAA,IACA,SAAS;AAAA,EACb,CAAC;AACD,MAAI,QAAQ,SAAS,MAAM;AAAG,cAAM,sBAAQ;AAC5C,MAAI,QAAQ,SAAS,UAAU;AAAG,cAAM,0BAAY;AACpD,MAAI,QAAQ,SAAS,OAAO;AAAG,cAAM,8BAAgB,OAAO;AAC5D,MAAI,QAAQ,SAAS,oBAAoB;AAAG,cAAM,8BAAgB,oBAAoB;AACtF,MAAI,QAAQ,SAAS,eAAe;AAAG,cAAM,8BAAgB,eAAe;AAC5E,MAAI,QAAQ,SAAS,aAAa;AAAG,cAAM,8BAAgB,aAAa;AACxE,MAAI,QAAQ,SAAS,KAAK;AAAG,cAAM,8BAAgB,KAAK;AACxD,YAAM,0BAAY;AAClB,MAAI,YAAY;AAChB,MAAI,QAAQ,SAAS,QAAQ,GAAG;AAC5B,cAAM,wBAAU,OAAO;AACvB,gBAAY;AAAA,EAChB;AACA,MAAI,CAAC;AAAW,cAAM,gCAAkB,MAAM,OAAO;AACzD,CAAC;AAED,QACK,QAAQ,KAAK,EACb,YAAY,MAAM,EAClB,OAAO,YAAY,UAAM,yBAAW,kBAAkB,CAAC;AAE5D,QAAQ,MAAM;",
|
|
6
6
|
"names": ["consola", "module", "pkg", "upgrade", "index"]
|
|
7
7
|
}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -6,7 +6,7 @@ import consola from "consola"
|
|
|
6
6
|
import { mkdir, readdir, readFile, rename, rm, writeFile } from "fs/promises"
|
|
7
7
|
import { join, resolve } from "path"
|
|
8
8
|
import { PackageManager, Registry, Software } from "./constant"
|
|
9
|
-
import { addAntd, addDependencies, addDevDependencies, addGitignore, addPostCSSConfig, addPrettier, addPrisma, addTailwind, addTailwindConfig, addTailwindToCSS, createIndexHtml, downloadVscodeExts, execAsync, getFiles, getPackageManager, getPackageUpgradeVersion, getPidInfoFromPort, getProcessInfoFromPid, getTypeInGenerics, getVersionFromRequiredVersion, installDependcies, Module, ModuleResolution, readPackageJson, readPackageJsonSync, removeComment, removeESLint, setTsConfig, SoftwareDownloadMap, sortArrayOrObject, spawnAsync, splitExtendsType, Target, vite, writeInstallVscodeExtScript, writePackageJson, writeRsbuildConfig, zipDir } from "./utils"
|
|
9
|
+
import { addAntd, addDependencies, addDevDependencies, addGitignore, addPostCSSConfig, addPrettier, addPrisma, addTailwind, addTailwindConfig, addTailwindToCSS, createIndexHtml, downloadVscodeExts, execAsync, getFiles, getPackageManager, getPackageUpgradeVersion, getPidInfoFromPort, getProcessInfoFromPid, getTypeInGenerics, getVersionFromRequiredVersion, installDependcies, isCommandExisted, Module, ModuleResolution, readPackageJson, readPackageJsonSync, removeComment, removeESLint, setTsConfig, SoftwareDownloadMap, sortArrayOrObject, spawnAsync, splitExtendsType, Target, vite, writeInstallVscodeExtScript, writePackageJson, writeRsbuildConfig, zipDir } from "./utils"
|
|
10
10
|
|
|
11
11
|
const program = new Command()
|
|
12
12
|
|
|
@@ -135,13 +135,16 @@ program
|
|
|
135
135
|
.alias("ud")
|
|
136
136
|
.description("升级所有依赖")
|
|
137
137
|
.action(async () => {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
138
|
+
if (await isCommandExisted("git")) {
|
|
139
|
+
const status = await execAsync("git status")
|
|
140
|
+
if (status === "fatal: not a git repository (or any of the parent directories): .git") {
|
|
141
|
+
consola.warn("请在使用本功能前备份代码")
|
|
142
|
+
} else if (!status.includes("nothing to commit, working tree clean")) {
|
|
143
|
+
consola.warn("请在使用本功能前提交代码")
|
|
144
|
+
return
|
|
145
|
+
}
|
|
146
|
+
} else {
|
|
141
147
|
consola.warn("请在使用本功能前备份代码")
|
|
142
|
-
} else if (!status.includes("nothing to commit, working tree clean")) {
|
|
143
|
-
consola.warn("请在使用本功能前提交代码")
|
|
144
|
-
return
|
|
145
148
|
}
|
|
146
149
|
|
|
147
150
|
const { default: inquirer } = await import("inquirer")
|
|
@@ -162,6 +165,8 @@ program
|
|
|
162
165
|
choices: ["major", "minor", "patch"]
|
|
163
166
|
})
|
|
164
167
|
|
|
168
|
+
let hasUpgrade = false
|
|
169
|
+
|
|
165
170
|
for (const type of types) {
|
|
166
171
|
const upgrades: { package: string; oldVersion: string; newVersion: string; strVersion: string }[] = []
|
|
167
172
|
const allPkgs = Object.keys(packageJson[type])
|
|
@@ -186,11 +191,14 @@ program
|
|
|
186
191
|
})
|
|
187
192
|
|
|
188
193
|
pkgs.forEach((pkg: string) => {
|
|
194
|
+
hasUpgrade = true
|
|
189
195
|
const upgrade = upgrades.find(upgrade => upgrade.package === pkg)!
|
|
190
196
|
packageJson[type][pkg] = upgrade.strVersion
|
|
191
197
|
})
|
|
192
198
|
}
|
|
193
199
|
|
|
200
|
+
if (!hasUpgrade) return
|
|
201
|
+
|
|
194
202
|
await writePackageJson(packageJson)
|
|
195
203
|
|
|
196
204
|
const status1 = await execAsync("git status")
|