anl 26.127.0 โ†’ 26.201.0

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.
@@ -1,89 +1,89 @@
1
1
 
2
2
  const types = {
3
- features: {
4
- description: 'A new feature',
5
- title: 'Features',
6
- emoji: '๐Ÿ’ก',
7
- subject: 'feat',
8
- },
9
- bugfix: {
10
- description: 'A bug fix (development/test environment)',
11
- title: 'Bug Fixes',
12
- emoji: '๐Ÿ›',
13
- subject: 'fix',
14
- },
15
- hotfix: {
16
- description: 'A bug fix (production environment)',
17
- title: 'Hot Fixes',
18
- emoji: '๐Ÿ”ฅ',
19
- subject: 'fix',
20
- },
21
- chore: {
22
- description: "Daily work, miscellaneous",
23
- title: 'Chores',
24
- emoji: '๐Ÿ’ป',
25
- subject: 'chore',
26
- },
27
- config: {
28
- description: 'Configuration changes',
29
- title: 'Configuration',
30
- emoji: '๐Ÿ› ๏ธ',
31
- subject: 'config',
32
- },
33
- style: {
34
- description: 'Non-functional changes (whitespace, formatting, missing semicolons) or style file changes (css, less, scss, sass, stylus, styl)',
35
- title: 'Styles',
36
- emoji: '๐Ÿ’Ž',
37
- subject: 'style',
38
- },
39
- refactor: {
40
- description: 'Code changes that neither fix bugs nor add features (code refactoring)',
41
- title: 'Code Refactoring',
42
- emoji: '๐Ÿ›ธ',
43
- subject: 'refactor',
44
- },
45
- performance: {
46
- description: 'Performance optimization, improve performance (optimize code)',
47
- title: 'Performance Improvements',
48
- emoji: '๐Ÿš€',
49
- subject: 'perf',
50
- },
51
- revert: {
52
- description: 'Revert previous commits',
53
- title: 'Reverts',
54
- emoji: '๐Ÿ’ฃ',
55
- subject: 'revert',
56
- },
57
- document: {
58
- description: 'Document changes (README.md, CHANGELOG.md)',
59
- title: 'Documentation',
60
- emoji: '๐Ÿ“š',
61
- subject: 'docs',
62
- },
63
- test: {
64
- description: 'Add missing tests or correct existing tests (test code)',
65
- title: 'Tests',
66
- emoji: '๐Ÿชค',
67
- subject: 'test',
68
- },
69
- cicd: {
70
- description: 'Change CI / CD configuration files and scripts (example scope: Travis, Circle, BrowserStack, SauceLabs)',
71
- title: 'Continuous Integrations',
72
- emoji: '๐Ÿ’ฟ',
73
- subject: 'ci',
74
- },
75
- build: {
76
- description: 'Changes affecting the build system or external dependencies (example scope: gulp, broccoli, npm, webpack, rollup, vite, esbuild, webpack)',
77
- title: 'Builds',
78
- emoji: '๐Ÿ“ฆ',
79
- subject: 'build',
80
- },
81
- release: {
82
- description: 'Release version',
83
- title: 'Releases',
84
- emoji: '๐ŸŽ‰',
85
- subject: 'release',
86
- },
3
+ features: {
4
+ description: 'A new feature',
5
+ title: 'Features',
6
+ emoji: '๐Ÿ’ก',
7
+ subject: 'feat',
8
+ },
9
+ bugfix: {
10
+ description: 'A bug fix (development/test environment)',
11
+ title: 'Bug Fixes',
12
+ emoji: '๐Ÿ›',
13
+ subject: 'fix',
14
+ },
15
+ hotfix: {
16
+ description: 'A bug fix (production environment)',
17
+ title: 'Hot Fixes',
18
+ emoji: '๐Ÿ”ฅ',
19
+ subject: 'fix',
20
+ },
21
+ chore: {
22
+ description: "Daily work, miscellaneous",
23
+ title: 'Chores',
24
+ emoji: '๐Ÿ’ป',
25
+ subject: 'chore',
26
+ },
27
+ config: {
28
+ description: 'Configuration changes',
29
+ title: 'Configuration',
30
+ emoji: '๐Ÿ”ง',
31
+ subject: 'config',
32
+ },
33
+ style: {
34
+ description: 'Non-functional changes (whitespace, formatting, missing semicolons) or style file changes (css, less, scss, sass, stylus, styl)',
35
+ title: 'Styles',
36
+ emoji: '๐Ÿ’Ž',
37
+ subject: 'style',
38
+ },
39
+ refactor: {
40
+ description: 'Code changes that neither fix bugs nor add features (code refactoring)',
41
+ title: 'Code Refactoring',
42
+ emoji: '๐Ÿ›ธ',
43
+ subject: 'refactor',
44
+ },
45
+ performance: {
46
+ description: 'Performance optimization, improve performance (optimize code)',
47
+ title: 'Performance Improvements',
48
+ emoji: '๐Ÿš€',
49
+ subject: 'perf',
50
+ },
51
+ revert: {
52
+ description: 'Revert previous commits',
53
+ title: 'Reverts',
54
+ emoji: '๐Ÿ’ฃ',
55
+ subject: 'revert',
56
+ },
57
+ document: {
58
+ description: 'Document changes (README.md, CHANGELOG.md)',
59
+ title: 'Documentation',
60
+ emoji: '๐Ÿ“š',
61
+ subject: 'docs',
62
+ },
63
+ test: {
64
+ description: 'Add missing tests or correct existing tests (test code)',
65
+ title: 'Tests',
66
+ emoji: '๐Ÿงช',
67
+ subject: 'test',
68
+ },
69
+ cicd: {
70
+ description: 'Change CI / CD configuration files and scripts (example scope: Travis, Circle, BrowserStack, SauceLabs)',
71
+ title: 'Continuous Integrations',
72
+ emoji: '๐Ÿ’ฟ',
73
+ subject: 'ci',
74
+ },
75
+ build: {
76
+ description: 'Changes affecting the build system or external dependencies (example scope: gulp, broccoli, npm, webpack, rollup, vite, esbuild, webpack)',
77
+ title: 'Builds',
78
+ emoji: '๐Ÿ“ฆ',
79
+ subject: 'build',
80
+ },
81
+ release: {
82
+ description: 'Release version',
83
+ title: 'Releases',
84
+ emoji: '๐ŸŽ‰',
85
+ subject: 'release',
86
+ },
87
87
  }
88
88
 
89
89
  module.exports = { types };
