@das-fed/cli 6.3.0-beta.9 → 6.4.0-dev.2

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.
Files changed (28) hide show
  1. package/package.json +9 -1
  2. package/src/commands/build/index.js +1 -1
  3. package/src/commands/dev-helper/init-public-config.js +1 -1
  4. package/src/commands/dev-helper/watchers/i18n/index.js +1 -1
  5. package/src/commands/dev-helper/watchers/theme/index.js +1 -1
  6. package/src/commands/helper/index.js +1 -1
  7. package/src/commands/helper/modules/gen-auth/gen/dist/config.js +1 -0
  8. package/src/commands/helper/modules/gen-auth/gen/dist/config.local.js +1 -0
  9. package/src/commands/helper/modules/gen-auth/gen/dist/index.js +1 -0
  10. package/src/commands/helper/modules/gen-auth/gen/index.js +1 -0
  11. package/src/commands/helper/modules/gen-auth/gen/node-create-service.js +1 -0
  12. package/src/commands/helper/modules/gen-auth/gen/vite.config.js +1 -0
  13. package/src/commands/helper/modules/gen-auth/index.js +1 -0
  14. package/src/commands/helper/modules/gen-esm-module-map/index.js +1 -1
  15. package/src/commands/helper/modules/gen-packages-entry/index.js +1 -1
  16. package/src/commands/init/index.js +1 -1
  17. package/src/utils/diff/file/index.js +1 -0
  18. package/src/utils/diff/index.js +1 -0
  19. package/src/utils/diff/json/index.js +1 -0
  20. package/src/utils/get-window-config/index.js +1 -0
  21. package/src/vite-plugins/das-fe/index.js +1 -0
  22. package/src/vite-plugins/das-fe-ui/index.js +1 -1
  23. package/src/vite-plugins/das-fe-web-app/index.js +1 -0
  24. package/src/vite-plugins/dynamic-dev-entry/index.js +1 -0
  25. package/src/vite-plugins/index.js +1 -1
  26. package/src/vite-plugins/das-fe-ui/core/style.js +0 -1
  27. package/src/vite-plugins/das-fe-web/core/das-fe-web.js +0 -1
  28. package/src/vite-plugins/das-fe-web/core/style.js +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@das-fed/cli",
3
- "version": "6.3.0-beta.9",
3
+ "version": "6.4.0-dev.2",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
@@ -15,26 +15,34 @@
15
15
  "chokidar": "^3.6.0",
16
16
  "concurrently": "^8.2.2",
17
17
  "consola": "^3.2.3",
18
+ "dayjs": "^1.11.10",
19
+ "es-module-lexer": "^1.5.4",
20
+ "execa": "^9.3.0",
18
21
  "fast-glob": "^3.3.2",
19
22
  "fs-extra": "^11.2.0",
20
23
  "inquirer": "^9.3.2",
21
24
  "json-schema-to-typescript": "^13.1.2",
22
25
  "json5": "^2.2.3",
26
+ "magic-string": "^0.30.10",
23
27
  "minimatch": "^9.0.3",
24
28
  "minimist": "^1.2.8",
25
29
  "minio": "^7.1.3",
30
+ "ora": "^8.0.1",
26
31
  "prettier": "^3.2.5",
27
32
  "strip-comments": "^2.0.1",
28
33
  "ts-morph": "^21.0.1"
29
34
  },
30
35
  "devDependencies": {
36
+ "@vitejs/plugin-vue": "^5.1.1",
31
37
  "@vitejs/plugin-vue-jsx": "^3.1.0",
38
+ "diff": "^5.2.0",
32
39
  "lodash-es": "^4.17.21",
33
40
  "rollup-plugin-visualizer": "^5.12.0",
34
41
  "semver": "^7.6.0",
35
42
  "uglify-js": "^3.18.0",
36
43
  "unplugin-auto-import": "^0.17.6",
37
44
  "unplugin-vue-components": "^0.26.0",
45
+ "vite": "^5.3.5",
38
46
  "vite-plugin-compression": "^0.5.1",
39
47
  "vite-plugin-style-import": "^2.0.0"
40
48
  },
