uudev 1.1.8 → 1.1.9

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 +2 -3
package/main.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{createRequire as Ie}from"module";import ne from"fs";import I from"path";import{fileURLToPath as Le}from"url";import p from"fs";import l from"path";import B from"readline";import{spawn as V}from"child_process";import{fileURLToPath as ae}from"url";var ce=ae(import.meta.url),q=l.dirname(ce),x=[{key:"1",label:"Excel",value:"Excel",template:"office"},{key:"2",label:"Word",value:"Word",template:"office"},{key:"3",label:"Ppt",value:"Ppt",template:"office"}],H={Excel:"src_excel",Word:"src_word",Ppt:"src_ppt"},pe={Excel:["uudev/types/excel"],Word:["uudev/types/word"],Ppt:["uudev/types/ppt"]};async function le(){try{return(await import("chalk")).default}catch{return null}}async function ue(){try{return(await import("inquirer")).default}catch{return null}}function v(e){if(!e)return;let t=e.trim().toLowerCase(),r=x.find(o=>o.key===t);if(r)return r;let n=x.find(o=>o.label.toLowerCase()===t);if(n)return n}function fe(e){let t=v(e);return t?t.template:String(e||"office").toLowerCase()}function Z(e){return/^\d+\.\d+\.\d+$/.test(String(e||""))}function M(e,t){return new Promise(r=>{e.question(t,n=>r(n.trim()))})}async function me(e={}){let t={...e},r=await le(),n=await ue();if(t.appType){let i=v(t.appType);i&&(t.appType=i.value)}if(t.name&&t.version&&t.appType)return t;let o=B.createInterface({input:process.stdin,output:process.stdout});try{if(!t.name){let i=await M(o,"\u8BF7\u8F93\u5165\u7A0B\u5E8F name: ");t.name=i}if(!t.version)for(;;){let s=await M(o,"\u8BF7\u8F93\u5165 version (\u9ED8\u8BA4 1.0.0): ")||"1.0.0";if(Z(s)){t.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(r?r.red(a):a)}}finally{o.close()}if(!t.appType)if(n){let i=await n.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:x[0].value,choices:x.map(s=>({name:s.label,value:s.value}))}]);t.appType=i.appTypeSelection}else{let i=r?r.cyan("\u8BF7\u9009\u62E9 appType:"):"\u8BF7\u9009\u62E9 appType:";console.log(i);for(let a of x){let c=r?`${r.green(a.key)}. ${r.yellow(a.label)}`:`${a.key}. ${a.label}`;console.log(c)}let s=B.createInterface({input:process.stdin,output:process.stdout});try{let a=await M(s,"\u8BF7\u8F93\u5165\u5E8F\u53F7\u6216\u540D\u79F0 (\u9ED8\u8BA4 1): "),c=v(a||"1");if(!c)throw new Error("appType \u4EC5\u652F\u6301 Excel/Word/Ppt");t.appType=c.value}finally{s.close()}}return t}function de(e){if(!e.name)throw new Error("name \u4E0D\u80FD\u4E3A\u7A7A");if(/[\\/]/.test(e.name))throw new Error("name \u4E0D\u80FD\u5305\u542B\u8DEF\u5F84\u5206\u9694\u7B26");if(!e.appType)throw new Error("appType \u4E0D\u80FD\u4E3A\u7A7A");if(!v(e.appType))throw new Error("appType \u4EC5\u652F\u6301 Excel/Word/Ppt");if(!e.version)throw new Error("version \u4E0D\u80FD\u4E3A\u7A7A");if(!Z(e.version))throw new Error("version \u4EC5\u652F\u6301 x.x.x \u683C\u5F0F\uFF0C\u4F8B\u5982 1.0.0")}async function k(e,t){let r=await p.promises.readdir(e,{withFileTypes:!0}),n=new Set(["node_modules","dist"]);await p.promises.mkdir(t,{recursive:!0});for(let o of r){if(o.isDirectory()&&n.has(o.name))continue;let i=l.join(e,o.name),s=l.join(t,o.name);o.isDirectory()?await k(i,s):await p.promises.copyFile(i,s)}}function we(e){let t=v(e);if(t)return H[t.value]}async function ge(e,t,r){let n=we(r);if(!n)throw new Error(`\u672A\u627E\u5230 appType \u5BF9\u5E94\u6E90\u7801\u76EE\u5F55: ${r}`);let o=await p.promises.readdir(e,{withFileTypes:!0}),i=new Set(Object.values(H)),s=new Set(["node_modules","dist"]);await p.promises.mkdir(t,{recursive:!0});for(let c of o){if(!c.isDirectory()){let g=l.join(e,c.name),d=l.join(t,c.name);await p.promises.copyFile(g,d);continue}if(i.has(c.name)||s.has(c.name))continue;let y=l.join(e,c.name),f=l.join(t,c.name);await k(y,f)}let a=l.join(e,n);if(!p.existsSync(a))throw new Error(`\u6A21\u677F\u76EE\u5F55\u7F3A\u5C11 ${n}`);await k(a,l.join(t,"src"))}async function ye(e,t,r,n){let o=l.join(e,"package.json");if(!p.existsSync(o))return;let i=await p.promises.readFile(o,"utf8"),s=JSON.parse(i);s.name=t,s.version=r,s.appType=n,await p.promises.writeFile(o,`${JSON.stringify(s,null,2)}
3
- `,"utf8")}async function he(e,t){let r=l.join(e,"tsconfig.app.json");if(!p.existsSync(r))return;let n=v(t);if(!n)return;let o=pe[n.value];if(!o)return;let i=await p.promises.readFile(r,"utf8"),s=JSON.stringify(o);if(/"types"\s*:\s*\[[\s\S]*?\]/.test(i)){let a=i.replace(/"types"\s*:\s*\[[\s\S]*?\]/,`"types": ${s}`);await p.promises.writeFile(r,a,"utf8");return}if(/"compilerOptions"\s*:\s*\{/.test(i)){let a=i.replace(/"compilerOptions"\s*:\s*\{/,`"compilerOptions": {
4
- "types": ${s},`);await p.promises.writeFile(r,a,"utf8")}}async function ve(e){let t=l.join(e,"package-lock.json");p.existsSync(t)&&await p.promises.unlink(t)}function Pe(e){return new Promise((t,r)=>{let n=process.platform==="win32"?V("cmd.exe",["/d","/s","/c","npm.cmd install"],{cwd:e,stdio:"inherit"}):V("npm",["install"],{cwd:e,stdio:"inherit"});n.on("error",o=>{r(o)}),n.on("close",o=>{if(o===0){t();return}r(new Error(`npm install \u6267\u884C\u5931\u8D25\uFF0C\u9000\u51FA\u7801: ${o}`))})})}async function K(e){let t=await me(e||{}),r=v(t.appType||"Excel");r&&(t.appType=r.value),t.version=t.version||"1.0.0",de(t);let n=l.join(process.cwd(),t.name),o=fe(t.appType),s=[l.resolve(q,"..","apptemplate",o),l.resolve(q,"apptemplate",o)].find(a=>p.existsSync(a));if(!s)throw new Error(`\u672A\u627E\u5230 appType \u5BF9\u5E94\u6A21\u677F: ${t.appType}`);if(p.existsSync(n))throw new Error(`\u76EE\u5F55\u5DF2\u5B58\u5728: ${n}`);await p.promises.mkdir(n,{recursive:!0}),o==="office"?await ge(s,n,t.appType):await k(s,n),await ye(n,t.name,t.version,t.appType),await he(n,t.appType),await ve(n),console.log("\u6B63\u5728\u5B89\u88C5\u9879\u76EE\u4F9D\u8D56: npm install"),await Pe(n),console.log(`\u521B\u5EFA\u6210\u529F: ${n}`)}import P from"fs";import b from"path";import{spawn as U}from"child_process";import Se from"archiver";function xe(e){return/^[A-Za-z0-9_./:-]+$/.test(e)?e:`"${String(e).replace(/"/g,'""')}"`}function D(e,t,r){return new Promise((n,o)=>{let i=process.platform==="win32"?U("cmd.exe",["/d","/s","/c",[e,...t].map(xe).join(" ")],{cwd:r,stdio:"inherit"}):U(e,t,{cwd:r,stdio:"inherit"});i.on("error",s=>{o(s)}),i.on("close",s=>{if(s===0){n();return}o(new Error(`\u547D\u4EE4\u6267\u884C\u5931\u8D25: ${e} ${t.join(" ")}`))})})}async function Te(e){let t=b.join(e,"package.json");if(!P.existsSync(t))throw new Error(`\u672A\u627E\u5230 package.json: ${t}`);let r=await P.promises.readFile(t,"utf8"),n=JSON.parse(r);if(!n.name)throw new Error("package.json \u7F3A\u5C11 name \u5B57\u6BB5");if(!n.version)throw new Error("package.json \u7F3A\u5C11 version \u5B57\u6BB5");return n}async function Ee(e,t,r){return new Promise((n,o)=>{let i=P.createWriteStream(t),s=Se("zip",{zlib:{level:9}});i.on("close",()=>n()),i.on("error",a=>o(a)),s.on("error",a=>o(a)),s.pipe(i),s.glob("**/*",{cwd:e,dot:!0,ignore:[r]}),s.finalize()})}async function ke(e,t){let r=b.join(e,"menifest.json");if(!P.existsSync(r))throw new Error(`\u672A\u627E\u5230 menifest.json: ${r}`);let n=await P.promises.readFile(r,"utf8"),o=JSON.parse(n);o.name=t.name,o.version=t.version,t.description&&(o.description=t.description,o.note=t.description),await P.promises.writeFile(r,`${JSON.stringify(o,null,2)}
5
- `,"utf8")}async function G(){let e=process.cwd(),t=await Te(e),r=b.join(e,"dist"),n=`${t.name}_${t.version}.zip`,o=b.join(r,n),i=process.platform==="win32"?"npm.cmd":"npm";if(console.log("\u5F00\u59CB\u6267\u884C\u6784\u5EFA: npm run build"),await D(i,["run","build"],e),!P.existsSync(r))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 ke(r,t),console.log(`\u5F00\u59CB\u6253\u5305 dist: ${n}`),await Ee(r,o,n),console.log(`\u53D1\u5E03\u5305\u751F\u6210\u6210\u529F: ${o}`)}import j from"fs";import be from"path";import{spawn as $,spawnSync as $e}from"child_process";var Ae={excel:"{00024505-0016-0000-C000-000000000046}",word:"{000209F5-0000-0000-C000-000000000046}",ppt:"{1CDC7D25-5AA3-4DC4-8E0C-91524280F806}",access:"{73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}"},T=null,O=null,E=new Set,Y=!1;function _(e){let t=String(e||"").trim().toLowerCase();if(t==="excel")return"excel";if(t==="word")return"word";if(t==="ppt"||t==="powerpoint")return"ppt";if(t==="access")return"access";throw new Error(`\u4E0D\u652F\u6301\u7684 appType: ${e||"(\u7A7A)"}\uFF0C\u4EC5\u652F\u6301 Excel/Word/Ppt`)}async function F(e){let t=be.join(e,"package.json");if(!j.existsSync(t))throw new Error(`\u672A\u627E\u5230 package.json: ${t}`);let r=await j.promises.readFile(t,"utf8"),n=JSON.parse(r);if(!n.appType)throw new Error("package.json \u7F3A\u5C11 appType \u5B57\u6BB5");return n}function Ce(e){let t=["inherit","pipe","pipe"];return process.platform==="win32"?$("cmd.exe",["/c","npx","vite"],{cwd:e,stdio:t}):$("npx",["vite"],{cwd:e,stdio:t})}function W(e){let t=e.pid;if(t){if(process.platform==="win32"){$("taskkill",["/pid",String(t),"/t","/f"],{stdio:"ignore",windowsHide:!0});return}e.kill("SIGTERM")}}function Me(e){return e.replace(/\x1B\[[0-?]*[ -/]*[@-~]/g,"")}function De(e){let t=Me(e).match(/https?:\/\/(?:127\.0\.0\.1|localhost):(\d+)/i)?.[1];if(!t)return null;let r=Number.parseInt(t,10);return!Number.isInteger(r)||r<=0||r>65535?null:r}async function Oe(e,t=3e4){return new Promise((r,n)=>{let o=!1,i=u=>f(()=>n(u)),s=u=>{f(()=>n(new Error(`\u672A\u89E3\u6790\u5230\u672C\u5730\u670D\u52A1\u7AEF\u53E3\uFF0Cuudev debug\u5DF2\u9000\u51FA\uFF0C\u9000\u51FA\u7801: ${u}`)))},a=u=>g(u,process.stdout),c=u=>g(u,process.stderr),y=()=>{e.off("error",i),e.off("close",s),e.stdout?.off("data",a),e.stderr?.off("data",c)},f=u=>{o||(o=!0,clearTimeout(d),y(),u())},g=(u,A)=>{A.write(u);let S=De(u.toString("utf8"));S!==null&&f(()=>r(S))};e.on("error",i),e.on("close",s),e.stdout?.on("data",a),e.stderr?.on("data",c);let d=setTimeout(()=>{f(()=>n(new Error(`\u7B49\u5F85\u672C\u5730\u670D\u52A1\u7AEF\u53E3\u8D85\u65F6\uFF08${t}ms\uFF09`)))},t)})}function je(e){let t=$e("reg",["query",e,"/ve"],{encoding:"utf8"});if(t.status!==0)return null;let n=`${t.stdout||""}`.split(/\r?\n/).find(i=>/REG_SZ|REG_EXPAND_SZ/i.test(i));if(!n)return null;let o=n.match(/REG_(?:SZ|EXPAND_SZ)\s+(.+)$/i);return!o||!o[1]?null:o[1].trim()}function _e(e){return e.replace(/%([^%]+)%/g,(t,r)=>process.env[r]||`%${r}%`)}function Fe(e){let t=_e(e.trim());if(t.startsWith('"')){let n=t.indexOf('"',1);if(n>1)return t.slice(1,n)}let r=t.match(/^(.+?\.exe)/i);return r&&r[1]?r[1].trim():t}function X(e){return String(e).padStart(2,"0")}function R(e,t=new Date){let r=String(e||"").trim(),n=X(t.getMonth()+1),o=X(t.getDate());return`uudev_smmName_${r}_${n}-${o}`}async function We(){return T||(O||(O=import("share-memory-win").then(e=>{let t=e.default??e;return T=t,t})),O)}function Re(){Y||(Y=!0,process.once("exit",()=>{if(T){for(let e of E)T.DeleteShareMemory(e);E.clear()}}))}async function Je(e,t){Re();let r=await We(),n=Buffer.concat([Buffer.from(t,"utf8"),Buffer.from([0])]),o=Math.max(1024,n.length);if(E.has(e)&&(r.DeleteShareMemory(e),E.delete(e)),!r.CreateShareMemory(e,o))throw new Error(`\u5171\u4EAB\u5185\u5B58\u521B\u5EFA\u5931\u8D25: ${e}`);if(!r.WriteShareMemory(e,n))throw r.DeleteShareMemory(e),new Error(`\u5171\u4EAB\u5185\u5B58\u5199\u5165\u5931\u8D25: ${e}`);E.add(e)}function J(e){let t=Ae[e],r=[`HKCR\\CLSID\\${t}\\LocalServer32`,`HKLM\\SOFTWARE\\Classes\\CLSID\\${t}\\LocalServer32`,`HKLM\\SOFTWARE\\WOW6432Node\\Classes\\CLSID\\${t}\\LocalServer32`];for(let n of r){let o=je(n);if(!o)continue;let i=Fe(o);if(i&&j.existsSync(i))return i}throw new Error(`\u65E0\u6CD5\u901A\u8FC7 CLSID \u5B9A\u4F4D ${e} \u5B89\u88C5\u8DEF\u5F84\uFF0C\u8BF7\u68C0\u67E5 Office \u662F\u5426\u5DF2\u5B89\u88C5`)}async function N(e,t,r){return await Je(t,r),$(e,{stdio:"ignore",windowsHide:!1})}async function Q(){if(process.platform!=="win32")throw new Error("debug \u547D\u4EE4\u5F53\u524D\u4EC5\u652F\u6301 Windows");let e=process.cwd(),t=Ce(e);await new Promise((f,g)=>{t.once("error",d=>g(d)),t.once("spawn",()=>f())}),console.log("\u8C03\u8BD5\u670D\u52A1\u5DF2\u542F\u52A8\uFF0C\u6B63\u5728\u8BFB\u53D6 appType \u5E76\u542F\u52A8 Office...");let r=await F(e),n=_(r.appType),o=J(n),s=`http://127.0.0.1:${await Oe(t)}`,a=R(r.appType);console.log(`\u5DF2\u8BC6\u522B appType: ${r.appType}`),console.log(`\u542F\u52A8 Office: ${o}`);let c=await N(o,a,s),y=!1;c.once("close",()=>{y=!0,console.log("Office \u5BA2\u6237\u7AEF\u5DF2\u9000\u51FA\uFF0C\u6B63\u5728\u5173\u95ED uudev debug..."),W(t)}),await new Promise((f,g)=>{t.on("close",d=>{if(y){f();return}if(d===0||d===null){f();return}g(new Error(`uudev debug\u9000\u51FA\uFF0C\u9000\u51FA\u7801: ${d}`))})})}import ee from"fs";import te from"path";import{spawn as Ne}from"child_process";async function re(){if(process.platform!=="win32")throw new Error("preview \u547D\u4EE4\u5F53\u524D\u4EC5\u652F\u6301 Windows");let e=process.cwd(),t=te.join(e,"dist"),r=!1;if(ee.existsSync(t)?(await ee.promises.readdir(t)).length===0&&(r=!0):r=!0,r){let w=process.platform==="win32"?"npm.cmd":"npm";await D(w,["run","build"],e)}let n=te.resolve(e),o=process.platform==="win32"?`npx.cmd vite preview --host=127.0.0.1 --outDir="${n}"`:`npx vite preview --host=127.0.0.1 --outDir="${n}"`,i=Ne(o,{cwd:e,stdio:["ignore","pipe","pipe"],shell:!0});function s(w){return w.replace(/\x1B\[[0-?]*[ -/]*[@-~]/g,"")}function a(w){let h=s(w).match(/https?:\/\/(?:127\.0\.0\.1|localhost):(\d+)/i)?.[1];if(!h)return null;let m=Number.parseInt(h,10);return!Number.isInteger(m)||m<=0||m>65535?null:m}let c=await new Promise((w,h)=>{let m=!1,L=C=>{let se=C.toString("utf8"),z=a(se);z&&!m&&(m=!0,w(z))};i.stdout?.on("data",L),i.stderr?.on("data",L),i.on("error",h),i.on("close",C=>{m||h(new Error(`uudev preview \u9000\u51FA\uFF0C\u9000\u51FA\u7801: ${C}`))}),setTimeout(()=>{m||h(new Error("\u7B49\u5F85 uudev preview \u7AEF\u53E3\u8D85\u65F6"))},2e4)}),y=await F(e),f=_(y.appType),g=J(f),d=`http://127.0.0.1:${c}/dist/index.html`,u=R(y.appType),A=await N(g,u,d),S=!1;A.once("close",()=>{S=!0,console.log("Office \u5BA2\u6237\u7AEF\u5DF2\u9000\u51FA\uFF0C\u6B63\u5728\u5173\u95ED uudev preview..."),W(i)}),await new Promise((w,h)=>{i.on("close",m=>{if(S){w(void 0);return}m===0||m===null?w(void 0):h(new Error(`uudev preview\u9000\u51FA\uFF0C\u9000\u51FA\u7801: ${m}`))})})}var Tt=Ie(import.meta.url);function ze(){let e=I.dirname(Le(import.meta.url)),t=[I.resolve(e,"package.json"),I.resolve(e,"../package.json")];for(let r of t)if(ne.existsSync(r))try{let n=JSON.parse(ne.readFileSync(r,"utf8"));if(n?.version)return n.version}catch{}return"0.0.0"}var ie=ze();async function Be(){try{return(await import("chalk")).default}catch{return null}}function oe(){console.log(`uudev v${ie}`),console.log(""),console.log("uudev <command> [options]"),console.log(""),console.log("Commands:"),console.log(" create"),console.log(" \u521B\u5EFAuuapp\u9879\u76EE, \u4F1A\u8FDB\u5165\u4EA4\u4E92\u5F0F\u5411\u5BFC\uFF0C\u5E2E\u52A9\u4F60\u5B8C\u6210\u9879\u76EE\u521B\u5EFA"),console.log(" debug"),console.log(" \u5728\u5F53\u524D\u9879\u76EE\u4E2D\u6267\u884C npm run debug\uFF0C\u5E76\u6309 appType \u542F\u52A8 Office"),console.log(" preview"),console.log(" \u6784\u5EFA\u5E76 vite preview \u5F53\u524D\u9879\u76EE\uFF0C\u81EA\u52A8\u542F\u52A8 Office \u5E76\u4F20\u9012\u8C03\u8BD5\u53C2\u6570"),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 Ve(){console.log(`uudev v${ie}`)}async function qe(){let e=process.argv[2],t=await Be();if(!e||e==="--help"||e==="-h"||e==="help"){oe();return}if(e==="--version"||e==="-v"||e==="version"){Ve();return}if(e==="create"){if(process.argv.length>3){let r="create \u547D\u4EE4\u4F1A\u5FFD\u7565\u9644\u5E26\u53C2\u6570\uFF0C\u5DF2\u8FDB\u5165\u521B\u5EFA\u5411\u5BFC\u3002";console.log(t?t.yellow(r):r)}await K();return}if(e==="makezip"){await G();return}if(e==="debug"){await Q();return}if(e==="preview"){await re();return}oe()}qe().catch(e=>{console.error(`\u6267\u884C\u5931\u8D25: ${e.message}`),process.exit(1)});
2
+ import{createRequire as Ne}from"module";import Q from"fs";import J from"path";import{fileURLToPath as Fe}from"url";import p from"fs";import l from"path";import I from"readline";import{spawn as L}from"child_process";import{fileURLToPath as re}from"url";var oe=re(import.meta.url),z=l.dirname(oe),T=[{key:"1",label:"Excel",value:"Excel",template:"office"},{key:"2",label:"Word",value:"Word",template:"office"},{key:"3",label:"Ppt",value:"Ppt",template:"office"}],V={Excel:"src_excel",Word:"src_word",Ppt:"src_ppt"},ie={Excel:["uudev/types/excel"],Word:["uudev/types/word"],Ppt:["uudev/types/ppt"]};async function se(){try{return(await import("chalk")).default}catch{return null}}async function ae(){try{return(await import("inquirer")).default}catch{return null}}function h(t){if(!t)return;let e=t.trim().toLowerCase(),n=T.find(o=>o.key===e);if(n)return n;let r=T.find(o=>o.label.toLowerCase()===e);if(r)return r}function ce(t){let e=h(t);return e?e.template:String(t||"office").toLowerCase()}function q(t){return/^\d+\.\d+\.\d+$/.test(String(t||""))}function C(t,e){return new Promise(n=>{t.question(e,r=>n(r.trim()))})}async function pe(t={}){let e={...t},n=await se(),r=await ae();if(e.appType){let i=h(e.appType);i&&(e.appType=i.value)}if(e.name&&e.version&&e.appType)return e;let o=I.createInterface({input:process.stdin,output:process.stdout});try{if(!e.name){let i=await C(o,"\u8BF7\u8F93\u5165\u7A0B\u5E8F name: ");e.name=i}if(!e.version)for(;;){let s=await C(o,"\u8BF7\u8F93\u5165 version (\u9ED8\u8BA4 1.0.0): ")||"1.0.0";if(q(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{o.close()}if(!e.appType)if(r){let i=await r.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:T[0].value,choices:T.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 T){let c=n?`${n.green(a.key)}. ${n.yellow(a.label)}`:`${a.key}. ${a.label}`;console.log(c)}let s=I.createInterface({input:process.stdin,output:process.stdout});try{let a=await C(s,"\u8BF7\u8F93\u5165\u5E8F\u53F7\u6216\u540D\u79F0 (\u9ED8\u8BA4 1): "),c=h(a||"1");if(!c)throw new Error("appType \u4EC5\u652F\u6301 Excel/Word/Ppt");e.appType=c.value}finally{s.close()}}return e}function le(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(!h(t.appType))throw new Error("appType \u4EC5\u652F\u6301 Excel/Word/Ppt");if(!t.version)throw new Error("version \u4E0D\u80FD\u4E3A\u7A7A");if(!q(t.version))throw new Error("version \u4EC5\u652F\u6301 x.x.x \u683C\u5F0F\uFF0C\u4F8B\u5982 1.0.0")}async function S(t,e){let n=await p.promises.readdir(t,{withFileTypes:!0}),r=new Set(["node_modules","dist"]);await p.promises.mkdir(e,{recursive:!0});for(let o of n){if(o.isDirectory()&&r.has(o.name))continue;let i=l.join(t,o.name),s=l.join(e,o.name);o.isDirectory()?await S(i,s):await p.promises.copyFile(i,s)}}function ue(t){let e=h(t);if(e)return V[e.value]}async function fe(t,e,n){let r=ue(n);if(!r)throw new Error(`\u672A\u627E\u5230 appType \u5BF9\u5E94\u6E90\u7801\u76EE\u5F55: ${n}`);let o=await p.promises.readdir(t,{withFileTypes:!0}),i=new Set(Object.values(V)),s=new Set(["node_modules","dist"]);await p.promises.mkdir(e,{recursive:!0});for(let c of o){if(!c.isDirectory()){let y=l.join(t,c.name),w=l.join(e,c.name);await p.promises.copyFile(y,w);continue}if(i.has(c.name)||s.has(c.name))continue;let d=l.join(t,c.name),f=l.join(e,c.name);await S(d,f)}let a=l.join(t,r);if(!p.existsSync(a))throw new Error(`\u6A21\u677F\u76EE\u5F55\u7F3A\u5C11 ${r}`);await S(a,l.join(e,"src"))}async function me(t,e,n,r){let o=l.join(t,"package.json");if(!p.existsSync(o))return;let i=await p.promises.readFile(o,"utf8"),s=JSON.parse(i);s.name=e,s.version=n,s.appType=r,await p.promises.writeFile(o,`${JSON.stringify(s,null,2)}
3
+ `,"utf8")}async function de(t,e){let n=l.join(t,"tsconfig.app.json");if(!p.existsSync(n))return;let r=h(e);if(!r)return;let o=ie[r.value];if(!o)return;let i=await p.promises.readFile(n,"utf8"),s=JSON.stringify(o);if(/"types"\s*:\s*\[[\s\S]*?\]/.test(i)){let a=i.replace(/"types"\s*:\s*\[[\s\S]*?\]/,`"types": ${s}`);await p.promises.writeFile(n,a,"utf8");return}if(/"compilerOptions"\s*:\s*\{/.test(i)){let a=i.replace(/"compilerOptions"\s*:\s*\{/,`"compilerOptions": {
4
+ "types": ${s},`);await p.promises.writeFile(n,a,"utf8")}}async function we(t){let e=l.join(t,"package-lock.json");p.existsSync(e)&&await p.promises.unlink(e)}function ge(t){return new Promise((e,n)=>{let r=process.platform==="win32"?L("cmd.exe",["/d","/s","/c","npm.cmd install"],{cwd:t,stdio:"inherit"}):L("npm",["install"],{cwd:t,stdio:"inherit"});r.on("error",o=>{n(o)}),r.on("close",o=>{if(o===0){e();return}n(new Error(`npm install \u6267\u884C\u5931\u8D25\uFF0C\u9000\u51FA\u7801: ${o}`))})})}async function B(t){let e=await pe(t||{}),n=h(e.appType||"Excel");n&&(e.appType=n.value),e.version=e.version||"1.0.0",le(e);let r=l.join(process.cwd(),e.name),o=ce(e.appType),s=[l.resolve(z,"..","apptemplate",o),l.resolve(z,"apptemplate",o)].find(a=>p.existsSync(a));if(!s)throw new Error(`\u672A\u627E\u5230 appType \u5BF9\u5E94\u6A21\u677F: ${e.appType}`);if(p.existsSync(r))throw new Error(`\u76EE\u5F55\u5DF2\u5B58\u5728: ${r}`);await p.promises.mkdir(r,{recursive:!0}),o==="office"?await fe(s,r,e.appType):await S(s,r),await me(r,e.name,e.version,e.appType),await de(r,e.appType),await we(r),console.log("\u6B63\u5728\u5B89\u88C5\u9879\u76EE\u4F9D\u8D56: npm install"),await ge(r),console.log(`\u521B\u5EFA\u6210\u529F: ${r}`)}import P from"fs";import E from"path";import{spawn as H}from"child_process";import ye from"archiver";function ve(t){return/^[A-Za-z0-9_./:-]+$/.test(t)?t:`"${String(t).replace(/"/g,'""')}"`}function A(t,e,n){return new Promise((r,o)=>{let i=process.platform==="win32"?H("cmd.exe",["/d","/s","/c",[t,...e].map(ve).join(" ")],{cwd:n,stdio:"inherit"}):H(t,e,{cwd:n,stdio:"inherit"});i.on("error",s=>{o(s)}),i.on("close",s=>{if(s===0){r();return}o(new Error(`\u547D\u4EE4\u6267\u884C\u5931\u8D25: ${t} ${e.join(" ")}`))})})}async function he(t){let e=E.join(t,"package.json");if(!P.existsSync(e))throw new Error(`\u672A\u627E\u5230 package.json: ${e}`);let n=await P.promises.readFile(e,"utf8"),r=JSON.parse(n);if(!r.name)throw new Error("package.json \u7F3A\u5C11 name \u5B57\u6BB5");if(!r.version)throw new Error("package.json \u7F3A\u5C11 version \u5B57\u6BB5");return r}async function Pe(t,e,n){return new Promise((r,o)=>{let i=P.createWriteStream(e),s=ye("zip",{zlib:{level:9}});i.on("close",()=>r()),i.on("error",a=>o(a)),s.on("error",a=>o(a)),s.pipe(i),s.glob("**/*",{cwd:t,dot:!0,ignore:[n]}),s.finalize()})}async function xe(t,e){let n=E.join(t,"menifest.json");if(!P.existsSync(n))throw new Error(`\u672A\u627E\u5230 menifest.json: ${n}`);let r=await P.promises.readFile(n,"utf8"),o=JSON.parse(r);o.name=e.name,o.version=e.version,e.description&&(o.description=e.description,o.note=e.description),await P.promises.writeFile(n,`${JSON.stringify(o,null,2)}
5
+ `,"utf8")}async function Z(){let t=process.cwd(),e=await he(t),n=E.join(t,"dist"),r=`${e.name}_${e.version}.zip`,o=E.join(n,r),i=process.platform==="win32"?"npm.cmd":"npm";if(console.log("\u5F00\u59CB\u6267\u884C\u6784\u5EFA: npm run build"),await A(i,["run","build"],t),!P.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 xe(n,e),console.log(`\u5F00\u59CB\u6253\u5305 dist: ${r}`),await Pe(n,o,r),console.log(`\u53D1\u5E03\u5305\u751F\u6210\u6210\u529F: ${o}`)}import O from"fs";import Te from"path";import Se from"net";import{spawn as k,spawnSync as Ee}from"child_process";var ke={excel:"{00024505-0016-0000-C000-000000000046}",word:"{000209F5-0000-0000-C000-000000000046}",ppt:"{1CDC7D25-5AA3-4DC4-8E0C-91524280F806}",access:"{73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}"};function D(t){let e=String(t||"").trim().toLowerCase();if(e==="excel")return"excel";if(e==="word")return"word";if(e==="ppt"||e==="powerpoint")return"ppt";if(e==="access")return"access";throw new Error(`\u4E0D\u652F\u6301\u7684 appType: ${t||"(\u7A7A)"}\uFF0C\u4EC5\u652F\u6301 Excel/Word/Ppt`)}async function j(t){let e=Te.join(t,"package.json");if(!O.existsSync(e))throw new Error(`\u672A\u627E\u5230 package.json: ${e}`);let n=await O.promises.readFile(e,"utf8"),r=JSON.parse(n);if(!r.appType)throw new Error("package.json \u7F3A\u5C11 appType \u5B57\u6BB5");return r}function be(t){let e=["inherit","pipe","pipe"];return process.platform==="win32"?k("cmd.exe",["/c","npx","vite"],{cwd:t,stdio:e}):k("npx",["vite"],{cwd:t,stdio:e})}function _(t){let e=t.pid;if(e){if(process.platform==="win32"){k("taskkill",["/pid",String(e),"/t","/f"],{stdio:"ignore",windowsHide:!0});return}t.kill("SIGTERM")}}function $e(t){return t.replace(/\x1B\[[0-?]*[ -/]*[@-~]/g,"")}function Ce(t){let e=$e(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 Ae(t,e=3e4){return new Promise((n,r)=>{let o=!1,i=u=>f(()=>r(u)),s=u=>{f(()=>r(new Error(`\u672A\u89E3\u6790\u5230\u672C\u5730\u670D\u52A1\u7AEF\u53E3\uFF0Cuudev debug\u5DF2\u9000\u51FA\uFF0C\u9000\u51FA\u7801: ${u}`)))},a=u=>y(u,process.stdout),c=u=>y(u,process.stderr),d=()=>{t.off("error",i),t.off("close",s),t.stdout?.off("data",a),t.stderr?.off("data",c)},f=u=>{o||(o=!0,clearTimeout(w),d(),u())},y=(u,b)=>{b.write(u);let x=Ce(u.toString("utf8"));x!==null&&f(()=>n(x))};t.on("error",i),t.on("close",s),t.stdout?.on("data",a),t.stderr?.on("data",c);let w=setTimeout(()=>{f(()=>r(new Error(`\u7B49\u5F85\u672C\u5730\u670D\u52A1\u7AEF\u53E3\u8D85\u65F6\uFF08${e}ms\uFF09`)))},e)})}function Oe(t){let e=Ee("reg",["query",t,"/ve"],{encoding:"utf8"});if(e.status!==0)return null;let r=`${e.stdout||""}`.split(/\r?\n/).find(i=>/REG_SZ|REG_EXPAND_SZ/i.test(i));if(!r)return null;let o=r.match(/REG_(?:SZ|EXPAND_SZ)\s+(.+)$/i);return!o||!o[1]?null:o[1].trim()}function De(t){return t.replace(/%([^%]+)%/g,(e,n)=>process.env[n]||`%${n}%`)}function je(t){let e=De(t.trim());if(e.startsWith('"')){let r=e.indexOf('"',1);if(r>1)return e.slice(1,r)}let n=e.match(/^(.+?\.exe)/i);return n&&n[1]?n[1].trim():e}function U(t){return String(t).padStart(2,"0")}function N(t,e=new Date){let n=String(t||"").trim(),r=U(e.getMonth()+1),o=U(e.getDate());return`uudev_pipe_${n}_${r}-${o}`}function F(t){let e=ke[t],n=[`HKCR\\CLSID\\${e}\\LocalServer32`,`HKLM\\SOFTWARE\\Classes\\CLSID\\${e}\\LocalServer32`,`HKLM\\SOFTWARE\\WOW6432Node\\Classes\\CLSID\\${e}\\LocalServer32`];for(let r of n){let o=Oe(r);if(!o)continue;let i=je(o);if(i&&O.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`)}async function M(t,e,n){let r=`\\\\.\\pipe\\${e}`,o=Se.createServer(c=>{c.write(n,"utf8"),c.end()});await new Promise((c,d)=>{o.on("error",d),o.listen(r,c)});let i=!1,s=()=>{i||(i=!0,o.close())};return process.once("exit",s),o.on("close",s),k(t,{stdio:"ignore",windowsHide:!1})}async function G(){if(process.platform!=="win32")throw new Error("debug \u547D\u4EE4\u5F53\u524D\u4EC5\u652F\u6301 Windows");let t=process.cwd(),e=be(t);await new Promise((f,y)=>{e.once("error",w=>y(w)),e.once("spawn",()=>f())}),console.log("\u8C03\u8BD5\u670D\u52A1\u5DF2\u542F\u52A8\uFF0C\u6B63\u5728\u8BFB\u53D6 appType \u5E76\u542F\u52A8 Office...");let n=await j(t),r=D(n.appType),o=F(r),s=`http://127.0.0.1:${await Ae(e)}`,a=N(n.appType);console.log(`\u5DF2\u8BC6\u522B appType: ${n.appType}`),console.log(`\u542F\u52A8 Office: ${o}`);let c=await M(o,a,s),d=!1;c.once("close",()=>{d=!0,console.log("Office \u5BA2\u6237\u7AEF\u5DF2\u9000\u51FA\uFF0C\u6B63\u5728\u5173\u95ED uudev debug..."),_(e)}),await new Promise((f,y)=>{e.on("close",w=>{if(d){f();return}if(w===0||w===null){f();return}y(new Error(`uudev debug\u9000\u51FA\uFF0C\u9000\u51FA\u7801: ${w}`))})})}import K from"fs";import Y from"path";import{spawn as _e}from"child_process";async function X(){if(process.platform!=="win32")throw new Error("preview \u547D\u4EE4\u5F53\u524D\u4EC5\u652F\u6301 Windows");let t=process.cwd(),e=Y.join(t,"dist"),n=!1;if(K.existsSync(e)?(await K.promises.readdir(e)).length===0&&(n=!0):n=!0,n){let g=process.platform==="win32"?"npm.cmd":"npm";await A(g,["run","build"],t)}let r=Y.resolve(t),o=process.platform==="win32"?`npx.cmd vite preview --host=127.0.0.1 --outDir="${r}"`:`npx vite preview --host=127.0.0.1 --outDir="${r}"`,i=_e(o,{cwd:t,stdio:["ignore","pipe","pipe"],shell:!0});function s(g){return g.replace(/\x1B\[[0-?]*[ -/]*[@-~]/g,"")}function a(g){let v=s(g).match(/https?:\/\/(?:127\.0\.0\.1|localhost):(\d+)/i)?.[1];if(!v)return null;let m=Number.parseInt(v,10);return!Number.isInteger(m)||m<=0||m>65535?null:m}let c=await new Promise((g,v)=>{let m=!1,R=$=>{let ne=$.toString("utf8"),W=a(ne);W&&!m&&(m=!0,g(W))};i.stdout?.on("data",R),i.stderr?.on("data",R),i.on("error",v),i.on("close",$=>{m||v(new Error(`uudev preview \u9000\u51FA\uFF0C\u9000\u51FA\u7801: ${$}`))}),setTimeout(()=>{m||v(new Error("\u7B49\u5F85 uudev preview \u7AEF\u53E3\u8D85\u65F6"))},2e4)}),d=await j(t),f=D(d.appType),y=F(f),w=`http://127.0.0.1:${c}/dist/index.html`,u=N(d.appType),b=await M(y,u,w),x=!1;b.once("close",()=>{x=!0,console.log("Office \u5BA2\u6237\u7AEF\u5DF2\u9000\u51FA\uFF0C\u6B63\u5728\u5173\u95ED uudev preview..."),_(i)}),await new Promise((g,v)=>{i.on("close",m=>{if(x){g(void 0);return}m===0||m===null?g(void 0):v(new Error(`uudev preview\u9000\u51FA\uFF0C\u9000\u51FA\u7801: ${m}`))})})}var vt=Ne(import.meta.url);function Me(){let t=J.dirname(Fe(import.meta.url)),e=[J.resolve(t,"package.json"),J.resolve(t,"../package.json")];for(let n of e)if(Q.existsSync(n))try{let r=JSON.parse(Q.readFileSync(n,"utf8"));if(r?.version)return r.version}catch{}return"0.0.0"}var te=Me();async function Je(){try{return(await import("chalk")).default}catch{return null}}function ee(){console.log(`uudev v${te}`),console.log(""),console.log("uudev <command> [options]"),console.log(""),console.log("Commands:"),console.log(" create"),console.log(" \u521B\u5EFAuuapp\u9879\u76EE, \u4F1A\u8FDB\u5165\u4EA4\u4E92\u5F0F\u5411\u5BFC\uFF0C\u5E2E\u52A9\u4F60\u5B8C\u6210\u9879\u76EE\u521B\u5EFA"),console.log(" debug"),console.log(" \u5728\u5F53\u524D\u9879\u76EE\u4E2D\u6267\u884C npm run debug\uFF0C\u5E76\u6309 appType \u542F\u52A8 Office"),console.log(" preview"),console.log(" \u6784\u5EFA\u5E76 vite preview \u5F53\u524D\u9879\u76EE\uFF0C\u81EA\u52A8\u542F\u52A8 Office \u5E76\u4F20\u9012\u8C03\u8BD5\u53C2\u6570"),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 Re(){console.log(`uudev v${te}`)}async function We(){let t=process.argv[2],e=await Je();if(!t||t==="--help"||t==="-h"||t==="help"){ee();return}if(t==="--version"||t==="-v"||t==="version"){Re();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 B();return}if(t==="makezip"){await Z();return}if(t==="debug"){await G();return}if(t==="preview"){await X();return}ee()}We().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.8",
3
+ "version": "1.1.9",
4
4
  "description": "uudev dev tool",
5
5
  "keywords": [
6
6
  "uudev"
@@ -29,8 +29,7 @@
29
29
  "dependencies": {
30
30
  "archiver": "^7.0.1",
31
31
  "chalk": "^5.6.2",
32
- "inquirer": "^12.10.0",
33
- "share-memory-win": "^1.2.1"
32
+ "inquirer": "^12.10.0"
34
33
  },
35
34
  "files": [
36
35
  "main.js",