@@ -92,6 +92,6 @@ if "%BRANCH_TYPE%"=="release" (
92
92
  :: ๅˆ›ๅปบๅนถๅˆ‡ๆขๅˆฐๆ–ฐๅˆ†ๆ”ฏ
93
93
  git checkout -b "%BRANCH_NAME%"
94
94
 
95
- echo ๅทฒๅˆ›ๅปบๅนถๅˆ‡ๆขๅˆฐๆ–ฐๅˆ†ๆ”ฏ: %BRANCH_NAME%
95
+ echo Created and switched to a new branch: %BRANCH_NAME%
96
96
 
97
97
  endlocal
@@ -99,4 +99,4 @@ fi
99
99
  # ๅˆ›ๅปบๅนถๅˆ‡ๆขๅˆฐๆ–ฐๅˆ†ๆ”ฏ
100
100
  git checkout -b "$BRANCH_NAME"
101
101
 
102
- echo "ๅทฒๅˆ›ๅปบๅนถๅˆ‡ๆขๅˆฐๆ–ฐๅˆ†ๆ”ฏ: $BRANCH_NAME"
102
+ echo "Created and switched to a new branch: $BRANCH_NAME"
@@ -1,3 +1,3 @@
1
- const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`../utils/index.cjs`),n=require(`./utils.cjs`);let r=require(`fs`);r=e.__toESM(r);let i=require(`path`);i=e.__toESM(i);let a=require(`child_process`);const o=async()=>{let e=i.default.join(__dirname,`..`,`..`,`git-local-config`),o=process.cwd(),s=i.default.join(e,`.gitscripts`),c=i.default.join(o,`.gitscripts`);await n.pathExists(s)?(await n.copyDirectoryRecursive(s,c),t.log.success(`.gitscripts create done.`)):t.log.error(`source directory ${s} does not exist`);for(let r of[`.gitconfig`,`.commit-type.cjs`]){let a=i.default.join(e,r),s=i.default.join(o,r);await n.pathExists(a)?await n.copyFileIfMissing(a,s):t.log.error(`source file ${a} does not exist`)}try{r.default.chmodSync(i.default.join(c,`random-branch.sh`),493),t.log.success(`random-branch.sh Raise power`)}catch(e){console.log(e),t.log.error(`Set .githooks/commit-msg executable permission failed: ${e instanceof Error?e.message:e}`)}try{(0,a.execSync)(`git config --local include.path ../.gitconfig`,{stdio:`ignore`}),t.log.success(`.gitconfig git set`)}catch(e){console.log(e),t.log.error(`Execute git config --local include.path ../.gitconfig failed, please execute the command manually`)}},s=async()=>{let e=i.default.join(__dirname,`..`,`..`,`git-local-config`,`.githooks`),o=process.cwd(),s=i.default.join(o,`.githooks`);if(!await n.pathExists(e)){t.log.error(`source directory ${e} does not exist`);return}await n.copyDirectoryRecursive(e,s),t.log.success(`.githooks create done.`);try{r.default.chmodSync(i.default.join(s,`commit-msg`),493),t.log.success(`commit-msg raise power done.`)}catch(e){console.log(e),t.log.error(`Set .githooks/commit-msg executable permission failed: ${e instanceof Error?e.message:e}`)}try{(0,a.execSync)(`git config core.hooksPath .githooks`,{stdio:`ignore`}),t.log.success(`git set .githooks done.`)}catch(e){console.log(e),t.log.error(`Execute [git config core.hooksPath .githooks] failed, please execute the command manually`)}},c=async()=>{let e=i.default.join(__dirname,`..`,`..`,`git-local-config`),r=process.cwd(),a=i.default.join(e,`.gitattributes`),o=i.default.join(r,`.gitattributes`);if(!await n.pathExists(a)){t.log.error(`source file ${a} does not exist`);return}await n.copyFileIfMissing(a,o)},l=(e=[])=>{e.includes(`gitflow`)&&o(),e.includes(`commitSubject`)&&s(),e.includes(`customGitCommand`)&&c(),console.log(`
1
+ const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`../utils/index.cjs`),n=require(`./utils.cjs`);let r=require(`child_process`),i=require(`fs`);i=e.__toESM(i);let a=require(`path`);a=e.__toESM(a);const o=async()=>{let e=a.default.join(__dirname,`..`,`..`,`git-local-config`),o=process.cwd(),s=a.default.join(e,`.gitscripts`),c=a.default.join(o,`.gitscripts`);await n.pathExists(s)?(await n.copyDirectoryRecursive(s,c),t.log.success(`.gitscripts create done.`)):t.log.error(`source directory ${s} does not exist`);for(let r of[`.gitconfig`,`.commit-type.cjs`]){let i=a.default.join(e,r),s=a.default.join(o,r);await n.pathExists(i)?await n.copyFileIfMissing(i,s):t.log.error(`source file ${i} does not exist`)}try{i.default.chmodSync(a.default.join(c,`random-branch.sh`),493),t.log.success(`random-branch.sh Raise power`)}catch(e){console.log(e),t.log.error(`Set .githooks/commit-msg executable permission failed: ${e instanceof Error?e.message:String(e)}`)}try{(0,r.execSync)(`git config --local include.path ../.gitconfig`,{stdio:`ignore`}),t.log.success(`.gitconfig git set`)}catch(e){console.log(e),t.log.error(`Execute git config --local include.path ../.gitconfig failed, please execute the command manually`)}},s=async()=>{let e=a.default.join(__dirname,`..`,`..`,`git-local-config`,`.githooks`),o=process.cwd(),s=a.default.join(o,`.githooks`);if(!await n.pathExists(e)){t.log.error(`source directory ${e} does not exist`);return}await n.copyDirectoryRecursive(e,s),t.log.success(`.githooks create done.`);try{i.default.chmodSync(a.default.join(s,`commit-msg`),493),t.log.success(`commit-msg raise power done.`)}catch(e){console.log(e),t.log.error(`Set .githooks/commit-msg executable permission failed: ${e instanceof Error?e.message:String(e)}`)}try{(0,r.execSync)(`git config core.hooksPath .githooks`,{stdio:`ignore`}),t.log.success(`git set .githooks done.`)}catch(e){console.log(e),t.log.error(`Execute [git config core.hooksPath .githooks] failed, please execute the command manually`)}},c=async()=>{let e=a.default.join(__dirname,`..`,`..`,`git-local-config`),r=process.cwd(),i=a.default.join(e,`.gitattributes`),o=a.default.join(r,`.gitattributes`);if(!await n.pathExists(i)){t.log.error(`source file ${i} does not exist`);return}await n.copyFileIfMissing(i,o)},l=async(e=[])=>{e.includes(`gitflow`)&&await o(),e.includes(`commitSubject`)&&await s(),e.includes(`customGitCommand`)&&await c(),console.log(`
2
2
  `),t.log.warning(`please run [git nb] command to create a new branch.`),console.log(`
3
3
  `)};exports.gitHandle=l;
package/lib/index.cjs CHANGED
@@ -1 +1 @@
1
- const e=require(`./_virtual/rolldown_runtime.cjs`),t=require(`./package.cjs`),n=require(`./swagger-codegen/index.cjs`),r=require(`./standard/lint-init.cjs`),i=require(`./git-local-config/index.cjs`);let a=require(`commander`),o=require(`inquirer`);o=e.__toESM(o),a.program.version(`${t.version}`,`-v --version`).usage(`<command> [options]`),a.program.command(`type`).description(`auto interface`).action(()=>{new n.Main().initialize()}),a.program.command(`lint`).description(`install linting tools (eslint, stylelint, prettier, commitlint, vscode)`).action(()=>r.lintHandle()),a.program.command(`git`).description(`config git Local custom command`).action(async()=>{let{features:e}=await o.default.prompt([{type:`checkbox`,name:`features`,message:`Select the required Git features (multi-select):`,choices:[{name:`gitflow standard branch creation`,value:`gitflow`},{name:`automatically set commit subject`,value:`commitSubject`},{name:`custom git command`,value:`customGitCommand`}],pageSize:10}]);i.gitHandle(e)}),a.program.parse(process.argv);
1
+ const e=require(`./_virtual/rolldown_runtime.cjs`),t=require(`./package.cjs`),n=require(`./git-local-config/index.cjs`),r=require(`./standard/lint-init.cjs`),i=require(`./swagger-codegen/index.cjs`);let a=require(`commander`),o=require(`inquirer`);o=e.__toESM(o),a.program.version(`${t.version}`,`-v --version`).usage(`<command> [options]`),a.program.command(`type`).description(`auto interface`).action(()=>{new i.Main().initialize().catch(e=>{console.error(e)})}),a.program.command(`lint`).description(`install linting tools (eslint, stylelint, prettier, commitlint, vscode)`).action(()=>r.lintHandle()),a.program.command(`git`).description(`config git Local custom command`).action(async()=>{let{features:e}=await o.default.prompt([{type:`checkbox`,name:`features`,message:`Select the required Git features (multi-select):`,choices:[{name:`gitflow standard branch creation`,value:`gitflow`},{name:`automatically set commit subject`,value:`commitSubject`},{name:`custom git command`,value:`customGitCommand`}],pageSize:10}]);n.gitHandle(e).catch(e=>{console.error(e)})}),a.program.parse(process.argv);
package/lib/package.cjs CHANGED
@@ -1 +1 @@
1
- var e=`26.127.0`;Object.defineProperty(exports,`version`,{enumerable:!0,get:function(){return e}});
1
+ var e=`26.201.0`;Object.defineProperty(exports,`version`,{enumerable:!0,get:function(){return e}});
@@ -1,7 +1,4 @@
1
- const e=`npm i eslint eslint-plugin-react@latest @typescript-eslint/eslint-plugin@latest @typescript-eslint/parser@latest -D`,t=`npm i eslint-plugin-vue@latest @typescript-eslint/eslint-plugin@latest @typescript-eslint/parser@latest eslint@latest -D`,n=(e=`less`)=>`npm i stylelint@^16.0.0 stylelint-${e}@latest stylelint-config-standard@latest stylelint-prettier@^5.0.0 -D`,r=`npm install --save-dev --save-exact prettier eslint-config-prettier`,i=`npm install husky --save-dev`,a=`npx husky install`,o=`npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'`,s=`npm install --save-dev @commitlint/cli @commitlint/config-conventional`,c=`
1
+ const e=(e=`less`)=>`npm i stylelint@^16.0.0 stylelint-${e}@latest stylelint-config-standard@latest stylelint-prettier@^5.0.0 -D`;exports.ADD_COMMIT_MSG=`npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'`,exports.COMMIT_CONFIG_CONTENT=`
2
2
  module.exports = {
3
3
  extends: ['@commitlint/config-conventional']
4
- }`;exports.ADD_COMMIT_MSG=`npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'`,exports.COMMIT_CONFIG_CONTENT=`
5
- module.exports = {
6
- extends: ['@commitlint/config-conventional']
7
- }`,exports.COMMIT_VERIFY=`npm install --save-dev @commitlint/cli @commitlint/config-conventional`,exports.HUSKY_INSTALL=`npx husky install`,exports.NPM_HUSK=`npm install husky --save-dev`,exports.Prettier=`npm install --save-dev --save-exact prettier eslint-config-prettier`,exports.REACT_ESLINT=`npm i eslint eslint-plugin-react@latest @typescript-eslint/eslint-plugin@latest @typescript-eslint/parser@latest -D`,exports.StyleLint=n,exports.VUE_ESLINT=`npm i eslint-plugin-vue@latest @typescript-eslint/eslint-plugin@latest @typescript-eslint/parser@latest eslint@latest -D`;
4
+ }`,exports.COMMIT_VERIFY=`npm install --save-dev @commitlint/cli @commitlint/config-conventional`,exports.HUSKY_INSTALL=`npx husky install`,exports.NPM_HUSK=`npm install husky --save-dev`,exports.Prettier=`npm install --save-dev --save-exact prettier eslint-config-prettier`,exports.REACT_ESLINT=`npm i eslint eslint-plugin-react@latest @typescript-eslint/eslint-plugin@latest @typescript-eslint/parser@latest -D`,exports.StyleLint=e,exports.VUE_ESLINT=`npm i eslint-plugin-vue@latest @typescript-eslint/eslint-plugin@latest @typescript-eslint/parser@latest eslint@latest -D`;
@@ -1 +1 @@
1
- const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`../utils/index.cjs`),n=require(`./const.cjs`);let r=require(`fs`),i=require(`path`),a=require(`shelljs`),o=require(`progress-estimator`);o=e.__toESM(o);const s=(0,o.default)({storagePath:(0,i.join)(__dirname,`.progress-estimator`)}),c=async()=>{(0,a.which)(`git`)||(t.log.warning(`Sorry, this script requires git`),(0,a.exit)(1));let e=new Promise((e,t)=>{try{(0,a.exec)(n.COMMIT_VERIFY,{silent:!0}),e({success:!0})}catch(e){t(e)}}),i=new Promise((e,i)=>{try{(0,a.exec)(n.NPM_HUSK,{silent:!0}),(0,a.exec)(n.HUSKY_INSTALL,{silent:!0}),(0,a.exec)(n.ADD_COMMIT_MSG,{silent:!0}),(0,r.writeFileSync)(`${process.cwd()}/commitlint.config.js`,n.COMMIT_CONFIG_CONTENT),e({success:!0})}catch(e){t.spinner.error(`Commitlint installation failed!`),i(e)}});try{await s(e,`Install Commitlint`,{estimate:1e4}),await s(i,`Setup Commitlint hooks and config`)}catch(e){console.log(`commitlintHanlde=====>`,e)}};exports.commitlintHanlde=c;
1
+ const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`../utils/index.cjs`),n=require(`./const.cjs`);let r=require(`fs`),i=require(`path`),a=require(`shelljs`),o=require(`progress-estimator`);o=e.__toESM(o);const s=(0,o.default)({storagePath:(0,i.join)(__dirname,`.progress-estimator`)}),c=async()=>{(0,a.which)(`git`)||(t.log.warning(`Sorry, this script requires git`),(0,a.exit)(1));let e=new Promise((e,t)=>{try{(0,a.exec)(n.COMMIT_VERIFY,{silent:!0}),e({success:!0})}catch(e){t(Error(String(e)))}}),i=new Promise((e,i)=>{try{(0,a.exec)(n.NPM_HUSK,{silent:!0}),(0,a.exec)(n.HUSKY_INSTALL,{silent:!0}),(0,a.exec)(n.ADD_COMMIT_MSG,{silent:!0}),(0,r.writeFileSync)(`${process.cwd()}/commitlint.config.js`,n.COMMIT_CONFIG_CONTENT),e({success:!0})}catch(e){t.spinner.error(`Commitlint installation failed!`),i(Error(String(e)))}});try{await s(e,`Install Commitlint`,{estimate:1e4}),await s(i,`Setup Commitlint hooks and config`)}catch(e){console.log(`commitlintHanlde=====>`,e)}};exports.commitlintHanlde=c;
@@ -1,2 +1,2 @@
1
- const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`../utils/index.cjs`),n=require(`./const.cjs`);let r=require(`fs`);r=e.__toESM(r);let i=require(`path`),a=require(`child_process`),o=require(`progress-estimator`);o=e.__toESM(o);const s=(0,o.default)({storagePath:(0,i.join)(__dirname,`.progress-estimator`)}),c={env:{browser:!0,es2021:!0},extends:[`eslint:recommended`,`plugin:react/recommended`,`plugin:@typescript-eslint/recommended`,`prettier`],overrides:[],parser:`@typescript-eslint/parser`,parserOptions:{ecmaVersion:`latest`,sourceType:`module`},plugins:[`react`,`@typescript-eslint`],rules:{}},l={env:{browser:!0,es2021:!0},extends:[`eslint:recommended`,`plugin:vue/vue3-essential`,`plugin:@typescript-eslint/recommended`,`prettier`],overrides:[],parser:`@typescript-eslint/parser`,parserOptions:{ecmaVersion:`latest`,sourceType:`module`},plugins:[`vue`,`@typescript-eslint`],rules:{}},u=async e=>{let i=e===`vue`?n.VUE_ESLINT:n.REACT_ESLINT,o=e===`vue`?l:c,u=new Promise((e,n)=>{let r=(0,a.exec)(i,e=>{e&&(t.spinner.error(e.message),n(e))});r.stdout?.on(`data`,()=>{e({success:!0})}),r.stderr?.on(`data`,()=>{t.spinner.error(`ESLint installation failed!`),n({success:!1})})}),d=new Promise((e,n)=>{try{let t=[`.eslintrc.js`,`.prettierrc.js`,`commitlint.config.js`].join(`
2
- `);r.default.writeFileSync(`${process.cwd()}/.eslintignore`,t),r.default.writeFileSync(`${process.cwd()}/.eslintrc.js`,`module.exports = ${JSON.stringify(o,null,2)}`),e({success:!0})}catch(e){t.spinner.error(`.eslintrc file creation failed!`),n(e)}});try{await s(u,`Install ESLint`,{estimate:3e4}),await s(d,`Create ESLint config files`)}catch(e){console.error(`eslintHandle=====>`,e)}};exports.eslintHandle=u;
1
+ const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`../utils/index.cjs`),n=require(`./const.cjs`);let r=require(`child_process`),i=require(`fs`);i=e.__toESM(i);let a=require(`path`),o=require(`progress-estimator`);o=e.__toESM(o);const s=(0,o.default)({storagePath:(0,a.join)(__dirname,`.progress-estimator`)}),c={env:{browser:!0,es2021:!0},extends:[`eslint:recommended`,`plugin:react/recommended`,`plugin:@typescript-eslint/recommended`,`prettier`],overrides:[],parser:`@typescript-eslint/parser`,parserOptions:{ecmaVersion:`latest`,sourceType:`module`},plugins:[`react`,`@typescript-eslint`],rules:{}},l={env:{browser:!0,es2021:!0},extends:[`eslint:recommended`,`plugin:vue/vue3-essential`,`plugin:@typescript-eslint/recommended`,`prettier`],overrides:[],parser:`@typescript-eslint/parser`,parserOptions:{ecmaVersion:`latest`,sourceType:`module`},plugins:[`vue`,`@typescript-eslint`],rules:{}},u=async e=>{let a=e===`vue`?n.VUE_ESLINT:n.REACT_ESLINT,o=e===`vue`?l:c,u=new Promise((e,n)=>{let i=(0,r.exec)(a,e=>{e&&(t.spinner.error(e.message),n(e))});i.stdout?.on(`data`,()=>{e({success:!0})}),i.stderr?.on(`data`,()=>{t.spinner.error(`ESLint installation failed!`),n(Error(`ESLint installation failed!`))})}),d=new Promise((e,n)=>{try{let t=[`.eslintrc.js`,`.prettierrc.js`,`commitlint.config.js`].join(`
2
+ `);i.default.writeFileSync(`${process.cwd()}/.eslintignore`,t),i.default.writeFileSync(`${process.cwd()}/.eslintrc.js`,`module.exports = ${JSON.stringify(o,null,2)}`),e({success:!0})}catch(e){t.spinner.error(`.eslintrc file creation failed!`),n(Error(String(e)))}});try{await s(u,`Install ESLint`,{estimate:3e4}),await s(d,`Create ESLint config files`)}catch(e){console.error(`eslintHandle=====>`,e)}};exports.eslintHandle=u;
@@ -1,8 +1,8 @@
1
- const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`../utils/index.cjs`),n=require(`./const.cjs`);let r=require(`fs`);r=e.__toESM(r);let i=require(`path`),a=require(`child_process`),o=require(`progress-estimator`);o=e.__toESM(o);const s=(0,o.default)({storagePath:(0,i.join)(__dirname,`.progress-estimator`)}),c=async e=>{let i=new Promise((r,i)=>{let o=(0,a.exec)(n.StyleLint(e),e=>{e&&(t.spinner.error(`Stylelint installation failed: ${e.message}`),i(e))});o.stdout?.on(`data`,function(){r({success:!0})}),o.stderr?.on(`data`,function(e){t.spinner.error(e),i({success:!1})})}),o=new Promise((n,i)=>{let a=`module.exports = {
1
+ const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`../utils/index.cjs`),n=require(`./const.cjs`);let r=require(`child_process`),i=require(`fs`);i=e.__toESM(i);let a=require(`path`),o=require(`progress-estimator`);o=e.__toESM(o);const s=(0,o.default)({storagePath:(0,a.join)(__dirname,`.progress-estimator`)}),c=async e=>{let a=new Promise((i,a)=>{let o=(0,r.exec)(n.StyleLint(e),e=>{e&&(t.spinner.error(`Stylelint installation failed: ${e.message}`),a(e))});o.stdout?.on(`data`,function(){i({success:!0})}),o.stderr?.on(`data`,function(e){t.spinner.error(String(e)),a(Error(String(e)))})}),o=new Promise((n,r)=>{let a=`module.exports = {
2
2
  plugins: ['stylelint-${e}', 'stylelint-prettier'],
3
3
  extends: ['stylelint-config-standard', 'stylelint-prettier/recommended'],
4
4
  rules: {
5
5
  'prettier/prettier': [true, { singleQuote: true, tabWidth: 2 }],
6
6
  'custom-property-pattern': null,
7
7
  },
8
- };`;r.default.writeFile(`${process.cwd()}/.stylelintrc.js`,a,e=>{if(e){t.spinner.error(`.stylelintrc file creation failed: ${e.message}`),i(e);return}n({success:!0})})});try{await s(i,`Install Stylelint`,{estimate:1e4}),await s(o,`Create .stylelintrc file`)}catch(e){console.error(`styleLintHandle======>`,e)}};exports.styleLintHandle=c;
8
+ };`;i.default.writeFile(`${process.cwd()}/.stylelintrc.js`,a,e=>{if(e){t.spinner.error(`.stylelintrc file creation failed: ${e.message}`),r(e);return}n({success:!0})})});try{await s(a,`Install Stylelint`,{estimate:1e4}),await s(o,`Create .stylelintrc file`)}catch(e){console.error(`styleLintHandle======>`,e)}};exports.styleLintHandle=c;
@@ -1,3 +1,3 @@
1
- const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`./install-eslint.cjs`),n=require(`./prettier.cjs`),r=require(`./install-commitlint.cjs`),i=require(`./vscode.cjs`),a=require(`./install-stylelint.cjs`);let o=require(`chalk`);o=e.__toESM(o);let s=require(`inquirer`);s=e.__toESM(s);function c(){s.default.prompt([{type:`checkbox`,name:`features`,message:`Select the linting tools to install (multi-select):`,choices:[{name:`ESLint - JavaScript/TypeScript linter`,value:`eslint`},{name:`Stylelint - CSS/SCSS/Less linter`,value:`stylelint`},{name:`Commitlint - Git commit message linter`,value:`commitlint`},{name:`Prettier - Code formatter`,value:`prettier`},{name:`VSCode - Editor settings`,value:`vscode`}],pageSize:10}]).then(async e=>{let{features:c}=e;if(c.length===0){console.log(`No tools selected. Exiting...`);return}let l;c.includes(`eslint`)&&(l=(await s.default.prompt([{type:`list`,message:`Choose the framework to use:`,name:`framework`,choices:[`React`,`Vue`],filter:e=>e.toLowerCase()}])).framework);let u;c.includes(`stylelint`)&&(u=(await s.default.prompt([{type:`list`,message:`Choose the CSS preprocessor:`,name:`css`,choices:[`Less`,`Sass`],filter:e=>e.toLowerCase()}])).css),c.includes(`commitlint`)&&await r.commitlintHanlde(),c.includes(`prettier`)&&await n.prettierHanlde(),c.includes(`vscode`)&&await i.default(),c.includes(`eslint`)&&l&&await t.eslintHandle(l),c.includes(`stylelint`)&&u&&await a.styleLintHandle(u),console.log(o.default.green(`
1
+ const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`./install-commitlint.cjs`),n=require(`./install-eslint.cjs`),r=require(`./install-stylelint.cjs`),i=require(`./prettier.cjs`),a=require(`./vscode.cjs`);let o=require(`inquirer`);o=e.__toESM(o);let s=require(`chalk`);s=e.__toESM(s);function c(){o.default.prompt([{type:`checkbox`,name:`features`,message:`Select the linting tools to install (multi-select):`,choices:[{name:`ESLint - JavaScript/TypeScript linter`,value:`eslint`},{name:`Stylelint - CSS/SCSS/Less linter`,value:`stylelint`},{name:`Commitlint - Git commit message linter`,value:`commitlint`},{name:`Prettier - Code formatter`,value:`prettier`},{name:`VSCode - Editor settings`,value:`vscode`}],pageSize:10}]).then(async e=>{let{features:c}=e;if(c.length===0){console.log(`No tools selected. Exiting...`);return}let l;c.includes(`eslint`)&&(l=(await o.default.prompt([{type:`list`,message:`Choose the framework to use:`,name:`framework`,choices:[`React`,`Vue`],filter:e=>e.toLowerCase()}])).framework);let u;c.includes(`stylelint`)&&(u=(await o.default.prompt([{type:`list`,message:`Choose the CSS preprocessor:`,name:`css`,choices:[`Less`,`Sass`],filter:e=>e.toLowerCase()}])).css),c.includes(`commitlint`)&&await t.commitlintHanlde(),c.includes(`prettier`)&&await i.prettierHanlde(),c.includes(`vscode`)&&await a.default(),c.includes(`eslint`)&&l&&await n.eslintHandle(l),c.includes(`stylelint`)&&u&&await r.styleLintHandle(u),console.log(s.default.green(`
2
2
  ๐ŸŽ‰ All selected tools have been installed successfully!
3
3
  `))})}exports.lintHandle=c;