@@ -1 +1 @@
1
- import{initPublicConfig}from"../dev-helper/init-public-config.js";import{initWatchers}from"../dev-helper/watchers/index.js";import{execSync}from"child_process";import{resolve,relative,dirname}from"path";import{fileURLToPath}from"url";import minimist from"minimist";import fs from"fs-extra";import{generateNginx}from"./generate-nginx.js";import{getWindowConfig}from"./get-window-config.js";let __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename);export default{handle:async i=>{var[,...e]=i,i=minimist(i),t=process.cwd(),r={cwd:t,isDev:!1,isBuild:!0,...i};if(!(r.isLib??!1)){await initPublicConfig(r),await initWatchers(r);let i=await getWindowConfig(resolve(t,"public/config.js"));try{var o,n=resolve(t,"config.js");await fs.exists(n)&&(o=(await import(relative(resolve(__dirname),n)))["default"],""===i.microAppName&&delete i.microAppName,i={...o,...i})}catch(i){console.log("get rootConfig error",i)}await generateNginx({cwd:t,...i})}(e||[]).join(" ");let a="";i.c&&(a+="-c "+i.c),execSync("npx vite build "+a,{cwd:t,stdio:"inherit"})}};
1
+ import{initPublicConfig}from"../dev-helper/init-public-config.js";import{initWatchers}from"../dev-helper/watchers/index.js";import{execSync}from"child_process";import{resolve,relative,dirname}from"path";import{fileURLToPath}from"url";import minimist from"minimist";import fs from"fs-extra";import{generateNginx}from"./generate-nginx.js";import{getWindowConfig}from"../../utils/get-window-config/index.js";import{getCliConfig}from"../../utils/get-cli-config/index.js";let __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename);export default{handle:async i=>{var[,...e]=i,i=minimist(i),t=process.cwd(),o={cwd:t,isDev:!1,isBuild:!0,...await getCliConfig(),...i};if(!(o.isLib??!1)){await initPublicConfig(o),await initWatchers(o);let i=await getWindowConfig(resolve(t,"public/config.js"));try{var r,n=resolve(t,"config.js");await fs.exists(n)&&(r=(await import(relative(resolve(__dirname),n))).default,""===i.microAppName&&delete i.microAppName,i={...r,...i})}catch(i){console.log("get rootConfig error",i)}}(e||[]).join(" ");let a="";i.c&&(a+="-c "+i.c),execSync("npx vite build "+a,{cwd:t,stdio:"inherit"})}};
@@ -1 +1 @@
1
- import{resolve}from"path";import fs from"fs-extra";let initPublicConfig=async(i={})=>{var i=i["isDev"],s=resolve(process.cwd(),"public/config.js"),e=resolve(process.cwd(),"public/config.local.js");await fs.exists(s)||(await fs.ensureFile(s),await fs.writeFile(s,"window.config = {}")),i&&!await fs.exists(e)&&await fs.copyFile(s,e)};export{initPublicConfig};
1
+ import{resolve}from"path";import fs from"fs-extra";let initPublicConfig=async(i={})=>{var i=i.isDev,s=resolve(process.cwd(),"public/config.js"),e=resolve(process.cwd(),"public/config.local.js");await fs.exists(s)||(await fs.ensureFile(s),await fs.writeFile(s,"window.config = {}")),i&&!await fs.exists(e)&&await fs.copyFile(s,e)};export{initPublicConfig};
@@ -1 +1 @@
1
- import glob from"fast-glob";import fs from"fs-extra";import json5 from"json5";import{resolve}from"path";import{getExportDefaultsByAst}from"../../../../utils/ts-morph/index.js";import{json2type}from"../../../../utils/json2type/index.js";import{getCliConfig}from"../../../../utils/get-cli-config/index.js";let watchGlob=["src/**/i18n/*.ts"],handle=async(t={})=>{var e=t["cwd"],a=(await getCliConfig()).i18n?.watchGlob||[],a=getExportDefaultsByAst([...watchGlob,...a],t);let o={};a.map((t,e)=>{t=t.defaultText;Object.assign(o,json5.parse(t))});var s,r=[];for(s of await glob(["src/**/*.vue","src/**/*.tsx"]))for(var i=(await fs.readFile(s)).toString(),l=/i18n\(\s*(.+)\s*\)/g;null!==(n=l.exec(i));){var[,n]=n;r.push(n)}r.forEach(t=>{for(var e=/['"](.*?)['"]/g;null!==(a=e.exec(t));){var[,a]=a;o[a]||(o[a]={})}});let f={"zh-CN":""};Object.values(o).filter(t=>!!t["zh-CN"]).map(t=>Object.assign(f,t)),0===Object.keys(o).length&&(o.any="");t=resolve(e,"src/das-fe-local-runtime/i18n-runtime/type.d.ts");await json2type({data:[{title:"I18NName",type:"string",enum:Object.keys(f)},{title:"I18NKey",type:"string",enum:Object.keys(o)}],outputFilePath:t})};export default{name:"das-i18n",glob:watchGlob,ignoreGlob:[],load:handle,change:handle};
1
+ import glob from"fast-glob";import fs from"fs-extra";import json5 from"json5";import{resolve}from"path";import{getExportDefaultsByAst}from"../../../../utils/ts-morph/index.js";import{json2type}from"../../../../utils/json2type/index.js";import{getCliConfig}from"../../../../utils/get-cli-config/index.js";let watchGlob=["src/**/i18n/*.ts"],handle=async(t={})=>{var e=t.cwd,a=(await getCliConfig()).i18n?.watchGlob||[],a=getExportDefaultsByAst([...watchGlob,...a],t);let o={};a.map((t,e)=>{t=t.defaultText;Object.assign(o,json5.parse(t))});var s,r=[];for(s of await glob(["src/**/*.vue","src/**/*.tsx"]))for(var i=(await fs.readFile(s)).toString(),l=/i18n\(\s*(.+)\s*\)/g;null!==(n=l.exec(i));){var[,n]=n;r.push(n)}r.forEach(t=>{for(var e=/['"](.*?)['"]/g;null!==(a=e.exec(t));){var[,a]=a;o[a]||(o[a]={})}});let f={"zh-CN":""};Object.values(o).filter(t=>!!t["zh-CN"]).map(t=>Object.assign(f,t)),0===Object.keys(o).length&&(o.any="");t=resolve(e,"src/das-fe-local-runtime/i18n-runtime/type.d.ts");await json2type({data:[{title:"I18NName",type:"string",enum:Object.keys(f)},{title:"I18NKey",type:"string",enum:Object.keys(o)}],outputFilePath:t})};export default{name:"das-i18n",glob:watchGlob,ignoreGlob:[],load:handle,change:handle};
@@ -1 +1 @@
1
- import json5 from"json5";import{resolve}from"path";import{getExportDefaultsByAst}from"../../../../utils/ts-morph/index.js";import{json2type}from"../../../../utils/json2type/index.js";import{json2snippets}from"../../../../utils/json2snippets/index.js";import{getCliConfig}from"../../../../utils/get-cli-config/index.js";let watchGlob=["src/**/theme/*.ts"],handle=async(e={})=>{var t=e["cwd"],s=await getCliConfig(),o=s.theme?.watchGlob||[],o=getExportDefaultsByAst([...watchGlob,...o],e);let r={},a=(o.map((e,t)=>{let s=e.defaultText;var o,e=s.match(/getVar\(.*\)/g);if(!e)return Object.assign(r,json5.parse(s));for(o of e){var a=o.replace("getVar('","").replace("')","");s=s.replace(o,`'var(${a})'`)}Object.assign(r,json5.parse(s))}),{light:""}),l=(Object.values(r).filter(e=>!!e.light).map(e=>Object.assign(a,e)),0===Object.keys(r).length&&(r.any=""),json2type({data:[{title:"ThemeName",type:"string",enum:Object.keys(a)},{title:"ThemeVarKey",type:"string",enum:Object.keys(r)}],outputFilePath:resolve(t,"src/das-fe-local-runtime/theme-runtime/type.d.ts")}),resolve(t,".vscode/das-theme.local.code-snippets"));s.workspaceRoot&&(e=resolve(t,s.workspaceRoot),l=resolve(e,".vscode/das-theme.local.code-snippets")),json2snippets({data:{"das-theme-css变量":{prefix:"dasvar",body:[`var(\${1|${Object.keys(r).join(",")}|})`],scope:"css,scss,less",description:"das-theme-css变量"}},outputFilePath:l})};export default{name:"das-theme",glob:watchGlob,ignoreGlob:[],load:handle,change:handle};
1
+ import json5 from"json5";import{resolve}from"path";import{getExportDefaultsByAst}from"../../../../utils/ts-morph/index.js";import{json2type}from"../../../../utils/json2type/index.js";import{json2snippets}from"../../../../utils/json2snippets/index.js";import{getCliConfig}from"../../../../utils/get-cli-config/index.js";let watchGlob=["src/**/theme/*.ts"],handle=async(e={})=>{var t=e.cwd,s=await getCliConfig(),o=s.theme?.watchGlob||[],o=getExportDefaultsByAst([...watchGlob,...o],e);let r={},a=(o.map((e,t)=>{let s=e.defaultText;var o,e=s.match(/getVar\(.*\)/g);if(!e)return Object.assign(r,json5.parse(s));for(o of e){var a=o.replace("getVar('","").replace("')","");s=s.replace(o,`'var(${a})'`)}Object.assign(r,json5.parse(s))}),{light:""}),l=(Object.values(r).filter(e=>!!e.light).map(e=>Object.assign(a,e)),0===Object.keys(r).length&&(r.any=""),json2type({data:[{title:"ThemeName",type:"string",enum:Object.keys(a)},{title:"ThemeVarKey",type:"string",enum:Object.keys(r)}],outputFilePath:resolve(t,"src/das-fe-local-runtime/theme-runtime/type.d.ts")}),resolve(t,".vscode/das-theme.local.code-snippets"));s.workspaceRoot&&(e=resolve(t,s.workspaceRoot),l=resolve(e,".vscode/das-theme.local.code-snippets")),json2snippets({data:{"das-theme-css变量":{prefix:"dasvar",body:[`var(\${1|${Object.keys(r).join(",")}|})`],scope:"css,scss,less",description:"das-theme-css变量"}},outputFilePath:l})};export default{name:"das-theme",glob:watchGlob,ignoreGlob:[],load:handle,change:handle};
@@ -1 +1 @@
1
- import{dirname,resolve,relative}from"path";import{fileURLToPath}from"url";import glob from"fast-glob";import{getCliConfig}from"../../utils/get-cli-config/index.js";let __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),loadModules=async l=>{var e=await glob("*/index.js",{cwd:resolve(__dirname,"./modules"),absolute:!0});0!==e.length&&(await Promise.all(e.map(e=>{let l=relative(__dirname,e).replaceAll("\\\\","/").replaceAll("\\","/");return l.startsWith(".")||(l="./"+l),import(l).then(e=>e?.default||(()=>{}))}))).map(e=>e(l))};export default{alias:[],handle:async e=>{console.log("das-cli heler","将会读取das-cli.json中helper的配置执行脚本");var l=process.cwd(),l=await getCliConfig({cwd:l});loadModules(l)}};
1
+ import{dirname,resolve,relative}from"path";import{fileURLToPath}from"url";import glob from"fast-glob";import{getCliConfig}from"../../utils/get-cli-config/index.js";let __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),loadModules=async l=>{var e=await glob("*/index.js",{cwd:resolve(__dirname,"./modules"),absolute:!0});0!==e.length&&(await Promise.all(e.map(e=>{let l=relative(__dirname,e).replaceAll("\\\\","/").replaceAll("\\","/");return l.startsWith(".")||(l="./"+l),import(l).then(e=>e?.default||(()=>{}))}))).map(e=>e(l))};export default{alias:[],handle:async e=>{console.log("das-cli helper","将会读取das-cli.json中helper的配置执行脚本");var l=process.cwd(),l=await getCliConfig({cwd:l});loadModules(l)}};
@@ -0,0 +1 @@
1
+ window.config={};
@@ -0,0 +1 @@
1
+ window.config={};
@@ -0,0 +1 @@
1
+ let m={path:"/demo",component:()=>"virtual:module",meta:{keepAlive:!0}},l=(e,p)=>{var t=(s,e)=>async e=>{let t="string"==typeof e?e:"",a=("object"==typeof e&&(t=e.value),{method:s,url:t,headers:{}});return"get"!==a.method&&(a.params={...a.params,timestamp:(new Date).getTime()}),(a=p?await p(a):a).baseURL&&a.urlPrefix&&(a.baseURL=a.baseURL+a.urlPrefix),a};return{get:t("get"),post:t("post"),put:t("put"),patch:t("patch"),delete:t("delete")}},f=(t,e)=>l(null,async e=>(e.urlPrefix=t,e)),a=f("/test"),h=a.get("/user"),r=a.post("/user"),i=a.put("/user"),c=a.delete("/user"),p=Object.freeze(Object.defineProperty({__proto__:null,addUser:r,deleteUser:c,editUser:i,getUser:h},Symbol.toStringTag,{value:"Module"})),_={name:"示例",code:"demo",path:m.path,apis:p,btns:{add:{name:"新增按钮",apis:[r]},edit:{name:"编辑按钮",apis:[i]},delete:{name:"删除按钮",apis:[c]}}},g={path:"/",component:()=>"virtual:module"},b={name:"公告列表",code:"notice",path:g.path,apis:p,btns:{add:{name:"新增按钮",apis:[r]},edit:{name:"编辑按钮",apis:[i]},delete:{name:"删除按钮",apis:[c]}}},v=Object.assign({"./demo/index.ts":_,"./hello/index.ts":b}),U={code:"cms",name:"内容运营",modules:v};export{U as default};
@@ -0,0 +1 @@
1
+ import{build}from"vite";import{dirname,resolve}from"path";import{fileURLToPath}from"url";import fs from"fs-extra";let __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),genAuthData=async e=>{var a,{cwd:e,entry:t="src/auth/index.ts"}=e,r=(await build({configFile:resolve(__dirname,"./vite.config.js"),build:{outDir:resolve(__dirname,"dist"),lib:{entry:resolve(e,t),name:"index",fileName:"index",formats:["es"]},rollupOptions:{external:["vue","vue-router",/^@das-fed\//]}},esbuild:{drop:["console","debugger"]}}),await import("./dist/index.js")).default,i=[];for(a of Object.values(r.modules)){for(var o of Object.values(a.apis)){var{method:o,urlPrefix:n,url:m}=await o,o={app:{code:r.code,name:r.name},api:{method:o,path:""+n+m},page:{path:a.path,name:a.name}};i.push(o)}for(var p of Object.keys(a.btns)){var d,l=a.btns[p];for(d of l.apis){var{method:s,urlPrefix:u,url:f}=await d,s={app:{code:r.code,name:r.name},api:{method:s,path:""+u+f},page:{path:a.path,name:a.name},btn:{code:p,name:l.name}};i.push(s)}}}return Object.values(i.reduce((e,a)=>{var t=`${a.page.path}:${a.api.method}:`+a.api.path;return(a.btn||!e[t]||e[t]&&!e[t].btn)&&(e[t]=a),e},{}))};export{genAuthData};
@@ -0,0 +1 @@
1
+ function isObject(e){return e&&"object"==typeof e&&!Array.isArray(e)}let merge=(e,t)=>{if(!isObject(e)||!isObject(t))return t;for(var r in t)isObject(t[r])?(e[r]||Object.assign(e,{[r]:{}}),mergeDeep(e[r],t[r])):Object.assign(e,{[r]:t[r]});return e},curringHttp=(e,s)=>{var t=(a,i)=>async e=>{let t="string"==typeof e?e:"",r=("object"==typeof e&&(t=e.value),{method:a,url:t,headers:{}});return"get"!==r.method&&(r.params={...r.params,timestamp:(new Date).getTime()}),i&&(r=await i(r)),(r=s?await s(r):r).baseURL&&r.urlPrefix&&(r.baseURL=r.baseURL+r.urlPrefix),r};return{get:t("get"),post:t("post"),put:t("put"),patch:t("patch"),delete:t("delete")}},createService=(t,r)=>curringHttp(null,async e=>(e.urlPrefix=t,r?.(e)||e));export{curringHttp,createService};
@@ -0,0 +1 @@
1
+ import{defineConfig}from"vite";import vue from"@vitejs/plugin-vue";import MagicString from"magic-string";import{parse}from"es-module-lexer";import fs from"fs-extra";import{resolve}from"path";import{parseImportCode}from"../../../../../utils/parse-import-code.js";let transformVueComponent=()=>{let n="virtual:module",r="\0"+n,p="virtual:node-create-api-service",t="\0"+p;return{name:"transform-vue-component",resolveId(e){return e===n?r:e===p?t:void 0},async load(e){return e===r?"export default ()=>{}":e===t?(await fs.readFile(resolve(__dirname,"./node-create-service.js"))).toString():void 0},async transform(e,r){var t;for(t of parseImportCode(e)||[]){var o=t.name.startsWith("@das-fed/utils/api-services"),a=!o&&!t.name.startsWith("@/")&&!t.name.startsWith(".");if(o&&(e=e.replace(t.name,p)),a){let r="";t.members.map(e=>{r+=`import { default as ${e.aliasName||e.name} } from '${n}';`}),r&&(e=e.replace(t.code,r))}}var i,s=new MagicString(e),[m]=parse(e);for(i of m)i.n?.endsWith(".vue")&&(1===i.t&&s.overwrite(i.s,i.e,n),2===i.t)&&s.overwrite(i.ss,i.se,`'${n}'`);return s.toString()}}};export default defineConfig(({})=>({plugins:[vue(),transformVueComponent()]}));
@@ -0,0 +1 @@
1
+ import fs from"fs-extra";import{resolve}from"path";import{consola}from"consola";import{genAuthData}from"./gen/index.js";import{diffWriteJson}from"../../../../utils/diff/index.js";export default async s=>{var t,o,e=(s?.helper||{}).genAuth;e&&(e.cwd=e.cwd||s.cwd||process.cwd(),s=e.cwd,{entry:o="src/auth/index.ts",result:t="auth.json"}=e,await fs.exists(resolve(s,o)))&&(consola.start("正在生成auth.json..."),o=await genAuthData(e),await diffWriteJson(resolve(s,t),o,{spaces:2}),consola.success("auth.json已生成!"))};
@@ -1 +1 @@
1
- import glob from"fast-glob";import fs from"fs-extra";import{resolve}from"path";import{extractExports}from"../../../../utils/ts-morph/index.js";import{consola}from"consola";let genEsmData=async s=>{let{cwd:e,modules:a}=s,t={};s=await glob(a,{cwd:e});return await Promise.all(s.map(async s=>{let a=s.replace(e,"").replace(/\\/g,"/").replace(".ts","").replace(".js","");(a=a.startsWith("./")?a.replace("./","/"):a).startsWith("/")||(a="/"+a);s=await fs.readFile(s);extractExports(s.toString()).map(s=>{t[s]=a})})),t};export default async s=>{var a=(s?.helper||{})["genEsmModuleMap"];a&&(s=a.cwd||s.cwd||process.cwd(),a=a["modules"],consola.start("正在生成esm-map.json..."),a=await genEsmData({modules:a}),s=resolve(s,"esm-map.json"),await fs.ensureFile(s),await fs.writeJSON(s,a,{spaces:2}),consola.success("esm-map.json已生成!"))};
1
+ import glob from"fast-glob";import fs from"fs-extra";import{resolve}from"path";import{diffWriteJson}from"../../../../utils/diff/index.js";import{consola}from"consola";import{parse}from"es-module-lexer";let genEsmData=async e=>{let{cwd:s,modules:a}=e,o={};e=await glob(a,{cwd:s});return await Promise.all(e.map(async e=>{let a=e.replace(s,"").replace(/\\/g,"/").replace(".ts","").replace(".js","");(a=a.startsWith("./")?a.replace("./","/"):a).startsWith("/")||(a="/"+a);var e=await fs.readFile(e),[,e]=parse(e.toString());e&&e.map(e=>{o[e.n]=a})})),o};export default async e=>{var a=(e?.helper||{}).genEsmModuleMap;a&&(e=a.cwd||e.cwd||process.cwd(),a=a.modules,consola.start("正在生成esm-map.json..."),a=await genEsmData({modules:a}),await diffWriteJson(resolve(e,"esm-map.json"),a),consola.success("esm-map.json已生成!"))};
@@ -1,2 +1,2 @@
1
1
  import glob from"fast-glob";import fs from"fs-extra";import{resolve,relative}from"path";import{minimatch}from"minimatch";import{extractExports}from"../../../../utils/ts-morph/index.js";import ora from"ora";import{consola}from"consola";let genModulesEntry=async e=>{let{globString:r,result:o,cwd:t}=e;e=await glob(r,{cwd:t,onlyDirectories:!0,absolute:!0});let a="",s="";e.map(e=>{s=s||resolve(e,o||"../index.ts");e=relative(resolve(s,"../"),e);a+=`export * from './${e}'\r
2
- `}),await fs.ensureFile(s),await fs.writeFile(s,a)};export default async e=>{var o=(e?.helper||{})["genPacakgesEntry"];if(o){let r=o.cwd||e.cwd||process.cwd();e=o["modules"];e&&(consola.start("正在生成packages entry..."),await Promise.all(e.map(e=>genModulesEntry({cwd:r,globString:e}))),consola.success("packages entry已生成!"))}};
2
+ `}),await fs.ensureFile(s),await fs.writeFile(s,a)};export default async e=>{var o=(e?.helper||{}).genPacakgesEntry;if(o){let r=o.cwd||e.cwd||process.cwd();e=o.modules;e&&(consola.start("正在生成packages entry..."),await Promise.all(e.map(e=>genModulesEntry({cwd:r,globString:e}))),consola.success("packages entry已生成!"))}};
@@ -1 +1 @@
1
- import inquirer from"inquirer";import glob from"fast-glob";import{dirname,resolve}from"path";import{fileURLToPath}from"url";import fs from"fs-extra";import{consola}from"consola";import{execSync}from"child_process";import semver from"semver";let __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),getPackageJson=()=>{var e=resolve(__dirname,"../../../package.json");return fs.existsSync(e)?fs.readJSONSync(e):{}};export default{alias:["create","create-app","-c"],handle:async e=>{var r=getPackageJson(),a=(consola.box(`Using ${r.name} v`+r.version),consola.info("create app for @das-fed"),consola.warn("必须使用 pnpm 作为依赖安装工具"),await inquirer.prompt([{name:"inputName",type:"input",message:"请输入应用名称(一般为英文缩写)"}]))["inputName"],[i]=(a||(consola.error("应用名称必填!"),process.exit()),a.split("/").slice(-1)),o="enterpriseadmin/"+i,a=(consola.success(`子应用名称为: ${o} (enterpriseadmin为默认加入的前缀)`),await inquirer.prompt([{name:"overwrite",type:"confirm",message:"初始化项目将覆盖当前目录的文件及文件夹,是否继续?"}]))["overwrite"];if(!a)return process.exit();var s,t=process.cwd(),n=resolve(__dirname,"./template");for(s of await glob(["**/**"],{cwd:n,dot:!0})){var p,c=resolve(t,s);await fs.copy(resolve(n,s),c,{overwrite:!0}),-1<s.indexOf("config.js")&&(p=(await fs.readFile(c)).toString(),await fs.writeFile(c,p.replaceAll("%microAppName%",o))),-1<s.indexOf("package.json")&&(p=(await fs.readFile(c)).toString(),await fs.writeFile(c,p.replaceAll("%packageName%",i)))}var a=["vue","vue-router"],m=["@vitejs/plugin-vue","typescript","vite","vue-tsc"];let l=["@das-fed/web","@das-fed/ui","@das-fed/utils"],d=["@das-fed/cli"],f=semver.parse(r.version).prerelease[0];f&&(l=l.map(e=>e+"@"+f),d=d.map(e=>e+"@"+f)),a.push(...l),m.push(...d),execSync("pnpm add "+a.join(" "),{cwd:t,stdio:"inherit"}),execSync("pnpm add -D "+m.join(" "),{cwd:t,stdio:"inherit"}),console.log(""),consola.success("项目初始化完成!"),consola.box("run: pnpm run dev")}};
1
+ import inquirer from"inquirer";import glob from"fast-glob";import{dirname,resolve}from"path";import{fileURLToPath}from"url";import fs from"fs-extra";import{consola}from"consola";import{execSync}from"child_process";import semver from"semver";let __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),getPackageJson=()=>{var e=resolve(__dirname,"../../../package.json");return fs.existsSync(e)?fs.readJSONSync(e):{}};export default{alias:["create","create-app","-c"],handle:async e=>{var r=getPackageJson(),a=(consola.box(`Using ${r.name} v`+r.version),consola.info("create app for @das-fed"),consola.warn("必须使用 pnpm 作为依赖安装工具"),await inquirer.prompt([{name:"inputName",type:"input",message:"请输入应用名称(一般为英文缩写)"}])).inputName,[i]=(a||(consola.error("应用名称必填!"),process.exit()),a.split("/").slice(-1)),o="enterpriseadmin/"+i,a=(consola.success(`子应用名称为: ${o} (enterpriseadmin为默认加入的前缀)`),await inquirer.prompt([{name:"overwrite",type:"confirm",message:"初始化项目将覆盖当前目录的文件及文件夹,是否继续?"}])).overwrite;if(!a)return process.exit();var s,t=process.cwd(),n=resolve(__dirname,"./template");for(s of await glob(["**/**"],{cwd:n,dot:!0})){var p,c=resolve(t,s);await fs.copy(resolve(n,s),c,{overwrite:!0}),-1<s.indexOf("config.js")&&(p=(await fs.readFile(c)).toString(),await fs.writeFile(c,p.replaceAll("%microAppName%",o))),-1<s.indexOf("package.json")&&(p=(await fs.readFile(c)).toString(),await fs.writeFile(c,p.replaceAll("%packageName%",i)))}var a=["vue","vue-router"],m=["@vitejs/plugin-vue","typescript","vite","vue-tsc"];let l=["@das-fed/web","@das-fed/ui","@das-fed/utils"],d=["@das-fed/cli"],f=semver.parse(r.version).prerelease[0];f&&(l=l.map(e=>e+"@"+f),d=d.map(e=>e+"@"+f)),a.push(...l),m.push(...d),execSync("pnpm add "+a.join(" "),{cwd:t,stdio:"inherit"}),execSync("pnpm add -D "+m.join(" "),{cwd:t,stdio:"inherit"}),console.log(""),consola.success("项目初始化完成!"),consola.box("run: pnpm run dev")}};
@@ -0,0 +1 @@
1
+ import fs from"fs-extra";import{diffLines}from"diff";let diffWriteFile=async(i,e)=>{var f,r;if(await fs.exists(i))return(f=(await fs.readFile(i)).toString())?(r=diffLines(f,e).map(i=>i.value).join(";\r\n"),void fs.writeFile(i,""+f+r)):fs.writeFile(i,e);await fs.ensureFile(i),await fs.writeFile(i,e)};export{diffWriteFile};
@@ -0,0 +1 @@
1
+ export*from"./file/index.js";export*from"./json/index.js";
@@ -0,0 +1 @@
1
+ import fs from"fs-extra";import isEqual from"lodash-es/isEqual.js";function updateArray(r,a){let t=r.filter(e=>!a.some(r=>isEqual(e,r)));var e=a.filter(e=>!r.some(r=>isEqual(r,e)));let s=r.filter(e=>!t.some(r=>isEqual(e,r)));return e.forEach(r=>s.push(r)),s}function updateObject(e,a){let t={...e};return Object.keys(e).forEach(r=>{a.hasOwnProperty(r)||delete t[r]}),Object.keys(a).forEach(r=>{e.hasOwnProperty(r)||(t[r]=a[r])}),t}let diffWriteJson=async(e,a,t={})=>{if(await fs.exists(e)){var s=await fs.readJSON(e);if(0===Object.keys(s).length)return fs.writeJSON(e,a,{spaces:2,...t});let r=s;Array.isArray(s)&&Array.isArray(a)&&(r=updateArray(s,a)),Array.isArray(s)||Array.isArray(a)||(r=updateObject(s,a)),await fs.writeJSON(e,r,{spaces:2,...t})}else await fs.ensureFile(e),await fs.writeJSON(e,a)};export{diffWriteJson};
@@ -0,0 +1 @@
1
+ import stripComments from"strip-comments";import fs from"fs-extra";import vm from"vm";let getWindowConfig=async t=>{var o,e;return await fs.exists(t)?(t=(await fs.readFile(t)).toString(),o={exports:{},module:{exports:{}}},t=new vm.Script(`const window = {};${t};module.exports={ window }`),e=vm.createContext(o),t.runInContext(e),(o.module.exports.window||{}).config):{}};export{getWindowConfig};
@@ -0,0 +1 @@
1
+ import{resolve,extname}from"path";import fs from"fs-extra";import MagicString from"magic-string";import{parseImportCode}from"../../utils/parse-import-code.js";let dasFeWeb=async e=>{let s;var r=process.cwd();let t=["@das-fed/web","@das-fed/utils","@das-fed/ui","@das-fed/ui","@das-fed/web-components"],n=resolve(r,"node_modules"),i={};return{name:"das-fe",enforce:"pre",config:(e,{})=>({resolve:{alias:{"@":resolve(process.cwd(),"src")}}}),configResolved(e){s=e},buildStart:async()=>{s.cwd=resolve(process.cwd())},transformIndexHtml:{order:"post",handler:()=>{var e=s.base||"./";let r="development"===s.mode?e+"config.local.js":e+"config.js";return[{tag:"script",attrs:{src:r}}]}},async transform(r,e){if(!(-1<e.indexOf("?"))&&!(-1<e.indexOf("node_modules"))&&[".vue",".ts",".js",".jsx",".tsx"].includes(extname(e))){let e=parseImportCode(r);if(e&&0!==(e=e.filter(r=>t.find(e=>r.name===e))).length){var s,a,d=new MagicString(r);for(let o of e){s=o.name,a=void 0;let t=await(i[s]||(a=resolve(n,s,"esm-map.json"),await fs.exists(a)?(a=await fs.readJson(a),i[s]=a,i[s]):void 0));if(t){let s="";o.members.map(e=>{var r=e.name,r=t[r];r&&(s+=`import { ${e.code} } from '${o.name}${r}';`)}),s&&d.overwrite(o.start,o.end,s)}}return d.toString()}}}}};export default e=>[dasFeWeb(e)];
@@ -1 +1 @@
1
- import{resolve,extname}from"path";import fs from"fs-extra";import MagicString from"magic-string";import stripComments from"strip-comments";import kebabCase from"lodash-es/kebabCase.js";import{parseImportCode}from"../../utils/parse-import-code.js";let cwd=process.cwd(),nodeModulesDir=resolve(cwd,"node_modules"),nodeModulesDasUIDir=resolve(cwd,"node_modules/@das-fed/ui"),dasFeUIEsmMapPath=resolve(nodeModulesDasUIDir,"esm-map.json"),dasFeUIEsmMapPathPathExits=fs.existsSync(dasFeUIEsmMapPath),esmMap=dasFeUIEsmMapPathPathExits?fs.readJSONSync(dasFeUIEsmMapPath):{},iconComponentName="DasIcon",getEsmPath=e=>{let s=esmMap[e];return s=s.endsWith("/index")?s.slice(0,-6):s},DasFeUIEsm=e=>({name:"das-fed-ui-esm",enforce:"pre",async transform(e,a){if(!(-1<a.indexOf("?"))&&!(-1<a.indexOf("@das-fed/ui/packages/icon"))&&[".vue",".ts",".js",".jsx",".tsx"].includes(extname(a))){a=parseImportCode(e,"@das-fed/ui");if(a){let s=new MagicString(e);return a.map(e=>{let r="";e.members.map(async a=>{var t=a.name,o=getEsmPath(t);if(o){r+=`import { ${a.code} } from '@das-fed/ui${o}';`;let e=resolve(nodeModulesDir,`@das-fed/ui${o}/style.css`),s=`import '@das-fed/ui${o}/style.css'`;t.startsWith(iconComponentName)&&(a=getEsmPath(iconComponentName),e=resolve(nodeModulesDir,`@das-fed/ui${a}/style.css`),s=`import '@das-fed/ui${a}/style.css'`);o=await fs.exists(e);o&&(r+=s)}}),r&&s.overwrite(e.start,e.end,r)}),s.toString()}}}});export default(e={})=>[DasFeUIEsm(e)];
1
+ import{resolve,extname}from"path";import fs from"fs-extra";import MagicString from"magic-string";import stripComments from"strip-comments";import kebabCase from"lodash-es/kebabCase.js";import{parseImportCode}from"../../utils/parse-import-code.js";let cwd=process.cwd(),nodeModulesDir=resolve(cwd,"node_modules"),nodeModulesDasUIDir=resolve(cwd,"node_modules/@das-fed/ui"),dasFeUIEsmMapPath=resolve(nodeModulesDasUIDir,"esm-map.json"),dasFeUIEsmMapPathPathExits=fs.existsSync(dasFeUIEsmMapPath),esmMap=dasFeUIEsmMapPathPathExits?fs.readJSONSync(dasFeUIEsmMapPath):{},iconComponentName="DasIcon",getEsmPath=e=>{let s=esmMap[e];return s=s.endsWith("/index")?s.slice(0,-6):s},DasFeUIEsm=e=>({name:"das-fed-ui-esm",enforce:"pre",async transform(e,s){if(!(-1<s.indexOf("?"))&&!(-1<s.indexOf("@das-fed/ui/packages/icon"))&&[".vue",".ts",".js",".jsx",".tsx"].includes(extname(s))){s=parseImportCode(e,"@das-fed/ui");if(s){var t,o=new MagicString(e);for(t of s){let a="";for(var r of t.members){var d=r.name,i=getEsmPath(d);if(i){a+=`import { ${r.code} } from '@das-fed/ui${i}';`;let e=resolve(nodeModulesDir,`@das-fed/ui${i}/style.css`),s=`import '@das-fed/ui${i}/style.css';`;d.startsWith(iconComponentName)&&(r=getEsmPath(iconComponentName),e=resolve(nodeModulesDir,`@das-fed/ui${r}/style.css`),s=`import '@das-fed/ui${r}/style.css';`);i=await fs.exists(e);i&&(a+=s)}}a&&o.overwrite(t.start,t.end,a)}return o.toString()}}}});export default(e={})=>[DasFeUIEsm(e)];
@@ -0,0 +1 @@
1
+ import{resolve,extname}from"path";import dayjs from"dayjs";let pureOpt=e=>{process.cwd();let{base:p="./",apply:s="build",type:t="singleApp",external:a=["vue","vue-router",/^@das-fed\//],entry:r="src/das-web-app.ts",outputDir:i="dist",...l}=e||{};return{base:p,apply:s,type:t,external:a,entry:r,outputDir:i,isSingleApp:"singleApp"===t,isDasMainApp:"mainApp"===t,isDasMicroApp:"microApp"===t,...l}},dasFeWebApp=e=>{let s=process.cwd(),{base:t,apply:p,external:a,entry:r,isSingleApp:i}=pureOpt(e);return i?{}:{name:"das-fe-web-app",apply:p,config:(e,{})=>{let p=e?.build?.assetsDir??"assets";(p=p||"")&&!p.endsWith("/")&&(p+="/");e=dayjs().format("YYYY-MM-DD-HH-mm-ss-SSS");return{base:t,build:{lib:{entry:resolve(s,r),name:"index",fileName:"index",formats:["es"]},rollupOptions:{external:a,output:{chunkFileNames:`[name]-[hash]-${e}.js`}}}}}}};export default e=>[dasFeWebApp(e)];
@@ -0,0 +1 @@
1
+ import{resolve}from"path";import fs from"fs-extra";export default(r="/src/main.dev.ts")=>{let s=process.cwd();return{name:"das-fe-dynamic-entry",apply:"serve",transformIndexHtml:{order:"pre",handler:async e=>await fs.exists(resolve(s,"."+r))?e.replace(entry,r):e}}};
@@ -1 +1 @@
1
- import vueJsx from"@vitejs/plugin-vue-jsx";import AutoImportPlugin from"unplugin-auto-import/vite";import ComponentsPlugin from"unplugin-vue-components/vite";import{ElementPlusResolver,AntDesignVueResolver}from"unplugin-vue-components/resolvers";import viteCompression from"vite-plugin-compression";import dasFeWeb from"./das-fe-web/index.js";import dasFeUI from"./das-fe-ui/index.js";import dasFeUtils from"./das-fe-utils/index.js";import dasFePretty from"./das-fe-pretty/index.js";import visualizerPlugin from"./visualizer/index.js";let dasFeWebVitePlugin=async(e={})=>{var{dasWeb:e={styleResolve:!0},dasUI:s={},dasUtils:o={},compression:i={},visualizer:t=null,autoImport:r={},components:n={},pretty:l={}}=e||{},e=[vueJsx(),dasFeWeb(e),dasFeUI(s),dasFeUtils(o),viteCompression(i),visualizerPlugin(t),dasFePretty(l)];return r.disabled||e.push(AutoImportPlugin({resolvers:[ElementPlusResolver(),AntDesignVueResolver()],dts:"./src/das-fe-local-runtime/auto-imports.d.ts",...r})),n.disabled||e.push(ComponentsPlugin({resolvers:[ElementPlusResolver(),AntDesignVueResolver()],dts:"./src/das-fe-local-runtime/components.d.ts",...n})),e};export{dasFeWebVitePlugin};
1
+ import vuePlugin from"@vitejs/plugin-vue";import vueJsxPlugin from"@vitejs/plugin-vue-jsx";import AutoImportPlugin from"unplugin-auto-import/vite";import ComponentsPlugin from"unplugin-vue-components/vite";import{ElementPlusResolver,AntDesignVueResolver}from"unplugin-vue-components/resolvers";import dasFePlugin from"./das-fe/index.js";import dasFeWebAppPlugin from"./das-fe-web-app/index.js";import dasDynamicDevEntryPlugin from"./dynamic-dev-entry/index.js";import dasFePrettyPlugin from"./das-fe-pretty/index.js";import viteCompressionPlugin from"vite-plugin-compression";import visualizerPlugin from"./visualizer/index.js";let dasFeWebVitePlugin=async(e={})=>{var{devEntry:e="/src/main.dev.ts",vue:s={},vueJsx:i={},dasFe:n={},dasWebApp:o={},pretty:r={},autoImport:t={},components:u={},compression:l={},visualizer:p=null}=e||{},s=[vuePlugin(s),vueJsxPlugin(i),dasFePlugin(n),dasFeWebAppPlugin(o),dasDynamicDevEntryPlugin(e),dasFePrettyPlugin(r)];return t&&s.push(AutoImportPlugin({resolvers:[ElementPlusResolver(),AntDesignVueResolver()],dts:"./src/das-fe-local-runtime/auto-imports.d.ts",...t})),u&&s.push(ComponentsPlugin({resolvers:[ElementPlusResolver(),AntDesignVueResolver()],dts:"./src/das-fe-local-runtime/components.d.ts",...u})),l&&s.push(viteCompressionPlugin(l)),p&&s.push(visualizerPlugin(p)),s};export{dasFeWebVitePlugin};
@@ -1 +0,0 @@
1
- import{createStyleImportPlugin}from"vite-plugin-style-import";let UIStyleResolve=()=>({libraryName:"@das-fed/ui",resolveStyle:e=>"@das-fed/ui/style/business.css",base:"@das-fed/ui/style/index.css"}),businessUIStyleResolve=()=>({libraryName:"@das-fed/ui/packages/business",base:"@das-fed/ui/style/business.css"}),DasUIStyleImport=(e={})=>e.styleResolve?createStyleImportPlugin({resolves:[UIStyleResolve(),businessUIStyleResolve()]}):null;export{DasUIStyleImport};
@@ -1 +0,0 @@
1
- import{resolve}from"path";let dasFeWeb=e=>{let s;return{name:"das-fe-web",config:(e,{})=>({resolve:{alias:{"@":resolve(process.cwd(),"src")}},build:{rollupOptions:{output:{manualChunks(r){var e=["sortablejs","echarts","@wangeditor/editor","@antv/x6","mpegts.js"].find(e=>r.includes(e));if(e)return e}}}}}),configResolved(e){s=e},buildStart:async()=>{s.cwd=resolve(process.cwd())},transformIndexHtml:{order:"post",handler:()=>{var e=s.base||"/";let r="development"===s.mode?e+"config.local.js":e+"config.js";return[{tag:"script",attrs:{src:r}}]}}}};export{dasFeWeb};
@@ -1 +0,0 @@
1
- import{createStyleImportPlugin}from"vite-plugin-style-import";let WebStyleResolve=()=>({libraryName:"@das-fed/web",base:"@das-fed/web/style.css"}),DasWebStyleImport=(e={})=>e.styleResolve?createStyleImportPlugin({resolves:[WebStyleResolve()]}):null;export{DasWebStyleImport};