hackmud-script-manager 0.13.0-f373e9c → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- package/bin/hsm.js +1 -1
- package/generateTypings.js +1 -1
- package/index.js +1 -1
- package/package.json +16 -16
- package/processScript/index.js +1 -1
- package/processScript/minify.js +1 -1
- package/processScript/transform.js +1 -1
- package/pull.js +1 -1
- package/push.js +1 -1
- package/{bin → src/bin}/hsm.d.ts +0 -0
- package/{generateTypings.d.ts → src/generateTypings.d.ts} +0 -0
- package/{index.d.ts → src/index.d.ts} +1 -2
- package/{processScript → src/processScript}/index.d.ts +0 -0
- package/{processScript → src/processScript}/minify.d.ts +0 -0
- package/{processScript → src/processScript}/postprocess.d.ts +0 -0
- package/{processScript → src/processScript}/preprocess.d.ts +0 -0
- package/{processScript → src/processScript}/shared.d.ts +0 -0
- package/{processScript → src/processScript}/transform.d.ts +0 -0
- package/{pull.d.ts → src/pull.d.ts} +0 -0
- package/{push.d.ts → src/push.d.ts} +0 -0
- package/{syncMacros.d.ts → src/syncMacros.d.ts} +0 -0
- package/{watch.d.ts → src/watch.d.ts} +0 -0
- package/watch.js +1 -1
- package/index.cjs +0 -3
- package/test.d.ts +0 -6
- package/test.js +0 -1
package/bin/hsm.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
#!/usr/bin/env node
|
2
|
-
import o from"fs";import{resolve as
|
2
|
+
import o from"chalk";import e from"fs";import{homedir as s}from"os";import{resolve as t,basename as i,extname as n,dirname as r,relative as a}from"path";import{s as l,processScript as c}from"../processScript/index.js";import{D as p,w as g,push as m}from"../push.js";import{c as u}from"../processScript/minify.js";import{generateTypings as f}from"../generateTypings.js";import{syncMacros as b}from"../syncMacros.js";import{pull as h}from"../pull.js";import{watch as d}from"../watch.js";import"@babel/generator";import"@babel/parser";import"@babel/plugin-proposal-class-properties";import"@babel/plugin-proposal-class-static-block";import"@babel/plugin-proposal-decorators";import"@babel/plugin-proposal-do-expressions";import"@babel/plugin-proposal-function-bind";import"@babel/plugin-proposal-function-sent";import"@babel/plugin-proposal-json-strings";import"@babel/plugin-proposal-logical-assignment-operators";import"@babel/plugin-proposal-nullish-coalescing-operator";import"@babel/plugin-proposal-numeric-separator";import"@babel/plugin-proposal-object-rest-spread";import"@babel/plugin-proposal-optional-catch-binding";import"@babel/plugin-proposal-optional-chaining";import"@babel/plugin-proposal-partial-application";import"@babel/plugin-proposal-pipeline-operator";import"@babel/plugin-proposal-private-property-in-object";import"@babel/plugin-proposal-record-and-tuple";import"@babel/plugin-proposal-throw-expressions";import"@babel/plugin-transform-exponentiation-operator";import"@babel/plugin-transform-typescript";import"@babel/traverse";import"@babel/types";import"@rollup/plugin-babel";import"@rollup/plugin-commonjs";import"@rollup/plugin-json";import"@rollup/plugin-node-resolve";import"perf_hooks";import"prettier";import"rollup";import"../processScript/postprocess.js";import"../spliceString-2c6f214f.js";import"../processScript/preprocess.js";import"../assert-1b7dada8.js";import"../processScript/transform.js";import"../processScript/shared.js";import"acorn";import"terser";import"chokidar";const{readFile:k,rmdir:w,writeFile:y,mkdir:j}=e.promises,v=t(s(),".config"),$=t(v,"hsm.json"),S=new Map,P=[];let C;const x=o.rgb(255,244,4),N=o.rgb(243,249,152),O=o.rgb(179,255,155),L=o.rgb(255,150,224),U=o.rgb(30,255,0),T=o.rgb(202,202,202),E=new p((o=>{let e=0;for(const s of o)e+=(e>>1)+e+"xi1_8ratvsw9hlbgm02y5zpdcn7uekof463qj".indexOf(s)+1;return[x,N,O,L,U,T][e%6](o)}));for(const o of process.argv.slice(2))if("-"==o[0]){const[e,s]=o.split("=");let t=s;if(t)if("true"==t)t=!0;else if("false"==t)t=!1;else{const o=Number(t);isFinite(o)&&(t=o)}else t=!0;if("-"==o[1])S.set(e.slice(2),t);else for(const o of e.slice(1))S.set(o,t)}else P.push(o);function help(){switch(P[0]){case"config":switch(P[1]){case"get":console.log("hsm config get <key>");break;case"set":console.log("hsm config set <key> <value>");break;case"delete":console.log("hsm config delete <key>");break;default:console.log("hsm config <get, delete, set>")}break;case"push":console.log('hsm push [<dir> [..."<script user>.<script name>"]]');break;case"watch":console.log("hsm watch [dir]");break;case"pull":console.log("hsm pull <script user>.<script name>");break;case"minify":case"golf":console.log(`${i(process.argv[1])} ${P[0]} <target> [output]`);break;default:console.log("hsm <push, watch, pull, config, golf>")}}function version(){console.log("0.13.0")}async function getConfig(){return C||(C=await k($,{encoding:"utf-8"}).then((o=>{let e;try{e=JSON.parse(o)}catch{return console.log("config file was corrupted, resetting"),{}}return e&&"object"==typeof e?e:(console.log("config file was corrupted, resetting"),{})}),(()=>(console.log(`creating config file at ${$}`),{}))))}function exploreObject(o,e,s=!1){for(const i of e){var t;o=s?"object"==typeof o[i]?o[i]:o[i]={}:null===(t=o)||void 0===t?void 0:t[i]}return o}function updateConfig(){if(C){const o=JSON.stringify(C,void 0,"\t");y($,o).catch((async e=>{switch(e.code){case"EISDIR":await w($);break;case"ENOENT":await j(v);break;default:throw e}y($,o)}))}}function onPushLogger({file:e,users:s,srcLength:r,minLength:a,error:l}){s.length&&(l?console.log(`error "${o.bold(l.message)}" in ${o.bold(e)}`):console.log(`pushed ${o.bold(e)} to ${s.map((e=>o.bold(E.get(e)))).join(", ")} | ${o.bold(String(a))} chars from ${o.bold(String(r))} | saved ${o.bold(String(r-a))} (${o.bold(`${Math.round(100*(1-a/r))}%`)}) | ${o.bold(`${t(C.hackmudPath,s[0],"scripts",i(e,n(e)))}.js`)}`))}(async()=>{if(S.get("version")||S.get("v"))version();else if(S.get("help")||S.get("h"))help();else{switch(P[0]){case"push":{const o=await getConfig();if(!o.hackmudPath){console.log("you need to set hackmudPath in config before you can use this command");break}const e=P[1]||".",s=o.hackmudPath,t=P.slice(2);t.length||t.push("*.*");(await m(e,s,{scripts:t,onPush:onPushLogger,minify:!S.get("skip-minify")})).length||console.warn("couldn't find any scripts to push"),updateConfig()}break;case"dev":case"watch":{var e,s,p;const o=await getConfig();if(!o.hackmudPath){console.log("you need to set hackmudPath in config before you can use this command");break}const t=P[1]||".",i=o.hackmudPath,n=(null===(e=S.get("users"))||void 0===e?void 0:e.toString().split(","))||[],r=(null===(s=S.get("scripts"))||void 0===s?void 0:s.toString().split(","))||[],a=null===(p=S.get("gen-types"))||void 0===p?void 0:p.toString();d(t,i,n,r,onPushLogger,{genTypes:a})}break;case"pull":{const o=await getConfig();if(!o.hackmudPath){console.log("you need to set hackmudPath in config before you can use this command");break}const e=P[1];if(!e){help();break}const s=P[2]||".",t=o.hackmudPath;try{await h(s,t,e)}catch{console.log("something went wrong, did you forget to #down the script?")}}break;case"sync-macros":{const{hackmudPath:o}=await getConfig();if(!o){console.log("you need to set hackmudPath in config before you can use this command");break}const{macrosSynced:e,usersSynced:s}=await b(o);console.log(`synced ${e} macros to ${s} users`)}break;case"gen-types":{const o=t(P[1]||".");f(o,P[2]?t(P[2]):t(o,"../player.d.ts"),(await getConfig()).hackmudPath)}break;case"config":switch(P[1]){case"get":P[2]?console.log(exploreObject(await getConfig(),P[2].split("."))):console.log(await getConfig());break;case"delete":if(P[2]){var w;const o=P[2].split("."),e=o.pop();if(!o.length){help();break}const s=await getConfig();null===(w=exploreObject(s,o))||void 0===w||delete w[e],console.log(s)}else console.log("Usage:\nhsm config delete <key>");break;case"set":if(P[2]&&P[3]){const o=P[2].split(".");if(!o.length){help();break}const e=o.pop(),s=await getConfig();if(o.length||"hackmudPath"!=e){let t=s;for(const e of o)"object"==typeof t[e]||(t[e]={}),t=t[e];t[e]=P[3]}else s.hackmudPath=t(P[3]);console.log(s)}else console.log("Usage:\nhsm config set <key> <value>");break;default:P[1]&&console.log("unknown command"),help()}break;case"help":case"h":help();break;case"version":case"v":version();break;case"golf":case"minify":{const e=P[1];if(!e){console.log(`Target required\nUsage: ${i(process.argv[1])} ${P[0]} <target> [output]`);break}const s=n(e);if(!l.includes(s)){console.log(`Unsupported file extension "${o.bold(s)}"\nSupported extensions are "${l.map((e=>o.bold(e))).join('", "')}"`);break}await k(e,{encoding:"utf-8"}).then((async n=>{const l=i(e,s),p=l.endsWith(".src"),m=p?l.slice(0,-4):l;let f="UNKNOWN";"scripts"==i(t(e,".."))&&"hackmud"==i(t(e,"../../.."))&&(f=i(t(e,"../..")));const b=!S.get("skip-minify"),h=Boolean(S.get("mangle-names"));!b&&h&&console.warn("warning: `--mangle-names` has no effect while `--skip-minify` is active");const{script:d,srcLength:k,warnings:w,timeTook:y}=await c(n,{minify:b,scriptUser:f,scriptName:m,filePath:e,mangleNames:h});for(const{message:e,line:s}of w)console.log(`warning "${o.bold(e)}" on line ${o.bold(String(s))}`);let j;j=P[2]?P[2]:t(r(e),p?`${m}.js`:".js"==s?`${l}.min.js`:`${l}.js`);const v=u(d);await g(j,d).catch((async o=>{if(!P[2]||"EISDIR"!=o.code)throw o;j=t(j,`${i(e,s)}.js`),await g(j,d)})).then((()=>console.log(`wrote ${o.bold(v)} chars to ${o.bold(a(".",j))} | saved ${o.bold(k-v)} chars | took ${Math.round(100*y)/100}ms`)),(o=>console.log(o.message)))}),(o=>console.log(o.message)))}break;default:P[0]&&console.log("unknown command"),help()}updateConfig()}})();
|
package/generateTypings.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
import e from"fs";import{extname as
|
1
|
+
import e from"fs";import{extname as n,basename as t,resolve as s,relative as r}from"path";const{readdir:i,writeFile:a}=e.promises;async function generateTypings(e,o,f){const c=new Set;if(f)for(const e of await i(f,{withFileTypes:!0}))e.isFile()&&".key"==n(e.name)&&c.add(t(e.name,".key"));const l=[],m=[],p={},$={};await Promise.all((await i(e,{withFileTypes:!0})).map((async r=>{if(r.isFile())".ts"==n(r.name)?l.push(t(r.name,".ts")):".js"==n(r.name)&&m.push(t(r.name,".js"));else if(r.isDirectory()){const a=[],o=[];p[r.name]=a,$[r.name]=o,c.add(r.name);for(const f of await i(s(e,r.name),{withFileTypes:!0}))f.isFile()&&(".ts"==n(f.name)?a.push(t(f.name,".ts")):".js"==n(f.name)&&o.push(t(f.name,".js")))}}))),e=r(".",e);let y="";for(const n of l)y+=`import $${n}$ from "./${e}/${n}"\n`;y+="\n";for(const n in p){const t=p[n];for(const s of t)y+=`import $${n}$${s}$ from "./${e}/${n}/${s}"\n`}y+="\ntype ArrayRemoveFirst<A> = A extends [ infer FirstItem, ...infer Rest ] ? Rest : never\n\ntype Subscript<T extends (...args: any) => any> =\n\t(...args: ArrayRemoveFirst<Parameters<T>>) => ReturnType<T> | ScriptFailure\n\ntype WildFullsec = Record<string, () => ScriptFailure> & {\n";for(const e of l)y+=`\t${e}: Subscript<typeof $${e}$>\n`;for(const e of m)y+=`\t${e}: (...args: any) => any\n`;y+="}\n\ninterface PlayerFullsec {";let u=!0;for(const e of c){const n=p[e],t=$[e];if(n&&n.length||t&&t.length){if(u=!0,y+=`\n\t${e}: WildFullsec & {\n`,n)for(const t of n)y+=`\t\t${t}: Subscript<typeof $${e}$${t}$>\n`;if(t)for(const e of t)y+=`\t\t${e}: (...args: any) => any\n`;y+="\t}"}else u&&(y+="\n",u=!1),y+=`\t${e}: WildFullsec`;y+="\n"}y+="}\n",await a(o,y)}export{generateTypings as default,generateTypings};
|
package/index.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export{processScript,s as supportedExtensions}from"./processScript/index.js";export{generateTypings}from"./generateTypings.js";export{pull}from"./pull.js";export{push}from"./push.js";export{syncMacros}from"./syncMacros.js";export{
|
1
|
+
export{processScript,s as supportedExtensions}from"./processScript/index.js";export{generateTypings}from"./generateTypings.js";export{pull}from"./pull.js";export{push}from"./push.js";export{syncMacros}from"./syncMacros.js";export{watch}from"./watch.js";import"@babel/generator";import"@babel/parser";import"@babel/plugin-proposal-class-properties";import"@babel/plugin-proposal-class-static-block";import"@babel/plugin-proposal-decorators";import"@babel/plugin-proposal-do-expressions";import"@babel/plugin-proposal-function-bind";import"@babel/plugin-proposal-function-sent";import"@babel/plugin-proposal-json-strings";import"@babel/plugin-proposal-logical-assignment-operators";import"@babel/plugin-proposal-nullish-coalescing-operator";import"@babel/plugin-proposal-numeric-separator";import"@babel/plugin-proposal-object-rest-spread";import"@babel/plugin-proposal-optional-catch-binding";import"@babel/plugin-proposal-optional-chaining";import"@babel/plugin-proposal-partial-application";import"@babel/plugin-proposal-pipeline-operator";import"@babel/plugin-proposal-private-property-in-object";import"@babel/plugin-proposal-record-and-tuple";import"@babel/plugin-proposal-throw-expressions";import"@babel/plugin-transform-exponentiation-operator";import"@babel/plugin-transform-typescript";import"@babel/traverse";import"@babel/types";import"@rollup/plugin-babel";import"@rollup/plugin-commonjs";import"@rollup/plugin-json";import"@rollup/plugin-node-resolve";import"path";import"perf_hooks";import"prettier";import"rollup";import"./processScript/minify.js";import"acorn";import"terser";import"./processScript/shared.js";import"./assert-1b7dada8.js";import"./spliceString-2c6f214f.js";import"./processScript/postprocess.js";import"./processScript/preprocess.js";import"./processScript/transform.js";import"fs";import"chokidar";
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "hackmud-script-manager",
|
3
|
-
"version": "0.13.0
|
3
|
+
"version": "0.13.0",
|
4
4
|
"description": "Script manager for game hackmud, with minification, TypeScript support, and player script type definition generation.",
|
5
5
|
"keywords": [
|
6
6
|
"api",
|
@@ -101,21 +101,21 @@
|
|
101
101
|
"require": "./index.cjs"
|
102
102
|
},
|
103
103
|
"./*": "./*",
|
104
|
-
"./generateTypings": "./generateTypings.js",
|
105
|
-
"./index": "./index.js",
|
106
|
-
"./
|
107
|
-
"./
|
108
|
-
"./
|
109
|
-
"./
|
110
|
-
"./watch": "./watch.js",
|
111
|
-
"./bin/hsm": "./bin/hsm.js",
|
112
|
-
"./processScript/index": "./processScript/index.js",
|
113
|
-
"./processScript": "./processScript/index.js",
|
114
|
-
"./processScript/minify": "./processScript/minify.js",
|
115
|
-
"./processScript/postprocess": "./processScript/postprocess.js",
|
116
|
-
"./processScript/preprocess": "./processScript/preprocess.js",
|
117
|
-
"./processScript/shared": "./processScript/shared.js",
|
118
|
-
"./processScript/transform": "./processScript/transform.js"
|
104
|
+
"./src/generateTypings": "./src/generateTypings.js",
|
105
|
+
"./src/index": "./src/index.js",
|
106
|
+
"./src": "./src/index.js",
|
107
|
+
"./src/pull": "./src/pull.js",
|
108
|
+
"./src/push": "./src/push.js",
|
109
|
+
"./src/syncMacros": "./src/syncMacros.js",
|
110
|
+
"./src/watch": "./src/watch.js",
|
111
|
+
"./src/bin/hsm": "./src/bin/hsm.js",
|
112
|
+
"./src/processScript/index": "./src/processScript/index.js",
|
113
|
+
"./src/processScript": "./src/processScript/index.js",
|
114
|
+
"./src/processScript/minify": "./src/processScript/minify.js",
|
115
|
+
"./src/processScript/postprocess": "./src/processScript/postprocess.js",
|
116
|
+
"./src/processScript/preprocess": "./src/processScript/preprocess.js",
|
117
|
+
"./src/processScript/shared": "./src/processScript/shared.js",
|
118
|
+
"./src/processScript/transform": "./src/processScript/transform.js"
|
119
119
|
},
|
120
120
|
"bin": {
|
121
121
|
"hsm": "./bin/hsm.js"
|
package/processScript/index.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
import e from"@babel/generator";import{parse as o}from"@babel/parser";import r from"@babel/plugin-proposal-class-properties";import t from"@babel/plugin-proposal-class-static-block";import s from"@babel/plugin-proposal-decorators";import p from"@babel/plugin-proposal-do-expressions";import a from"@babel/plugin-proposal-function-bind";import l from"@babel/plugin-proposal-function-sent";import i from"@babel/plugin-proposal-json-strings";import n from"@babel/plugin-proposal-logical-assignment-operators";import m from"@babel/plugin-proposal-nullish-coalescing-operator";import c from"@babel/plugin-proposal-numeric-separator";import f from"@babel/plugin-proposal-object-rest-spread";import u from"@babel/plugin-proposal-optional-catch-binding";import b from"@babel/plugin-proposal-optional-chaining";import d from"@babel/plugin-proposal-partial-application";import g from"@babel/plugin-proposal-pipeline-operator";import h from"@babel/plugin-proposal-private-property-in-object";import w from"@babel/plugin-proposal-record-and-tuple";import y from"@babel/plugin-proposal-throw-expressions";import x from"@babel/plugin-transform-exponentiation-operator";import j from"@babel/plugin-transform-typescript";import S from"@babel/traverse";import k from"@babel/types";import v from"@rollup/plugin-babel";import E from"@rollup/plugin-commonjs";import N from"@rollup/plugin-json";import C from"@rollup/plugin-node-resolve";import{
|
1
|
+
import e from"@babel/generator";import{parse as o}from"@babel/parser";import r from"@babel/plugin-proposal-class-properties";import t from"@babel/plugin-proposal-class-static-block";import s from"@babel/plugin-proposal-decorators";import p from"@babel/plugin-proposal-do-expressions";import a from"@babel/plugin-proposal-function-bind";import l from"@babel/plugin-proposal-function-sent";import i from"@babel/plugin-proposal-json-strings";import n from"@babel/plugin-proposal-logical-assignment-operators";import m from"@babel/plugin-proposal-nullish-coalescing-operator";import c from"@babel/plugin-proposal-numeric-separator";import f from"@babel/plugin-proposal-object-rest-spread";import u from"@babel/plugin-proposal-optional-catch-binding";import b from"@babel/plugin-proposal-optional-chaining";import d from"@babel/plugin-proposal-partial-application";import g from"@babel/plugin-proposal-pipeline-operator";import h from"@babel/plugin-proposal-private-property-in-object";import w from"@babel/plugin-proposal-record-and-tuple";import y from"@babel/plugin-proposal-throw-expressions";import x from"@babel/plugin-transform-exponentiation-operator";import j from"@babel/plugin-transform-typescript";import S from"@babel/traverse";import k from"@babel/types";import v from"@rollup/plugin-babel";import E from"@rollup/plugin-commonjs";import N from"@rollup/plugin-json";import C from"@rollup/plugin-node-resolve";import{resolve as L}from"path";import{performance as _}from"perf_hooks";import I from"prettier";import{rollup as D}from"rollup";import{c as U,minify as $}from"./minify.js";export{minify}from"./minify.js";import{postprocess as M}from"./postprocess.js";export{postprocess}from"./postprocess.js";import{preprocess as W}from"./preprocess.js";export{preprocess}from"./preprocess.js";import{transform as q}from"./transform.js";export{transform as compile}from"./transform.js";import{a as F}from"../assert-1b7dada8.js";import"acorn";import"terser";import"./shared.js";import"../spliceString-2c6f214f.js";const T=[".js",".ts"],{default:H}=v,{format:O}=I,{default:P}=e,{default:K}=S;async function processScript(e,{minify:S=!0,uniqueID:v=Math.floor(Math.random()*2**52).toString(36).padStart(11,"0"),scriptUser:I="UNKNOWN",scriptName:z="UNKNOWN",filePath:B,mangleNames:G=!1}={}){F(/^\w{11}$/.exec(v)),B=B?L(B):"script";const A=_.now(),J=e;let Q,R;const V=/^function\s*\(.+\/\/(?<autocomplete>.+)/.exec(e);if(V)e=`export default ${e}`,({autocomplete:Q}=V.groups);else for(const o of e.split("\n")){const e=/^\s*\/\/(?<commentContent>.+)/.exec(o);if(!e)break;const r=e.groups.commentContent.trim();if(r.startsWith("@autocomplete "))Q=r.slice(14).trimStart();else if(r.startsWith("@seclevel ")){const e=r.slice(10).trimStart().toLowerCase();switch(e){case"fullsec":case"full":case"fs":case"4s":case"f":case"4":R=4;break;case"highsec":case"high":case"hs":case"3s":case"h":case"3":R=3;break;case"midsec":case"mid":case"ms":case"2s":case"m":case"2":R=2;break;case"lowsec":case"low":case"ls":case"1s":case"l":case"1":R=1;break;case"nullsec":case"null":case"ns":case"0s":case"n":case"0":R=0;break;default:throw new Error(`unrecognised seclevel "${e}"`)}}}F(/^\w{11}$/.exec(v));const X=B?L(B):"script";let Y=4;const Z=await D({plugins:[{name:"emit script",buildStart(){this.emitFile({type:"chunk",id:X})},load(o){if(o==X)return e},transform(e){const{code:o,seclevel:r}=W(e,{uniqueID:v});return Y=Math.min(Y,r),o}},H({babelHelpers:"bundled",plugins:[[j.default,{allowDeclareFields:!0,optimizeConstEnums:!0}],[s.default,{decoratorsBeforeExport:!0}],[p.default],[a.default],[l.default],[d.default],[g.default,{proposal:"hack",topicToken:"%"}],[y.default],[w.default,{syntaxType:"hash",importPolyfill:!0}],[r.default],[t.default],[h.default],[n.default],[c.default],[m.default],[b.default],[u.default],[i.default],[f.default],[x.default]],configFile:!1,extensions:T}),E(),C({extensions:T}),N()],treeshake:{moduleSideEffects:!1}}),ee=["NULLSEC","LOWSEC","MIDSEC","HIGHSEC","FULLSEC"];let oe;if(e=(await Z.generate({})).output[0].code,({file:oe,seclevel:Y}=await q(o(e,{sourceType:"module"}),J,{uniqueID:v,scriptUser:I,scriptName:z,seclevel:Y})),null!=R&&Y<R)throw new Error(`detected seclevel ${ee[Y]} is lower than stated seclevel ${ee[R]}`);e=P(oe).code;const re=U(e.replace(/^function\s*\w+\(/,"function("));return S?e=await $(oe,Q,{uniqueID:v,mangleNames:G}):(K(oe,{MemberExpression({node:e}){e.computed||(F("Identifier"==e.property.type),"prototype"==e.property.name?(e.computed=!0,e.property=k.stringLiteral("prototype")):"__proto__"==e.property.name&&(e.computed=!0,e.property=k.stringLiteral("__proto__")))}}),e=O(P(oe).code,{parser:"babel",arrowParens:"avoid",semi:!1,trailingComma:"none"})),{srcLength:re,script:e=M(e,Y,v),warnings:[],timeTook:_.now()-A}}export{processScript as default,processScript,T as s};
|
package/processScript/minify.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
import e from"@babel/generator";import t from"@babel/traverse";import r from"@babel/types";import{
|
1
|
+
import e from"@babel/generator";import t from"@babel/traverse";import r from"@babel/types";import{tokenizer as i,tokTypes as n}from"acorn";import*as a from"terser";import{getReferencePathsToGlobal as s}from"./shared.js";import{a as o}from"../assert-1b7dada8.js";import{s as p}from"../spliceString-2c6f214f.js";function countHackmudCharacters(e){return e.replace(/\/\/.*/g,"").replace(/[ \t\n\r\u00a0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000]/g,"").length}const{default:l}=e,{default:u}=t;async function minify(e,t,{uniqueID:i="00000000000",mangleNames:n=!1}={}){let c;o(/^\w{11}$/.exec(i)),u(e,{Program(e){c=e,e.skip()}});const f=c.get("body.0");for(const e of[...f.node.params].reverse()){if("Identifier"==e.type){if(!f.scope.getBinding(e.name).referenced){f.node.params.pop();continue}}break}for(const e in c.scope.globals){if("arguments"==e||e.startsWith(`$${i}`))continue;const t=s(e,c);if(!(5+e.length+t.length>=e.length*t.length)){for(const n of t)n.replaceWith(r.identifier(`_GLOBAL_${e}_${i}_`));f.node.body.body.unshift(r.variableDeclaration("let",[r.variableDeclarator(r.identifier(`_GLOBAL_${e}_${i}_`),r.identifier(e))]))}}const d=s(`$${i}$GLOBAL`,c);if(d.length>3){for(const e of d)e.replaceWith(r.identifier(`_G_${i}_`));f.node.body.body.unshift(r.variableDeclaration("let",[r.variableDeclarator(r.identifier(`_G_${i}_`),r.identifier(`$${i}$GLOBAL`))]))}const m=[];let y=!1;const _=r.cloneNode(e);u(_,{MemberExpression({node:e}){e.computed||(o("Identifier"==e.property.type),"prototype"==e.property.name?(e.computed=!0,e.property=r.identifier(`_PROTOTYPE_PROPERTY_${i}_`)):"__proto__"==e.property.name&&(e.computed=!0,e.property=r.identifier(`_PROTO_PROPERTY_${i}_`)))}});const $=(await a.minify(l(_).code,{ecma:2015,compress:{passes:1/0,unsafe:!0,unsafe_arrows:!0,unsafe_comps:!0,unsafe_symbols:!0,unsafe_methods:!0,unsafe_proto:!0,unsafe_regexp:!0,unsafe_undefined:!0,sequences:!1},format:{semicolons:!1},keep_classnames:!n,keep_fnames:!n})).code.replace(new RegExp(`_PROTOTYPE_PROPERTY_${i}_`,"g"),'"prototype"').replace(new RegExp(`_PROTO_PROPERTY_${i}_`,"g"),'"__proto__"');let E,b,g=!1;{const t=[];u(e,{FunctionDeclaration(e){e.traverse({Function(e){"CallExpression"!=e.parent.type&&"callee"!=e.parentKey&&e.skip()},Loop(e){e.skip()},ObjectExpression(e){const t={};parseObjectExpression(e.node,t)&&e.replaceWith(r.identifier(`_JSON_VALUE_${m.push(t)-1}_${i}_`))},ArrayExpression(e){const t=[];parseArrayExpression(e.node,t)&&e.replaceWith(r.identifier(`_JSON_VALUE_${m.push(t)-1}_${i}_`))}}),e.traverse({TemplateLiteral(e){const t=e.node;let i=r.stringLiteral(t.quasis[0].value.cooked);for(let e=0;e<t.expressions.length;e++){const n=t.expressions[e],a=t.quasis[e+1];i=r.binaryExpression("+",i,n),a.value.cooked&&(i=r.binaryExpression("+",i,r.stringLiteral(a.value.cooked)))}e.replaceWith(i)},MemberExpression({node:e}){e.computed||(o("Identifier"==e.property.type),e.property.name.length<3||(e.computed=!0,e.property=r.stringLiteral(e.property.name)))},UnaryExpression(e){if("void"==e.node.operator)"NumericLiteral"!=e.node.argument.type||e.node.argument.value||(e.replaceWith(r.identifier(`_UNDEFINED_${i}_`)),y=!0);else if("-"==e.node.operator&&"NumericLiteral"==e.node.argument.type){const n=-e.node.argument.value;t.push((async()=>{if((await minifyNumber(n)).length<=3)return;"key"==e.parentKey&&"ObjectProperty"==e.parent.type&&(e.parent.computed=!0);let t=m.indexOf(n);-1==t&&(t+=m.push(n)),e.replaceWith(r.identifier(`_JSON_VALUE_${t}_${i}_`))})()),e.skip()}},NullLiteral(e){let t=m.indexOf(null);-1==t&&(t+=m.push(null)),e.replaceWith(r.identifier(`_JSON_VALUE_${t}_${i}_`))},BooleanLiteral(e){let t=m.indexOf(e.node.value);-1==t&&(t+=m.push(e.node.value)),e.replaceWith(r.identifier(`_JSON_VALUE_${t}_${i}_`))},NumericLiteral(e){t.push((async()=>{if((await minifyNumber(e.node.value)).length<=3)return;"key"==e.parentKey&&"ObjectProperty"==e.parent.type&&(e.parent.computed=!0);let t=m.indexOf(e.node.value);-1==t&&(t+=m.push(e.node.value)),e.replaceWith(r.identifier(`_JSON_VALUE_${t}_${i}_`))})())},StringLiteral(e){if(e.node.value.includes("\0")||e.toString().length<4)return;"key"==e.parentKey&&"ObjectProperty"==e.parent.type&&(e.parent.computed=!0);let t=m.indexOf(e.node.value);-1==t&&(t+=m.push(e.node.value)),e.replaceWith(r.identifier(`_JSON_VALUE_${t}_${i}_`))},ObjectProperty({node:e}){if(e.computed||"Identifier"!=e.key.type||e.key.name.length<4)return;let t=m.indexOf(e.key.name);-1==t&&(t+=m.push(e.key.name)),e.computed=!0,e.key=r.identifier(`_JSON_VALUE_${t}_${i}_`)}}),e.skip()}}),await Promise.all(t);const n=e.program.body[0];if(o("FunctionDeclaration"==n.type),m.length)if(g=!0,1==m.length)if("string"!=typeof m[0]||m[0].includes("\n")||m[0].includes("\t")){const e=r.variableDeclaration("let",[r.variableDeclarator(r.identifier(`_JSON_VALUE_0_${i}_`),r.callExpression(r.memberExpression(r.identifier("JSON"),r.identifier("parse")),[r.memberExpression(r.taggedTemplateExpression(r.memberExpression(r.callExpression(r.identifier(`$${i}$SUBSCRIPT$scripts$quine`),[]),r.identifier("split")),r.templateLiteral([r.templateElement({raw:"\t",cooked:"\t"},!0)],[])),r.identifier(`$${i}$SPLIT_INDEX`),!0)]))]);y&&e.declarations.push(r.variableDeclarator(r.identifier(`_UNDEFINED_${i}_`))),n.body.body.unshift(e),E=JSON.stringify(m[0])}else{const e=r.variableDeclaration("let",[r.variableDeclarator(r.identifier(`_JSON_VALUE_0_${i}_`),r.memberExpression(r.taggedTemplateExpression(r.memberExpression(r.callExpression(r.identifier(`$${i}$SUBSCRIPT$scripts$quine`),[]),r.identifier("split")),r.templateLiteral([r.templateElement({raw:"\t",cooked:"\t"},!0)],[])),r.identifier(`$${i}$SPLIT_INDEX`),!0))]);y&&e.declarations.push(r.variableDeclarator(r.identifier(`_UNDEFINED_${i}_`))),n.body.body.unshift(e),E=m[0]}else{const e=r.variableDeclaration("let",[r.variableDeclarator(r.arrayPattern(m.map(((e,t)=>r.identifier(`_JSON_VALUE_${t}_${i}_`)))),r.callExpression(r.memberExpression(r.identifier("JSON"),r.identifier("parse")),[r.memberExpression(r.taggedTemplateExpression(r.memberExpression(r.callExpression(r.identifier(`$${i}$SUBSCRIPT$scripts$quine`),[]),r.identifier("split")),r.templateLiteral([r.templateElement({raw:"\t",cooked:"\t"},!0)],[])),r.identifier(`$${i}$SPLIT_INDEX`),!0)]))]);y&&e.declarations.push(r.variableDeclarator(r.identifier(`_UNDEFINED_${i}_`))),n.body.body.unshift(e),E=JSON.stringify(m)}else y&&n.body.body.unshift(r.variableDeclaration("let",[r.variableDeclarator(r.identifier(`_UNDEFINED_${i}_`))]));b=l(e).code}return b=(await a.minify(b,{ecma:2015,compress:{passes:1/0,unsafe:!0,unsafe_arrows:!0,unsafe_comps:!0,unsafe_symbols:!0,unsafe_methods:!0,unsafe_proto:!0,unsafe_regexp:!0,unsafe_undefined:!0,sequences:!1},format:{semicolons:!1},keep_classnames:!n,keep_fnames:!n})).code||"",null!=E&&(b=p(b,`${t?`//${t}\n`:""}\n//\t${E}\t\n`,getFunctionBodyStart(b)+1),b=b.replace(`$${i}$SPLIT_INDEX`,await minifyNumber(b.split("\t").findIndex((e=>e==E))))),countHackmudCharacters($)<=countHackmudCharacters(b)+Number(g)&&(b=$,t&&(b=p(b,`//${t}\n`,getFunctionBodyStart(b)+1))),b}function parseObjectExpression(e,t){if(!e.properties.length)return!1;for(const r of e.properties){if("ObjectProperty"!=r.type||r.computed)return!1;if(o("Identifier"==r.key.type||"NumericLiteral"==r.key.type||"StringLiteral"==r.key.type),"ArrayExpression"==r.value.type){const e=[];if(!parseArrayExpression(r.value,e))return!1;t["Identifier"==r.key.type?r.key.name:r.key.value]=e}else if("ObjectExpression"==r.value.type){const e={};if(!parseObjectExpression(r.value,e))return!1;t["Identifier"==r.key.type?r.key.name:r.key.value]=e}else if("NullLiteral"==r.value.type)t["Identifier"==r.key.type?r.key.name:r.key.value]=null;else if("BooleanLiteral"==r.value.type||"NumericLiteral"==r.value.type||"StringLiteral"==r.value.type)t["Identifier"==r.key.type?r.key.name:r.key.value]=r.value.value;else{if("TemplateLiteral"!=r.value.type||r.value.expressions.length)return!1;t["Identifier"==r.key.type?r.key.name:r.key.value]=r.value.quasis[0].value.cooked}}return!0}function parseArrayExpression(e,t){if(!e.elements.length)return!1;for(const r of e.elements){if(!r)return!1;if("ArrayExpression"==r.type){const e=[];if(!parseArrayExpression(r,e))return!1;e.push(e)}else if("ObjectExpression"==r.type){const e={};if(!parseObjectExpression(r,e))return!1;t.push(e)}else if("NullLiteral"==r.type)t.push(null);else if("BooleanLiteral"==r.type||"NumericLiteral"==r.type||"StringLiteral"==r.type)t.push(r.value);else{if("TemplateLiteral"!=r.type||r.expressions.length)return!1;t.push(r.quasis[0].value.cooked)}}return!0}async function minifyNumber(e){return/\$\((?<number>.+)\)/.exec((await a.minify(`$(${e})`,{ecma:2015})).code).groups.number}function getFunctionBodyStart(e){const t=i(e,{ecmaVersion:2015});t.getToken(),t.getToken(),t.getToken();let r=1;for(;r;){const e=t.getToken();e.type==n.parenL?r++:e.type==n.parenR&&r--}return t.getToken().start}export{countHackmudCharacters as c,minify as default,minify};
|
@@ -1 +1 @@
|
|
1
|
-
import e from"@babel/traverse";import t from"@babel/types";import{a as i}from"../assert-1b7dada8.js";import{getReferencePathsToGlobal as r}from"./shared.js";function clearObject(e,t=Object.prototype){for(const t of Object.getOwnPropertyNames(e))delete e[t];for(const t of Object.getOwnPropertySymbols(e))delete e[t];return Object.setPrototypeOf(e,t),e}const{default:n}=e,o=["Map","Set","Date","JSON","Math","Array","Error","isNaN","Number","Object","RegExp","String","Symbol","BigInt"];function transform(e,a,{uniqueID:s="00000000000",scriptUser:p="UNKNOWN",scriptName:l="UNKNOWN",seclevel:c=4}={}){const d=`_SCRIPT_${s}_`,f=new Map,b=new Map;let y;if(n(e,{Program(e){y=e,e.skip()}}),y.scope.hasGlobal("_START"))for(const e of r("_START",y))e.replaceWith(t.identifier("_ST"));if(y.scope.hasGlobal("_TIMEOUT"))for(const e of r("_START",y))e.replaceWith(t.identifier("_TO"));if(y.scope.hasGlobal("_SOURCE"))for(const e of r("_SOURCE",y))e.replaceWith(t.stringLiteral(a));if(y.scope.hasGlobal("_BUILD_DATE"))for(const e of r("_BUILD_DATE",y))e.replaceWith(t.numericLiteral(Date.now()));if(y.scope.hasGlobal("_SCRIPT_USER"))for(const e of r("_SCRIPT_USER",y))1==p?e.replaceWith(t.stringLiteral(`$${s}$SCRIPT_USER`)):e.replaceWith(t.stringLiteral(p));if(y.scope.hasGlobal("_SCRIPT_NAME"))for(const e of r("_SCRIPT_NAME",y))1==l?e.replaceWith(t.stringLiteral(`$${s}$SCRIPT_NAME`)):e.replaceWith(t.stringLiteral(l));if(y.scope.hasGlobal("_FULL_SCRIPT_NAME"))for(const e of r("_FULL_SCRIPT_NAME",y))1==p||1==l?e.replaceWith(t.stringLiteral(`$${s}$FULL_SCRIPT_NAME`)):e.replaceWith(t.stringLiteral(`${p}.${l}`));let h=!1;if(y.scope.hasGlobal("Function")){const e=r("Function",y);if(1==e.length){const t=e[0];i("MemberExpression"==t.parent.type,"`Function` isn't available in hackmud, only `Function.prototype` is accessible"),i("Identifier"==t.parent.property.type,"`Function` isn't available in hackmud, only `Function.prototype` is accessible"),i("prototype"==t.parent.property.name,"`Function` isn't available in hackmud, only `Function.prototype` is accessible"),t.parentPath.replaceWith(createGetFunctionPrototypeNode())}else{for(const r of e)i("MemberExpression"==r.parent.type,"`Function` isn't available in hackmud, only `Function.prototype` is accessible"),i("Identifier"==r.parent.property.type,"`Function` isn't available in hackmud, only `Function.prototype` is accessible"),i("prototype"==r.parent.property.name,"`Function` isn't available in hackmud, only `Function.prototype` is accessible"),h=!0,r.parentPath.replaceWith(t.identifier(`$${s}$FUNCTION_DOT_PROTOTYPE`));h=!0}}let $=4;for(const e of["$fs","$4s","$s"])if(y.scope.hasGlobal(e))for(const n of r(e,y)){var m;i("MemberExpression"==n.parent.type),i("Identifier"==n.parent.property.type),i("MemberExpression"==(null===(m=n.parentPath.parentPath)||void 0===m?void 0:m.node.type)),i("Identifier"==n.parentPath.parentPath.node.property.type),n.parentPath.parentPath.replaceWith(t.identifier(`$${s}$SUBSCRIPT$${n.parent.property.name}$${n.parentPath.parentPath.node.property.name}`))}for(const e of["$hs","$3s"])if(y.scope.hasGlobal(e)){$=3;for(const n of r(e,y)){var E;i("MemberExpression"==n.parent.type),i("Identifier"==n.parent.property.type),i("MemberExpression"==(null===(E=n.parentPath.parentPath)||void 0===E?void 0:E.node.type)),i("Identifier"==n.parentPath.parentPath.node.property.type),n.parentPath.parentPath.replaceWith(t.identifier(`$${s}$SUBSCRIPT$${n.parent.property.name}$${n.parentPath.parentPath.node.property.name}`))}}for(const e of["$ms","$2s"])if(y.scope.hasGlobal(e)){$=2;for(const n of r(e,y)){var u;i("MemberExpression"==n.parent.type),i("Identifier"==n.parent.property.type),i("MemberExpression"==(null===(u=n.parentPath.parentPath)||void 0===u?void 0:u.node.type)),i("Identifier"==n.parentPath.parentPath.node.property.type),n.parentPath.parentPath.replaceWith(t.identifier(`$${s}$SUBSCRIPT$${n.parent.property.name}$${n.parentPath.parentPath.node.property.name}`))}}for(const e of["$ls","$1s"])if(y.scope.hasGlobal(e)){$=1;for(const n of r(e,y)){var P;i("MemberExpression"==n.parent.type),i("Identifier"==n.parent.property.type),i("MemberExpression"==(null===(P=n.parentPath.parentPath)||void 0===P?void 0:P.node.type)),i("Identifier"==n.parentPath.parentPath.node.property.type),n.parentPath.parentPath.replaceWith(t.identifier(`$${s}$SUBSCRIPT$${n.parent.property.name}$${n.parentPath.parentPath.node.property.name}`))}}for(const e of["$ns","$0s"])if(y.scope.hasGlobal(e)){$=0;for(const n of r(e,y)){var _;i("MemberExpression"==n.parent.type),i("Identifier"==n.parent.property.type),i("MemberExpression"==(null===(_=n.parentPath.parentPath)||void 0===_?void 0:_.node.type)),i("Identifier"==n.parentPath.parentPath.node.property.type),n.parentPath.parentPath.replaceWith(t.identifier(`$${s}$SUBSCRIPT$${n.parent.property.name}$${n.parentPath.parentPath.node.property.name}`))}}if(c=Math.min(c,$),y.scope.hasGlobal("$db"))for(const e of r("$db",y))i("MemberExpression"==e.parentPath.node.type),i("Identifier"==e.parentPath.node.property.type),e.parentPath.replaceWith(t.identifier(`$${s}$DB$${e.parentPath.node.property.name}`));if(y.scope.hasGlobal("$D"))for(const e of r("$D",y))e.replaceWith(t.identifier(`$${s}$DEBUG`));if(y.scope.hasGlobal("$FMCL"))for(const e of r("$FMCL",y))e.replaceWith(t.identifier(`$${s}$FMCL`));if(y.scope.hasGlobal("$G"))for(const e of r("$G",y))e.replaceWith(t.identifier(`$${s}$GLOBAL`));if(y.scope.hasGlobal("_SECLEVEL"))for(const e of r("_SECLEVEL",y))e.replaceWith(t.numericLiteral(c));let T=!1,O=!1;if(y.scope.hasGlobal("Object"))for(const e of r("Object",y))"MemberExpression"!=e.parent.type||e.parent.computed||(i("Identifier"==e.parent.property.type),"getPrototypeOf"==e.parent.property.name?(e.parentPath.replaceWith(t.identifier(`$${s}$GET_PROTOTYPE_OF`)),T=!0):"setPrototypeOf"==e.parent.property.name&&(e.parentPath.replaceWith(t.identifier(`$${s}$SET_PROTOTYPE_OF`)),O=!0));const x=y.node.body[y.node.body.length-1];let S;if("ExportNamedDeclaration"==x.type){y.node.body.pop();for(const e of x.specifiers){i("ExportSpecifier"==e.type,`${e.type} is currently unsupported`);const t="Identifier"==e.exported.type?e.exported.name:e.exported.value;"default"==t?S=e.local.name:f.set(e.local.name,t)}}const v=t.blockStatement([]);let D;for(const e of y.node.body)if("VariableDeclaration"==e.type)for(const i of e.declarations)if("Identifier"!=i.id.type||i.id.name!=S||!i.init||"FunctionExpression"!=i.init.type&&"ArrowFunctionExpression"!=i.init.type||i.init.async||i.init.generator){for(const r in t.getBindingIdentifiers(i.id))r==S&&(D=t.functionDeclaration(t.identifier(d),[t.identifier("context"),t.identifier("args")],t.blockStatement([t.returnStatement(t.callExpression(t.identifier(S),[]))]))),"const"!=e.kind&&f.has(r)&&(b.set(r,f.get(r)),f.delete(r)),v.body.push(t.variableDeclaration("let",[t.variableDeclarator(t.identifier(r))]));i.init&&v.body.push(t.expressionStatement(t.assignmentExpression("=",i.id,i.init)))}else D=t.functionDeclaration(t.identifier(d),i.init.params,"BlockStatement"==i.init.body.type?i.init.body:t.blockStatement([t.returnStatement(i.init.body)]));else"FunctionDeclaration"==e.type?e.id.name==S?D=e:v.body.push(t.variableDeclaration("let",[t.variableDeclarator(e.id,t.functionExpression(null,e.params,e.body,e.generator,e.async))])):v.body.push(e);if(D||(D=t.functionDeclaration(t.identifier(d),[t.identifier("context"),t.identifier("args")],t.blockStatement([]))),y.node.body=[D],v.body.length){(f.size||b.size)&&D.body.body.push(t.returnStatement(t.objectExpression([...[...f].map((([e,i])=>t.objectProperty(t.identifier(i),t.identifier(e)))),...[...b].map((([e,i])=>t.objectMethod("get",t.identifier(i),[],t.blockStatement([t.returnStatement(t.identifier(e))]))))]))),y.scope.crawl();const e=new Set;let n=0;for(const[r,o]of[...v.body.entries()].reverse())if("VariableDeclaration"==o.type){i(1==o.declarations.length);const a=o.declarations[0];if(i("Identifier"==a.id.type,`declarator.id.type was "${a.id.type}"`),y.scope.crawl(),y.scope.hasGlobal(a.id.name)){v.body.splice(r,1);const[p]=y.unshiftContainer("body",v),[l]=y.unshiftContainer("body",o);if(y.scope.crawl(),!a.init||"FunctionExpression"!=a.init.type&&"ArrowFunctionExpression"!=a.init.type||Object.keys(y.scope.globals).some((t=>e.has(t)))){const e=y.scope.getBinding(a.id.name);i(e);for(const r of e.referencePaths)i("Identifier"==r.node.type),r.replaceWith(t.memberExpression(t.identifier(`$${s}$GLOBAL`),t.identifier(r.node.name)));for(const i of e.constantViolations)if("AssignmentExpression"==i.node.type)for(const[e,r]of Object.entries(t.getBindingIdentifiers(i.node)))e==a.id.name&&Object.assign(clearObject(r),t.memberExpression(t.identifier(`$${s}$GLOBAL`),t.identifier(e)));p.remove(),l.remove(),a.init&&v.body.splice(r,0,t.expressionStatement(t.assignmentExpression("=",t.memberExpression(t.identifier(`$${s}$GLOBAL`),t.identifier(a.id.name)),a.init)))}else p.remove(),l.remove(),D.body.body.unshift(o),n++}else e.add(a.id.name)}else if("ClassDeclaration"==o.type&&(y.scope.crawl(),y.scope.hasGlobal(o.id.name))){v.body.splice(r,1);const[e]=y.unshiftContainer("body",v),[n]=y.unshiftContainer("body",o);y.scope.crawl();const a=y.scope.getBinding(o.id.name);i(a);for(const e of a.referencePaths)i("Identifier"==e.node.type),e.replaceWith(t.memberExpression(t.identifier(`$${s}$GLOBAL`),t.identifier(e.node.name)));e.remove(),n.remove(),v.body.splice(r,0,t.expressionStatement(t.assignmentExpression("=",t.memberExpression(t.identifier(`$${s}$GLOBAL`),t.identifier(o.id.name)),t.classExpression(null,o.superClass,o.body,o.decorators))))}if(y.scope.hasGlobal("_EXPORTS"))for(const e of r("_EXPORTS",y))e.replaceWith(t.arrayExpression([...f.keys(),...b.keys()].map((e=>t.stringLiteral(e)))));v.body.length&&D.body.body.splice(n,0,t.ifStatement(t.unaryExpression("!",t.identifier(`$${s}$FMCL`)),v))}return h&&D.body.body.unshift(t.variableDeclaration("let",[t.variableDeclarator(t.identifier(`$${s}$FUNCTION_DOT_PROTOTYPE`),createGetFunctionPrototypeNode())])),O&&D.body.body.unshift(t.variableDeclaration("let",[t.variableDeclarator(t.identifier(`$${s}$SET_PROTOTYPE_OF`),t.callExpression(t.memberExpression(t.memberExpression(t.identifier("Object"),t.identifier("call")),t.identifier("bind")),[t.identifier(`$${s}$DUNDER_PROTO_SETTER`)]))])),T&&D.body.body.unshift(t.variableDeclaration("let",[t.variableDeclarator(t.identifier(`$${s}$GET_PROTOTYPE_OF`),t.callExpression(t.memberExpression(t.memberExpression(t.identifier("Object"),t.identifier("call")),t.identifier("bind")),[t.identifier(`$${s}$DUNDER_PROTO_GETTER`)]))])),(T||O)&&D.body.body.unshift(t.variableDeclaration("let",[t.variableDeclarator(t.objectPattern(T?O?[t.objectProperty(t.identifier("get"),t.identifier(`$${s}$DUNDER_PROTO_GETTER`)),t.objectProperty(t.identifier("set"),t.identifier(`$${s}$DUNDER_PROTO_SETTER`))]:[t.objectProperty(t.identifier("get"),t.identifier(`$${s}$DUNDER_PROTO_GETTER`))]:[t.objectProperty(t.identifier("set"),t.identifier(`$${s}$DUNDER_PROTO_SETTER`))]),t.callExpression(t.memberExpression(t.identifier("Object"),t.identifier("getOwnPropertyDescriptor")),[t.memberExpression(t.identifier("Object"),t.identifier("prototype")),t.stringLiteral("__proto__")]))])),n(e,{BlockStatement({node:e}){for(const[i,r]of e.body.entries())"FunctionDeclaration"!=r.type||r.generator||(e.body.splice(i,1),e.body.unshift(t.variableDeclaration("let",[t.variableDeclarator(r.id,t.arrowFunctionExpression(r.params,r.body,r.async))])))},ClassBody({node:e,scope:r,parent:o}){i(t.isClass(o));let a=!1;for(const i of e.body){if("ClassMethod"!=i.type)continue;let e=!1;if(n(i.body,{ThisExpression(i){e=!0,a=!0,i.replaceWith(t.identifier(`_THIS_${s}_`))},Function(e){e.skip()}},r),e)if("constructor"!=i.kind)i.body.body.unshift(t.variableDeclaration("let",[t.variableDeclarator(t.identifier(`_THIS_${s}_`),t.callExpression(t.memberExpression(t.super(),t.identifier("valueOf")),[]))]));else{const e=[];if(n(i.body,{CallExpression(t){"Super"==t.node.callee.type&&e.push(t)}},r),e.length)if(1==e.length&&"ExpressionStatement"==e[0].parent.type&&e[0].parentPath.parentPath.parent==i)e[0].parentPath.replaceWith(t.variableDeclaration("let",[t.variableDeclarator(t.identifier(`_THIS_${s}_`),e[0].node)]));else{for(const i of e)i.replaceWith(t.assignmentExpression("=",t.identifier(`_THIS_${s}_`),i.node));i.body.body.unshift(t.variableDeclaration("let",[t.variableDeclarator(t.identifier(`_THIS_${s}_`))]))}else i.body.body.unshift(t.variableDeclaration("let",[t.variableDeclarator(t.identifier(`_THIS_${s}_`),t.callExpression(t.super(),[]))]))}}!o.superClass&&a&&(o.superClass=t.identifier("Object"))},VariableDeclaration({node:e}){"const"==e.kind&&(e.kind="let")},ThisExpression(e){e.replaceWith(t.identifier("undefined"))},BigIntLiteral(e){const i=Number(e.node.value);BigInt(i)==BigInt(e.node.value)?e.replaceWith(t.callExpression(t.identifier("BigInt"),[t.numericLiteral(i)])):e.replaceWith(t.callExpression(t.identifier("BigInt"),[t.stringLiteral(e.node.value)]))}}),{file:e,seclevel:c};function createGetFunctionPrototypeNode(){for(const e of o)if(!y.scope.hasOwnBinding(e))return t.memberExpression(t.memberExpression(t.identifier(e),t.identifier("constructor")),t.identifier("prototype"));return t.memberExpression(t.memberExpression(t.arrowFunctionExpression([t.identifier("_")],t.identifier("_")),t.identifier("constructor")),t.identifier("prototype"))}}export{transform as default,transform};
|
1
|
+
import e from"@babel/traverse";import t from"@babel/types";import{getReferencePathsToGlobal as i}from"./shared.js";import{a as r}from"../assert-1b7dada8.js";function clearObject(e,t=Object.prototype){for(const t of Object.getOwnPropertyNames(e))delete e[t];for(const t of Object.getOwnPropertySymbols(e))delete e[t];return Object.setPrototypeOf(e,t),e}const{default:n}=e,o=["Map","Set","Date","JSON","Math","Array","Error","isNaN","Number","Object","RegExp","String","Symbol","BigInt"];function transform(e,a,{uniqueID:s="00000000000",scriptUser:p="UNKNOWN",scriptName:l="UNKNOWN",seclevel:c=4}={}){const d=`_SCRIPT_${s}_`,f=new Map,b=new Map;let y;if(n(e,{Program(e){y=e,e.skip()}}),y.scope.hasGlobal("_START"))for(const e of i("_START",y))e.replaceWith(t.identifier("_ST"));if(y.scope.hasGlobal("_TIMEOUT"))for(const e of i("_START",y))e.replaceWith(t.identifier("_TO"));if(y.scope.hasGlobal("_SOURCE"))for(const e of i("_SOURCE",y))e.replaceWith(t.stringLiteral(a));if(y.scope.hasGlobal("_BUILD_DATE"))for(const e of i("_BUILD_DATE",y))e.replaceWith(t.numericLiteral(Date.now()));if(y.scope.hasGlobal("_SCRIPT_USER"))for(const e of i("_SCRIPT_USER",y))1==p?e.replaceWith(t.stringLiteral(`$${s}$SCRIPT_USER`)):e.replaceWith(t.stringLiteral(p));if(y.scope.hasGlobal("_SCRIPT_NAME"))for(const e of i("_SCRIPT_NAME",y))1==l?e.replaceWith(t.stringLiteral(`$${s}$SCRIPT_NAME`)):e.replaceWith(t.stringLiteral(l));if(y.scope.hasGlobal("_FULL_SCRIPT_NAME"))for(const e of i("_FULL_SCRIPT_NAME",y))1==p||1==l?e.replaceWith(t.stringLiteral(`$${s}$FULL_SCRIPT_NAME`)):e.replaceWith(t.stringLiteral(`${p}.${l}`));let h=!1;if(y.scope.hasGlobal("Function")){const e=i("Function",y);if(1==e.length){const t=e[0];r("MemberExpression"==t.parent.type,"`Function` isn't available in hackmud, only `Function.prototype` is accessible"),r("Identifier"==t.parent.property.type,"`Function` isn't available in hackmud, only `Function.prototype` is accessible"),r("prototype"==t.parent.property.name,"`Function` isn't available in hackmud, only `Function.prototype` is accessible"),t.parentPath.replaceWith(createGetFunctionPrototypeNode())}else{for(const i of e)r("MemberExpression"==i.parent.type,"`Function` isn't available in hackmud, only `Function.prototype` is accessible"),r("Identifier"==i.parent.property.type,"`Function` isn't available in hackmud, only `Function.prototype` is accessible"),r("prototype"==i.parent.property.name,"`Function` isn't available in hackmud, only `Function.prototype` is accessible"),h=!0,i.parentPath.replaceWith(t.identifier(`$${s}$FUNCTION_DOT_PROTOTYPE`));h=!0}}let $=4;for(const e of["$fs","$4s","$s"])if(y.scope.hasGlobal(e))for(const n of i(e,y)){var m;r("MemberExpression"==n.parent.type),r("Identifier"==n.parent.property.type),r("MemberExpression"==(null===(m=n.parentPath.parentPath)||void 0===m?void 0:m.node.type)),r("Identifier"==n.parentPath.parentPath.node.property.type),n.parentPath.parentPath.replaceWith(t.identifier(`$${s}$SUBSCRIPT$${n.parent.property.name}$${n.parentPath.parentPath.node.property.name}`))}for(const e of["$hs","$3s"])if(y.scope.hasGlobal(e)){$=3;for(const n of i(e,y)){var E;r("MemberExpression"==n.parent.type),r("Identifier"==n.parent.property.type),r("MemberExpression"==(null===(E=n.parentPath.parentPath)||void 0===E?void 0:E.node.type)),r("Identifier"==n.parentPath.parentPath.node.property.type),n.parentPath.parentPath.replaceWith(t.identifier(`$${s}$SUBSCRIPT$${n.parent.property.name}$${n.parentPath.parentPath.node.property.name}`))}}for(const e of["$ms","$2s"])if(y.scope.hasGlobal(e)){$=2;for(const n of i(e,y)){var P;r("MemberExpression"==n.parent.type),r("Identifier"==n.parent.property.type),r("MemberExpression"==(null===(P=n.parentPath.parentPath)||void 0===P?void 0:P.node.type)),r("Identifier"==n.parentPath.parentPath.node.property.type),n.parentPath.parentPath.replaceWith(t.identifier(`$${s}$SUBSCRIPT$${n.parent.property.name}$${n.parentPath.parentPath.node.property.name}`))}}for(const e of["$ls","$1s"])if(y.scope.hasGlobal(e)){$=1;for(const n of i(e,y)){var u;r("MemberExpression"==n.parent.type),r("Identifier"==n.parent.property.type),r("MemberExpression"==(null===(u=n.parentPath.parentPath)||void 0===u?void 0:u.node.type)),r("Identifier"==n.parentPath.parentPath.node.property.type),n.parentPath.parentPath.replaceWith(t.identifier(`$${s}$SUBSCRIPT$${n.parent.property.name}$${n.parentPath.parentPath.node.property.name}`))}}for(const e of["$ns","$0s"])if(y.scope.hasGlobal(e)){$=0;for(const n of i(e,y)){var _;r("MemberExpression"==n.parent.type),r("Identifier"==n.parent.property.type),r("MemberExpression"==(null===(_=n.parentPath.parentPath)||void 0===_?void 0:_.node.type)),r("Identifier"==n.parentPath.parentPath.node.property.type),n.parentPath.parentPath.replaceWith(t.identifier(`$${s}$SUBSCRIPT$${n.parent.property.name}$${n.parentPath.parentPath.node.property.name}`))}}if(c=Math.min(c,$),y.scope.hasGlobal("$db"))for(const e of i("$db",y))r("MemberExpression"==e.parentPath.node.type),r("Identifier"==e.parentPath.node.property.type),e.parentPath.replaceWith(t.identifier(`$${s}$DB$${e.parentPath.node.property.name}`));if(y.scope.hasGlobal("$D"))for(const e of i("$D",y))e.replaceWith(t.identifier(`$${s}$DEBUG`));if(y.scope.hasGlobal("$FMCL"))for(const e of i("$FMCL",y))e.replaceWith(t.identifier(`$${s}$FMCL`));if(y.scope.hasGlobal("$G"))for(const e of i("$G",y))e.replaceWith(t.identifier(`$${s}$GLOBAL`));if(y.scope.hasGlobal("_SECLEVEL"))for(const e of i("_SECLEVEL",y))e.replaceWith(t.numericLiteral(c));let T=!1,O=!1;if(y.scope.hasGlobal("Object"))for(const e of i("Object",y))"MemberExpression"!=e.parent.type||e.parent.computed||(r("Identifier"==e.parent.property.type),"getPrototypeOf"==e.parent.property.name?(e.parentPath.replaceWith(t.identifier(`$${s}$GET_PROTOTYPE_OF`)),T=!0):"setPrototypeOf"==e.parent.property.name&&(e.parentPath.replaceWith(t.identifier(`$${s}$SET_PROTOTYPE_OF`)),O=!0));const x=y.node.body[y.node.body.length-1];let S;if("ExportNamedDeclaration"==x.type){y.node.body.pop();for(const e of x.specifiers){r("ExportSpecifier"==e.type,`${e.type} is currently unsupported`);const t="Identifier"==e.exported.type?e.exported.name:e.exported.value;"default"==t?S=e.local.name:f.set(e.local.name,t)}}const v=t.blockStatement([]);let D;for(const e of y.node.body)if("VariableDeclaration"==e.type)for(const i of e.declarations)if("Identifier"!=i.id.type||i.id.name!=S||!i.init||"FunctionExpression"!=i.init.type&&"ArrowFunctionExpression"!=i.init.type||i.init.async||i.init.generator){for(const r in t.getBindingIdentifiers(i.id))r==S&&(D=t.functionDeclaration(t.identifier(d),[t.identifier("context"),t.identifier("args")],t.blockStatement([t.returnStatement(t.callExpression(t.identifier(S),[]))]))),"const"!=e.kind&&f.has(r)&&(b.set(r,f.get(r)),f.delete(r)),v.body.push(t.variableDeclaration("let",[t.variableDeclarator(t.identifier(r))]));i.init&&v.body.push(t.expressionStatement(t.assignmentExpression("=",i.id,i.init)))}else D=t.functionDeclaration(t.identifier(d),i.init.params,"BlockStatement"==i.init.body.type?i.init.body:t.blockStatement([t.returnStatement(i.init.body)]));else"FunctionDeclaration"==e.type?e.id.name==S?D=e:v.body.push(t.variableDeclaration("let",[t.variableDeclarator(e.id,t.functionExpression(void 0,e.params,e.body,e.generator,e.async))])):v.body.push(e);if(D||(D=t.functionDeclaration(t.identifier(d),[t.identifier("context"),t.identifier("args")],t.blockStatement([]))),y.node.body=[D],v.body.length){(f.size||b.size)&&D.body.body.push(t.returnStatement(t.objectExpression([...[...f].map((([e,i])=>t.objectProperty(t.identifier(i),t.identifier(e)))),...[...b].map((([e,i])=>t.objectMethod("get",t.identifier(i),[],t.blockStatement([t.returnStatement(t.identifier(e))]))))]))),y.scope.crawl();const e=new Set;let n=0;for(const[i,o]of[...v.body.entries()].reverse())if("VariableDeclaration"==o.type){r(1==o.declarations.length);const a=o.declarations[0];if(r("Identifier"==a.id.type,`declarator.id.type was "${a.id.type}"`),y.scope.crawl(),y.scope.hasGlobal(a.id.name)){v.body.splice(i,1);const[p]=y.unshiftContainer("body",v),[l]=y.unshiftContainer("body",o);if(y.scope.crawl(),!a.init||"FunctionExpression"!=a.init.type&&"ArrowFunctionExpression"!=a.init.type||Object.keys(y.scope.globals).some((t=>e.has(t)))){const e=y.scope.getBinding(a.id.name);r(e);for(const i of e.referencePaths)r("Identifier"==i.node.type),i.replaceWith(t.memberExpression(t.identifier(`$${s}$GLOBAL`),t.identifier(i.node.name)));for(const i of e.constantViolations)if("AssignmentExpression"==i.node.type)for(const[e,r]of Object.entries(t.getBindingIdentifiers(i.node)))e==a.id.name&&Object.assign(clearObject(r),t.memberExpression(t.identifier(`$${s}$GLOBAL`),t.identifier(e)));p.remove(),l.remove(),a.init&&v.body.splice(i,0,t.expressionStatement(t.assignmentExpression("=",t.memberExpression(t.identifier(`$${s}$GLOBAL`),t.identifier(a.id.name)),a.init)))}else p.remove(),l.remove(),D.body.body.unshift(o),n++}else e.add(a.id.name)}else if("ClassDeclaration"==o.type&&(y.scope.crawl(),y.scope.hasGlobal(o.id.name))){v.body.splice(i,1);const[e]=y.unshiftContainer("body",v),[n]=y.unshiftContainer("body",o);y.scope.crawl();const a=y.scope.getBinding(o.id.name);r(a);for(const e of a.referencePaths)r("Identifier"==e.node.type),e.replaceWith(t.memberExpression(t.identifier(`$${s}$GLOBAL`),t.identifier(e.node.name)));e.remove(),n.remove(),v.body.splice(i,0,t.expressionStatement(t.assignmentExpression("=",t.memberExpression(t.identifier(`$${s}$GLOBAL`),t.identifier(o.id.name)),t.classExpression(void 0,o.superClass,o.body,o.decorators))))}if(y.scope.hasGlobal("_EXPORTS"))for(const e of i("_EXPORTS",y))e.replaceWith(t.arrayExpression([...f.keys(),...b.keys()].map((e=>t.stringLiteral(e)))));v.body.length&&D.body.body.splice(n,0,t.ifStatement(t.unaryExpression("!",t.identifier(`$${s}$FMCL`)),v))}return h&&D.body.body.unshift(t.variableDeclaration("let",[t.variableDeclarator(t.identifier(`$${s}$FUNCTION_DOT_PROTOTYPE`),createGetFunctionPrototypeNode())])),O&&D.body.body.unshift(t.variableDeclaration("let",[t.variableDeclarator(t.identifier(`$${s}$SET_PROTOTYPE_OF`),t.callExpression(t.memberExpression(t.memberExpression(t.identifier("Object"),t.identifier("call")),t.identifier("bind")),[t.identifier(`$${s}$DUNDER_PROTO_SETTER`)]))])),T&&D.body.body.unshift(t.variableDeclaration("let",[t.variableDeclarator(t.identifier(`$${s}$GET_PROTOTYPE_OF`),t.callExpression(t.memberExpression(t.memberExpression(t.identifier("Object"),t.identifier("call")),t.identifier("bind")),[t.identifier(`$${s}$DUNDER_PROTO_GETTER`)]))])),(T||O)&&D.body.body.unshift(t.variableDeclaration("let",[t.variableDeclarator(t.objectPattern(T?O?[t.objectProperty(t.identifier("get"),t.identifier(`$${s}$DUNDER_PROTO_GETTER`)),t.objectProperty(t.identifier("set"),t.identifier(`$${s}$DUNDER_PROTO_SETTER`))]:[t.objectProperty(t.identifier("get"),t.identifier(`$${s}$DUNDER_PROTO_GETTER`))]:[t.objectProperty(t.identifier("set"),t.identifier(`$${s}$DUNDER_PROTO_SETTER`))]),t.callExpression(t.memberExpression(t.identifier("Object"),t.identifier("getOwnPropertyDescriptor")),[t.memberExpression(t.identifier("Object"),t.identifier("prototype")),t.stringLiteral("__proto__")]))])),n(e,{BlockStatement({node:e}){for(const[i,r]of e.body.entries())"FunctionDeclaration"!=r.type||r.generator||(e.body.splice(i,1),e.body.unshift(t.variableDeclaration("let",[t.variableDeclarator(r.id,t.arrowFunctionExpression(r.params,r.body,r.async))])))},ClassBody({node:e,scope:i,parent:o}){r(t.isClass(o));let a=!1;for(const r of e.body){if("ClassMethod"!=r.type)continue;let e=!1;if(n(r.body,{ThisExpression(i){e=!0,a=!0,i.replaceWith(t.identifier(`_THIS_${s}_`))},Function(e){e.skip()}},i),e)if("constructor"!=r.kind)r.body.body.unshift(t.variableDeclaration("let",[t.variableDeclarator(t.identifier(`_THIS_${s}_`),t.callExpression(t.memberExpression(t.super(),t.identifier("valueOf")),[]))]));else{const e=[];if(n(r.body,{CallExpression(t){"Super"==t.node.callee.type&&e.push(t)}},i),e.length)if(1==e.length&&"ExpressionStatement"==e[0].parent.type&&e[0].parentPath.parentPath.parent==r)e[0].parentPath.replaceWith(t.variableDeclaration("let",[t.variableDeclarator(t.identifier(`_THIS_${s}_`),e[0].node)]));else{for(const i of e)i.replaceWith(t.assignmentExpression("=",t.identifier(`_THIS_${s}_`),i.node));r.body.body.unshift(t.variableDeclaration("let",[t.variableDeclarator(t.identifier(`_THIS_${s}_`))]))}else r.body.body.unshift(t.variableDeclaration("let",[t.variableDeclarator(t.identifier(`_THIS_${s}_`),t.callExpression(t.super(),[]))]))}}!o.superClass&&a&&(o.superClass=t.identifier("Object"))},VariableDeclaration({node:e}){"const"==e.kind&&(e.kind="let")},ThisExpression(e){e.replaceWith(t.identifier("undefined"))},BigIntLiteral(e){const i=Number(e.node.value);BigInt(i)==BigInt(e.node.value)?e.replaceWith(t.callExpression(t.identifier("BigInt"),[t.numericLiteral(i)])):e.replaceWith(t.callExpression(t.identifier("BigInt"),[t.stringLiteral(e.node.value)]))}}),{file:e,seclevel:c};function createGetFunctionPrototypeNode(){for(const e of o)if(!y.scope.hasOwnBinding(e))return t.memberExpression(t.memberExpression(t.identifier(e),t.identifier("constructor")),t.identifier("prototype"));return t.memberExpression(t.memberExpression(t.arrowFunctionExpression([t.identifier("_")],t.identifier("_")),t.identifier("constructor")),t.identifier("prototype"))}}export{transform as default,transform};
|
package/pull.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
import{
|
1
|
+
import{dirname as t,resolve as r}from"path";import{promises as i}from"fs";const{mkdir:s,copyFile:o}=i;async function pull(i,a,e){const[c,n]=e.split(".");if(!c||!n)throw new Error('`script` argument must be in "user.name" format');await function copyFilePersistent(r,i,a){return o(r,i,a).catch((async e=>{if("ENOENT"!=e.code)throw e;await s(t(i),{recursive:!0}),await o(r,i,a)}))}(r(a,c,"scripts",`${n}.js`),r(i,c,`${n}.js`))}export{pull as default,pull};
|
package/push.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
import e,{promises as
|
1
|
+
import e,{promises as i}from"fs";import{dirname as r,resolve as t,extname as a,basename as s}from"path";import{s as o,processScript as p}from"./processScript/index.js";import{c as n}from"./processScript/minify.js";import"@babel/generator";import"@babel/parser";import"@babel/plugin-proposal-class-properties";import"@babel/plugin-proposal-class-static-block";import"@babel/plugin-proposal-decorators";import"@babel/plugin-proposal-do-expressions";import"@babel/plugin-proposal-function-bind";import"@babel/plugin-proposal-function-sent";import"@babel/plugin-proposal-json-strings";import"@babel/plugin-proposal-logical-assignment-operators";import"@babel/plugin-proposal-nullish-coalescing-operator";import"@babel/plugin-proposal-numeric-separator";import"@babel/plugin-proposal-object-rest-spread";import"@babel/plugin-proposal-optional-catch-binding";import"@babel/plugin-proposal-optional-chaining";import"@babel/plugin-proposal-partial-application";import"@babel/plugin-proposal-pipeline-operator";import"@babel/plugin-proposal-private-property-in-object";import"@babel/plugin-proposal-record-and-tuple";import"@babel/plugin-proposal-throw-expressions";import"@babel/plugin-transform-exponentiation-operator";import"@babel/plugin-transform-typescript";import"@babel/traverse";import"@babel/types";import"@rollup/plugin-babel";import"@rollup/plugin-commonjs";import"@rollup/plugin-json";import"@rollup/plugin-node-resolve";import"perf_hooks";import"prettier";import"rollup";import"./processScript/postprocess.js";import"./spliceString-2c6f214f.js";import"./processScript/preprocess.js";import"./assert-1b7dada8.js";import"./processScript/transform.js";import"./processScript/shared.js";import"acorn";import"terser";class DynamicMap extends Map{constructor(e){super(),this.fallbackHandler=e}get(e){if(super.has(e))return super.get(e);const i=this.fallbackHandler(e);return super.set(e,i),i}}const{writeFile:l,mkdir:c}=i;function writeFilePersistent(e,i,t){return l(e,i,t).catch((async a=>{if("ENOENT"!=a.code)throw a;await c(r(e),{recursive:!0}),await l(e,i,t)}))}const{readFile:m,readdir:g}=e.promises;async function push(e,i,{scripts:r="*.*",onPush:l=(()=>{}),minify:c=!0,mangleNames:u=!1}={}){"string"==typeof r&&(r=[r]);const f=new DynamicMap((e=>new Set)),b=new Set,h=new Set;let w=!1;for(const e of r){const[i,r]=e.split(".");i&&"*"!=i?r&&"*"!=r?f.get(i).add(r):b.add(i):r&&"*"!=r?h.add(r):w=!0}const d=new DynamicMap((e=>new Set)),y=[],$=new DynamicMap((e=>new Set));let P;if(h.size||w){const r=await g(t(i),{withFileTypes:!0}),s=new Set([...(P=await g(t(e),{withFileTypes:!0})).filter((e=>e.isDirectory())).map((e=>e.name)),...r.filter((e=>e.isDirectory())).map((e=>e.name)),...r.filter((e=>e.isFile()&&".key"==a(e.name))).map((e=>e.name.slice(0,-4))),...f.keys(),...b]);if(w)for(const e of s)b.add(e);else for(const e of s){const i=f.get(e);for(const e of h)i.add(e)}}return await Promise.all([...b].map((async r=>{await g(t(e,r),{withFileTypes:!0}).then((async g=>{await Promise.all(g.map((async g=>{const f=a(g.name);if(g.isFile()&&o.includes(f)){const a=s(g.name,f),o=t(e,r,g.name),{srcLength:b,script:h}=await p(await m(o,{encoding:"utf-8"}),{minify:c,scriptUser:r,scriptName:a,filePath:o,mangleNames:u}),w={file:`${r}/${g.name}`,users:[r],minLength:n(h),error:void 0,srcLength:b};$.get(r).add(a),y.push(w),await writeFilePersistent(t(i,r,`scripts/${a}.js`),h),l(w)}})))}),(e=>{if("ENOENT"!=e.code)throw e}))}))),await Promise.all([...f].map((async([r,a])=>{b.has(r)||await Promise.all([...a].map((async a=>{let s,g,f;for(const i of o)try{g=`${a}${i}`,s=await m(f=t(e,r,g),{encoding:"utf-8"});break}catch{}if(s){const{srcLength:e,script:o}=await p(s,{minify:c,scriptUser:r,scriptName:a,filePath:f,mangleNames:u}),m={file:`${r}/${g}`,users:[r],minLength:n(o),error:void 0,srcLength:e};y.push(m),await writeFilePersistent(t(i,r,"scripts",`${a}.js`),o),l(m)}else d.get(a).add(r)})))}))),await(b.size?Promise.all((P||await g(t(e),{withFileTypes:!0})).map((async r=>{const g=a(r.name);if(!r.isFile()||!o.includes(g))return;const f=s(r.name,g),h=[...b,...d.get(f)].filter((e=>!$.get(e).has(f)));if(!h.length)return;const w=Math.floor(Math.random()*2**52).toString(36).padStart(11,"0"),P=t(e,r.name),{srcLength:S,script:j}=await p(await m(P,{encoding:"utf-8"}),{minify:c,scriptUser:!0,scriptName:f,uniqueID:w,filePath:P,mangleNames:u}),F={file:r.name,users:h,minLength:n(j),error:void 0,srcLength:S};await Promise.all(h.map((e=>writeFilePersistent(t(i,e,`scripts/${f}.js`),j.replace(new RegExp(`$${w}$SCRIPT_USER`,"g"),e).replace(new RegExp(`$${w}$FULL_SCRIPT_NAME`,"g"),`${e}.${f}`))))),y.push(F),l(F)}))):Promise.all([...d].map((async([r,a])=>{let s,g,f;for(const i of o)try{g=`${r}${i}`,s=await m(f=t(e,g),{encoding:"utf-8"});break}catch{}if(s){const e=Math.floor(Math.random()*2**52).toString(36).padStart(11,"0"),{srcLength:o,script:m}=await p(s,{minify:c,scriptUser:!0,scriptName:r,uniqueID:e,filePath:f,mangleNames:u}),b={file:g,users:[...a],minLength:n(m),error:void 0,srcLength:o};await Promise.all([...a].map((a=>writeFilePersistent(t(i,a,`scripts/${r}.js`),m.replace(new RegExp(`$${e}$SCRIPT_USER`,"g"),a).replace(new RegExp(`$${e}$FULL_SCRIPT_NAME`,"g"),`${a}.${r}`))))),y.push(b),l(b)}})))),y}export{DynamicMap as D,push as default,push,writeFilePersistent as w};
|
package/{bin → src/bin}/hsm.d.ts
RENAMED
File without changes
|
File without changes
|
@@ -4,12 +4,11 @@ export { processScript } from "./processScript";
|
|
4
4
|
export { pull } from "./pull";
|
5
5
|
export { push } from "./push";
|
6
6
|
export { syncMacros } from "./syncMacros";
|
7
|
-
export { test } from "./test";
|
8
7
|
export { watch } from "./watch";
|
9
8
|
export declare type Info = {
|
10
9
|
file: string;
|
11
10
|
users: string[];
|
12
11
|
srcLength: number;
|
13
12
|
minLength: number;
|
14
|
-
error: Error |
|
13
|
+
error: Error | undefined;
|
15
14
|
};
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
package/watch.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
import{watch as o}from"chokidar";import p from"fs";import{extname as r,basename as i,resolve as t}from"path";import{s as e,processScript as s}from"./processScript/index.js";import{generateTypings as
|
1
|
+
import{watch as o}from"chokidar";import p from"fs";import{extname as r,basename as i,resolve as t}from"path";import{s as e,processScript as s}from"./processScript/index.js";import{generateTypings as a}from"./generateTypings.js";import"@babel/generator";import"@babel/parser";import"@babel/plugin-proposal-class-properties";import"@babel/plugin-proposal-class-static-block";import"@babel/plugin-proposal-decorators";import"@babel/plugin-proposal-do-expressions";import"@babel/plugin-proposal-function-bind";import"@babel/plugin-proposal-function-sent";import"@babel/plugin-proposal-json-strings";import"@babel/plugin-proposal-logical-assignment-operators";import"@babel/plugin-proposal-nullish-coalescing-operator";import"@babel/plugin-proposal-numeric-separator";import"@babel/plugin-proposal-object-rest-spread";import"@babel/plugin-proposal-optional-catch-binding";import"@babel/plugin-proposal-optional-chaining";import"@babel/plugin-proposal-partial-application";import"@babel/plugin-proposal-pipeline-operator";import"@babel/plugin-proposal-private-property-in-object";import"@babel/plugin-proposal-record-and-tuple";import"@babel/plugin-proposal-throw-expressions";import"@babel/plugin-transform-exponentiation-operator";import"@babel/plugin-transform-typescript";import"@babel/traverse";import"@babel/types";import"@rollup/plugin-babel";import"@rollup/plugin-commonjs";import"@rollup/plugin-json";import"@rollup/plugin-node-resolve";import"perf_hooks";import"prettier";import"rollup";import"./processScript/minify.js";import"acorn";import"terser";import"./processScript/shared.js";import"./assert-1b7dada8.js";import"./spliceString-2c6f214f.js";import"./processScript/postprocess.js";import"./processScript/preprocess.js";import"./processScript/transform.js";const{readFile:n,readdir:l}=p.promises;function watch(p,c,m,b,g,{genTypes:u}={}){const h=o("",{depth:1,cwd:p,awaitWriteFinish:{stabilityThreshold:100}}).on("change",(async o=>{const a=r(o);if(e.includes(a)){const c=i(o,a);if(o==i(o)){if(!b.length||b.includes(c)){const a=await n(t(p,o),{encoding:"utf-8"}),c=new Map;let m;await Promise.all((await l(p,{withFileTypes:!0})).map((async o=>{o.isDirectory()&&await l(t(p,o.name),{withFileTypes:!0}).then((p=>{for(const t of p){if(!t.isFile())continue;const p=r(t.name);if(!e.includes(p))continue;const s=i(t.name,p),a=c.get(s);a?a.push(o.name):c.set(s,[o.name])}}))})));const{srcLength:b}=await s(a).catch((o=>(m=o,{script:"",srcLength:0}))),u={file:o,users:[],minLength:0,error:m,srcLength:b};g&&g(u)}}else{const r=i(t(o,".."));if((!m.length||m.includes(r))&&(!b.length||b.includes(c))){const i=await n(t(p,o),{encoding:"utf-8"});let e;const{srcLength:a}=await s(i).catch((o=>(e=o,{script:"",srcLength:0}))),l={file:o,users:[r],minLength:0,error:e,srcLength:a};null==g||g(l)}}}}));u&&(a(p,t(p,u),c),h.on("add",(()=>a(p,t(p,u),c))),h.on("unlink",(()=>a(p,t(p,u),c))))}export{watch as default,watch};
|
package/index.cjs
DELETED
package/test.d.ts
DELETED
package/test.js
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
import p from"fs";import{resolve as o,extname as r}from"path";import{s as i,processScript as e}from"./processScript/index.js";import"@babel/generator";import"@babel/parser";import"@babel/plugin-proposal-class-properties";import"@babel/plugin-proposal-class-static-block";import"@babel/plugin-proposal-decorators";import"@babel/plugin-proposal-do-expressions";import"@babel/plugin-proposal-function-bind";import"@babel/plugin-proposal-function-sent";import"@babel/plugin-proposal-json-strings";import"@babel/plugin-proposal-logical-assignment-operators";import"@babel/plugin-proposal-nullish-coalescing-operator";import"@babel/plugin-proposal-numeric-separator";import"@babel/plugin-proposal-object-rest-spread";import"@babel/plugin-proposal-optional-catch-binding";import"@babel/plugin-proposal-optional-chaining";import"@babel/plugin-proposal-partial-application";import"@babel/plugin-proposal-pipeline-operator";import"@babel/plugin-proposal-private-property-in-object";import"@babel/plugin-proposal-record-and-tuple";import"@babel/plugin-proposal-throw-expressions";import"@babel/plugin-transform-exponentiation-operator";import"@babel/plugin-transform-typescript";import"@babel/traverse";import"@babel/types";import"@rollup/plugin-babel";import"@rollup/plugin-commonjs";import"@rollup/plugin-json";import"@rollup/plugin-node-resolve";import"./assert-1b7dada8.js";import"./processScript/minify.js";import"./spliceString-2c6f214f.js";import"acorn";import"terser";import"./processScript/shared.js";import"perf_hooks";import"prettier";import"rollup";import"./processScript/postprocess.js";import"./processScript/preprocess.js";import"./processScript/transform.js";const{readFile:s,readdir:t}=p.promises;async function test(p){const l=[],a=[];for(const n of await t(p,{withFileTypes:!0}))n.isDirectory()?l.push(t(o(p,n.name),{withFileTypes:!0}).then((t=>{const l=[];for(const m of t)m.isFile()&&i.includes(r(m.name))&&l.push(s(o(p,n.name,m.name),{encoding:"utf-8"}).then(e).then((({warnings:p})=>a.push(...p.map((({message:p,line:o})=>({file:`${n.name}/${m.name}`,message:p,line:o})))))));return Promise.all(l)}))):n.isFile()&&i.includes(r(n.name))&&l.push(s(o(p,n.name),{encoding:"utf-8"}).then(e).then((({warnings:p})=>a.push(...p.map((({message:p,line:o})=>({file:n.name,message:p,line:o})))))));return await Promise.all(l),a}export{test as default,test};
|