@@ -1,2 +1,2 @@
1
- const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`../utils/index.cjs`),n=require(`./const.cjs`);let r=require(`fs`),i=require(`path`),a=require(`child_process`),o=require(`progress-estimator`);o=e.__toESM(o);const s=(0,o.default)({storagePath:(0,i.join)(__dirname,`.progress-estimator`)}),c=async()=>{let e=new Promise((e,r)=>{let i=(0,a.exec)(n.Prettier,e=>{e&&(t.spinner.error(e.message),r(e))});i.stdout?.on(`data`,function(){e({success:!0})}),i.stderr?.on(`data`,function(e){t.spinner.error(e),r({success:!1})})}),o=new Promise((e,n)=>{try{(0,r.writeFileSync)((0,i.join)(process.cwd(),`.prettierrc.js`),[`module.exports = {`,`printWidth: 80,`,`tabWidth: 2,`,`useTabs: true,`,`semi: true,`,`singleQuote: true,`,`quoteProps: "as-needed",`,`trailingComma: "none",`,`bracketSpacing: true,`,`arrowParens: "always",`,`rangeStart: 0,`,`proseWrap: "preserve",`,`htmlWhitespaceSensitivity: "css"`,`};`].join(`
2
- `),`utf8`),e({success:!0})}catch(e){t.spinner.error(`.prettierrc file write failed!`),n(e)}});try{await s(e,`Install Prettier`,{estimate:1e4}),await s(o,`Create .prettierrc file`)}catch(e){console.error(`prettierHanlde======>`,e)}};exports.prettierHanlde=c;
1
+ const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`../utils/index.cjs`),n=require(`./const.cjs`);let r=require(`child_process`),i=require(`fs`),a=require(`path`),o=require(`progress-estimator`);o=e.__toESM(o);const s=(0,o.default)({storagePath:(0,a.join)(__dirname,`.progress-estimator`)}),c=async()=>{let e=new Promise((e,i)=>{let a=(0,r.exec)(n.Prettier,e=>{e&&(t.spinner.error(e.message),i(e))});a.stdout?.on(`data`,function(){e({success:!0})}),a.stderr?.on(`data`,function(e){t.spinner.error(String(e)),i(Error(String(e)))})}),o=new Promise((e,n)=>{try{(0,i.writeFileSync)((0,a.join)(process.cwd(),`.prettierrc.js`),[`module.exports = {`,`printWidth: 80,`,`tabWidth: 2,`,`useTabs: true,`,`semi: true,`,`singleQuote: true,`,`quoteProps: "as-needed",`,`trailingComma: "none",`,`bracketSpacing: true,`,`arrowParens: "always",`,`rangeStart: 0,`,`proseWrap: "preserve",`,`htmlWhitespaceSensitivity: "css"`,`};`].join(`
2
+ `),`utf8`),e({success:!0})}catch(e){t.spinner.error(`.prettierrc file write failed!`),n(Error(String(e)))}});try{await s(e,`Install Prettier`,{estimate:1e4}),await s(o,`Create .prettierrc file`)}catch(e){console.error(`prettierHanlde======>`,e)}};exports.prettierHanlde=c;
@@ -1 +1 @@
1
- const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`../utils/index.cjs`);let n=require(`fs`);const r={"editor.formatOnSave":!0,"[javascript]":{"editor.defaultFormatter":`vscode.typescript-language-features`},"[typescript]":{"editor.defaultFormatter":`esbenp.prettier-vscode`},"[json]":{"editor.quickSuggestions":{strings:!0},"editor.suggest.insertMode":`replace`,"gitlens.codeLens.scopes":[`document`],"editor.defaultFormatter":`esbenp.prettier-vscode`}},i=async()=>{let e=`${process.cwd()}/.vscode/settings.json`;try{if((0,n.existsSync)(e)){let r=(0,n.readFileSync)(e,`utf-8`),i=JSON.parse(r);i[`editor.formatOnSave`]=!0,i[`editor.defaultFormatter`]=`esbenp.prettier-vscode`,(0,n.writeFileSync)(e,JSON.stringify(i,null,` `)),t.spinner.success(`VSCode settings updated!`)}else{let e=`${process.cwd()}/.vscode`;(0,n.mkdirSync)(e),(0,n.writeFileSync)(`${e}/settings.json`,JSON.stringify(r,null,` `)),t.spinner.success(`VSCode settings file created!`)}}catch(e){t.spinner.error(`VSCode settings file creation failed!`),console.error(e)}};var a=i;exports.default=a;
1
+ require(`../_virtual/rolldown_runtime.cjs`);const e=require(`../utils/index.cjs`);let t=require(`fs`);const n={"editor.formatOnSave":!0,"[javascript]":{"editor.defaultFormatter":`vscode.typescript-language-features`},"[typescript]":{"editor.defaultFormatter":`esbenp.prettier-vscode`},"[json]":{"editor.quickSuggestions":{strings:!0},"editor.suggest.insertMode":`replace`,"gitlens.codeLens.scopes":[`document`],"editor.defaultFormatter":`esbenp.prettier-vscode`}};var r=()=>{let r=`${process.cwd()}/.vscode/settings.json`;try{if((0,t.existsSync)(r)){let n=(0,t.readFileSync)(r,`utf-8`),i=JSON.parse(n);i[`editor.formatOnSave`]=!0,i[`editor.defaultFormatter`]=`esbenp.prettier-vscode`,(0,t.writeFileSync)(r,JSON.stringify(i,null,` `)),e.spinner.success(`VSCode settings updated!`)}else{let r=`${process.cwd()}/.vscode`;(0,t.mkdirSync)(r),(0,t.writeFileSync)(`${r}/settings.json`,JSON.stringify(n,null,` `)),e.spinner.success(`VSCode settings file created!`)}}catch(t){e.spinner.error(`VSCode settings file creation failed!`),console.error(t)}return Promise.resolve()};exports.default=r;
@@ -1,5 +1,5 @@
1
- const e=require(`../../utils/index.cjs`),t=require(`../shared/format.cjs`),n=require(`../shared/naming.cjs`),r=require(`../shared/schema-utils.cjs`);var i=class{config;enumsMap=new Map;constructor(e){this.config=e}nullable(e){return r.nullableSuffix(e)}extractEnumMetadata(t){let n={},{enmuConfig:r}=this.config,i=t;if(t.example&&e.isValidJSON(t.example)&&(n.rawEnumJson=t.example),r?.varnames){let e=i[r.varnames];Array.isArray(e)&&(n.customNames=e.map(e=>`${e}`))}if(r?.comment){let e=i[r.comment];if(e&&typeof e==`object`&&!Array.isArray(e)){let t={};Object.entries(e).sort((e,t)=>e[0].localeCompare(t[0])).forEach(([e,n])=>{typeof n==`string`&&(t[e]=n)}),Object.keys(t).length&&(n.descriptionMap=t)}}return n}resolveEnumMemberName(e,t,n){let{customNames:r,isNumericEnum:i,treatStringAsNumeric:a}=n,o=r?.[t];return typeof o==`string`&&o.trim()?o:i||typeof e==`string`&&a?`NUMBER_${e}`:typeof e==`string`&&e?e.toUpperCase():`ENUM_${t}`}convertJsonToEnumString(e,r){try{let i=JSON.parse(e);return this.config.enmuConfig.erasableSyntaxOnly?`export const ${r} = {\n${Object.entries(i).sort((e,t)=>e[0].localeCompare(t[0])).map(([e,n])=>`${t.getIndentation(this.config)}${e}: '${n}'`).join(`,
2
- `)}\n} as const;\n\nexport type ${n.getEnumTypeName(this.config,r)} = typeof ${r}[keyof typeof ${r}];`:`export enum ${r} {\n${Object.entries(i).sort((e,t)=>e[0].localeCompare(t[0])).map(([e,n])=>`${t.getIndentation(this.config)}${e} = '${n}'`).join(`,
1
+ const e=require(`../../utils/index.cjs`),t=require(`../shared/format.cjs`),n=require(`../shared/naming.cjs`),r=require(`../shared/schema-utils.cjs`);var i=class{config;enumsMap=new Map;constructor(e){this.config=e}nullable(e){return r.nullableSuffix(e)}extractEnumMetadata(t){let n={},{enmuConfig:r}=this.config,i=t;if(t.example&&e.isValidJSON(t.example)&&(n.rawEnumJson=t.example),r?.varnames){let e=i[r.varnames];Array.isArray(e)&&(n.customNames=e.map(e=>`${e}`))}if(r?.comment){let e=i[r.comment];if(e&&typeof e==`object`&&!Array.isArray(e)){let t={};Object.entries(e).sort((e,t)=>e[0].localeCompare(t[0])).forEach(([e,n])=>{typeof n==`string`&&(t[e]=n)}),Object.keys(t).length&&(n.descriptionMap=t)}}return n}resolveEnumMemberName(e,t,n){let{customNames:r,isNumericEnum:i,treatStringAsNumeric:a}=n,o=r?.[t];return typeof o==`string`&&o.trim()?o:i||typeof e==`string`&&a?`NUMBER_${e}`:typeof e==`string`&&e?e.toUpperCase():`ENUM_${t}`}convertJsonToEnumString(e,r){try{let i=JSON.parse(e);return this.config.enmuConfig.erasableSyntaxOnly?`export const ${r} = {\n${Object.entries(i).sort((e,t)=>e[0].localeCompare(t[0])).map(([e,n])=>`${t.getIndentation(this.config)}${e}: '${String(n)}'`).join(`,
2
+ `)}\n} as const;\n\nexport type ${n.getEnumTypeName(this.config,r)} = typeof ${r}[keyof typeof ${r}];`:`export enum ${r} {\n${Object.entries(i).sort((e,t)=>e[0].localeCompare(t[0])).map(([e,n])=>`${t.getIndentation(this.config)}${e} = '${String(n)}'`).join(`,
3
3
  `)}\n}`}catch(e){return console.error(`JSON ่งฃๆžๅคฑ่ดฅ:`,e),``}}normalizeEnumValues(e){return e.map((e,t)=>{if(typeof e==`string`||typeof e==`number`)return e;if(e&&typeof e==`object`){let n=e;if(n.value!==void 0&&(typeof n.value==`string`||typeof n.value==`number`))return n.value;if(n.key!==void 0&&(typeof n.key==`string`||typeof n.key==`number`))return n.key;if(n.id!==void 0&&(typeof n.id==`string`||typeof n.id==`number`))return n.id;try{return JSON.stringify(n)}catch{return`ENUM_${t}`}}return`ENUM_${t}`})}parseEnum(e,r){if(!Array.isArray(e.enum))return null;let i=[`integer`,`number`],a=this.normalizeEnumValues(e.enum),o=!!(e.type&&i.includes(e.type)),s=e.type===`string`&&a.every(e=>typeof e==`string`&&!isNaN(Number(e))),{customNames:c,descriptionMap:l,rawEnumJson:u}=this.extractEnumMetadata(e),d=this.config.enmuConfig.erasableSyntaxOnly;if(u){let e=this.convertJsonToEnumString(u,r);if(e)return{headerRef:``,renderStr:e}}let f=a.map((e,n)=>{let r=this.resolveEnumMemberName(e,n,{customNames:c,isNumericEnum:o,treatStringAsNumeric:s}),i=o?`${e}`:`'${String(e)}'`,a=d?`${r}: ${i},`:`${r} = ${i},`,u=l?.[String(e)];return u?[`${t.getIndentation(this.config)}/** ${u} */`,`${t.getIndentation(this.config)}${a}`].join(`
4
4
  `):`${t.getIndentation(this.config)}${a}`});return f.length?d?{headerRef:``,renderStr:[`export const ${r} = {`,...f,`} as const;`,``,`export type ${n.getEnumTypeName(this.config,r)} = typeof ${r}[keyof typeof ${r}];`].join(`
5
5
  `)}:{headerRef:``,renderStr:[`export enum ${r} {`,...f,`}`].join(`
@@ -1 +1 @@
1
- const e=require(`../shared/format.cjs`),t=require(`./schema-resolver.cjs`),n=require(`./writer.cjs`);var r=class{parser;writer;constructor(r,i,a){let o=e.applyFormattingDefaults(i);this.parser=new t.ComponentSchemaResolver(r,o),this.writer=new n.ComponentWriter(o,a)}async handle(){let{enumsMap:e,schemasMap:t}=await this.parser.main();await this.writer.writeSchemas(t),await this.writer.writeEnums(e)}},i=r;exports.default=i;
1
+ const e=require(`../shared/format.cjs`),t=require(`./schema-resolver.cjs`),n=require(`./writer.cjs`);var r=class{parser;writer;constructor(r,i,a){let o=e.applyFormattingDefaults(i);this.parser=new t.ComponentSchemaResolver(r,o),this.writer=new n.ComponentWriter(o,a)}async handle(){let{enumsMap:e,schemasMap:t}=this.parser.main();await this.writer.writeSchemas(t),await this.writer.writeEnums(e)}};exports.default=r;
@@ -3,6 +3,6 @@ const e=require(`../../utils/index.cjs`),t=require(`../shared/format.cjs`),n=req
3
3
  `))return`${r}/** ${i[0]} */`;let s=[`${r}/**`];return i.forEach(e=>{e&&(e.includes(`
4
4
  `)?e.split(`
5
5
  `).forEach(e=>s.push(`${r} * ${e}`)):s.push(`${r} * ${e}`))}),s.push(`${r} */`),s.join(`
6
- `)}nameTheHumpCenterStroke(e){let t=e.replace(`#/components/schemas/`,``),r={typeName:t,fileName:n.typeNameToFileName(t),dataType:``};if(this.schemas){let e=this.schemas[t];e?.enum?r.dataType=`enum`:r.dataType=e?.type}return r}parseRef(e){if(!e?.trim())return{headerRefStr:``,typeName:``,dataType:``};let{fileName:t,typeName:r,dataType:i=``}=this.nameTheHumpCenterStroke(e),a;return a=i===`enum`?`import type { ${n.getEnumTypeName(this.config,r)} } from '${this.config.importEnumPath}';`:`import type { ${r} } from './${t}';`,{headerRefStr:a,typeName:r,dataType:i}}parseArray(r,i){let{items:a={},nullable:o,example:s}=r,c=a?.$ref;if(c){let{headerRefStr:r,typeName:a,dataType:l}=this.parseRef(c);if(l===`enum`&&e.isValidJSON(s)){let e=this.enumParser.convertJsonToEnumString(s,a);this.enumParser.addEnumByName(a,e)}let u=l===`enum`?n.getEnumTypeName(this.config,a):a;return{headerRef:r,renderStr:`${t.getIndentation(this.config)}${i}${this.isRequired(i)?``:`?`}: Array<${u}>${this.nullable(o)};`,typeName:u}}let l=a?.type,u=l===`integer`?`number`:l;return l===`object`&&(u=`Record<string, unknown>`),{headerRef:``,renderStr:`${t.getIndentation(this.config)}${i}${this.isRequired(i)?``:`?`}: Array<${u}>${this.nullable(o)};`,typeName:u}}parseBoolean(e,n){return e.type===`boolean`?`${t.getIndentation(this.config)}${n}${this.isRequired(n)?``:`?`}: boolean${this.nullable(e.nullable)};`:``}parseInteger(e,n){return Array.isArray(e.enum)?this.enumParser.handleEnum(e,n,this.isRequired(n))?.renderStr??``:`${t.getIndentation(this.config)}${n}${this.isRequired(n)?``:`?`}: number${this.nullable(e.nullable)};`}parseNumber(e,n){if(e.type!==`number`)return null;if(e.enum){let t=this.enumParser.handleEnum(e,n,this.isRequired(n));if(t)return t}return{headerRef:``,renderStr:`${t.getIndentation(this.config)}${n}${this.isRequired(n)?``:`?`}: number${this.nullable(e.nullable)};`}}getStringTypeByFormat(e){if(!e)return`string`;switch(e){case`date-time`:case`date`:case`time`:return`Date`;case`email`:case`idn-email`:case`uuid`:case`uri`:case`uri-reference`:case`iri`:case`iri-reference`:case`hostname`:case`idn-hostname`:case`ipv4`:case`ipv6`:return`string`;case`binary`:return`File`;default:return`string`}}parseString(e,n){if(e.type!==`string`)return null;if(e.enum){let t=this.enumParser.handleEnum(e,n,this.isRequired(n));if(t)return t}let r=this.getStringTypeByFormat(e.format);return{headerRef:``,renderStr:`${t.getIndentation(this.config)}${n}${this.isRequired(n)?``:`?`}: ${r}${this.nullable(e.nullable)};`}}parseObject(e,n){let r=``,i=``;if(e.type===`object`){let a=e;if(typeof a.additionalProperties==`object`){let e=this.parseArray(a.additionalProperties,n)??this.defaultReturn;r=e?.headerRef??``,i=e?.renderStr??``}i=typeof a.additionalProperties==`boolean`?`${t.getIndentation(this.config)}${n}${this.isRequired(n)?``:`?`}: Record<string, unknown>${this.nullable(a.nullable)};`:`${t.getIndentation(this.config)}${n}${this.isRequired(n)?``:`?`}: ${e.type}${this.nullable(e.nullable)};`}return{headerRef:r,renderStr:i}}parseProperties(r,i){let a=[],o=[];if(!r)return{headerRef:``,renderStr:`export interface ${i} {}`};let s=Object.keys(r).sort();for(let c of s){let s=r[c];if(s?.$ref){let{headerRefStr:r,typeName:l,dataType:u}=this.parseRef(s.$ref);!o.includes(r)&&l!==i&&o.push(r);let d=s,f=this.buildDocComment(d,c);f!==``&&a.push(f);let p=u===`enum`?n.getEnumTypeName(this.config,l):l;a.push(`${t.getIndentation(this.config)}${c}${this.isRequired(c)?``:`?`}: ${p};`);let m=s.example;if(u===`enum`&&m&&e.isValidJSON(m)){let e=this.enumParser.convertJsonToEnumString(m,l);this.enumParser.addEnumByName(l,e)}continue}if(`allOf`in s){let e=s.allOf?.[0];if(e?.$ref){let{headerRefStr:r,typeName:l,dataType:u}=this.parseRef(e.$ref),d=u===`enum`?n.getEnumTypeName(this.config,l):l;!o.includes(r)&&l!==i&&o.push(r);let f=s,p=this.buildDocComment(f,c);p!==``&&a.push(p),a.push(`${t.getIndentation(this.config)}${c}${this.isRequired(c)?``:`?`}: ${d}${this.nullable(s.nullable)};`);continue}}let l=s,u=this.buildDocComment(l,c);switch(u!==``&&a.push(u),l.type){case`array`:{let e=this.parseArray(l,c)??this.defaultReturn;a.push(e?.renderStr??``),!o.includes(e.headerRef)&&i!==e.typeName&&o.push(e.headerRef)}break;case`boolean`:a.push(this.parseBoolean(l,c));break;case`integer`:a.push(this.parseInteger(l,c));break;case`number`:{let e=this.parseNumber(l,c);e&&(e.headerRef&&!o.includes(e.headerRef)&&o.push(e.headerRef),a.push(e.renderStr))}break;case`string`:if(l.enum){let e=this.enumParser.handleEnum(l,c,this.isRequired(c));e&&(e.headerRef&&!o.includes(e.headerRef)&&o.push(e.headerRef),e.renderStr&&a.push(e.renderStr))}else a.push(this.parseString(l,c)?.renderStr??``);break;case`object`:{let{headerRef:e,renderStr:t}=this.parseObject(l,c)??this.defaultReturn;a.push(t),o.includes(e)||o.push(e)}break}}let c=[`export interface ${i} {`,...a,`}`];if(o.length>0){let e=o.filter(e=>e!==``);e.length>0&&e.push(``),c.unshift(...e)}let l=c.join(`
6
+ `)}nameTheHumpCenterStroke(e){let t=e.replace(`#/components/schemas/`,``),r={typeName:t,fileName:n.typeNameToFileName(t),dataType:``};if(this.schemas){let e=this.schemas[t];e?.enum?r.dataType=`enum`:r.dataType=e?.type}return r}parseRef(e){if(!e?.trim())return{headerRefStr:``,typeName:``,dataType:``};let{fileName:t,typeName:r,dataType:i=``}=this.nameTheHumpCenterStroke(e),a;return a=i===`enum`?`import type { ${n.getEnumTypeName(this.config,r)} } from '${this.config.importEnumPath}';`:`import type { ${r} } from './${t}';`,{headerRefStr:a,typeName:r,dataType:i}}parseArray(r,i){let a=r,{items:o={},nullable:s}=a,c=o?.$ref;if(c){let{headerRefStr:r,typeName:o,dataType:l}=this.parseRef(c),u=a.example;if(l===`enum`&&typeof u==`string`&&e.isValidJSON(u)){let e=this.enumParser.convertJsonToEnumString(u,o);this.enumParser.addEnumByName(o,e)}let d=l===`enum`?n.getEnumTypeName(this.config,o):o;return{headerRef:r,renderStr:`${t.getIndentation(this.config)}${i}${this.isRequired(i)?``:`?`}: Array<${d}>${this.nullable(s)};`,typeName:d}}let l=o?.type,u=l===`integer`?`number`:l;return l===`object`&&(u=`Record<string, unknown>`),{headerRef:``,renderStr:`${t.getIndentation(this.config)}${i}${this.isRequired(i)?``:`?`}: Array<${u}>${this.nullable(s)};`,typeName:u}}parseBoolean(e,n){return e.type===`boolean`?`${t.getIndentation(this.config)}${n}${this.isRequired(n)?``:`?`}: boolean${this.nullable(e.nullable)};`:``}parseInteger(e,n){return Array.isArray(e.enum)?this.enumParser.handleEnum(e,n,this.isRequired(n))?.renderStr??``:`${t.getIndentation(this.config)}${n}${this.isRequired(n)?``:`?`}: number${this.nullable(e.nullable)};`}parseNumber(e,n){if(e.type!==`number`)return null;if(e.enum){let t=this.enumParser.handleEnum(e,n,this.isRequired(n));if(t)return t}return{headerRef:``,renderStr:`${t.getIndentation(this.config)}${n}${this.isRequired(n)?``:`?`}: number${this.nullable(e.nullable)};`}}getStringTypeByFormat(e){if(!e)return`string`;switch(e){case`date-time`:case`date`:case`time`:return`Date`;case`email`:case`idn-email`:case`uuid`:case`uri`:case`uri-reference`:case`iri`:case`iri-reference`:case`hostname`:case`idn-hostname`:case`ipv4`:case`ipv6`:return`string`;case`binary`:return`File`;default:return`string`}}parseString(e,n){if(e.type!==`string`)return null;if(e.enum){let t=this.enumParser.handleEnum(e,n,this.isRequired(n));if(t)return t}let r=this.getStringTypeByFormat(e.format);return{headerRef:``,renderStr:`${t.getIndentation(this.config)}${n}${this.isRequired(n)?``:`?`}: ${r}${this.nullable(e.nullable)};`}}parseObject(e,n){let r=``,i=``;if(e.type===`object`){let a=e;if(typeof a.additionalProperties==`object`){let e=this.parseArray(a.additionalProperties,n)??this.defaultReturn;r=e?.headerRef??``,i=e?.renderStr??``}i=typeof a.additionalProperties==`boolean`?`${t.getIndentation(this.config)}${n}${this.isRequired(n)?``:`?`}: Record<string, unknown>${this.nullable(a.nullable)};`:`${t.getIndentation(this.config)}${n}${this.isRequired(n)?``:`?`}: ${e.type}${this.nullable(e.nullable)};`}return{headerRef:r,renderStr:i}}parseProperties(r,i){let a=[],o=[];if(!r)return{headerRef:``,renderStr:`export interface ${i} {}`};let s=Object.keys(r).sort();for(let c of s){let s=r[c];if(s?.$ref){let{headerRefStr:r,typeName:l,dataType:u}=this.parseRef(s.$ref);!o.includes(r)&&l!==i&&o.push(r);let d=s,f=this.buildDocComment(d,c);f!==``&&a.push(f);let p=u===`enum`?n.getEnumTypeName(this.config,l):l;a.push(`${t.getIndentation(this.config)}${c}${this.isRequired(c)?``:`?`}: ${p};`);let m=s.example;if(u===`enum`&&m&&e.isValidJSON(m)){let e=this.enumParser.convertJsonToEnumString(m,l);this.enumParser.addEnumByName(l,e)}continue}if(`allOf`in s){let e=s.allOf?.[0];if(e?.$ref){let{headerRefStr:r,typeName:l,dataType:u}=this.parseRef(e.$ref),d=u===`enum`?n.getEnumTypeName(this.config,l):l;!o.includes(r)&&l!==i&&o.push(r);let f=s,p=this.buildDocComment(f,c);p!==``&&a.push(p),a.push(`${t.getIndentation(this.config)}${c}${this.isRequired(c)?``:`?`}: ${d}${this.nullable(s.nullable)};`);continue}}let l=s,u=this.buildDocComment(l,c);switch(u!==``&&a.push(u),l.type){case`array`:{let e=this.parseArray(l,c)??this.defaultReturn;a.push(e?.renderStr??``),!o.includes(e.headerRef)&&i!==e.typeName&&o.push(e.headerRef)}break;case`boolean`:a.push(this.parseBoolean(l,c));break;case`integer`:a.push(this.parseInteger(l,c));break;case`number`:{let e=this.parseNumber(l,c);e&&(e.headerRef&&!o.includes(e.headerRef)&&o.push(e.headerRef),a.push(e.renderStr))}break;case`string`:if(l.enum){let e=this.enumParser.handleEnum(l,c,this.isRequired(c));e&&(e.headerRef&&!o.includes(e.headerRef)&&o.push(e.headerRef),e.renderStr&&a.push(e.renderStr))}else a.push(this.parseString(l,c)?.renderStr??``);break;case`object`:{let{headerRef:e,renderStr:t}=this.parseObject(l,c)??this.defaultReturn;a.push(t),o.includes(e)||o.push(e)}break}}let c=[`export interface ${i} {`,...a,`}`];if(o.length>0){let e=o.filter(e=>e!==``);e.length>0&&e.push(``),c.unshift(...e)}let l=c.join(`
7
7
  `);return{headerRef:o.join(`
8
- `),renderStr:l}}async generateContent(e,t){if(`items`in e)return console.warn(`ๆ•ฐ็ป„็ฑปๅž‹ๆœชๅค„็†: ${t}`,e.items),``;switch(e.type){case`boolean`:return this.parseBoolean(e,t);case`integer`:return this.parseInteger(e,t);case`number`:return this.parseNumber(e,t)?.renderStr??``;case`object`:return this.parseProperties(e.properties,t)?.renderStr??``;case`string`:return this.parseString(e,t)?.renderStr??``;default:return``}}async main(){if(!this.schemas)return console.warn(`schemas ไธบ็ฉบ`),{enumsMap:this.enumParser.enumsMap,schemasMap:this.schemasMap};let e=Object.keys(this.schemas).sort();for(let t of e){let e=this.schemas[t];if(`$ref`in e){console.warn(`่ทณ่ฟ‡ ReferenceObject: ${t}`);continue}let r=`type`in e?e:null;if(!r?.type){console.warn(`ๆ— ๆ•ˆ็š„ schema ๅฏน่ฑก: ${t}`);continue}if(Array.isArray(e.enum)){let n=this.enumParser.parseEnum(e,t);n?.renderStr&&!this.enumParser.hasEnum(t)&&this.enumParser.addEnumByName(t,n.renderStr);continue}this.requiredFieldSet=new Set(e.required??[]);let i=n.typeNameToFileName(t),a=await this.generateContent(r,t);a&&((a.includes(`export enum `)||a.includes(`export const `)&&a.includes(`as const`))&&!this.enumParser.hasEnum(t)?this.enumParser.addEnumByName(t,a):this.schemasMap.set(t,{fileName:i,content:a}))}return{enumsMap:this.enumParser.enumsMap,schemasMap:this.schemasMap}}};exports.ComponentSchemaResolver=a;
8
+ `),renderStr:l}}generateContent(e,t){if(`items`in e)return console.warn(`ๆ•ฐ็ป„็ฑปๅž‹ๆœชๅค„็†: ${t}`,e.items),``;switch(e.type){case`boolean`:return this.parseBoolean(e,t);case`integer`:return this.parseInteger(e,t);case`number`:return this.parseNumber(e,t)?.renderStr??``;case`object`:return this.parseProperties(e.properties,t)?.renderStr??``;case`string`:return this.parseString(e,t)?.renderStr??``;default:return``}}main(){if(!this.schemas)return console.warn(`schemas ไธบ็ฉบ`),{enumsMap:this.enumParser.enumsMap,schemasMap:this.schemasMap};let e=Object.keys(this.schemas).sort();for(let t of e){let e=this.schemas[t];if(`$ref`in e){console.warn(`่ทณ่ฟ‡ ReferenceObject: ${t}`);continue}let r=`type`in e?e:null;if(!r?.type){console.warn(`ๆ— ๆ•ˆ็š„ schema ๅฏน่ฑก: ${t}`);continue}if(Array.isArray(e.enum)){let n=this.enumParser.parseEnum(e,t);n?.renderStr&&!this.enumParser.hasEnum(t)&&this.enumParser.addEnumByName(t,n.renderStr);continue}this.requiredFieldSet=new Set(e.required??[]);let i=n.typeNameToFileName(t),a=this.generateContent(r,t);a&&((a.includes(`export enum `)||a.includes(`export const `)&&a.includes(`as const`))&&!this.enumParser.hasEnum(t)?this.enumParser.addEnumByName(t,a):this.schemasMap.set(t,{fileName:i,content:a}))}return{enumsMap:this.enumParser.enumsMap,schemasMap:this.schemasMap}}};exports.ComponentSchemaResolver=a;
@@ -1 +1 @@
1
- const e=require(`../../utils/index.cjs`),t=require(`../shared/writer.cjs`);var n=class{config;appendMode;constructor(e,t){this.config=e,this.appendMode=t?.appendMode??!1}async writeSchemas(n){let r=[],i=[],a=`${this.config.saveTypeFolderPath}/models/`,o=Array.from(n.values()).sort((e,t)=>e.fileName.localeCompare(t.fileName));for(let t of o)r.push((async({fileName:t,content:n})=>{i.push(`export * from './${t}';`);let r=`${a}${t}.ts`;await e.writeFileRecursive(r,n),e.log.info(`${r.padEnd(80)} - Write done!`)})(t));await Promise.all(r),i.sort(),await t.writeIndexFileWithDedup(`${a}index.ts`,i,{appendMode:this.appendMode}),e.log.success(`Component parse & write done!`)}async writeEnums(n){let r=[],i=[],a=Array.from(n.values()).sort((e,t)=>e.fileName.localeCompare(t.fileName));for(let t of a)r.push((async({fileName:t,content:n})=>{i.push(`export * from './${t}';`);let r=`${this.config.saveEnumFolderPath}/${t}.ts`;await e.writeFileRecursive(r,n),e.log.info(`${r.padEnd(80)} - Write done!`)})(t));await Promise.all(r),i.sort(),await t.writeIndexFileWithDedup(`${this.config.saveEnumFolderPath}/index.ts`,i,{appendMode:this.appendMode}),e.log.success(`Enums write done!`)}};exports.ComponentWriter=n;
1
+ const e=require(`../../utils/index.cjs`),t=require(`../shared/writer.cjs`);var n=class{config;appendMode;constructor(e,t){this.config=e,this.appendMode=t?.appendMode??!1}async writeSchemas(n){let r=[],i=[],a=`${this.config.saveTypeFolderPath}/models/`,o=Array.from(n.values()).sort((e,t)=>e.fileName.localeCompare(t.fileName));for(let t of o)r.push((async({fileName:t,content:n})=>{i.push(`export * from './${t}';`);let r=`${a}${t}.ts`;await e.writeFileRecursive(r,n),e.log.info(`${r.padEnd(80)} - Write done!`)})(t));await Promise.allSettled(r),i.sort(),await t.writeIndexFileWithDedup(`${a}index.ts`,i,{appendMode:this.appendMode}),e.log.success(`Component parse & write done!`)}async writeEnums(n){let r=[],i=[],a=Array.from(n.values()).sort((e,t)=>e.fileName.localeCompare(t.fileName));for(let t of a)r.push((async({fileName:t,content:n})=>{i.push(`export * from './${t}';`);let r=`${this.config.saveEnumFolderPath}/${t}.ts`;await e.writeFileRecursive(r,n),e.log.info(`${r.padEnd(80)} - Write done!`)})(t));await Promise.all(r),i.sort(),await t.writeIndexFileWithDedup(`${this.config.saveEnumFolderPath}/index.ts`,i,{appendMode:this.appendMode}),e.log.success(`Enums write done!`)}};exports.ComponentWriter=n;
@@ -1 +1 @@
1
- const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`../utils/index.cjs`);let n=require(`path`);n=e.__toESM(n);let r=require(`http`);r=e.__toESM(r);let i=require(`https`);i=e.__toESM(i);async function a(e){if(!e.swaggerJsonUrl)return Promise.reject(Error(`swaggerJsonUrl ๆœช้…็ฝฎ๏ผŒ่ฏทๆฃ€ๆŸฅ swaggerConfig.url`));if(/^https?:\/\//.test(e.swaggerJsonUrl))return o(e);try{let r=t.requireModule(n.default.isAbsolute(e.swaggerJsonUrl)?e.swaggerJsonUrl:n.default.resolve(process.cwd(),e.swaggerJsonUrl));return Promise.resolve(r)}catch(e){return console.error(e,!0),Promise.reject(e)}}function o({swaggerJsonUrl:e=``,headers:t={}}){return new Promise((n,a)=>{let o,s=/^https/.test(e)?i.default.request:r.default.request;console.info(`Request Start: ${e}`);let c=s(e,{method:`GET`,rejectUnauthorized:!1,headers:{Accept:`*/*`,"Accept-Encoding":`utf-8`,"Content-Type":`application/x-www-form-urlencoded`,...t}},t=>{t.setEncoding(`utf-8`);let r=``;t.on(`data`,e=>{r+=e.toString()}),t.on(`end`,()=>{clearTimeout(o);try{let t=JSON.parse(r);console.info(`Request Successful: ${e}`),n(t)}catch(t){console.error(`Request Failed: ${e}`,!0),a(t)}}),t.on(`error`,t=>{console.error(`Request Failed: ${e}`,!0),a(t)})});c.on(`timeout`,e=>{console.error(e,!0),a(e)}),o=setTimeout(()=>{let t=Error();t.name=`Request Timeout`,t.message=e,c.emit(`timeout`,t)},15e3),c.end()})}exports.getSwaggerJson=a;
1
+ const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`../utils/index.cjs`);let n=require(`path`);n=e.__toESM(n);let r=require(`http`);r=e.__toESM(r);let i=require(`https`);i=e.__toESM(i);async function a(e){if(!e.swaggerJsonUrl)return Promise.reject(Error(`swaggerJsonUrl ๆœช้…็ฝฎ๏ผŒ่ฏทๆฃ€ๆŸฅ swaggerConfig.url`));if(/^https?:\/\//.test(e.swaggerJsonUrl))return o(e);try{let r=t.requireModule(n.default.isAbsolute(e.swaggerJsonUrl)?e.swaggerJsonUrl:n.default.resolve(process.cwd(),e.swaggerJsonUrl));return Promise.resolve(r)}catch(e){return console.error(e,!0),Promise.reject(Error(String(e)))}}function o({swaggerJsonUrl:e=``,headers:t={}}){return new Promise((n,a)=>{let o,s=e.startsWith(`https`)?i.default.request:r.default.request;console.info(`Request Start: ${e}`);let c=s(e,{method:`GET`,rejectUnauthorized:!1,headers:{Accept:`*/*`,"Accept-Encoding":`utf-8`,"Content-Type":`application/x-www-form-urlencoded`,...t}},t=>{t.setEncoding(`utf-8`);let r=``;t.on(`data`,e=>{r+=e.toString()}),t.on(`end`,()=>{clearTimeout(o);try{let t=JSON.parse(r);console.info(`Request Successful: ${e}`),n(t)}catch(t){console.error(`Request Failed: ${e}`,!0),a(Error(String(t)))}}),t.on(`error`,t=>{console.error(`Request Failed: ${e}`,!0),a(t)})});c.on(`timeout`,e=>{console.error(e,!0),a(e)}),o=setTimeout(()=>{let t=Error();t.name=`Request Timeout`,t.message=e,c.emit(`timeout`,t)},15e3),c.end()})}exports.getSwaggerJson=a;
@@ -1,8 +1,8 @@
1
- const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`../utils/index.cjs`),n=require(`./components/index.cjs`),r=require(`./get-data.cjs`),i=require(`./path/index.cjs`);let a=require(`fs`);a=e.__toESM(a);let o=require(`chalk`);o=e.__toESM(o);let s=require(`path`);s=e.__toESM(s);let c=require(`shelljs`),l;const u=process.env.NODE_ENV===`debug`,d={saveTypeFolderPath:u?`apps/types`:`src/api/types`,saveApiListFolderPath:u?`apps/types`:`src/api`,saveEnumFolderPath:u?`apps/types/enums`:`src/enums`,importEnumPath:`../../../enums`,requestMethodsImportPath:`./fetch`,formatting:{indentation:` `,lineEnding:`
2
- `},swaggerConfig:{url:`https://generator3.swagger.io/openapi.json`,apiListFileName:`index.ts`,headers:{},dataLevel:`serve`,parameterSeparator:`_`,includeInterface:[],excludeInterface:[]},enmuConfig:{erasableSyntaxOnly:!1,varnames:`enum-varnames`,comment:`enum-descriptions`}};var f=class{schemas={};paths={};async handle(e,t){try{let a=await r.getSwaggerJson(e);if(!a)throw Error(`ๆ— ๆณ•่Žทๅ– Swagger ๆ•ฐๆฎ`);this.schemas=a.components?.schemas||{},this.paths=a.paths||{};let o=new n.default(this.schemas,e,{appendMode:t}),s=new i.default(this.paths,a.components?.parameters,this.schemas,e);return await o.handle(),await s.handle(),!0}catch(e){throw e instanceof Error?Error(`Handle Swagger data failed: ${e.message}`):Error(`Handle Swagger data failed: unknown error`)}}async formatGeneratedFiles(e){let n=`npx prettier --write "${e.saveTypeFolderPath}/**/*.{ts,d.ts}"`;try{await a.default.promises.access(e.saveTypeFolderPath);let{stderr:r}=await new Promise((e,t)=>{(0,c.exec)(n,(n,r,i)=>{n?t(n):e({stdout:r,stderr:i})})});r&&(console.log(`
3
- `),console.log(`$`,o.default.yellow(n)),console.log(`
1
+ const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`../utils/index.cjs`),n=require(`./components/index.cjs`),r=require(`./get-data.cjs`),i=require(`./path/index.cjs`);let a=require(`fs`);a=e.__toESM(a);let o=require(`path`);o=e.__toESM(o);let s=require(`chalk`);s=e.__toESM(s);let c=require(`shelljs`),l;const u=process.env.NODE_ENV===`debug`;console.log(u),console.log(process.env.NODE_ENV);const d={saveTypeFolderPath:u?`apps/types`:`src/api/types`,saveApiListFolderPath:u?`apps/types`:`src/api`,saveEnumFolderPath:u?`apps/types/enums`:`src/enums`,importEnumPath:`../../../enums`,requestMethodsImportPath:`./fetch`,formatting:{indentation:` `,lineEnding:`
2
+ `},swaggerConfig:{url:`https://generator3.swagger.io/openapi.json`,apiListFileName:`index.ts`,headers:{},dataLevel:`serve`,parameterSeparator:`_`,includeInterface:[],excludeInterface:[]},enmuConfig:{erasableSyntaxOnly:!1,varnames:`enum-varnames`,comment:`enum-descriptions`}};var f=class{schemas={};paths={};async handle(e,t){try{let a=await r.getSwaggerJson(e);if(!a)throw Error(`ๆ— ๆณ•่Žทๅ– Swagger ๆ•ฐๆฎ`);this.schemas=a.components?.schemas??{},this.paths=a.paths??{};let o=new n.default(this.schemas,e,{appendMode:t}),s=new i.default(this.paths,a.components?.parameters,this.schemas,e);return await o.handle(),await s.handle(),!0}catch(e){throw e instanceof Error?Error(`Handle Swagger data failed: ${e.message}`):Error(`Handle Swagger data failed: unknown error`)}}async formatGeneratedFiles(e){let n=`npx prettier --write "${e.saveTypeFolderPath}/**/*.{ts,d.ts}"`;try{await a.default.promises.access(e.saveTypeFolderPath);let{stderr:r}=await new Promise((e,t)=>{(0,c.exec)(n,(n,r,i)=>{n?t(Error(String(n))):e({stdout:r,stderr:i})})});r&&(console.log(`
3
+ `),console.log(`$`,s.default.yellow(n)),console.log(`
4
4
  `)),t.log.success(`File formatting successful`),console.log(`
5
- `)}catch(e){console.log(``),console.log(e),t.log.error(`Format failed, please manually execute the following command:`),console.log(`$`,o.default.yellow(n)),console.log(``)}}async copyAjaxConfigFiles(e){try{let n=[`config.ts`,`error-message.ts`,`fetch.ts`,`api-type.d.ts`],r=u?s.default.join(__dirname,`..`,`..`,`postbuild-assets`,`ajax-config`):s.default.join(__dirname,`..`,`ajax-config`),i=e;for(let e of n){let n=s.default.join(r,e),o=s.default.join(i,e);try{await a.default.promises.access(n);try{await a.default.promises.access(o),t.log.info(`${e} already exists, skipping generation.`)}catch{await a.default.promises.copyFile(n,o),t.log.success(`${e} create done.`)}}catch{t.log.error(`Source file ${n} does not exist`);continue}}}catch(e){return e}}getSystemLocale(){try{return Intl.DateTimeFormat().resolvedOptions().locale.toLowerCase()}catch{return(process.env.LANG||process.env.LC_ALL||process.env.LC_MESSAGES||``).toLowerCase()}}showLegacyConfigHint(e){let t={url:e.swaggerJsonUrl||`https://your.swagger.json`,publicPrefix:e.publicPrefix||``,apiListFileName:e.apiListFileName||`index.ts`,headers:e.headers||{}},n=this.getSystemLocale();n.startsWith(`zh`)||n.includes(`chinese`)?(console.log(`
5
+ `)}catch(e){console.log(``),console.log(e),t.log.error(`Format failed, please manually execute the following command:`),console.log(`$`,s.default.yellow(n)),console.log(``)}}async copyAjaxConfigFiles(e){try{let n=[`config.ts`,`error-message.ts`,`fetch.ts`,`api-type.d.ts`],r=u?o.default.join(__dirname,`..`,`..`,`postbuild-assets`,`ajax-config`):o.default.join(__dirname,`..`,`ajax-config`),i=e;for(let e of n){let n=o.default.join(r,e),s=o.default.join(i,e);try{await a.default.promises.access(n);try{await a.default.promises.access(s),t.log.info(`${e} already exists, skipping generation.`)}catch{await a.default.promises.copyFile(n,s),t.log.success(`${e} create done.`)}}catch(e){if(e instanceof Error)throw t.log.error(`Source file ${n} does not exist`),Error(`Source file ${n} does not exist: ${e.message}`);continue}}}catch(e){return e}}getSystemLocale(){try{return Intl.DateTimeFormat().resolvedOptions().locale.toLowerCase()}catch{return(process.env.LANG??process.env.LC_ALL??process.env.LC_MESSAGES??``).toLowerCase()}}showLegacyConfigHint(e){let t={url:e.swaggerJsonUrl??`https://your.swagger.json`,publicPrefix:e.publicPrefix??``,apiListFileName:e.apiListFileName??`index.ts`,headers:e.headers??{}},n=this.getSystemLocale();n.startsWith(`zh`)||n.includes(`chinese`)?(console.log(`
6
6
  ๆฃ€ๆต‹ๅˆฐๆ—ง็‰ˆ้…็ฝฎ๏ผŒ่ฏทๆ›ดๆ–ฐ an.config.json๏ผš`),console.log(`1) ๅฐ† swaggerJsonUrl / publicPrefix / headers ็งปๅˆฐ swaggerConfig ๅญ—ๆฎตใ€‚`),console.log(`2) ๅ•ไธชๆœๅŠกๅฏ็›ดๆŽฅๅกซๅ†™ๅฏน่ฑก๏ผŒๅคšไธชๆœๅŠก่ฏทไฝฟ็”จๆ•ฐ็ป„๏ผŒๅนถ็กฎไฟ apiListFileName ๅ”ฏไธ€ใ€‚`),console.log(`็คบไพ‹๏ผš`),console.log(JSON.stringify({swaggerConfig:t},null,2)),console.log(``)):(console.log(`
7
- Legacy configuration detected, please update an.config.json:`),console.log(`1) Move swaggerJsonUrl / publicPrefix / headers to swaggerConfig field.`),console.log(`2) Single service can be an object directly, multiple services should use an array, and ensure apiListFileName is unique.`),console.log(`Example:`),console.log(JSON.stringify({swaggerConfig:t},null,2)),console.log(``))}normalizeswaggerConfig(e,t){let n=!1,r=t?e.swaggerConfig:void 0;r||=(n=!0,{url:e.swaggerJsonUrl||``,publicPrefix:e.publicPrefix||``,apiListFileName:e.apiListFileName||`index.ts`,headers:e.headers||{},modulePrefix:e.modulePrefix});let i=(t,r)=>{let i=t.url||e.swaggerJsonUrl;if(!i)throw Error(`swaggerConfig[${r}] ็ผบๅฐ‘ url๏ผŒ่ฏท่กฅๅ……ๅŽ้‡่ฏ•ใ€‚`);let a=t.publicPrefix??e.publicPrefix??``;return!t.url&&e.swaggerJsonUrl&&(n=!0),{url:i,publicPrefix:a,apiListFileName:(t.apiListFileName||e.apiListFileName||`index.ts`).trim()||`index.ts`,headers:t.headers||e.headers||{},dataLevel:t.dataLevel||e.dataLevel||`serve`,parameterSeparator:t.parameterSeparator||e.parameterSeparator||`_`,includeInterface:t.includeInterface||e.includeInterface||[],excludeInterface:t.excludeInterface||e.excludeInterface||[],modulePrefix:t.modulePrefix??e.modulePrefix??``,responseModelTransform:t.responseModelTransform??e.responseModelTransform}},a=Array.isArray(r)?r.map((e,t)=>i(e,t)):[i(r,0)];if(a.length===0)throw Error(`swaggerConfig ไธ่ƒฝไธบ็ฉบ๏ผŒ่ฏท่‡ณๅฐ‘้…็ฝฎไธ€ไธช swagger ๆœๅŠกใ€‚`);if(a.length>1){let e=new Set;a.forEach(t=>{if(e.has(t.apiListFileName))throw Error(`swaggerConfig ไธญ apiListFileName ้‡ๅค๏ผš${t.apiListFileName}๏ผŒ่ฏทไธบๆฏไธชๆœๅŠก่ฎพ็ฝฎๅ”ฏไธ€ๆ–‡ไปถๅใ€‚`);e.add(t.apiListFileName)})}return n&&this.showLegacyConfigHint(e),a}buildServerConfig(e,t){return{...e,swaggerJsonUrl:t.url,publicPrefix:t.publicPrefix??e.publicPrefix,headers:t.headers,apiListFileName:t.apiListFileName,dataLevel:t.dataLevel,parameterSeparator:t.parameterSeparator,includeInterface:t.includeInterface,excludeInterface:t.excludeInterface,modulePrefix:t.modulePrefix,responseModelTransform:t.responseModelTransform??e.responseModelTransform,swaggerConfig:t}}async getConfig(e){try{let t=await a.default.promises.readFile(e,`utf8`);l=!0;try{return JSON.parse(t)}catch(e){throw l=!0,Error(`้…็ฝฎๆ–‡ไปถๆ ผๅผ้”™่ฏฏ๏ผŒ่ฏทๆฃ€ๆŸฅ an.config.json ็š„ JSON ๆ ผๅผๆ˜ฏๅฆๆญฃ็กฎ: ${e instanceof Error?e.message:String(e)}`)}}catch(n){if(n instanceof Error&&`code`in n&&n.code===`ENOENT`)return l=!1,t.log.warning(`้…็ฝฎๆ–‡ไปถไธๅญ˜ๅœจ๏ผŒๅฐ†่‡ชๅŠจๅˆ›ๅปบ้…็ฝฎๆ–‡ไปถใ€‚`),await t.writeFileRecursive(e,JSON.stringify(d,null,2)),t.log.success(`้…็ฝฎๆ–‡ไปถๅทฒๅˆ›ๅปบ๏ผŒ่ฏทๆฃ€ๆŸฅ้กน็›ฎๆ น็›ฎๅฝ•ไธ‹็š„ an.config.json ๆ–‡ไปถๅนถ้…็ฝฎๅŽ้‡ๆ–ฐ่ฟ่กŒใ€‚`),d;throw n}}async initialize(){let e=process.cwd()+`/an.config.json`;try{let n=await this.getConfig(e),r={...d,...n},i=Object.prototype.hasOwnProperty.call(n,`swaggerConfig`),o=this.normalizeswaggerConfig(r,i);if(!l)return;await a.default.promises.mkdir(r.saveApiListFolderPath,{recursive:!0}),await this.copyAjaxConfigFiles(r.saveApiListFolderPath),await t.clearDirExcept(r.saveApiListFolderPath,[`api-type.d.ts`,`config.ts`,`error-message.ts`,`fetch.ts`]),await t.clearDir(r.saveTypeFolderPath),await t.clearDir(r.saveEnumFolderPath);for(let e=0;e<o.length;e++){let t=this.buildServerConfig(r,o[e]),n=e>0;await this.handle(t,n)}await this.formatGeneratedFiles(r),t.log.success(`Successfully, all done, see you next time!`),console.log(`
8
- `)}catch(e){let n=e instanceof Error?e.message:`Unknown error`;t.log.error(`Initialization failed: ${n}`)}}};u&&new f().initialize(),exports.Main=f;
7
+ Legacy configuration detected, please update an.config.json:`),console.log(`1) Move swaggerJsonUrl / publicPrefix / headers to swaggerConfig field.`),console.log(`2) Single service can be an object directly, multiple services should use an array, and ensure apiListFileName is unique.`),console.log(`Example:`),console.log(JSON.stringify({swaggerConfig:t},null,2)),console.log(``))}normalizeswaggerConfig(e,t){let n=!1,r=t?e.swaggerConfig:void 0;r||=(n=!0,{url:e.swaggerJsonUrl??``,publicPrefix:e.publicPrefix??``,apiListFileName:e.apiListFileName??`index.ts`,headers:e.headers??{},modulePrefix:e.modulePrefix});let i=(t,r)=>{let i=t.url||e.swaggerJsonUrl;if(!i)throw Error(`swaggerConfig[${r}] ็ผบๅฐ‘ url๏ผŒ่ฏท่กฅๅ……ๅŽ้‡่ฏ•ใ€‚`);let a=t.publicPrefix??e.publicPrefix??``;!t.url&&e.swaggerJsonUrl&&(n=!0);let o=(t.apiListFileName??e.apiListFileName??`index.ts`).trim()||`index.ts`,s=t.headers??e.headers??{},c=t.dataLevel??e.dataLevel??`serve`,l=t.parameterSeparator??e.parameterSeparator??`_`,u=t.includeInterface??e.includeInterface??[],d=t.excludeInterface??e.excludeInterface??[],f=t.includeTags??e.includeTags,p=t.excludeTags??e.excludeTags,m={url:i,publicPrefix:a,apiListFileName:o,headers:s,dataLevel:c,parameterSeparator:l,includeInterface:u,excludeInterface:d,modulePrefix:t.modulePrefix??e.modulePrefix??``,responseModelTransform:t.responseModelTransform??e.responseModelTransform};return f!==void 0&&(m.includeTags=f),p!==void 0&&(m.excludeTags=p),m},a=Array.isArray(r)?r.map((e,t)=>i(e,t)):[i(r,0)];if(a.length===0)throw Error(`swaggerConfig ไธ่ƒฝไธบ็ฉบ๏ผŒ่ฏท่‡ณๅฐ‘้…็ฝฎไธ€ไธช swagger ๆœๅŠกใ€‚`);if(a.length>1){let e=new Set;a.forEach(t=>{if(e.has(t.apiListFileName))throw Error(`swaggerConfig ไธญ apiListFileName ้‡ๅค๏ผš${t.apiListFileName}๏ผŒ่ฏทไธบๆฏไธชๆœๅŠก่ฎพ็ฝฎๅ”ฏไธ€ๆ–‡ไปถๅใ€‚`);e.add(t.apiListFileName)})}return n&&this.showLegacyConfigHint(e),a}buildServerConfig(e,t){return{...e,swaggerJsonUrl:t.url,publicPrefix:t.publicPrefix??e.publicPrefix,headers:t.headers,apiListFileName:t.apiListFileName,dataLevel:t.dataLevel,parameterSeparator:t.parameterSeparator,includeInterface:t.includeInterface,excludeInterface:t.excludeInterface,includeTags:t.includeTags,excludeTags:t.excludeTags,modulePrefix:t.modulePrefix,responseModelTransform:t.responseModelTransform??e.responseModelTransform,swaggerConfig:t}}async getConfig(e){try{let t=await a.default.promises.readFile(e,`utf8`);l=!0;try{return JSON.parse(t)}catch(e){throw l=!0,Error(`้…็ฝฎๆ–‡ไปถๆ ผๅผ้”™่ฏฏ๏ผŒ่ฏทๆฃ€ๆŸฅ an.config.json ็š„ JSON ๆ ผๅผๆ˜ฏๅฆๆญฃ็กฎ: ${e instanceof Error?e.message:String(e)}`)}}catch(n){if(n instanceof Error&&`code`in n&&n.code===`ENOENT`)return l=!1,t.log.warning(`้…็ฝฎๆ–‡ไปถไธๅญ˜ๅœจ๏ผŒๅฐ†่‡ชๅŠจๅˆ›ๅปบ้…็ฝฎๆ–‡ไปถใ€‚`),await t.writeFileRecursive(e,JSON.stringify(d,null,2)),t.log.success(`้…็ฝฎๆ–‡ไปถๅทฒๅˆ›ๅปบ๏ผŒ่ฏทๆฃ€ๆŸฅ้กน็›ฎๆ น็›ฎๅฝ•ไธ‹็š„ an.config.json ๆ–‡ไปถๅนถ้…็ฝฎๅŽ้‡ๆ–ฐ่ฟ่กŒใ€‚`),d;throw n}}async initialize(){let e=process.cwd()+`/an.config.json`;try{let n=await this.getConfig(e),r={...d,...n},i=Object.prototype.hasOwnProperty.call(n,`swaggerConfig`),o=this.normalizeswaggerConfig(r,i);if(!l)return;await a.default.promises.mkdir(r.saveApiListFolderPath,{recursive:!0}),await this.copyAjaxConfigFiles(r.saveApiListFolderPath),await t.clearDirExcept(r.saveApiListFolderPath,[`api-type.d.ts`,`config.ts`,`error-message.ts`,`fetch.ts`]),await t.clearDir(r.saveTypeFolderPath),await t.clearDir(r.saveEnumFolderPath);for(let e=0;e<o.length;e++){let t=this.buildServerConfig(r,o[e]),n=e>0;await this.handle(t,n)}await this.formatGeneratedFiles(r),t.log.success(`Successfully, all done, see you next time!`),console.log(`
8
+ `)}catch(e){let n=e instanceof Error?e.message:`Unknown error`;t.log.error(`Initialization failed: ${n}`)}}};u&&new f().initialize().catch(e=>{console.error(e)}),exports.Main=f;
@@ -1,10 +1,10 @@
1
- const e=require(`../../utils/index.cjs`),t=require(`../shared/format.cjs`),n=require(`../shared/naming.cjs`),r=require(`../shared/http.cjs`),i=require(`./schema-resolver.cjs`),a=require(`./naming.cjs`),o=require(`./writer.cjs`),s={typeMapping:new Map([[`integer`,`number`],[`string`,`string`],[`boolean`,`boolean`],[`binary`,`File`],[`number`,`number`],[`null`,`null`],[`undefined`,`undefined`],[`date`,`Date`],[`time`,`Date`],[`datetime`,`Date`],[`timestamp`,`Date`]]),errorHandling:{throwOnError:!1,logErrors:!0}};var c=class{pathsObject={};nonArrayType=[`boolean`,`object`,`number`,`string`,`integer`];pathKey=``;contentBody={payload:{path:[],query:[],header:[],body:[]},response:``,_response:``,fileName:``,method:``,requestPath:``,summary:``,apiName:``,typeName:``,deprecated:!1,contentType:`application/json`};Map=new Map;config;errors=[];parameters={};schemas={};schemaResolver;writer;apiListFileContent=[];constructor(e,n,r,a){this.pathsObject=e,this.parameters=n??{},this.schemas=r??{},this.config=t.applyFormattingDefaults({...s,...a,typeMapping:new Map([...s.typeMapping||[],...a.typeMapping||[]])}),this.schemaResolver=new i.SchemaResolver(this.config,this.schemas,this.parameters,this.handleError.bind(this)),this.writer=new o.PathWriter(this.config)}handleError(t){if(this.errors.push(t),this.config.errorHandling?.logErrors&&e.log.error(`${t.type}: ${t.message}${t.path?` at ${t.path}`:``}`),this.config.errorHandling?.throwOnError)throw Error(`${t.type}: ${t.message}`)}getIndentation(){return t.getIndentation(this.config)}getDoubleIndentation(){let e=this.getIndentation();return e+e}generateParamComment(e,t){let n=[],r=[];if(e.description&&r.push(e.description),e.deprecated&&r.push(`@deprecated`),e.schema&&typeof e.schema==`object`&&`example`in e.schema){let t=e.schema.example,n=typeof t==`string`?t:JSON.stringify(t);r.push(`@example ${n}`)}if(e.schema&&typeof e.schema==`object`&&`default`in e.schema){let t=e.schema.default,n=typeof t==`string`?t:JSON.stringify(t);r.push(`@default ${n}`)}return r.length>0&&(r.length===1&&!r[0].includes(`
1
+ const e=require(`../../utils/index.cjs`),t=require(`../shared/format.cjs`),n=require(`../shared/naming.cjs`),r=require(`../shared/http.cjs`),i=require(`./naming.cjs`),a=require(`./schema-resolver.cjs`),o=require(`./writer.cjs`);var s=function(e){return e.GET=`get`,e.PUT=`put`,e.POST=`post`,e.DELETE=`delete`,e.OPTIONS=`options`,e.HEAD=`head`,e.PATCH=`patch`,e.TRACE=`trace`,e}(s||{});const c={typeMapping:new Map([[`integer`,`number`],[`string`,`string`],[`boolean`,`boolean`],[`binary`,`File`],[`number`,`number`],[`null`,`null`],[`undefined`,`undefined`],[`date`,`Date`],[`time`,`Date`],[`datetime`,`Date`],[`timestamp`,`Date`]]),errorHandling:{throwOnError:!1,logErrors:!0}};var l=class{pathsObject={};nonArrayType=[`boolean`,`object`,`number`,`string`,`integer`];pathKey=``;contentBody={payload:{path:[],query:[],header:[],body:[]},response:``,_response:``,fileName:``,method:``,requestPath:``,summary:``,apiName:``,typeName:``,deprecated:!1,contentType:`application/json`};Map=new Map;config;errors=[];parameters={};schemas={};schemaResolver;writer;apiListFileContent=[];allowedInterfaceKeys=new Set;constructor(e,n,r,i){this.pathsObject=e,this.parameters=n??{},this.schemas=r??{},this.config=t.applyFormattingDefaults({...c,...i,typeMapping:new Map([...c.typeMapping??[],...i.typeMapping??[]])}),this.schemaResolver=new a.SchemaResolver(this.config,this.schemas,this.parameters,this.handleError.bind(this)),this.writer=new o.PathWriter(this.config)}handleError(t){if(this.errors.push(t),this.config.errorHandling?.logErrors&&e.log.error(`${t.type}: ${t.message}${t.path?` at ${t.path}`:``}`),this.config.errorHandling?.throwOnError)throw Error(`${t.type}: ${t.message}`)}getIndentation(){return t.getIndentation(this.config)}getDoubleIndentation(){let e=this.getIndentation();return e+e}generateParamComment(e,t){let n=[],r=[];if(e.description&&r.push(e.description),e.deprecated&&r.push(`@deprecated`),e.schema&&typeof e.schema==`object`&&`example`in e.schema){let t=e.schema.example,n=typeof t==`string`?t:JSON.stringify(t);r.push(`@example ${n}`)}if(e.schema&&typeof e.schema==`object`&&`default`in e.schema){let t=e.schema.default,n=typeof t==`string`?t:JSON.stringify(t);r.push(`@default ${n}`)}return r.length>0&&(r.length===1&&!r[0].includes(`
2
2
  `)?n.push(`${t}/** ${r[0]} */`):(n.push(`${t}/**`),r.forEach(e=>{e.includes(`
3
3
  `)?e.split(`
4
- `).forEach(e=>{n.push(`${t} * ${e}`)}):n.push(`${t} * ${e}`)}),n.push(`${t} */`))),n}parametersItemHandle(e,t,r,i){let a=this.getDoubleIndentation(),o=`$ref`in e?e:null,s=`name`in e?e:null;if(o&&o.$ref&&o.$ref.startsWith(`#/components/parameters/`)&&this.parameters){let e=o.$ref.replace(`#/components/parameters/`,``),n=this.parameters[e];this.parametersItemHandle(n,t,r,i)}if(s){if(!s.schema){console.warn(`Parameter "${s.name}" has no schema defined, skipping...`);return}let e=this.schemaResolver.main(s.schema);if(!e||typeof e!=`string`){console.warn(`Failed to parse schema for parameter "${s.name}", got:`,e);return}if(s.in===`path`)this.generateParamComment(s,a).forEach(e=>t.push(e)),t.push(`${a}type ${s.name} = ${e};`),this.contentBody.payload._path?this.contentBody.payload._path[s.name]=e:this.contentBody.payload._path={[s.name]:e};else if(s.in===`query`){this.generateParamComment(s,a).forEach(e=>r.push(e));let t=s.required===!0?``:`?`,i=n.formatPropertyName(s.name);r.push(`${a}${i}${t}: ${e};`),this.contentBody.payload._query?this.contentBody.payload._query[s.name]=e:this.contentBody.payload._query={[s.name]:e}}else if(s.in===`header`){this.generateParamComment(s,a).forEach(e=>i.push(e));let t=s.required===!0?``:`?`,r=n.formatPropertyName(s.name);i.push(`${a}${r}${t}: ${e};`),this.contentBody.payload._header?this.contentBody.payload._header[s.name]=e:this.contentBody.payload._header={[s.name]:e}}else s.in===`cookie`?console.info(`Cookie parameter "${s.name}" detected but not added to type definition (cookies are typically handled separately)`):console.warn(`Unknown parameter location "${s.in}" for parameter "${s.name}"`)}}requestParametersParse(e){let t=this.getIndentation(),n=[],r=[],i=[];e?.map(e=>this.parametersItemHandle(e,n,r,i)),n.length!==0&&(n.unshift(`${t}namespace Path {`),n.push(`${t}}`)),r.length!==0&&(r.unshift(`${t}interface Query {`),r.push(`${t}}`)),i.length!==0&&(i.unshift(`${t}interface Header {`),i.push(`${t}}`)),this.contentBody.payload.path=n,this.contentBody.payload.query=r,this.contentBody.payload.header=i}requestBodyObjectParse(e){let t=this.getIndentation(),{schema:n}=Object.values(e.content)[0]||{schema:null};if(n){let e=n?.type,r=`$ref`in n?n:null,i=e===`array`?n:null,a=e&&this.nonArrayType.includes(e)?n:null;if(r)return`${t}type Body = ${this.schemaResolver.referenceObjectParse(r)}`;if(i)return`${t}type Body = ${this.schemaResolver.arraySchemaObjectParse(i)}`;if(a){let e=this.schemaResolver.nonArraySchemaObjectParse(a);return Array.isArray(e)?e.length===0?[`${t}type Body = ${a.type};`]:[`${t}interface Body {`,...e.map(e=>e.replace(/: string;/,`: File;`)),`}`]:[`${t}type Body = ${e}`]}}}requestBodyParse(e){if(!e)return`{}`;let t=`$ref`in e?e:null,n=`content`in e?e:null;if(t){let e=this.schemaResolver.referenceObjectParse(t);return`${this.getIndentation()}type Body = ${e}`}return n&&String(e)===`[object Object]`&&Reflect.ownKeys(e).length!==0?this.requestBodyObjectParse(n):`{}`}normalizemodulePrefix(e){if(!e||e.trim()===``)return``;let t=e.trim();return t=t.replace(/\/+$/g,``),t.startsWith(`/`)||(t=`/`+t),t}apiRequestItemHandle(e){let{payload:t,requestPath:n,_response:i,method:a,typeName:o,apiName:s,contentType:c}=e,{_path:l,_query:u,body:d}=t,f=e.dataLevel||this.config.dataLevel||`serve`,p=this.normalizemodulePrefix(this.config.modulePrefix),m=()=>{let e=[],t=Object.keys(l||{}).sort();for(let n of t)e.push(`${n}: ${o}.Path.${n}`);let n=e.join(e.length>1?`,`:``);return n===``?n:n+`,`},h=()=>{let e=u?`query: ${o}.Query,`:``;return e===``?``:`${e}`},g=()=>{let e=d.length>0?`body: ${o}.Body,`:``;return e===``?``:`${e}`},_=m(),v=h(),y=g(),b=()=>{let e=r.SUPPORTED_REQUEST_UPLOAD_TYPES.includes(c)?`headers: { 'Content-Type': '${c}' }`:void 0;return[`{`,e?`${e},`:``,`...params, `,v===``?``:`query,`,y===``?``:`body,`,`},`].join(``)},x=(_+v+y).replace(/,$/,``);return[`export const ${s} = `,`(`,x,x===``?`params?: IRequestFnParams`:`, params?: IRequestFnParams`,`)`,` => `,a,`${i?`<${o}.Response>`:``}`,`(`,`\`${p}${n}\`,`,b(),`'${f}'`,`);`].join(``)}responseHandle(e){let t=e[200];if(!t)return;let n=`content`in t?t:null,r=`$ref`in t?t:null;if(n===null&&r===null&&(this.contentBody.response=`type Response = unknown`,this.contentBody._response=`unknown`),r){let e=this.schemaResolver.referenceObjectParse(r);this.config.responseModelTransform&&(e=this.schemaResolver.transformResponseModel(e,this.config.responseModelTransform)),this.contentBody.response=`type Response = ${e}`,this.contentBody._response=e}if(n){let e=this.schemaResolver.responseObjectParse(n);if(this.config.responseModelTransform&&(e=this.schemaResolver.transformResponseModel(e,this.config.responseModelTransform)),Array.isArray(e)){if(e.length===1&&e[0]===`unknown`)this.contentBody.response=`type Response = ${e.join(`
4
+ `).forEach(e=>{n.push(`${t} * ${e}`)}):n.push(`${t} * ${e}`)}),n.push(`${t} */`))),n}parametersItemHandle(e,t,r,i){let a=this.getDoubleIndentation(),o=`$ref`in e?e:null,s=`name`in e?e:null;if(o?.$ref&&o.$ref.startsWith(`#/components/parameters/`)&&this.parameters){let e=o.$ref.replace(`#/components/parameters/`,``),n=this.parameters[e];this.parametersItemHandle(n,t,r,i)}if(s){if(!s.schema){console.warn(`Parameter "${s.name}" has no schema defined, skipping...`);return}let e=this.schemaResolver.main(s.schema);if(!e||typeof e!=`string`){console.warn(`Failed to parse schema for parameter "${s.name}", got:`,e);return}if(s.in===`path`)this.generateParamComment(s,a).forEach(e=>t.push(e)),t.push(`${a}type ${s.name} = ${e};`),this.contentBody.payload._path?this.contentBody.payload._path[s.name]=e:this.contentBody.payload._path={[s.name]:e};else if(s.in===`query`){this.generateParamComment(s,a).forEach(e=>r.push(e));let t=s.required===!0?``:`?`,i=n.formatPropertyName(s.name);r.push(`${a}${i}${t}: ${e};`),this.contentBody.payload._query?this.contentBody.payload._query[s.name]=e:this.contentBody.payload._query={[s.name]:e}}else if(s.in===`header`){this.generateParamComment(s,a).forEach(e=>i.push(e));let t=s.required===!0?``:`?`,r=n.formatPropertyName(s.name);i.push(`${a}${r}${t}: ${e};`),this.contentBody.payload._header?this.contentBody.payload._header[s.name]=e:this.contentBody.payload._header={[s.name]:e}}else s.in===`cookie`?console.info(`Cookie parameter "${s.name}" detected but not added to type definition (cookies are typically handled separately)`):console.warn(`Unknown parameter location "${s.in}" for parameter "${s.name}"`)}}requestParametersParse(e){let t=this.getIndentation(),n=[],r=[],i=[];e?.map(e=>this.parametersItemHandle(e,n,r,i)),n.length!==0&&(n.unshift(`${t}namespace Path {`),n.push(`${t}}`)),r.length!==0&&(r.unshift(`${t}interface Query {`),r.push(`${t}}`)),i.length!==0&&(i.unshift(`${t}interface Header {`),i.push(`${t}}`)),this.contentBody.payload.path=n,this.contentBody.payload.query=r,this.contentBody.payload.header=i}requestBodyObjectParse(e){let t=this.getIndentation(),{schema:n}=Object.values(e.content)[0]||{schema:null};if(n){let e=n?.type,r=`$ref`in n?n:null,i=e===`array`?n:null,a=e&&this.nonArrayType.includes(e)?n:null;if(r)return`${t}type Body = ${this.schemaResolver.referenceObjectParse(r)}`;if(i)return`${t}type Body = ${this.schemaResolver.arraySchemaObjectParse(i)}`;if(a){let e=this.schemaResolver.nonArraySchemaObjectParse(a);return Array.isArray(e)?e.length===0?[`${t}type Body = ${a.type};`]:[`${t}interface Body {`,...e.map(e=>e.replace(/: string;/,`: File;`)),`}`]:[`${t}type Body = ${e}`]}}}requestBodyParse(e){if(!e)return`{}`;let t=`$ref`in e?e:null,n=`content`in e?e:null;if(t){let e=this.schemaResolver.referenceObjectParse(t);return`${this.getIndentation()}type Body = ${e}`}return n&&Object.keys(e).length!==0?this.requestBodyObjectParse(n):`{}`}normalizemodulePrefix(e){if(!e||e.trim()===``)return``;let t=e.trim();return t=t.replace(/\/+$/g,``),t.startsWith(`/`)||(t=`/`+t),t}apiRequestItemHandle(e){let{payload:t,requestPath:n,_response:i,method:a,typeName:o,apiName:s,contentType:c}=e,{_path:l,_query:u,body:d}=t,f=e.dataLevel??this.config.dataLevel??`serve`,p=this.normalizemodulePrefix(this.config.modulePrefix),m=()=>{let e=[],t=Object.keys(l??{}).sort();for(let n of t)e.push(`${n}: ${o}.Path.${n}`);let n=e.join(e.length>1?`,`:``);return n===``?n:n+`,`},h=()=>{let e=u?`query: ${o}.Query,`:``;return e===``?``:`${e}`},g=()=>{let e=d.length>0?`body: ${o}.Body,`:``;return e===``?``:`${e}`},_=m(),v=h(),y=g(),b=()=>{let e=r.SUPPORTED_REQUEST_UPLOAD_TYPES.includes(c)?`headers: { 'Content-Type': '${c}' }`:void 0;return[`{`,e?`${e},`:``,`...params, `,v===``?``:`query,`,y===``?``:`body,`,`},`].join(``)},x=(_+v+y).replace(/,$/,``);return[`export const ${s} = `,`(`,x,x===``?`params?: IRequestFnParams`:`, params?: IRequestFnParams`,`)`,` => `,a,`${i?`<${o}.Response>`:``}`,`(`,`\`${p}${n}\`,`,b(),`'${f}'`,`);`].join(``)}responseHandle(e){let t=e[200];if(!t)return;let n=`content`in t?t:null,r=`$ref`in t?t:null;if(n===null&&r===null&&(this.contentBody.response=`type Response = unknown`,this.contentBody._response=`unknown`),r){let e=this.schemaResolver.referenceObjectParse(r);this.config.responseModelTransform&&(e=this.schemaResolver.transformResponseModel(e,this.config.responseModelTransform)),this.contentBody.response=`type Response = ${e}`,this.contentBody._response=e}if(n){let e=this.schemaResolver.responseObjectParse(n);if(this.config.responseModelTransform&&(e=this.schemaResolver.transformResponseModel(e,this.config.responseModelTransform)),Array.isArray(e)){if(e.length===1&&e[0]===`unknown`)this.contentBody.response=`type Response = ${e.join(`
5
5
  `)};`;else{let t=this.config.formatting?.lineEnding,n=this.config.formatting?.indentation;this.contentBody.response=`interface Response {${t}${e.join(`
6
6
  `)}${t}${n}};`}this.contentBody._response=`${e.join(`
7
7
  `)}`}else this.contentBody.response=`type Response = ${e}`,this.contentBody._response=`${e}`}}requestHandle(e){if(e.parameters&&this.requestParametersParse(e.parameters),e.requestBody){let t=this.requestBodyParse(e.requestBody);if(Array.isArray(t))this.contentBody.payload.body=t;else if(t){let e=t?.split(`
8
- `)||[];this.contentBody.payload.body=e}}}parsePathItemObject(e,t,n){if(!e)return;let i=Object.keys(e).sort();for(let o of i){let i=e[o];if(i){let e;if(this.config.includeInterface&&this.config.includeInterface.length>0){let n=this.config.includeInterface?.find(e=>t===e.path&&e.method===o);if(!n)return;e=n}else if(this.config.excludeInterface&&this.config.excludeInterface.length>0&&this.config.excludeInterface?.find(e=>t===e.path&&e.method===o))return;let s=o.toUpperCase(),c=t+`|`+s,{apiName:l,typeName:u,fileName:d,path:f}=a.convertEndpointString(c,this.config),p=i.requestBody&&`content`in i.requestBody&&i.requestBody.content,m=typeof p==`object`?Object.keys(p)[0]:`application/json`;this.contentBody={payload:{path:[],query:[],header:[],body:[]},response:``,_response:``,fileName:d,method:s,typeName:u,requestPath:f,apiName:l,summary:i.summary,deprecated:i.deprecated??!1,contentType:r.SUPPORTED_REQUEST_TYPES_ALL.includes(m)?m:`application/json`,dataLevel:e?.dataLevel},this.requestHandle(i),this.responseHandle(i.responses),i.summary&&n.push([`/**`,`
9
- `,i.deprecated?` * @deprecated ${i.summary}`:` * ${i.summary}`,`
10
- `,` */`].join(``));let h=this.apiRequestItemHandle(this.contentBody);n.push(h,``),this.Map.has(c)||this.Map.set(c,JSON.parse(JSON.stringify(this.contentBody)))}}}async parseData(){let e=Object.keys(this.pathsObject).sort();for(let t of e){let e=this.pathsObject[t];e&&this.parsePathItemObject(e,t,this.apiListFileContent)}return this.Map}async writeFile(){await this.writer.write(this.Map,this.apiListFileContent,[]),this.Map=new Map,this.errors.length>0&&e.log.warning(`Completed with ${this.errors.length} errors`)}async handle(){try{await this.parseData(),await this.writeFile()}catch(e){if(this.handleError({type:`SCHEMA`,message:`Failed to handle schema`,details:e}),this.config.errorHandling?.throwOnError)throw e}}},l=c;exports.default=l;
8
+ `)||[];this.contentBody.payload.body=e}}}computeAllowedInterfaceKeys(){let e=[],t=Object.keys(this.pathsObject).sort();for(let n of t){let t=this.pathsObject[n];if(!t)continue;let r=Object.keys(t).sort();for(let i of r){let r=t[i];if(!r||typeof r!=`object`||!Object.values(s).includes(i))continue;let a=`${n}|${String(i).toUpperCase()}`,o=Array.isArray(r.tags)?r.tags:[];e.push({key:a,pathKey:n,method:i,tags:o})}}let n;n=this.config.excludeTags&&this.config.excludeTags.length>0?new Set(e.filter(e=>!e.tags.some(e=>this.config.excludeTags.includes(e))).map(e=>e.key)):new Set(e.map(e=>e.key));let r;if(this.config.excludeInterface&&this.config.excludeInterface.length>0){let e=new Set(this.config.excludeInterface.map(e=>`${e.path}|${e.method.toUpperCase()}`));r=new Set([...n].filter(t=>!e.has(t)))}else r=new Set(n);let i;i=this.config.includeTags&&this.config.includeTags.length>0?new Set(e.filter(e=>r.has(e.key)&&e.tags.some(e=>this.config.includeTags.includes(e))).map(e=>e.key)):new Set;let a;if(this.config.includeInterface&&this.config.includeInterface.length>0){let e=new Set(this.config.includeInterface.map(e=>`${e.path}|${e.method.toUpperCase()}`));a=new Set([...r].filter(t=>e.has(t)))}else a=new Set;return i.size===0&&a.size===0?new Set(r):new Set([...i,...a])}parsePathItemObject(e,t,n){if(!e)return;let a=Object.keys(e).sort();for(let o of a){let a=e[o];if(a){let e=o.toUpperCase(),s=t+`|`+e;if(!this.allowedInterfaceKeys.has(s))continue;let c=this.config.includeInterface?.find(e=>t===e.path&&e.method===o),{apiName:l,typeName:u,fileName:d,path:f}=i.convertEndpointString(s,this.config),p=a.requestBody&&`content`in a.requestBody&&a.requestBody.content,m=typeof p==`object`?Object.keys(p)[0]:`application/json`;this.contentBody={payload:{path:[],query:[],header:[],body:[]},response:``,_response:``,fileName:d,method:e,typeName:u,requestPath:f,apiName:l,summary:a.summary,deprecated:a.deprecated??!1,contentType:r.SUPPORTED_REQUEST_TYPES_ALL.includes(m)?m:`application/json`,dataLevel:c?.dataLevel},this.requestHandle(a),this.responseHandle(a.responses),a.summary&&n.push([`/**`,`
9
+ `,a.deprecated?` * @deprecated ${a.summary}`:` * ${a.summary}`,`
10
+ `,` */`].join(``));let h=this.apiRequestItemHandle(this.contentBody);if(n.push(h,``),!this.Map.has(s)){let{payload:e}=this.contentBody,t={...this.contentBody,payload:{...e,path:[...e.path],query:[...e.query],header:[...e.header],body:[...e.body]}};this.Map.set(s,t)}}}}parseData(){this.allowedInterfaceKeys=this.computeAllowedInterfaceKeys();let e=Object.keys(this.pathsObject).sort();for(let t of e){let e=this.pathsObject[t];e&&this.parsePathItemObject(e,t,this.apiListFileContent)}return this.Map}async writeFile(){await this.writer.write(this.Map,this.apiListFileContent,[]),this.Map=new Map,this.errors.length>0&&e.log.warning(`Completed with ${this.errors.length} errors`)}async handle(){try{this.parseData(),await this.writeFile()}catch(e){if(this.handleError({type:`SCHEMA`,message:`Failed to handle schema`,details:e}),this.config.errorHandling?.throwOnError)throw e}}};exports.default=l;
@@ -1 +1 @@
1
- const e=`_`;function t(e){let t=e.replace(/^[0-9]+/,``);return t?(t=t.replace(/[^a-zA-Z0-9_.-]/g,``),t):`num`+e}function n(e,n=!1){let r=t(e).split(/[-_.]+/).filter(e=>e.length>0);return r.length===0?``:r.map((e,t)=>t===0&&n?e.toLowerCase():e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(``)}function r(e){let n=t(e).split(/[-_.]+/).filter(e=>e.length>0);return n.length===0?``:n.map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(``)}function i(e){return e?e.replace(/^\/+|\/+$/g,``):``}function a(e,t){let n=t.replace(/^\/+/,``),r=i(e.publicPrefix);if(r&&n.startsWith(r+`/`))n=n.slice(r.length+1);else if(r&&n===r)n=``;else if(r&&n.startsWith(r)){let e=n.slice(r.length);(e.startsWith(`/`)||e===``)&&(n=e.replace(/^\/+/,``))}return n}function o(e){let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=e[r+1];i.type===`normal`&&a&&a.type===`param`&&t(i.normalized).toLowerCase().replace(/[-_.]/g,``)===t(a.normalized).toLowerCase().replace(/[-_.]/g,``)||n.push(i)}return n}function s(e,i){let s=e;e.startsWith(`/`)||(s=`/`+e);let[c,l]=s.split(`|`),u=a(i,c),d=u?u.split(`/`).filter(e=>e):[],f=o(d.map(e=>e.startsWith(`{`)&&e.endsWith(`}`)?{type:`param`,original:e,normalized:e.slice(1,-1)}:{type:`normal`,original:e,normalized:e})),p=i.parameterSeparator||`_`,m=``,h=[],g=e=>{if(h.length>0){let t=h.map((t,r)=>n(t,e&&r===0)).join(``);m+=(m&&h.length>0?p:``)+t,h=[]}};for(let e=0;e<f.length;e++){let n=f[e];if(n.type===`normal`)h.push(n.normalized);else{g(m===``);let e=t(n.normalized);m+=(m?p:``)+e}}g(m===``);let _=``;h=[];let v=()=>{if(h.length>0){let e=h.map(e=>r(e)).join(``);_+=(_&&h.length>0?p:``)+e,h=[]}};for(let e=0;e<f.length;e++){let t=f[e];if(t.type===`normal`)h.push(t.normalized);else{v();let e=r(t.normalized);_+=(_?p:``)+e}}v();let y=``;d.length>0?(y=d.map(e=>e.replace(/[{}]/g,``)).join(`-`),y=`${y}-${l}`.toLowerCase()):y=`${l}`.toLowerCase();let b=`/`+u;return u||(b=`/`),b=b.replace(/\{(\w+)\}/g,(e,t)=>`\${${t}}`),{apiName:m?`${m}_${l}`:l,fileName:y,typeName:_?`${_}_${l}`:l,path:b}}exports.convertEndpointString=s;
1
+ function e(e){let t=e.replace(/^[0-9]+/,``);return t?(t=t.replace(/[^a-zA-Z0-9_.-]/g,``),t):`num`+e}function t(t,n=!1){let r=e(t).split(/[-_.]+/).filter(e=>e.length>0);return r.length===0?``:r.map((e,t)=>t===0&&n?e.toLowerCase():e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(``)}function n(t){let n=e(t).split(/[-_.]+/).filter(e=>e.length>0);return n.length===0?``:n.map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(``)}function r(e){return e?e.replace(/^\/+|\/+$/g,``):``}function i(e,t){let n=t.replace(/^\/+/,``),i=r(e.publicPrefix);if(i&&n.startsWith(i+`/`))n=n.slice(i.length+1);else if(i&&n===i)n=``;else if(i&&n.startsWith(i)){let e=n.slice(i.length);(e.startsWith(`/`)||e===``)&&(n=e.replace(/^\/+/,``))}return n}function a(t){let n=[];for(let r=0;r<t.length;r++){let i=t[r],a=t[r+1];i.type===`normal`&&a?.type===`param`&&e(i.normalized).toLowerCase().replace(/[-_.]/g,``)===e(a.normalized).toLowerCase().replace(/[-_.]/g,``)||n.push(i)}return n}function o(r,o){let s=r;r.startsWith(`/`)||(s=`/`+r);let[c,l]=s.split(`|`),u=i(o,c),d=u?u.split(`/`).filter(e=>e):[],f=a(d.map(e=>e.startsWith(`{`)&&e.endsWith(`}`)?{type:`param`,original:e,normalized:e.slice(1,-1)}:{type:`normal`,original:e,normalized:e})),p=o.parameterSeparator??`_`,m=``,h=[],g=e=>{if(h.length>0){let n=h.map((n,r)=>t(n,e&&r===0)).join(``);m+=(m&&h.length>0?p:``)+n,h=[]}};for(let t of f)if(t.type===`normal`)h.push(t.normalized);else{g(m===``);let n=e(t.normalized);m+=(m?p:``)+n}g(m===``);let _=``;h=[];let v=()=>{if(h.length>0){let e=h.map(e=>n(e)).join(``);_+=(_&&h.length>0?p:``)+e,h=[]}};for(let e of f)if(e.type===`normal`)h.push(e.normalized);else{v();let t=n(e.normalized);_+=(_?p:``)+t}v();let y=``;d.length>0?(y=d.map(e=>e.replace(/[{}]/g,``)).join(`-`),y=`${y}-${l}`.toLowerCase()):y=`${l}`.toLowerCase();let b=`/`+u;return u||(b=`/`),b=b.replace(/\{(\w+)\}/g,(e,t)=>`\${${t}}`),{apiName:m?`${m}_${l}`:l,fileName:y,typeName:_?`${_}_${l}`:l,path:b}}exports.convertEndpointString=o;
@@ -1,3 +1,3 @@
1
1
  const e=require(`../shared/format.cjs`),t=require(`../shared/naming.cjs`),n=require(`../shared/schema-utils.cjs`),r=require(`../shared/http.cjs`),i={schemas:`#/components/schemas/`,parameters:`#/components/parameters/`,definitions:`#/definitions/`};var a=class{config;schemas;parameters;referenceCache=new Map;handleError;constructor(e,t,n,r){this.config=e,this.schemas=t??{},this.parameters=n??{},this.handleError=r}stringifySchemaResult(t){if(Array.isArray(t)){let n=e.getLineEnding(this.config),r=e.getIndentation(this.config);return`{${n}${t.join(n)}${n}${r}}`}return t}handleComplexType(e){try{return e.oneOf?e.oneOf.map(e=>this.stringifySchemaResult(this.main(e))).join(` | `):e.allOf?e.allOf.map(e=>this.stringifySchemaResult(this.main(e))).join(` & `):e.anyOf?e.anyOf.map(e=>this.stringifySchemaResult(this.main(e))).join(` | `):e.enum?e.type===`number`||e.type===`integer`?e.enum.join(` | `):e.enum.map(e=>`'${e}'`).join(` | `):`unknown`}catch(e){return this.handleError({type:`SCHEMA`,message:`Failed to handle complex type`,details:e}),`unknown`}}referenceObjectParse(e){try{let n=e.$ref,r=this.referenceCache.get(n);if(r)return r;let a=n;n.startsWith(i.schemas)&&(a=n.replace(i.schemas,``)),n.startsWith(i.parameters)&&(a=n.replace(i.parameters,``)),n.startsWith(i.definitions)&&(a=n.replace(i.definitions,``));let o=t.typeNameToFileName(a),s=this.schemas?.[a],c=!1;if(s&&!(`$ref`in s)){let e=`properties`in s||s.type===`object`,t=s.type===`array`||`items`in s;`enum`in s&&Array.isArray(s.enum)&&!e&&!t&&(c=!0)}else c=/Enum$/i.test(a);let l=c?t.getEnumTypeName(this.config,a):a,u=c?`import('${this.config.importEnumPath}/${o}').${l}`:`import('../models/${o}').${a}`;return this.referenceCache.set(n,u),u}catch(e){return this.handleError({type:`REFERENCE`,message:`Failed to parse reference object`,details:e}),`unknown`}}nonArraySchemaObjectParse(e){if(!e)return`unknown`;if(e.format===`binary`||e.type===`string`&&e.format===`binary`)return`File`;switch(e.type){case`boolean`:return`boolean`;case`integer`:case`number`:return`number`;case`object`:return this.propertiesParse(e.properties);case`string`:return e.format===`binary`?`File`:`string`;default:return`unknown`}}arraySchemaObjectParse(e){if(e.type!==`array`)return``;let{items:t}=e,n=`$ref`in t?t:null,r=t;if(n)return`Array<${this.referenceObjectParse(n)}>`;if(r){let e=this.main(t);return Array.isArray(e)?`Array<{${e.join(`
