agmd 0.2.9 → 0.2.10

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/bin/agmd.js CHANGED
@@ -1,12 +1,13 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var z=Object.create;var T=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var Y=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var L=e=>T(e,"__esModule",{value:!0});var H=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var J=(e,n,s,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of U(n))!K.call(e,t)&&(s||t!=="default")&&T(e,t,{get:()=>n[t],enumerable:!(r=q(n,t))||r.enumerable});return e},O=(e,n)=>J(L(T(e!=null?z(Y(e)):{},"default",!n&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var E=H((Ie,G)=>{var N=Symbol("arg flag"),m=class extends Error{constructor(n,s){super(n);this.name="ArgError",this.code=s,Object.setPrototypeOf(this,m.prototype)}};function w(e,{argv:n=process.argv.slice(2),permissive:s=!1,stopAtPositional:r=!1}={}){if(!e)throw new m("argument specification object is required","ARG_CONFIG_NO_SPEC");let t={_:[]},u={},l={};for(let i of Object.keys(e)){if(!i)throw new m("argument key cannot be an empty string","ARG_CONFIG_EMPTY_KEY");if(i[0]!=="-")throw new m(`argument key must start with '-' but found: '${i}'`,"ARG_CONFIG_NONOPT_KEY");if(i.length===1)throw new m(`argument key must have a name; singular '-' keys are not allowed: ${i}`,"ARG_CONFIG_NONAME_KEY");if(typeof e[i]=="string"){u[i]=e[i];continue}let o=e[i],a=!1;if(Array.isArray(o)&&o.length===1&&typeof o[0]=="function"){let[f]=o;o=(p,h,g=[])=>(g.push(f(p,h,g[g.length-1])),g),a=f===Boolean||f[N]===!0}else if(typeof o=="function")a=o===Boolean||o[N]===!0;else throw new m(`type missing or not a function or valid array type: ${i}`,"ARG_CONFIG_VAD_TYPE");if(i[1]!=="-"&&i.length>2)throw new m(`short argument keys (with a single hyphen) must have only one character: ${i}`,"ARG_CONFIG_SHORTOPT_TOOLONG");l[i]=[o,a]}for(let i=0,o=n.length;i<o;i++){let a=n[i];if(r&&t._.length>0){t._=t._.concat(n.slice(i));break}if(a==="--"){t._=t._.concat(n.slice(i+1));break}if(a.length>1&&a[0]==="-"){let f=a[1]==="-"||a.length===2?[a]:a.slice(1).split("").map(p=>`-${p}`);for(let p=0;p<f.length;p++){let h=f[p],[g,_]=h[1]==="-"?h.split(/=(.*)/,2):[h,void 0],c=g;for(;c in u;)c=u[c];if(!(c in l))if(s){t._.push(h);continue}else throw new m(`unknown or unexpected option: ${g}`,"ARG_UNKNOWN_OPTION");let[b,I]=l[c];if(!I&&p+1<f.length)throw new m(`option requires argument (but was followed by another short argument): ${g}`,"ARG_MISSING_REQUIRED_SHORTARG");if(I)t[c]=b(!0,c,t[c]);else if(_===void 0){if(n.length<i+2||n[i+1].length>1&&n[i+1][0]==="-"&&!(n[i+1].match(/^-?\d*(\.(?=\d))?\d*$/)&&(b===Number||typeof BigInt!="undefined"&&b===BigInt))){let P=g===c?"":` (alias for ${c})`;throw new m(`option requires argument: ${g}${P}`,"ARG_MISSING_REQUIRED_LONGARG")}t[c]=b(n[i+1],c,t[c]),++i}else t[c]=b(_,c,t[c])}}else t._.push(a)}return t}w.flag=e=>(e[N]=!0,e);w.COUNT=w.flag((e,n,s)=>(s||0)+1);w.ArgError=m;G.exports=w});var k=O(require("path"));var y=O(require("fs")),x=O(require("path"));function Q(e){let n=y.default.readFileSync(e,"utf-8"),s=n.length,r=n.split(/[\n,]/g),t=r.length;return{note:r[0].indexOf("eslint")===-1&&(r[0].indexOf("-->")>-1||r[0].indexOf("*/")>-1||r[0].indexOf("//")>-1)?r[0]:"",size:s,rowSize:t}}function A(e,n=[],s=x.default.resolve("./"),r=0){let t=["img","styles","node_modules","LICENSE",".git",".github","dist",".husky",".vscode","readme-file.js","readme-md.js"],u=[".js",".vue",".ts"];e&&(t=e.ignore||t,u=e.include||u);let l=y.default.readdirSync(s).map(i=>{let o=x.default.join(s,i),a=y.default.lstatSync(o).isDirectory();return{name:i,isDir:a,level:r,note:""}}).sort((i,o)=>!i.isDir&&o.isDir?1:i.isDir&&!o.isDir?-1:(i.isDir&&o.isDir||!i.isDir&&!o.isDir,0));for(let i=0;i<l.length;i+=1){let o=l[i];if(t.findIndex(f=>f===o.name)===-1){let f=x.default.join(s,o.name);if(y.default.lstatSync(f).isDirectory())A(e,o.children=[],f,r+1),n.push(o);else{let h=f.lastIndexOf("."),g=f.substring(h);if(u.includes(g)){let _=Q(f);Object.assign(o,_),o.suffix=g,n.push(o)}}}}return n}function $(e,n){let s=n||[];return e.forEach((r,t)=>{let u=t===e.length-1;if(r.children){let l=v(r,u);s.push(l),$(r.children,s)}else{let l=v(r,u);s.push(l)}}),s}function v(e,n){let s="",t=`${"\u2502 ".repeat(e.level)}${n?"\u2514\u2500\u2500":"\u251C\u2500\u2500"} ${e.name}`;return e.isDir?s+=`${t}
3
- `:s+=`${t} ${e.note}
4
- `,s}function V(e,n){let s=x.default.resolve(__dirname,n),r="export default";y.default.writeFile(s,r+e,{encoding:"utf8"},t=>{console.error(t)})}function S(e){var n=/\d{1,3}(?=(\d{3})+$)/g;return(e+"").replace(n,"$&,")}function W(e){let{rowTotleNumber:n,sizeTotleNumber:s,coutObj:r}=e,t="",u=0;for(let i in r){let o=r[i];u+=o,t+=`The suffix is ${i} has ${o} files
5
- `}t+=`The totle has ${u} files
6
- `;let l=`Total number of file lines: ${S(n)},
7
- Total number of codes: ${S(s)}
8
- `;return l=t+l,l}function X(e){let n=0,s=0,r={};function t(u){u.forEach(l=>{l.children?t(l.children):(r.hasOwnProperty(l.suffix)||(r[l.suffix]=0),r[l.suffix]++,n+=l.rowSize,s+=l.size)})}return t(e),{rowTotleNumber:n,sizeTotleNumber:s,coutObj:r}}function j(e){console.log("\x1B[36m%s\x1B[0m","*** run location: ",x.default.resolve("./"));let n=A(e);V(JSON.stringify(n),__dirname+"\\readme-file.js");let s=X(n),r=W(s),u=$(n).join("")+`
9
- `;return u.length>0&&console.log("\x1B[36m%s\x1B[0m","*** Automatic generation completed ! "),console.log("\x1B[33m%s\x1B[0m:",r),u+r}function D(e,n){let s=x.default.resolve(__dirname,n);y.default.writeFile(s,e,{encoding:"utf8"},r=>{console.error(r)})}var B=O(E()),Z=e=>{let n=(0,B.default)({"--ignore":String,"--include":String,"--version":Boolean,"--help":Boolean,"-h":"--help","-i":"--ignore","-in":"--include","-v":"--version"},{argv:e.slice(2)});return{help:n["--help"],ignore:n["--ignore"],include:n["--include"],version:n["--version"]}},R=Z;var ee=`Usage: agmd--include str--ignore str
2
+ "use strict";var z=Object.create;var O=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var Y=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var L=e=>O(e,"__esModule",{value:!0});var H=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var Q=(e,n,s,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let i of U(n))!K.call(e,i)&&(s||i!=="default")&&O(e,i,{get:()=>n[i],enumerable:!(r=q(n,i))||r.enumerable});return e},T=(e,n)=>Q(L(O(e!=null?z(Y(e)):{},"default",!n&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var E=H((ke,G)=>{var N=Symbol("arg flag"),m=class extends Error{constructor(n,s){super(n);this.name="ArgError",this.code=s,Object.setPrototypeOf(this,m.prototype)}};function w(e,{argv:n=process.argv.slice(2),permissive:s=!1,stopAtPositional:r=!1}={}){if(!e)throw new m("argument specification object is required","ARG_CONFIG_NO_SPEC");let i={_:[]},u={},l={};for(let t of Object.keys(e)){if(!t)throw new m("argument key cannot be an empty string","ARG_CONFIG_EMPTY_KEY");if(t[0]!=="-")throw new m(`argument key must start with '-' but found: '${t}'`,"ARG_CONFIG_NONOPT_KEY");if(t.length===1)throw new m(`argument key must have a name; singular '-' keys are not allowed: ${t}`,"ARG_CONFIG_NONAME_KEY");if(typeof e[t]=="string"){u[t]=e[t];continue}let o=e[t],a=!1;if(Array.isArray(o)&&o.length===1&&typeof o[0]=="function"){let[g]=o;o=(p,h,f=[])=>(f.push(g(p,h,f[f.length-1])),f),a=g===Boolean||g[N]===!0}else if(typeof o=="function")a=o===Boolean||o[N]===!0;else throw new m(`type missing or not a function or valid array type: ${t}`,"ARG_CONFIG_VAD_TYPE");if(t[1]!=="-"&&t.length>2)throw new m(`short argument keys (with a single hyphen) must have only one character: ${t}`,"ARG_CONFIG_SHORTOPT_TOOLONG");l[t]=[o,a]}for(let t=0,o=n.length;t<o;t++){let a=n[t];if(r&&i._.length>0){i._=i._.concat(n.slice(t));break}if(a==="--"){i._=i._.concat(n.slice(t+1));break}if(a.length>1&&a[0]==="-"){let g=a[1]==="-"||a.length===2?[a]:a.slice(1).split("").map(p=>`-${p}`);for(let p=0;p<g.length;p++){let h=g[p],[f,_]=h[1]==="-"?h.split(/=(.*)/,2):[h,void 0],d=f;for(;d in u;)d=u[d];if(!(d in l))if(s){i._.push(h);continue}else throw new m(`unknown or unexpected option: ${f}`,"ARG_UNKNOWN_OPTION");let[x,I]=l[d];if(!I&&p+1<g.length)throw new m(`option requires argument (but was followed by another short argument): ${f}`,"ARG_MISSING_REQUIRED_SHORTARG");if(I)i[d]=x(!0,d,i[d]);else if(_===void 0){if(n.length<t+2||n[t+1].length>1&&n[t+1][0]==="-"&&!(n[t+1].match(/^-?\d*(\.(?=\d))?\d*$/)&&(x===Number||typeof BigInt!="undefined"&&x===BigInt))){let P=f===d?"":` (alias for ${d})`;throw new m(`option requires argument: ${f}${P}`,"ARG_MISSING_REQUIRED_LONGARG")}i[d]=x(n[t+1],d,i[d]),++t}else i[d]=x(_,d,i[d])}}else i._.push(a)}return i}w.flag=e=>(e[N]=!0,e);w.COUNT=w.flag((e,n,s)=>(s||0)+1);w.ArgError=m;G.exports=w});var k=T(require("path"));var y=T(require("fs")),b=T(require("path"));function W(e){let n=y.default.readFileSync(e,"utf-8"),s=n.length,r=n.split(/[\n,]/g),i=r.length;return{note:r[0].indexOf("eslint")===-1&&(r[0].indexOf("-->")>-1||r[0].indexOf("*/")>-1||r[0].indexOf("//")>-1)?r[0]:"",size:s,rowSize:i}}function A(e,n=[],s=b.default.resolve("./"),r=0){let i=["public","build","img","assets","mock","api","styles","node_modules","LICENSE",".git",".github","dist",".husky",".vscode","babel.config.js","prettier.config.js","commitlint.config.js","readme-file.js","vue.config.js",".eslintrc.js","readme-md.js"],u=[".js",".vue",".ts"];e&&(i=e.ignore||i,u=e.include||u);let l=y.default.readdirSync(s).map(t=>{let o=b.default.join(s,t),a=y.default.lstatSync(o).isDirectory();return{name:t,isDir:a,level:r,note:""}}).sort((t,o)=>!t.isDir&&o.isDir?1:t.isDir&&!o.isDir?-1:(t.isDir&&o.isDir||!t.isDir&&!o.isDir,0));for(let t=0;t<l.length;t+=1){let o=l[t];if(i.findIndex(g=>g===o.name)===-1){let g=b.default.join(s,o.name);if(y.default.lstatSync(g).isDirectory())A(e,o.children=[],g,r+1),n.push(o);else{let h=g.lastIndexOf("."),f=g.substring(h);if(u.includes(f)){let _=W(g);Object.assign(o,_),o.suffix=f,n.push(o)}}}}return n}function $(e,n){let s=n||[];return e.forEach((r,i)=>{let u=i===e.length-1;if(r.children){let l=v(r,u);s.push(l),$(r.children,s)}else{let l=v(r,u);s.push(l)}}),s}function v(e,n){let s="",i=`${"\u2502 ".repeat(e.level)}${n?"\u2514\u2500\u2500":"\u251C\u2500\u2500"} ${e.name}`;return e.isDir?s+=`${i}
3
+ `:s+=`${i} ${e.note}
4
+ `,s}function j(e){var n=/\d{1,3}(?=(\d{3})+$)/g;return(e+"").replace(n,"$&,")}function V(e){let{rowTotleNumber:n,sizeTotleNumber:s,coutObj:r}=e,i="",u=0;for(let t in r){let o=r[t];u+=o,i+=`The suffix is ${t} has ${o} files
5
+ `}i+=`The totle has ${u} files
6
+ `;let l=`Total number of file lines: ${j(n)},
7
+ Total number of codes: ${j(s)}
8
+ `;return l=i+l,l}function J(e){let n=0,s=0,r={};function i(u){u.forEach(l=>{l.children?i(l.children):(r.hasOwnProperty(l.suffix)||(r[l.suffix]=0),r[l.suffix]++,n+=l.rowSize,s+=l.size)})}return i(e),{rowTotleNumber:n,sizeTotleNumber:s,coutObj:r}}function S(e){console.log("\x1B[36m%s\x1B[0m","*** run location: ",b.default.resolve("./")+`
9
+ `);let n=A(e),s=J(n),r=V(s);console.log("\x1B[33m%s\x1B[0m",r);let u=$(n).join("")+`
10
+ `;return u.length>0&&console.log("\x1B[36m%s\x1B[0m","*** Automatic generation completed ! "),u+r}function D(e,n){let s=b.default.resolve(__dirname,n);y.default.writeFile(s,e,{encoding:"utf8"},()=>{console.log("Write successful")})}var B=T(E()),X=e=>{let n=(0,B.default)({"--ignore":String,"--include":String,"--version":Boolean,"--help":Boolean,"-h":"--help","-i":"--ignore","-in":"--include","-v":"--version"},{argv:e.slice(2)});return{help:n["--help"],ignore:n["--ignore"],include:n["--include"],version:n["--version"]}},R=X;var Z=`Usage: agmd--include str--ignore str
10
11
 
11
12
  Options:
12
13
  --include string / -i string.......... include file extension
@@ -20,5 +21,5 @@ Total number of codes: ${S(s)}
20
21
  There should be no space between strings in a configuration
21
22
 
22
23
  Examples:
23
- $ agmd --ignore lib,node_modules,dist --include .js,.ts,.vue`;function ne(){console.log(ee),process.exit(0)}var F=ne;var te="agmd",ie="0.2.8",re="auto generate markdown for node",se=["node","auto","generate","md","markdown"],oe="lib/index.cjs.js",le="lib/index.esm.js",ue="lib/index.d.ts",de={agmd:"./bin/agmd.js"},ce={dev:"npx nodemon src/agmd.ts",agmd:"npx agmd --ignore lib,node_modules,dist --include .js,.ts,.vue",lint:'eslint "src/**/*.{ts}" --max-warnings=0',build:"node script/build.js",prepare:"husky install","lint-fix":"eslint --fix --ext .js,.ts",test:"npm run build && node bin/agmd"},ae="kakajun <253495832@qq.com>",fe={type:"git",url:"git@github.com:kakajun/auto-generate-md.git"},ge={"@types/node":"^17.0.0","@typescript-eslint/eslint-plugin":"^4.31.0","@typescript-eslint/parser":"^4.31.0",agmd:"^0.2.2",arg:"5.0.1",esbuild:"^0.14.5","esbuild-plugin-d.ts":"^1.1.0",eslint:"^8.8.0","eslint-config-prettier":"^8.3.0","fs-extra":"^10.0.0",husky:"^7.0.2","lint-staged":"^11.1.2",nodemon:"^2.0.15",prettier:"^2.5.1","ts-node":"^10.7.0",typescript:"^4.5.5"},me={"*.{ts,tsx,js}":"prettier --write","*.{ts,tsx}":"eslint --fix"},pe="MIT",he={url:"https://github.com/kakajun/auto-generate-md/issues"},ye="https://github.com/kakajun/auto-generate-md",xe=["bin","lib"],M={name:te,version:ie,description:re,keywords:se,main:oe,module:le,typings:ue,bin:de,scripts:ce,author:ae,repository:fe,devDependencies:ge,"lint-staged":me,license:pe,bugs:he,homepage:ye,files:xe};function be(e){return e.help&&F(),e.version&&(console.log("agmd version is: \x1B[36m%s\x1B[0m",M.version),process.exit(0)),e.ignore&&(e.ignores=e.ignore.split(" ")),e.include&&(e.includes=e.include.split(" ")),e}var C=be;var we=R(process.argv),{ignores:_e,includes:Oe}=C(we);function Te(){let e=j({ignore:_e,include:Oe});console.log("\x1B[36m%s\x1B[0m","*** location: ",`${k.default.resolve("./")}\\readme-md.md`),D(e,`${k.default.resolve("./")}\\readme-md.md`)}Te();
24
+ $ agmd --ignore lib,node_modules,dist --include .js,.ts,.vue`;function ee(){console.log(Z),process.exit(0)}var F=ee;var ne="agmd",te="0.2.9",ie="auto generate markdown for node",se=["node","auto","generate","md","markdown"],re="lib/index.cjs.js",oe="lib/index.esm.js",le="lib/index.d.ts",ue={agmd:"./bin/agmd.js"},ce={dev:"npx nodemon src/agmd.ts",agmd:"npx agmd --ignore lib,node_modules,dist --include .js,.ts,.vue",lint:'eslint "src/**/*.{ts}" --max-warnings=0',build:"node script/build.js",prepare:"husky install","lint-fix":"eslint --fix --ext .js,.ts",test:"npm run build && node bin/agmd"},de="kakajun <253495832@qq.com>",ae={type:"git",url:"git@github.com:kakajun/auto-generate-md.git"},ge={"@types/node":"^17.0.0","@typescript-eslint/eslint-plugin":"^4.31.0","@typescript-eslint/parser":"^4.31.0",agmd:"^0.2.2",arg:"5.0.1",esbuild:"^0.14.5","esbuild-plugin-d.ts":"^1.1.0",eslint:"^8.8.0","eslint-config-prettier":"^8.3.0","fs-extra":"^10.0.0",husky:"^7.0.2","lint-staged":"^11.1.2",nodemon:"^2.0.15",prettier:"^2.5.1","ts-node":"^10.7.0",typescript:"^4.5.5"},fe={"*.{ts,tsx,js}":"prettier --write","*.{ts,tsx}":"eslint --fix"},me="MIT",pe={url:"https://github.com/kakajun/auto-generate-md/issues"},he="https://github.com/kakajun/auto-generate-md",ye=["bin","lib"],M={name:ne,version:te,description:ie,keywords:se,main:re,module:oe,typings:le,bin:ue,scripts:ce,author:de,repository:ae,devDependencies:ge,"lint-staged":fe,license:me,bugs:pe,homepage:he,files:ye};function be(e){return e.help&&F(),e.version&&(console.log("agmd version is: \x1B[36m%s\x1B[0m",M.version),process.exit(0)),e.ignore&&(e.ignores=e.ignore.split(" ")),e.include&&(e.includes=e.include.split(" ")),e}var C=be;var xe=R(process.argv),{ignores:we,includes:_e}=C(xe);function Te(){let e=S({ignore:we,include:_e});console.log("\x1B[36m%s\x1B[0m","*** location: ",`${k.default.resolve("./")}\\readme-md.md`),D(e,`${k.default.resolve("./")}\\readme-md.md`)}Te();
24
25
  //# sourceMappingURL=agmd.js.map
package/bin/agmd.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../node_modules/arg/index.js", "../src/agmd.ts", "../src/index.ts", "../script/cli/index.ts", "../script/help/index.ts", "../script/cli/handle.ts"],
4
- "sourcesContent": ["const flagSymbol = Symbol('arg flag');\n\nclass ArgError extends Error {\n\tconstructor(msg, code) {\n\t\tsuper(msg);\n\t\tthis.name = 'ArgError';\n\t\tthis.code = code;\n\n\t\tObject.setPrototypeOf(this, ArgError.prototype);\n\t}\n}\n\nfunction arg(\n\topts,\n\t{\n\t\targv = process.argv.slice(2),\n\t\tpermissive = false,\n\t\tstopAtPositional = false\n\t} = {}\n) {\n\tif (!opts) {\n\t\tthrow new ArgError(\n\t\t\t'argument specification object is required',\n\t\t\t'ARG_CONFIG_NO_SPEC'\n\t\t);\n\t}\n\n\tconst result = { _: [] };\n\n\tconst aliases = {};\n\tconst handlers = {};\n\n\tfor (const key of Object.keys(opts)) {\n\t\tif (!key) {\n\t\t\tthrow new ArgError(\n\t\t\t\t'argument key cannot be an empty string',\n\t\t\t\t'ARG_CONFIG_EMPTY_KEY'\n\t\t\t);\n\t\t}\n\n\t\tif (key[0] !== '-') {\n\t\t\tthrow new ArgError(\n\t\t\t\t`argument key must start with '-' but found: '${key}'`,\n\t\t\t\t'ARG_CONFIG_NONOPT_KEY'\n\t\t\t);\n\t\t}\n\n\t\tif (key.length === 1) {\n\t\t\tthrow new ArgError(\n\t\t\t\t`argument key must have a name; singular '-' keys are not allowed: ${key}`,\n\t\t\t\t'ARG_CONFIG_NONAME_KEY'\n\t\t\t);\n\t\t}\n\n\t\tif (typeof opts[key] === 'string') {\n\t\t\taliases[key] = opts[key];\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet type = opts[key];\n\t\tlet isFlag = false;\n\n\t\tif (\n\t\t\tArray.isArray(type) &&\n\t\t\ttype.length === 1 &&\n\t\t\ttypeof type[0] === 'function'\n\t\t) {\n\t\t\tconst [fn] = type;\n\t\t\ttype = (value, name, prev = []) => {\n\t\t\t\tprev.push(fn(value, name, prev[prev.length - 1]));\n\t\t\t\treturn prev;\n\t\t\t};\n\t\t\tisFlag = fn === Boolean || fn[flagSymbol] === true;\n\t\t} else if (typeof type === 'function') {\n\t\t\tisFlag = type === Boolean || type[flagSymbol] === true;\n\t\t} else {\n\t\t\tthrow new ArgError(\n\t\t\t\t`type missing or not a function or valid array type: ${key}`,\n\t\t\t\t'ARG_CONFIG_VAD_TYPE'\n\t\t\t);\n\t\t}\n\n\t\tif (key[1] !== '-' && key.length > 2) {\n\t\t\tthrow new ArgError(\n\t\t\t\t`short argument keys (with a single hyphen) must have only one character: ${key}`,\n\t\t\t\t'ARG_CONFIG_SHORTOPT_TOOLONG'\n\t\t\t);\n\t\t}\n\n\t\thandlers[key] = [type, isFlag];\n\t}\n\n\tfor (let i = 0, len = argv.length; i < len; i++) {\n\t\tconst wholeArg = argv[i];\n\n\t\tif (stopAtPositional && result._.length > 0) {\n\t\t\tresult._ = result._.concat(argv.slice(i));\n\t\t\tbreak;\n\t\t}\n\n\t\tif (wholeArg === '--') {\n\t\t\tresult._ = result._.concat(argv.slice(i + 1));\n\t\t\tbreak;\n\t\t}\n\n\t\tif (wholeArg.length > 1 && wholeArg[0] === '-') {\n\t\t\t/* eslint-disable operator-linebreak */\n\t\t\tconst separatedArguments =\n\t\t\t\twholeArg[1] === '-' || wholeArg.length === 2\n\t\t\t\t\t? [wholeArg]\n\t\t\t\t\t: wholeArg\n\t\t\t\t\t\t\t.slice(1)\n\t\t\t\t\t\t\t.split('')\n\t\t\t\t\t\t\t.map((a) => `-${a}`);\n\t\t\t/* eslint-enable operator-linebreak */\n\n\t\t\tfor (let j = 0; j < separatedArguments.length; j++) {\n\t\t\t\tconst arg = separatedArguments[j];\n\t\t\t\tconst [originalArgName, argStr] =\n\t\t\t\t\targ[1] === '-' ? arg.split(/=(.*)/, 2) : [arg, undefined];\n\n\t\t\t\tlet argName = originalArgName;\n\t\t\t\twhile (argName in aliases) {\n\t\t\t\t\targName = aliases[argName];\n\t\t\t\t}\n\n\t\t\t\tif (!(argName in handlers)) {\n\t\t\t\t\tif (permissive) {\n\t\t\t\t\t\tresult._.push(arg);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new ArgError(\n\t\t\t\t\t\t\t`unknown or unexpected option: ${originalArgName}`,\n\t\t\t\t\t\t\t'ARG_UNKNOWN_OPTION'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst [type, isFlag] = handlers[argName];\n\n\t\t\t\tif (!isFlag && j + 1 < separatedArguments.length) {\n\t\t\t\t\tthrow new ArgError(\n\t\t\t\t\t\t`option requires argument (but was followed by another short argument): ${originalArgName}`,\n\t\t\t\t\t\t'ARG_MISSING_REQUIRED_SHORTARG'\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (isFlag) {\n\t\t\t\t\tresult[argName] = type(true, argName, result[argName]);\n\t\t\t\t} else if (argStr === undefined) {\n\t\t\t\t\tif (\n\t\t\t\t\t\targv.length < i + 2 ||\n\t\t\t\t\t\t(argv[i + 1].length > 1 &&\n\t\t\t\t\t\t\targv[i + 1][0] === '-' &&\n\t\t\t\t\t\t\t!(\n\t\t\t\t\t\t\t\targv[i + 1].match(/^-?\\d*(\\.(?=\\d))?\\d*$/) &&\n\t\t\t\t\t\t\t\t(type === Number ||\n\t\t\t\t\t\t\t\t\t// eslint-disable-next-line no-undef\n\t\t\t\t\t\t\t\t\t(typeof BigInt !== 'undefined' && type === BigInt))\n\t\t\t\t\t\t\t))\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst extended =\n\t\t\t\t\t\t\toriginalArgName === argName ? '' : ` (alias for ${argName})`;\n\t\t\t\t\t\tthrow new ArgError(\n\t\t\t\t\t\t\t`option requires argument: ${originalArgName}${extended}`,\n\t\t\t\t\t\t\t'ARG_MISSING_REQUIRED_LONGARG'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tresult[argName] = type(argv[i + 1], argName, result[argName]);\n\t\t\t\t\t++i;\n\t\t\t\t} else {\n\t\t\t\t\tresult[argName] = type(argStr, argName, result[argName]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tresult._.push(wholeArg);\n\t\t}\n\t}\n\n\treturn result;\n}\n\narg.flag = (fn) => {\n\tfn[flagSymbol] = true;\n\treturn fn;\n};\n\n// Utility types\narg.COUNT = arg.flag((v, name, existingCount) => (existingCount || 0) + 1);\n\n// Expose error class\narg.ArgError = ArgError;\n\nmodule.exports = arg;\n", "#!/usr/bin/env node\r\n'use strict'\r\nimport path from 'path'\r\nimport { getMd, wirteMd } from './index'\r\nimport stringToArgs from '../script/cli'\r\nimport handle from '../script/cli/handle'\r\nconst options = stringToArgs(process.argv)\r\nconst { ignores: ignore, includes: include } = handle(options)\r\n/**\r\n * @description:Automatic generation of the whole process \u81EA\u52A8\u751F\u6210\u5168\u6D41\u7A0B\r\n * @param {*}\r\n * @return {*}\r\n */\r\nfunction agmd() {\r\n const md = getMd({ ignore, include })\r\n // \u5F97\u5230md\u6587\u6863\r\n console.log('\\x1B[36m%s\\x1B[0m', '*** location: ', `${path.resolve('./')}\\\\readme-md.md`)\r\n wirteMd(md, `${path.resolve('./')}\\\\readme-md.md`)\r\n}\r\nagmd()\r\n", "import fs from 'fs'\r\nimport path from 'path'\r\n\r\n/**\r\n * @description:Gets the header comment of the file \u83B7\u53D6\u6587\u4EF6\u7684\u5934\u90E8\u6CE8\u91CA\r\n * @param {*} file\r\n * @return {*}\r\n */\r\nfunction getFile(file: fs.PathOrFileDescriptor) {\r\n const str = fs.readFileSync(file, 'utf-8')\r\n const size = str.length\r\n const sarr = str.split(/[\\n,]/g)\r\n const rowSize = sarr.length\r\n const f =\r\n sarr[0].indexOf('eslint') === -1 &&\r\n (sarr[0].indexOf('-->') > -1 || sarr[0].indexOf('*/') > -1 || sarr[0].indexOf('//') > -1)\r\n ? sarr[0]\r\n : ''\r\n return { note: f, size, rowSize }\r\n}\r\n\r\ntype ItemType = {\r\n name: string\r\n isDir: boolean\r\n level: number\r\n note: string\r\n size: number\r\n suffix: string\r\n rowSize: number\r\n children?: ItemType[]\r\n}\r\n\r\ntype secoutType = { rowTotleNumber: number; sizeTotleNumber: number; coutObj: { [key: string]: number } }\r\n\r\n/**\r\n * @description:Generate node information for all files \u751F\u6210\u6240\u6709\u6587\u4EF6\u7684node\u4FE1\u606F\r\n * @param {Array} nodes\r\n * @param {*} dir\r\n * @param {Number} level\r\n * @return {*}\r\n */\r\nexport function getFileNodes(\r\n option: { ignore: string[] | undefined; include: string[] | undefined } | undefined,\r\n nodes: Array<ItemType> = [],\r\n dir = path.resolve('./'),\r\n level = 0\r\n): Array<ItemType> {\r\n //File filtering -- full name with suffix required \u6587\u4EF6\u8FC7\u6EE4--\u9700\u8981\u5168\u79F0\u5E26\u540E\u7F00\r\n let ignore = [\r\n 'img',\r\n 'styles',\r\n 'node_modules',\r\n 'LICENSE',\r\n '.git',\r\n '.github',\r\n 'dist',\r\n '.husky',\r\n '.vscode',\r\n 'readme-file.js',\r\n 'readme-md.js'\r\n ]\r\n //File suffix contains only \u6587\u4EF6\u540E\u7F00\u53EA\u5305\u542B\r\n let include = ['.js', '.vue', '.ts']\r\n\r\n if (option) {\r\n ignore = option.ignore || ignore\r\n include = option.include || include\r\n }\r\n const files = fs\r\n .readdirSync(dir)\r\n .map((item) => {\r\n const fullPath = path.join(dir, item)\r\n const isDir = fs.lstatSync(fullPath).isDirectory()\r\n return {\r\n name: item,\r\n isDir,\r\n level,\r\n note: ''\r\n } as ItemType\r\n })\r\n //Sort folders and files, otherwise the generated will not correspond to the opening order of the editor \u5BF9\u6587\u4EF6\u5939\u548C\u6587\u4EF6\u8FDB\u884C\u6392\u5E8F,\u8981\u4E0D\u7136\u751F\u6210\u7684\u548C\u7F16\u8F91\u5668\u6253\u5F00\u7684\u987A\u5E8F\u4E0D\u5BF9\u5E94\r\n .sort((a, b) => {\r\n if (!a.isDir && b.isDir) return 1\r\n if (a.isDir && !b.isDir) return -1\r\n if ((a.isDir && b.isDir) || (!a.isDir && !b.isDir)) return 0\r\n return 0\r\n })\r\n for (let index = 0; index < files.length; index += 1) {\r\n const item = files[index]\r\n //Folder filtering is handled here \u8FD9\u91CC\u5904\u7406\u6587\u4EF6\u5939\u8FC7\u6EE4\r\n const foldFlag = ignore.findIndex((obj: string) => obj === item.name)\r\n if (foldFlag === -1) {\r\n const fullPath = path.join(dir, item.name)\r\n const isDir = fs.lstatSync(fullPath).isDirectory()\r\n if (isDir) {\r\n //recursion \u9012\u5F52\r\n getFileNodes(option, (item.children = []), fullPath, level + 1)\r\n nodes.push(item)\r\n } else {\r\n const i = fullPath.lastIndexOf('.')\r\n const lastName = fullPath.substring(i)\r\n //File filtering is handled here \u8FD9\u91CC\u5904\u7406\u6587\u4EF6\u8FC7\u6EE4\r\n if (include.includes(lastName)) {\r\n const obj = getFile(fullPath)\r\n Object.assign(item, obj)\r\n item.suffix = lastName\r\n nodes.push(item)\r\n }\r\n }\r\n }\r\n }\r\n return nodes\r\n}\r\n\r\n/**\r\n * @description:Recursive file name + note \u9012\u5F52\u5F97\u5230\u6587\u4EF6\u540D+note\r\n * @param {Array} datas\r\n * @param {string} keys\r\n * @return {*}\r\n */\r\nfunction getNote(datas: Array<ItemType>, keys?: string[]) {\r\n const nodes = keys || []\r\n datas.forEach((obj: ItemType, index: Number) => {\r\n const last = index === datas.length - 1\r\n if (obj.children) {\r\n //fold\r\n const md = setMd(obj, last)\r\n nodes.push(md)\r\n getNote(obj.children, nodes)\r\n }\r\n // file\r\n else {\r\n const md = setMd(obj, last)\r\n nodes.push(md)\r\n }\r\n })\r\n return nodes\r\n}\r\n\r\n/**\r\n * @description:One obj generates one line of text \u4E00\u4E2Aobj\u751F\u6210\u4E00\u4E2A\u4E00\u884C\u6587\u5B57\r\n * @param {ItemType} obj\r\n * @param {Boolean} last Is it the last one \u662F\u4E0D\u662F\u6700\u540E\u4E00\u4E2A\r\n * @return {*}\r\n */\r\nfunction setMd(obj: ItemType, last: Boolean): string {\r\n let filesString = ''\r\n const blank = '\u2502 '.repeat(obj.level) // \u91CD\u590D\u7A7A\u767D\r\n const pre = `${blank}${last ? '\u2514\u2500\u2500' : '\u251C\u2500\u2500'} ${obj.name}`\r\n if (obj.isDir) {\r\n filesString += `${pre}\\n`\r\n } else {\r\n filesString += `${pre} ${obj.note}\\n`\r\n }\r\n return filesString\r\n}\r\n\r\n/**\r\n * @description: Write the result to JS file \u628A\u7ED3\u679C\u5199\u5165\u5230js\u6587\u4EF6\r\n * @param {data} \u8981\u5199\u7684\u6570\u636E\r\n * @return {fileName} \u8981\u5199\u5165\u6587\u4EF6\u5730\u5740\r\n */\r\nfunction wirteJs(data: string, filePath: string) {\r\n const file = path.resolve(__dirname, filePath)\r\n const pre = 'export default'\r\n // \u5F02\u6B65\u5199\u5165\u6570\u636E\u5230\u6587\u4EF6\r\n fs.writeFile(file, pre + data, { encoding: 'utf8' }, (err) => {\r\n console.error(err)\r\n })\r\n}\r\n/**\r\n * @description:Thousands format \u5343\u5206\u4F4D\u683C\u5F0F\u5316\r\n * @param {num} To format a number \u8981\u683C\u5F0F\u5316\u6570\u5B57\r\n * @return {string}\r\n */\r\nfunction format(num: number) {\r\n var reg = /\\d{1,3}(?=(\\d{3})+$)/g\r\n return (num + '').replace(reg, '$&,')\r\n}\r\n/**\r\n * @description: Generate statistics MD \u751F\u6210\u7EDF\u8BA1md\r\n * @param {object} option\r\n * @return {*}\r\n */\r\nfunction setCountMd(obj: secoutType) {\r\n const { rowTotleNumber, sizeTotleNumber, coutObj } = obj\r\n let countMd = ''\r\n let totle=0\r\n for (const key in coutObj) {\r\n const ele = coutObj[key]\r\n totle += ele\r\n countMd += `The suffix is ${key} has ${ele} files\\n`\r\n }\r\n countMd += `The totle has ${totle} files\\n`\r\n let md = `Total number of file lines: ${format(rowTotleNumber)},\r\nTotal number of codes: ${format(sizeTotleNumber)} \\n`\r\n md = countMd + md\r\n return md\r\n // wirteMd(md, `${path.resolve('./')}\\\\count-md.md`)\r\n}\r\n/**\r\n * @description: Get statistics \u5F97\u5230\u7EDF\u8BA1\r\n * @param {Array} nodes\r\n * @return {*}\r\n */\r\nfunction getCountMd(datas: Array<ItemType>) {\r\n let rowTotleNumber = 0\r\n let sizeTotleNumber = 0\r\n const coutObj: { [key: string]: number } = {}\r\n function getDeatle(nodes: Array<ItemType>) {\r\n nodes.forEach((obj: ItemType) => {\r\n if (obj.children) getDeatle(obj.children)\r\n else {\r\n if (!coutObj.hasOwnProperty(obj.suffix)) coutObj[obj.suffix] = 0\r\n coutObj[obj.suffix]++\r\n rowTotleNumber += obj.rowSize\r\n sizeTotleNumber += obj.size\r\n }\r\n })\r\n }\r\n getDeatle(datas)\r\n return {\r\n rowTotleNumber,\r\n sizeTotleNumber,\r\n coutObj\r\n }\r\n}\r\n\r\n/**\r\n * @description: Generate MD \u751F\u6210md\r\n * @param {object} option\r\n * @return {*}\r\n */\r\nexport function getMd(option?: { ignore: string[] | undefined; include: string[] | undefined } | undefined) {\r\n console.log('\\x1B[36m%s\\x1B[0m', '*** run location: ', path.resolve('./'))\r\n const nodes = getFileNodes(option)\r\n // \u5F97\u5230md\u5BF9\u8C61\r\n wirteJs(JSON.stringify(nodes), __dirname + '\\\\readme-file.js')\r\n const countMdObj = getCountMd(nodes)\r\n const coutMd= setCountMd(countMdObj)\r\n const note = getNote(nodes) // \u5F97\u5230\u6240\u6709note\u7684\u6570\u7EC4\r\n const md = note.join('')+'\\n' // \u6570\u7EC4\u8F6C\u5B57\u7B26\u4E32\r\n if (md.length > 0) {\r\n console.log('\\x1B[36m%s\\x1B[0m', '*** Automatic generation completed ! ')\r\n }\r\n console.log('\\x1B[33m%s\\x1b[0m:', coutMd)\r\n return md + coutMd\r\n}\r\n\r\n/**\r\n * @description:Write the result to JS file \u628A\u7ED3\u679C\u5199\u5165\u5230js\u6587\u4EF6\r\n * @param {data} \u8981\u5199\u7684\u6570\u636E\r\n * @return {fileName} \u8981\u5199\u5165\u6587\u4EF6\u5730\u5740\r\n */\r\nexport function wirteMd(data: string, filePath: string) {\r\n const file = path.resolve(__dirname, filePath)\r\n // \u5F02\u6B65\u5199\u5165\u6570\u636E\u5230\u6587\u4EF6\r\n fs.writeFile(file, data, { encoding: 'utf8' }, (err) => {\r\n console.error(err)\r\n })\r\n}\r\n", "import arg from 'arg'\r\nconst stringToArgs = (rawArgs: string[]) => {\r\n const args = arg(\r\n {\r\n '--ignore': String,\r\n '--include': String,\r\n '--version': Boolean,\r\n '--help': Boolean,\r\n '-h': '--help',\r\n '-i': '--ignore',\r\n '-in': '--include',\r\n '-v': '--version'\r\n },\r\n {\r\n argv: rawArgs.slice(2)\r\n }\r\n )\r\n return {\r\n help: args['--help'],\r\n ignore: args['--ignore'],\r\n include: args['--include'],\r\n version: args['--version']\r\n }\r\n}\r\n\r\nexport default stringToArgs\r\n", "const st = `Usage: agmd--include str--ignore str\r\n\r\n Options:\r\n --include string / -i string.......... include file extension\r\n --ignore string / -in string........... ignore file or fold\r\n --version / -v ........... seach vesion\r\n Str deafult:\r\n --ignore img,styles,node_modules,LICENSE,.git,.github,dist,.husky,.vscode,readme-file.js,readme-md.js\r\n --include .js,.vue,.ts\r\n\r\n Note:\r\n There should be no space between strings in a configuration\r\n\r\n Examples:\r\n $ agmd --ignore lib,node_modules,dist --include .js,.ts,.vue`\r\n\r\nfunction help() {\r\n console.log(st)\r\n process.exit(0)\r\n}\r\nexport default help\r\n", "import help from '../help'\r\nimport pkg from '../../package.json'\r\ninterface parseType {\r\n version?: Boolean | undefined\r\n includes?: string[]\r\n ignores?: string[]\r\n help: Boolean | undefined\r\n ignore: string | undefined\r\n include: string | undefined\r\n}\r\nfunction handle(settings: parseType) {\r\n if (settings.help) {\r\n help()\r\n }\r\n if (settings.version) {\r\n console.log(`agmd version is: ` + '\\x1B[36m%s\\x1B[0m', pkg.version)\r\n process.exit(0)\r\n }\r\n if (settings.ignore) {\r\n settings.ignores = settings.ignore.split(' ')\r\n }\r\n if (settings.include) {\r\n settings.includes = settings.include.split(' ')\r\n }\r\n return settings\r\n}\r\n\r\nexport default handle\r\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["const flagSymbol = Symbol('arg flag');\n\nclass ArgError extends Error {\n\tconstructor(msg, code) {\n\t\tsuper(msg);\n\t\tthis.name = 'ArgError';\n\t\tthis.code = code;\n\n\t\tObject.setPrototypeOf(this, ArgError.prototype);\n\t}\n}\n\nfunction arg(\n\topts,\n\t{\n\t\targv = process.argv.slice(2),\n\t\tpermissive = false,\n\t\tstopAtPositional = false\n\t} = {}\n) {\n\tif (!opts) {\n\t\tthrow new ArgError(\n\t\t\t'argument specification object is required',\n\t\t\t'ARG_CONFIG_NO_SPEC'\n\t\t);\n\t}\n\n\tconst result = { _: [] };\n\n\tconst aliases = {};\n\tconst handlers = {};\n\n\tfor (const key of Object.keys(opts)) {\n\t\tif (!key) {\n\t\t\tthrow new ArgError(\n\t\t\t\t'argument key cannot be an empty string',\n\t\t\t\t'ARG_CONFIG_EMPTY_KEY'\n\t\t\t);\n\t\t}\n\n\t\tif (key[0] !== '-') {\n\t\t\tthrow new ArgError(\n\t\t\t\t`argument key must start with '-' but found: '${key}'`,\n\t\t\t\t'ARG_CONFIG_NONOPT_KEY'\n\t\t\t);\n\t\t}\n\n\t\tif (key.length === 1) {\n\t\t\tthrow new ArgError(\n\t\t\t\t`argument key must have a name; singular '-' keys are not allowed: ${key}`,\n\t\t\t\t'ARG_CONFIG_NONAME_KEY'\n\t\t\t);\n\t\t}\n\n\t\tif (typeof opts[key] === 'string') {\n\t\t\taliases[key] = opts[key];\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet type = opts[key];\n\t\tlet isFlag = false;\n\n\t\tif (\n\t\t\tArray.isArray(type) &&\n\t\t\ttype.length === 1 &&\n\t\t\ttypeof type[0] === 'function'\n\t\t) {\n\t\t\tconst [fn] = type;\n\t\t\ttype = (value, name, prev = []) => {\n\t\t\t\tprev.push(fn(value, name, prev[prev.length - 1]));\n\t\t\t\treturn prev;\n\t\t\t};\n\t\t\tisFlag = fn === Boolean || fn[flagSymbol] === true;\n\t\t} else if (typeof type === 'function') {\n\t\t\tisFlag = type === Boolean || type[flagSymbol] === true;\n\t\t} else {\n\t\t\tthrow new ArgError(\n\t\t\t\t`type missing or not a function or valid array type: ${key}`,\n\t\t\t\t'ARG_CONFIG_VAD_TYPE'\n\t\t\t);\n\t\t}\n\n\t\tif (key[1] !== '-' && key.length > 2) {\n\t\t\tthrow new ArgError(\n\t\t\t\t`short argument keys (with a single hyphen) must have only one character: ${key}`,\n\t\t\t\t'ARG_CONFIG_SHORTOPT_TOOLONG'\n\t\t\t);\n\t\t}\n\n\t\thandlers[key] = [type, isFlag];\n\t}\n\n\tfor (let i = 0, len = argv.length; i < len; i++) {\n\t\tconst wholeArg = argv[i];\n\n\t\tif (stopAtPositional && result._.length > 0) {\n\t\t\tresult._ = result._.concat(argv.slice(i));\n\t\t\tbreak;\n\t\t}\n\n\t\tif (wholeArg === '--') {\n\t\t\tresult._ = result._.concat(argv.slice(i + 1));\n\t\t\tbreak;\n\t\t}\n\n\t\tif (wholeArg.length > 1 && wholeArg[0] === '-') {\n\t\t\t/* eslint-disable operator-linebreak */\n\t\t\tconst separatedArguments =\n\t\t\t\twholeArg[1] === '-' || wholeArg.length === 2\n\t\t\t\t\t? [wholeArg]\n\t\t\t\t\t: wholeArg\n\t\t\t\t\t\t\t.slice(1)\n\t\t\t\t\t\t\t.split('')\n\t\t\t\t\t\t\t.map((a) => `-${a}`);\n\t\t\t/* eslint-enable operator-linebreak */\n\n\t\t\tfor (let j = 0; j < separatedArguments.length; j++) {\n\t\t\t\tconst arg = separatedArguments[j];\n\t\t\t\tconst [originalArgName, argStr] =\n\t\t\t\t\targ[1] === '-' ? arg.split(/=(.*)/, 2) : [arg, undefined];\n\n\t\t\t\tlet argName = originalArgName;\n\t\t\t\twhile (argName in aliases) {\n\t\t\t\t\targName = aliases[argName];\n\t\t\t\t}\n\n\t\t\t\tif (!(argName in handlers)) {\n\t\t\t\t\tif (permissive) {\n\t\t\t\t\t\tresult._.push(arg);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new ArgError(\n\t\t\t\t\t\t\t`unknown or unexpected option: ${originalArgName}`,\n\t\t\t\t\t\t\t'ARG_UNKNOWN_OPTION'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst [type, isFlag] = handlers[argName];\n\n\t\t\t\tif (!isFlag && j + 1 < separatedArguments.length) {\n\t\t\t\t\tthrow new ArgError(\n\t\t\t\t\t\t`option requires argument (but was followed by another short argument): ${originalArgName}`,\n\t\t\t\t\t\t'ARG_MISSING_REQUIRED_SHORTARG'\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (isFlag) {\n\t\t\t\t\tresult[argName] = type(true, argName, result[argName]);\n\t\t\t\t} else if (argStr === undefined) {\n\t\t\t\t\tif (\n\t\t\t\t\t\targv.length < i + 2 ||\n\t\t\t\t\t\t(argv[i + 1].length > 1 &&\n\t\t\t\t\t\t\targv[i + 1][0] === '-' &&\n\t\t\t\t\t\t\t!(\n\t\t\t\t\t\t\t\targv[i + 1].match(/^-?\\d*(\\.(?=\\d))?\\d*$/) &&\n\t\t\t\t\t\t\t\t(type === Number ||\n\t\t\t\t\t\t\t\t\t// eslint-disable-next-line no-undef\n\t\t\t\t\t\t\t\t\t(typeof BigInt !== 'undefined' && type === BigInt))\n\t\t\t\t\t\t\t))\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst extended =\n\t\t\t\t\t\t\toriginalArgName === argName ? '' : ` (alias for ${argName})`;\n\t\t\t\t\t\tthrow new ArgError(\n\t\t\t\t\t\t\t`option requires argument: ${originalArgName}${extended}`,\n\t\t\t\t\t\t\t'ARG_MISSING_REQUIRED_LONGARG'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tresult[argName] = type(argv[i + 1], argName, result[argName]);\n\t\t\t\t\t++i;\n\t\t\t\t} else {\n\t\t\t\t\tresult[argName] = type(argStr, argName, result[argName]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tresult._.push(wholeArg);\n\t\t}\n\t}\n\n\treturn result;\n}\n\narg.flag = (fn) => {\n\tfn[flagSymbol] = true;\n\treturn fn;\n};\n\n// Utility types\narg.COUNT = arg.flag((v, name, existingCount) => (existingCount || 0) + 1);\n\n// Expose error class\narg.ArgError = ArgError;\n\nmodule.exports = arg;\n", "#!/usr/bin/env node\r\n'use strict'\r\nimport path from 'path'\r\nimport { getMd, wirteMd } from './index'\r\nimport stringToArgs from '../script/cli'\r\nimport handle from '../script/cli/handle'\r\nconst options = stringToArgs(process.argv)\r\nconst { ignores: ignore, includes: include } = handle(options)\r\n/**\r\n * @description:Automatic generation of the whole process \u81EA\u52A8\u751F\u6210\u5168\u6D41\u7A0B\r\n * @param {*}\r\n * @return {*}\r\n */\r\nfunction agmd() {\r\n const md = getMd({ ignore, include })\r\n // \u5F97\u5230md\u6587\u6863\r\n console.log('\\x1B[36m%s\\x1B[0m', '*** location: ', `${path.resolve('./')}\\\\readme-md.md`)\r\n wirteMd(md, `${path.resolve('./')}\\\\readme-md.md`)\r\n}\r\nagmd()\r\n", "import fs from 'fs'\r\nimport path from 'path'\r\n\r\n/**\r\n * @description:Gets the header comment of the file \u83B7\u53D6\u6587\u4EF6\u7684\u5934\u90E8\u6CE8\u91CA\r\n * @param {*} file\r\n * @return {*}\r\n */\r\nfunction getFile(file: fs.PathOrFileDescriptor) {\r\n const str = fs.readFileSync(file, 'utf-8')\r\n const size = str.length\r\n const sarr = str.split(/[\\n,]/g)\r\n const rowSize = sarr.length\r\n const f =\r\n sarr[0].indexOf('eslint') === -1 &&\r\n (sarr[0].indexOf('-->') > -1 || sarr[0].indexOf('*/') > -1 || sarr[0].indexOf('//') > -1)\r\n ? sarr[0]\r\n : ''\r\n return { note: f, size, rowSize }\r\n}\r\n\r\ntype ItemType = {\r\n name: string\r\n isDir: boolean\r\n level: number\r\n note: string\r\n size: number\r\n suffix: string\r\n rowSize: number\r\n children?: ItemType[]\r\n}\r\n\r\ntype secoutType = { rowTotleNumber: number; sizeTotleNumber: number; coutObj: { [key: string]: number } }\r\n\r\n/**\r\n * @description:Generate node information for all files \u751F\u6210\u6240\u6709\u6587\u4EF6\u7684node\u4FE1\u606F\r\n * @param {Array} nodes\r\n * @param {*} dir\r\n * @param {Number} level\r\n * @return {*}\r\n */\r\nexport function getFileNodes(\r\n option: { ignore: string[] | undefined; include: string[] | undefined } | undefined,\r\n nodes: Array<ItemType> = [],\r\n dir = path.resolve('./'),\r\n level = 0\r\n): Array<ItemType> {\r\n //File filtering -- full name with suffix required \u6587\u4EF6\u8FC7\u6EE4--\u9700\u8981\u5168\u79F0\u5E26\u540E\u7F00\r\n let ignore = [\r\n 'public',\r\n 'build',\r\n 'img',\r\n 'assets',\r\n 'mock',\r\n 'api',\r\n 'styles',\r\n 'node_modules',\r\n 'LICENSE',\r\n '.git',\r\n '.github',\r\n 'dist',\r\n '.husky',\r\n '.vscode',\r\n 'babel.config.js',\r\n 'prettier.config.js',\r\n 'commitlint.config.js',\r\n 'readme-file.js',\r\n 'vue.config.js',\r\n '.eslintrc.js',\r\n 'readme-md.js'\r\n ]\r\n //File suffix contains only \u6587\u4EF6\u540E\u7F00\u53EA\u5305\u542B\r\n let include = ['.js', '.vue', '.ts']\r\n\r\n if (option) {\r\n ignore = option.ignore || ignore\r\n include = option.include || include\r\n }\r\n const files = fs\r\n .readdirSync(dir)\r\n .map((item) => {\r\n const fullPath = path.join(dir, item)\r\n const isDir = fs.lstatSync(fullPath).isDirectory()\r\n return {\r\n name: item,\r\n isDir,\r\n level,\r\n note: ''\r\n } as ItemType\r\n })\r\n //Sort folders and files, otherwise the generated will not correspond to the opening order of the editor \u5BF9\u6587\u4EF6\u5939\u548C\u6587\u4EF6\u8FDB\u884C\u6392\u5E8F,\u8981\u4E0D\u7136\u751F\u6210\u7684\u548C\u7F16\u8F91\u5668\u6253\u5F00\u7684\u987A\u5E8F\u4E0D\u5BF9\u5E94\r\n .sort((a, b) => {\r\n if (!a.isDir && b.isDir) return 1\r\n if (a.isDir && !b.isDir) return -1\r\n if ((a.isDir && b.isDir) || (!a.isDir && !b.isDir)) return 0\r\n return 0\r\n })\r\n for (let index = 0; index < files.length; index += 1) {\r\n const item = files[index]\r\n //Folder filtering is handled here \u8FD9\u91CC\u5904\u7406\u6587\u4EF6\u5939\u8FC7\u6EE4\r\n const foldFlag = ignore.findIndex((obj: string) => obj === item.name)\r\n if (foldFlag === -1) {\r\n const fullPath = path.join(dir, item.name)\r\n const isDir = fs.lstatSync(fullPath).isDirectory()\r\n if (isDir) {\r\n //recursion \u9012\u5F52\r\n getFileNodes(option, (item.children = []), fullPath, level + 1)\r\n nodes.push(item)\r\n } else {\r\n const i = fullPath.lastIndexOf('.')\r\n const lastName = fullPath.substring(i)\r\n //File filtering is handled here \u8FD9\u91CC\u5904\u7406\u6587\u4EF6\u8FC7\u6EE4\r\n if (include.includes(lastName)) {\r\n const obj = getFile(fullPath)\r\n Object.assign(item, obj)\r\n item.suffix = lastName\r\n nodes.push(item)\r\n }\r\n }\r\n }\r\n }\r\n return nodes\r\n}\r\n\r\n/**\r\n * @description:Recursive file name + note \u9012\u5F52\u5F97\u5230\u6587\u4EF6\u540D+note\r\n * @param {Array} datas\r\n * @param {string} keys\r\n * @return {*}\r\n */\r\nfunction getNote(datas: Array<ItemType>, keys?: string[]) {\r\n const nodes = keys || []\r\n datas.forEach((obj: ItemType, index: Number) => {\r\n const last = index === datas.length - 1\r\n if (obj.children) {\r\n //fold\r\n const md = setMd(obj, last)\r\n nodes.push(md)\r\n getNote(obj.children, nodes)\r\n }\r\n // file\r\n else {\r\n const md = setMd(obj, last)\r\n nodes.push(md)\r\n }\r\n })\r\n return nodes\r\n}\r\n\r\n/**\r\n * @description:One obj generates one line of text \u4E00\u4E2Aobj\u751F\u6210\u4E00\u4E2A\u4E00\u884C\u6587\u5B57\r\n * @param {ItemType} obj\r\n * @param {Boolean} last Is it the last one \u662F\u4E0D\u662F\u6700\u540E\u4E00\u4E2A\r\n * @return {*}\r\n */\r\nfunction setMd(obj: ItemType, last: Boolean): string {\r\n let filesString = ''\r\n const blank = '\u2502 '.repeat(obj.level) // \u91CD\u590D\u7A7A\u767D\r\n const pre = `${blank}${last ? '\u2514\u2500\u2500' : '\u251C\u2500\u2500'} ${obj.name}`\r\n if (obj.isDir) {\r\n filesString += `${pre}\\n`\r\n } else {\r\n filesString += `${pre} ${obj.note}\\n`\r\n }\r\n return filesString\r\n}\r\n\r\n/**\r\n * @description: Write the result to JS file \u628A\u7ED3\u679C\u5199\u5165\u5230js\u6587\u4EF6\r\n * @param {data} \u8981\u5199\u7684\u6570\u636E\r\n * @return {fileName} \u8981\u5199\u5165\u6587\u4EF6\u5730\u5740\r\n */\r\n// function wirteJs(data: string, filePath: string) {\r\n// const file = path.resolve(__dirname, filePath)\r\n// const pre = 'export default'\r\n// // \u5F02\u6B65\u5199\u5165\u6570\u636E\u5230\u6587\u4EF6\r\n// fs.writeFile(file, pre + data, { encoding: 'utf8' }, (err) => {\r\n// console.error(err)\r\n// })\r\n// }\r\n/**\r\n * @description:Thousands format \u5343\u5206\u4F4D\u683C\u5F0F\u5316\r\n * @param {num} To format a number \u8981\u683C\u5F0F\u5316\u6570\u5B57\r\n * @return {string}\r\n */\r\nfunction format(num: number) {\r\n var reg = /\\d{1,3}(?=(\\d{3})+$)/g\r\n return (num + '').replace(reg, '$&,')\r\n}\r\n/**\r\n * @description: Generate statistics MD \u751F\u6210\u7EDF\u8BA1md\r\n * @param {object} option\r\n * @return {*}\r\n */\r\nfunction setCountMd(obj: secoutType) {\r\n const { rowTotleNumber, sizeTotleNumber, coutObj } = obj\r\n let countMd = ''\r\n let totle=0\r\n for (const key in coutObj) {\r\n const ele = coutObj[key]\r\n totle += ele\r\n countMd += `The suffix is ${key} has ${ele} files\\n`\r\n }\r\n countMd += `The totle has ${totle} files\\n`\r\n let md = `Total number of file lines: ${format(rowTotleNumber)},\r\nTotal number of codes: ${format(sizeTotleNumber)} \\n`\r\n md = countMd + md\r\n return md\r\n // wirteMd(md, `${path.resolve('./')}\\\\count-md.md`)\r\n}\r\n/**\r\n * @description: Get statistics \u5F97\u5230\u7EDF\u8BA1\r\n * @param {Array} nodes\r\n * @return {*}\r\n */\r\nfunction getCountMd(datas: Array<ItemType>) {\r\n let rowTotleNumber = 0\r\n let sizeTotleNumber = 0\r\n const coutObj: { [key: string]: number } = {}\r\n function getDeatle(nodes: Array<ItemType>) {\r\n nodes.forEach((obj: ItemType) => {\r\n if (obj.children) getDeatle(obj.children)\r\n else {\r\n if (!coutObj.hasOwnProperty(obj.suffix)) coutObj[obj.suffix] = 0\r\n coutObj[obj.suffix]++\r\n rowTotleNumber += obj.rowSize\r\n sizeTotleNumber += obj.size\r\n }\r\n })\r\n }\r\n getDeatle(datas)\r\n return {\r\n rowTotleNumber,\r\n sizeTotleNumber,\r\n coutObj\r\n }\r\n}\r\n\r\n/**\r\n * @description: Generate MD \u751F\u6210md\r\n * @param {object} option\r\n * @return {*}\r\n */\r\nexport function getMd(option?: { ignore: string[] | undefined; include: string[] | undefined } | undefined) {\r\n console.log('\\x1B[36m%s\\x1B[0m', '*** run location: ', path.resolve('./')+'\\n')\r\n const nodes = getFileNodes(option)\r\n // \u5F97\u5230md\u5BF9\u8C61\r\n // wirteJs(JSON.stringify(nodes), __dirname + '\\\\readme-file.js')\r\n const countMdObj = getCountMd(nodes)\r\n const coutMd = setCountMd(countMdObj)\r\n console.log('\\x1B[33m%s\\x1b[0m', coutMd)\r\n const note = getNote(nodes) // \u5F97\u5230\u6240\u6709note\u7684\u6570\u7EC4\r\n const md = note.join('')+'\\n' // \u6570\u7EC4\u8F6C\u5B57\u7B26\u4E32\r\n if (md.length > 0) {\r\n console.log('\\x1B[36m%s\\x1B[0m', '*** Automatic generation completed ! ')\r\n }\r\n\r\n return md + coutMd\r\n}\r\n\r\n/**\r\n * @description:Write the result to JS file \u628A\u7ED3\u679C\u5199\u5165\u5230js\u6587\u4EF6\r\n * @param {data} \u8981\u5199\u7684\u6570\u636E\r\n * @return {fileName} \u8981\u5199\u5165\u6587\u4EF6\u5730\u5740\r\n */\r\nexport function wirteMd(data: string, filePath: string) {\r\n const file = path.resolve(__dirname, filePath)\r\n // \u5F02\u6B65\u5199\u5165\u6570\u636E\u5230\u6587\u4EF6\r\n fs.writeFile(file, data, { encoding: 'utf8' }, () => {\r\n console.log('Write successful')\r\n })\r\n}\r\n", "import arg from 'arg'\r\nconst stringToArgs = (rawArgs: string[]) => {\r\n const args = arg(\r\n {\r\n '--ignore': String,\r\n '--include': String,\r\n '--version': Boolean,\r\n '--help': Boolean,\r\n '-h': '--help',\r\n '-i': '--ignore',\r\n '-in': '--include',\r\n '-v': '--version'\r\n },\r\n {\r\n argv: rawArgs.slice(2)\r\n }\r\n )\r\n return {\r\n help: args['--help'],\r\n ignore: args['--ignore'],\r\n include: args['--include'],\r\n version: args['--version']\r\n }\r\n}\r\n\r\nexport default stringToArgs\r\n", "const st = `Usage: agmd--include str--ignore str\r\n\r\n Options:\r\n --include string / -i string.......... include file extension\r\n --ignore string / -in string........... ignore file or fold\r\n --version / -v ........... seach vesion\r\n Str deafult:\r\n --ignore img,styles,node_modules,LICENSE,.git,.github,dist,.husky,.vscode,readme-file.js,readme-md.js\r\n --include .js,.vue,.ts\r\n\r\n Note:\r\n There should be no space between strings in a configuration\r\n\r\n Examples:\r\n $ agmd --ignore lib,node_modules,dist --include .js,.ts,.vue`\r\n\r\nfunction help() {\r\n console.log(st)\r\n process.exit(0)\r\n}\r\nexport default help\r\n", "import help from '../help'\r\nimport pkg from '../../package.json'\r\ninterface parseType {\r\n version?: Boolean | undefined\r\n includes?: string[]\r\n ignores?: string[]\r\n help: Boolean | undefined\r\n ignore: string | undefined\r\n include: string | undefined\r\n}\r\nfunction handle(settings: parseType) {\r\n if (settings.help) {\r\n help()\r\n }\r\n if (settings.version) {\r\n console.log(`agmd version is: ` + '\\x1B[36m%s\\x1B[0m', pkg.version)\r\n process.exit(0)\r\n }\r\n if (settings.ignore) {\r\n settings.ignores = settings.ignore.split(' ')\r\n }\r\n if (settings.include) {\r\n settings.includes = settings.include.split(' ')\r\n }\r\n return settings\r\n}\r\n\r\nexport default handle\r\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/lib/index.cjs.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * agmd v0.2.8
2
+ * agmd v0.2.9
3
3
  * author:kakajun <253495832@qq.com>
4
- * Sun Mar 20 2022 22:57:02 GMT+0800 (中国标准时间)
4
+ * Tue Mar 22 2022 21:32:12 GMT+0800 (中国标准时间)
5
5
  */
6
6
  var __create = Object.create;
7
7
  var __defProp = Object.defineProperty;
@@ -50,7 +50,12 @@ function getFile(file) {
50
50
  }
51
51
  function getFileNodes(option, nodes = [], dir = import_path.default.resolve("./"), level = 0) {
52
52
  let ignore = [
53
+ "public",
54
+ "build",
53
55
  "img",
56
+ "assets",
57
+ "mock",
58
+ "api",
54
59
  "styles",
55
60
  "node_modules",
56
61
  "LICENSE",
@@ -59,7 +64,12 @@ function getFileNodes(option, nodes = [], dir = import_path.default.resolve("./"
59
64
  "dist",
60
65
  ".husky",
61
66
  ".vscode",
67
+ "babel.config.js",
68
+ "prettier.config.js",
69
+ "commitlint.config.js",
62
70
  "readme-file.js",
71
+ "vue.config.js",
72
+ ".eslintrc.js",
63
73
  "readme-md.js"
64
74
  ];
65
75
  let include = [".js", ".vue", ".ts"];
@@ -136,13 +146,6 @@ function setMd(obj, last) {
136
146
  }
137
147
  return filesString;
138
148
  }
139
- function wirteJs(data, filePath) {
140
- const file = import_path.default.resolve(__dirname, filePath);
141
- const pre = "export default";
142
- import_fs.default.writeFile(file, pre + data, { encoding: "utf8" }, (err) => {
143
- console.error(err);
144
- });
145
- }
146
149
  function format(num) {
147
150
  var reg = /\d{1,3}(?=(\d{3})+$)/g;
148
151
  return (num + "").replace(reg, "$&,");
@@ -190,23 +193,22 @@ function getCountMd(datas) {
190
193
  };
191
194
  }
192
195
  function getMd(option) {
193
- console.log("\x1B[36m%s\x1B[0m", "*** run location: ", import_path.default.resolve("./"));
196
+ console.log("\x1B[36m%s\x1B[0m", "*** run location: ", import_path.default.resolve("./") + "\n");
194
197
  const nodes = getFileNodes(option);
195
- wirteJs(JSON.stringify(nodes), __dirname + "\\readme-file.js");
196
198
  const countMdObj = getCountMd(nodes);
197
199
  const coutMd = setCountMd(countMdObj);
200
+ console.log("\x1B[33m%s\x1B[0m", coutMd);
198
201
  const note = getNote(nodes);
199
202
  const md = note.join("") + "\n";
200
203
  if (md.length > 0) {
201
204
  console.log("\x1B[36m%s\x1B[0m", "*** Automatic generation completed ! ");
202
205
  }
203
- console.log("\x1B[33m%s\x1B[0m:", coutMd);
204
206
  return md + coutMd;
205
207
  }
206
208
  function wirteMd(data, filePath) {
207
209
  const file = import_path.default.resolve(__dirname, filePath);
208
- import_fs.default.writeFile(file, data, { encoding: "utf8" }, (err) => {
209
- console.error(err);
210
+ import_fs.default.writeFile(file, data, { encoding: "utf8" }, () => {
211
+ console.log("Write successful");
210
212
  });
211
213
  }
212
214
  module.exports = __toCommonJS(src_exports);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "sourcesContent": ["import fs from 'fs'\r\nimport path from 'path'\r\n\r\n/**\r\n * @description:Gets the header comment of the file \u83B7\u53D6\u6587\u4EF6\u7684\u5934\u90E8\u6CE8\u91CA\r\n * @param {*} file\r\n * @return {*}\r\n */\r\nfunction getFile(file: fs.PathOrFileDescriptor) {\r\n const str = fs.readFileSync(file, 'utf-8')\r\n const size = str.length\r\n const sarr = str.split(/[\\n,]/g)\r\n const rowSize = sarr.length\r\n const f =\r\n sarr[0].indexOf('eslint') === -1 &&\r\n (sarr[0].indexOf('-->') > -1 || sarr[0].indexOf('*/') > -1 || sarr[0].indexOf('//') > -1)\r\n ? sarr[0]\r\n : ''\r\n return { note: f, size, rowSize }\r\n}\r\n\r\ntype ItemType = {\r\n name: string\r\n isDir: boolean\r\n level: number\r\n note: string\r\n size: number\r\n suffix: string\r\n rowSize: number\r\n children?: ItemType[]\r\n}\r\n\r\ntype secoutType = { rowTotleNumber: number; sizeTotleNumber: number; coutObj: { [key: string]: number } }\r\n\r\n/**\r\n * @description:Generate node information for all files \u751F\u6210\u6240\u6709\u6587\u4EF6\u7684node\u4FE1\u606F\r\n * @param {Array} nodes\r\n * @param {*} dir\r\n * @param {Number} level\r\n * @return {*}\r\n */\r\nexport function getFileNodes(\r\n option: { ignore: string[] | undefined; include: string[] | undefined } | undefined,\r\n nodes: Array<ItemType> = [],\r\n dir = path.resolve('./'),\r\n level = 0\r\n): Array<ItemType> {\r\n //File filtering -- full name with suffix required \u6587\u4EF6\u8FC7\u6EE4--\u9700\u8981\u5168\u79F0\u5E26\u540E\u7F00\r\n let ignore = [\r\n 'img',\r\n 'styles',\r\n 'node_modules',\r\n 'LICENSE',\r\n '.git',\r\n '.github',\r\n 'dist',\r\n '.husky',\r\n '.vscode',\r\n 'readme-file.js',\r\n 'readme-md.js'\r\n ]\r\n //File suffix contains only \u6587\u4EF6\u540E\u7F00\u53EA\u5305\u542B\r\n let include = ['.js', '.vue', '.ts']\r\n\r\n if (option) {\r\n ignore = option.ignore || ignore\r\n include = option.include || include\r\n }\r\n const files = fs\r\n .readdirSync(dir)\r\n .map((item) => {\r\n const fullPath = path.join(dir, item)\r\n const isDir = fs.lstatSync(fullPath).isDirectory()\r\n return {\r\n name: item,\r\n isDir,\r\n level,\r\n note: ''\r\n } as ItemType\r\n })\r\n //Sort folders and files, otherwise the generated will not correspond to the opening order of the editor \u5BF9\u6587\u4EF6\u5939\u548C\u6587\u4EF6\u8FDB\u884C\u6392\u5E8F,\u8981\u4E0D\u7136\u751F\u6210\u7684\u548C\u7F16\u8F91\u5668\u6253\u5F00\u7684\u987A\u5E8F\u4E0D\u5BF9\u5E94\r\n .sort((a, b) => {\r\n if (!a.isDir && b.isDir) return 1\r\n if (a.isDir && !b.isDir) return -1\r\n if ((a.isDir && b.isDir) || (!a.isDir && !b.isDir)) return 0\r\n return 0\r\n })\r\n for (let index = 0; index < files.length; index += 1) {\r\n const item = files[index]\r\n //Folder filtering is handled here \u8FD9\u91CC\u5904\u7406\u6587\u4EF6\u5939\u8FC7\u6EE4\r\n const foldFlag = ignore.findIndex((obj: string) => obj === item.name)\r\n if (foldFlag === -1) {\r\n const fullPath = path.join(dir, item.name)\r\n const isDir = fs.lstatSync(fullPath).isDirectory()\r\n if (isDir) {\r\n //recursion \u9012\u5F52\r\n getFileNodes(option, (item.children = []), fullPath, level + 1)\r\n nodes.push(item)\r\n } else {\r\n const i = fullPath.lastIndexOf('.')\r\n const lastName = fullPath.substring(i)\r\n //File filtering is handled here \u8FD9\u91CC\u5904\u7406\u6587\u4EF6\u8FC7\u6EE4\r\n if (include.includes(lastName)) {\r\n const obj = getFile(fullPath)\r\n Object.assign(item, obj)\r\n item.suffix = lastName\r\n nodes.push(item)\r\n }\r\n }\r\n }\r\n }\r\n return nodes\r\n}\r\n\r\n/**\r\n * @description:Recursive file name + note \u9012\u5F52\u5F97\u5230\u6587\u4EF6\u540D+note\r\n * @param {Array} datas\r\n * @param {string} keys\r\n * @return {*}\r\n */\r\nfunction getNote(datas: Array<ItemType>, keys?: string[]) {\r\n const nodes = keys || []\r\n datas.forEach((obj: ItemType, index: Number) => {\r\n const last = index === datas.length - 1\r\n if (obj.children) {\r\n //fold\r\n const md = setMd(obj, last)\r\n nodes.push(md)\r\n getNote(obj.children, nodes)\r\n }\r\n // file\r\n else {\r\n const md = setMd(obj, last)\r\n nodes.push(md)\r\n }\r\n })\r\n return nodes\r\n}\r\n\r\n/**\r\n * @description:One obj generates one line of text \u4E00\u4E2Aobj\u751F\u6210\u4E00\u4E2A\u4E00\u884C\u6587\u5B57\r\n * @param {ItemType} obj\r\n * @param {Boolean} last Is it the last one \u662F\u4E0D\u662F\u6700\u540E\u4E00\u4E2A\r\n * @return {*}\r\n */\r\nfunction setMd(obj: ItemType, last: Boolean): string {\r\n let filesString = ''\r\n const blank = '\u2502 '.repeat(obj.level) // \u91CD\u590D\u7A7A\u767D\r\n const pre = `${blank}${last ? '\u2514\u2500\u2500' : '\u251C\u2500\u2500'} ${obj.name}`\r\n if (obj.isDir) {\r\n filesString += `${pre}\\n`\r\n } else {\r\n filesString += `${pre} ${obj.note}\\n`\r\n }\r\n return filesString\r\n}\r\n\r\n/**\r\n * @description: Write the result to JS file \u628A\u7ED3\u679C\u5199\u5165\u5230js\u6587\u4EF6\r\n * @param {data} \u8981\u5199\u7684\u6570\u636E\r\n * @return {fileName} \u8981\u5199\u5165\u6587\u4EF6\u5730\u5740\r\n */\r\nfunction wirteJs(data: string, filePath: string) {\r\n const file = path.resolve(__dirname, filePath)\r\n const pre = 'export default'\r\n // \u5F02\u6B65\u5199\u5165\u6570\u636E\u5230\u6587\u4EF6\r\n fs.writeFile(file, pre + data, { encoding: 'utf8' }, (err) => {\r\n console.error(err)\r\n })\r\n}\r\n/**\r\n * @description:Thousands format \u5343\u5206\u4F4D\u683C\u5F0F\u5316\r\n * @param {num} To format a number \u8981\u683C\u5F0F\u5316\u6570\u5B57\r\n * @return {string}\r\n */\r\nfunction format(num: number) {\r\n var reg = /\\d{1,3}(?=(\\d{3})+$)/g\r\n return (num + '').replace(reg, '$&,')\r\n}\r\n/**\r\n * @description: Generate statistics MD \u751F\u6210\u7EDF\u8BA1md\r\n * @param {object} option\r\n * @return {*}\r\n */\r\nfunction setCountMd(obj: secoutType) {\r\n const { rowTotleNumber, sizeTotleNumber, coutObj } = obj\r\n let countMd = ''\r\n let totle=0\r\n for (const key in coutObj) {\r\n const ele = coutObj[key]\r\n totle += ele\r\n countMd += `The suffix is ${key} has ${ele} files\\n`\r\n }\r\n countMd += `The totle has ${totle} files\\n`\r\n let md = `Total number of file lines: ${format(rowTotleNumber)},\r\nTotal number of codes: ${format(sizeTotleNumber)} \\n`\r\n md = countMd + md\r\n return md\r\n // wirteMd(md, `${path.resolve('./')}\\\\count-md.md`)\r\n}\r\n/**\r\n * @description: Get statistics \u5F97\u5230\u7EDF\u8BA1\r\n * @param {Array} nodes\r\n * @return {*}\r\n */\r\nfunction getCountMd(datas: Array<ItemType>) {\r\n let rowTotleNumber = 0\r\n let sizeTotleNumber = 0\r\n const coutObj: { [key: string]: number } = {}\r\n function getDeatle(nodes: Array<ItemType>) {\r\n nodes.forEach((obj: ItemType) => {\r\n if (obj.children) getDeatle(obj.children)\r\n else {\r\n if (!coutObj.hasOwnProperty(obj.suffix)) coutObj[obj.suffix] = 0\r\n coutObj[obj.suffix]++\r\n rowTotleNumber += obj.rowSize\r\n sizeTotleNumber += obj.size\r\n }\r\n })\r\n }\r\n getDeatle(datas)\r\n return {\r\n rowTotleNumber,\r\n sizeTotleNumber,\r\n coutObj\r\n }\r\n}\r\n\r\n/**\r\n * @description: Generate MD \u751F\u6210md\r\n * @param {object} option\r\n * @return {*}\r\n */\r\nexport function getMd(option?: { ignore: string[] | undefined; include: string[] | undefined } | undefined) {\r\n console.log('\\x1B[36m%s\\x1B[0m', '*** run location: ', path.resolve('./'))\r\n const nodes = getFileNodes(option)\r\n // \u5F97\u5230md\u5BF9\u8C61\r\n wirteJs(JSON.stringify(nodes), __dirname + '\\\\readme-file.js')\r\n const countMdObj = getCountMd(nodes)\r\n const coutMd= setCountMd(countMdObj)\r\n const note = getNote(nodes) // \u5F97\u5230\u6240\u6709note\u7684\u6570\u7EC4\r\n const md = note.join('')+'\\n' // \u6570\u7EC4\u8F6C\u5B57\u7B26\u4E32\r\n if (md.length > 0) {\r\n console.log('\\x1B[36m%s\\x1B[0m', '*** Automatic generation completed ! ')\r\n }\r\n console.log('\\x1B[33m%s\\x1b[0m:', coutMd)\r\n return md + coutMd\r\n}\r\n\r\n/**\r\n * @description:Write the result to JS file \u628A\u7ED3\u679C\u5199\u5165\u5230js\u6587\u4EF6\r\n * @param {data} \u8981\u5199\u7684\u6570\u636E\r\n * @return {fileName} \u8981\u5199\u5165\u6587\u4EF6\u5730\u5740\r\n */\r\nexport function wirteMd(data: string, filePath: string) {\r\n const file = path.resolve(__dirname, filePath)\r\n // \u5F02\u6B65\u5199\u5165\u6570\u636E\u5230\u6587\u4EF6\r\n fs.writeFile(file, data, { encoding: 'utf8' }, (err) => {\r\n console.error(err)\r\n })\r\n}\r\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import fs from 'fs'\r\nimport path from 'path'\r\n\r\n/**\r\n * @description:Gets the header comment of the file \u83B7\u53D6\u6587\u4EF6\u7684\u5934\u90E8\u6CE8\u91CA\r\n * @param {*} file\r\n * @return {*}\r\n */\r\nfunction getFile(file: fs.PathOrFileDescriptor) {\r\n const str = fs.readFileSync(file, 'utf-8')\r\n const size = str.length\r\n const sarr = str.split(/[\\n,]/g)\r\n const rowSize = sarr.length\r\n const f =\r\n sarr[0].indexOf('eslint') === -1 &&\r\n (sarr[0].indexOf('-->') > -1 || sarr[0].indexOf('*/') > -1 || sarr[0].indexOf('//') > -1)\r\n ? sarr[0]\r\n : ''\r\n return { note: f, size, rowSize }\r\n}\r\n\r\ntype ItemType = {\r\n name: string\r\n isDir: boolean\r\n level: number\r\n note: string\r\n size: number\r\n suffix: string\r\n rowSize: number\r\n children?: ItemType[]\r\n}\r\n\r\ntype secoutType = { rowTotleNumber: number; sizeTotleNumber: number; coutObj: { [key: string]: number } }\r\n\r\n/**\r\n * @description:Generate node information for all files \u751F\u6210\u6240\u6709\u6587\u4EF6\u7684node\u4FE1\u606F\r\n * @param {Array} nodes\r\n * @param {*} dir\r\n * @param {Number} level\r\n * @return {*}\r\n */\r\nexport function getFileNodes(\r\n option: { ignore: string[] | undefined; include: string[] | undefined } | undefined,\r\n nodes: Array<ItemType> = [],\r\n dir = path.resolve('./'),\r\n level = 0\r\n): Array<ItemType> {\r\n //File filtering -- full name with suffix required \u6587\u4EF6\u8FC7\u6EE4--\u9700\u8981\u5168\u79F0\u5E26\u540E\u7F00\r\n let ignore = [\r\n 'public',\r\n 'build',\r\n 'img',\r\n 'assets',\r\n 'mock',\r\n 'api',\r\n 'styles',\r\n 'node_modules',\r\n 'LICENSE',\r\n '.git',\r\n '.github',\r\n 'dist',\r\n '.husky',\r\n '.vscode',\r\n 'babel.config.js',\r\n 'prettier.config.js',\r\n 'commitlint.config.js',\r\n 'readme-file.js',\r\n 'vue.config.js',\r\n '.eslintrc.js',\r\n 'readme-md.js'\r\n ]\r\n //File suffix contains only \u6587\u4EF6\u540E\u7F00\u53EA\u5305\u542B\r\n let include = ['.js', '.vue', '.ts']\r\n\r\n if (option) {\r\n ignore = option.ignore || ignore\r\n include = option.include || include\r\n }\r\n const files = fs\r\n .readdirSync(dir)\r\n .map((item) => {\r\n const fullPath = path.join(dir, item)\r\n const isDir = fs.lstatSync(fullPath).isDirectory()\r\n return {\r\n name: item,\r\n isDir,\r\n level,\r\n note: ''\r\n } as ItemType\r\n })\r\n //Sort folders and files, otherwise the generated will not correspond to the opening order of the editor \u5BF9\u6587\u4EF6\u5939\u548C\u6587\u4EF6\u8FDB\u884C\u6392\u5E8F,\u8981\u4E0D\u7136\u751F\u6210\u7684\u548C\u7F16\u8F91\u5668\u6253\u5F00\u7684\u987A\u5E8F\u4E0D\u5BF9\u5E94\r\n .sort((a, b) => {\r\n if (!a.isDir && b.isDir) return 1\r\n if (a.isDir && !b.isDir) return -1\r\n if ((a.isDir && b.isDir) || (!a.isDir && !b.isDir)) return 0\r\n return 0\r\n })\r\n for (let index = 0; index < files.length; index += 1) {\r\n const item = files[index]\r\n //Folder filtering is handled here \u8FD9\u91CC\u5904\u7406\u6587\u4EF6\u5939\u8FC7\u6EE4\r\n const foldFlag = ignore.findIndex((obj: string) => obj === item.name)\r\n if (foldFlag === -1) {\r\n const fullPath = path.join(dir, item.name)\r\n const isDir = fs.lstatSync(fullPath).isDirectory()\r\n if (isDir) {\r\n //recursion \u9012\u5F52\r\n getFileNodes(option, (item.children = []), fullPath, level + 1)\r\n nodes.push(item)\r\n } else {\r\n const i = fullPath.lastIndexOf('.')\r\n const lastName = fullPath.substring(i)\r\n //File filtering is handled here \u8FD9\u91CC\u5904\u7406\u6587\u4EF6\u8FC7\u6EE4\r\n if (include.includes(lastName)) {\r\n const obj = getFile(fullPath)\r\n Object.assign(item, obj)\r\n item.suffix = lastName\r\n nodes.push(item)\r\n }\r\n }\r\n }\r\n }\r\n return nodes\r\n}\r\n\r\n/**\r\n * @description:Recursive file name + note \u9012\u5F52\u5F97\u5230\u6587\u4EF6\u540D+note\r\n * @param {Array} datas\r\n * @param {string} keys\r\n * @return {*}\r\n */\r\nfunction getNote(datas: Array<ItemType>, keys?: string[]) {\r\n const nodes = keys || []\r\n datas.forEach((obj: ItemType, index: Number) => {\r\n const last = index === datas.length - 1\r\n if (obj.children) {\r\n //fold\r\n const md = setMd(obj, last)\r\n nodes.push(md)\r\n getNote(obj.children, nodes)\r\n }\r\n // file\r\n else {\r\n const md = setMd(obj, last)\r\n nodes.push(md)\r\n }\r\n })\r\n return nodes\r\n}\r\n\r\n/**\r\n * @description:One obj generates one line of text \u4E00\u4E2Aobj\u751F\u6210\u4E00\u4E2A\u4E00\u884C\u6587\u5B57\r\n * @param {ItemType} obj\r\n * @param {Boolean} last Is it the last one \u662F\u4E0D\u662F\u6700\u540E\u4E00\u4E2A\r\n * @return {*}\r\n */\r\nfunction setMd(obj: ItemType, last: Boolean): string {\r\n let filesString = ''\r\n const blank = '\u2502 '.repeat(obj.level) // \u91CD\u590D\u7A7A\u767D\r\n const pre = `${blank}${last ? '\u2514\u2500\u2500' : '\u251C\u2500\u2500'} ${obj.name}`\r\n if (obj.isDir) {\r\n filesString += `${pre}\\n`\r\n } else {\r\n filesString += `${pre} ${obj.note}\\n`\r\n }\r\n return filesString\r\n}\r\n\r\n/**\r\n * @description: Write the result to JS file \u628A\u7ED3\u679C\u5199\u5165\u5230js\u6587\u4EF6\r\n * @param {data} \u8981\u5199\u7684\u6570\u636E\r\n * @return {fileName} \u8981\u5199\u5165\u6587\u4EF6\u5730\u5740\r\n */\r\n// function wirteJs(data: string, filePath: string) {\r\n// const file = path.resolve(__dirname, filePath)\r\n// const pre = 'export default'\r\n// // \u5F02\u6B65\u5199\u5165\u6570\u636E\u5230\u6587\u4EF6\r\n// fs.writeFile(file, pre + data, { encoding: 'utf8' }, (err) => {\r\n// console.error(err)\r\n// })\r\n// }\r\n/**\r\n * @description:Thousands format \u5343\u5206\u4F4D\u683C\u5F0F\u5316\r\n * @param {num} To format a number \u8981\u683C\u5F0F\u5316\u6570\u5B57\r\n * @return {string}\r\n */\r\nfunction format(num: number) {\r\n var reg = /\\d{1,3}(?=(\\d{3})+$)/g\r\n return (num + '').replace(reg, '$&,')\r\n}\r\n/**\r\n * @description: Generate statistics MD \u751F\u6210\u7EDF\u8BA1md\r\n * @param {object} option\r\n * @return {*}\r\n */\r\nfunction setCountMd(obj: secoutType) {\r\n const { rowTotleNumber, sizeTotleNumber, coutObj } = obj\r\n let countMd = ''\r\n let totle=0\r\n for (const key in coutObj) {\r\n const ele = coutObj[key]\r\n totle += ele\r\n countMd += `The suffix is ${key} has ${ele} files\\n`\r\n }\r\n countMd += `The totle has ${totle} files\\n`\r\n let md = `Total number of file lines: ${format(rowTotleNumber)},\r\nTotal number of codes: ${format(sizeTotleNumber)} \\n`\r\n md = countMd + md\r\n return md\r\n // wirteMd(md, `${path.resolve('./')}\\\\count-md.md`)\r\n}\r\n/**\r\n * @description: Get statistics \u5F97\u5230\u7EDF\u8BA1\r\n * @param {Array} nodes\r\n * @return {*}\r\n */\r\nfunction getCountMd(datas: Array<ItemType>) {\r\n let rowTotleNumber = 0\r\n let sizeTotleNumber = 0\r\n const coutObj: { [key: string]: number } = {}\r\n function getDeatle(nodes: Array<ItemType>) {\r\n nodes.forEach((obj: ItemType) => {\r\n if (obj.children) getDeatle(obj.children)\r\n else {\r\n if (!coutObj.hasOwnProperty(obj.suffix)) coutObj[obj.suffix] = 0\r\n coutObj[obj.suffix]++\r\n rowTotleNumber += obj.rowSize\r\n sizeTotleNumber += obj.size\r\n }\r\n })\r\n }\r\n getDeatle(datas)\r\n return {\r\n rowTotleNumber,\r\n sizeTotleNumber,\r\n coutObj\r\n }\r\n}\r\n\r\n/**\r\n * @description: Generate MD \u751F\u6210md\r\n * @param {object} option\r\n * @return {*}\r\n */\r\nexport function getMd(option?: { ignore: string[] | undefined; include: string[] | undefined } | undefined) {\r\n console.log('\\x1B[36m%s\\x1B[0m', '*** run location: ', path.resolve('./')+'\\n')\r\n const nodes = getFileNodes(option)\r\n // \u5F97\u5230md\u5BF9\u8C61\r\n // wirteJs(JSON.stringify(nodes), __dirname + '\\\\readme-file.js')\r\n const countMdObj = getCountMd(nodes)\r\n const coutMd = setCountMd(countMdObj)\r\n console.log('\\x1B[33m%s\\x1b[0m', coutMd)\r\n const note = getNote(nodes) // \u5F97\u5230\u6240\u6709note\u7684\u6570\u7EC4\r\n const md = note.join('')+'\\n' // \u6570\u7EC4\u8F6C\u5B57\u7B26\u4E32\r\n if (md.length > 0) {\r\n console.log('\\x1B[36m%s\\x1B[0m', '*** Automatic generation completed ! ')\r\n }\r\n\r\n return md + coutMd\r\n}\r\n\r\n/**\r\n * @description:Write the result to JS file \u628A\u7ED3\u679C\u5199\u5165\u5230js\u6587\u4EF6\r\n * @param {data} \u8981\u5199\u7684\u6570\u636E\r\n * @return {fileName} \u8981\u5199\u5165\u6587\u4EF6\u5730\u5740\r\n */\r\nexport function wirteMd(data: string, filePath: string) {\r\n const file = path.resolve(__dirname, filePath)\r\n // \u5F02\u6B65\u5199\u5165\u6570\u636E\u5230\u6587\u4EF6\r\n fs.writeFile(file, data, { encoding: 'utf8' }, () => {\r\n console.log('Write successful')\r\n })\r\n}\r\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/lib/index.esm.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * agmd v0.2.8
2
+ * agmd v0.2.9
3
3
  * author:kakajun <253495832@qq.com>
4
- * Sun Mar 20 2022 22:57:02 GMT+0800 (中国标准时间)
4
+ * Tue Mar 22 2022 21:32:12 GMT+0800 (中国标准时间)
5
5
  */
6
6
  // src/index.ts
7
7
  import fs from "fs";
@@ -16,7 +16,12 @@ function getFile(file) {
16
16
  }
17
17
  function getFileNodes(option, nodes = [], dir = path.resolve("./"), level = 0) {
18
18
  let ignore = [
19
+ "public",
20
+ "build",
19
21
  "img",
22
+ "assets",
23
+ "mock",
24
+ "api",
20
25
  "styles",
21
26
  "node_modules",
22
27
  "LICENSE",
@@ -25,7 +30,12 @@ function getFileNodes(option, nodes = [], dir = path.resolve("./"), level = 0) {
25
30
  "dist",
26
31
  ".husky",
27
32
  ".vscode",
33
+ "babel.config.js",
34
+ "prettier.config.js",
35
+ "commitlint.config.js",
28
36
  "readme-file.js",
37
+ "vue.config.js",
38
+ ".eslintrc.js",
29
39
  "readme-md.js"
30
40
  ];
31
41
  let include = [".js", ".vue", ".ts"];
@@ -102,13 +112,6 @@ function setMd(obj, last) {
102
112
  }
103
113
  return filesString;
104
114
  }
105
- function wirteJs(data, filePath) {
106
- const file = path.resolve(__dirname, filePath);
107
- const pre = "export default";
108
- fs.writeFile(file, pre + data, { encoding: "utf8" }, (err) => {
109
- console.error(err);
110
- });
111
- }
112
115
  function format(num) {
113
116
  var reg = /\d{1,3}(?=(\d{3})+$)/g;
114
117
  return (num + "").replace(reg, "$&,");
@@ -156,23 +159,22 @@ function getCountMd(datas) {
156
159
  };
157
160
  }
158
161
  function getMd(option) {
159
- console.log("\x1B[36m%s\x1B[0m", "*** run location: ", path.resolve("./"));
162
+ console.log("\x1B[36m%s\x1B[0m", "*** run location: ", path.resolve("./") + "\n");
160
163
  const nodes = getFileNodes(option);
161
- wirteJs(JSON.stringify(nodes), __dirname + "\\readme-file.js");
162
164
  const countMdObj = getCountMd(nodes);
163
165
  const coutMd = setCountMd(countMdObj);
166
+ console.log("\x1B[33m%s\x1B[0m", coutMd);
164
167
  const note = getNote(nodes);
165
168
  const md = note.join("") + "\n";
166
169
  if (md.length > 0) {
167
170
  console.log("\x1B[36m%s\x1B[0m", "*** Automatic generation completed ! ");
168
171
  }
169
- console.log("\x1B[33m%s\x1B[0m:", coutMd);
170
172
  return md + coutMd;
171
173
  }
172
174
  function wirteMd(data, filePath) {
173
175
  const file = path.resolve(__dirname, filePath);
174
- fs.writeFile(file, data, { encoding: "utf8" }, (err) => {
175
- console.error(err);
176
+ fs.writeFile(file, data, { encoding: "utf8" }, () => {
177
+ console.log("Write successful");
176
178
  });
177
179
  }
178
180
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "sourcesContent": ["import fs from 'fs'\r\nimport path from 'path'\r\n\r\n/**\r\n * @description:Gets the header comment of the file \u83B7\u53D6\u6587\u4EF6\u7684\u5934\u90E8\u6CE8\u91CA\r\n * @param {*} file\r\n * @return {*}\r\n */\r\nfunction getFile(file: fs.PathOrFileDescriptor) {\r\n const str = fs.readFileSync(file, 'utf-8')\r\n const size = str.length\r\n const sarr = str.split(/[\\n,]/g)\r\n const rowSize = sarr.length\r\n const f =\r\n sarr[0].indexOf('eslint') === -1 &&\r\n (sarr[0].indexOf('-->') > -1 || sarr[0].indexOf('*/') > -1 || sarr[0].indexOf('//') > -1)\r\n ? sarr[0]\r\n : ''\r\n return { note: f, size, rowSize }\r\n}\r\n\r\ntype ItemType = {\r\n name: string\r\n isDir: boolean\r\n level: number\r\n note: string\r\n size: number\r\n suffix: string\r\n rowSize: number\r\n children?: ItemType[]\r\n}\r\n\r\ntype secoutType = { rowTotleNumber: number; sizeTotleNumber: number; coutObj: { [key: string]: number } }\r\n\r\n/**\r\n * @description:Generate node information for all files \u751F\u6210\u6240\u6709\u6587\u4EF6\u7684node\u4FE1\u606F\r\n * @param {Array} nodes\r\n * @param {*} dir\r\n * @param {Number} level\r\n * @return {*}\r\n */\r\nexport function getFileNodes(\r\n option: { ignore: string[] | undefined; include: string[] | undefined } | undefined,\r\n nodes: Array<ItemType> = [],\r\n dir = path.resolve('./'),\r\n level = 0\r\n): Array<ItemType> {\r\n //File filtering -- full name with suffix required \u6587\u4EF6\u8FC7\u6EE4--\u9700\u8981\u5168\u79F0\u5E26\u540E\u7F00\r\n let ignore = [\r\n 'img',\r\n 'styles',\r\n 'node_modules',\r\n 'LICENSE',\r\n '.git',\r\n '.github',\r\n 'dist',\r\n '.husky',\r\n '.vscode',\r\n 'readme-file.js',\r\n 'readme-md.js'\r\n ]\r\n //File suffix contains only \u6587\u4EF6\u540E\u7F00\u53EA\u5305\u542B\r\n let include = ['.js', '.vue', '.ts']\r\n\r\n if (option) {\r\n ignore = option.ignore || ignore\r\n include = option.include || include\r\n }\r\n const files = fs\r\n .readdirSync(dir)\r\n .map((item) => {\r\n const fullPath = path.join(dir, item)\r\n const isDir = fs.lstatSync(fullPath).isDirectory()\r\n return {\r\n name: item,\r\n isDir,\r\n level,\r\n note: ''\r\n } as ItemType\r\n })\r\n //Sort folders and files, otherwise the generated will not correspond to the opening order of the editor \u5BF9\u6587\u4EF6\u5939\u548C\u6587\u4EF6\u8FDB\u884C\u6392\u5E8F,\u8981\u4E0D\u7136\u751F\u6210\u7684\u548C\u7F16\u8F91\u5668\u6253\u5F00\u7684\u987A\u5E8F\u4E0D\u5BF9\u5E94\r\n .sort((a, b) => {\r\n if (!a.isDir && b.isDir) return 1\r\n if (a.isDir && !b.isDir) return -1\r\n if ((a.isDir && b.isDir) || (!a.isDir && !b.isDir)) return 0\r\n return 0\r\n })\r\n for (let index = 0; index < files.length; index += 1) {\r\n const item = files[index]\r\n //Folder filtering is handled here \u8FD9\u91CC\u5904\u7406\u6587\u4EF6\u5939\u8FC7\u6EE4\r\n const foldFlag = ignore.findIndex((obj: string) => obj === item.name)\r\n if (foldFlag === -1) {\r\n const fullPath = path.join(dir, item.name)\r\n const isDir = fs.lstatSync(fullPath).isDirectory()\r\n if (isDir) {\r\n //recursion \u9012\u5F52\r\n getFileNodes(option, (item.children = []), fullPath, level + 1)\r\n nodes.push(item)\r\n } else {\r\n const i = fullPath.lastIndexOf('.')\r\n const lastName = fullPath.substring(i)\r\n //File filtering is handled here \u8FD9\u91CC\u5904\u7406\u6587\u4EF6\u8FC7\u6EE4\r\n if (include.includes(lastName)) {\r\n const obj = getFile(fullPath)\r\n Object.assign(item, obj)\r\n item.suffix = lastName\r\n nodes.push(item)\r\n }\r\n }\r\n }\r\n }\r\n return nodes\r\n}\r\n\r\n/**\r\n * @description:Recursive file name + note \u9012\u5F52\u5F97\u5230\u6587\u4EF6\u540D+note\r\n * @param {Array} datas\r\n * @param {string} keys\r\n * @return {*}\r\n */\r\nfunction getNote(datas: Array<ItemType>, keys?: string[]) {\r\n const nodes = keys || []\r\n datas.forEach((obj: ItemType, index: Number) => {\r\n const last = index === datas.length - 1\r\n if (obj.children) {\r\n //fold\r\n const md = setMd(obj, last)\r\n nodes.push(md)\r\n getNote(obj.children, nodes)\r\n }\r\n // file\r\n else {\r\n const md = setMd(obj, last)\r\n nodes.push(md)\r\n }\r\n })\r\n return nodes\r\n}\r\n\r\n/**\r\n * @description:One obj generates one line of text \u4E00\u4E2Aobj\u751F\u6210\u4E00\u4E2A\u4E00\u884C\u6587\u5B57\r\n * @param {ItemType} obj\r\n * @param {Boolean} last Is it the last one \u662F\u4E0D\u662F\u6700\u540E\u4E00\u4E2A\r\n * @return {*}\r\n */\r\nfunction setMd(obj: ItemType, last: Boolean): string {\r\n let filesString = ''\r\n const blank = '\u2502 '.repeat(obj.level) // \u91CD\u590D\u7A7A\u767D\r\n const pre = `${blank}${last ? '\u2514\u2500\u2500' : '\u251C\u2500\u2500'} ${obj.name}`\r\n if (obj.isDir) {\r\n filesString += `${pre}\\n`\r\n } else {\r\n filesString += `${pre} ${obj.note}\\n`\r\n }\r\n return filesString\r\n}\r\n\r\n/**\r\n * @description: Write the result to JS file \u628A\u7ED3\u679C\u5199\u5165\u5230js\u6587\u4EF6\r\n * @param {data} \u8981\u5199\u7684\u6570\u636E\r\n * @return {fileName} \u8981\u5199\u5165\u6587\u4EF6\u5730\u5740\r\n */\r\nfunction wirteJs(data: string, filePath: string) {\r\n const file = path.resolve(__dirname, filePath)\r\n const pre = 'export default'\r\n // \u5F02\u6B65\u5199\u5165\u6570\u636E\u5230\u6587\u4EF6\r\n fs.writeFile(file, pre + data, { encoding: 'utf8' }, (err) => {\r\n console.error(err)\r\n })\r\n}\r\n/**\r\n * @description:Thousands format \u5343\u5206\u4F4D\u683C\u5F0F\u5316\r\n * @param {num} To format a number \u8981\u683C\u5F0F\u5316\u6570\u5B57\r\n * @return {string}\r\n */\r\nfunction format(num: number) {\r\n var reg = /\\d{1,3}(?=(\\d{3})+$)/g\r\n return (num + '').replace(reg, '$&,')\r\n}\r\n/**\r\n * @description: Generate statistics MD \u751F\u6210\u7EDF\u8BA1md\r\n * @param {object} option\r\n * @return {*}\r\n */\r\nfunction setCountMd(obj: secoutType) {\r\n const { rowTotleNumber, sizeTotleNumber, coutObj } = obj\r\n let countMd = ''\r\n let totle=0\r\n for (const key in coutObj) {\r\n const ele = coutObj[key]\r\n totle += ele\r\n countMd += `The suffix is ${key} has ${ele} files\\n`\r\n }\r\n countMd += `The totle has ${totle} files\\n`\r\n let md = `Total number of file lines: ${format(rowTotleNumber)},\r\nTotal number of codes: ${format(sizeTotleNumber)} \\n`\r\n md = countMd + md\r\n return md\r\n // wirteMd(md, `${path.resolve('./')}\\\\count-md.md`)\r\n}\r\n/**\r\n * @description: Get statistics \u5F97\u5230\u7EDF\u8BA1\r\n * @param {Array} nodes\r\n * @return {*}\r\n */\r\nfunction getCountMd(datas: Array<ItemType>) {\r\n let rowTotleNumber = 0\r\n let sizeTotleNumber = 0\r\n const coutObj: { [key: string]: number } = {}\r\n function getDeatle(nodes: Array<ItemType>) {\r\n nodes.forEach((obj: ItemType) => {\r\n if (obj.children) getDeatle(obj.children)\r\n else {\r\n if (!coutObj.hasOwnProperty(obj.suffix)) coutObj[obj.suffix] = 0\r\n coutObj[obj.suffix]++\r\n rowTotleNumber += obj.rowSize\r\n sizeTotleNumber += obj.size\r\n }\r\n })\r\n }\r\n getDeatle(datas)\r\n return {\r\n rowTotleNumber,\r\n sizeTotleNumber,\r\n coutObj\r\n }\r\n}\r\n\r\n/**\r\n * @description: Generate MD \u751F\u6210md\r\n * @param {object} option\r\n * @return {*}\r\n */\r\nexport function getMd(option?: { ignore: string[] | undefined; include: string[] | undefined } | undefined) {\r\n console.log('\\x1B[36m%s\\x1B[0m', '*** run location: ', path.resolve('./'))\r\n const nodes = getFileNodes(option)\r\n // \u5F97\u5230md\u5BF9\u8C61\r\n wirteJs(JSON.stringify(nodes), __dirname + '\\\\readme-file.js')\r\n const countMdObj = getCountMd(nodes)\r\n const coutMd= setCountMd(countMdObj)\r\n const note = getNote(nodes) // \u5F97\u5230\u6240\u6709note\u7684\u6570\u7EC4\r\n const md = note.join('')+'\\n' // \u6570\u7EC4\u8F6C\u5B57\u7B26\u4E32\r\n if (md.length > 0) {\r\n console.log('\\x1B[36m%s\\x1B[0m', '*** Automatic generation completed ! ')\r\n }\r\n console.log('\\x1B[33m%s\\x1b[0m:', coutMd)\r\n return md + coutMd\r\n}\r\n\r\n/**\r\n * @description:Write the result to JS file \u628A\u7ED3\u679C\u5199\u5165\u5230js\u6587\u4EF6\r\n * @param {data} \u8981\u5199\u7684\u6570\u636E\r\n * @return {fileName} \u8981\u5199\u5165\u6587\u4EF6\u5730\u5740\r\n */\r\nexport function wirteMd(data: string, filePath: string) {\r\n const file = path.resolve(__dirname, filePath)\r\n // \u5F02\u6B65\u5199\u5165\u6570\u636E\u5230\u6587\u4EF6\r\n fs.writeFile(file, data, { encoding: 'utf8' }, (err) => {\r\n console.error(err)\r\n })\r\n}\r\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import fs from 'fs'\r\nimport path from 'path'\r\n\r\n/**\r\n * @description:Gets the header comment of the file \u83B7\u53D6\u6587\u4EF6\u7684\u5934\u90E8\u6CE8\u91CA\r\n * @param {*} file\r\n * @return {*}\r\n */\r\nfunction getFile(file: fs.PathOrFileDescriptor) {\r\n const str = fs.readFileSync(file, 'utf-8')\r\n const size = str.length\r\n const sarr = str.split(/[\\n,]/g)\r\n const rowSize = sarr.length\r\n const f =\r\n sarr[0].indexOf('eslint') === -1 &&\r\n (sarr[0].indexOf('-->') > -1 || sarr[0].indexOf('*/') > -1 || sarr[0].indexOf('//') > -1)\r\n ? sarr[0]\r\n : ''\r\n return { note: f, size, rowSize }\r\n}\r\n\r\ntype ItemType = {\r\n name: string\r\n isDir: boolean\r\n level: number\r\n note: string\r\n size: number\r\n suffix: string\r\n rowSize: number\r\n children?: ItemType[]\r\n}\r\n\r\ntype secoutType = { rowTotleNumber: number; sizeTotleNumber: number; coutObj: { [key: string]: number } }\r\n\r\n/**\r\n * @description:Generate node information for all files \u751F\u6210\u6240\u6709\u6587\u4EF6\u7684node\u4FE1\u606F\r\n * @param {Array} nodes\r\n * @param {*} dir\r\n * @param {Number} level\r\n * @return {*}\r\n */\r\nexport function getFileNodes(\r\n option: { ignore: string[] | undefined; include: string[] | undefined } | undefined,\r\n nodes: Array<ItemType> = [],\r\n dir = path.resolve('./'),\r\n level = 0\r\n): Array<ItemType> {\r\n //File filtering -- full name with suffix required \u6587\u4EF6\u8FC7\u6EE4--\u9700\u8981\u5168\u79F0\u5E26\u540E\u7F00\r\n let ignore = [\r\n 'public',\r\n 'build',\r\n 'img',\r\n 'assets',\r\n 'mock',\r\n 'api',\r\n 'styles',\r\n 'node_modules',\r\n 'LICENSE',\r\n '.git',\r\n '.github',\r\n 'dist',\r\n '.husky',\r\n '.vscode',\r\n 'babel.config.js',\r\n 'prettier.config.js',\r\n 'commitlint.config.js',\r\n 'readme-file.js',\r\n 'vue.config.js',\r\n '.eslintrc.js',\r\n 'readme-md.js'\r\n ]\r\n //File suffix contains only \u6587\u4EF6\u540E\u7F00\u53EA\u5305\u542B\r\n let include = ['.js', '.vue', '.ts']\r\n\r\n if (option) {\r\n ignore = option.ignore || ignore\r\n include = option.include || include\r\n }\r\n const files = fs\r\n .readdirSync(dir)\r\n .map((item) => {\r\n const fullPath = path.join(dir, item)\r\n const isDir = fs.lstatSync(fullPath).isDirectory()\r\n return {\r\n name: item,\r\n isDir,\r\n level,\r\n note: ''\r\n } as ItemType\r\n })\r\n //Sort folders and files, otherwise the generated will not correspond to the opening order of the editor \u5BF9\u6587\u4EF6\u5939\u548C\u6587\u4EF6\u8FDB\u884C\u6392\u5E8F,\u8981\u4E0D\u7136\u751F\u6210\u7684\u548C\u7F16\u8F91\u5668\u6253\u5F00\u7684\u987A\u5E8F\u4E0D\u5BF9\u5E94\r\n .sort((a, b) => {\r\n if (!a.isDir && b.isDir) return 1\r\n if (a.isDir && !b.isDir) return -1\r\n if ((a.isDir && b.isDir) || (!a.isDir && !b.isDir)) return 0\r\n return 0\r\n })\r\n for (let index = 0; index < files.length; index += 1) {\r\n const item = files[index]\r\n //Folder filtering is handled here \u8FD9\u91CC\u5904\u7406\u6587\u4EF6\u5939\u8FC7\u6EE4\r\n const foldFlag = ignore.findIndex((obj: string) => obj === item.name)\r\n if (foldFlag === -1) {\r\n const fullPath = path.join(dir, item.name)\r\n const isDir = fs.lstatSync(fullPath).isDirectory()\r\n if (isDir) {\r\n //recursion \u9012\u5F52\r\n getFileNodes(option, (item.children = []), fullPath, level + 1)\r\n nodes.push(item)\r\n } else {\r\n const i = fullPath.lastIndexOf('.')\r\n const lastName = fullPath.substring(i)\r\n //File filtering is handled here \u8FD9\u91CC\u5904\u7406\u6587\u4EF6\u8FC7\u6EE4\r\n if (include.includes(lastName)) {\r\n const obj = getFile(fullPath)\r\n Object.assign(item, obj)\r\n item.suffix = lastName\r\n nodes.push(item)\r\n }\r\n }\r\n }\r\n }\r\n return nodes\r\n}\r\n\r\n/**\r\n * @description:Recursive file name + note \u9012\u5F52\u5F97\u5230\u6587\u4EF6\u540D+note\r\n * @param {Array} datas\r\n * @param {string} keys\r\n * @return {*}\r\n */\r\nfunction getNote(datas: Array<ItemType>, keys?: string[]) {\r\n const nodes = keys || []\r\n datas.forEach((obj: ItemType, index: Number) => {\r\n const last = index === datas.length - 1\r\n if (obj.children) {\r\n //fold\r\n const md = setMd(obj, last)\r\n nodes.push(md)\r\n getNote(obj.children, nodes)\r\n }\r\n // file\r\n else {\r\n const md = setMd(obj, last)\r\n nodes.push(md)\r\n }\r\n })\r\n return nodes\r\n}\r\n\r\n/**\r\n * @description:One obj generates one line of text \u4E00\u4E2Aobj\u751F\u6210\u4E00\u4E2A\u4E00\u884C\u6587\u5B57\r\n * @param {ItemType} obj\r\n * @param {Boolean} last Is it the last one \u662F\u4E0D\u662F\u6700\u540E\u4E00\u4E2A\r\n * @return {*}\r\n */\r\nfunction setMd(obj: ItemType, last: Boolean): string {\r\n let filesString = ''\r\n const blank = '\u2502 '.repeat(obj.level) // \u91CD\u590D\u7A7A\u767D\r\n const pre = `${blank}${last ? '\u2514\u2500\u2500' : '\u251C\u2500\u2500'} ${obj.name}`\r\n if (obj.isDir) {\r\n filesString += `${pre}\\n`\r\n } else {\r\n filesString += `${pre} ${obj.note}\\n`\r\n }\r\n return filesString\r\n}\r\n\r\n/**\r\n * @description: Write the result to JS file \u628A\u7ED3\u679C\u5199\u5165\u5230js\u6587\u4EF6\r\n * @param {data} \u8981\u5199\u7684\u6570\u636E\r\n * @return {fileName} \u8981\u5199\u5165\u6587\u4EF6\u5730\u5740\r\n */\r\n// function wirteJs(data: string, filePath: string) {\r\n// const file = path.resolve(__dirname, filePath)\r\n// const pre = 'export default'\r\n// // \u5F02\u6B65\u5199\u5165\u6570\u636E\u5230\u6587\u4EF6\r\n// fs.writeFile(file, pre + data, { encoding: 'utf8' }, (err) => {\r\n// console.error(err)\r\n// })\r\n// }\r\n/**\r\n * @description:Thousands format \u5343\u5206\u4F4D\u683C\u5F0F\u5316\r\n * @param {num} To format a number \u8981\u683C\u5F0F\u5316\u6570\u5B57\r\n * @return {string}\r\n */\r\nfunction format(num: number) {\r\n var reg = /\\d{1,3}(?=(\\d{3})+$)/g\r\n return (num + '').replace(reg, '$&,')\r\n}\r\n/**\r\n * @description: Generate statistics MD \u751F\u6210\u7EDF\u8BA1md\r\n * @param {object} option\r\n * @return {*}\r\n */\r\nfunction setCountMd(obj: secoutType) {\r\n const { rowTotleNumber, sizeTotleNumber, coutObj } = obj\r\n let countMd = ''\r\n let totle=0\r\n for (const key in coutObj) {\r\n const ele = coutObj[key]\r\n totle += ele\r\n countMd += `The suffix is ${key} has ${ele} files\\n`\r\n }\r\n countMd += `The totle has ${totle} files\\n`\r\n let md = `Total number of file lines: ${format(rowTotleNumber)},\r\nTotal number of codes: ${format(sizeTotleNumber)} \\n`\r\n md = countMd + md\r\n return md\r\n // wirteMd(md, `${path.resolve('./')}\\\\count-md.md`)\r\n}\r\n/**\r\n * @description: Get statistics \u5F97\u5230\u7EDF\u8BA1\r\n * @param {Array} nodes\r\n * @return {*}\r\n */\r\nfunction getCountMd(datas: Array<ItemType>) {\r\n let rowTotleNumber = 0\r\n let sizeTotleNumber = 0\r\n const coutObj: { [key: string]: number } = {}\r\n function getDeatle(nodes: Array<ItemType>) {\r\n nodes.forEach((obj: ItemType) => {\r\n if (obj.children) getDeatle(obj.children)\r\n else {\r\n if (!coutObj.hasOwnProperty(obj.suffix)) coutObj[obj.suffix] = 0\r\n coutObj[obj.suffix]++\r\n rowTotleNumber += obj.rowSize\r\n sizeTotleNumber += obj.size\r\n }\r\n })\r\n }\r\n getDeatle(datas)\r\n return {\r\n rowTotleNumber,\r\n sizeTotleNumber,\r\n coutObj\r\n }\r\n}\r\n\r\n/**\r\n * @description: Generate MD \u751F\u6210md\r\n * @param {object} option\r\n * @return {*}\r\n */\r\nexport function getMd(option?: { ignore: string[] | undefined; include: string[] | undefined } | undefined) {\r\n console.log('\\x1B[36m%s\\x1B[0m', '*** run location: ', path.resolve('./')+'\\n')\r\n const nodes = getFileNodes(option)\r\n // \u5F97\u5230md\u5BF9\u8C61\r\n // wirteJs(JSON.stringify(nodes), __dirname + '\\\\readme-file.js')\r\n const countMdObj = getCountMd(nodes)\r\n const coutMd = setCountMd(countMdObj)\r\n console.log('\\x1B[33m%s\\x1b[0m', coutMd)\r\n const note = getNote(nodes) // \u5F97\u5230\u6240\u6709note\u7684\u6570\u7EC4\r\n const md = note.join('')+'\\n' // \u6570\u7EC4\u8F6C\u5B57\u7B26\u4E32\r\n if (md.length > 0) {\r\n console.log('\\x1B[36m%s\\x1B[0m', '*** Automatic generation completed ! ')\r\n }\r\n\r\n return md + coutMd\r\n}\r\n\r\n/**\r\n * @description:Write the result to JS file \u628A\u7ED3\u679C\u5199\u5165\u5230js\u6587\u4EF6\r\n * @param {data} \u8981\u5199\u7684\u6570\u636E\r\n * @return {fileName} \u8981\u5199\u5165\u6587\u4EF6\u5730\u5740\r\n */\r\nexport function wirteMd(data: string, filePath: string) {\r\n const file = path.resolve(__dirname, filePath)\r\n // \u5F02\u6B65\u5199\u5165\u6570\u636E\u5230\u6587\u4EF6\r\n fs.writeFile(file, data, { encoding: 'utf8' }, () => {\r\n console.log('Write successful')\r\n })\r\n}\r\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agmd",
3
- "version": "0.2.9",
3
+ "version": "0.2.10",
4
4
  "description": "auto generate markdown for node",
5
5
  "keywords": [
6
6
  "node",