@cichol/shader-compressor 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,37 @@
1
+ # `@cichol/shader-compressor`
2
+
3
+ A compressor for WebGL2 shader source code. (GLSL ES 3.00)
4
+
5
+ [![Build Status][github actions badge]][github actions][![Coverage Status][coverage badge]][coverage][![License][license badge]](LICENSE)[![Package Version][npm package version badge]][npm package]
6
+
7
+ ## Table of Contents
8
+
9
+ - [`@cichol/shader-compressor`](#cicholshader-compressor)
10
+ - [Table of Contents](#table-of-contents)
11
+ - [Installation](#installation)
12
+ - [Usage](#usage)
13
+ - [License](#license)
14
+
15
+ ## Installation
16
+
17
+ ```sh
18
+ $ npm install --save @cichol/shader-compressor
19
+ ```
20
+
21
+ ## Usage
22
+
23
+ ```typescript
24
+ // ...
25
+ ```
26
+
27
+ ## License
28
+
29
+ [MIT Licensed](../../LICENSE).
30
+
31
+ [github actions badge]: https://img.shields.io/github/actions/workflow/status/morrighan/packages/default.yml?branch=develop&style=flat-square
32
+ [github actions]: https://github.com/morrighan/packages/actions
33
+ [coverage badge]: https://img.shields.io/codecov/c/github/morrighan/packages?style=flat-square
34
+ [coverage]: https://app.codecov.io/gh/morrighan/packages/tree/develop/packages%2Fshader-compressor
35
+ [license badge]: https://img.shields.io/github/license/morrighan/packages.svg?style=flat-square
36
+ [npm package version badge]: https://img.shields.io/npm/v/@cichol/shader-compressor.svg?style=flat-square
37
+ [npm package]: https://www.npmjs.com/package/@cichol/shader-compressor
@@ -0,0 +1,42 @@
1
+ // TypeScript bindings for emscripten-generated code. Automatically generated at compile time.
2
+ interface WasmModule {
3
+ }
4
+
5
+ type EmbindString = ArrayBuffer|Uint8Array|Uint8ClampedArray|Int8Array|string;
6
+ export interface ClassHandle {
7
+ isAliasOf(other: ClassHandle): boolean;
8
+ delete(): void;
9
+ deleteLater(): this;
10
+ isDeleted(): boolean;
11
+ // @ts-ignore - If targeting lower than ESNext, this symbol might not exist.
12
+ [Symbol.dispose](): void;
13
+ clone(): this;
14
+ }
15
+ export interface Validator extends ClassHandle {
16
+ readonly error: EmbindString | undefined;
17
+ }
18
+
19
+ export interface Optimizer extends ClassHandle {
20
+ readonly result: string;
21
+ }
22
+
23
+ export interface Minifier extends ClassHandle {
24
+ readonly result: EmbindString | undefined;
25
+ }
26
+
27
+ interface EmbindModule {
28
+ Validator: {
29
+ new(_0: number, _1: EmbindString): Validator;
30
+ initialize(): void;
31
+ finalize(): void;
32
+ };
33
+ Optimizer: {
34
+ new(_0: number, _1: EmbindString): Optimizer;
35
+ };
36
+ Minifier: {
37
+ new(_0: EmbindString): Minifier;
38
+ };
39
+ }
40
+
41
+ export type MainModule = WasmModule & EmbindModule;
42
+ export default function MainModuleFactory (options?: unknown): Promise<MainModule>;
@@ -0,0 +1,84 @@
1
+ async function Module(moduleArg={}){var moduleRtn;var k=moduleArg;const {createRequire:aa}=await import("module");var require=aa(import.meta.url),ba="./this.program",ca=(a,b)=>{throw b;},da=import.meta.url,ea="",fa,ha,ia=process.versions.node,m=ia.split(".").slice(0,3);m=1E4*m[0]+100*m[1]+1*m[2].split("-")[0];if(16E4>m)throw Error("This emscripten-generated code requires node v16.0.0 (detected v"+ia+")");var fs=require("fs");da.startsWith("file:")&&(ea=require("path").dirname(require("url").fileURLToPath(da))+"/");
2
+ ha=a=>{a=ja(a)?new URL(a):a;a=fs.readFileSync(a);q(Buffer.isBuffer(a));return a};fa=async a=>{a=ja(a)?new URL(a):a;a=fs.readFileSync(a,void 0);q(Buffer.isBuffer(a));return a};1<process.argv.length&&(ba=process.argv[1].replace(/\\/g,"/"));process.argv.slice(2);ca=(a,b)=>{process.exitCode=a;throw b;};var u=console.log.bind(console),x=console.error.bind(console);q(!0,"web environment detected but not enabled at build time. Add `web` to `-sENVIRONMENT` to enable.");q(!0,"worker environment detected but not enabled at build time. Add `worker` to `-sENVIRONMENT` to enable.");
3
+ q(!0,"shell environment detected but not enabled at build time. Add `shell` to `-sENVIRONMENT` to enable.");var ka;"object"!=typeof WebAssembly&&x("no native wasm support detected");var y=!1,la;function q(a,b){a||z("Assertion failed"+(b?": "+b:""))}var ja=a=>a.startsWith("file://");function ma(){var a=na();q(0==(a&3));0==a&&(a+=4);A[a>>2]=34821223;A[a+4>>2]=2310721022;A[0]=1668509029}
4
+ function oa(){if(!y){var a=na();0==a&&(a+=4);var b=A[a>>2],c=A[a+4>>2];34821223==b&&2310721022==c||z(`Stack overflow! Stack cookie has been overwritten at ${C(a)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${C(c)} ${C(b)}`);1668509029!=A[0]&&z("Runtime error: The application has corrupted its heap memory area (address zero)!")}}var pa=new Int16Array(1),qa=new Int8Array(pa.buffer);pa[0]=25459;115===qa[0]&&99===qa[1]||z("Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)");
5
+ function ra(a){Object.getOwnPropertyDescriptor(k,a)||Object.defineProperty(k,a,{configurable:!0,set(){z(`Attempt to set \`Module.${a}\` after it has already been processed. This can happen, for example, when code is injected via '--post-js' rather than '--pre-js'`)}})}function E(a){return()=>q(!1,`call to '${a}' via reference taken before Wasm module initialization`)}
6
+ function sa(a){Object.getOwnPropertyDescriptor(k,a)||Object.defineProperty(k,a,{configurable:!0,get(){var b=`'${a}' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)`;"FS_createPath"!==a&&"FS_createDataFile"!==a&&"FS_createPreloadedFile"!==a&&"FS_preloadFile"!==a&&"FS_unlink"!==a&&"addRunDependency"!==a&&"FS_createLazyFile"!==a&&"FS_createDevice"!==a&&"removeRunDependency"!==a||(b+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you");
7
+ z(b)}})}var ta,ua,va,wa,F,xa,ya,H,A,za,Aa,Ba,Ca,Da=!1;function Ea(){var a=va.buffer;wa=new Int8Array(a);xa=new Int16Array(a);F=new Uint8Array(a);ya=new Uint16Array(a);H=new Int32Array(a);A=new Uint32Array(a);za=new Float32Array(a);Aa=new Float64Array(a);Ba=new BigInt64Array(a);Ca=new BigUint64Array(a)}q("undefined"!=typeof Int32Array&&"undefined"!==typeof Float64Array&&void 0!=Int32Array.prototype.subarray&&void 0!=Int32Array.prototype.set,"JS engine does not provide full typed array support");
8
+ function z(a){k.onAbort?.(a);a="Aborted("+a+")";x(a);y=!0;Da&&Fa();a=new WebAssembly.RuntimeError(a);ua?.(a);throw a;}function Ga(){z("Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -sFORCE_FILESYSTEM")}
9
+ function I(a,b){return(...c)=>{q(Da,`native function \`${a}\` called before runtime initialization`);var d=J[a];q(d,`exported native function \`${a}\` not found`);q(c.length<=b,`native function \`${a}\` called with ${c.length} args but expects ${b}`);return d(...c)}}var Ha;async function Ia(a){if(!ka)try{var b=await fa(a);return new Uint8Array(b)}catch{}if(a==Ha&&ka)a=new Uint8Array(ka);else if(ha)a=ha(a);else throw"both async and sync fetching of the wasm failed";return a}
10
+ async function Ja(a){var b=Ha;try{var c=await Ia(b);return await WebAssembly.instantiate(c,a)}catch(d){x(`failed to asynchronously prepare wasm: ${d}`),ja(b)&&x(`warning: Loading from a file URI (${b}) is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing`),z(d)}}async function Ka(a){return Ja(a)}
11
+ class La{name="ExitStatus";constructor(a){this.message=`Program terminated with exit(${a})`;this.status=a}}
12
+ var Ma=a=>{for(;0<a.length;)a.shift()(k)},Na=[],Oa=[],Pa=()=>{var a=k.preRun.shift();Oa.push(a)},Qa=!0,C=a=>{q("number"===typeof a);return"0x"+(a>>>0).toString(16).padStart(8,"0")},K=a=>{K.O||(K.O={});K.O[a]||(K.O[a]=1,x("warning: "+a))},Ra="undefined"!=typeof TextDecoder?new TextDecoder:void 0,Sa=(a,b,c,d)=>{c=b+c;if(d)return c;for(;a[b]&&!(b>=c);)++b;return b},Ta=(a,b=0,c,d)=>{c=Sa(a,b,c,d);if(16<c-b&&a.buffer&&Ra)return Ra.decode(a.subarray(b,c));for(d="";b<c;){var e=a[b++];if(e&128){var f=a[b++]&
13
+ 63;if(192==(e&224))d+=String.fromCharCode((e&31)<<6|f);else{var g=a[b++]&63;224==(e&240)?e=(e&15)<<12|f<<6|g:(240!=(e&248)&&K("Invalid UTF-8 leading byte "+C(e)+" encountered when deserializing a UTF-8 string in wasm memory to a JS string!"),e=(e&7)<<18|f<<12|g<<6|a[b++]&63);65536>e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}return d},L=(a,b,c)=>{q("number"==typeof a,`UTF8ToString expects a number (got ${typeof a})`);return a?
14
+ Ta(F,a,b,c):""},Wa=a=>{a=a.getArg(Ua,0);return Va(a)},ab=a=>{var b=Wa(a);a=Xa();var c=Ya(4),d=Ya(4);Za(b,c,d);b=A[c>>2];d=A[d>>2];c=L(b);M(b);if(d){var e=L(d);M(d)}$a(a);return[c,e]},O=a=>{for(var b="";;){var c=F[a++];if(!c)return b;b+=String.fromCharCode(c)}},P={},Q={},bb={},R=class extends Error{constructor(a){super(a);this.name="BindingError"}},cb=a=>{throw new R(a);};
15
+ function db(a,b,c={}){var d=b.name;if(!a)throw new R(`type "${d}" must have a positive integer typeid pointer`);if(Q.hasOwnProperty(a)){if(c.X)return;throw new R(`Cannot register type '${d}' twice`);}Q[a]=b;delete bb[a];P.hasOwnProperty(a)&&(b=P[a],delete P[a],b.forEach(e=>e()))}function S(a,b,c={}){return db(a,b,c)}
16
+ var fb=(a,b,c)=>{switch(b){case 1:return c?d=>wa[d]:d=>F[d];case 2:return c?d=>xa[d>>1]:d=>ya[d>>1];case 4:return c?d=>H[d>>2]:d=>A[d>>2];case 8:return c?d=>Ba[d>>3]:d=>Ca[d>>3];default:throw new TypeError(`invalid integer width (${b}): ${a}`);}},U=a=>{if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a},gb=(a,b,c,d)=>{if(b<c||b>d)throw new TypeError(`Passing a number "${U(b)}" from JS side to C/C++ side to an argument of type "${a}", which is outside the valid range [${c}, ${d}]!`);
17
+ },hb=a=>{throw new R(a.g.j.h.name+" instance already deleted");},ib=!1,jb=()=>{},kb=(a,b,c)=>{if(b===c)return a;if(void 0===c.o)return null;a=kb(a,b,c.o);return null===a?null:c.U(a)},lb={},mb={},nb=(a,b)=>{if(void 0===b)throw new R("ptr should not be undefined");for(;a.o;)b=a.I(b),a=a.o;return mb[b]},ob=class extends Error{constructor(a){super(a);this.name="InternalError"}},qb=(a,b)=>{if(!b.j||!b.i)throw new ob("makeClassHandle requires ptr and ptrType");if(!!b.v!==!!b.m)throw new ob("Both smartPtrType and smartPtr must be specified");
18
+ b.count={value:1};return pb(Object.create(a,{g:{value:b,writable:!0}}))};
19
+ function rb(a){function b(){return this.M?qb(this.h.F,{j:this.$,i:c,v:this,m:a}):qb(this.h.F,{j:this,i:a})}var c=this.W(a);if(!c)return this.P(a),null;var d=nb(this.h,c);if(void 0!==d){if(0===d.g.count.value)return d.g.i=c,d.g.m=a,d.clone();d=d.clone();this.P(a);return d}d=this.h.V(c);d=lb[d];if(!d)return b.call(this);d=this.L?d.T:d.pointerType;var e=kb(c,this.h,d.h);return null===e?b.call(this):this.M?qb(d.h.F,{j:d,i:e,v:this,m:a}):qb(d.h.F,{j:d,i:e})}
20
+ var pb=a=>{if("undefined"===typeof FinalizationRegistry)return pb=b=>b,a;ib=new FinalizationRegistry(b=>{console.warn(b.Z);b=b.g;--b.count.value;0===b.count.value&&(b.m?b.v.C(b.m):b.j.h.C(b.i))});pb=b=>{var c=b.g;if(c.m){var d={g:c};c=Error(`Embind found a leaked C++ instance ${c.j.h.name} <${C(c.i)}>.\n`+"We'll free it automatically in this case, but this functionality is not reliable across various environments.\nMake sure to invoke .delete() manually once you're done with the instance instead.\nOriginally allocated");
21
+ "captureStackTrace"in Error&&Error.captureStackTrace(c,rb);d.Z=c.stack.replace(/^Error: /,"");ib.register(b,d,b)}return b};jb=b=>{ib.unregister(b)};return pb(a)},sb=[];function tb(){}
22
+ var ub=(a,b)=>Object.defineProperty(b,"name",{value:a}),vb=(a,b,c)=>{if(void 0===a[b].B){var d=a[b];a[b]=function(...e){if(!a[b].B.hasOwnProperty(e.length))throw new R(`Function '${c}' called with an invalid number of arguments (${e.length}) - expects one of (${a[b].B})!`);return a[b].B[e.length].apply(this,e)};a[b].B=[];a[b].B[d.K]=d}},wb=(a,b)=>{if(k.hasOwnProperty(a))throw new R(`Cannot register public name '${a}' twice`);k[a]=b;k[a].K=void 0},xb=a=>{q("string"===typeof a);a=a.replace(/[^a-zA-Z0-9_]/g,
23
+ "$");var b=a.charCodeAt(0);return 48<=b&&57>=b?`_${a}`:a};function yb(a,b,c,d,e,f,g,h){this.name=a;this.constructor=b;this.F=c;this.C=d;this.o=e;this.V=f;this.I=g;this.U=h}var zb=(a,b,c)=>{for(;b!==c;){if(!b.I)throw new R(`Expected null or instance of ${c.name}, got an instance of ${b.name}`);a=b.I(a);b=b.o}return a};
24
+ function Ab(a,b){if(null===b){if(this.N)throw new R(`null is not a valid ${this.name}`);return 0}if(!b.g)throw new R(`Cannot pass "${U(b)}" as a ${this.name}`);if(!b.g.i)throw new R(`Cannot pass deleted object as a pointer of type ${this.name}`);return zb(b.g.i,b.g.j.h,this.h)}
25
+ function Bb(a,b){if(null===b){if(this.N)throw new R(`null is not a valid ${this.name}`);if(this.M){var c=this.ba();null!==a&&a.push(this.C,c);return c}return 0}if(!b||!b.g)throw new R(`Cannot pass "${U(b)}" as a ${this.name}`);if(!b.g.i)throw new R(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.L&&b.g.j.L)throw new R(`Cannot convert argument of type ${b.g.v?b.g.v.name:b.g.j.name} to parameter type ${this.name}`);c=zb(b.g.i,b.g.j.h,this.h);if(this.M){if(void 0===b.g.m)throw new R("Passing raw pointer to smart pointer is illegal");
26
+ switch(this.ea){case 0:if(b.g.v===this)c=b.g.m;else throw new R(`Cannot convert argument of type ${b.g.v?b.g.v.name:b.g.j.name} to parameter type ${this.name}`);break;case 1:c=b.g.m;break;case 2:if(b.g.v===this)c=b.g.m;else{var d=b.clone();c=this.da(c,Cb(()=>d["delete"]()));null!==a&&a.push(this.C,c)}break;default:throw new R("Unsupporting sharing policy");}}return c}
27
+ function Db(a,b){if(null===b){if(this.N)throw new R(`null is not a valid ${this.name}`);return 0}if(!b.g)throw new R(`Cannot pass "${U(b)}" as a ${this.name}`);if(!b.g.i)throw new R(`Cannot pass deleted object as a pointer of type ${this.name}`);if(b.g.j.L)throw new R(`Cannot convert argument of type ${b.g.j.name} to parameter type ${this.name}`);return zb(b.g.i,b.g.j.h,this.h)}function Eb(a){return this.l(A[a>>2])}
28
+ function Fb(a,b,c,d,e,f,g,h,l,p,n){this.name=a;this.h=b;this.N=c;this.L=d;this.M=e;this.$=f;this.ea=g;this.R=h;this.ba=l;this.da=p;this.C=n;e||void 0!==b.o?this.s=Bb:(this.s=d?Ab:Db,this.u=null)}
29
+ var Gb=(a,b)=>{if(!k.hasOwnProperty(a))throw new ob("Replacing nonexistent public symbol");k[a]=b;k[a].K=void 0},Hb=[],Ib,Jb=a=>{var b=Hb[a];b||(Hb[a]=b=Ib.get(a));q(Ib.get(a)==b,"JavaScript-side Wasm function table mirror is out of date!");return b},V=(a,b,c=!1)=>{q(!c,"Async bindings are only supported with JSPI.");a=O(a);c=Jb(b);if("function"!=typeof c)throw new R(`unknown function pointer with signature ${a}: ${b}`);return c};class Kb extends Error{}
30
+ var Mb=a=>{a=Lb(a);var b=O(a);M(a);return b},Nb=(a,b)=>{function c(f){e[f]||Q[f]||(bb[f]?bb[f].forEach(c):(d.push(f),e[f]=!0))}var d=[],e={};b.forEach(c);throw new Kb(`${a}: `+d.map(Mb).join([", "]));},W=(a,b,c)=>{function d(h){h=c(h);if(h.length!==a.length)throw new ob("Mismatched type converter count");for(var l=0;l<a.length;++l)S(a[l],h[l])}a.forEach(h=>bb[h]=b);var e=Array(b.length),f=[],g=0;b.forEach((h,l)=>{Q.hasOwnProperty(h)?e[l]=Q[h]:(f.push(h),P.hasOwnProperty(h)||(P[h]=[]),P[h].push(()=>
31
+ {e[l]=Q[h];++g;g===f.length&&d(e)}))});0===f.length&&d(e)},Ob=a=>{for(;a.length;){var b=a.pop();a.pop()(b)}},Pb={ftfnt:function(a,b,c,d,e,f,g,h,l,p,n,r,t){if(13!==arguments.length)throw Error(a+"Expected 13 closure arguments "+arguments.length+" given.");return function(v,w){n(arguments.length,r,t,a,b);var B=h(null,v),G=l(null,w);B=c(d,B,G);p(G);return f(B)}},fff:function(a,b,c,d,e,f,g,h,l,p){if(10!==arguments.length)throw Error(a+"Expected 10 closure arguments "+arguments.length+" given.");return function(){h(arguments.length,
32
+ l,p,a,b);c(d)}},ftft:function(a,b,c,d,e,f,g,h,l,p,n,r){if(12!==arguments.length)throw Error(a+"Expected 12 closure arguments "+arguments.length+" given.");return function(t){p(arguments.length,n,r,a,b);var v=h(null,t),w=c(d,v);l(v);return f(w)}}};function Qb(a,b,c,d,e){(a<b||a>c)&&e(`function ${d} called with ${a} arguments, expected ${b==c?b:`${b} to ${c}`}`)}
33
+ function Rb(a,b,c,d,e){var f=b.length;if(2>f)throw new R("argTypes array size mismatch! Must at least get return value and 'this' types!");q(!e,"Async bindings are only supported with JSPI.");var g=null!==b[1]&&!1,h;a:{for(h=1;h<b.length;++h)if(null!==b[h]&&void 0===b[h].u){h=!0;break a}h=!1}var l=!b[0].Y,p=f-2;var n=b.length-2;for(var r=b.length-1;2<=r&&b[r].optional;--r)n--;r=b[0];var t=b[1];c=[a,cb,c,d,Ob,r.l.bind(r),t?.s.bind(t)];for(d=2;d<f;++d)r=b[d],c.push(r.s.bind(r));if(!h)for(d=g?1:2;d<
34
+ b.length;++d)null!==b[d].u&&c.push(b[d].u);c.push(Qb,n,p);e=[g?"t":"f",l?"t":"f",e?"t":"f"];for(g=g?1:2;g<b.length;++g)f=b[g],e.push(void 0===f.u?"u":null===f.u?"n":"t");b=Pb[e.join("")](...c);return ub(a,b)}
35
+ var Sb=(a,b)=>{for(var c=[],d=0;d<a;d++)c.push(A[b+4*d>>2]);return c},Tb=a=>{a=a.trim();const b=a.indexOf("(");if(-1===b)return a;q(a.endsWith(")"),"Parentheses for argument names should match.");return a.slice(0,b)},Ub=(a,b,c)=>{if(!(a instanceof Object))throw new R(`${c} with invalid "this": ${a}`);if(!(a instanceof b.h.constructor))throw new R(`${c} incompatible with "this" of type ${a.constructor.name}`);if(!a.g.i)throw new R(`cannot call emscripten binding method ${c} on deleted object`);return zb(a.g.i,
36
+ a.g.j.h,b.h)},Vb=[],X=[0,1,,1,null,1,!0,1,!1,1],Wb=a=>{9<a&&0===--X[a+1]&&(q(void 0!==X[a],"Decref for unallocated handle."),X[a]=void 0,Vb.push(a))},Xb=a=>{if(!a)throw new R(`Cannot use deleted val. handle = ${a}`);q(2===a||void 0!==X[a]&&0===a%2,`invalid handle: ${a}`);return X[a]},Cb=a=>{switch(a){case void 0:return 2;case null:return 4;case !0:return 6;case !1:return 8;default:const b=Vb.pop()||X.length;X[b]=a;X[b+1]=1;return b}},Yb={name:"emscripten::val",l:a=>{var b=Xb(a);Wb(a);return b},s:(a,
37
+ b)=>Cb(b),A:Eb,u:null},Zb=(a,b)=>{switch(b){case 4:return function(c){return this.l(za[c>>2])};case 8:return function(c){return this.l(Aa[c>>3])};default:throw new TypeError(`invalid float width (${b}): ${a}`);}},$b=Object.assign({optional:!0},Yb),Y=(a,b,c)=>{q("number"==typeof c,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");var d=F;q("string"===typeof a,`stringToUTF8Array expects a string (got ${typeof a})`);if(0<c){var e=
38
+ b;c=b+c-1;for(var f=0;f<a.length;++f){var g=a.codePointAt(f);if(127>=g){if(b>=c)break;d[b++]=g}else if(2047>=g){if(b+1>=c)break;d[b++]=192|g>>6;d[b++]=128|g&63}else if(65535>=g){if(b+2>=c)break;d[b++]=224|g>>12;d[b++]=128|g>>6&63;d[b++]=128|g&63}else{if(b+3>=c)break;1114111<g&&K("Invalid Unicode code point "+C(g)+" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).");d[b++]=240|g>>18;d[b++]=128|g>>12&63;d[b++]=128|
39
+ g>>6&63;d[b++]=128|g&63;f++}}d[b]=0;a=b-e}else a=0;return a},ac=a=>{for(var b=0,c=0;c<a.length;++c){var d=a.charCodeAt(c);127>=d?b++:2047>=d?b+=2:55296<=d&&57343>=d?(b+=4,++c):b+=3}return b},bc="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0,cc=(a,b,c)=>{q(0==a%2,"Pointer passed to UTF16ToString must be aligned to two bytes!");a>>=1;b=Sa(ya,a,b/2,c);if(16<b-a&&bc)return bc.decode(ya.subarray(a,b));for(c="";a<b;++a)c+=String.fromCharCode(ya[a]);return c},dc=(a,b,c)=>{q(0==b%2,"Pointer passed to stringToUTF16 must be aligned to two bytes!");
40
+ q("number"==typeof c,"stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");c??=2147483647;if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var e=0;e<c;++e)xa[b>>1]=a.charCodeAt(e),b+=2;xa[b>>1]=0;return b-d},ec=a=>2*a.length,fc=(a,b,c)=>{q(0==a%4,"Pointer passed to UTF32ToString must be aligned to four bytes!");var d="";a>>=2;for(var e=0;!(e>=b/4);e++){var f=A[a+e];if(!f&&!c)break;d+=String.fromCodePoint(f)}return d},
41
+ gc=(a,b,c)=>{q(0==b%4,"Pointer passed to stringToUTF32 must be aligned to four bytes!");q("number"==typeof c,"stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");c??=2147483647;if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e<a.length;++e){var f=a.codePointAt(e);65535<f&&e++;H[b>>2]=f;b+=4;if(b+4>c)break}H[b>>2]=0;return b-d},hc=a=>{for(var b=0,c=0;c<a.length;++c)65535<a.codePointAt(c)&&c++,b+=4;return b},jc=[],kc=a=>{var b=jc.length;
42
+ jc.push(a);return b},lc=(a,b)=>{for(var c=Array(a),d=0;d<a;++d){var e=d,f=A[b+4*d>>2],g=Q[f];if(void 0===g)throw a=`${`parameter ${d}`} has unknown type ${Mb(f)}`,new R(a);c[e]=g}return c},mc={},nc=a=>{a instanceof La||"unwind"==a||(oa(),a instanceof WebAssembly.RuntimeError&&0>=Xa()&&x("Stack overflow detected. You can try increasing -sSTACK_SIZE (currently set to 1048576)"),ca(1,a))},pc=(a,b)=>{la=a;oc();Qa&&!b&&(b=`program exited (with status: ${a}), but keepRuntimeAlive() is set (counter=${0}) due to an async operation, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)`,
43
+ ua?.(b),x(b));la=a;Qa||(k.onExit?.(a),y=!0);ca(a,new La(a))},qc=()=>{if(!Qa)try{pc(la)}catch(a){nc(a)}},rc=a=>{if(y)x("user callback triggered after runtime exited or application aborted. Ignoring.");else try{a(),qc()}catch(b){nc(b)}},sc=(a,b)=>{setTimeout(()=>{rc(a)},b)},Cc=(a,b)=>{tc=a;uc=b;if(vc)if(wc||=!0,0==a)Z=function(){setTimeout(xc,Math.max(0,yc+b-performance.now())|0)},zc="timeout";else if(1==a)Z=function(){Ac(xc)},zc="rAF";else{if(2==a){if("undefined"==typeof Bc)if("undefined"==typeof setImmediate){var c=
44
+ [];addEventListener("message",d=>{if("setimmediate"===d.data||"setimmediate"===d.data.target)d.stopPropagation(),c.shift()()},!0);Bc=d=>{c.push(d);postMessage("setimmediate","*")}}else Bc=setImmediate;Z=function(){Bc(xc)};zc="immediate"}}else x("emscripten_set_main_loop_timing: Cannot set timing mode for main loop since a main loop does not exist! Call emscripten_set_main_loop first to set one up.")},Kc=a=>{function b(){return c<Dc?(qc(),!1):!0}q(!vc,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");
45
+ vc=a;var c=Dc;wc=!1;xc=function(){if(!y)if(0<Ec.length){var d=Ec.shift();d.ja(d.ga);if(Fc){var e=Fc,f=0==e%1?e-1:Math.floor(e);Fc=d.ha?f:(8*e+(f+.5))/9}k.setStatus&&(d=k.statusMessage||"Please wait...",e=Fc??0,f=Gc.ia??0,e?e<f?k.setStatus("{message} ({expected - remaining}/{expected})"):k.setStatus(d):k.setStatus(""));b()&&setTimeout(xc,0)}else if(b())if(Hc=Hc+1|0,1==tc&&1<uc&&0!=Hc%uc)Z();else{0==tc&&(yc=performance.now());"timeout"===zc&&k.ctx&&(K("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!"),
46
+ zc="");a:if(!y){for(d of Ic)if(!1===d())break a;rc(a);for(e of Jc)e();oa()}b()&&Z()}}},wc=!1,Z=null,zc="",Dc=0,vc=null,tc=0,uc=0,Hc=0,Ec=[],Ic=[],Jc=[],Lc=0;function Ac(a){if("function"==typeof requestAnimationFrame)requestAnimationFrame(a);else{var b=Date.now();if(0===Lc)Lc=b+1E3/60;else for(;b+2>=Lc;)Lc+=1E3/60;setTimeout(a,Math.max(Lc-b,0))}}
47
+ var Gc={},yc,xc,Bc,Fc,Mc={},Oc=()=>{if(!Nc){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.language||"C").replace("-","_")+".UTF-8",_:ba||"./this.program"},b;for(b in Mc)void 0===Mc[b]?delete a[b]:a[b]=Mc[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);Nc=c}return Nc},Nc,Pc=[null,[],[]],Qc=(a,b)=>{var c=Pc[a];q(c);0===b||10===b?((1===a?u:x)(Ta(c)),c.length=0):c.push(b)};
48
+ function Rc(a,b){const c="undefined"!==typeof SharedArrayBuffer&&F.buffer instanceof SharedArrayBuffer,d=c?new ArrayBuffer(b):F.buffer,e=c?0:a;for(let f=0;f<b;f+=65536){const g=new Uint8Array(d,e+f,Math.min(b-f,65536));crypto.getRandomValues(g)}c&&(new Uint8Array(F.buffer,a,b)).set(new Uint8Array(d))}
49
+ (()=>{let a=tb.prototype;Object.assign(a,{isAliasOf:function(c){if(!(this instanceof tb&&c instanceof tb))return!1;var d=this.g.j.h,e=this.g.i;c.g=c.g;var f=c.g.j.h;for(c=c.g.i;d.o;)e=d.I(e),d=d.o;for(;f.o;)c=f.I(c),f=f.o;return d===f&&e===c},clone:function(){this.g.i||hb(this);if(this.g.H)return this.g.count.value+=1,this;var c=pb,d=Object,e=d.create,f=Object.getPrototypeOf(this),g=this.g;c=c(e.call(d,f,{g:{value:{count:g.count,G:g.G,H:g.H,i:g.i,j:g.j,m:g.m,v:g.v}}}));c.g.count.value+=1;c.g.G=!1;
50
+ return c},["delete"](){this.g.i||hb(this);if(this.g.G&&!this.g.H)throw new R("Object already scheduled for deletion");jb(this);var c=this.g;--c.count.value;0===c.count.value&&(c.m?c.v.C(c.m):c.j.h.C(c.i));this.g.H||(this.g.m=void 0,this.g.i=void 0)},isDeleted:function(){return!this.g.i},deleteLater:function(){this.g.i||hb(this);if(this.g.G&&!this.g.H)throw new R("Object already scheduled for deletion");sb.push(this);this.g.G=!0;return this}});const b=Symbol.dispose;b&&(a[b]=a["delete"])})();
51
+ Object.assign(Fb.prototype,{W(a){this.R&&(a=this.R(a));return a},P(a){this.C?.(a)},A:Eb,l:rb});q(10===X.length);k.requestAnimationFrame=Ac;k.pauseMainLoop=function(){Z=null;Dc++};k.resumeMainLoop=function(){Dc++;var a=tc,b=uc,c=vc;vc=null;Kc(c);Cc(a,b);Z()};k.preMainLoop&&Ic.push(k.preMainLoop);k.postMainLoop&&Jc.push(k.postMainLoop);k.noExitRuntime&&(Qa=k.noExitRuntime);k.print&&(u=k.print);k.printErr&&(x=k.printErr);k.wasmBinary&&(ka=k.wasmBinary);k.FS_createDataFile=function(){Ga()};
52
+ k.FS_createPreloadedFile=function(){Ga()};Object.getOwnPropertyDescriptor(k,"fetchSettings")&&z("`Module.fetchSettings` was supplied but `fetchSettings` not included in INCOMING_MODULE_JS_API");k.thisProgram&&(ba=k.thisProgram);q("undefined"==typeof k.memoryInitializerPrefixURL,"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead");q("undefined"==typeof k.pthreadMainPrefixURL,"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead");
53
+ q("undefined"==typeof k.cdInitializerPrefixURL,"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead");q("undefined"==typeof k.filePackagePrefixURL,"Module.filePackagePrefixURL option was removed, use Module.locateFile instead");q("undefined"==typeof k.read,"Module.read option was removed");q("undefined"==typeof k.readAsync,"Module.readAsync option was removed (modify readAsync in JS)");q("undefined"==typeof k.readBinary,"Module.readBinary option was removed (modify readBinary in JS)");
54
+ q("undefined"==typeof k.setWindowTitle,"Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)");q("undefined"==typeof k.TOTAL_MEMORY,"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY");q("undefined"==typeof k.ENVIRONMENT,"Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)");q("undefined"==typeof k.STACK_SIZE,"STACK_SIZE can no longer be set at runtime. Use -sSTACK_SIZE at link time");
55
+ q("undefined"==typeof k.wasmMemory,"Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally");q("undefined"==typeof k.INITIAL_MEMORY,"Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically");if(k.preInit)for("function"==typeof k.preInit&&(k.preInit=[k.preInit]);0<k.preInit.length;)k.preInit.shift()();ra("preInit");"writeI53ToI64 writeI53ToI64Clamped writeI53ToI64Signaling writeI53ToU64Clamped writeI53ToU64Signaling readI53FromI64 readI53FromU64 convertI32PairToI53 convertI32PairToI53Checked convertU32PairToI53 getTempRet0 setTempRet0 zeroMemory withStackSave strError inetPton4 inetNtop4 inetPton6 inetNtop6 readSockaddr writeSockaddr readEmAsmArgs jstoi_q autoResumeAudioContext getDynCaller dynCall runtimeKeepalivePush runtimeKeepalivePop asyncLoad asmjsMangle mmapAlloc HandleAllocator getNativeTypeSize getUniqueRunDependency addRunDependency removeRunDependency addOnInit addOnPostCtor addOnPreMain addOnExit STACK_SIZE STACK_ALIGN POINTER_SIZE ASSERTIONS ccall cwrap convertJsFunctionToWasm getEmptyTableSlot updateTableMap getFunctionAddress addFunction removeFunction intArrayFromString intArrayToString stringToAscii stringToNewUTF8 stringToUTF8OnStack writeArrayToMemory registerKeyEventCallback maybeCStringToJsString findEventTarget getBoundingClientRect fillMouseEventData registerMouseEventCallback registerWheelEventCallback registerUiEventCallback registerFocusEventCallback fillDeviceOrientationEventData registerDeviceOrientationEventCallback fillDeviceMotionEventData registerDeviceMotionEventCallback screenOrientation fillOrientationChangeEventData registerOrientationChangeEventCallback fillFullscreenChangeEventData registerFullscreenChangeEventCallback JSEvents_requestFullscreen JSEvents_resizeCanvasForFullscreen registerRestoreOldStyle hideEverythingExceptGivenElement restoreHiddenElements setLetterbox softFullscreenResizeWebGLRenderTarget doRequestFullscreen fillPointerlockChangeEventData registerPointerlockChangeEventCallback registerPointerlockErrorEventCallback requestPointerLock fillVisibilityChangeEventData registerVisibilityChangeEventCallback registerTouchEventCallback fillGamepadEventData registerGamepadEventCallback registerBeforeUnloadEventCallback fillBatteryEventData registerBatteryEventCallback setCanvasElementSize getCanvasElementSize jsStackTrace getCallstack convertPCtoSourceLocation wasiRightsToMuslOFlags wasiOFlagsToMuslOFlags initRandomFill randomFill setImmediateWrapped clearImmediateWrapped registerPostMainLoop registerPreMainLoop getPromise makePromise idsToPromises makePromiseCallback Browser_asyncPrepareDataCounter isLeapYear ydayFromDate arraySum addDays getSocketFromFD getSocketAddress heapObjectForWebGLType toTypedArrayIndex webgl_enable_ANGLE_instanced_arrays webgl_enable_OES_vertex_array_object webgl_enable_WEBGL_draw_buffers webgl_enable_WEBGL_multi_draw webgl_enable_EXT_polygon_offset_clamp webgl_enable_EXT_clip_control webgl_enable_WEBGL_polygon_mode emscriptenWebGLGet computeUnpackAlignedImageSize colorChannelsInGlTextureFormat emscriptenWebGLGetTexPixelData emscriptenWebGLGetUniform webglGetUniformLocation webglPrepareUniformLocationsBeforeFirstUse webglGetLeftBracePos emscriptenWebGLGetVertexAttrib __glGetActiveAttribOrUniform writeGLArray registerWebGlEventCallback runAndAbortIfError ALLOC_NORMAL ALLOC_STACK allocate writeStringToMemory writeAsciiToMemory demangle stackTrace getFunctionArgsName createJsInvoker PureVirtualError registerInheritedInstance unregisterInheritedInstance getInheritedInstanceCount getLiveInheritedInstances enumReadValueFromPointer setDelayFunction count_emval_handles".split(" ").forEach(function(a){sa(a)});
56
+ "run out err callMain abort wasmMemory wasmExports HEAPF32 HEAPF64 HEAP8 HEAPU8 HEAP16 HEAPU16 HEAP32 HEAPU32 HEAP64 HEAPU64 writeStackCookie checkStackCookie INT53_MAX INT53_MIN bigintToI53Checked stackSave stackRestore stackAlloc ptrToString exitJS getHeapMax growMemory ENV ERRNO_CODES DNS Protocols Sockets timers warnOnce readEmAsmArgsArray getExecutableName handleException keepRuntimeAlive callUserCallback maybeExit alignMemory wasmTable noExitRuntime addOnPreRun addOnPostRun freeTableIndexes functionsInTableMap setValue getValue PATH PATH_FS UTF8Decoder UTF8ArrayToString UTF8ToString stringToUTF8Array stringToUTF8 lengthBytesUTF8 AsciiToString UTF16Decoder UTF16ToString stringToUTF16 lengthBytesUTF16 UTF32ToString stringToUTF32 lengthBytesUTF32 JSEvents specialHTMLTargets findCanvasEventTarget currentFullscreenStrategy restoreOldWindowedStyle UNWIND_CACHE ExitStatus getEnvStrings checkWasiClock flush_NO_FILESYSTEM safeSetTimeout safeRequestAnimationFrame emSetImmediate emClearImmediate_deps emClearImmediate promiseMap getExceptionMessageCommon getCppExceptionTag getCppExceptionThrownObjectFromWebAssemblyException Browser requestFullscreen requestFullScreen setCanvasSize getUserMedia createContext getPreloadedImageData__data wget MONTH_DAYS_REGULAR MONTH_DAYS_LEAP MONTH_DAYS_REGULAR_CUMULATIVE MONTH_DAYS_LEAP_CUMULATIVE SYSCALLS tempFixedLengthArray miniTempWebGLFloatBuffers miniTempWebGLIntBuffers GL AL GLUT EGL GLEW IDBStore SDL SDL_gfx allocateUTF8 allocateUTF8OnStack print printErr jstoi_s DOTNETENTROPY InternalError BindingError throwInternalError throwBindingError registeredTypes awaitingDependencies typeDependencies tupleRegistrations structRegistrations sharedRegisterType whenDependentTypesAreResolved getTypeName getFunctionName heap32VectorToArray requireRegisteredType usesDestructorStack createJsInvokerSignature checkArgCount getRequiredArgCount UnboundTypeError InvokerFunctions EmValType EmValOptionalType throwUnboundTypeError ensureOverloadTable exposePublicSymbol replacePublicSymbol createNamedFunction embindRepr registeredInstances getBasestPointer getInheritedInstance registeredPointers registerType integerReadValueFromPointer floatReadValueFromPointer assertIntegerRange readPointer runDestructors craftInvokerFunction embind__requireFunction genericPointerToWireType constNoSmartPtrRawPointerToWireType nonConstNoSmartPtrRawPointerToWireType init_RegisteredPointer RegisteredPointer RegisteredPointer_fromWireType runDestructor releaseClassHandle finalizationRegistry detachFinalizer_deps detachFinalizer attachFinalizer makeClassHandle init_ClassHandle ClassHandle throwInstanceAlreadyDeleted deletionQueue flushPendingDeletes delayFunction RegisteredClass shallowCopyInternalPointer downcastPointer upcastPointer validateThis char_0 char_9 makeLegalFunctionName emval_freelist emval_handles emval_symbols getStringOrSymbol Emval emval_returnValue emval_lookupTypes emval_methodCallers emval_addMethodCaller".split(" ").forEach(sa);
57
+ k.getExceptionMessage=ab;k.incrementExceptionRefcount=a=>{a=Wa(a);Sc(a)};k.decrementExceptionRefcount=a=>{a=Wa(a);Tc(a)};
58
+ var M=E("_free"),Uc=E("_malloc"),Vc=E("_fflush"),Lb=E("___getTypeName"),na=E("_emscripten_stack_get_end"),Fa=E("___trap"),Wc=E("_emscripten_stack_init"),$a=E("__emscripten_stack_restore"),Ya=E("__emscripten_stack_alloc"),Xa=E("_emscripten_stack_get_current"),Tc=E("___cxa_decrement_exception_refcount"),Sc=E("___cxa_increment_exception_refcount"),Va=E("___thrown_object_from_unwind_exception"),Za=E("___get_exception_message"),Ua,Xc={RhpGetBiasedWasmFunctionIndexForFunctionPointer:function(a){a=Ib.get(a);
59
+ a=parseInt(a.name)+2;isNaN(a)&&(a=0);return a},RhpGetCurrentBrowserThreadStackTrace:function(a,b,c){const d=(a=0===b)?Error().stack:k.S;let e=0;var f="";for(let l=0,p;l<d.length;l=p+1){p=d.indexOf("\n",l);0>p&&(p=d.length);const n=d.slice(l,p);var g=n.indexOf("wasm-function[");if(!(0>g&&0===e))if(0<=g&&n.endsWith(f,g)&&!c){0===e&&(f=n.lastIndexOf("//",g),0>f&&(f=0),f=n.slice(f,g));if(!a){var h=0;let r=0;g+=14;let t=n.indexOf("]",g);0<=t&&(h=parseInt(n.slice(g,t),10)+2,!isNaN(h)&&n.startsWith("]:0x",
60
+ t)&&(r=parseInt(n.slice(t+4),16)));H[b>>>2]=h;b+=4;H[b>>>2]=r;b+=4}e+=2}else{g=2*n.length+3>>2;if(!a){H[b>>>2]=-n.length;b+=4;for(h=0;h<n.length;h++)xa[(b>>>1)+h]=n.charCodeAt(h);b+=4*g}e+=1+g}}k.S=a?d:null;return e},__assert_fail:(a,b,c,d)=>z(`Assertion failed: ${L(a)}, at: `+[b?L(b):"unknown filename",c,d?L(d):"unknown function"]),__syscall_fadvise64:()=>0,__syscall_fcntl64:function(){return 0},__syscall_fstat64:()=>{z("it should not be possible to operate on streams when !SYSCALLS_REQUIRE_FILESYSTEM")},
61
+ __syscall_getcwd:()=>{z("it should not be possible to operate on streams when !SYSCALLS_REQUIRE_FILESYSTEM")},__syscall_lstat64:()=>{z("it should not be possible to operate on streams when !SYSCALLS_REQUIRE_FILESYSTEM")},__syscall_newfstatat:()=>{z("it should not be possible to operate on streams when !SYSCALLS_REQUIRE_FILESYSTEM")},__syscall_openat:function(){z("it should not be possible to operate on streams when !SYSCALLS_REQUIRE_FILESYSTEM")},__syscall_stat64:()=>{z("it should not be possible to operate on streams when !SYSCALLS_REQUIRE_FILESYSTEM")},
62
+ __syscall_unlinkat:()=>{z("it should not be possible to operate on streams when !SYSCALLS_REQUIRE_FILESYSTEM")},__throw_exception_with_stack_trace:a=>{a=new WebAssembly.Exception(Ua,[a],{traceStack:!0});a.message=ab(a);throw a;},_abort_js:()=>z("native code called abort()"),_embind_register_bigint:(a,b,c,d,e)=>{b=O(b);const f=0n===d;let g=h=>h;if(f){const h=8*c;g=l=>BigInt.asUintN(h,l);e=g(e)}S(a,{name:b,l:g,s:(h,l)=>{if("number"==typeof l)l=BigInt(l);else if("bigint"!=typeof l)throw new TypeError(`Cannot convert "${U(l)}" to ${this.name}`);
63
+ gb(b,l,d,e);return l},A:fb(b,c,!f),u:null})},_embind_register_bool:(a,b,c,d)=>{b=O(b);S(a,{name:b,l:function(e){return!!e},s:function(e,f){return f?c:d},A:function(e){return this.l(F[e])},u:null})},_embind_register_class:(a,b,c,d,e,f,g,h,l,p,n,r,t)=>{n=O(n);f=V(e,f);h&&=V(g,h);p&&=V(l,p);t=V(r,t);var v=xb(n);wb(v,function(){Nb(`Cannot construct ${n} due to unbound types`,[d])});W([a,b,c],d?[d]:[],w=>{w=w[0];if(d){var B=w.h;var G=B.F}else G=tb.prototype;w=ub(n,function(...eb){if(Object.getPrototypeOf(this)!==
64
+ T)throw new R(`Use 'new' to construct ${n}`);if(void 0===D.D)throw new R(`${n} has no accessible constructor`);var ic=D.D[eb.length];if(void 0===ic)throw new R(`Tried to invoke ctor of ${n} with invalid number of parameters (${eb.length}) - expected (${Object.keys(D.D).toString()}) parameters instead!`);return ic.apply(this,eb)});var T=Object.create(G,{constructor:{value:w}});w.prototype=T;var D=new yb(n,w,T,t,B,f,h,p);if(D.o){var N;(N=D.o).J??(N.J=[]);D.o.J.push(D)}B=new Fb(n,D,!0,!1,!1);N=new Fb(n+
65
+ "*",D,!1,!1,!1);G=new Fb(n+" const*",D,!1,!0,!1);lb[a]={pointerType:N,T:G};Gb(v,w);return[B,N,G]})},_embind_register_class_class_function:(a,b,c,d,e,f,g,h)=>{var l=Sb(c,d);b=O(b);b=Tb(b);f=V(e,f,h);W([],[a],p=>{function n(){Nb(`Cannot call ${r} due to unbound types`,l)}p=p[0];var r=`${p.name}.${b}`;b.startsWith("@@")&&(b=Symbol[b.substring(2)]);var t=p.h.constructor;void 0===t[b]?(n.K=c-1,t[b]=n):(vb(t,b,r),t[b].B[c-1]=n);W([],l,v=>{v=[v[0],null].concat(v.slice(1));v=Rb(r,v,f,g,h);void 0===t[b].B?
66
+ (v.K=c-1,t[b]=v):t[b].B[c-1]=v;if(p.h.J)for(const w of p.h.J)w.constructor.hasOwnProperty(b)||(w.constructor[b]=v);return[]});return[]})},_embind_register_class_constructor:(a,b,c,d,e,f)=>{q(0<b);var g=Sb(b,c);e=V(d,e);W([],[a],h=>{h=h[0];var l=`constructor ${h.name}`;void 0===h.h.D&&(h.h.D=[]);if(void 0!==h.h.D[b-1])throw new R(`Cannot register multiple constructors with identical number of parameters (${b-1}) for class '${h.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);
67
+ h.h.D[b-1]=()=>{Nb(`Cannot construct ${h.name} due to unbound types`,g)};W([],g,p=>{p.splice(1,0,null);h.h.D[b-1]=Rb(l,p,e,f);return[]});return[]})},_embind_register_class_property:(a,b,c,d,e,f,g,h,l,p)=>{b=O(b);e=V(d,e);W([],[a],n=>{n=n[0];var r=`${n.name}.${b}`,t={get(){Nb(`Cannot access ${r} due to unbound types`,[c,g])},enumerable:!0,configurable:!0};t.set=l?()=>Nb(`Cannot access ${r} due to unbound types`,[c,g]):()=>{throw new R(r+" is a read-only property");};Object.defineProperty(n.h.F,b,t);
68
+ W([],l?[c,g]:[c],v=>{var w=v[0],B={get(){var T=Ub(this,n,r+" getter");return w.l(e(f,T))},enumerable:!0};if(l){l=V(h,l);var G=v[1];B.set=function(T){var D=Ub(this,n,r+" setter"),N=[];l(p,D,G.s(N,T));Ob(N)}}Object.defineProperty(n.h.F,b,B);return[]});return[]})},_embind_register_emval:a=>S(a,Yb),_embind_register_float:(a,b,c)=>{b=O(b);S(a,{name:b,l:d=>d,s:(d,e)=>{if("number"!=typeof e&&"boolean"!=typeof e)throw new TypeError(`Cannot convert ${U(e)} to ${this.name}`);return e},A:Zb(b,c),u:null})},_embind_register_integer:(a,
69
+ b,c,d,e)=>{b=O(b);let f=h=>h;if(0===d){var g=32-8*c;f=h=>h<<g>>>g;e=f(e)}S(a,{name:b,l:f,s:(h,l)=>{if("number"!=typeof l&&"boolean"!=typeof l)throw new TypeError(`Cannot convert "${U(l)}" to ${b}`);gb(b,l,d,e);return l},A:fb(b,c,0!==d),u:null})},_embind_register_memory_view:(a,b,c)=>{function d(f){return new e(wa.buffer,A[f+4>>2],A[f>>2])}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][b];c=O(c);S(a,{name:c,l:d,A:d},
70
+ {X:!0})},_embind_register_optional:a=>{S(a,$b)},_embind_register_std_string:(a,b)=>{b=O(b);S(a,{name:b,l(c){var d=L(c+4,A[c>>2],!0);M(c);return d},s(c,d){d instanceof ArrayBuffer&&(d=new Uint8Array(d));var e="string"==typeof d;if(!(e||ArrayBuffer.isView(d)&&1==d.BYTES_PER_ELEMENT))throw new R("Cannot pass non-string to std::string");var f=e?ac(d):d.length;var g=Uc(4+f+1),h=g+4;A[g>>2]=f;e?Y(d,h,f+1):F.set(d,h);null!==c&&c.push(M,g);return g},A:Eb,u(c){M(c)}})},_embind_register_std_wstring:(a,b,c)=>
71
+ {c=O(c);if(2===b){var d=cc;var e=dc;var f=ec}else q(4===b,"only 2-byte and 4-byte strings are currently supported"),d=fc,e=gc,f=hc;S(a,{name:c,l:g=>{var h=d(g+4,A[g>>2]*b,!0);M(g);return h},s:(g,h)=>{if("string"!=typeof h)throw new R(`Cannot pass non-string to C++ string type ${c}`);var l=f(h),p=Uc(4+l+b);A[p>>2]=l/b;e(h,p+4,l+b);null!==g&&g.push(M,p);return p},A:Eb,u(g){M(g)}})},_embind_register_void:(a,b)=>{b=O(b);S(a,{Y:!0,name:b,l:()=>{},s:()=>{}})},_emval_create_invoker:(a,b,c)=>{var [d,...e]=
72
+ lc(a,b),f=d.s.bind(d),g=e.map(l=>l.A.bind(l));a--;var h=Array(a);b=`methodCaller<(${e.map(l=>l.name)}) => ${d.name}>`;return kc(ub(b,(l,p,n,r)=>{for(var t=0,v=0;v<a;++v)h[v]=g[v](r+t),t+=8;switch(c){case 0:var w=Xb(l).apply(null,h);break;case 2:w=Reflect.construct(Xb(l),h);break;case 3:w=h[0];break;case 1:w=B;r=mc[p];p=w[void 0===r?O(p):r];var B;Xb(l);w=p.call(w,...h)}l=[];p=f(l,w);l.length&&(A[n>>2]=Cb(l));return p}))},_emval_invoke:(a,b,c,d,e)=>jc[a](b,c,d,e),_emval_run_destructors:a=>{var b=Xb(a);
73
+ Ob(b);Wb(a)},_tzset_js:(a,b,c,d)=>{var e=(new Date).getFullYear(),f=(new Date(e,0,1)).getTimezoneOffset();e=(new Date(e,6,1)).getTimezoneOffset();A[a>>2]=60*Math.max(f,e);H[b>>2]=Number(f!=e);b=g=>{var h=Math.abs(g);return`UTC${0<=g?"-":"+"}${String(Math.floor(h/60)).padStart(2,"0")}${String(h%60).padStart(2,"0")}`};a=b(f);b=b(e);q(a);q(b);q(16>=ac(a),`timezone name truncated to fit in TZNAME_MAX (${a})`);q(16>=ac(b),`timezone name truncated to fit in TZNAME_MAX (${b})`);e<f?(Y(a,c,17),Y(b,d,17)):
74
+ (Y(a,d,17),Y(b,c,17))},clock_time_get:function(a,b,c){if(!(0<=a&&3>=a))return 28;Ba[c>>3]=BigInt(Math.round(1E6*(0===a?Date.now():performance.now())));return 0},emscripten_async_call:(a,b,c)=>{sc(()=>Jb(a)(b),c)},emscripten_date_now:()=>Date.now(),emscripten_get_heap_max:()=>2147483648,emscripten_get_now:()=>performance.now(),emscripten_resize_heap:a=>{var b=F.length;a>>>=0;q(a>b);if(2147483648<a)return x(`Cannot enlarge memory, requested ${a} bytes, but the limit is ${2147483648} bytes!`),!1;for(var c=
75
+ 1;4>=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);var e=Math,f=e.min;d=Math.max(a,d);q(65536,"alignment argument is required");e=f.call(e,2147483648,65536*Math.ceil(d/65536));a:{f=e;d=va.buffer.byteLength;try{va.grow((f-d+65535)/65536|0);Ea();var g=1;break a}catch(h){x(`growMemory: Attempted to grow heap from ${d} bytes to ${f} bytes, but got error: ${h}`)}g=void 0}if(g)return!0}x(`Failed to grow the heap from ${b} bytes to ${e} bytes, not enough memory!`);return!1},environ_get:(a,b)=>{var c=
76
+ 0,d=0,e;for(e of Oc()){var f=b+c;A[a+d>>2]=f;c+=Y(e,f,Infinity)+1;d+=4}return 0},environ_sizes_get:(a,b)=>{var c=Oc();A[a>>2]=c.length;a=0;for(var d of c)a+=ac(d)+1;A[b>>2]=a;return 0},exit:pc,fd_close:()=>{z("fd_close called without SYSCALLS_REQUIRE_FILESYSTEM")},fd_pwrite:function(){z("fd_pwrite called without SYSCALLS_REQUIRE_FILESYSTEM")},fd_read:()=>{z("fd_read called without SYSCALLS_REQUIRE_FILESYSTEM")},fd_seek:function(){return 70},fd_write:(a,b,c,d)=>{for(var e=0,f=0;f<c;f++){var g=A[b>>
77
+ 2],h=A[b+4>>2];b+=8;for(var l=0;l<h;l++)Qc(a,F[g+l]);e+=h}A[d>>2]=e;return 0},mono_wasm_browser_entropy:function(a,b){let c="object"===typeof crypto&&"function"===typeof crypto.getRandomValues;if(!c&&(globalThis.crypto||(globalThis.crypto={}),!globalThis.crypto.getRandomValues)){let d=void 0;try{d=require("node:crypto")}catch{}d?d.fa?globalThis.crypto=d.fa:d.aa&&(globalThis.crypto.getRandomValues=function(e){e&&e.set(d.aa(e.length))}):globalThis.crypto.getRandomValues=function(){throw Error("Using node without crypto support. To enable current operation, either provide polyfill for 'globalThis.crypto.getRandomValues' or enable 'node:crypto' module.");
78
+ };c=!0}return c?(Rc(a,b),0):-1}},Yc;function oc(){var a=u,b=x,c=!1;u=x=()=>{c=!0};try{Vc(0),Pc[1].length&&Qc(1,10),Pc[2].length&&Qc(2,10)}catch(d){}u=a;x=b;c&&(K("stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the Emscripten FAQ), or make sure to emit a newline when you printf etc."),K("(this may also be due to not including full filesystem support - try building with -sFORCE_FILESYSTEM)"))}var J;
79
+ J=await (async function(){function a(d){J=d.exports;va=J.memory;q(va,"memory not found in wasm exports");Ea();Ib=J.__indirect_function_table;q(Ib,"table not found in wasm exports");Ua=J.__cpp_exception;d=J;M=I("free",1);Uc=I("malloc",1);Vc=I("fflush",1);Lb=I("__getTypeName",1);na=d.emscripten_stack_get_end;Fa=d.__trap;Wc=d.emscripten_stack_init;$a=d._emscripten_stack_restore;Ya=d._emscripten_stack_alloc;Xa=d.emscripten_stack_get_current;Tc=I("__cxa_decrement_exception_refcount",1);Sc=I("__cxa_increment_exception_refcount",
80
+ 1);Va=I("__thrown_object_from_unwind_exception",1);Za=I("__get_exception_message",3);return J}var b=k,c={env:Xc,wasi_snapshot_preview1:Xc};if(k.instantiateWasm)return new Promise((d,e)=>{try{k.instantiateWasm(c,(f,g)=>{d(a(f,g))})}catch(f){x(`Module.instantiateWasm callback failed with error: ${f}`),e(f)}});Ha??=k.locateFile?k.locateFile?k.locateFile("bindings.wasm",ea):ea+"bindings.wasm":(new URL("bindings.wasm",import.meta.url)).href;return function(d){q(k===b,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?");
81
+ b=null;return a(d.instance)}(await Ka(c))}());
82
+ (function(){function a(){q(!Yc);Yc=!0;k.calledRun=!0;if(!y){q(!Da);Da=!0;oa();J.__wasm_call_ctors();ta?.(k);k.onRuntimeInitialized?.();ra("onRuntimeInitialized");q(!k._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]');oa();if(k.postRun)for("function"==typeof k.postRun&&(k.postRun=[k.postRun]);k.postRun.length;){var b=k.postRun.shift();Na.push(b)}ra("postRun");Ma(Na)}}Wc();ma();if(k.preRun)for("function"==typeof k.preRun&&(k.preRun=[k.preRun]);k.preRun.length;)Pa();
83
+ ra("preRun");Ma(Oa);k.setStatus?(k.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>k.setStatus(""),1);a()},1)):a();oa()})();Da?moduleRtn=k:moduleRtn=new Promise((a,b)=>{ta=a;ua=b});for(const a of Object.keys(k))a in moduleArg||Object.defineProperty(moduleArg,a,{configurable:!0,get(){z(`Access to module property ('${a}') is no longer possible via the module constructor argument; Instead, use the result of the module constructor.`)}});
84
+ ;return moduleRtn}export default Module;
Binary file
@@ -0,0 +1,56 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _usingCtx2 = require('@babel/runtime-corejs3/helpers/usingCtx');
6
+ var _Object$freeze = require('core-js-pure/features/object/freeze.js');
7
+ var _DisposableStack = require('core-js-pure/features/disposable-stack/index.js');
8
+ require('process');
9
+
10
+ const ShaderType = _Object$freeze({
11
+ VERTEX: 0,
12
+ FRAGMENT: 1
13
+ });
14
+ const bindings = import('#bindings').then(module => module.default());
15
+ let {
16
+ Validator,
17
+ Optimizer,
18
+ Minifier
19
+ } = {};
20
+ function validate(disposer, ...args) {
21
+ const {
22
+ error
23
+ } = disposer.use(new Validator(...args));
24
+ if (error) {
25
+ throw new Error(error);
26
+ }
27
+ }
28
+ async function compress(shaderType, shaderSource) {
29
+ try {
30
+ var _usingCtx = _usingCtx2();
31
+ ({
32
+ Validator,
33
+ Optimizer,
34
+ Minifier
35
+ } = await bindings);
36
+ const disposer = _usingCtx.u(new _DisposableStack());
37
+ validate(disposer, shaderType, shaderSource);
38
+ const {
39
+ result: optimizedCode
40
+ } = disposer.use(new Optimizer(shaderType, shaderSource));
41
+ validate(disposer, shaderType, optimizedCode);
42
+ const {
43
+ result: minifiedCode = ''
44
+ } = disposer.use(new Minifier(optimizedCode));
45
+ validate(disposer, shaderType, minifiedCode);
46
+ return minifiedCode;
47
+ } catch (_) {
48
+ _usingCtx.e = _;
49
+ } finally {
50
+ _usingCtx.d();
51
+ }
52
+ }
53
+
54
+ exports.ShaderType = ShaderType;
55
+ exports.default = compress;
56
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY2pzIiwic291cmNlcyI6WyIuLi9zb3VyY2VzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwcm9jZXNzIGZyb20gJ3Byb2Nlc3MnXG5cbmV4cG9ydCB0eXBlIFNoYWRlclR5cGUgPSAodHlwZW9mIFNoYWRlclR5cGUpW2tleW9mIHR5cGVvZiBTaGFkZXJUeXBlXVxuXG5leHBvcnQgY29uc3QgU2hhZGVyVHlwZSA9IE9iamVjdC5mcmVlemUoe1xuXHRWRVJURVg6IDAsXG5cdEZSQUdNRU5UOiAxLFxufSlcblxuY29uc3QgYmluZGluZ3MgPSBpbXBvcnQoJyNiaW5kaW5ncycpLnRoZW4obW9kdWxlID0+IG1vZHVsZS5kZWZhdWx0KCkpXG5sZXQgeyBWYWxpZGF0b3IsIE9wdGltaXplciwgTWluaWZpZXIgfSA9IHt9IGFzIEF3YWl0ZWQ8dHlwZW9mIGJpbmRpbmdzPlxuY29uc3QgaXNWYWxpZGF0b3JJbml0aWFsaXplZCA9IGZhbHNlXG5cbmZ1bmN0aW9uIHZhbGlkYXRlKGRpc3Bvc2VyOiBEaXNwb3NhYmxlU3RhY2ssIC4uLmFyZ3M6IENvbnN0cnVjdG9yUGFyYW1ldGVyczx0eXBlb2YgVmFsaWRhdG9yPik6IHZvaWQge1xuXHRpZiAoaXNWYWxpZGF0b3JJbml0aWFsaXplZCkge1xuXHRcdFZhbGlkYXRvci5pbml0aWFsaXplKClcblxuXHRcdHByb2Nlc3Mub25jZSgnYmVmb3JlRXhpdCcsICgpID0+IHtcblx0XHRcdFZhbGlkYXRvci5maW5hbGl6ZSgpXG5cdFx0fSlcblx0fVxuXG5cdGNvbnN0IHsgZXJyb3IgfSA9IGRpc3Bvc2VyLnVzZShcblx0XHRuZXcgVmFsaWRhdG9yKC4uLmFyZ3MpLFxuXHQpXG5cblx0aWYgKGVycm9yKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKGVycm9yIGFzIHN0cmluZylcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBjb21wcmVzcyhzaGFkZXJUeXBlOiBTaGFkZXJUeXBlLCBzaGFkZXJTb3VyY2U6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG5cdCh7IFZhbGlkYXRvciwgT3B0aW1pemVyLCBNaW5pZmllciB9ID0gYXdhaXQgYmluZGluZ3MpXG5cdHVzaW5nIGRpc3Bvc2VyID0gbmV3IERpc3Bvc2FibGVTdGFjaygpXG5cblx0dmFsaWRhdGUoZGlzcG9zZXIsIHNoYWRlclR5cGUsIHNoYWRlclNvdXJjZSlcblxuXHRjb25zdCB7IHJlc3VsdDogb3B0aW1pemVkQ29kZSB9ID0gZGlzcG9zZXIudXNlKFxuXHRcdG5ldyBPcHRpbWl6ZXIoc2hhZGVyVHlwZSwgc2hhZGVyU291cmNlKSxcblx0KVxuXG5cdHZhbGlkYXRlKGRpc3Bvc2VyLCBzaGFkZXJUeXBlLCBvcHRpbWl6ZWRDb2RlKVxuXG5cdGNvbnN0IHsgcmVzdWx0OiBtaW5pZmllZENvZGUgPSAnJyB9ID0gZGlzcG9zZXIudXNlKFxuXHRcdG5ldyBNaW5pZmllcihvcHRpbWl6ZWRDb2RlKSxcblx0KVxuXG5cdHZhbGlkYXRlKGRpc3Bvc2VyLCBzaGFkZXJUeXBlLCBtaW5pZmllZENvZGUpXG5cblx0cmV0dXJuIG1pbmlmaWVkQ29kZSBhcyBzdHJpbmdcbn1cbiJdLCJuYW1lcyI6WyJTaGFkZXJUeXBlIiwiX09iamVjdCRmcmVlemUiLCJWRVJURVgiLCJGUkFHTUVOVCIsImJpbmRpbmdzIiwidGhlbiIsIm1vZHVsZSIsImRlZmF1bHQiLCJWYWxpZGF0b3IiLCJPcHRpbWl6ZXIiLCJNaW5pZmllciIsInZhbGlkYXRlIiwiZGlzcG9zZXIiLCJhcmdzIiwiZXJyb3IiLCJ1c2UiLCJFcnJvciIsImNvbXByZXNzIiwic2hhZGVyVHlwZSIsInNoYWRlclNvdXJjZSIsIl91c2luZ0N0eCIsIl91c2luZ0N0eDIiLCJ1IiwiX0Rpc3Bvc2FibGVTdGFjayIsInJlc3VsdCIsIm9wdGltaXplZENvZGUiLCJtaW5pZmllZENvZGUiLCJfIiwiZSIsImQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUlPLE1BQU1BLFVBQVUsR0FBR0MsY0FBQSxDQUFjO0FBQ3ZDQyxFQUFBQSxNQUFNLEVBQUUsQ0FBQztBQUNUQyxFQUFBQSxRQUFRLEVBQUU7QUFDWCxDQUFDO0FBRUQsTUFBTUMsUUFBUSxHQUFHLE9BQU8sV0FBVyxDQUFDLENBQUNDLElBQUksQ0FBQ0MsTUFBTSxJQUFJQSxNQUFNLENBQUNDLE9BQU8sRUFBRSxDQUFDO0FBQ3JFLElBQUk7RUFBRUMsU0FBUztFQUFFQyxTQUFTO0FBQUVDLEVBQUFBO0FBQVMsQ0FBQyxHQUFHLEVBQThCO0FBR3ZFLFNBQVNDLFFBQVFBLENBQUNDLFFBQXlCLEVBQUUsR0FBR0MsSUFBNkMsRUFBUTtFQVNwRyxNQUFNO0FBQUVDLElBQUFBO0dBQU8sR0FBR0YsUUFBUSxDQUFDRyxHQUFHLENBQzdCLElBQUlQLFNBQVMsQ0FBQyxHQUFHSyxJQUFJLENBQ3RCLENBQUM7QUFFRCxFQUFBLElBQUlDLEtBQUssRUFBRTtBQUNWLElBQUEsTUFBTSxJQUFJRSxLQUFLLENBQUNGLEtBQWUsQ0FBQztBQUNqQyxFQUFBO0FBQ0Q7QUFFZSxlQUFlRyxRQUFRQSxDQUFDQyxVQUFzQixFQUFFQyxZQUFvQixFQUFBO0FBQW1CLEVBQUEsSUFBQTtJQUFBLElBQUFDLFNBQUEsR0FBQUMsVUFBQSxFQUFBO0lBQ3JHLENBQUM7TUFBRWIsU0FBUztNQUFFQyxTQUFTO0FBQUVDLE1BQUFBO0tBQVUsR0FBRyxNQUFNTixRQUFRO0lBQ3BELE1BQU1RLFFBQVEsR0FBQVEsU0FBQSxDQUFBRSxDQUFBLENBQUcsSUFBQUMsZ0JBQUEsRUFBcUIsQ0FBQTtBQUV0Q1osSUFBQUEsUUFBUSxDQUFDQyxRQUFRLEVBQUVNLFVBQVUsRUFBRUMsWUFBWSxDQUFDO0lBRTVDLE1BQU07QUFBRUssTUFBQUEsTUFBTSxFQUFFQztBQUFjLEtBQUMsR0FBR2IsUUFBUSxDQUFDRyxHQUFHLENBQzdDLElBQUlOLFNBQVMsQ0FBQ1MsVUFBVSxFQUFFQyxZQUFZLENBQ3ZDLENBQUM7QUFFRFIsSUFBQUEsUUFBUSxDQUFDQyxRQUFRLEVBQUVNLFVBQVUsRUFBRU8sYUFBYSxDQUFDO0lBRTdDLE1BQU07TUFBRUQsTUFBTSxFQUFFRSxZQUFZLEdBQUc7S0FBSSxHQUFHZCxRQUFRLENBQUNHLEdBQUcsQ0FDakQsSUFBSUwsUUFBUSxDQUFDZSxhQUFhLENBQzNCLENBQUM7QUFFRGQsSUFBQUEsUUFBUSxDQUFDQyxRQUFRLEVBQUVNLFVBQVUsRUFBRVEsWUFBWSxDQUFDO0FBRTVDLElBQUEsT0FBT0EsWUFBWTtBQUFVLEVBQUEsQ0FBQSxDQUFBLE9BQUFDLENBQUEsRUFBQTtJQUFBUCxTQUFBLENBQUFRLENBQUEsR0FBQUQsQ0FBQTtBQUFBLEVBQUEsQ0FBQSxTQUFBO0FBQUFQLElBQUFBLFNBQUEsQ0FBQVMsQ0FBQSxFQUFBO0FBQUEsRUFBQTtBQUM3Qjs7Ozs7In0=
@@ -0,0 +1,11 @@
1
+ declare function compress(shaderType: ShaderType, shaderSource: string): Promise<string>;
2
+ export default compress;
3
+
4
+ export declare type ShaderType = (typeof ShaderType)[keyof typeof ShaderType];
5
+
6
+ export declare const ShaderType: Readonly<{
7
+ VERTEX: 0;
8
+ FRAGMENT: 1;
9
+ }>;
10
+
11
+ export { }
@@ -0,0 +1,11 @@
1
+ declare function compress(shaderType: ShaderType, shaderSource: string): Promise<string>;
2
+ export default compress;
3
+
4
+ export declare type ShaderType = (typeof ShaderType)[keyof typeof ShaderType];
5
+
6
+ export declare const ShaderType: Readonly<{
7
+ VERTEX: 0;
8
+ FRAGMENT: 1;
9
+ }>;
10
+
11
+ export { }
package/dists/index.js ADDED
@@ -0,0 +1,51 @@
1
+ import _usingCtx2 from '@babel/runtime-corejs3/helpers/usingCtx';
2
+ import _Object$freeze from 'core-js-pure/features/object/freeze.js';
3
+ import _DisposableStack from 'core-js-pure/features/disposable-stack/index.js';
4
+ import 'process';
5
+
6
+ const ShaderType = _Object$freeze({
7
+ VERTEX: 0,
8
+ FRAGMENT: 1
9
+ });
10
+ const bindings = import('#bindings').then(module => module.default());
11
+ let {
12
+ Validator,
13
+ Optimizer,
14
+ Minifier
15
+ } = {};
16
+ function validate(disposer, ...args) {
17
+ const {
18
+ error
19
+ } = disposer.use(new Validator(...args));
20
+ if (error) {
21
+ throw new Error(error);
22
+ }
23
+ }
24
+ async function compress(shaderType, shaderSource) {
25
+ try {
26
+ var _usingCtx = _usingCtx2();
27
+ ({
28
+ Validator,
29
+ Optimizer,
30
+ Minifier
31
+ } = await bindings);
32
+ const disposer = _usingCtx.u(new _DisposableStack());
33
+ validate(disposer, shaderType, shaderSource);
34
+ const {
35
+ result: optimizedCode
36
+ } = disposer.use(new Optimizer(shaderType, shaderSource));
37
+ validate(disposer, shaderType, optimizedCode);
38
+ const {
39
+ result: minifiedCode = ''
40
+ } = disposer.use(new Minifier(optimizedCode));
41
+ validate(disposer, shaderType, minifiedCode);
42
+ return minifiedCode;
43
+ } catch (_) {
44
+ _usingCtx.e = _;
45
+ } finally {
46
+ _usingCtx.d();
47
+ }
48
+ }
49
+
50
+ export { ShaderType, compress as default };
51
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZXMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHByb2Nlc3MgZnJvbSAncHJvY2VzcydcblxuZXhwb3J0IHR5cGUgU2hhZGVyVHlwZSA9ICh0eXBlb2YgU2hhZGVyVHlwZSlba2V5b2YgdHlwZW9mIFNoYWRlclR5cGVdXG5cbmV4cG9ydCBjb25zdCBTaGFkZXJUeXBlID0gT2JqZWN0LmZyZWV6ZSh7XG5cdFZFUlRFWDogMCxcblx0RlJBR01FTlQ6IDEsXG59KVxuXG5jb25zdCBiaW5kaW5ncyA9IGltcG9ydCgnI2JpbmRpbmdzJykudGhlbihtb2R1bGUgPT4gbW9kdWxlLmRlZmF1bHQoKSlcbmxldCB7IFZhbGlkYXRvciwgT3B0aW1pemVyLCBNaW5pZmllciB9ID0ge30gYXMgQXdhaXRlZDx0eXBlb2YgYmluZGluZ3M+XG5jb25zdCBpc1ZhbGlkYXRvckluaXRpYWxpemVkID0gZmFsc2VcblxuZnVuY3Rpb24gdmFsaWRhdGUoZGlzcG9zZXI6IERpc3Bvc2FibGVTdGFjaywgLi4uYXJnczogQ29uc3RydWN0b3JQYXJhbWV0ZXJzPHR5cGVvZiBWYWxpZGF0b3I+KTogdm9pZCB7XG5cdGlmIChpc1ZhbGlkYXRvckluaXRpYWxpemVkKSB7XG5cdFx0VmFsaWRhdG9yLmluaXRpYWxpemUoKVxuXG5cdFx0cHJvY2Vzcy5vbmNlKCdiZWZvcmVFeGl0JywgKCkgPT4ge1xuXHRcdFx0VmFsaWRhdG9yLmZpbmFsaXplKClcblx0XHR9KVxuXHR9XG5cblx0Y29uc3QgeyBlcnJvciB9ID0gZGlzcG9zZXIudXNlKFxuXHRcdG5ldyBWYWxpZGF0b3IoLi4uYXJncyksXG5cdClcblxuXHRpZiAoZXJyb3IpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoZXJyb3IgYXMgc3RyaW5nKVxuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGNvbXByZXNzKHNoYWRlclR5cGU6IFNoYWRlclR5cGUsIHNoYWRlclNvdXJjZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcblx0KHsgVmFsaWRhdG9yLCBPcHRpbWl6ZXIsIE1pbmlmaWVyIH0gPSBhd2FpdCBiaW5kaW5ncylcblx0dXNpbmcgZGlzcG9zZXIgPSBuZXcgRGlzcG9zYWJsZVN0YWNrKClcblxuXHR2YWxpZGF0ZShkaXNwb3Nlciwgc2hhZGVyVHlwZSwgc2hhZGVyU291cmNlKVxuXG5cdGNvbnN0IHsgcmVzdWx0OiBvcHRpbWl6ZWRDb2RlIH0gPSBkaXNwb3Nlci51c2UoXG5cdFx0bmV3IE9wdGltaXplcihzaGFkZXJUeXBlLCBzaGFkZXJTb3VyY2UpLFxuXHQpXG5cblx0dmFsaWRhdGUoZGlzcG9zZXIsIHNoYWRlclR5cGUsIG9wdGltaXplZENvZGUpXG5cblx0Y29uc3QgeyByZXN1bHQ6IG1pbmlmaWVkQ29kZSA9ICcnIH0gPSBkaXNwb3Nlci51c2UoXG5cdFx0bmV3IE1pbmlmaWVyKG9wdGltaXplZENvZGUpLFxuXHQpXG5cblx0dmFsaWRhdGUoZGlzcG9zZXIsIHNoYWRlclR5cGUsIG1pbmlmaWVkQ29kZSlcblxuXHRyZXR1cm4gbWluaWZpZWRDb2RlIGFzIHN0cmluZ1xufVxuIl0sIm5hbWVzIjpbIlNoYWRlclR5cGUiLCJfT2JqZWN0JGZyZWV6ZSIsIlZFUlRFWCIsIkZSQUdNRU5UIiwiYmluZGluZ3MiLCJ0aGVuIiwibW9kdWxlIiwiZGVmYXVsdCIsIlZhbGlkYXRvciIsIk9wdGltaXplciIsIk1pbmlmaWVyIiwidmFsaWRhdGUiLCJkaXNwb3NlciIsImFyZ3MiLCJlcnJvciIsInVzZSIsIkVycm9yIiwiY29tcHJlc3MiLCJzaGFkZXJUeXBlIiwic2hhZGVyU291cmNlIiwiX3VzaW5nQ3R4IiwiX3VzaW5nQ3R4MiIsInUiLCJfRGlzcG9zYWJsZVN0YWNrIiwicmVzdWx0Iiwib3B0aW1pemVkQ29kZSIsIm1pbmlmaWVkQ29kZSIsIl8iLCJlIiwiZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFJTyxNQUFNQSxVQUFVLEdBQUdDLGNBQUEsQ0FBYztBQUN2Q0MsRUFBQUEsTUFBTSxFQUFFLENBQUM7QUFDVEMsRUFBQUEsUUFBUSxFQUFFO0FBQ1gsQ0FBQztBQUVELE1BQU1DLFFBQVEsR0FBRyxPQUFPLFdBQVcsQ0FBQyxDQUFDQyxJQUFJLENBQUNDLE1BQU0sSUFBSUEsTUFBTSxDQUFDQyxPQUFPLEVBQUUsQ0FBQztBQUNyRSxJQUFJO0VBQUVDLFNBQVM7RUFBRUMsU0FBUztBQUFFQyxFQUFBQTtBQUFTLENBQUMsR0FBRyxFQUE4QjtBQUd2RSxTQUFTQyxRQUFRQSxDQUFDQyxRQUF5QixFQUFFLEdBQUdDLElBQTZDLEVBQVE7RUFTcEcsTUFBTTtBQUFFQyxJQUFBQTtHQUFPLEdBQUdGLFFBQVEsQ0FBQ0csR0FBRyxDQUM3QixJQUFJUCxTQUFTLENBQUMsR0FBR0ssSUFBSSxDQUN0QixDQUFDO0FBRUQsRUFBQSxJQUFJQyxLQUFLLEVBQUU7QUFDVixJQUFBLE1BQU0sSUFBSUUsS0FBSyxDQUFDRixLQUFlLENBQUM7QUFDakMsRUFBQTtBQUNEO0FBRWUsZUFBZUcsUUFBUUEsQ0FBQ0MsVUFBc0IsRUFBRUMsWUFBb0IsRUFBQTtBQUFtQixFQUFBLElBQUE7SUFBQSxJQUFBQyxTQUFBLEdBQUFDLFVBQUEsRUFBQTtJQUNyRyxDQUFDO01BQUViLFNBQVM7TUFBRUMsU0FBUztBQUFFQyxNQUFBQTtLQUFVLEdBQUcsTUFBTU4sUUFBUTtJQUNwRCxNQUFNUSxRQUFRLEdBQUFRLFNBQUEsQ0FBQUUsQ0FBQSxDQUFHLElBQUFDLGdCQUFBLEVBQXFCLENBQUE7QUFFdENaLElBQUFBLFFBQVEsQ0FBQ0MsUUFBUSxFQUFFTSxVQUFVLEVBQUVDLFlBQVksQ0FBQztJQUU1QyxNQUFNO0FBQUVLLE1BQUFBLE1BQU0sRUFBRUM7QUFBYyxLQUFDLEdBQUdiLFFBQVEsQ0FBQ0csR0FBRyxDQUM3QyxJQUFJTixTQUFTLENBQUNTLFVBQVUsRUFBRUMsWUFBWSxDQUN2QyxDQUFDO0FBRURSLElBQUFBLFFBQVEsQ0FBQ0MsUUFBUSxFQUFFTSxVQUFVLEVBQUVPLGFBQWEsQ0FBQztJQUU3QyxNQUFNO01BQUVELE1BQU0sRUFBRUUsWUFBWSxHQUFHO0tBQUksR0FBR2QsUUFBUSxDQUFDRyxHQUFHLENBQ2pELElBQUlMLFFBQVEsQ0FBQ2UsYUFBYSxDQUMzQixDQUFDO0FBRURkLElBQUFBLFFBQVEsQ0FBQ0MsUUFBUSxFQUFFTSxVQUFVLEVBQUVRLFlBQVksQ0FBQztBQUU1QyxJQUFBLE9BQU9BLFlBQVk7QUFBVSxFQUFBLENBQUEsQ0FBQSxPQUFBQyxDQUFBLEVBQUE7SUFBQVAsU0FBQSxDQUFBUSxDQUFBLEdBQUFELENBQUE7QUFBQSxFQUFBLENBQUEsU0FBQTtBQUFBUCxJQUFBQSxTQUFBLENBQUFTLENBQUEsRUFBQTtBQUFBLEVBQUE7QUFDN0I7Ozs7In0=
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "@cichol/shader-compressor",
3
+ "version": "5.3.0",
4
+ "description": "A compressor for WebGL2 shader source code. (GLSL ES 3.00)",
5
+ "homepage": "https://github.com/morrighan/packages",
6
+ "bugs": {
7
+ "url": "https://github.com/morrighan/packages/issues"
8
+ },
9
+ "license": "MIT",
10
+ "author": {
11
+ "name": "Yongbin Min",
12
+ "email": "contact@cichol.com",
13
+ "url": "https://www.cichol.com/"
14
+ },
15
+ "type": "module",
16
+ "main": "./dists/index.cjs",
17
+ "module": "./dists/index.js",
18
+ "types": "./dists/index.d.ts",
19
+ "exports": {
20
+ ".": {
21
+ "import": {
22
+ "default": "./dists/index.js",
23
+ "types": "./dists/index.d.ts"
24
+ },
25
+ "require": {
26
+ "default": "./dists/index.cjs",
27
+ "types": "./dists/index.d.cts"
28
+ }
29
+ },
30
+ "./package.json": "./package.json"
31
+ },
32
+ "imports": {
33
+ "#*": [
34
+ "./dists/*.js",
35
+ "./dists/*.d.ts",
36
+ "./dists/*/index.d.js"
37
+ ]
38
+ },
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "git+https://github.com/morrighan/packages.git",
42
+ "directory": "packages/shader-compressor"
43
+ },
44
+ "scripts": {
45
+ "build": "bash scripts/build.sh"
46
+ },
47
+ "engines": {
48
+ "node": "^22.21.1 || ^24.11.1",
49
+ "npm": "^11.6.4"
50
+ },
51
+ "publishConfig": {
52
+ "registry": "https://registry.npmjs.org/",
53
+ "access": "public"
54
+ }
55
+ }