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.
- package/lib/git-local-config/.commit-type.cjs +84 -84
- package/lib/git-local-config/.gitscripts/random-branch.bat +1 -1
- package/lib/git-local-config/.gitscripts/random-branch.sh +1 -1
- package/lib/git-local-config/index.cjs +1 -1
- package/lib/index.cjs +1 -1
- package/lib/package.cjs +1 -1
- package/lib/standard/const.cjs +2 -5
- package/lib/standard/install-commitlint.cjs +1 -1
- package/lib/standard/install-eslint.cjs +2 -2
- package/lib/standard/install-stylelint.cjs +2 -2
- package/lib/standard/lint-init.cjs +1 -1
- package/lib/standard/prettier.cjs +2 -2
- package/lib/standard/vscode.cjs +1 -1
- package/lib/swagger-codegen/components/enum-parser.cjs +2 -2
- package/lib/swagger-codegen/components/index.cjs +1 -1
- package/lib/swagger-codegen/components/schema-resolver.cjs +2 -2
- package/lib/swagger-codegen/components/writer.cjs +1 -1
- package/lib/swagger-codegen/get-data.cjs +1 -1
- package/lib/swagger-codegen/index.cjs +6 -6
- package/lib/swagger-codegen/path/index.cjs +5 -5
- package/lib/swagger-codegen/path/naming.cjs +1 -1
- package/lib/swagger-codegen/path/schema-resolver.cjs +1 -1
- package/lib/swagger-codegen/path/writer.cjs +3 -3
- package/lib/swagger-codegen/shared/format.cjs +3 -4
- package/lib/utils/index.cjs +1 -1
- package/package.json +18 -7
|
@@ -1,89 +1,89 @@
|
|
|
1
1
|
|
|
2
2
|
const types = {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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 };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const e=require(`../_virtual/rolldown_runtime.cjs`),t=require(`../utils/index.cjs`),n=require(`./utils.cjs`);let r=require(`
|
|
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(`./
|
|
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.
|
|
1
|
+
var e=`26.201.0`;Object.defineProperty(exports,`version`,{enumerable:!0,get:function(){return e}});
|
package/lib/standard/const.cjs
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
const e
|
|
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
|
-
}
|
|
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`);
|
|
2
|
-
`);
|
|
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`);
|
|
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
|
-
};`;
|
|
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-
|
|
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(`
|
|
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;
|
package/lib/standard/vscode.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
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}=
|
|
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:
|
|
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}}
|
|
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.
|
|
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
|
|
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(`
|
|
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
|
|
3
|
-
`),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(`$`,
|
|
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
|
|
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(`./
|
|
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
|
|
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}}}
|
|
9
|
-
`,
|
|
10
|
-
`,` */`].join(``));let h=this.apiRequestItemHandle(this.contentBody);n.push(h,``)
|
|
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
|
-
|
|
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
|
|
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(`|`)
|
|
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
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
`}
|
|
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;
|
package/lib/utils/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../_virtual/rolldown_runtime.cjs`);let t=require(`fs`);t=e.__toESM(t);let n=require(`
|
|
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.
|
|
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": "^
|
|
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.
|
|
42
|
+
"prettier": "^3.7.4",
|
|
35
43
|
"rimraf": "^5.0.7",
|
|
36
|
-
"
|
|
37
|
-
"
|
|
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
|
}
|