2
- `)}}>`:`Array<${e}>`}return``}propertiesParse(e){return n.formatObjectProperties(e,this.config,e=>this.main(e))}transformResponseModel(t,n){if(!n)return t;try{switch(n.type){case`unwrap`:{let e=n.dataField||`data`;if(Array.isArray(t))return this.handleError({type:`RESPONSE`,message:`Response model unwrap is not supported for inline object response types`}),t;let r=t.match(/^import\('([^']+)'\)\.(\w+)$/);if(r){let[,t,n]=r,i=this.schemas?.[n];if(i&&!(`$ref`in i)){let t=i;if(t.properties&&t.properties[e]){let n=t.properties[e];return this.main(n)}else this.handleError({type:`RESPONSE`,message:`Field "${e}" not found in response type "${n}"`})}}return t}case`wrap`:{if(!n.wrapperFields)return this.handleError({type:`RESPONSE`,message:`wrapperFields is required when using wrap transform`}),t;let r=e.getIndentation(this.config),i=r+r,a=[],o=n.dataField||`data`;for(let[e,r]of Object.entries(n.wrapperFields))if(e===o)if(Array.isArray(t)){let n=t.join(`
2
+ `)}}>`:`Array<${e}>`}return``}propertiesParse(e){return n.formatObjectProperties(e,this.config,e=>this.main(e))}transformResponseModel(t,n){if(!n)return t;try{switch(n.type){case`unwrap`:{let e=n.dataField??`data`;if(Array.isArray(t))return this.handleError({type:`RESPONSE`,message:`Response model unwrap is not supported for inline object response types`}),t;let r=/^import\('([^']+)'\)\.(\w+)$/.exec(t);if(r){let[,t,n]=r,i=this.schemas?.[n];if(i&&!(`$ref`in i)){let t=i;if(t.properties?.[e]){let n=t.properties[e];return this.main(n)}else this.handleError({type:`RESPONSE`,message:`Field "${e}" not found in response type "${n}"`})}}return t}case`wrap`:{if(!n.wrapperFields)return this.handleError({type:`RESPONSE`,message:`wrapperFields is required when using wrap transform`}),t;let r=e.getIndentation(this.config),i=r+r,a=[],o=n.dataField??`data`;for(let[e,r]of Object.entries(n.wrapperFields))if(e===o)if(Array.isArray(t)){let n=t.join(`
3
3
  `);a.push(`${i}${e}?: {${n}\n${i}};`)}else a.push(`${i}${e}?: ${t};`);else a.push(`${i}${e}?: ${r};`);return a}case`replace`:return n.wrapperType?n.wrapperType:(this.handleError({type:`RESPONSE`,message:`wrapperType is required when using replace transform`}),t);default:return t}}catch(e){return this.handleError({type:`RESPONSE`,message:`Failed to transform response model`,details:e}),t}}responseObjectParse(e){try{let t=e.content;if(!t)return``;let n;for(let e of r.SUPPORTED_REQUEST_TYPES_ALL)if(t[e]?.schema){n=t[e].schema;break}return n?this.main(n):``}catch(e){return this.handleError({type:`RESPONSE`,message:`Failed to parse response object`,details:e}),``}}main(e){try{if(!e)return`unknown`;if(`oneOf`in e||`allOf`in e||`anyOf`in e||`enum`in e)return this.handleComplexType(e);if(`$ref`in e)return this.referenceObjectParse(e);let t=e,r=t.type,i=n.nullableSuffix(t.nullable),a=n.applyTypeMapping(this.config,t);if(a)return a;if(r===`array`&&t.items)return n.stringifyArrayType(this.main(t.items),this.config);if(r===`object`||typeof t==`object`){if(t.properties){let e=this.propertiesParse(t.properties);return e.length?e:[`unknown`]}if(t.additionalProperties===!0)return`Record<string, unknown>`+i;if(typeof t.additionalProperties==`object`)return`Record<string, ${this.main(t.additionalProperties)}>`+i}return`unknown`}catch(e){return this.handleError({type:`SCHEMA`,message:`Failed to parse schema`,details:e}),`unknown`}}};exports.SchemaResolver=a;
@@ -1,4 +1,4 @@
1
- const e=require(`../../utils/index.cjs`),t=require(`../shared/format.cjs`);var n=class{config;constructor(e){this.config=e}async write(n,r,i){let a=[],o=this.config.saveTypeFolderPath,s=(n,r)=>new Promise((a,s)=>{try{let{payload:c,response:l,fileName:u}=r,[,d]=n.split(`|`);!i.includes(d)&&i.push(d);let f=[`declare namespace ${r.typeName} {`,...c.path,...c.query,...c.header,...c.body,`${t.getIndentation(this.config)}${l}`,`}`],p=`${o}/connectors/${u}.d.ts`;e.writeFileRecursive(p,f.join(`
2
- `)).then(()=>{e.log.info(`${p.padEnd(80)} - Write done!`),a(1)}).catch(e=>{s(e)})}catch(e){s(e)}}),c=Array.from(n.entries()).sort((e,t)=>e[0].localeCompare(t[0]));for(let[e,t]of c)a.push(s(e,t));await Promise.all(a),i.sort(),r.unshift(`import { ${i.join(`, `)} } from '${this.config.requestMethodsImportPath||`./api`}';`,`
3
- `);let l=this.config.apiListFileName||`index.ts`,u=`${this.config.saveApiListFolderPath}/${l}`;await e.clearDir(u),await e.writeFileRecursive(u,r.join(`
1
+ const e=require(`../../utils/index.cjs`),t=require(`../shared/format.cjs`);var n=class{config;constructor(e){this.config=e}async write(n,r,i){let a=[],o=this.config.saveTypeFolderPath,s=(n,r)=>new Promise((a,s)=>{try{let{payload:c,response:l,fileName:u}=r,[,d]=n.split(`|`);i.includes(d)||i.push(d);let f=[`declare namespace ${r.typeName} {`,...c.path,...c.query,...c.header,...c.body,`${t.getIndentation(this.config)}${l}`,`}`],p=`${o}/connectors/${u}.d.ts`;e.writeFileRecursive(p,f.join(`
2
+ `)).then(()=>{e.log.info(`${p.padEnd(80)} - Write done!`),a(1)}).catch(e=>{s(Error(String(e)))})}catch(e){s(Error(String(e)))}}),c=Array.from(n.entries()).sort((e,t)=>e[0].localeCompare(t[0]));for(let[e,t]of c)a.push(s(e,t));await Promise.all(a),i.sort(),r.unshift(`import { ${i.join(`, `)} } from '${this.config.requestMethodsImportPath||`./api`}';`,`
3
+ `);let l=this.config.apiListFileName??`index.ts`,u=`${this.config.saveApiListFolderPath}/${l}`;await e.clearDir(u),await e.writeFileRecursive(u,r.join(`
4
4
  `)),e.log.success(`Path parse & write done!`)}};exports.PathWriter=n;
@@ -1,4 +1,3 @@
1
- const e=` `,t=`
2
- `;function n(e){let t={indentation:e.formatting?.indentation??` `,lineEnding:e.formatting?.lineEnding??`
3
- `};return{...e,formatting:t}}function r(e){return e.formatting?.indentation??` `}function i(e){return e.formatting?.lineEnding??`
4
- `}exports.applyFormattingDefaults=n,exports.getIndentation=r,exports.getLineEnding=i;
1
+ function e(e){let t={indentation:e.formatting?.indentation??` `,lineEnding:e.formatting?.lineEnding??`
2
+ `};return{...e,formatting:t}}function t(e){return e.formatting?.indentation??` `}function n(e){return e.formatting?.lineEnding??`
3
+ `}exports.applyFormattingDefaults=e,exports.getIndentation=t,exports.getLineEnding=n;
@@ -1 +1 @@
1
- const e=require(`../_virtual/rolldown_runtime.cjs`);let t=require(`fs`);t=e.__toESM(t);let n=require(`chalk`);n=e.__toESM(n);let r=require(`ora`);r=e.__toESM(r);let i=require(`path`);i=e.__toESM(i);let a=require(`shelljs`);const o=function(e,n){return new Promise((r,i)=>{try{let a=e.substring(0,e.lastIndexOf(`/`));t.default.mkdir(a,{recursive:!0},a=>{if(a)return i(!1);t.default.writeFile(e,n,function(e){if(e)return i(!1);r(!0)})})}catch(e){console.error(e),i(e)}})},s={info:e=>console.log(n.default.dim(e)),error:e=>console.log(n.default.red(`โŒ ${e}`)),success:e=>console.log(n.default.green(`๐Ÿฅ‚ ${e}`)),warning:e=>console.log(n.default.yellow(`โ—๏ธ ${e}`)),load:e=>console.log(n.default.dim(`๐ŸŒ ${e}`))},c=(0,r.default)(),l={stop:()=>c.stop(),error:e=>c.fail(`โŒ ${n.default.red(e)}`),start:e=>{c.text=n.default.blue(e),c.start()},success:e=>{c.stopAndPersist({symbol:n.default.green(`โœ”`),text:n.default.green(e)})}};function u(e){return new Promise((t,n)=>{try{(0,a.exec)(`rm -rf ${e}`),t(!0)}catch(e){console.error(e),n(!1)}})}function d(e,n=[]){return new Promise((r,i)=>{try{if(!t.default.existsSync(e)){r(!0);return}t.default.readdirSync(e).forEach(r=>{if(n.includes(r))return;let i=`${e}/${r}`;t.default.statSync(i).isDirectory()?(0,a.exec)(`rm -rf ${i}`):t.default.unlinkSync(i)}),r(!0)}catch(e){console.error(e),i(e)}})}function f(e){if(typeof e!=`string`)return!1;try{return JSON.parse(e),!0}catch{return!1}}function p(e,t=!0){try{let n=require(e);return t&&setTimeout(()=>{delete require.cache[require.resolve(e)]},200),n}catch(e){throw Error(e instanceof Error?e.message:String(e))}}exports.clearDir=u,exports.clearDirExcept=d,exports.isValidJSON=f,exports.log=s,exports.requireModule=p,exports.spinner=l,exports.writeFileRecursive=o;
1
+ const e=require(`../_virtual/rolldown_runtime.cjs`);let t=require(`fs`);t=e.__toESM(t);let n=require(`path`);n=e.__toESM(n);let r=require(`chalk`);r=e.__toESM(r);let i=require(`module`),a=require(`ora`);a=e.__toESM(a);let o=require(`shelljs`);const s=function(e,n){return new Promise((r,i)=>{try{let a=e.substring(0,e.lastIndexOf(`/`));t.default.mkdir(a,{recursive:!0},a=>{if(a)return i(Error(`ๅˆ›ๅปบ็›ฎๅฝ•ๅคฑ่ดฅ`));t.default.writeFile(e,n,function(e){if(e)return i(Error(`ๅ†™ๅ…ฅๆ–‡ไปถๅคฑ่ดฅ`));r(!0)})})}catch(e){console.error(e),i(Error(String(e)))}})},c={info:e=>console.log(r.default.dim(e)),error:e=>console.log(r.default.red(`โŒ ${e}`)),success:e=>console.log(r.default.green(`๐Ÿฅ‚ ${e}`)),warning:e=>console.log(r.default.yellow(`โ—๏ธ ${e}`)),load:e=>console.log(r.default.dim(`๐ŸŒ ${e}`))},l=(0,a.default)(),u={stop:()=>l.stop(),error:e=>l.fail(`โŒ ${r.default.red(e)}`),start:e=>{l.text=r.default.blue(e),l.start()},success:e=>{l.stopAndPersist({symbol:r.default.green(`โœ”`),text:r.default.green(e)})}};function d(e){return new Promise((t,n)=>{try{(0,o.exec)(`rm -rf ${e}`),t(!0)}catch(e){console.error(e),n(Error(String(e)))}})}function f(e,n=[]){return new Promise((r,i)=>{try{if(!t.default.existsSync(e)){r(!0);return}t.default.readdirSync(e).forEach(r=>{if(n.includes(r))return;let i=`${e}/${r}`;t.default.statSync(i).isDirectory()?(0,o.exec)(`rm -rf ${i}`):t.default.unlinkSync(i)}),r(!0)}catch(e){console.error(e),i(Error(String(e)))}})}function p(e){if(typeof e!=`string`)return!1;try{return JSON.parse(e),!0}catch{return!1}}function m(e,t=!0){let n=(0,i.createRequire)(__filename);try{let r=n(e);if(t){let t=setTimeout(()=>{delete n.cache[n.resolve(e)],clearTimeout(t)},200)}return r}catch(e){throw Error(e instanceof Error?e.message:String(e))}}exports.clearDir=d,exports.clearDirExcept=f,exports.isValidJSON=p,exports.log=c,exports.requireModule=m,exports.spinner=u,exports.writeFileRecursive=s;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "anl",
3
- "version": "26.127.0",
3
+ "version": "26.201.0",
4
4
  "description": "FE command line tool",
5
5
  "main": "bin/an-cli.js",
6
6
  "publishConfig": {
@@ -22,19 +22,29 @@
22
22
  "devDependencies": {
23
23
  "@commitlint/cli": "^17.4.3",
24
24
  "@commitlint/config-conventional": "^17.4.3",
25
+ "@eslint/js": "^9.39.2",
25
26
  "@types/inquirer": "^9.0.7",
27
+ "@types/node": "^24.10.9",
26
28
  "@types/shelljs": "^0.8.11",
27
- "@typescript-eslint/eslint-plugin": "^5.52.0",
28
- "@typescript-eslint/parser": "^5.52.0",
29
29
  "cross-env": "^7.0.3",
30
30
  "docsify-cli": "^4.4.4",
31
- "eslint": "^8.7.0",
31
+ "eslint": "^9.39.1",
32
+ "eslint-plugin-header": "^3.1.1",
33
+ "eslint-plugin-import": "^2.32.0",
34
+ "eslint-plugin-no-function-declare-after-return": "^1.1.0",
35
+ "eslint-plugin-prettier": "^5.5.4",
36
+ "eslint-plugin-simple-import-sort": "^12.1.1",
37
+ "eslint-plugin-sort-keys-fix": "^1.1.2",
38
+ "eslint-plugin-unused-imports": "^4.3.0",
39
+ "globals": "^17.2.0",
32
40
  "husky": "^8.0.3",
33
41
  "openapi-types": "^12.1.3",
34
- "prettier": "^3.3.2",
42
+ "prettier": "^3.7.4",
35
43
  "rimraf": "^5.0.7",
36
- "tsdown": "^0.20.0-beta.3",
37
- "typescript": "^5.9.3"
44
+ "ts-node": "^10.9.2",
45
+ "tsdown": "^0.20.1",
46
+ "typescript": "^5.9.3",
47
+ "typescript-eslint": "^8.54.0"
38
48
  },
39
49
  "dependencies": {
40
50
  "app-root-path": "^3.1.0",
@@ -84,5 +94,6 @@
84
94
  "type": "git",
85
95
  "url": "git+https://github.com/bianliuzhu/an-cli.git"
86
96
  },
97
+ "homepage": "https://bianliuzhu.github.io/an-cli/#/",
87
98
  "type": "commonjs"
88
99
  }