shaderkit 0.1.14 → 0.2.1

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/dist/index.js CHANGED
@@ -1,5 +1,5 @@
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|const)\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
- #`:n.value==="\\"?m+=`
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};
1
+ class ne{constructor(t){this.value=t}}class R{constructor(t){this.value=t}}class E{constructor(t,a){this.name=t,this.parameters=a}}class P{constructor(t,a){this.name=t,this.value=a}}class q{constructor(t,a,r,s,c){this.layout=t,this.qualifiers=a,this.kind=r,this.type=s,this.declarations=c}}class se{constructor(t,a){this.name=t,this.members=a}}class le{constructor(t,a,r,s,c){this.name=t,this.type=a,this.qualifiers=r,this.args=s,this.body=c}}class G{constructor(t,a,r){this.operator=t,this.left=a,this.right=r}}class I{constructor(t,a,r){this.operator=t,this.left=a,this.right=r}}class oe{constructor(t,a,r){this.test=t,this.consequent=a,this.alternate=r}}class ie{constructor(t,a){this.callee=t,this.args=a}}class ue{constructor(t,a){this.object=t,this.property=a}}class B{constructor(t,a){this.type=t,this.members=a}}class ce{constructor(t){this.body=t}}class pe{constructor(t,a,r){this.test=t,this.consequent=a,this.alternate=r}}class me{constructor(t,a,r,s){this.init=t,this.test=a,this.update=r,this.body=s}}class fe{constructor(t,a){this.test=t,this.body=a}}class de{constructor(t,a){this.test=t,this.body=a}}class V{constructor(t,a){this.test=t,this.consequent=a}}class he{constructor(t,a){this.discriminant=t,this.cases=a}}class ve{constructor(t){this.argument=t}}class ge{constructor(t,a){this.name=t,this.value=a}}class xe{constructor(t,a){this.precision=t,this.type=a}}class ye{}class _e{}class we{}const be=["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"],De=["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_FragColor","gl_FragDepthEXT","texture2D","textureCube","texture2DProj","texture2DLodEXT","texture2DProjLodEXT","textureCubeLodEXT","texture2DGradEXT","texture2DProjGradEXT","textureCubeGradEXT","gl_DrawID","gl_ViewID_OVR","GL_OVR_multiview2"],Se=["//","/*","*/",":",",",".","{","[","(","?","}","]",")",";","~","--","++","!","&","|","^","/","==",">",">=","<","<=","&&","||","^^","-","*","!=","+","%","<<",">>","=","+=","&=","|=","^=","/=","*=","%=","<<=",">>=","-="],Ee=[...Se,"#","\\"],ke=[...Se,"->","@"],$e=RegExp.prototype.test.bind(/\bfn\s+\w+\s*\(|\b(var|let|const)\s+\w+\s*[:=]/),Ce=RegExp.prototype.test.bind(/^(\d+\.\d*|\d*\.\d+)([eEpP][-+]?\d+)?[fFhH]?$/),je=RegExp.prototype.test.bind(/^(0[xX][\w\d]+|\d+)[iIuU]?$/),ze=RegExp.prototype.test.bind(/^(true|false)$/),Ue=48,We=57,Xe=65,Ne=90,He=10,Ye=13,Ze=9,Ke=32,Je=95,Le=47,Ae=42,Qe=35,et=64,Me=e=>Ue<=e&&e<=We,tt=e=>(e&=-33,Xe<=e&&e<=Ne),at=e=>e===He||e===Ye,Re=e=>at(e)||e===Ze||e===Ke,Be=e=>tt(e)||Me(e)||e===Je,rt=e=>e===Qe||e===et;function $(e,t=0){const a=[];let r=-1;const[s,c]=$e(e)?[be,ke]:[De,Ee];for(;t<e.length;){let l=e[t];const u=e.charCodeAt(t++);if(Re(u)){for(;Re(e.charCodeAt(t));)l+=e[t++];a.push({type:"whitespace",value:l})}else if(Me(u)){for(;Ce(l+e[t])||je(l+e[t]);)l+=e[t++];Ce(l)?a.push({type:"float",value:l}):a.push({type:"int",value:l})}else if(Be(u)){for(;Be(e.charCodeAt(t));)l+=e[t++];ze(l)?a.push({type:"bool",value:l}):s.includes(rt(r)?String.fromCharCode(r)+l:l)?a.push({type:"keyword",value:l}):a.push({type:"identifier",value:l})}else if(u===Le&&(e.charCodeAt(t)===Le||e.charCodeAt(t)===Ae)){const o=e.charCodeAt(t)===Ae?"*/":`
2
+ `;for(;!l.endsWith(o);)l+=e[t++];a.push({type:"comment",value:l})}else{for(const o of c)o.length>l.length&&e.startsWith(o,t-1)&&(l=o);t+=l.length-1,a.push({type:"symbol",value:l})}r=u}return a}const Te=RegExp.prototype.test.bind(/^\w/),nt=RegExp.prototype.test.bind(/[^\w\\]/),Fe=RegExp.prototype.test.bind(/^[_A-Za-z]/),st=RegExp.prototype.test.bind(/[;{}\\@]/),Oe=RegExp.prototype.test.bind(/^(binding|group|layout|uniform|in|out|attribute|varying)$/);function lt(e,{mangle:t=!1,mangleMap:a=new Map,mangleExternals:r=!1}={}){var s,c,l,u,o,d,h,f,g,y,x,D,A,z,U,W,X,N,H,Y,Z,K;e=e.replace(/(^\s*#[^\\]*?)(\n|\/[\/\*])/gm,"$1\\$2");const J=new Map,v=$(e).filter(p=>p.type!=="whitespace"&&p.type!=="comment");let Q=-1,ee=-1,F=-1,k="";for(let p=0;p<v.length;p++){const _=v[p];(Oe(_.value)||st((s=v[p-1])==null?void 0:s.value))&&(ee=p),_.value==="{"&&Fe((c=v[p-1])==null?void 0:c.value)?F=p-1:_.value==="}"&&(F=-1),Te(_.value)&&Te((l=v[p-1])==null?void 0:l.value)&&(k+=" "),nt(_.value)&&(((u=v[p-2])==null?void 0:u.value)==="#"&&((o=v[p-1])==null?void 0:o.value)==="include"||((d=v[p-3])==null?void 0:d.value)==="#"&&((h=v[p-2])==null?void 0:h.value)==="define")&&(k+=" ");let C=_.value;if(((f=v[p-1])==null?void 0:f.value)==="."&&(C=`${(g=v[p-2])==null?void 0:g.value}.`+C),_.type==="identifier"&&C!=="main"&&(typeof t=="boolean"?t:t(_,p,v))){const te=((y=v[p-1])==null?void 0:y.value)==="}"&&((x=v[p+1])==null?void 0:x.value)===";",O=Oe((D=v[ee])==null?void 0:D.value),ae=O&&((A=v[p-1])==null?void 0:A.value)===",";let S=(z=a.get(C))!=null?z:J.get(C);if(!S&&F===-1&&(Fe((U=v[p-1])==null?void 0:U.value)||te||ae||((W=v[p-1])==null?void 0:W.type)==="symbol"&&((X=v[p+1])==null?void 0:X.value)===":")&&(r||!O)){const re=r&&O||((N=v[p-2])==null?void 0:N.value)==="#"||te||ae||((H=v[p-1])==null?void 0:H.value)==="fn"&&(((Y=v[p-2])==null?void 0:Y.value)===")"||((Z=v[p-3])==null?void 0:Z.value)==="@")?a:J;for(;!S||re.has(S);){S="",Q++;let M=Q;for(;M>0;)S=String.fromCharCode(97+(M-1)%26)+S,M=Math.floor(M/26)}re.set(C,S)}k+=S!=null?S:_.value}else _.value==="#"&&((K=v[p-1])==null?void 0:K.value)!=="\\"?k+=`
3
+ #`:_.value==="\\"?k+=`
4
+ `:k+=_.value}return k.trim()}const Pe=["+","-","~","!","++","--"],ot=[">>=","<<=","|=","&=","^=","%=","/=","*=","-=","+=","=","?","||","^^","&&","|","^","&","!=","==",">=","<=",">","<",">>","<<","+","-","%","/","*"],it=/^(void|bool|float|u?int|[uib]?vec\d|mat\d(x\d)?)$/,qe=/^(const|uniform|in|out|inout|centroid|flat|smooth|invariant|lowp|mediump|highp)$/,ut=new RegExp(`${it.source}|${qe.source}|layout`),ct=RegExp.prototype.test.bind(ut),pt=RegExp.prototype.test.bind(/^[\(\[\{]$/),mt=RegExp.prototype.test.bind(/^[\)\]\}]$/);function j(e){return pt(e.value)?1:mt(e.value)?-1:0}let m=[],n=0;function w(e,t,a=0){const r=[];let s=0;for(;a<t.length;){const c=t[a++];if(r.push(c),s+=j(c),s===0&&c.value===e)break}return r}function b(e){const t=w(e,m,n);return n+=t.length,t}function i(e){var t,a,r;if(e.length===0)return null;const s=e[0],c=e[e.length-1];if(Pe.includes(s.value)){const u=i(e.slice(1));return new G(s.value,null,u)}else if(Pe.includes(c.value)){const u=i(e.slice(0,e.length-1));return new G(c.value,u,null)}if(s.value==="("){const u=w(")",e),o=i(u.slice(1,u.length-1)),d=e[u.length];if(d){const h=e.slice(u.length+1),f=i(h);return new I(d.value,o,f)}return o}let l=0;for(const u of ot)for(let o=0;o<e.length;o++){const d=e[o];if(d.type==="symbol"){if(l+=j(d),l===0&&d.value===u)if(u==="?"){const h=e.slice(0,o),f=w(":",e,o+1).slice(0,-1),g=e.slice(o+f.length+2),y=i(h),x=i(f),D=i(g);return new oe(y,x,D)}else{const h=i(e.slice(0,o)),f=i(e.slice(o+1,e.length));return new I(u,h,f)}if(l<0)return i(e.slice(0,o))}}if(s.type==="bool"||s.type==="int"||s.type==="float")return new ne(s.value);if(s.type==="identifier"||s.type==="keyword"){const u=e[1];if(u){if(u.value==="("){const o=new R(s.value),d=[],h=w(")",e,1).slice(1,-1);let f=0;for(;f<h.length;){const x=w(",",h,f);f+=x.length,((t=x[x.length-1])==null?void 0:t.value)===","&&x.pop();const D=i(x);D&&d.push(D)}const g=new ie(o,d);let y=3+f;if(((a=e[y])==null?void 0:a.value)==="."){const x=i([s,...e.slice(y)]);return x.object=g,x}return g}else if(u.value==="."){const o=new R(s.value),d=i([e[2]]),h=new ue(o,d);if(((r=e[3])==null?void 0:r.value)==="("&&c.value===")"){const f=i(e.slice(2));return f.callee=h,f}return h}else if(u.value==="["){let o=2;const d=new E(s.value,[]);e[o].value!=="]"&&d.parameters.push(i([e[o++]])),o++;const h=w(")",e,o).slice(1,-1),f=[];let g=0;for(;g<h.length;){const y=w(",",h,g);g+=y.length,y[y.length-1].value===","&&y.pop(),f.push(i(y))}return new B(d,f)}}else return new R(s.value)}return null}function Ge(e=[],t=null){n--;const a=null,r=new E(m[n++].value,null),s=[],c=b(";");let l=0;for(;l<c.length;){const u=c[l++].value;let o=null;c[l].value==="["&&(l++,o=new B(new E(r.name,[i([c[l++]])]),[]),l++);let d=null;const h=c[l++];if((h==null?void 0:h.value)==="="){const f=w(",",c,l);l+=f.length,d=i(f.slice(0,-1))}s.push(new P(u,d!=null?d:o))}return new q(t,e,a,r,s)}function ft(e){var t,a,r;n--;const s=new E(m[n++].value,null),c=m[n++].value,l=[],u=b(")").slice(1,-1);let o=0;for(;o<u.length;){const h=[];for(;u[o]&&u[o].type!=="identifier";)h.push(u[o++].value);const f=new E(h.pop(),null),g=w(",",u,o);o+=g.length;const y=g.shift().value;let x=null;((t=g[0])==null?void 0:t.value)==="["&&(g.shift(),x=new B(new E(f.name,[i([g.shift()])]),[]),g.shift()),((a=g[g.length-1])==null?void 0:a.value)===","&&g.pop();const D=(r=i(g))!=null?r:x,A=[new P(y,D)];l.push(new q(null,h,null,f,A))}let d=null;return m[n].value===";"?n++:d=L(),new le(c,s,e,l,d)}function Ie(){var e;n--;let t=null;if(m[n].value==="layout"){n++,t={};let r=null;for(;m[n]&&m[n].value!==")";){const s=m[n++];s.value===","&&(r=null),s.type!=="symbol"&&(r?t[r]=s.value:(r=s.value,t[r]=!0))}n++}const a=[];for(;m[n]&&qe.test(m[n].value);)a.push(m[n++].value);return n++,((e=m[n+1])==null?void 0:e.value)==="("?ft(a):Ge(a,t)}function dt(){const e=m[n++].value;n++;const t=[];for(;m[n]&&m[n].value!=="}";)n++,t.push(Ie());return n++,n++,new se(e,t)}function ht(){const e=b(";");e.pop();const t=i(e);return new ve(t)}function Ve(){const e=i(b(")")),t=L();let a=null;return m[n].value==="else"&&(n++,m[n].value==="if"?(n++,a=Ve()):a=L()),new pe(e,t,a)}function vt(){const e=i(b(")")),t=L();return new fe(e,t)}function gt(){const e=n+(w(")",m,n).length-1);n++,n++;const t=Ge(),a=i(b(";").slice(0,-1)),r=i(m.slice(n,e));n=e,n++;const s=L();return new me(t,a,r,s)}function xt(){const e=L();n++;const t=i(b(")"));return n++,new de(t,e)}function yt(){const e=i(b(")")),t=n+w("}",m,n).length-1,a=[];for(;n<t;){const r=m[n++];if(r.value==="case"){const s=i(b(":").slice(0,-1)),c=T();a.push(new V(s,c))}else if(r.value==="default"){n++;const s=T();a.push(new V(null,s))}}return new he(e,a)}function _t(){const e=m[n++].value,t=new E(m[n++].value,null);return n++,new xe(e,t)}function wt(){const e=m[n++].value,t=b("\\").slice(0,-1);let a=null;if(e!=="else"&&e!=="endif")if(a=[],e==="define"){const r=i([t.shift()]),s=i(t);a.push(r,s)}else if(e==="extension"){const r=i([t.shift()]);t.shift();const s=i(t);a.push(r,s)}else e==="include"?a.push(i(t.slice(1,-1))):a.push(i(t));return new ge(e,a)}function T(){const e=[];let t=0;for(;n<m.length;){const a=m[n++];if(t+=j(a),t<0)break;let r=null;if(a.value==="#")r=wt();else if(a.type==="keyword")if(a.value==="case"||a.value==="default"){n--;break}else a.value==="struct"?r=dt():a.value==="continue"?(r=new ye,n++):a.value==="break"?(r=new _e,n++):a.value==="discard"?(r=new we,n++):a.value==="return"?r=ht():a.value==="if"?r=Ve():a.value==="while"?r=vt():a.value==="for"?r=gt():a.value==="do"?r=xt():a.value==="switch"?r=yt():a.value==="precision"?r=_t():ct(a.value)&&m[n].value!=="["&&(r=Ie());if(r)e.push(r);else{const s=[a,...b(";")];s[s.length-1].value===";"&&s.pop();const c=i(s);c&&e.push(c)}}return e}function L(){n++;const e=T();return new ce(e)}const bt=/(^\s*#[^\\]*?)(\n|\/[\/\*])/gm;function Dt(e){return e=e.replace("#version 300 es",""),e=e.replace(bt,"$1\\$2"),m=$(e).filter(t=>t.type!=="whitespace"&&t.type!=="comment"),n=0,T()}export{B as ArrayExpression,I as BinaryExpression,ce as BlockStatement,_e as BreakStatement,ie as CallExpression,ye as ContinueStatement,we as DiscardStatement,de as DoWhileStatement,me as ForStatement,le as FunctionDeclaration,De as GLSL_KEYWORDS,Ee as GLSL_SYMBOLS,R as Identifier,pe as IfStatement,ne as Literal,ue as MemberExpression,xe as PrecisionStatement,ge as PreprocessorStatement,ve as ReturnStatement,se as StructDeclaration,V as SwitchCase,he as SwitchStatement,oe as TernaryExpression,E as Type,G as UnaryExpression,q as VariableDeclaration,P as VariableDeclarator,be as WGSL_KEYWORDS,ke as WGSL_SYMBOLS,fe as WhileStatement,lt as minify,Dt as parse,$ 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","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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"}
1
+ {"version":3,"file":"index.js","sources":["../src/ast.ts","../src/constants.ts","../src/tokenizer.ts","../src/minifier.ts","../src/parser.ts"],"sourcesContent":null,"names":["Literal","value","Identifier","Type","name","parameters","VariableDeclarator","VariableDeclaration","layout","qualifiers","kind","type","declarations","StructDeclaration","members","FunctionDeclaration","args","body","UnaryExpression","operator","left","right","BinaryExpression","TernaryExpression","test","consequent","alternate","CallExpression","callee","MemberExpression","object","property","ArrayExpression","BlockStatement","IfStatement","ForStatement","init","update","WhileStatement","DoWhileStatement","SwitchCase","SwitchStatement","discriminant","cases","ReturnStatement","argument","PreprocessorStatement","PrecisionStatement","precision","ContinueStatement","BreakStatement","DiscardStatement","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","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","UNARY_OPERATORS","BINARY_OPERATORS","TYPE_REGEX","QUALIFIER_REGEX","VARIABLE_REGEX","isDeclaration","isOpen","isClose","getScopeDelta","readUntil","offset","output","scopeIndex","consumeUntil","parseExpression","first","last","leftBody","rightBody","testBody","consequentBody","alternateBody","second","scope","line","arg","expression","next","parseVariable","delimiter","parseFunction","header","parseBlock","parseIndeterminate","key","parseStruct","parseReturn","parseIf","parseWhile","parseFor","delimiterIndex","parseDoWhile","parseSwitch","parseStatements","parsePrecision","parsePreprocessor","statement","DIRECTIVE_REGEX","parse"],"mappings":"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A,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,GAAgB,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,SAG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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shaderkit",
3
- "version": "0.1.14",
3
+ "version": "0.2.1",
4
4
  "description": "Tools and IntelliSense for GLSL and WGSL.",
5
5
  "keywords": [
6
6
  "shaders",
@@ -37,9 +37,9 @@
37
37
  },
38
38
  "sideEffects": false,
39
39
  "devDependencies": {
40
- "typescript": "^4.9.5",
41
- "vite": "^4.1.2",
42
- "vitest": "^0.28.5"
40
+ "typescript": "^5.7.2",
41
+ "vite": "^6.0.6",
42
+ "vitest": "^2.1.8"
43
43
  },
44
44
  "scripts": {
45
45
  "dev": "vite",
package/src/ast.ts ADDED
@@ -0,0 +1,137 @@
1
+ export class Literal {
2
+ constructor(public value: string /*| number | boolean*/) {}
3
+ }
4
+
5
+ export class Identifier {
6
+ constructor(public value: string) {}
7
+ }
8
+
9
+ export class Type {
10
+ constructor(public name: string, public parameters: (Type | Literal | Identifier)[] | null) {}
11
+ }
12
+
13
+ export class VariableDeclarator {
14
+ constructor(public name: string, public value: AST | null) {}
15
+ }
16
+
17
+ export class VariableDeclaration {
18
+ constructor(
19
+ public layout: Record<string, string | boolean> | null,
20
+ public qualifiers: string[],
21
+ public kind: 'var' | 'let' | 'const' | null,
22
+ public type: Type | Identifier,
23
+ public declarations: VariableDeclarator[],
24
+ ) {}
25
+ }
26
+
27
+ export class StructDeclaration {
28
+ constructor(public name: string, public members: VariableDeclaration[]) {}
29
+ }
30
+
31
+ export class FunctionDeclaration {
32
+ constructor(
33
+ public name: string,
34
+ public type: Type | Identifier,
35
+ public qualifiers: string[],
36
+ public args: VariableDeclaration[],
37
+ public body: BlockStatement | null,
38
+ ) {}
39
+ }
40
+
41
+ export class UnaryExpression {
42
+ constructor(public operator: string, public left: AST | null, public right: AST | null) {}
43
+ }
44
+
45
+ export class BinaryExpression {
46
+ constructor(public operator: string, public left: AST, public right: AST) {}
47
+ }
48
+
49
+ export class TernaryExpression {
50
+ constructor(public test: AST, public consequent: AST, public alternate: AST) {}
51
+ }
52
+
53
+ export class CallExpression {
54
+ constructor(public callee: AST, public args: AST[]) {}
55
+ }
56
+
57
+ export class MemberExpression {
58
+ constructor(public object: AST, public property: AST) {}
59
+ }
60
+
61
+ export class ArrayExpression {
62
+ constructor(public type: Type, public members: AST[]) {}
63
+ }
64
+
65
+ export class BlockStatement {
66
+ constructor(public body: AST[]) {}
67
+ }
68
+
69
+ export class IfStatement {
70
+ constructor(public test: AST, public consequent: AST, public alternate: AST | null) {}
71
+ }
72
+
73
+ export class ForStatement {
74
+ constructor(public init: AST | null, public test: AST | null, public update: AST | null, public body: AST) {}
75
+ }
76
+
77
+ export class WhileStatement {
78
+ constructor(public test: AST, public body: AST) {}
79
+ }
80
+
81
+ export class DoWhileStatement {
82
+ constructor(public test: AST, public body: AST) {}
83
+ }
84
+
85
+ export class SwitchCase {
86
+ constructor(public test: AST | null, public consequent: AST[]) {}
87
+ }
88
+
89
+ export class SwitchStatement {
90
+ constructor(public discriminant: AST, public cases: SwitchCase[]) {}
91
+ }
92
+
93
+ export class ReturnStatement {
94
+ constructor(public argument: Literal | Identifier | UnaryExpression | null) {}
95
+ }
96
+
97
+ export class PreprocessorStatement {
98
+ constructor(public name: string, public value: AST[] | null) {}
99
+ }
100
+
101
+ export class PrecisionStatement {
102
+ constructor(public precision: 'lowp' | 'mediump' | 'highp', public type: Type) {}
103
+ }
104
+
105
+ export class ContinueStatement {}
106
+
107
+ export class BreakStatement {}
108
+
109
+ export class DiscardStatement {}
110
+
111
+ export type AST =
112
+ | Literal
113
+ | Identifier
114
+ | Type
115
+ | VariableDeclarator
116
+ | VariableDeclaration
117
+ | StructDeclaration
118
+ | FunctionDeclaration
119
+ | UnaryExpression
120
+ | BinaryExpression
121
+ | TernaryExpression
122
+ | CallExpression
123
+ | MemberExpression
124
+ | ArrayExpression
125
+ | BlockStatement
126
+ | IfStatement
127
+ | ForStatement
128
+ | WhileStatement
129
+ | DoWhileStatement
130
+ | SwitchCase
131
+ | SwitchStatement
132
+ | ReturnStatement
133
+ | PreprocessorStatement
134
+ | PrecisionStatement
135
+ | ContinueStatement
136
+ | BreakStatement
137
+ | DiscardStatement
package/src/constants.ts CHANGED
@@ -813,6 +813,21 @@ export const GLSL_KEYWORDS = [
813
813
  // Additional directives
814
814
  '#include',
815
815
 
816
+ // WebGL1 (three.js)
817
+ // 'attribute',
818
+ // 'varying',
819
+ 'gl_FragColor',
820
+ 'gl_FragDepthEXT',
821
+ 'texture2D',
822
+ 'textureCube',
823
+ 'texture2DProj',
824
+ 'texture2DLodEXT',
825
+ 'texture2DProjLodEXT',
826
+ 'textureCubeLodEXT',
827
+ 'texture2DGradEXT',
828
+ 'texture2DProjGradEXT',
829
+ 'textureCubeGradEXT',
830
+
816
831
  // WEBGL_multi_draw https://registry.khronos.org/webgl/extensions/WEBGL_multi_draw
817
832
  'gl_DrawID', // vertex only
818
833
 
@@ -0,0 +1,170 @@
1
+ import {
2
+ type AST,
3
+ Literal,
4
+ Identifier,
5
+ Type,
6
+ BlockStatement,
7
+ VariableDeclaration,
8
+ FunctionDeclaration,
9
+ CallExpression,
10
+ MemberExpression,
11
+ ArrayExpression,
12
+ IfStatement,
13
+ WhileStatement,
14
+ ForStatement,
15
+ DoWhileStatement,
16
+ SwitchStatement,
17
+ SwitchCase,
18
+ StructDeclaration,
19
+ UnaryExpression,
20
+ BinaryExpression,
21
+ TernaryExpression,
22
+ ReturnStatement,
23
+ PrecisionStatement,
24
+ ContinueStatement,
25
+ BreakStatement,
26
+ DiscardStatement,
27
+ PreprocessorStatement,
28
+ } from './ast'
29
+
30
+ const EOL_REGEX = /\n$/
31
+
32
+ // Punctuates expression statements
33
+ function punctuate(line: string): string {
34
+ if (!line.endsWith('\n')) line = line + ';\n'
35
+ return line
36
+ }
37
+
38
+ // TODO: GLSL-only
39
+ function format(node: AST | null): string {
40
+ let line = ''
41
+
42
+ if (node instanceof Literal || node instanceof Identifier) {
43
+ line = node.value
44
+ } else if (node instanceof Type) {
45
+ line = node.parameters ? `${node.name}<${node.parameters.map(format).join(', ')}>` : node.name
46
+ } else if (node instanceof BlockStatement) {
47
+ const cr = node.body.length ? '\n' : ''
48
+ line = `{${cr}${node.body.map((node) => ' ' + punctuate(format(node))).join('')}}\n`
49
+ } else if (node instanceof VariableDeclaration) {
50
+ let layout = ''
51
+ if (node.layout) {
52
+ const args: string[] = []
53
+ for (const key in node.layout) {
54
+ const value = node.layout[key]
55
+ if (typeof value === 'string') args.push(`${key} = ${value}`)
56
+ else args.push(key)
57
+ }
58
+ layout = `layout(${args.join(', ')}) `
59
+ }
60
+
61
+ const qualifiers = node.qualifiers.length ? `${node.qualifiers.join(' ')} ` : ''
62
+
63
+ let type = format(node.type)
64
+
65
+ let body = ''
66
+ if (node.declarations.length) {
67
+ const members: string[] = []
68
+ for (const declaration of node.declarations) {
69
+ let value = ''
70
+
71
+ if (declaration.value instanceof ArrayExpression) {
72
+ const t = declaration.value.type
73
+ const params = t.parameters ? t.parameters?.map(format).join(', ') : ''
74
+ value = `[${params}]`
75
+
76
+ if (declaration.value.members.length) {
77
+ value += ` = ${type}[${params}](${declaration.value.members.map(format).join(', ')})`
78
+ }
79
+ } else if (declaration.value) {
80
+ value = ` = ${format(declaration.value)}`
81
+ }
82
+
83
+ members.push(`${declaration.name}${value}`)
84
+ }
85
+ body = members.join(', ')
86
+ }
87
+
88
+ line = `${layout}${qualifiers}${type} ${body};\n`.trimStart()
89
+ } else if (node instanceof FunctionDeclaration) {
90
+ const qualifiers = node.qualifiers.length ? `${node.qualifiers.join(' ')} ` : ''
91
+ const args = node.args.map((node) => format(node).replace(';\n', '')).join(', ')
92
+ const body = node.body ? ` ${format(node.body)}` : ';\n'
93
+ line = `${qualifiers}${format(node.type)} ${node.name}(${args})${body}`
94
+ } else if (node instanceof CallExpression) {
95
+ line = `${format(node.callee)}(${node.args.map(format).join(', ')})`
96
+ } else if (node instanceof MemberExpression) {
97
+ line = `${format(node.object)}.${format(node.property)}`
98
+ } else if (node instanceof ArrayExpression) {
99
+ const params = node.type.parameters ? node.type.parameters?.map(format).join(', ') : ''
100
+ line = `${node.type.name}[${params}](${node.members.map(format).join(', ')})`
101
+ } else if (node instanceof IfStatement) {
102
+ const consequent = format(node.consequent).replace(EOL_REGEX, '')
103
+ const alternate = node.alternate ? ` else ${format(node.alternate).replace(EOL_REGEX, '')}` : ''
104
+ line = `if (${format(node.test)}) ${consequent}${alternate}\n`
105
+ } else if (node instanceof WhileStatement) {
106
+ line = `while (${format(node.test)}) ${format(node.body)}`
107
+ } else if (node instanceof ForStatement) {
108
+ const init = format(node.init).replace(';\n', '')
109
+ line = `for (${init}; ${format(node.test)}; ${format(node.update)}) ${format(node.body)}`
110
+ } else if (node instanceof DoWhileStatement) {
111
+ line = `do ${format(node.body).replace(EOL_REGEX, '')} while (${format(node.test)});\n`
112
+ } else if (node instanceof SwitchStatement) {
113
+ const cr = node.cases.length ? '\n' : ''
114
+ line = `switch (${format(node.discriminant)}) {${cr}${node.cases.map(format).join('')}}\n`
115
+ } else if (node instanceof SwitchCase) {
116
+ const header = node.test ? `case ${format(node.test)}:` : 'default:'
117
+ line = ` ${header}\n${node.consequent.map((node) => ` ${punctuate(format(node))}`).join('')}`
118
+ } else if (node instanceof StructDeclaration) {
119
+ const cr = node.members.length ? '\n' : ''
120
+ line = `struct ${node.name} {${cr}${node.members.map((node) => ` ${format(node)}`).join('')}};\n`
121
+ } else if (node instanceof UnaryExpression) {
122
+ line = node.left ? `${format(node.left)}${node.operator}` : `${node.operator}${format(node.right)}`
123
+ } else if (node instanceof BinaryExpression) {
124
+ line = `${format(node.left)} ${node.operator} ${format(node.right)}`
125
+ } else if (node instanceof TernaryExpression) {
126
+ line = `${format(node.test)} ? ${format(node.consequent)} : ${format(node.alternate)}`
127
+ } else if (node instanceof ReturnStatement) {
128
+ line = node.argument ? `return ${format(node.argument)};\n` : `return;\n`
129
+ } else if (node instanceof PrecisionStatement) {
130
+ line = `precision ${node.precision} ${node.type.name};\n`
131
+ } else if (node instanceof ContinueStatement) {
132
+ line = 'continue;\n'
133
+ } else if (node instanceof BreakStatement) {
134
+ line = 'break;\n'
135
+ } else if (node instanceof DiscardStatement) {
136
+ line = 'discard;\n'
137
+ } else if (node instanceof PreprocessorStatement) {
138
+ let value = ''
139
+ if (node.value) {
140
+ if (node.name === 'include') {
141
+ value = ` <${format(node.value[0])}>`
142
+ } else if (node.name === 'extension') {
143
+ value = ` ${node.value.map(format).join(': ')}`
144
+ } else {
145
+ value = ` ${node.value.map(format).join(' ')}`
146
+ }
147
+ }
148
+
149
+ line = `#${node.name}${value}\n`
150
+ }
151
+
152
+ return line
153
+ }
154
+
155
+ export interface GenerateOptions {
156
+ target: 'GLSL' // | 'WGSL'
157
+ }
158
+
159
+ /**
160
+ * Generates a string of GLSL (WGSL WIP) code from an [AST](https://en.wikipedia.org/wiki/Abstract_syntax_tree).
161
+ */
162
+ export function generate(ast: AST[], options: GenerateOptions): string {
163
+ let code = '#version 300 es\n'
164
+
165
+ for (let i = 0; i < ast.length; i++) {
166
+ code += punctuate(format(ast[i]))
167
+ }
168
+
169
+ return code.trim()
170
+ }
package/src/index.ts CHANGED
@@ -1,3 +1,5 @@
1
+ export * from './ast'
1
2
  export * from './constants'
2
3
  export * from './minifier'
4
+ export * from './parser'
3
5
  export * from './tokenizer'