shaderkit 0.1.11 → 0.1.13
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 +2 -2
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/minifier.ts +45 -17
package/README.md
CHANGED
|
@@ -178,8 +178,8 @@ To shared mangled interfaces when using `mangleExternal`, declare and re-use a `
|
|
|
178
178
|
const programOpts = { mangle: true, mangleExternals: true, mangleMap: new Map() }
|
|
179
179
|
|
|
180
180
|
// #version 300 es\nin vec2 a;out vec2 b;void main(){b=a;}
|
|
181
|
-
minify(`#version 300 es\nin vec2
|
|
181
|
+
minify(`#version 300 es\nin vec2 sstt;out vec2 c;void main(){c=sstt;}`, programOpts)
|
|
182
182
|
|
|
183
|
-
// #version 300 es\nin vec2 b;out vec4
|
|
183
|
+
// #version 300 es\nin vec2 b;out vec4 a[gl_MaxDrawBuffers];void main(){a[0]=b.sstt;}
|
|
184
184
|
minify(`#version 300 es\nin vec2 c;out vec4 data[gl_MaxDrawBuffers];void main(){data[0]=c.sstt;}`, programOpts)
|
|
185
185
|
```
|
package/dist/index.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
2
|
-
`;for(;!
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const K=["vec2","vec2i","vec2u","vec2f","vec2h","vec3","vec3i","vec3u","vec3f","vec3h","vec4","vec4i","vec4u","vec4f","vec4h","mat2x2","mat2x2f","mat2x2h","mat2x3","mat2x3f","mat2x3h","mat2x4","mat2x4f","mat2x4h","mat3x2","mat3x2f","mat3x2h","mat3x3","mat3x3f","mat3x3h","mat3x4","mat3x4f","mat3x4h","mat4x2","mat4x2f","mat4x2h","mat4x3","mat4x3f","mat4x3h","mat4x4","mat4x4f","mat4x4h","array","atomic","bool","f32","f16","i32","ptr","sampler","sampler_comparison","texture_1d","texture_2d","texture_2d_array","texture_3d","texture_cube","texture_cube_array","texture_multisampled_2d","texture_storage_1d","texture_storage_2d","texture_storage_2d_array","texture_storage_3d","texture_depth_2d","texture_depth_2d_array","texture_depth_cube","texture_depth_cube_array","texture_depth_multisampled_2d","u32","alias","bitcast","break","case","const","const_assert","continue","continuing","default","discard","else","enable","false","fn","for","if","let","loop","override","return","struct","switch","true","var","while","Hullshader","NULL","Self","abstract","active","alignas","alignof","as","asm","asm_fragment","async","attribute","auto","await","become","bf16","binding_array","cast","catch","class","co_await","co_return","co_yield","coherent","column_major","common","compile","compile_fragment","concept","const_cast","consteval","constexpr","constinit","crate","debugger","decltype","delete","demote","demote_to_helper","do","dynamic_cast","enum","explicit","export","extends","extern","external","f64","fallthrough","filter","final","finally","friend","from","fxgroup","get","goto","groupshared","handle","highp","i16","i64","i8","impl","implements","import","inline","instanceof","interface","layout","lowp","macro","macro_rules","match","mediump","meta","mod","module","move","mut","mutable","namespace","new","nil","noexcept","noinline","nointerpolation","noperspective","null","nullptr","of","operator","package","packoffset","partition","pass","patch","pixelfragment","precise","precision","premerge","priv","protected","pub","public","quat","readonly","ref","regardless","register","reinterpret_cast","requires","resource","restrict","self","set","shared","sizeof","smooth","snorm","static","static_assert","static_cast","std","subroutine","super","target","template","this","thread_local","throw","trait","try","type","typedef","typeid","typename","typeof","u16","u64","u8","union","unless","unorm","unsafe","unsized","use","using","varying","virtual","volatile","wgsl","where","with","writeonly","yield","@align","@binding","@builtin","@compute","@const","@fragment","@group","@id","@interpolate","@invariant","@location","@size","@vertex","@workgroup_size","perspective","linear","flat","center","centroid","sample","vertex_index","instance_index","position","front_facing","frag_depth","local_invocation_id","local_invocation_index","global_invocation_id","workgroup_id","num_workgroups","sample_index","sample_mask","read","write","read_write","function","private","workgroup","uniform","storage","rgba8unorm","rgba8snorm","rgba8uint","rgba8sint","rgba16uint","rgba16sint","rgba16float","r32uint","r32sint","r32float","rg32uint","rg32sint","rg32float","rgba32uint","rgba32sint","rgba32float","bgra8unorm","f16","all","any","select","arrayLength","abs","acos","acosh","asin","asinh","atan","atanh","atan2","ceil","clamp","cos","cosh","countLeadingZeros","countOneBits","countTrailingZeros","cross","degrees","determinant","distance","dot","exp","exp2","extractBits","faceForward","firstLeadingBit","firstTrailingBit","floor","fma","fract","frexp","insertBits","inverseSqrt","ldexp","length","log","log2","max","min","mix","modf","normalize","pow","quantizeToF16","radians","reflect","refract","reverseBits","round","saturate","sign","sin","sinh","smoothstep","sqrt","step","tan","tanh","transpose","trunc","dpdx","dpdxCoarse","dpdxFine","dpdy","dpdyCoarse","dpdyFine","fwidth","fwidthCoarse","fwidthFine","textureDimensions","textureGather","textureGatherCompare","textureLoad","textureNumLayers","textureNumLevels","textureNumSamples","textureSample","textureSampleBias","textureSampleCompare","textureSampleCompareLevel","textureSampleGrad","textureSampleLevel","textureSampleBaseClampToEdge","atomicLoad","atomicStore","atomicAdd","atomicSub","atomicMax","atomicMin","atomicAnd","atomicOr","atomicXor","atomicExchange","atomicCompareExchangeWeak","pack4x8snorm","pack4x8unorm","pack2x16snorm","pack2x16unorm","pack2x16float","unpack4x8snorm","unpack4x8unorm","unpack2x16snorm","unpack2x16unorm","unpack2x16float","storageBarrier","workgroupBarrier","workgroupUniformLoad"],Z=["const","uniform","layout","centroid","flat","smooth","break","continue","do","for","while","switch","case","default","if","else","in","out","inout","float","int","void","bool","true","false","invariant","discard","return","mat2","mat3","mat4","mat2x2","mat2x3","mat2x4","mat3x2","mat3x3","mat3x4","mat4x2","mat4x3","mat4x4","vec2","vec3","vec4","ivec2","ivec3","ivec4","bvec2","bvec3","bvec4","uint","uvec2","uvec3","uvec4","lowp","mediump","highp","precision","sampler2D","sampler3D","samplerCube","sampler2DShadow","samplerCubeShadow","sampler2DArray","sampler2DArrayShadow","isampler2D","isampler3D","isamplerCube","isampler2DArray","usampler2D","usampler3D","usamplerCube","usampler2DArray","struct","attribute","varying","coherent","volatile","restrict","readonly","writeonly","resource","atomic_uint","noperspective","patch","sample","subroutine","common","partition","active","asm","class","union","enum","typedef","template","this","goto","inline","noinline","volatile","public","static","extern","external","interface","long","short","double","half","fixed","unsigned","superp","input","output","hvec2","hvec3","hvec4","dvec2","dvec3","dvec4","fvec2","fvec3","fvec4","sampler3DRect","filter","image1D","image2D","image3D","imageCube","iimage1D","iimage2D","iimage3D","iimageCube","uimage1D","uimage2D","uimage3D","uimageCube","image1DArray","image2DArray","iimage1DArray","iimage2DArray","uimage1DArray","uimage2DArray","imageBuffer","iimageBuffer","uimageBuffer","sampler1D","sampler1DShadow","sampler1DArray","sampler1DArrayShadow","isampler1D","isampler1DArray","usampler1D","usampler1DArray","sampler2DRect","sampler2DRectShadow","isampler2DRect","usampler2DRect","samplerBuffer","isamplerBuffer","usamplerBuffer","sampler2DMS","isampler2DMS","usampler2DMS","sampler2DMSArray","isampler2DMSArray","usampler2DMSArray","sizeof","cast","namespace","using","#define","#undef","#if","#ifdef","#ifndef","#else","#elif","#endif","#error","#pragma","#extension","#version","#line","defined","__LINE__","__FILE__","__VERSION__","GL_ES","gl_VertexID","gl_InstanceID","gl_Position","gl_PointSize","gl_FragCoord","gl_FrontFacing","gl_FragDepth","gl_PointCoord","gl_MaxVertexAttribs","gl_MaxVertexUniformVectors","gl_MaxVertexOutputVectors","gl_MaxFragmentInputVectors","gl_MaxVertexTextureImageUnits","gl_MaxCombinedTextureImageUnits","gl_MaxTextureImageUnits","gl_MaxFragmentUniformVectors","gl_MaxDrawBuffers","gl_MinProgramTexelOffset","gl_MaxProgramTexelOffset","gl_DepthRangeParameters","gl_DepthRange","radians","degrees","sin","cos","tan","asin","acos","atan","sinh","cosh","tanh","asinh","acosh","atanh","pow","exp","log","exp2","log2","sqrt","inversesqrt","abs","sign","floor","trunc","round","roundEven","ceil","fract","mod","modf","min","max","clamp","mix","step","smoothstep","isnan","isinf","floatBitsToInt","floatBitsToUint","intBitsToFloat","uintBitsToFloat","packSnorm2x16","unpackSnorm2x16","packUnorm2x16","unpackUnorm2x16","packHalf2x16","unpackHalf2x16","length","distance","dot","cross","normalize","faceforward","reflect","refract","matrixCompMult","outerProduct","transpose","determinant","inverse","lessThan","lessThanEqual","greaterThan","greaterThanEqual","equal","notEqual","any","all","not","textureSize","texture","textureProj","textureLod","textureOffset","texelFetch","texelFetchOffset","textureProjOffset","textureLodOffset","textureProjLod","textureProjLodOffset","textureGrad","textureGradOffset","textureProjGrad","textureProjGradOffset","dFdx","dFdy","fwidth","#include","gl_DrawID","gl_ViewID_OVR","GL_OVR_multiview2"],X=["//","/*","*/",":",",",".","{","[","(","?","}","]",")",";","~","--","++","!","&","|","^","/","==",">",">=","<","<=","&&","||","^^","-","*","!=","+","%","<<",">>","=","+=","&=","|=","^=","/=","*=","%=","<<=",">>=","-="],J=[...X,"#","\\"],Q=[...X,"->","@"],ae=RegExp.prototype.test.bind(/\bfn\s+\w+\s*\(|\b(var|let)\s+\w+\s*[:=]/),V=RegExp.prototype.test.bind(/^(\d+\.\d*|\d*\.\d+)([eEpP][-+]?\d+)?[fFhH]?$/),re=RegExp.prototype.test.bind(/^(0[xX][\w\d]+|\d+)[iIuU]?$/),ie=RegExp.prototype.test.bind(/^(true|false)$/),oe=48,se=57,ne=65,le=90,ue=10,ce=13,me=9,pe=32,fe=95,U=47,q=42,ge=35,de=64,ee=e=>oe<=e&&e<=se,xe=e=>(e&=-33,ne<=e&&e<=le),he=e=>e===ue||e===ce,Y=e=>he(e)||e===me||e===pe,N=e=>xe(e)||ee(e)||e===fe,_e=e=>e===ge||e===de;function te(e,o=0){const i=[];let p=-1;const[d,f]=ae(e)?[K,Q]:[Z,J];for(;o<e.length;){let a=e[o];const s=e.charCodeAt(o++);if(Y(s)){for(;Y(e.charCodeAt(o));)a+=e[o++];i.push({type:"whitespace",value:a})}else if(ee(s)){for(;V(a+e[o])||re(a+e[o]);)a+=e[o++];V(a)?i.push({type:"float",value:a}):i.push({type:"int",value:a})}else if(N(s)){for(;N(e.charCodeAt(o));)a+=e[o++];ie(a)?i.push({type:"bool",value:a}):d.includes(_e(p)?String.fromCharCode(p)+a:a)?i.push({type:"keyword",value:a}):i.push({type:"identifier",value:a})}else if(s===U&&(e.charCodeAt(o)===U||e.charCodeAt(o)===q)){const u=e.charCodeAt(o)===q?"*/":`
|
|
2
|
+
`;for(;!a.endsWith(u);)a+=e[o++];i.push({type:"comment",value:a})}else{for(const u of f)u.length>a.length&&e.startsWith(u,o-1)&&(a=u);o+=a.length-1,i.push({type:"symbol",value:a})}p=s}return i}const j=RegExp.prototype.test.bind(/^\w/),ve=RegExp.prototype.test.bind(/[^\w\\]/),H=RegExp.prototype.test.bind(/^[_A-Za-z]/),ye=RegExp.prototype.test.bind(/[;{}\\@]/),$=RegExp.prototype.test.bind(/^(binding|group|layout|uniform|in|out|attribute|varying)$/);function be(e,{mangle:o=!1,mangleMap:i=new Map,mangleExternals:p=!1}={}){var d,f,a,s,u,h,_,y,b,D,w,S,k,C,L,A,M,E,B,R,O,F;e=e.replace(/(^\s*#[^\\]*?)(\n|\/[\/\*])/gm,"$1\\$2");const T=new Map,r=te(e).filter(t=>t.type!=="whitespace"&&t.type!=="comment");let P=-1,I=-1,g=-1,m="";for(let t=0;t<r.length;t++){const n=r[t];($(n.value)||ye((d=r[t-1])==null?void 0:d.value))&&(I=t),n.value==="{"&&H((f=r[t-1])==null?void 0:f.value)?g=t-1:n.value==="}"&&(g=-1),j(n.value)&&j((a=r[t-1])==null?void 0:a.value)&&(m+=" "),ve(n.value)&&(((s=r[t-2])==null?void 0:s.value)==="#"&&((u=r[t-1])==null?void 0:u.value)==="include"||((h=r[t-3])==null?void 0:h.value)==="#"&&((_=r[t-2])==null?void 0:_.value)==="define")&&(m+=" ");let c=n.value;if(((y=r[t-1])==null?void 0:y.value)==="."&&(c=`${(b=r[t-2])==null?void 0:b.value}.`+c),n.type==="identifier"&&c!=="main"&&(typeof o=="boolean"?o:o(n,t,r))){const G=((D=r[t-1])==null?void 0:D.value)==="}"&&((w=r[t+1])==null?void 0:w.value)===";",v=$((S=r[I])==null?void 0:S.value),z=v&&((k=r[t-1])==null?void 0:k.value)===",";let l=(C=i.get(c))!=null?C:T.get(c);if(!l&&g===-1&&(H((L=r[t-1])==null?void 0:L.value)||G||z||((A=r[t-1])==null?void 0:A.type)==="symbol"&&((M=r[t+1])==null?void 0:M.value)===":")&&(p||!v)){const W=p&&v||((E=r[t-2])==null?void 0:E.value)==="#"||G||z||((B=r[t-1])==null?void 0:B.value)==="fn"&&(((R=r[t-2])==null?void 0:R.value)===")"||((O=r[t-3])==null?void 0:O.value)==="@")?i:T;for(;!l||W.has(l);){l="",P++;let x=P;for(;x>0;)l=String.fromCharCode(97+(x-1)%26)+l,x=Math.floor(x/26)}W.set(c,l)}m+=l!=null?l:n.value}else n.value==="#"&&((F=r[t-1])==null?void 0:F.value)!=="\\"?m+=`
|
|
3
3
|
#`:n.value==="\\"?m+=`
|
|
4
|
-
`:m+=n.value}return m.trim()}exports.GLSL_KEYWORDS=
|
|
4
|
+
`:m+=n.value}return m.trim()}exports.GLSL_KEYWORDS=Z,exports.GLSL_SYMBOLS=J,exports.WGSL_KEYWORDS=K,exports.WGSL_SYMBOLS=Q,exports.minify=be,exports.tokenize=te;
|
|
5
5
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/constants.ts","../src/tokenizer.ts","../src/minifier.ts"],"sourcesContent":null,"names":["WGSL_KEYWORDS","GLSL_KEYWORDS","SYMBOLS","GLSL_SYMBOLS","WGSL_SYMBOLS","isWGSL","isFloat","isInt","isBool","ZERO","NINE","A","Z","LF","CR","TAB","SPACE","UNDERSCORE","SLASH","STAR","HASH","AT","isDigit","c","isAlpha","isLine","isSpace","isIdent","isMacro","tokenize","code","index","tokens","prev","KEYWORDS","value","char","terminator","symbol","isWord","isSymbol","isName","isStorage","minify","mangle","mangleMap","mangleExternals","
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/constants.ts","../src/tokenizer.ts","../src/minifier.ts"],"sourcesContent":null,"names":["WGSL_KEYWORDS","GLSL_KEYWORDS","SYMBOLS","GLSL_SYMBOLS","WGSL_SYMBOLS","isWGSL","isFloat","isInt","isBool","ZERO","NINE","A","Z","LF","CR","TAB","SPACE","UNDERSCORE","SLASH","STAR","HASH","AT","isDigit","c","isAlpha","isLine","isSpace","isIdent","isMacro","tokenize","code","index","tokens","prev","KEYWORDS","value","char","terminator","symbol","isWord","isSymbol","isName","isScoped","isStorage","minify","mangle","mangleMap","mangleExternals","mangleCache","token","mangleIndex","lineIndex","blockIndex","minified","i","_a","_b","_c","_d","_e","_f","_g","prefix","_h","_i","namespace","_j","_k","storage","_l","list","_m","renamed","_n","_o","_p","_q","cache","_r","_s","_t","_u","j","_v"],"mappings":"gFACO,MAAMA,EAAgB,CAE3B,OACA,QACA,QACA,QACA,QACA,OACA,QACA,QACA,QACA,QACA,OACA,QACA,QACA,QACA,QAGA,SACA,UACA,UACA,SACA,UACA,UACA,SACA,UACA,UACA,SACA,UACA,UACA,SACA,UACA,UACA,SACA,UACA,UACA,SACA,UACA,UACA,SACA,UACA,UACA,SACA,UACA,UAGA,QACA,SACA,OACA,MACA,MACA,MAUA,MACA,UACA,qBACA,aACA,aACA,mBACA,aACA,eACA,qBACA,0BACA,qBACA,qBACA,2BACA,qBACA,mBACA,yBACA,qBACA,2BACA,gCACA,MAMA,QACA,UACA,QACA,OACA,QACA,eACA,WACA,aACA,UACA,UACA,OACA,SACA,QACA,KACA,MACA,KACA,MACA,OACA,WACA,SACA,SACA,SACA,OACA,MACA,QAGA,aACA,OACA,OACA,WACA,SACA,UACA,UACA,KACA,MACA,eACA,QACA,YACA,OACA,QACA,SACA,OACA,gBACA,OACA,QACA,QACA,WACA,YACA,WACA,WACA,eACA,SACA,UACA,mBACA,UACA,aACA,YACA,YACA,YACA,QACA,WACA,WACA,SACA,SACA,mBACA,KACA,eACA,OACA,WACA,SACA,UACA,SACA,WACA,MACA,cACA,SACA,QACA,UACA,SACA,OACA,UACA,MACA,OACA,cACA,SACA,QACA,MACA,MACA,KACA,OACA,aACA,SACA,SACA,aACA,YACA,SACA,OACA,QACA,cACA,QACA,UACA,OACA,MACA,SACA,OACA,MACA,UACA,YACA,MACA,MACA,WACA,WACA,kBACA,gBACA,OACA,UACA,KACA,WACA,UACA,aACA,YACA,OACA,QACA,gBACA,UACA,YACA,WACA,OACA,YACA,MACA,SACA,OACA,WACA,MACA,aACA,WACA,mBACA,WACA,WACA,WACA,OACA,MACA,SACA,SACA,SACA,QACA,SACA,gBACA,cACA,MACA,aACA,QACA,SACA,WACA,OACA,eACA,QACA,QACA,MACA,OACA,UACA,SACA,WACA,SACA,MACA,MACA,KACA,QACA,SACA,QACA,SACA,UACA,MACA,QACA,UACA,UACA,WACA,OACA,QACA,OACA,YACA,QAGA,SACA,WACA,WACA,WACA,SACA,YACA,SACA,MACA,eACA,aACA,YACA,QACA,UACA,kBAGA,cACA,SACA,OAGA,SACA,WACA,SAGA,eACA,iBACA,WACA,eACA,aACA,sBACA,yBACA,uBACA,eACA,iBACA,eACA,cAGA,OACA,QACA,aAGA,WACA,UACA,YACA,UACA,UAGA,aACA,aACA,YACA,YACA,aACA,aACA,cACA,UACA,UACA,WACA,WACA,WACA,YACA,aACA,aACA,cACA,aAGA,MAGA,MACA,MACA,SAGA,cAGA,MACA,OACA,QACA,OACA,QACA,OACA,QACA,QACA,OACA,QACA,MACA,OACA,oBACA,eACA,qBACA,QACA,UACA,cACA,WACA,MACA,MACA,OACA,cACA,cACA,kBACA,mBACA,QACA,MACA,QACA,QACA,aACA,cACA,QACA,SACA,MACA,OACA,MACA,MACA,MACA,OACA,YACA,MACA,gBACA,UACA,UACA,UACA,cACA,QACA,WACA,OACA,MACA,OACA,aACA,OACA,OACA,MACA,OACA,YACA,QAGA,OACA,aACA,WACA,OACA,aACA,WACA,SACA,eACA,aAGA,oBACA,gBACA,uBACA,cACA,mBACA,mBACA,oBACA,gBACA,oBACA,uBACA,4BACA,oBACA,qBACA,+BAGA,aACA,cACA,YACA,YACA,YACA,YACA,YACA,WACA,YACA,iBACA,4BAGA,eACA,eACA,gBACA,gBACA,gBAGA,iBACA,iBACA,kBACA,kBACA,kBAGA,iBACA,mBACA,sBACF,EAIaC,EAAgB,CAE3B,QACA,UACA,SACA,WACA,OACA,SACA,QACA,WACA,KACA,MACA,QACA,SACA,OACA,UACA,KACA,OACA,KACA,MACA,QACA,QACA,MACA,OACA,OACA,OACA,QACA,YACA,UACA,SACA,OACA,OACA,OACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,QACA,QACA,QACA,OACA,UACA,QACA,YACA,YACA,YACA,cACA,kBACA,oBACA,iBACA,uBACA,aACA,aACA,eACA,kBACA,aACA,aACA,eACA,kBACA,SAGA,YACA,UACA,WACA,WACA,WACA,WACA,YACA,WACA,cACA,gBACA,QACA,SACA,aACA,SACA,YACA,SACA,MACA,QACA,QACA,OACA,UACA,WACA,OACA,OACA,SACA,WACA,WACA,SACA,SACA,SACA,WACA,YACA,OACA,QACA,SACA,OACA,QACA,WACA,SACA,QACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,gBACA,SACA,UACA,UACA,UACA,YACA,WACA,WACA,WACA,aACA,WACA,WACA,WACA,aACA,eACA,eACA,gBACA,gBACA,gBACA,gBACA,cACA,eACA,eACA,YACA,kBACA,iBACA,uBACA,aACA,kBACA,aACA,kBACA,gBACA,sBACA,iBACA,iBACA,gBACA,iBACA,iBACA,cACA,eACA,eACA,mBACA,oBACA,oBACA,SACA,OACA,YACA,QAGA,UACA,SACA,MACA,SACA,UACA,QACA,QACA,SACA,SACA,UACA,aACA,WACA,QAGA,UAGA,WACA,WACA,cACA,QAGA,cACA,gBACA,cACA,eAGA,eACA,iBACA,eACA,gBAGA,sBACA,6BACA,4BACA,6BACA,gCACA,kCACA,0BACA,+BACA,oBACA,2BACA,2BAGA,0BACA,gBAGA,UACA,UACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QAGA,MACA,MACA,MACA,OACA,OACA,OACA,cAGA,MACA,OACA,QACA,QACA,QACA,YACA,OACA,QACA,MACA,OACA,MACA,MACA,QACA,MACA,OACA,aACA,QACA,QACA,iBACA,kBACA,iBACA,kBAGA,gBACA,kBACA,gBACA,kBACA,eACA,iBAGA,SACA,WACA,MACA,QACA,YACA,cACA,UACA,UACA,iBACA,eACA,YACA,cACA,UAGA,WACA,gBACA,cACA,mBACA,QACA,WACA,MACA,MACA,MAGA,cACA,UACA,cACA,aACA,gBACA,aACA,mBACA,oBACA,mBACA,iBACA,uBACA,cACA,oBACA,kBACA,wBAGA,OACA,OACA,SAGA,WAGA,YAIA,gBACA,mBACF,EAEMC,EAAU,CAEd,KACA,KACA,KAGA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAGA,IACA,KACA,KACA,IAGA,IACA,IACA,IACA,IACA,KACA,IACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,IACA,KACA,IACA,IACA,KACA,KAGA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,IACF,EAGaC,EAAe,CAC1B,GAAGD,EAEH,IAEA,IACF,EAGaE,EAAe,CAC1B,GAAGF,EAEH,KAEA,GACF,EC13BMG,GAAS,OAAO,UAAU,KAAK,KAAK,0CAA0C,EAE9EC,EAAU,OAAO,UAAU,KAAK,KAAK,+CAA+C,EACpFC,GAAQ,OAAO,UAAU,KAAK,KAAK,6BAA6B,EAChEC,GAAS,OAAO,UAAU,KAAK,KAAK,gBAAgB,EAEpDC,GAAO,GACPC,GAAO,GACPC,GAAI,GACJC,GAAI,GACJC,GAAK,GACLC,GAAK,GACLC,GAAM,EACNC,GAAQ,GACRC,GAAa,GACbC,EAAQ,GACRC,EAAO,GACPC,GAAO,GACPC,GAAK,GAELC,GAAWC,GAAcd,IAAQc,GAAKA,GAAKb,GAC3Cc,GAAWD,IAAgBA,GAAK,IAAMZ,IAAKY,GAAKA,GAAKX,IACrDa,GAAUF,GAAcA,IAAMV,IAAMU,IAAMT,GAC1CY,EAAWH,GAAcE,GAAOF,CAAC,GAAKA,IAAMR,IAAOQ,IAAMP,GACzDW,EAAWJ,GAAcC,GAAQD,CAAC,GAAKD,GAAQC,CAAC,GAAKA,IAAMN,GAC3DW,GAAWL,GAAcA,IAAMH,IAAQG,IAAMF,GAKnC,SAAAQ,GAASC,EAAcC,EAAgB,EAAY,CACjE,MAAMC,EAAkB,CAAA,EAExB,IAAIC,EAAe,GACnB,KAAM,CAACC,EAAUhC,CAAO,EAAIG,GAAOyB,CAAI,EAAI,CAAC9B,EAAeI,CAAY,EAAI,CAACH,EAAeE,CAAY,EAChG,KAAA4B,EAAQD,EAAK,QAAQ,CACtB,IAAAK,EAAQL,EAAKC,CAAK,EAChB,MAAAK,EAAON,EAAK,WAAWC,GAAO,EAEhC,GAAAL,EAAQU,CAAI,EAAG,CACjB,KAAOV,EAAQI,EAAK,WAAWC,CAAK,CAAC,GAAGI,GAASL,EAAKC,GAAO,EAC7DC,EAAO,KAAK,CAAE,KAAM,aAAc,MAAAG,CAAO,CAAA,CAAA,SAChCb,GAAQc,CAAI,EAAG,CACjB,KAAA9B,EAAQ6B,EAAQL,EAAKC,CAAK,CAAC,GAAKxB,GAAM4B,EAAQL,EAAKC,CAAK,CAAC,GAAGI,GAASL,EAAKC,GAAO,EACpFzB,EAAQ6B,CAAK,EAAGH,EAAO,KAAK,CAAE,KAAM,QAAS,MAAAG,CAAO,CAAA,EACnDH,EAAO,KAAK,CAAE,KAAM,MAAO,MAAAG,CAAO,CAAA,CAAA,SAC9BR,EAAQS,CAAI,EAAG,CACxB,KAAOT,EAAQG,EAAK,WAAWC,CAAK,CAAC,GAAGI,GAASL,EAAKC,GAAO,EACzDvB,GAAO2B,CAAK,EAAGH,EAAO,KAAK,CAAE,KAAM,OAAQ,MAAAG,CAAO,CAAA,EAC7CD,EAAS,SAASN,GAAQK,CAAI,EAAI,OAAO,aAAaA,CAAI,EAAIE,EAAQA,CAAK,EAClFH,EAAO,KAAK,CAAE,KAAM,UAAW,MAAAG,CAAO,CAAA,EACnCH,EAAO,KAAK,CAAE,KAAM,aAAc,MAAAG,CAAO,CAAA,CACrC,SAAAC,IAASlB,IAAUY,EAAK,WAAWC,CAAK,IAAMb,GAASY,EAAK,WAAWC,CAAK,IAAMZ,GAAO,CAClG,MAAMkB,EAAaP,EAAK,WAAWC,CAAK,IAAMZ,EAAO,KAAO;AAAA,EACrD,KAAA,CAACgB,EAAM,SAASE,CAAU,GAAGF,GAASL,EAAKC,GAAO,EACzDC,EAAO,KAAK,CAAE,KAAM,UAAW,MAAAG,CAAO,CAAA,CAAA,KACjC,CACL,UAAWG,KAAUpC,EACfoC,EAAO,OAASH,EAAM,QAAUL,EAAK,WAAWQ,EAAQP,EAAQ,CAAC,IAAWI,EAAAG,GAElFP,GAASI,EAAM,OAAS,EACxBH,EAAO,KAAK,CAAE,KAAM,SAAU,MAAAG,CAAO,CAAA,CACvC,CACOF,EAAAG,CACT,CAEO,OAAAJ,CACT,CChEA,MAAMO,EAAS,OAAO,UAAU,KAAK,KAAK,KAAK,EACzCC,GAAW,OAAO,UAAU,KAAK,KAAK,SAAS,EAC/CC,EAAS,OAAO,UAAU,KAAK,KAAK,YAAY,EAChDC,GAAW,OAAO,UAAU,KAAK,KAAK,UAAU,EAChDC,EAAY,OAAO,UAAU,KAAK,KAAK,2DAA2D,EAKjG,SAASC,GACdd,EACA,CAAE,OAAAe,EAAS,GAAO,UAAAC,EAAgB,IAAA,IAAO,gBAAAC,EAAkB,EAAM,EAA4B,CAAA,EACrF,iDAEDjB,EAAAA,EAAK,QAAQ,gCAAiC,QAAQ,EAEvD,MAAAkB,MAAkB,IAClBhB,EAAkBH,GAASC,CAAI,EAAE,OAAQmB,GAAUA,EAAM,OAAS,cAAgBA,EAAM,OAAS,SAAS,EAEhH,IAAIC,EAAsB,GACtBC,EAAoB,GACpBC,EAAqB,GACrBC,EAAmB,GACvB,QAASC,EAAI,EAAGA,EAAItB,EAAO,OAAQsB,IAAK,CAChC,MAAAL,EAAQjB,EAAOsB,CAAC,GAGlBX,EAAUM,EAAM,KAAK,GAAKP,IAASa,EAAAvB,EAAOsB,EAAI,CAAC,IAAZ,KAAAC,OAAAA,EAAe,KAAK,KAAeJ,EAAAG,GAGtEL,EAAM,QAAU,KAAOR,GAAOe,EAAAxB,EAAOsB,EAAI,CAAC,IAAZ,KAAA,OAAAE,EAAe,KAAK,EAAGJ,EAAaE,EAAI,EACjEL,EAAM,QAAU,MAAkBG,EAAA,IAGvCb,EAAOU,EAAM,KAAK,GAAKV,GAAOkB,EAAAzB,EAAOsB,EAAI,CAAC,IAAZ,KAAA,OAAAG,EAAe,KAAK,IAAeJ,GAAA,KAInEb,GAASS,EAAM,KAAK,MAClBS,EAAA1B,EAAOsB,EAAI,CAAC,IAAZ,KAAAI,OAAAA,EAAe,SAAU,OAAOC,EAAA3B,EAAOsB,EAAI,CAAC,IAAZ,KAAA,OAAAK,EAAe,SAAU,aACxDC,EAAA5B,EAAOsB,EAAI,CAAC,IAAZ,KAAAM,OAAAA,EAAe,SAAU,OAAOC,EAAA7B,EAAOsB,EAAI,CAAC,IAAZ,KAAA,OAAAO,EAAe,SAAU,YAEhDR,GAAA,KAEd,IAAIS,EAASb,EAAM,MAMnB,KALIc,EAAA/B,EAAOsB,EAAI,CAAC,IAAZ,KAAA,OAAAS,EAAe,SAAU,MAC3BD,EAAS,IAAGE,EAAAhC,EAAOsB,EAAI,CAAC,IAAZ,KAAAU,OAAAA,EAAe,SAAWF,GAKtCb,EAAM,OAAS,cAEfa,IAAW,SACV,OAAOjB,GAAW,UAAYA,EAASA,EAAOI,EAAOK,EAAGtB,CAAM,GAC/D,CACM,MAAAiC,IAAYC,EAAAlC,EAAOsB,EAAI,CAAC,IAAZ,KAAAY,OAAAA,EAAe,SAAU,OAAOC,EAAAnC,EAAOsB,EAAI,CAAC,IAAZ,KAAA,OAAAa,EAAe,SAAU,IACrEC,EAAUzB,GAAU0B,EAAArC,EAAOmB,CAAS,IAAhB,KAAA,OAAAkB,EAAmB,KAAK,EAC5CC,EAAOF,KAAWG,EAAAvC,EAAOsB,EAAI,CAAC,IAAZ,KAAAiB,OAAAA,EAAe,SAAU,IACjD,IAAIC,GAAUC,EAAA3B,EAAU,IAAIgB,CAAM,IAApB,KAAAW,EAAyBzB,EAAY,IAAIc,CAAM,EAC7D,GAEE,CAACU,GAEDpB,IAAe,KAEdX,GAAOiC,EAAA1C,EAAOsB,EAAI,CAAC,IAAZ,KAAAoB,OAAAA,EAAe,KAAK,GAE1BT,GAEAK,KAECK,EAAA3C,EAAOsB,EAAI,CAAC,IAAZ,KAAA,OAAAqB,EAAe,QAAS,YAAYC,EAAA5C,EAAOsB,EAAI,CAAC,IAAZ,KAAAsB,OAAAA,EAAe,SAAU,OAE/D7B,GAAmB,CAACqB,GACrB,CAcM,MAAAS,EATH9B,GAAmBqB,KAEpBU,EAAA9C,EAAOsB,EAAI,CAAC,IAAZ,KAAA,OAAAwB,EAAe,SAAU,KAEzBb,GAEAK,KAECS,EAAA/C,EAAOsB,EAAI,CAAC,IAAZ,KAAAyB,OAAAA,EAAe,SAAU,SAASC,EAAAhD,EAAOsB,EAAI,CAAC,IAAZ,KAAA,OAAA0B,EAAe,SAAU,OAAOC,EAAAjD,EAAOsB,EAAI,CAAC,IAAZ,KAAA2B,OAAAA,EAAe,SAAU,KACnEnC,EAAYE,EAEvC,KAAO,CAACwB,GAAWK,EAAM,IAAIL,CAAO,GAAG,CAC3BA,EAAA,GACVtB,IAEA,IAAIgC,EAAIhC,EACR,KAAOgC,EAAI,GACTV,EAAU,OAAO,aAAa,IAAOU,EAAI,GAAK,EAAG,EAAIV,EACjDU,EAAA,KAAK,MAAMA,EAAI,EAAE,CAEzB,CAEML,EAAA,IAAIf,EAAQU,CAAO,CAC3B,CAEAnB,GAAYmB,GAAA,KAAAA,EAAWvB,EAAM,KAAA,MAEzBA,EAAM,QAAU,OAAOkC,EAAAnD,EAAOsB,EAAI,CAAC,IAAZ,KAAA6B,OAAAA,EAAe,SAAU,KAAkB9B,GAAA;AAAA,GAC7DJ,EAAM,QAAU,KAAkBI,GAAA;AAAA,EACtCA,GAAYJ,EAAM,KAE3B,CAEA,OAAOI,EAAS,MAClB"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const
|
|
2
|
-
`;for(;!
|
|
1
|
+
const q=["vec2","vec2i","vec2u","vec2f","vec2h","vec3","vec3i","vec3u","vec3f","vec3h","vec4","vec4i","vec4u","vec4f","vec4h","mat2x2","mat2x2f","mat2x2h","mat2x3","mat2x3f","mat2x3h","mat2x4","mat2x4f","mat2x4h","mat3x2","mat3x2f","mat3x2h","mat3x3","mat3x3f","mat3x3h","mat3x4","mat3x4f","mat3x4h","mat4x2","mat4x2f","mat4x2h","mat4x3","mat4x3f","mat4x3h","mat4x4","mat4x4f","mat4x4h","array","atomic","bool","f32","f16","i32","ptr","sampler","sampler_comparison","texture_1d","texture_2d","texture_2d_array","texture_3d","texture_cube","texture_cube_array","texture_multisampled_2d","texture_storage_1d","texture_storage_2d","texture_storage_2d_array","texture_storage_3d","texture_depth_2d","texture_depth_2d_array","texture_depth_cube","texture_depth_cube_array","texture_depth_multisampled_2d","u32","alias","bitcast","break","case","const","const_assert","continue","continuing","default","discard","else","enable","false","fn","for","if","let","loop","override","return","struct","switch","true","var","while","Hullshader","NULL","Self","abstract","active","alignas","alignof","as","asm","asm_fragment","async","attribute","auto","await","become","bf16","binding_array","cast","catch","class","co_await","co_return","co_yield","coherent","column_major","common","compile","compile_fragment","concept","const_cast","consteval","constexpr","constinit","crate","debugger","decltype","delete","demote","demote_to_helper","do","dynamic_cast","enum","explicit","export","extends","extern","external","f64","fallthrough","filter","final","finally","friend","from","fxgroup","get","goto","groupshared","handle","highp","i16","i64","i8","impl","implements","import","inline","instanceof","interface","layout","lowp","macro","macro_rules","match","mediump","meta","mod","module","move","mut","mutable","namespace","new","nil","noexcept","noinline","nointerpolation","noperspective","null","nullptr","of","operator","package","packoffset","partition","pass","patch","pixelfragment","precise","precision","premerge","priv","protected","pub","public","quat","readonly","ref","regardless","register","reinterpret_cast","requires","resource","restrict","self","set","shared","sizeof","smooth","snorm","static","static_assert","static_cast","std","subroutine","super","target","template","this","thread_local","throw","trait","try","type","typedef","typeid","typename","typeof","u16","u64","u8","union","unless","unorm","unsafe","unsized","use","using","varying","virtual","volatile","wgsl","where","with","writeonly","yield","@align","@binding","@builtin","@compute","@const","@fragment","@group","@id","@interpolate","@invariant","@location","@size","@vertex","@workgroup_size","perspective","linear","flat","center","centroid","sample","vertex_index","instance_index","position","front_facing","frag_depth","local_invocation_id","local_invocation_index","global_invocation_id","workgroup_id","num_workgroups","sample_index","sample_mask","read","write","read_write","function","private","workgroup","uniform","storage","rgba8unorm","rgba8snorm","rgba8uint","rgba8sint","rgba16uint","rgba16sint","rgba16float","r32uint","r32sint","r32float","rg32uint","rg32sint","rg32float","rgba32uint","rgba32sint","rgba32float","bgra8unorm","f16","all","any","select","arrayLength","abs","acos","acosh","asin","asinh","atan","atanh","atan2","ceil","clamp","cos","cosh","countLeadingZeros","countOneBits","countTrailingZeros","cross","degrees","determinant","distance","dot","exp","exp2","extractBits","faceForward","firstLeadingBit","firstTrailingBit","floor","fma","fract","frexp","insertBits","inverseSqrt","ldexp","length","log","log2","max","min","mix","modf","normalize","pow","quantizeToF16","radians","reflect","refract","reverseBits","round","saturate","sign","sin","sinh","smoothstep","sqrt","step","tan","tanh","transpose","trunc","dpdx","dpdxCoarse","dpdxFine","dpdy","dpdyCoarse","dpdyFine","fwidth","fwidthCoarse","fwidthFine","textureDimensions","textureGather","textureGatherCompare","textureLoad","textureNumLayers","textureNumLevels","textureNumSamples","textureSample","textureSampleBias","textureSampleCompare","textureSampleCompareLevel","textureSampleGrad","textureSampleLevel","textureSampleBaseClampToEdge","atomicLoad","atomicStore","atomicAdd","atomicSub","atomicMax","atomicMin","atomicAnd","atomicOr","atomicXor","atomicExchange","atomicCompareExchangeWeak","pack4x8snorm","pack4x8unorm","pack2x16snorm","pack2x16unorm","pack2x16float","unpack4x8snorm","unpack4x8unorm","unpack2x16snorm","unpack2x16unorm","unpack2x16float","storageBarrier","workgroupBarrier","workgroupUniformLoad"],U=["const","uniform","layout","centroid","flat","smooth","break","continue","do","for","while","switch","case","default","if","else","in","out","inout","float","int","void","bool","true","false","invariant","discard","return","mat2","mat3","mat4","mat2x2","mat2x3","mat2x4","mat3x2","mat3x3","mat3x4","mat4x2","mat4x3","mat4x4","vec2","vec3","vec4","ivec2","ivec3","ivec4","bvec2","bvec3","bvec4","uint","uvec2","uvec3","uvec4","lowp","mediump","highp","precision","sampler2D","sampler3D","samplerCube","sampler2DShadow","samplerCubeShadow","sampler2DArray","sampler2DArrayShadow","isampler2D","isampler3D","isamplerCube","isampler2DArray","usampler2D","usampler3D","usamplerCube","usampler2DArray","struct","attribute","varying","coherent","volatile","restrict","readonly","writeonly","resource","atomic_uint","noperspective","patch","sample","subroutine","common","partition","active","asm","class","union","enum","typedef","template","this","goto","inline","noinline","volatile","public","static","extern","external","interface","long","short","double","half","fixed","unsigned","superp","input","output","hvec2","hvec3","hvec4","dvec2","dvec3","dvec4","fvec2","fvec3","fvec4","sampler3DRect","filter","image1D","image2D","image3D","imageCube","iimage1D","iimage2D","iimage3D","iimageCube","uimage1D","uimage2D","uimage3D","uimageCube","image1DArray","image2DArray","iimage1DArray","iimage2DArray","uimage1DArray","uimage2DArray","imageBuffer","iimageBuffer","uimageBuffer","sampler1D","sampler1DShadow","sampler1DArray","sampler1DArrayShadow","isampler1D","isampler1DArray","usampler1D","usampler1DArray","sampler2DRect","sampler2DRectShadow","isampler2DRect","usampler2DRect","samplerBuffer","isamplerBuffer","usamplerBuffer","sampler2DMS","isampler2DMS","usampler2DMS","sampler2DMSArray","isampler2DMSArray","usampler2DMSArray","sizeof","cast","namespace","using","#define","#undef","#if","#ifdef","#ifndef","#else","#elif","#endif","#error","#pragma","#extension","#version","#line","defined","__LINE__","__FILE__","__VERSION__","GL_ES","gl_VertexID","gl_InstanceID","gl_Position","gl_PointSize","gl_FragCoord","gl_FrontFacing","gl_FragDepth","gl_PointCoord","gl_MaxVertexAttribs","gl_MaxVertexUniformVectors","gl_MaxVertexOutputVectors","gl_MaxFragmentInputVectors","gl_MaxVertexTextureImageUnits","gl_MaxCombinedTextureImageUnits","gl_MaxTextureImageUnits","gl_MaxFragmentUniformVectors","gl_MaxDrawBuffers","gl_MinProgramTexelOffset","gl_MaxProgramTexelOffset","gl_DepthRangeParameters","gl_DepthRange","radians","degrees","sin","cos","tan","asin","acos","atan","sinh","cosh","tanh","asinh","acosh","atanh","pow","exp","log","exp2","log2","sqrt","inversesqrt","abs","sign","floor","trunc","round","roundEven","ceil","fract","mod","modf","min","max","clamp","mix","step","smoothstep","isnan","isinf","floatBitsToInt","floatBitsToUint","intBitsToFloat","uintBitsToFloat","packSnorm2x16","unpackSnorm2x16","packUnorm2x16","unpackUnorm2x16","packHalf2x16","unpackHalf2x16","length","distance","dot","cross","normalize","faceforward","reflect","refract","matrixCompMult","outerProduct","transpose","determinant","inverse","lessThan","lessThanEqual","greaterThan","greaterThanEqual","equal","notEqual","any","all","not","textureSize","texture","textureProj","textureLod","textureOffset","texelFetch","texelFetchOffset","textureProjOffset","textureLodOffset","textureProjLod","textureProjLodOffset","textureGrad","textureGradOffset","textureProjGrad","textureProjGradOffset","dFdx","dFdy","fwidth","#include","gl_DrawID","gl_ViewID_OVR","GL_OVR_multiview2"],j=["//","/*","*/",":",",",".","{","[","(","?","}","]",")",";","~","--","++","!","&","|","^","/","==",">",">=","<","<=","&&","||","^^","-","*","!=","+","%","<<",">>","=","+=","&=","|=","^=","/=","*=","%=","<<=",">>=","-="],W=[...j,"#","\\"],$=[...j,"->","@"],ae=RegExp.prototype.test.bind(/\bfn\s+\w+\s*\(|\b(var|let)\s+\w+\s*[:=]/),N=RegExp.prototype.test.bind(/^(\d+\.\d*|\d*\.\d+)([eEpP][-+]?\d+)?[fFhH]?$/),re=RegExp.prototype.test.bind(/^(0[xX][\w\d]+|\d+)[iIuU]?$/),oe=RegExp.prototype.test.bind(/^(true|false)$/),ie=48,ne=57,le=65,se=90,ue=10,me=13,pe=9,ce=32,de=95,H=47,Y=42,fe=35,xe=64,Z=e=>ie<=e&&e<=ne,ge=e=>(e&=-33,le<=e&&e<=se),ve=e=>e===ue||e===me,K=e=>ve(e)||e===pe||e===ce,X=e=>ge(e)||Z(e)||e===de,he=e=>e===fe||e===xe;function J(e,o=0){const i=[];let p=-1;const[d,f]=ae(e)?[q,$]:[U,W];for(;o<e.length;){let a=e[o];const s=e.charCodeAt(o++);if(K(s)){for(;K(e.charCodeAt(o));)a+=e[o++];i.push({type:"whitespace",value:a})}else if(Z(s)){for(;N(a+e[o])||re(a+e[o]);)a+=e[o++];N(a)?i.push({type:"float",value:a}):i.push({type:"int",value:a})}else if(X(s)){for(;X(e.charCodeAt(o));)a+=e[o++];oe(a)?i.push({type:"bool",value:a}):d.includes(he(p)?String.fromCharCode(p)+a:a)?i.push({type:"keyword",value:a}):i.push({type:"identifier",value:a})}else if(s===H&&(e.charCodeAt(o)===H||e.charCodeAt(o)===Y)){const u=e.charCodeAt(o)===Y?"*/":`
|
|
2
|
+
`;for(;!a.endsWith(u);)a+=e[o++];i.push({type:"comment",value:a})}else{for(const u of f)u.length>a.length&&e.startsWith(u,o-1)&&(a=u);o+=a.length-1,i.push({type:"symbol",value:a})}p=s}return i}const Q=RegExp.prototype.test.bind(/^\w/),_e=RegExp.prototype.test.bind(/[^\w\\]/),ee=RegExp.prototype.test.bind(/^[_A-Za-z]/),ye=RegExp.prototype.test.bind(/[;{}\\@]/),te=RegExp.prototype.test.bind(/^(binding|group|layout|uniform|in|out|attribute|varying)$/);function be(e,{mangle:o=!1,mangleMap:i=new Map,mangleExternals:p=!1}={}){var d,f,a,s,u,h,_,y,b,D,w,S,k,C,L,A,M,E,B,R,F,O;e=e.replace(/(^\s*#[^\\]*?)(\n|\/[\/\*])/gm,"$1\\$2");const T=new Map,r=J(e).filter(t=>t.type!=="whitespace"&&t.type!=="comment");let I=-1,P=-1,g=-1,m="";for(let t=0;t<r.length;t++){const n=r[t];(te(n.value)||ye((d=r[t-1])==null?void 0:d.value))&&(P=t),n.value==="{"&&ee((f=r[t-1])==null?void 0:f.value)?g=t-1:n.value==="}"&&(g=-1),Q(n.value)&&Q((a=r[t-1])==null?void 0:a.value)&&(m+=" "),_e(n.value)&&(((s=r[t-2])==null?void 0:s.value)==="#"&&((u=r[t-1])==null?void 0:u.value)==="include"||((h=r[t-3])==null?void 0:h.value)==="#"&&((_=r[t-2])==null?void 0:_.value)==="define")&&(m+=" ");let c=n.value;if(((y=r[t-1])==null?void 0:y.value)==="."&&(c=`${(b=r[t-2])==null?void 0:b.value}.`+c),n.type==="identifier"&&c!=="main"&&(typeof o=="boolean"?o:o(n,t,r))){const G=((D=r[t-1])==null?void 0:D.value)==="}"&&((w=r[t+1])==null?void 0:w.value)===";",v=te((S=r[P])==null?void 0:S.value),V=v&&((k=r[t-1])==null?void 0:k.value)===",";let l=(C=i.get(c))!=null?C:T.get(c);if(!l&&g===-1&&(ee((L=r[t-1])==null?void 0:L.value)||G||V||((A=r[t-1])==null?void 0:A.type)==="symbol"&&((M=r[t+1])==null?void 0:M.value)===":")&&(p||!v)){const z=p&&v||((E=r[t-2])==null?void 0:E.value)==="#"||G||V||((B=r[t-1])==null?void 0:B.value)==="fn"&&(((R=r[t-2])==null?void 0:R.value)===")"||((F=r[t-3])==null?void 0:F.value)==="@")?i:T;for(;!l||z.has(l);){l="",I++;let x=I;for(;x>0;)l=String.fromCharCode(97+(x-1)%26)+l,x=Math.floor(x/26)}z.set(c,l)}m+=l!=null?l:n.value}else n.value==="#"&&((O=r[t-1])==null?void 0:O.value)!=="\\"?m+=`
|
|
3
3
|
#`:n.value==="\\"?m+=`
|
|
4
|
-
`:m+=n.value}return m.trim()}export{
|
|
4
|
+
`:m+=n.value}return m.trim()}export{U as GLSL_KEYWORDS,W as GLSL_SYMBOLS,q as WGSL_KEYWORDS,$ as WGSL_SYMBOLS,be as minify,J as tokenize};
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/constants.ts","../src/tokenizer.ts","../src/minifier.ts"],"sourcesContent":null,"names":["WGSL_KEYWORDS","GLSL_KEYWORDS","SYMBOLS","GLSL_SYMBOLS","WGSL_SYMBOLS","isWGSL","isFloat","isInt","isBool","ZERO","NINE","A","Z","LF","CR","TAB","SPACE","UNDERSCORE","SLASH","STAR","HASH","AT","isDigit","c","isAlpha","isLine","isSpace","isIdent","isMacro","tokenize","code","index","tokens","prev","KEYWORDS","value","char","terminator","symbol","isWord","isSymbol","isName","isStorage","minify","mangle","mangleMap","mangleExternals","_a","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/constants.ts","../src/tokenizer.ts","../src/minifier.ts"],"sourcesContent":null,"names":["WGSL_KEYWORDS","GLSL_KEYWORDS","SYMBOLS","GLSL_SYMBOLS","WGSL_SYMBOLS","isWGSL","isFloat","isInt","isBool","ZERO","NINE","A","Z","LF","CR","TAB","SPACE","UNDERSCORE","SLASH","STAR","HASH","AT","isDigit","c","isAlpha","isLine","isSpace","isIdent","isMacro","tokenize","code","index","tokens","prev","KEYWORDS","value","char","terminator","symbol","isWord","isSymbol","isName","isScoped","isStorage","minify","mangle","mangleMap","mangleExternals","_a","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","mangleCache","token","mangleIndex","lineIndex","blockIndex","minified","i","prefix","namespace","storage","list","renamed","cache","j"],"mappings":"AACO,MAAMA,EAAgB,CAE3B,OACA,QACA,QACA,QACA,QACA,OACA,QACA,QACA,QACA,QACA,OACA,QACA,QACA,QACA,QAGA,SACA,UACA,UACA,SACA,UACA,UACA,SACA,UACA,UACA,SACA,UACA,UACA,SACA,UACA,UACA,SACA,UACA,UACA,SACA,UACA,UACA,SACA,UACA,UACA,SACA,UACA,UAGA,QACA,SACA,OACA,MACA,MACA,MAUA,MACA,UACA,qBACA,aACA,aACA,mBACA,aACA,eACA,qBACA,0BACA,qBACA,qBACA,2BACA,qBACA,mBACA,yBACA,qBACA,2BACA,gCACA,MAMA,QACA,UACA,QACA,OACA,QACA,eACA,WACA,aACA,UACA,UACA,OACA,SACA,QACA,KACA,MACA,KACA,MACA,OACA,WACA,SACA,SACA,SACA,OACA,MACA,QAGA,aACA,OACA,OACA,WACA,SACA,UACA,UACA,KACA,MACA,eACA,QACA,YACA,OACA,QACA,SACA,OACA,gBACA,OACA,QACA,QACA,WACA,YACA,WACA,WACA,eACA,SACA,UACA,mBACA,UACA,aACA,YACA,YACA,YACA,QACA,WACA,WACA,SACA,SACA,mBACA,KACA,eACA,OACA,WACA,SACA,UACA,SACA,WACA,MACA,cACA,SACA,QACA,UACA,SACA,OACA,UACA,MACA,OACA,cACA,SACA,QACA,MACA,MACA,KACA,OACA,aACA,SACA,SACA,aACA,YACA,SACA,OACA,QACA,cACA,QACA,UACA,OACA,MACA,SACA,OACA,MACA,UACA,YACA,MACA,MACA,WACA,WACA,kBACA,gBACA,OACA,UACA,KACA,WACA,UACA,aACA,YACA,OACA,QACA,gBACA,UACA,YACA,WACA,OACA,YACA,MACA,SACA,OACA,WACA,MACA,aACA,WACA,mBACA,WACA,WACA,WACA,OACA,MACA,SACA,SACA,SACA,QACA,SACA,gBACA,cACA,MACA,aACA,QACA,SACA,WACA,OACA,eACA,QACA,QACA,MACA,OACA,UACA,SACA,WACA,SACA,MACA,MACA,KACA,QACA,SACA,QACA,SACA,UACA,MACA,QACA,UACA,UACA,WACA,OACA,QACA,OACA,YACA,QAGA,SACA,WACA,WACA,WACA,SACA,YACA,SACA,MACA,eACA,aACA,YACA,QACA,UACA,kBAGA,cACA,SACA,OAGA,SACA,WACA,SAGA,eACA,iBACA,WACA,eACA,aACA,sBACA,yBACA,uBACA,eACA,iBACA,eACA,cAGA,OACA,QACA,aAGA,WACA,UACA,YACA,UACA,UAGA,aACA,aACA,YACA,YACA,aACA,aACA,cACA,UACA,UACA,WACA,WACA,WACA,YACA,aACA,aACA,cACA,aAGA,MAGA,MACA,MACA,SAGA,cAGA,MACA,OACA,QACA,OACA,QACA,OACA,QACA,QACA,OACA,QACA,MACA,OACA,oBACA,eACA,qBACA,QACA,UACA,cACA,WACA,MACA,MACA,OACA,cACA,cACA,kBACA,mBACA,QACA,MACA,QACA,QACA,aACA,cACA,QACA,SACA,MACA,OACA,MACA,MACA,MACA,OACA,YACA,MACA,gBACA,UACA,UACA,UACA,cACA,QACA,WACA,OACA,MACA,OACA,aACA,OACA,OACA,MACA,OACA,YACA,QAGA,OACA,aACA,WACA,OACA,aACA,WACA,SACA,eACA,aAGA,oBACA,gBACA,uBACA,cACA,mBACA,mBACA,oBACA,gBACA,oBACA,uBACA,4BACA,oBACA,qBACA,+BAGA,aACA,cACA,YACA,YACA,YACA,YACA,YACA,WACA,YACA,iBACA,4BAGA,eACA,eACA,gBACA,gBACA,gBAGA,iBACA,iBACA,kBACA,kBACA,kBAGA,iBACA,mBACA,sBACF,EAIaC,EAAgB,CAE3B,QACA,UACA,SACA,WACA,OACA,SACA,QACA,WACA,KACA,MACA,QACA,SACA,OACA,UACA,KACA,OACA,KACA,MACA,QACA,QACA,MACA,OACA,OACA,OACA,QACA,YACA,UACA,SACA,OACA,OACA,OACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,QACA,QACA,QACA,OACA,UACA,QACA,YACA,YACA,YACA,cACA,kBACA,oBACA,iBACA,uBACA,aACA,aACA,eACA,kBACA,aACA,aACA,eACA,kBACA,SAGA,YACA,UACA,WACA,WACA,WACA,WACA,YACA,WACA,cACA,gBACA,QACA,SACA,aACA,SACA,YACA,SACA,MACA,QACA,QACA,OACA,UACA,WACA,OACA,OACA,SACA,WACA,WACA,SACA,SACA,SACA,WACA,YACA,OACA,QACA,SACA,OACA,QACA,WACA,SACA,QACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,gBACA,SACA,UACA,UACA,UACA,YACA,WACA,WACA,WACA,aACA,WACA,WACA,WACA,aACA,eACA,eACA,gBACA,gBACA,gBACA,gBACA,cACA,eACA,eACA,YACA,kBACA,iBACA,uBACA,aACA,kBACA,aACA,kBACA,gBACA,sBACA,iBACA,iBACA,gBACA,iBACA,iBACA,cACA,eACA,eACA,mBACA,oBACA,oBACA,SACA,OACA,YACA,QAGA,UACA,SACA,MACA,SACA,UACA,QACA,QACA,SACA,SACA,UACA,aACA,WACA,QAGA,UAGA,WACA,WACA,cACA,QAGA,cACA,gBACA,cACA,eAGA,eACA,iBACA,eACA,gBAGA,sBACA,6BACA,4BACA,6BACA,gCACA,kCACA,0BACA,+BACA,oBACA,2BACA,2BAGA,0BACA,gBAGA,UACA,UACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QAGA,MACA,MACA,MACA,OACA,OACA,OACA,cAGA,MACA,OACA,QACA,QACA,QACA,YACA,OACA,QACA,MACA,OACA,MACA,MACA,QACA,MACA,OACA,aACA,QACA,QACA,iBACA,kBACA,iBACA,kBAGA,gBACA,kBACA,gBACA,kBACA,eACA,iBAGA,SACA,WACA,MACA,QACA,YACA,cACA,UACA,UACA,iBACA,eACA,YACA,cACA,UAGA,WAC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"}
|
package/package.json
CHANGED
package/src/minifier.ts
CHANGED
|
@@ -14,7 +14,8 @@ export interface MinifyOptions {
|
|
|
14
14
|
const isWord = RegExp.prototype.test.bind(/^\w/)
|
|
15
15
|
const isSymbol = RegExp.prototype.test.bind(/[^\w\\]/)
|
|
16
16
|
const isName = RegExp.prototype.test.bind(/^[_A-Za-z]/)
|
|
17
|
-
const
|
|
17
|
+
const isScoped = RegExp.prototype.test.bind(/[;{}\\@]/)
|
|
18
|
+
const isStorage = RegExp.prototype.test.bind(/^(binding|group|layout|uniform|in|out|attribute|varying)$/)
|
|
18
19
|
|
|
19
20
|
/**
|
|
20
21
|
* Minifies a string of GLSL or WGSL code.
|
|
@@ -26,21 +27,25 @@ export function minify(
|
|
|
26
27
|
// Escape newlines after directives, skip comments
|
|
27
28
|
code = code.replace(/(^\s*#[^\\]*?)(\n|\/[\/\*])/gm, '$1\\$2')
|
|
28
29
|
|
|
29
|
-
const
|
|
30
|
+
const mangleCache = new Map()
|
|
30
31
|
const tokens: Token[] = tokenize(code).filter((token) => token.type !== 'whitespace' && token.type !== 'comment')
|
|
31
32
|
|
|
32
|
-
let mangleIndex: number =
|
|
33
|
-
let
|
|
33
|
+
let mangleIndex: number = -1
|
|
34
|
+
let lineIndex: number = -1
|
|
35
|
+
let blockIndex: number = -1
|
|
34
36
|
let minified: string = ''
|
|
35
37
|
for (let i = 0; i < tokens.length; i++) {
|
|
36
38
|
const token = tokens[i]
|
|
37
39
|
|
|
38
|
-
//
|
|
39
|
-
if (
|
|
40
|
+
// Track possibly external scopes
|
|
41
|
+
if (isStorage(token.value) || isScoped(tokens[i - 1]?.value)) lineIndex = i
|
|
40
42
|
|
|
41
43
|
// Mark enter/leave block-scope
|
|
42
44
|
if (token.value === '{' && isName(tokens[i - 1]?.value)) blockIndex = i - 1
|
|
43
|
-
else if (token.value === '}') blockIndex =
|
|
45
|
+
else if (token.value === '}') blockIndex = -1
|
|
46
|
+
|
|
47
|
+
// Pad alphanumeric tokens
|
|
48
|
+
if (isWord(token.value) && isWord(tokens[i - 1]?.value)) minified += ' '
|
|
44
49
|
|
|
45
50
|
// Pad symbols around #define and three.js #include (white-space sensitive)
|
|
46
51
|
if (
|
|
@@ -50,31 +55,54 @@ export function minify(
|
|
|
50
55
|
)
|
|
51
56
|
minified += ' '
|
|
52
57
|
|
|
58
|
+
let prefix = token.value
|
|
59
|
+
if (tokens[i - 1]?.value === '.') {
|
|
60
|
+
prefix = `${tokens[i - 2]?.value}.` + prefix
|
|
61
|
+
}
|
|
62
|
+
|
|
53
63
|
// Mangle declarations and their references
|
|
54
64
|
if (
|
|
55
65
|
token.type === 'identifier' &&
|
|
56
66
|
// Filter variable names
|
|
57
|
-
|
|
67
|
+
prefix !== 'main' &&
|
|
58
68
|
(typeof mangle === 'boolean' ? mangle : mangle(token, i, tokens))
|
|
59
69
|
) {
|
|
60
|
-
|
|
70
|
+
const namespace = tokens[i - 1]?.value === '}' && tokens[i + 1]?.value === ';'
|
|
71
|
+
const storage = isStorage(tokens[lineIndex]?.value)
|
|
72
|
+
const list = storage && tokens[i - 1]?.value === ','
|
|
73
|
+
let renamed = mangleMap.get(prefix) ?? mangleCache.get(prefix)
|
|
61
74
|
if (
|
|
62
75
|
// no-op
|
|
63
76
|
!renamed &&
|
|
64
77
|
// Skip struct properties
|
|
65
|
-
blockIndex
|
|
78
|
+
blockIndex === -1 &&
|
|
66
79
|
// Is declaration, reference, namespace, or comma-separated list
|
|
67
80
|
(isName(tokens[i - 1]?.value) ||
|
|
68
81
|
// uniform Type { ... } name;
|
|
69
|
-
|
|
70
|
-
// float foo, bar;
|
|
71
|
-
|
|
82
|
+
namespace ||
|
|
83
|
+
// uniform float foo, bar;
|
|
84
|
+
list ||
|
|
72
85
|
// fn (arg: type) -> void
|
|
73
|
-
tokens[i + 1]?.value === ':') &&
|
|
86
|
+
(tokens[i - 1]?.type === 'symbol' && tokens[i + 1]?.value === ':')) &&
|
|
74
87
|
// Skip shader externals when disabled
|
|
75
|
-
(mangleExternals ||
|
|
88
|
+
(mangleExternals || !storage)
|
|
76
89
|
) {
|
|
77
|
-
|
|
90
|
+
// Write shader externals and preprocessor defines to mangleMap for multiple passes
|
|
91
|
+
// TODO: do so via scope tracking
|
|
92
|
+
const isExternal =
|
|
93
|
+
// Shader externals
|
|
94
|
+
(mangleExternals && storage) ||
|
|
95
|
+
// Defines
|
|
96
|
+
tokens[i - 2]?.value === '#' ||
|
|
97
|
+
// Namespaced uniform structs
|
|
98
|
+
namespace ||
|
|
99
|
+
// Comma-separated list of uniforms
|
|
100
|
+
list ||
|
|
101
|
+
// WGSL entrypoints via @stage or @workgroup_size(...)
|
|
102
|
+
(tokens[i - 1]?.value === 'fn' && (tokens[i - 2]?.value === ')' || tokens[i - 3]?.value === '@'))
|
|
103
|
+
const cache = isExternal ? mangleMap : mangleCache
|
|
104
|
+
|
|
105
|
+
while (!renamed || cache.has(renamed)) {
|
|
78
106
|
renamed = ''
|
|
79
107
|
mangleIndex++
|
|
80
108
|
|
|
@@ -85,7 +113,7 @@ export function minify(
|
|
|
85
113
|
}
|
|
86
114
|
}
|
|
87
115
|
|
|
88
|
-
|
|
116
|
+
cache.set(prefix, renamed)
|
|
89
117
|
}
|
|
90
118
|
|
|
91
119
|
minified += renamed ?? token.value
|