uudev 1.1.1 → 1.1.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 (2) hide show
  1. package/main.js +4 -4
  2. package/package.json +1 -1
package/main.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{createRequire as he}from"module";import c from"fs";import p from"path";import S from"readline";import{spawn as k}from"child_process";import{fileURLToPath as W}from"url";var D=W(import.meta.url),$=p.dirname(D),g=[{key:"1",label:"Excel",value:"Excel",template:"office"},{key:"2",label:"Word",value:"Word",template:"office"},{key:"3",label:"Ppt",value:"Ppt",template:"office"}],b={Excel:"src_excel",Word:"src_word",Ppt:"src_ppt"},I={Excel:["uudev/types/excel"],Word:["uudev/types/word"],Ppt:["uudev/types/ppt"]};async function R(){try{return(await import("chalk")).default}catch{return null}}async function J(){try{return(await import("inquirer")).default}catch{return null}}function d(t){if(!t)return;let e=t.trim().toLowerCase(),n=g.find(r=>r.key===e);if(n)return n;let o=g.find(r=>r.label.toLowerCase()===e);if(o)return o}function z(t){let e=d(t);return e?e.template:String(t||"office").toLowerCase()}function A(t){return/^\d+\.\d+\.\d+$/.test(String(t||""))}function P(t,e){return new Promise(n=>{t.question(e,o=>n(o.trim()))})}async function V(t={}){let e={...t},n=await R(),o=await J();if(e.appType){let i=d(e.appType);i&&(e.appType=i.value)}if(e.name&&e.version&&e.appType)return e;let r=S.createInterface({input:process.stdin,output:process.stdout});try{if(!e.name){let i=await P(r,"\u8BF7\u8F93\u5165\u7A0B\u5E8F name: ");e.name=i}if(!e.version)for(;;){let s=await P(r,"\u8BF7\u8F93\u5165 version (\u9ED8\u8BA4 1.0.0): ")||"1.0.0";if(A(s)){e.version=s;break}let a="\u7248\u672C\u53F7\u683C\u5F0F\u9519\u8BEF\uFF0C\u4EC5\u652F\u6301 x.x.x\uFF0C\u4F8B\u5982 1.0.0\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165\u3002";console.log(n?n.red(a):a)}}finally{r.close()}if(!e.appType)if(o){let i=await o.prompt([{type:"list",name:"appTypeSelection",message:"\u8BF7\u9009\u62E9 appType\uFF08\u4E0A\u4E0B\u65B9\u5411\u952E\u79FB\u52A8\uFF0C\u56DE\u8F66\u786E\u8BA4\uFF09",default:g[0].value,choices:g.map(s=>({name:s.label,value:s.value}))}]);e.appType=i.appTypeSelection}else{let i=n?n.cyan("\u8BF7\u9009\u62E9 appType:"):"\u8BF7\u9009\u62E9 appType:";console.log(i);for(let a of g){let l=n?`${n.green(a.key)}. ${n.yellow(a.label)}`:`${a.key}. ${a.label}`;console.log(l)}let s=S.createInterface({input:process.stdin,output:process.stdout});try{let a=await P(s,"\u8BF7\u8F93\u5165\u5E8F\u53F7\u6216\u540D\u79F0 (\u9ED8\u8BA4 1): "),l=d(a||"1");if(!l)throw new Error("appType \u4EC5\u652F\u6301 Excel/Word/Ppt");e.appType=l.value}finally{s.close()}}return e}function q(t){if(!t.name)throw new Error("name \u4E0D\u80FD\u4E3A\u7A7A");if(/[\\/]/.test(t.name))throw new Error("name \u4E0D\u80FD\u5305\u542B\u8DEF\u5F84\u5206\u9694\u7B26");if(!t.appType)throw new Error("appType \u4E0D\u80FD\u4E3A\u7A7A");if(!d(t.appType))throw new Error("appType \u4EC5\u652F\u6301 Excel/Word/Ppt");if(!t.version)throw new Error("version \u4E0D\u80FD\u4E3A\u7A7A");if(!A(t.version))throw new Error("version \u4EC5\u652F\u6301 x.x.x \u683C\u5F0F\uFF0C\u4F8B\u5982 1.0.0")}async function h(t,e){let n=await c.promises.readdir(t,{withFileTypes:!0}),o=new Set(["node_modules","dist"]);await c.promises.mkdir(e,{recursive:!0});for(let r of n){if(r.isDirectory()&&o.has(r.name))continue;let i=p.join(t,r.name),s=p.join(e,r.name);r.isDirectory()?await h(i,s):await c.promises.copyFile(i,s)}}function B(t){let e=d(t);if(e)return b[e.value]}async function Z(t,e,n){let o=B(n);if(!o)throw new Error(`\u672A\u627E\u5230 appType \u5BF9\u5E94\u6E90\u7801\u76EE\u5F55: ${n}`);let r=await c.promises.readdir(t,{withFileTypes:!0}),i=new Set(Object.values(b));await c.promises.mkdir(e,{recursive:!0});for(let a of r){if(!a.isDirectory()){let u=p.join(t,a.name),y=p.join(e,a.name);await c.promises.copyFile(u,y);continue}if(i.has(a.name))continue;let l=p.join(t,a.name),m=p.join(e,a.name);await h(l,m)}let s=p.join(t,o);if(!c.existsSync(s))throw new Error(`\u6A21\u677F\u76EE\u5F55\u7F3A\u5C11 ${o}`);await h(s,p.join(e,"src"))}async function H(t,e,n,o){let r=p.join(t,"package.json");if(!c.existsSync(r))return;let i=await c.promises.readFile(r,"utf8"),s=JSON.parse(i);s.name=e,s.version=n,s.appType=o,await c.promises.writeFile(r,`${JSON.stringify(s,null,2)}
3
- `,"utf8")}async function K(t,e){let n=p.join(t,"tsconfig.app.json");if(!c.existsSync(n))return;let o=d(e);if(!o)return;let r=I[o.value];if(!r)return;let i=await c.promises.readFile(n,"utf8"),s=JSON.stringify(r);if(/"types"\s*:\s*\[[\s\S]*?\]/.test(i)){let a=i.replace(/"types"\s*:\s*\[[\s\S]*?\]/,`"types": ${s}`);await c.promises.writeFile(n,a,"utf8");return}if(/"compilerOptions"\s*:\s*\{/.test(i)){let a=i.replace(/"compilerOptions"\s*:\s*\{/,`"compilerOptions": {
4
- "types": ${s},`);await c.promises.writeFile(n,a,"utf8")}}async function U(t){let e=p.join(t,"package-lock.json");c.existsSync(e)&&await c.promises.unlink(e)}function Y(t){return new Promise((e,n)=>{let o=process.platform==="win32"?k("cmd.exe",["/d","/s","/c","npm.cmd install"],{cwd:t,stdio:"inherit"}):k("npm",["install"],{cwd:t,stdio:"inherit"});o.on("error",r=>{n(r)}),o.on("close",r=>{if(r===0){e();return}n(new Error(`npm install \u6267\u884C\u5931\u8D25\uFF0C\u9000\u51FA\u7801: ${r}`))})})}async function C(t){let e=await V(t||{}),n=d(e.appType||"Excel");n&&(e.appType=n.value),e.version=e.version||"1.0.0",q(e);let o=p.join(process.cwd(),e.name),r=z(e.appType),s=[p.resolve($,"..","apptemplate",r),p.resolve($,"apptemplate",r)].find(a=>c.existsSync(a));if(!s)throw new Error(`\u672A\u627E\u5230 appType \u5BF9\u5E94\u6A21\u677F: ${e.appType}`);if(c.existsSync(o))throw new Error(`\u76EE\u5F55\u5DF2\u5B58\u5728: ${o}`);await c.promises.mkdir(o,{recursive:!0}),r==="office"?await Z(s,o,e.appType):await h(s,o),await H(o,e.name,e.version,e.appType),await K(o,e.appType),await U(o),console.log("\u6B63\u5728\u5B89\u88C5\u9879\u76EE\u4F9D\u8D56: npm install"),await Y(o),console.log(`\u521B\u5EFA\u6210\u529F: ${o}`)}import w from"fs";import v from"path";import{spawn as O}from"child_process";import G from"archiver";function X(t){return/^[A-Za-z0-9_./:-]+$/.test(t)?t:`"${String(t).replace(/"/g,'""')}"`}function Q(t,e,n){return new Promise((o,r)=>{let i=process.platform==="win32"?O("cmd.exe",["/d","/s","/c",[t,...e].map(X).join(" ")],{cwd:n,stdio:"inherit"}):O(t,e,{cwd:n,stdio:"inherit"});i.on("error",s=>{r(s)}),i.on("close",s=>{if(s===0){o();return}r(new Error(`\u547D\u4EE4\u6267\u884C\u5931\u8D25: ${t} ${e.join(" ")}`))})})}async function ee(t){let e=v.join(t,"package.json");if(!w.existsSync(e))throw new Error(`\u672A\u627E\u5230 package.json: ${e}`);let n=await w.promises.readFile(e,"utf8"),o=JSON.parse(n);if(!o.name)throw new Error("package.json \u7F3A\u5C11 name \u5B57\u6BB5");if(!o.version)throw new Error("package.json \u7F3A\u5C11 version \u5B57\u6BB5");return o}async function te(t,e,n){return new Promise((o,r)=>{let i=w.createWriteStream(e),s=G("zip",{zlib:{level:9}});i.on("close",()=>o()),i.on("error",a=>r(a)),s.on("error",a=>r(a)),s.pipe(i),s.glob("**/*",{cwd:t,dot:!0,ignore:[n]}),s.finalize()})}async function ne(t,e){let n=v.join(t,"menifest.json");if(!w.existsSync(n))throw new Error(`\u672A\u627E\u5230 menifest.json: ${n}`);let o=await w.promises.readFile(n,"utf8"),r=JSON.parse(o);r.name=e.name,r.version=e.version,e.description&&(r.description=e.description,r.note=e.description),await w.promises.writeFile(n,`${JSON.stringify(r,null,2)}
5
- `,"utf8")}async function j(){let t=process.cwd(),e=await ee(t),n=v.join(t,"dist"),o=`${e.name}_${e.version}.zip`,r=v.join(n,o),i=process.platform==="win32"?"npm.cmd":"npm";if(console.log("\u5F00\u59CB\u6267\u884C\u6784\u5EFA: npm run build"),await Q(i,["run","build"],t),!w.existsSync(n))throw new Error("\u6784\u5EFA\u5B8C\u6210\u540E\u672A\u627E\u5230 dist \u76EE\u5F55");console.log("\u5F00\u59CB\u540C\u6B65 menifest.json \u5B57\u6BB5"),await ne(n,e),console.log(`\u5F00\u59CB\u6253\u5305 dist: ${o}`),await te(n,r,o),console.log(`\u53D1\u5E03\u5305\u751F\u6210\u6210\u529F: ${r}`)}import T from"fs";import oe from"path";import{spawn as x,spawnSync as re}from"child_process";var ie={excel:"{00024500-0000-0000-C000-000000000046}",word:"{000209FF-0000-0000-C000-000000000046}",ppt:"{91493441-5A91-11CF-8700-00AA0060263B}"};function se(t){let e=String(t||"").trim().toLowerCase();if(e==="excel")return"excel";if(e==="word")return"word";if(e==="ppt"||e==="powerpoint")return"ppt";throw new Error(`\u4E0D\u652F\u6301\u7684 appType: ${t||"(\u7A7A)"}\uFF0C\u4EC5\u652F\u6301 Excel/Word/Ppt`)}async function ae(t){let e=oe.join(t,"package.json");if(!T.existsSync(e))throw new Error(`\u672A\u627E\u5230 package.json: ${e}`);let n=await T.promises.readFile(e,"utf8"),o=JSON.parse(n);if(!o.scripts?.dev)throw new Error("\u5F53\u524D\u9879\u76EE\u7F3A\u5C11 scripts.dev\uFF0C\u65E0\u6CD5\u6267\u884C npm run dev");if(!o.appType)throw new Error("package.json \u7F3A\u5C11 appType \u5B57\u6BB5");return o}function ce(t){return/^[A-Za-z0-9_./:-]+$/.test(t)?t:`"${String(t).replace(/"/g,'""')}"`}function pe(t){let e=["inherit","pipe","pipe"];if(process.platform==="win32"){let n=["npm.cmd","run","dev"].map(ce).join(" ");return x("cmd.exe",["/d","/s","/c",n],{cwd:t,stdio:e})}return x("npm",["run","dev"],{cwd:t,stdio:e})}function le(t){return t.replace(/\x1B\[[0-?]*[ -/]*[@-~]/g,"")}function ue(t){let e=le(t).match(/https?:\/\/(?:127\.0\.0\.1|localhost):(\d+)/i)?.[1];if(!e)return null;let n=Number.parseInt(e,10);return!Number.isInteger(n)||n<=0||n>65535?null:n}async function fe(t,e=3e4){return new Promise((n,o)=>{let r=!1,i=f=>u(()=>o(f)),s=f=>{u(()=>o(new Error(`\u672A\u89E3\u6790\u5230 Vite \u7AEF\u53E3\uFF0Cnpm run dev \u5DF2\u9000\u51FA\uFF0C\u9000\u51FA\u7801: ${f}`)))},a=f=>y(f,process.stdout),l=f=>y(f,process.stderr),m=()=>{t.off("error",i),t.off("close",s),t.stdout?.off("data",a),t.stderr?.off("data",l)},u=f=>{r||(r=!0,clearTimeout(L),m(),f())},y=(f,N)=>{N.write(f);let E=ue(f.toString("utf8"));E!==null&&u(()=>n(E))};t.on("error",i),t.on("close",s),t.stdout?.on("data",a),t.stderr?.on("data",l);let L=setTimeout(()=>{u(()=>o(new Error(`\u7B49\u5F85 Vite \u76D1\u542C\u7AEF\u53E3\u8D85\u65F6\uFF08${e}ms\uFF09`)))},e)})}function me(t){let e=re("reg",["query",t,"/ve"],{encoding:"utf8"});if(e.status!==0)return null;let o=`${e.stdout||""}`.split(/\r?\n/).find(i=>/REG_SZ|REG_EXPAND_SZ/i.test(i));if(!o)return null;let r=o.match(/REG_(?:SZ|EXPAND_SZ)\s+(.+)$/i);return!r||!r[1]?null:r[1].trim()}function de(t){return t.replace(/%([^%]+)%/g,(e,n)=>process.env[n]||`%${n}%`)}function we(t){let e=de(t.trim());if(e.startsWith('"')){let o=e.indexOf('"',1);if(o>1)return e.slice(1,o)}let n=e.match(/^(.+?\.exe)/i);return n&&n[1]?n[1].trim():e}function ge(t){let e=ie[t],n=[`HKCR\\CLSID\\${e}\\LocalServer32`,`HKLM\\SOFTWARE\\Classes\\CLSID\\${e}\\LocalServer32`,`HKLM\\SOFTWARE\\WOW6432Node\\Classes\\CLSID\\${e}\\LocalServer32`];for(let o of n){let r=me(o);if(!r)continue;let i=we(r);if(i&&T.existsSync(i))return i}throw new Error(`\u65E0\u6CD5\u901A\u8FC7 CLSID \u5B9A\u4F4D ${t} \u5B89\u88C5\u8DEF\u5F84\uFF0C\u8BF7\u68C0\u67E5 Office \u662F\u5426\u5DF2\u5B89\u88C5`)}function ye(t,e){x(t,[e],{detached:!0,stdio:"ignore"}).unref()}async function _(){if(process.platform!=="win32")throw new Error("debug \u547D\u4EE4\u5F53\u524D\u4EC5\u652F\u6301 Windows");let t=process.cwd(),e=pe(t);await new Promise((l,m)=>{e.once("error",u=>m(u)),e.once("spawn",()=>l())}),console.log("\u8C03\u8BD5\u670D\u52A1\u5DF2\u542F\u52A8\uFF0C\u6B63\u5728\u8BFB\u53D6 appType \u5E76\u542F\u52A8 Office...");let n=await ae(t),o=se(n.appType),r=ge(o),a=`--uudev-debug=${`http://127.0.0.1:${await fe(e)}`}`;console.log(`\u5DF2\u8BC6\u522B appType: ${n.appType}`),console.log(`\u542F\u52A8 Office: ${r} ${a}`),ye(r,a),await new Promise((l,m)=>{e.on("close",u=>{if(u===0||u===null){l();return}m(new Error(`npm run dev \u9000\u51FA\uFF0C\u9000\u51FA\u7801: ${u}`))})})}var ve=he(import.meta.url),{version:M}=ve("../package.json");async function Pe(){try{return(await import("chalk")).default}catch{return null}}function F(){console.log(`uudev v${M}`),console.log(""),console.log("uudev <command> [options]"),console.log(""),console.log("Commands:"),console.log(" create"),console.log(" \u4EA4\u4E92\u5F0F\u521B\u5EFA\u9879\u76EE\uFF08\u59CB\u7EC8\u8FDB\u5165\u5411\u5BFC\uFF0C\u5FFD\u7565\u9644\u5E26\u53C2\u6570\uFF09"),console.log(" debug"),console.log(" \u5728\u5F53\u524D\u9879\u76EE\u4E2D\u6267\u884C npm run debug\uFF0C\u5E76\u6309 appType \u542F\u52A8 Office\uFF08\u643A\u5E26 --uudev-debug\uFF09"),console.log(" makezip"),console.log(" \u5728\u5F53\u524D\u9879\u76EE\u4E2D\u6267\u884C npm run makezip\uFF0C\u5E76\u5C06 dist \u76EE\u5F55\u5185\u5BB9\u6253\u5305\u4E3A appName_version.zip"),console.log(" --help, -h"),console.log(" \u663E\u793A\u5E2E\u52A9\u4FE1\u606F"),console.log(" --version, -v"),console.log(" \u663E\u793A\u7248\u672C\u4FE1\u606F"),console.log(""),console.log("AppType options: Excel | Word | Ppt"),console.log("Version format : x.x.x (\u4F8B\u5982 1.0.0)")}function Te(){console.log(`uudev v${M}`)}async function xe(){let t=process.argv[2],e=await Pe();if(!t||t==="--help"||t==="-h"||t==="help"){F();return}if(t==="--version"||t==="-v"||t==="version"){Te();return}if(t==="create"){if(process.argv.length>3){let n="create \u547D\u4EE4\u4F1A\u5FFD\u7565\u9644\u5E26\u53C2\u6570\uFF0C\u5DF2\u8FDB\u5165\u521B\u5EFA\u5411\u5BFC\u3002";console.log(e?e.yellow(n):n)}await C();return}if(t==="makezip"){await j();return}if(t==="debug"){await _();return}F()}xe().catch(t=>{console.error(`\u6267\u884C\u5931\u8D25: ${t.message}`),process.exit(1)});
2
+ import{createRequire as Pe}from"module";import M from"fs";import k from"path";import{fileURLToPath as Te}from"url";import c from"fs";import p from"path";import E from"readline";import{spawn as $}from"child_process";import{fileURLToPath as D}from"url";var R=D(import.meta.url),b=p.dirname(R),g=[{key:"1",label:"Excel",value:"Excel",template:"office"},{key:"2",label:"Word",value:"Word",template:"office"},{key:"3",label:"Ppt",value:"Ppt",template:"office"}],A={Excel:"src_excel",Word:"src_word",Ppt:"src_ppt"},I={Excel:["uudev/types/excel"],Word:["uudev/types/word"],Ppt:["uudev/types/ppt"]};async function z(){try{return(await import("chalk")).default}catch{return null}}async function V(){try{return(await import("inquirer")).default}catch{return null}}function d(t){if(!t)return;let e=t.trim().toLowerCase(),n=g.find(r=>r.key===e);if(n)return n;let o=g.find(r=>r.label.toLowerCase()===e);if(o)return o}function q(t){let e=d(t);return e?e.template:String(t||"office").toLowerCase()}function C(t){return/^\d+\.\d+\.\d+$/.test(String(t||""))}function P(t,e){return new Promise(n=>{t.question(e,o=>n(o.trim()))})}async function B(t={}){let e={...t},n=await z(),o=await V();if(e.appType){let i=d(e.appType);i&&(e.appType=i.value)}if(e.name&&e.version&&e.appType)return e;let r=E.createInterface({input:process.stdin,output:process.stdout});try{if(!e.name){let i=await P(r,"\u8BF7\u8F93\u5165\u7A0B\u5E8F name: ");e.name=i}if(!e.version)for(;;){let s=await P(r,"\u8BF7\u8F93\u5165 version (\u9ED8\u8BA4 1.0.0): ")||"1.0.0";if(C(s)){e.version=s;break}let a="\u7248\u672C\u53F7\u683C\u5F0F\u9519\u8BEF\uFF0C\u4EC5\u652F\u6301 x.x.x\uFF0C\u4F8B\u5982 1.0.0\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165\u3002";console.log(n?n.red(a):a)}}finally{r.close()}if(!e.appType)if(o){let i=await o.prompt([{type:"list",name:"appTypeSelection",message:"\u8BF7\u9009\u62E9 appType\uFF08\u4E0A\u4E0B\u65B9\u5411\u952E\u79FB\u52A8\uFF0C\u56DE\u8F66\u786E\u8BA4\uFF09",default:g[0].value,choices:g.map(s=>({name:s.label,value:s.value}))}]);e.appType=i.appTypeSelection}else{let i=n?n.cyan("\u8BF7\u9009\u62E9 appType:"):"\u8BF7\u9009\u62E9 appType:";console.log(i);for(let a of g){let l=n?`${n.green(a.key)}. ${n.yellow(a.label)}`:`${a.key}. ${a.label}`;console.log(l)}let s=E.createInterface({input:process.stdin,output:process.stdout});try{let a=await P(s,"\u8BF7\u8F93\u5165\u5E8F\u53F7\u6216\u540D\u79F0 (\u9ED8\u8BA4 1): "),l=d(a||"1");if(!l)throw new Error("appType \u4EC5\u652F\u6301 Excel/Word/Ppt");e.appType=l.value}finally{s.close()}}return e}function Z(t){if(!t.name)throw new Error("name \u4E0D\u80FD\u4E3A\u7A7A");if(/[\\/]/.test(t.name))throw new Error("name \u4E0D\u80FD\u5305\u542B\u8DEF\u5F84\u5206\u9694\u7B26");if(!t.appType)throw new Error("appType \u4E0D\u80FD\u4E3A\u7A7A");if(!d(t.appType))throw new Error("appType \u4EC5\u652F\u6301 Excel/Word/Ppt");if(!t.version)throw new Error("version \u4E0D\u80FD\u4E3A\u7A7A");if(!C(t.version))throw new Error("version \u4EC5\u652F\u6301 x.x.x \u683C\u5F0F\uFF0C\u4F8B\u5982 1.0.0")}async function h(t,e){let n=await c.promises.readdir(t,{withFileTypes:!0}),o=new Set(["node_modules","dist"]);await c.promises.mkdir(e,{recursive:!0});for(let r of n){if(r.isDirectory()&&o.has(r.name))continue;let i=p.join(t,r.name),s=p.join(e,r.name);r.isDirectory()?await h(i,s):await c.promises.copyFile(i,s)}}function U(t){let e=d(t);if(e)return A[e.value]}async function H(t,e,n){let o=U(n);if(!o)throw new Error(`\u672A\u627E\u5230 appType \u5BF9\u5E94\u6E90\u7801\u76EE\u5F55: ${n}`);let r=await c.promises.readdir(t,{withFileTypes:!0}),i=new Set(Object.values(A));await c.promises.mkdir(e,{recursive:!0});for(let a of r){if(!a.isDirectory()){let u=p.join(t,a.name),y=p.join(e,a.name);await c.promises.copyFile(u,y);continue}if(i.has(a.name))continue;let l=p.join(t,a.name),m=p.join(e,a.name);await h(l,m)}let s=p.join(t,o);if(!c.existsSync(s))throw new Error(`\u6A21\u677F\u76EE\u5F55\u7F3A\u5C11 ${o}`);await h(s,p.join(e,"src"))}async function K(t,e,n,o){let r=p.join(t,"package.json");if(!c.existsSync(r))return;let i=await c.promises.readFile(r,"utf8"),s=JSON.parse(i);s.name=e,s.version=n,s.appType=o,await c.promises.writeFile(r,`${JSON.stringify(s,null,2)}
3
+ `,"utf8")}async function Y(t,e){let n=p.join(t,"tsconfig.app.json");if(!c.existsSync(n))return;let o=d(e);if(!o)return;let r=I[o.value];if(!r)return;let i=await c.promises.readFile(n,"utf8"),s=JSON.stringify(r);if(/"types"\s*:\s*\[[\s\S]*?\]/.test(i)){let a=i.replace(/"types"\s*:\s*\[[\s\S]*?\]/,`"types": ${s}`);await c.promises.writeFile(n,a,"utf8");return}if(/"compilerOptions"\s*:\s*\{/.test(i)){let a=i.replace(/"compilerOptions"\s*:\s*\{/,`"compilerOptions": {
4
+ "types": ${s},`);await c.promises.writeFile(n,a,"utf8")}}async function G(t){let e=p.join(t,"package-lock.json");c.existsSync(e)&&await c.promises.unlink(e)}function X(t){return new Promise((e,n)=>{let o=process.platform==="win32"?$("cmd.exe",["/d","/s","/c","npm.cmd install"],{cwd:t,stdio:"inherit"}):$("npm",["install"],{cwd:t,stdio:"inherit"});o.on("error",r=>{n(r)}),o.on("close",r=>{if(r===0){e();return}n(new Error(`npm install \u6267\u884C\u5931\u8D25\uFF0C\u9000\u51FA\u7801: ${r}`))})})}async function O(t){let e=await B(t||{}),n=d(e.appType||"Excel");n&&(e.appType=n.value),e.version=e.version||"1.0.0",Z(e);let o=p.join(process.cwd(),e.name),r=q(e.appType),s=[p.resolve(b,"..","apptemplate",r),p.resolve(b,"apptemplate",r)].find(a=>c.existsSync(a));if(!s)throw new Error(`\u672A\u627E\u5230 appType \u5BF9\u5E94\u6A21\u677F: ${e.appType}`);if(c.existsSync(o))throw new Error(`\u76EE\u5F55\u5DF2\u5B58\u5728: ${o}`);await c.promises.mkdir(o,{recursive:!0}),r==="office"?await H(s,o,e.appType):await h(s,o),await K(o,e.name,e.version,e.appType),await Y(o,e.appType),await G(o),console.log("\u6B63\u5728\u5B89\u88C5\u9879\u76EE\u4F9D\u8D56: npm install"),await X(o),console.log(`\u521B\u5EFA\u6210\u529F: ${o}`)}import w from"fs";import v from"path";import{spawn as j}from"child_process";import Q from"archiver";function ee(t){return/^[A-Za-z0-9_./:-]+$/.test(t)?t:`"${String(t).replace(/"/g,'""')}"`}function te(t,e,n){return new Promise((o,r)=>{let i=process.platform==="win32"?j("cmd.exe",["/d","/s","/c",[t,...e].map(ee).join(" ")],{cwd:n,stdio:"inherit"}):j(t,e,{cwd:n,stdio:"inherit"});i.on("error",s=>{r(s)}),i.on("close",s=>{if(s===0){o();return}r(new Error(`\u547D\u4EE4\u6267\u884C\u5931\u8D25: ${t} ${e.join(" ")}`))})})}async function ne(t){let e=v.join(t,"package.json");if(!w.existsSync(e))throw new Error(`\u672A\u627E\u5230 package.json: ${e}`);let n=await w.promises.readFile(e,"utf8"),o=JSON.parse(n);if(!o.name)throw new Error("package.json \u7F3A\u5C11 name \u5B57\u6BB5");if(!o.version)throw new Error("package.json \u7F3A\u5C11 version \u5B57\u6BB5");return o}async function oe(t,e,n){return new Promise((o,r)=>{let i=w.createWriteStream(e),s=Q("zip",{zlib:{level:9}});i.on("close",()=>o()),i.on("error",a=>r(a)),s.on("error",a=>r(a)),s.pipe(i),s.glob("**/*",{cwd:t,dot:!0,ignore:[n]}),s.finalize()})}async function re(t,e){let n=v.join(t,"menifest.json");if(!w.existsSync(n))throw new Error(`\u672A\u627E\u5230 menifest.json: ${n}`);let o=await w.promises.readFile(n,"utf8"),r=JSON.parse(o);r.name=e.name,r.version=e.version,e.description&&(r.description=e.description,r.note=e.description),await w.promises.writeFile(n,`${JSON.stringify(r,null,2)}
5
+ `,"utf8")}async function _(){let t=process.cwd(),e=await ne(t),n=v.join(t,"dist"),o=`${e.name}_${e.version}.zip`,r=v.join(n,o),i=process.platform==="win32"?"npm.cmd":"npm";if(console.log("\u5F00\u59CB\u6267\u884C\u6784\u5EFA: npm run build"),await te(i,["run","build"],t),!w.existsSync(n))throw new Error("\u6784\u5EFA\u5B8C\u6210\u540E\u672A\u627E\u5230 dist \u76EE\u5F55");console.log("\u5F00\u59CB\u540C\u6B65 menifest.json \u5B57\u6BB5"),await re(n,e),console.log(`\u5F00\u59CB\u6253\u5305 dist: ${o}`),await oe(n,r,o),console.log(`\u53D1\u5E03\u5305\u751F\u6210\u6210\u529F: ${r}`)}import T from"fs";import ie from"path";import{spawn as S,spawnSync as se}from"child_process";var ae={excel:"{00024500-0000-0000-C000-000000000046}",word:"{000209FF-0000-0000-C000-000000000046}",ppt:"{91493441-5A91-11CF-8700-00AA0060263B}"};function ce(t){let e=String(t||"").trim().toLowerCase();if(e==="excel")return"excel";if(e==="word")return"word";if(e==="ppt"||e==="powerpoint")return"ppt";throw new Error(`\u4E0D\u652F\u6301\u7684 appType: ${t||"(\u7A7A)"}\uFF0C\u4EC5\u652F\u6301 Excel/Word/Ppt`)}async function pe(t){let e=ie.join(t,"package.json");if(!T.existsSync(e))throw new Error(`\u672A\u627E\u5230 package.json: ${e}`);let n=await T.promises.readFile(e,"utf8"),o=JSON.parse(n);if(!o.scripts?.dev)throw new Error("\u5F53\u524D\u9879\u76EE\u7F3A\u5C11 scripts.dev\uFF0C\u65E0\u6CD5\u6267\u884C npm run dev");if(!o.appType)throw new Error("package.json \u7F3A\u5C11 appType \u5B57\u6BB5");return o}function le(t){return/^[A-Za-z0-9_./:-]+$/.test(t)?t:`"${String(t).replace(/"/g,'""')}"`}function ue(t){let e=["inherit","pipe","pipe"];if(process.platform==="win32"){let n=["npm.cmd","run","dev"].map(le).join(" ");return S("cmd.exe",["/d","/s","/c",n],{cwd:t,stdio:e})}return S("npm",["run","dev"],{cwd:t,stdio:e})}function fe(t){return t.replace(/\x1B\[[0-?]*[ -/]*[@-~]/g,"")}function me(t){let e=fe(t).match(/https?:\/\/(?:127\.0\.0\.1|localhost):(\d+)/i)?.[1];if(!e)return null;let n=Number.parseInt(e,10);return!Number.isInteger(n)||n<=0||n>65535?null:n}async function de(t,e=3e4){return new Promise((n,o)=>{let r=!1,i=f=>u(()=>o(f)),s=f=>{u(()=>o(new Error(`\u672A\u89E3\u6790\u5230 Vite \u7AEF\u53E3\uFF0Cnpm run dev \u5DF2\u9000\u51FA\uFF0C\u9000\u51FA\u7801: ${f}`)))},a=f=>y(f,process.stdout),l=f=>y(f,process.stderr),m=()=>{t.off("error",i),t.off("close",s),t.stdout?.off("data",a),t.stderr?.off("data",l)},u=f=>{r||(r=!0,clearTimeout(N),m(),f())},y=(f,W)=>{W.write(f);let x=me(f.toString("utf8"));x!==null&&u(()=>n(x))};t.on("error",i),t.on("close",s),t.stdout?.on("data",a),t.stderr?.on("data",l);let N=setTimeout(()=>{u(()=>o(new Error(`\u7B49\u5F85 Vite \u76D1\u542C\u7AEF\u53E3\u8D85\u65F6\uFF08${e}ms\uFF09`)))},e)})}function we(t){let e=se("reg",["query",t,"/ve"],{encoding:"utf8"});if(e.status!==0)return null;let o=`${e.stdout||""}`.split(/\r?\n/).find(i=>/REG_SZ|REG_EXPAND_SZ/i.test(i));if(!o)return null;let r=o.match(/REG_(?:SZ|EXPAND_SZ)\s+(.+)$/i);return!r||!r[1]?null:r[1].trim()}function ge(t){return t.replace(/%([^%]+)%/g,(e,n)=>process.env[n]||`%${n}%`)}function ye(t){let e=ge(t.trim());if(e.startsWith('"')){let o=e.indexOf('"',1);if(o>1)return e.slice(1,o)}let n=e.match(/^(.+?\.exe)/i);return n&&n[1]?n[1].trim():e}function he(t){let e=ae[t],n=[`HKCR\\CLSID\\${e}\\LocalServer32`,`HKLM\\SOFTWARE\\Classes\\CLSID\\${e}\\LocalServer32`,`HKLM\\SOFTWARE\\WOW6432Node\\Classes\\CLSID\\${e}\\LocalServer32`];for(let o of n){let r=we(o);if(!r)continue;let i=ye(r);if(i&&T.existsSync(i))return i}throw new Error(`\u65E0\u6CD5\u901A\u8FC7 CLSID \u5B9A\u4F4D ${t} \u5B89\u88C5\u8DEF\u5F84\uFF0C\u8BF7\u68C0\u67E5 Office \u662F\u5426\u5DF2\u5B89\u88C5`)}function ve(t,e){S(t,[e],{detached:!0,stdio:"ignore"}).unref()}async function F(){if(process.platform!=="win32")throw new Error("debug \u547D\u4EE4\u5F53\u524D\u4EC5\u652F\u6301 Windows");let t=process.cwd(),e=ue(t);await new Promise((l,m)=>{e.once("error",u=>m(u)),e.once("spawn",()=>l())}),console.log("\u8C03\u8BD5\u670D\u52A1\u5DF2\u542F\u52A8\uFF0C\u6B63\u5728\u8BFB\u53D6 appType \u5E76\u542F\u52A8 Office...");let n=await pe(t),o=ce(n.appType),r=he(o),a=`--uudev-debug=${`http://127.0.0.1:${await de(e)}`}`;console.log(`\u5DF2\u8BC6\u522B appType: ${n.appType}`),console.log(`\u542F\u52A8 Office: ${r} ${a}`),ve(r,a),await new Promise((l,m)=>{e.on("close",u=>{if(u===0||u===null){l();return}m(new Error(`npm run dev \u9000\u51FA\uFF0C\u9000\u51FA\u7801: ${u}`))})})}var Ye=Pe(import.meta.url);function Se(){let t=k.dirname(Te(import.meta.url)),e=[k.resolve(t,"package.json"),k.resolve(t,"../package.json")];for(let n of e)if(M.existsSync(n))try{let o=JSON.parse(M.readFileSync(n,"utf8"));if(o?.version)return o.version}catch{}return"0.0.0"}var L=Se();async function ke(){try{return(await import("chalk")).default}catch{return null}}function J(){console.log(`uudev v${L}`),console.log(""),console.log("uudev <command> [options]"),console.log(""),console.log("Commands:"),console.log(" create"),console.log(" \u4EA4\u4E92\u5F0F\u521B\u5EFA\u9879\u76EE\uFF08\u59CB\u7EC8\u8FDB\u5165\u5411\u5BFC\uFF0C\u5FFD\u7565\u9644\u5E26\u53C2\u6570\uFF09"),console.log(" debug"),console.log(" \u5728\u5F53\u524D\u9879\u76EE\u4E2D\u6267\u884C npm run debug\uFF0C\u5E76\u6309 appType \u542F\u52A8 Office\uFF08\u643A\u5E26 --uudev-debug\uFF09"),console.log(" makezip"),console.log(" \u5728\u5F53\u524D\u9879\u76EE\u4E2D\u6267\u884C npm run makezip\uFF0C\u5E76\u5C06 dist \u76EE\u5F55\u5185\u5BB9\u6253\u5305\u4E3A appName_version.zip"),console.log(" --help, -h"),console.log(" \u663E\u793A\u5E2E\u52A9\u4FE1\u606F"),console.log(" --version, -v"),console.log(" \u663E\u793A\u7248\u672C\u4FE1\u606F"),console.log(""),console.log("AppType options: Excel | Word | Ppt"),console.log("Version format : x.x.x (\u4F8B\u5982 1.0.0)")}function xe(){console.log(`uudev v${L}`)}async function Ee(){let t=process.argv[2],e=await ke();if(!t||t==="--help"||t==="-h"||t==="help"){J();return}if(t==="--version"||t==="-v"||t==="version"){xe();return}if(t==="create"){if(process.argv.length>3){let n="create \u547D\u4EE4\u4F1A\u5FFD\u7565\u9644\u5E26\u53C2\u6570\uFF0C\u5DF2\u8FDB\u5165\u521B\u5EFA\u5411\u5BFC\u3002";console.log(e?e.yellow(n):n)}await O();return}if(t==="makezip"){await _();return}if(t==="debug"){await F();return}J()}Ee().catch(t=>{console.error(`\u6267\u884C\u5931\u8D25: ${t.message}`),process.exit(1)});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uudev",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "description": "uudev dev tool",
5
5
  "keywords": [
6
6
  "uudev"