shaderkit 0.6.1 → 0.6.3

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,10 +1,10 @@
1
- const w=["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","fn","for","if","let","loop","override","return","struct","switch","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"],k=["const","uniform","layout","centroid","flat","smooth","break","continue","do","for","while","switch","case","default","if","else","in","out","inout","float","int","void","bool","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","buffer","shared","gl_HelperInvocation","gl_NumWorkGroups","gl_WorkGroupSize","gl_WorkGroupID","gl_LocalInvocationID","gl_GlobalInvocationID","gl_LocalInvocationIndex","gl_MaxImageUnits","gl_MaxVertexImageUniforms","gl_MaxFragmentImageUniforms","gl_MaxComputeImageUniforms","gl_MaxCombinedImageUniforms","gl_MaxCombinedShaderOutputResources","gl_MaxComputeWorkGroupCount","gl_MaxComputeWorkGroupSize","gl_MaxComputeUniformComponents","gl_MaxComputeTextureImageUnits","gl_MaxComputeAtomicCounters","gl_MaxComputeAtomicCounterBuffers","gl_MaxVertexAtomicCounters","gl_MaxFragmentAtomicCounters","gl_MaxCombinedAtomicCounters","gl_MaxAtomicCounterBindings","gl_MaxFragmentAtomicCounterBuffers","gl_MaxVertexAtomicCounterBuffers","gl_MaxCombinedAtomicCounterBuffers","gl_MaxAtomicCounterBufferSize","imageSize","packUnorm4x8","packSnorm4x8","unpackUnorm4x8","unpackSnorm4x8","bitfieldExtract","bitfieldInsert","bitfieldReverse","bitCount","findLSB","findMSB","uaddCarry","usubBorrow","umulExtended","imulExtended","atomicCounterIncrement","atomicCounterDecrement","atomicCounter","atomicAdd","atomicMin","atomicMax","atomicAnd","atomicOr","atomicXor","atomicExchange","atomicCompSwap","imageLoad","imageStore","barrier","memoryBarrier","memoryBarrierAtomicCounter","memoryBarrierBuffer","memoryBarrierImage","memoryBarrierShared","groupMemoryBarrier"],U=["//","/*","*/",":",",",".","{","[","(","?","}","]",")",";","~","--","++","!","&","|","^","/","==",">",">=","<","<=","&&","||","^^","-","*","!=","+","%","<<",">>","=","+=","&=","|=","^=","/=","*=","%=","<<=",">>=","-="],P=[...U,"#","\\"],q=[...U,"->","@"];function E(e){return e?`layout(${Object.entries(e).map(([r,t])=>t===!0?r:`${r}=${t}`).join(",")})`:""}function s(e){if(!e)return"";switch(e.type){case"Identifier":return e.name;case"Literal":return e.value;case"ArraySpecifier":return`${e.typeSpecifier.name}${e.dimensions.map(r=>`[${s(r)}]`).join("")}`;case"ExpressionStatement":return`${s(e.expression)};`;case"BlockStatement":return`{${e.body.map(s).join("")}}`;case"DiscardStatement":return"discard;";case"PreprocessorStatement":{let r="";return e.value&&(e.name==="include"?r=` <${s(e.value[0])}>`:e.name==="extension"?r=` ${e.value.map(s).join(":")}`:e.value.length&&(r=` ${e.value.map(s).join(" ")}`)),`
1
+ const E=["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","fn","for","if","let","loop","override","return","struct","switch","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"],C=["const","uniform","layout","centroid","flat","smooth","break","continue","do","for","while","switch","case","default","if","else","in","out","inout","float","int","void","bool","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","buffer","shared","gl_HelperInvocation","gl_NumWorkGroups","gl_WorkGroupSize","gl_WorkGroupID","gl_LocalInvocationID","gl_GlobalInvocationID","gl_LocalInvocationIndex","gl_MaxImageUnits","gl_MaxVertexImageUniforms","gl_MaxFragmentImageUniforms","gl_MaxComputeImageUniforms","gl_MaxCombinedImageUniforms","gl_MaxCombinedShaderOutputResources","gl_MaxComputeWorkGroupCount","gl_MaxComputeWorkGroupSize","gl_MaxComputeUniformComponents","gl_MaxComputeTextureImageUnits","gl_MaxComputeAtomicCounters","gl_MaxComputeAtomicCounterBuffers","gl_MaxVertexAtomicCounters","gl_MaxFragmentAtomicCounters","gl_MaxCombinedAtomicCounters","gl_MaxAtomicCounterBindings","gl_MaxFragmentAtomicCounterBuffers","gl_MaxVertexAtomicCounterBuffers","gl_MaxCombinedAtomicCounterBuffers","gl_MaxAtomicCounterBufferSize","imageSize","packUnorm4x8","packSnorm4x8","unpackUnorm4x8","unpackSnorm4x8","bitfieldExtract","bitfieldInsert","bitfieldReverse","bitCount","findLSB","findMSB","uaddCarry","usubBorrow","umulExtended","imulExtended","atomicCounterIncrement","atomicCounterDecrement","atomicCounter","atomicAdd","atomicMin","atomicMax","atomicAnd","atomicOr","atomicXor","atomicExchange","atomicCompSwap","imageLoad","imageStore","barrier","memoryBarrier","memoryBarrierAtomicCounter","memoryBarrierBuffer","memoryBarrierImage","memoryBarrierShared","groupMemoryBarrier"],U=["//","/*","*/",":",",",".","{","[","(","?","}","]",")",";","~","--","++","!","&","|","^","/","==",">",">=","<","<=","&&","||","^^","-","*","!=","+","%","<<",">>","=","+=","&=","|=","^=","/=","*=","%=","<<=",">>=","-="],P=[...U,"#","\\"],q=[...U,"->","@"];function A(e){return e?`layout(${Object.entries(e).map(([r,t])=>t===!0?r:`${r}=${t}`).join(",")})`:""}function u(e){if(!e)return"";switch(e.type){case"Identifier":return e.name;case"Literal":return e.value;case"ArraySpecifier":return`${e.typeSpecifier.name}${e.dimensions.map(r=>`[${u(r)}]`).join("")}`;case"ExpressionStatement":return`${u(e.expression)};`;case"BlockStatement":return`{${e.body.map(u).join("")}}`;case"DiscardStatement":return"discard;";case"PreprocessorStatement":{let r="";return e.value&&(e.name==="include"?r=` <${u(e.value[0])}>`:e.name==="extension"?r=` ${e.value.map(u).join(":")}`:e.value.length&&(r=` ${e.value.map(u).join(" ")}`)),`
2
2
  #${e.name}${r}
3
- `}case"PrecisionQualifierStatement":return`precision ${e.precision} ${e.typeSpecifier.name};`;case"InvariantQualifierStatement":return`invariant ${s(e.typeSpecifier)};`;case"LayoutQualifierStatement":return`${E(e.layout)}${e.qualifier};`;case"ReturnStatement":return e.argument?`return ${s(e.argument)};`:"return;";case"BreakStatement":return"break;";case"ContinueStatement":return"continue;";case"IfStatement":{const r=e.alternate?` else${s(e.consequent)}`:"";return`if(${s(e.test)})${s(e.consequent)}${r}`}case"SwitchStatement":return`switch(${s(e.discriminant)}){${e.cases.map(s).join("")}}`;case"SwitchCase":return`case ${e.test?s(e.test):"default"}:{${e.consequent.map(s).join(";")}}`;case"WhileStatement":return`while (${s(e.test)}) ${s(e.body)}`;case"DoWhileStatement":return`do ${s(e.body)}while(${s(e.test)})`;case"ForStatement":return`for(${s(e.init)};${s(e.test)};${s(e.update)})${s(e.body)}`;case"FunctionDeclaration":{const r=e.qualifiers.length?`${e.qualifiers.join(" ")} `:"",t=e.body?s(e.body):";";return`${r}${s(e.typeSpecifier)} ${s(e.id)}(${e.params.map(s).join(",")})${t}`}case"FunctionParameter":{const r=e.qualifiers.length?`${e.qualifiers.join(" ")} `:"",t=e.id?` ${s(e.id)}`:"";return`${r}${s(e.typeSpecifier)}${t}`}case"VariableDeclaration":{const r=e.declarations[0],t=E(r.layout),n=r.qualifiers.length?`${r.qualifiers.join(" ")} `:"";return`${t}${n}${s(r.typeSpecifier)} ${e.declarations.map(s).join(",")};`}case"VariableDeclarator":{const r=e.init?`=${s(e.init)}`:"";return`${s(e.id)}${r}`}case"StructuredBufferDeclaration":{const r=E(e.layout),t=e.id?`${s(e.id)}`:"";return`${r}${e.qualifiers.join(" ")} ${s(e.typeSpecifier)}{${e.members.map(s).join("")}}${t};`}case"StructDeclaration":return`struct ${s(e.id)}{${e.members.map(s).join("")}};`;case"ArrayExpression":return`${s(e.typeSpecifier)}(${e.elements.map(s).join(",")})`;case"UnaryExpression":case"UpdateExpression":return e.prefix?`${e.operator}${s(e.argument)}`:`${s(e.argument)}${e.operator}`;case"BinaryExpression":case"AssignmentExpression":case"LogicalExpression":return`${s(e.left)}${e.operator}${s(e.right)}`;case"MemberExpression":return e.computed?`${s(e.object)}[${s(e.property)}]`:`${s(e.object)}.${s(e.property)}`;case"ConditionalExpression":return`${s(e.test)}?${s(e.alternate)}:${s(e.consequent)}`;case"CallExpression":return`${s(e.callee)}(${e.arguments.map(s).join(",")})`;case"Program":return`${e.body.map(s).join("")}`;default:return e}}function ee(e,r){return s(e).replaceAll(`
3
+ `}case"PrecisionQualifierStatement":return`precision ${e.precision} ${e.typeSpecifier.name};`;case"InvariantQualifierStatement":return`invariant ${u(e.typeSpecifier)};`;case"LayoutQualifierStatement":return`${A(e.layout)}${e.qualifier};`;case"ReturnStatement":return e.argument?`return ${u(e.argument)};`:"return;";case"BreakStatement":return"break;";case"ContinueStatement":return"continue;";case"IfStatement":{const r=e.alternate?` else${u(e.consequent)}`:"";return`if(${u(e.test)})${u(e.consequent)}${r}`}case"SwitchStatement":return`switch(${u(e.discriminant)}){${e.cases.map(u).join("")}}`;case"SwitchCase":return`case ${e.test?u(e.test):"default"}:{${e.consequent.map(u).join(";")}}`;case"WhileStatement":return`while (${u(e.test)}) ${u(e.body)}`;case"DoWhileStatement":return`do ${u(e.body)}while(${u(e.test)})`;case"ForStatement":return`for(${u(e.init)};${u(e.test)};${u(e.update)})${u(e.body)}`;case"FunctionDeclaration":{const r=e.qualifiers.length?`${e.qualifiers.join(" ")} `:"",t=e.body?u(e.body):";";return`${r}${u(e.typeSpecifier)} ${u(e.id)}(${e.params.map(u).join(",")})${t}`}case"FunctionParameter":{const r=e.qualifiers.length?`${e.qualifiers.join(" ")} `:"",t=e.id?` ${u(e.id)}`:"";return`${r}${u(e.typeSpecifier)}${t}`}case"VariableDeclaration":{const r=e.declarations[0],t=A(r.layout),n=r.qualifiers.length?`${r.qualifiers.join(" ")} `:"";return`${t}${n}${u(r.typeSpecifier)} ${e.declarations.map(u).join(",")};`}case"VariableDeclarator":{const r=e.init?`=${u(e.init)}`:"";return`${u(e.id)}${r}`}case"StructuredBufferDeclaration":{const r=A(e.layout),t=e.id?`${u(e.id)}`:"";return`${r}${e.qualifiers.join(" ")} ${u(e.typeSpecifier)}{${e.members.map(u).join("")}}${t};`}case"StructDeclaration":return`struct ${u(e.id)}{${e.members.map(u).join("")}};`;case"ArrayExpression":return`${u(e.typeSpecifier)}(${e.elements.map(u).join(",")})`;case"UnaryExpression":case"UpdateExpression":return e.prefix?`${e.operator}${u(e.argument)}`:`${u(e.argument)}${e.operator}`;case"BinaryExpression":case"AssignmentExpression":case"LogicalExpression":return`${u(e.left)}${e.operator}${u(e.right)}`;case"MemberExpression":return e.computed?`${u(e.object)}[${u(e.property)}]`:`${u(e.object)}.${u(e.property)}`;case"ConditionalExpression":return`${u(e.test)}?${u(e.alternate)}:${u(e.consequent)}`;case"CallExpression":return`${u(e.callee)}(${e.arguments.map(u).join(",")})`;case"Program":return`${e.body.map(u).join("")}`;default:return e}}function re(e,r){return u(e).replaceAll(`
4
4
 
5
5
  `,`
6
- `).replaceAll("] ","]").trim()}const te=/\bfn\s+\w+\s*\(|\b(var|let|const)\s+\w+\s*[:=]/,j=/((\d+\.\d*|\d*\.\d+)([eEpP][-+]?\d+)?|\d+[eEpP][-+]?\d+)[fFhH]?/y,F=/(0[xX][\w\d]+|\d+)[iIuU]?/y,re=/^(true|false)$/,ae=48,ne=57,ie=65,oe=90,se=10,ue=13,le=9,ce=32,pe=95,me=46,R=47,T=42,fe=35,de=64,C=e=>ae<=e&&e<=ne,xe=e=>(e&=-33,ie<=e&&e<=oe),ge=e=>e===se||e===ue,G=e=>ge(e)||e===le||e===ce,O=e=>xe(e)||C(e)||e===pe,ve=e=>e===fe||e===de;function V(e,r,t){return e.lastIndex=t,e.exec(r)?.[0]}function A(e,r=0){const t=[];let n=-1;const[u,o]=te.test(e)?[w,q]:[k,P];for(;r<e.length;){let i=e[r];const m=e.charCodeAt(r++);if(G(m)){for(;G(e.charCodeAt(r));)i+=e[r++];t.push({type:"whitespace",value:i})}else if(C(m)||m===me&&C(e.charCodeAt(r)))(i=V(j,e,r-1))?(r=j.lastIndex,t.push({type:"float",value:i})):(i=V(F,e,r-1))&&(r=F.lastIndex,t.push({type:"int",value:i}));else if(O(m)){for(;O(e.charCodeAt(r));)i+=e[r++];re.test(i)?t.push({type:"bool",value:i}):u.includes(ve(n)?String.fromCharCode(n)+i:i)?t.push({type:"keyword",value:i}):t.push({type:"identifier",value:i})}else if(m===R&&(e.charCodeAt(r)===R||e.charCodeAt(r)===T)){const f=e.charCodeAt(r)===T?"*/":`
7
- `;for(;r<e.length&&!i.endsWith(f);)i+=e[r++];t.push({type:"comment",value:i.trim()})}else{for(const f of o)f.length>i.length&&e.startsWith(f,r-1)&&(i=f);r+=i.length-1,t.push({type:"symbol",value:i})}n=m}return t}const W=/*@__PURE__*/RegExp.prototype.test.bind(/^\w/),ye=/*@__PURE__*/RegExp.prototype.test.bind(/[^\w\\]/),z=/*@__PURE__*/RegExp.prototype.test.bind(/^[_A-Za-z]/),he=/*@__PURE__*/RegExp.prototype.test.bind(/[;{}\\@]/),X=/*@__PURE__*/RegExp.prototype.test.bind(/^(binding|group|layout|uniform|in|out|attribute|varying)$/),be=/\bfn\s+\w+\s*\(|\b(var|let|const)\s+\w+\s*[:=]/,_e=/\\\s+/gm,Se=/(^\s*#[^\\]*?)(\n|\/[\/\*])/gm;function $e(e,{mangle:r=!1,mangleMap:t=/*@__PURE__*/new Map,mangleExternals:n=!1}={}){e=e.replace(_e,""),e=e.replace(Se,"$1\\$2");const u=be.test(e)?w:k,o=/*@__PURE__*/new Map,i=A(e).filter(c=>c.type!=="whitespace"&&c.type!=="comment");let m=-1,f=-1,$=-1,x="";for(let c=0;c<i.length;c++){const d=i[c];if((X(d.value)||he(i[c-1]?.value))&&(f=c),d.value==="{"&&z(i[c-1]?.value)?$=c-1:d.value==="}"&&($=-1),W(d.value)&&W(i[c-1]?.value)&&(x+=" "),ye(d.value)&&(i[c-2]?.value==="#"&&i[c-1]?.value==="include"||i[c-2]?.value==="#"&&i[c-1]?.value==="if"||i[c-2]?.value==="#"&&i[c-1]?.value==="elif"||i[c-3]?.value==="#"&&i[c-2]?.value==="define"))if(d.value==="("){for(;c<i.length;){const h=i[c++];if(x+=h.value,h.value===")")break}x+=" "+i[c].value;continue}else x+=" ";let y=d.value;if(i[c-1]?.value==="."&&(y=`${i[c-2]?.value}.`+y),d.type==="identifier"&&y!=="main"&&(typeof r=="boolean"?r:r(d,c,i))){const h=i[c-1]?.value==="}"&&i[c+1]?.value===";",D=X(i[f]?.value),I=D&&i[c-1]?.value===",";let g=t.get(y)??o.get(y);if(!g&&$===-1&&(z(i[c-1]?.value)||h||I||i[c-1]?.type==="symbol"&&i[c+1]?.value===":")&&(n||!D)){const L=n&&D||i[c-2]?.value==="#"||h||I||i[c-1]?.value==="fn"&&(i[c-2]?.value===")"||i[c-3]?.value==="@")?t:o;for(;!g||L.has(g)||u.includes(g);){g="",m++;let _=m;for(;_>0;)g=String.fromCharCode(97+(_-1)%26)+g,_=Math.floor(_/26)}L.set(y,g)}x+=g??d.value}else d.value==="#"&&i[c-1]?.value!=="\\"?x+=`
8
- #`:d.value==="\\"?x+=`
9
- `:x+=d.value}return x.trim()}const N={"~":14,"!":14,"--":14,"++":14,"-":14,"+":14},Q={"--":15,"++":15,"(":16,"[":17,".":17},H={"||":3,"^^":4,"&&":5,"|":6,"^":7,"&":8,"==":10,">":10,">=":10,"<":10,"<=":10,"!=":10,"<<":11,">>":11,"+":12,"-":12,"*":13,"/":13,"%":13},Y={"=":2,"+=":2,"&=":2,"|=":2,"^=":2,"/=":2,"*=":2,"%=":2,"<<=":2,">>=":2,"-=":2,"?":9},Z=/^(const|buffer|uniform|in|out|inout|centroid|flat|smooth|invariant|lowp|mediump|highp|coherent|volatile|restrict|readonly|writeonly|attribute|varying)$/,De={"(":1,"[":1,"{":1,")":-1,"]":-1,"}":-1};function M(e){return De[e.value]??0}function a(e,r){const t=e.shift();if(t===void 0&&r!==void 0)throw new SyntaxError(`Expected "${r}"`);if(t===void 0)throw new SyntaxError("Unexpected end of input");if(r!==void 0&&t.value!==r)throw new SyntaxError(`Expected "${r}" got "${t.value}"`);return t}function p(e,r=0){let t=a(e),n;if(t.type==="identifier"||t.type==="keyword")n={type:"Identifier",name:t.value};else if(t.type==="bool"||t.type==="float"||t.type==="int")n={type:"Literal",value:t.value};else if(t.type==="symbol"&&t.value==="(")n=p(e,0),a(e,")");else if(t.type==="symbol"&&t.value in N){const u=N[t.value],o=p(e,u);t.value==="--"||t.value==="++"?n={type:"UpdateExpression",operator:t.value,prefix:!0,argument:o}:n={type:"UnaryExpression",operator:t.value,prefix:!0,argument:o}}else throw new SyntaxError(`Unexpected token: "${t.value}"`);for(;e.length;)if(t=e[0],t.value in Q){const u=Q[t.value];if(u<r)break;if(a(e),t.value==="("){const o=[];for(;e[0]?.value!==")";)o.push(p(e,0)),e[0]?.value!==")"&&a(e,",");a(e,")"),n={type:"CallExpression",callee:n,arguments:o}}else if(t.value==="["){const o=e[0]?.value!=="]"?p(e,0):null;if(a(e,"]"),e[0]?.value==="("){a(e,"(");const i=[];for(;e[0]?.value!==")";)i.push(p(e,0)),e[0]?.value!==")"&&a(e,",");a(e,")"),n={type:"ArrayExpression",typeSpecifier:{type:"ArraySpecifier",typeSpecifier:n,dimensions:[o]},elements:i}}else n={type:"MemberExpression",object:n,property:o,computed:!0}}else if(t.value==="."){const o=p(e,u);n={type:"MemberExpression",object:n,property:o,computed:!1}}else t.value==="--"||t.value==="++"?n={type:"UpdateExpression",operator:t.value,prefix:!1,argument:n}:n={type:"UnaryExpression",operator:t.value,prefix:!1,argument:n}}else if(t.value in H){const u=H[t.value],o=u-1,i=u;if(o<r)break;if(a(e),t.value==="||"||t.value==="&&"||t.value==="^^"){const m=p(e,i);n={type:"LogicalExpression",operator:t.value,left:n,right:m}}else{const m=p(e,i);n={type:"BinaryExpression",operator:t.value,left:n,right:m}}}else if(t.value in Y){const u=Y[t.value],o=u,i=u-1;if(o<r)break;if(a(e),t.value==="?"){const m=p(e,0);a(e,":");const f=p(e,i);n={type:"ConditionalExpression",test:n,alternate:m,consequent:f}}else{const m=p(e,i);n={type:"AssignmentExpression",operator:t.value,left:n,right:m}}}else break;return n}function S(e){let r={type:"Identifier",name:a(e).value};if(e[0]?.value==="["){const t=[];for(;e[0]?.value==="[";)a(e,"["),e[0]?.value!=="]"?t.push(p(e)):t.push(null),a(e,"]");r={type:"ArraySpecifier",typeSpecifier:r,dimensions:t}}return r}function we(e,r,t,n){const u=S(e);let o=null;return e[0]?.value==="="&&(a(e,"="),o=p(e)),{type:"VariableDeclarator",id:u,qualifiers:t,typeSpecifier:r,layout:n,init:o}}function K(e,r,t=[],n=null){const u=[];if(e[0]?.value!==";")for(;e.length&&(u.push(we(e,r,t,n)),e[0]?.value===",");)a(e,",");return a(e,";"),{type:"VariableDeclaration",declarations:u}}function ke(e,r,t=[],n=null){const u=v(e).body;let o=null;return e[0]?.value!==";"&&(o=p(e)),a(e,";"),{type:"StructuredBufferDeclaration",id:o,qualifiers:t,typeSpecifier:r,layout:n,members:u}}function Ee(e,r,t=[]){const n={type:"Identifier",name:a(e).value};a(e,"(");const u=[];for(;e[0]&&e[0].value!==")";){const i=[];for(;e[0]&&Z.test(e[0].value);)i.push(a(e).value);const m=S(e);let f=null;e[0]?.type!=="symbol"&&(f=S(e)),u.push({type:"FunctionParameter",id:f,qualifiers:i,typeSpecifier:m}),e[0]?.value===","&&a(e,",")}a(e,")");let o=null;return e[0].value===";"?a(e,";"):o=v(e),{type:"FunctionDeclaration",id:n,qualifiers:t,typeSpecifier:r,params:u,body:o}}function Ce(e,r){const t=a(e).value;return a(e,";"),{type:"LayoutQualifierStatement",layout:r,qualifier:t}}function Ae(e){a(e,"invariant");const r=p(e);return a(e,";"),{type:"InvariantQualifierStatement",typeSpecifier:r}}function Me(e){let r=null;if(e[0].value==="layout"){for(a(e,"layout"),a(e,"("),r={};e[0]&&e[0].value!==")";){const u=p(e);if(u.type==="AssignmentExpression"&&u.left.type==="Identifier"&&u.right.type==="Literal")r[u.left.name]=u.right.value;else if(u.type==="Identifier")r[u.name]=!0;else throw new TypeError("Unexpected expression");e[0]&&e[0].value!==")"&&a(e,",")}a(e,")")}if(r!==null&&e[1]?.value===";")return Ce(e,r);if(r===null&&e[0]?.value==="invariant"&&e[1]?.type==="identifier")return Ae(e);const t=[];for(;e[0]&&Z.test(e[0].value);)t.push(a(e).value);const n=S(e);return e[0]?.value==="{"?ke(e,n,t,r):e[1]?.value==="("?Ee(e,n,t):K(e,n,t,r)}function Be(e){a(e,"struct");const r={type:"Identifier",name:a(e).value};a(e,"{");const t=[];for(;e[0]&&e[0].value!=="}";)t.push(...b(e));if(a(e,"}"),e[0]?.type==="identifier"){const n=r.name,u=e.shift().value;e.push({type:"identifier",value:n},{type:"identifier",value:u},{type:"symbol",value:";"})}return a(e,";"),{type:"StructDeclaration",id:r,members:t}}function Ie(e){return a(e,"continue"),a(e,";"),{type:"ContinueStatement"}}function Le(e){return a(e,"break"),a(e,";"),{type:"BreakStatement"}}function Ue(e){return a(e,"discard"),a(e,";"),{type:"DiscardStatement"}}function Pe(e){a(e,"return");let r=null;return e[0]?.value!==";"&&(r=p(e)),a(e,";"),{type:"ReturnStatement",argument:r}}function J(e){a(e,"if"),a(e,"(");const r=p(e);a(e,")");let t;e[0].value==="{"?t=v(e):t=B(e);let n=null;const u=e[0];return u&&u.value==="else"&&(a(e,"else"),e[0]&&e[0].value==="if"?n=J(e):e[0].value==="{"?n=v(e):n=B(e)),{type:"IfStatement",test:r,consequent:t,alternate:n}}function qe(e){a(e,"while"),a(e,"(");const r=p(e);a(e,")");const t=v(e);return{type:"WhileStatement",test:r,body:t}}function je(e){a(e,"for"),a(e,"(");const r=p(e),t=K(e,r),n=p(e);a(e,";");const u=p(e);a(e,")");const o=v(e);return{type:"ForStatement",init:t,test:n,update:u,body:o}}function Fe(e){a(e,"do");const r=v(e);a(e,"while"),a(e,"(");const t=p(e);return a(e,")"),a(e,";"),{type:"DoWhileStatement",test:t,body:r}}function Re(e){a(e,"switch");const r=p(e),t=[];for(;e.length;){const n=a(e);if(n.value==="}")break;if(n.value==="case"){const u=p(e);a(e,":");const o=b(e);t.push({type:"SwitchCase",test:u,consequent:o})}else if(n.value==="default"){a(e,":");const u=b(e);t.push({type:"SwitchCase",test:null,consequent:u})}}return{type:"SwitchStatement",discriminant:r,cases:t}}function Te(e){a(e,"precision");const r=a(e).value,t={type:"Identifier",name:a(e).value};return a(e,";"),{type:"PrecisionQualifierStatement",precision:r,typeSpecifier:t}}function Ge(e){a(e,"#");let r="",t=null;if(e[0]?.value!=="\\"){if(r=a(e).value,r==="define"){let n={type:"Identifier",name:a(e).value};const u=e[0];if(u&&u.value==="("){a(e);const o=[];for(;e[0]?.value!==")";)o.push(p(e,0)),e[0]?.value!==")"&&a(e,",");a(e,")"),n={type:"CallExpression",callee:n,arguments:o}}e[0]?.value==="\\"?t=[n]:t=[n,p(e)]}else if(r==="extension"){const n=p(e);a(e,":");const u=p(e);t=[n,u]}else if(r==="include")a(e,"<"),t=[{type:"Identifier",name:a(e).value}],a(e,">");else if(r!=="else"&&r!=="endif")for(t=[];e.length&&e[0].value!=="\\";)t.push(p(e))}return a(e,"\\"),{type:"PreprocessorStatement",name:r,value:t}}function Oe(e){const r=e[0];if(!r||r.type!=="identifier"&&r.type!=="keyword")return!1;if(r.value==="layout")return!0;let t=1,n=0;for(;t<e.length&&(n>0||M(e[t])>0);)n+=M(e[t++]);return e[t]?.type!=="symbol"}function B(e){const r=e[0];let t=null;if(r.value==="#")t=Ge(e);else if(r.value==="struct")t=Be(e);else if(r.value==="continue")t=Ie(e);else if(r.value==="break")t=Le(e);else if(r.value==="discard")t=Ue(e);else if(r.value==="return")t=Pe(e);else if(r.value==="if")t=J(e);else if(r.value==="while")t=qe(e);else if(r.value==="for")t=je(e);else if(r.value==="do")t=Fe(e);else if(r.value==="switch")t=Re(e);else if(r.value==="precision")t=Te(e);else if(Oe(e))t=Me(e);else{const n=p(e);a(e,";"),t={type:"ExpressionStatement",expression:n}}return t}function b(e){const r=[];let t=0;for(;e.length;){const n=e[0];if(t+=M(n),t<0||n.value==="case"||n.value==="default")break;r.push(B(e))}return r}function v(e){a(e,"{");const r=b(e);return a(e,"}"),{type:"BlockStatement",body:r}}const Ve=/\\\s+/gm,We=/(^\s*#[^\\]*?)(\n|\/[\/\*])/gm;function ze(e){e=e.replace(Ve,""),e=e.replace(We,"$1\\$2");const r=A(e).filter(t=>t.type!=="whitespace"&&t.type!=="comment");return{type:"Program",body:b(r)}}function l(e,r,t=[]){const n=t,u=r[e.type];switch((u?.enter??u)?.(e,n),t=[...t,e],e.type){case"ArraySpecifier":l(e.typeSpecifier,r,t);for(const o of e.dimensions)o&&l(o,r,t);break;case"ExpressionStatement":l(e.expression,r,t);break;case"BlockStatement":for(const o of e.body)l(o,r,t);break;case"PreprocessorStatement":if(e.value)for(const o of e.value)l(o,r,t);break;case"PrecisionQualifierStatement":l(e.typeSpecifier,r,t);break;case"InvariantQualifierStatement":l(e.typeSpecifier,r,t);break;case"ReturnStatement":e.argument&&l(e.argument,r,t);break;case"IfStatement":l(e.test,r,t),l(e.consequent,r,t),e.alternate&&l(e.alternate,r,t);break;case"SwitchStatement":l(e.discriminant,r,t);for(const o of e.cases)l(o,r,t);break;case"SwitchCase":e.test&&l(e.test,r,t);for(const o of e.consequent)l(o,r,t);break;case"WhileStatement":case"DoWhileStatement":l(e.test,r,t),l(e.body,r,t);break;case"ForStatement":e.init&&l(e.init,r,t),e.test&&l(e.test,r,t),e.update&&l(e.update,r,t),l(e.body,r,t);break;case"FunctionDeclaration":l(e.typeSpecifier,r,t),l(e.id,r,t),e.body&&l(e.body,r,t);break;case"FunctionParameter":l(e.typeSpecifier,r,t),e.id&&l(e.id,r,t);break;case"VariableDeclaration":for(const o of e.declarations)l(o,r,t);break;case"VariableDeclarator":l(e.typeSpecifier,r,t),l(e.id,r,t),e.init&&l(e.init,r,t);break;case"StructuredBufferDeclaration":l(e.typeSpecifier,r,t);for(const o of e.members)l(o,r,t);e.id&&l(e.id,r,t);break;case"StructDeclaration":l(e.id,r,t);for(const o of e.members)l(o,r,t);break;case"ArrayExpression":l(e.typeSpecifier,r,t);for(const o of e.elements)l(o,r,t);break;case"UnaryExpression":case"UpdateExpression":l(e.argument,r,t);break;case"BinaryExpression":case"AssignmentExpression":case"LogicalExpression":l(e.left,r,t),l(e.right,r,t);break;case"MemberExpression":l(e.object,r,t),l(e.property,r,t);break;case"ConditionalExpression":l(e.test,r,t),l(e.consequent,r,t),l(e.alternate,r,t);break;case"CallExpression":l(e.callee,r,t);for(const o of e.arguments)l(o,r,t);break;case"Program":for(const o of e.body)l(o,r,t);break}u?.exit?.(e,n)}export{k as GLSL_KEYWORDS,P as GLSL_SYMBOLS,w as WGSL_KEYWORDS,q as WGSL_SYMBOLS,ee as generate,$e as minify,ze as parse,A as tokenize,l as visit};
6
+ `).replaceAll("] ","]").trim()}const ae=/\bfn\s+\w+\s*\(|\b(var|let|const)\s+\w+\s*[:=]/,j=/((\d+\.\d*|\d*\.\d+)([eEpP][-+]?\d+)?|\d+[eEpP][-+]?\d+)[fFhH]?/y,F=/(0[xX][\w\d]+|\d+)[iIuU]?/y,ne=/^(true|false)$/,ie=48,oe=57,se=65,ue=90,le=10,ce=13,pe=9,me=32,fe=95,de=46,R=47,T=42,xe=35,ge=64,M=e=>ie<=e&&e<=oe,ye=e=>(e&=-33,se<=e&&e<=ue),ve=e=>e===le||e===ce,G=e=>ve(e)||e===pe||e===me,O=e=>ye(e)||M(e)||e===fe,he=e=>e===xe||e===ge;function V(e,r,t){return e.lastIndex=t,e.exec(r)?.[0]}function B(e,r=0){const t=[];let n=-1;const[s,o]=ae.test(e)?[E,q]:[C,P];for(;r<e.length;){let i=e[r];const f=e.charCodeAt(r++);if(G(f)){for(;G(e.charCodeAt(r));)i+=e[r++];t.push({type:"whitespace",value:i})}else if(M(f)||f===de&&M(e.charCodeAt(r)))(i=V(j,e,r-1))?(r=j.lastIndex,t.push({type:"float",value:i})):(i=V(F,e,r-1))&&(r=F.lastIndex,t.push({type:"int",value:i}));else if(O(f)){for(;O(e.charCodeAt(r));)i+=e[r++];ne.test(i)?t.push({type:"bool",value:i}):s.includes(he(n)?String.fromCharCode(n)+i:i)?t.push({type:"keyword",value:i}):t.push({type:"identifier",value:i})}else if(f===R&&(e.charCodeAt(r)===R||e.charCodeAt(r)===T)){const x=e.charCodeAt(r)===T?"*/":`
7
+ `;for(;r<e.length&&!i.endsWith(x);)i+=e[r++];t.push({type:"comment",value:i.trim()})}else{for(const x of o)x.length>i.length&&e.startsWith(x,r-1)&&(i=x);r+=i.length-1,t.push({type:"symbol",value:i})}n=f}return t}const W=/*@__PURE__*/RegExp.prototype.test.bind(/^\w/),be=/*@__PURE__*/RegExp.prototype.test.bind(/[^\w\\]/),z=/*@__PURE__*/RegExp.prototype.test.bind(/^[_A-Za-z]/),_e=/*@__PURE__*/RegExp.prototype.test.bind(/[;{}\\@]/),X=/*@__PURE__*/RegExp.prototype.test.bind(/^(binding|group|layout|uniform|in|out|attribute|varying)$/),Se=/\bfn\s+\w+\s*\(|\b(var|let|const)\s+\w+\s*[:=]/,$e=/\\\s+/gm,we=/(^\s*#[^\\]*?)(\n|\/[\/\*])/gm;function De(e,{mangle:r=!1,mangleMap:t=/*@__PURE__*/new Map,mangleExternals:n=!1}={}){e=e.replace($e,""),e=e.replace(we,"$1\\$2");const s=Se.test(e)?E:C,o=/*@__PURE__*/new Map,i=B(e).filter(p=>p.type!=="whitespace"&&p.type!=="comment");let f=-1,x=-1,v=-1,g="";for(let p=0;p<i.length;p++){const d=i[p];if((X(d.value)||_e(i[p-1]?.value))&&(x=p),d.value==="{"&&z(i[p-1]?.value)?v=p-1:d.value==="}"&&(v=-1),W(d.value)&&W(i[p-1]?.value)&&(g+=" "),be(d.value)&&(i[p-2]?.value==="#"&&i[p-1]?.value==="include"||i[p-2]?.value==="#"&&i[p-1]?.value==="if"||i[p-2]?.value==="#"&&i[p-1]?.value==="elif"||i[p-3]?.value==="#"&&i[p-2]?.value==="define"))if(d.value==="("){for(;p<i.length;){const b=i[p++];if(g+=b.value,b.value===")")break}g+=" "+i[p].value;continue}else g+=" ";let h=d.value;if(i[p-1]?.value==="."&&(h=`${i[p-2]?.value}.`+h),d.type==="identifier"&&h!=="main"&&(typeof r=="boolean"?r:r(d,p,i))){const b=i[p-1]?.value==="}"&&i[p+1]?.value===";",k=X(i[x]?.value),I=k&&i[p-1]?.value===",";let y=t.get(h)??o.get(h);if(!y&&v===-1&&(z(i[p-1]?.value)||b||I||i[p-1]?.type==="symbol"&&i[p+1]?.value===":")&&(n||!k)){const L=n&&k||i[p-2]?.value==="#"||b||I||i[p-1]?.value==="fn"&&(i[p-2]?.value===")"||i[p-3]?.value==="@")?t:o;for(;!y||L.has(y)||s.includes(y);){y="",f++;let $=f;for(;$>0;)y=String.fromCharCode(97+($-1)%26)+y,$=Math.floor($/26)}L.set(h,y)}g+=y??d.value}else d.value==="#"&&i[p-1]?.value!=="\\"?g+=`
8
+ #`:d.value==="\\"?g+=`
9
+ `:g+=d.value}return g.trim()}const Q={"~":14,"!":14,"--":14,"++":14,"-":14,"+":14},N={"--":15,"++":15,"(":16,"[":17,".":17},H={"||":3,"^^":4,"&&":5,"|":6,"^":7,"&":8,"==":10,">":10,">=":10,"<":10,"<=":10,"!=":10,"<<":11,">>":11,"+":12,"-":12,"*":13,"/":13,"%":13},Y={"=":2,"+=":2,"&=":2,"|=":2,"^=":2,"/=":2,"*=":2,"%=":2,"<<=":2,">>=":2,"-=":2,"?":9},Z=/^(const|buffer|uniform|in|out|inout|centroid|flat|smooth|invariant|lowp|mediump|highp|coherent|volatile|restrict|readonly|writeonly|attribute|varying)$/,ke={"(":1,"[":1,"{":1,")":-1,"]":-1,"}":-1};function K(e){return ke[e.value]??0}function l(e,r=0){for(let t=0;t<e.length;t++){const n=e[t];if(n.type!=="whitespace"&&n.type!=="comment"){if(r===0)return n;r--}}return null}function a(e,r){let t=e.shift();for(;t&&(t.type==="whitespace"||t.type==="comment");)t=e.shift();if(t===void 0&&r!==void 0)throw new SyntaxError(`Expected "${r}"`);if(t===void 0)throw new SyntaxError("Unexpected end of input");if(r!==void 0&&t.value!==r)throw new SyntaxError(`Expected "${r}" got "${t.value}"`);return t}function m(e,r=0){let t=a(e),n;if(t.type==="identifier"||t.type==="keyword")n={type:"Identifier",name:t.value};else if(t.type==="bool"||t.type==="float"||t.type==="int")n={type:"Literal",value:t.value};else if(t.type==="symbol"&&t.value==="(")n=m(e,0),a(e,")");else if(t.type==="symbol"&&t.value in Q){const s=Q[t.value],o=m(e,s);t.value==="--"||t.value==="++"?n={type:"UpdateExpression",operator:t.value,prefix:!0,argument:o}:n={type:"UnaryExpression",operator:t.value,prefix:!0,argument:o}}else throw new SyntaxError(`Unexpected token: "${t.value}"`);for(;e.length;)if(t=l(e),t.value in N){const s=N[t.value];if(s<r)break;if(a(e),t.value==="("){const o=[];for(;l(e)?.value!==")";)o.push(m(e,0)),l(e)?.value!==")"&&a(e,",");a(e,")"),n={type:"CallExpression",callee:n,arguments:o}}else if(t.value==="["){const o=l(e)?.value!=="]"?m(e,0):null;if(a(e,"]"),l(e)?.value==="("){a(e,"(");const i=[];for(;l(e)?.value!==")";)i.push(m(e,0)),l(e)?.value!==")"&&a(e,",");a(e,")"),n={type:"ArrayExpression",typeSpecifier:{type:"ArraySpecifier",typeSpecifier:n,dimensions:[o]},elements:i}}else n={type:"MemberExpression",object:n,property:o,computed:!0}}else if(t.value==="."){const o=m(e,s);n={type:"MemberExpression",object:n,property:o,computed:!1}}else t.value==="--"||t.value==="++"?n={type:"UpdateExpression",operator:t.value,prefix:!1,argument:n}:n={type:"UnaryExpression",operator:t.value,prefix:!1,argument:n}}else if(t.value in H){const s=H[t.value],o=s-1,i=s;if(o<r)break;if(a(e),t.value==="||"||t.value==="&&"||t.value==="^^"){const f=m(e,i);n={type:"LogicalExpression",operator:t.value,left:n,right:f}}else{const f=m(e,i);n={type:"BinaryExpression",operator:t.value,left:n,right:f}}}else if(t.value in Y){const s=Y[t.value],o=s,i=s-1;if(o<r)break;if(a(e),t.value==="?"){const f=m(e,0);a(e,":");const x=m(e,i);n={type:"ConditionalExpression",test:n,alternate:f,consequent:x}}else{const f=m(e,i);n={type:"AssignmentExpression",operator:t.value,left:n,right:f}}}else break;return n}function w(e){let r={type:"Identifier",name:a(e).value};if(l(e)?.value==="["){const t=[];for(;l(e)?.value==="[";)a(e,"["),l(e)?.value!=="]"?t.push(m(e)):t.push(null),a(e,"]");r={type:"ArraySpecifier",typeSpecifier:r,dimensions:t}}return r}function Ee(e,r,t,n){const s=w(e);let o=null;return l(e)?.value==="="&&(a(e,"="),o=m(e)),{type:"VariableDeclarator",id:s,qualifiers:t,typeSpecifier:r,layout:n,init:o}}function J(e,r,t=[],n=null){const s=[];if(l(e)?.value!==";")for(;e.length&&(s.push(Ee(e,r,t,n)),l(e)?.value===",");)a(e,",");return a(e,";"),{type:"VariableDeclaration",declarations:s}}function Ce(e,r,t=[],n=null){const s=D(e).body;let o=null;return l(e)?.value!==";"&&(o=m(e)),a(e,";"),{type:"StructuredBufferDeclaration",id:o,qualifiers:t,typeSpecifier:r,layout:n,members:s}}function Ae(e,r,t=[]){const n={type:"Identifier",name:a(e).value};a(e,"(");const s=[];for(;;){const i=l(e);if(!i||i.value===")")break;const f=[];for(;l(e)&&Z.test(l(e).value);)f.push(a(e).value);const x=w(e);let v=null;l(e)?.type!=="symbol"&&(v=w(e)),s.push({type:"FunctionParameter",id:v,qualifiers:f,typeSpecifier:x}),l(e)?.value===","&&a(e,",")}a(e,")");let o=null;return l(e)?.value===";"?a(e,";"):o=D(e),{type:"FunctionDeclaration",id:n,qualifiers:t,typeSpecifier:r,params:s,body:o}}function Me(e,r){const t=a(e).value;return a(e,";"),{type:"LayoutQualifierStatement",layout:r,qualifier:t}}function Be(e){a(e,"invariant");const r=m(e);return a(e,";"),{type:"InvariantQualifierStatement",typeSpecifier:r}}function Ie(e){let r=null;if(l(e)?.value==="layout"){for(a(e,"layout"),a(e,"("),r={};l(e)&&l(e).value!==")";){const s=m(e);if(s.type==="AssignmentExpression"&&s.left.type==="Identifier"&&s.right.type==="Literal")r[s.left.name]=s.right.value;else if(s.type==="Identifier")r[s.name]=!0;else throw new TypeError("Unexpected expression");l(e)&&l(e).value!==")"&&a(e,",")}a(e,")")}if(r!==null&&l(e,1)?.value===";")return Me(e,r);if(r===null&&l(e)?.value==="invariant"&&(l(e,1)?.type==="identifier"||l(e,1)?.type==="keyword"&&l(e,2)?.value===";"))return Be(e);const t=[];for(;l(e)&&Z.test(l(e).value);)t.push(a(e).value);const n=w(e);return l(e)?.value==="{"?Ce(e,n,t,r):l(e,1)?.value==="("?Ae(e,n,t):J(e,n,t,r)}function Le(e){a(e,"struct");const r={type:"Identifier",name:a(e).value};a(e,"{");const t=[];for(;l(e)&&l(e).value!=="}";)t.push(..._(e));if(a(e,"}"),l(e)?.type==="identifier"){const n=r.name,s=a(e).value;e.push({type:"identifier",value:n},{type:"identifier",value:s},{type:"symbol",value:";"})}return a(e,";"),{type:"StructDeclaration",id:r,members:t}}function Ue(e){return a(e,"continue"),a(e,";"),{type:"ContinueStatement"}}function Pe(e){return a(e,"break"),a(e,";"),{type:"BreakStatement"}}function qe(e){return a(e,"discard"),a(e,";"),{type:"DiscardStatement"}}function je(e){a(e,"return");let r=null;return l(e)?.value!==";"&&(r=m(e)),a(e,";"),{type:"ReturnStatement",argument:r}}function ee(e){a(e,"if"),a(e,"(");const r=m(e);a(e,")");const t=S(e);let n=null;const s=l(e);return s&&s.value==="else"&&(a(e,"else"),l(e)&&l(e).value==="if"?n=ee(e):n=S(e)),{type:"IfStatement",test:r,consequent:t,alternate:n}}function Fe(e){a(e,"while"),a(e,"(");const r=m(e);a(e,")");const t=S(e);return{type:"WhileStatement",test:r,body:t}}function Re(e){a(e,"for"),a(e,"(");const r=m(e),t=J(e,r),n=m(e);a(e,";");const s=m(e);a(e,")");const o=S(e);return{type:"ForStatement",init:t,test:n,update:s,body:o}}function Te(e){a(e,"do");const r=S(e);a(e,"while"),a(e,"(");const t=m(e);return a(e,")"),a(e,";"),{type:"DoWhileStatement",test:t,body:r}}function Ge(e){a(e,"switch");const r=m(e),t=[];for(;e.length;){const n=a(e);if(n.value==="}")break;if(n.value==="case"){const s=m(e);a(e,":");const o=_(e);t.push({type:"SwitchCase",test:s,consequent:o})}else if(n.value==="default"){a(e,":");const s=_(e);t.push({type:"SwitchCase",test:null,consequent:s})}}return{type:"SwitchStatement",discriminant:r,cases:t}}function Oe(e){a(e,"precision");const r=a(e).value,t={type:"Identifier",name:a(e).value};return a(e,";"),{type:"PrecisionQualifierStatement",precision:r,typeSpecifier:t}}function Ve(e){a(e,"#");let r="",t=null;if(l(e)?.value!=="\\"){if(r=a(e).value,r==="define"){let n={type:"Identifier",name:a(e).value};const s=l(e);if(s&&s.value==="("){a(e);const o=[];for(;l(e)?.value!==")";)o.push(m(e,0)),l(e)?.value!==")"&&a(e,",");a(e,")"),n={type:"CallExpression",callee:n,arguments:o}}l(e)?.value==="\\"?t=[n]:t=[n,m(e)]}else if(r==="extension"){const n=m(e);a(e,":");const s=m(e);t=[n,s]}else if(r==="include")a(e,"<"),t=[{type:"Identifier",name:a(e).value}],a(e,">");else if(r!=="else"&&r!=="endif")for(t=[];l(e)&&l(e).value!=="\\";)t.push(m(e))}return a(e,"\\"),{type:"PreprocessorStatement",name:r,value:t}}function We(e){let r=l(e,0);if(!r||r.type!=="identifier"&&r.type!=="keyword")return!1;if(r.value==="layout")return!0;let t=1,n=0;for(;r=l(e,t),!!r;){const s=K(r);if(n<=0&&s<=0)break;n+=s,t++}return l(e,t)?.type!=="symbol"}function te(e){const r=l(e);let t=null;if(r.value==="#")t=Ve(e);else if(r.value==="struct")t=Le(e);else if(r.value==="continue")t=Ue(e);else if(r.value==="break")t=Pe(e);else if(r.value==="discard")t=qe(e);else if(r.value==="return")t=je(e);else if(r.value==="if")t=ee(e);else if(r.value==="while")t=Fe(e);else if(r.value==="for")t=Re(e);else if(r.value==="do")t=Te(e);else if(r.value==="switch")t=Ge(e);else if(r.value==="precision")t=Oe(e);else if(We(e))t=Ie(e);else if(r.value==="{")t=D(e);else{const n=m(e);a(e,";"),t={type:"ExpressionStatement",expression:n}}return t}function _(e){const r=[];let t=0;for(;;){const n=l(e);if(!n||(t+=K(n),t<0||n.value==="}")||n.value==="case"||n.value==="default")break;r.push(te(e))}return r}function D(e){a(e,"{");const r=_(e);return a(e,"}"),{type:"BlockStatement",body:r}}function S(e){return l(e)?.value==="{"?D(e):te(e)}const ze=/\\\s+/gm,Xe=/(^\s*#[^\\]*?)(\n|\/[\/\*])/gm;function Qe(e){e=e.replace(ze,""),e=e.replace(Xe,"$1\\$2");const r=B(e);return{type:"Program",body:_(r)}}function c(e,r,t=[]){const n=t,s=r[e.type];switch((s?.enter??s)?.(e,n),t=[...t,e],e.type){case"ArraySpecifier":c(e.typeSpecifier,r,t);for(const o of e.dimensions)o&&c(o,r,t);break;case"ExpressionStatement":c(e.expression,r,t);break;case"BlockStatement":for(const o of e.body)c(o,r,t);break;case"PreprocessorStatement":if(e.value)for(const o of e.value)c(o,r,t);break;case"PrecisionQualifierStatement":c(e.typeSpecifier,r,t);break;case"InvariantQualifierStatement":c(e.typeSpecifier,r,t);break;case"ReturnStatement":e.argument&&c(e.argument,r,t);break;case"IfStatement":c(e.test,r,t),c(e.consequent,r,t),e.alternate&&c(e.alternate,r,t);break;case"SwitchStatement":c(e.discriminant,r,t);for(const o of e.cases)c(o,r,t);break;case"SwitchCase":e.test&&c(e.test,r,t);for(const o of e.consequent)c(o,r,t);break;case"WhileStatement":case"DoWhileStatement":c(e.test,r,t),c(e.body,r,t);break;case"ForStatement":e.init&&c(e.init,r,t),e.test&&c(e.test,r,t),e.update&&c(e.update,r,t),c(e.body,r,t);break;case"FunctionDeclaration":c(e.typeSpecifier,r,t),c(e.id,r,t),e.body&&c(e.body,r,t);break;case"FunctionParameter":c(e.typeSpecifier,r,t),e.id&&c(e.id,r,t);break;case"VariableDeclaration":for(const o of e.declarations)c(o,r,t);break;case"VariableDeclarator":c(e.typeSpecifier,r,t),c(e.id,r,t),e.init&&c(e.init,r,t);break;case"StructuredBufferDeclaration":c(e.typeSpecifier,r,t);for(const o of e.members)c(o,r,t);e.id&&c(e.id,r,t);break;case"StructDeclaration":c(e.id,r,t);for(const o of e.members)c(o,r,t);break;case"ArrayExpression":c(e.typeSpecifier,r,t);for(const o of e.elements)c(o,r,t);break;case"UnaryExpression":case"UpdateExpression":c(e.argument,r,t);break;case"BinaryExpression":case"AssignmentExpression":case"LogicalExpression":c(e.left,r,t),c(e.right,r,t);break;case"MemberExpression":c(e.object,r,t),c(e.property,r,t);break;case"ConditionalExpression":c(e.test,r,t),c(e.consequent,r,t),c(e.alternate,r,t);break;case"CallExpression":c(e.callee,r,t);for(const o of e.arguments)c(o,r,t);break;case"Program":for(const o of e.body)c(o,r,t);break}s?.exit?.(e,n)}export{C as GLSL_KEYWORDS,P as GLSL_SYMBOLS,E as WGSL_KEYWORDS,q as WGSL_SYMBOLS,re as generate,De as minify,Qe as parse,B as tokenize,c as visit};
10
10
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/constants.ts","../src/generator.ts","../src/tokenizer.ts","../src/minifier.ts","../src/parser.ts","../src/visitor.ts"],"sourcesContent":null,"names":["WGSL_KEYWORDS","GLSL_KEYWORDS","SYMBOLS","GLSL_SYMBOLS","WGSL_SYMBOLS","formatLayout","layout","k","v","format","node","d","value","alternate","qualifiers","body","id","head","init","scope","generate","program","options","WGSL_REGEX","FLOAT_REGEX","INT_REGEX","BOOL_REGEX","ZERO","NINE","A","Z","LF","CR","TAB","SPACE","UNDERSCORE","DOT","SLASH","STAR","HASH","AT","isDigit","c","isAlpha","isLine","isSpace","isIdent","isMacro","matchAsPrefix","regex","string","start","tokenize","code","index","tokens","prev","KEYWORDS","char","terminator","symbol","isWord","he","isSymbol","isName","ve","G","NEWLINE_REGEX","DIRECTIVE_REGEX","minify","mangle","mangleMap","mangleExternals","mangleCache","l","s","token","mangleIndex","lineIndex","blockIndex","minified","i","isStorage","isScoped","next","prefix","namespace","storage","list","renamed","cache","j","PREFIX_OPERATOR_PRECEDENCE","POSTFIX_OPERATOR_PRECEDENCE","INFIX_OPERATOR_PRECEDENCE_LEFT","INFIX_OPERATOR_PRECEDENCE_RIGHT","QUALIFIER_REGEX","SCOPE_DELTAS","getScopeDelta","consume","expected","parseExpression","minBindingPower","lhs","rightBindingPower","rhs","leftBindingPower","args","elements","precedence","mhs","parseTypeSpecifier","typeSpecifier","dimensions","parseVariableDeclarator","parseVariable","declarations","parseBufferInterface","members","parseBlock","parseFunction","params","parseLayoutQualifier","qualifier","parseInvariant","parseIndeterminate","expression","parseStruct","parseStatements","type","name","parseContinue","parseBreak","parseDiscard","parseReturn","argument","parseIf","test","consequent","parseStatement","elseToken","parseWhile","parseFor","update","parseDoWhile","parseSwitch","discriminant","cases","parsePrecision","precision","parsePreprocessor","left","right","isVariable","scopeIndex","statement","parse","visit","visitors","ancestors","parentAncestors","visitor","dimension","kase","declaration","member","element"],"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,SAEA,KACA,MACA,KACA,MACA,OACA,WACA,SACA,SACA,SAEA,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,OAGA,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,WAKA,eACA,kBACA,YACA,cACA,gBACA,kBACA,sBACA,oBACA,mBACA,uBACA,qBAGA,YAIA,gBACA,oBAMA,SACA,SAGA,sBAGA,mBACA,mBACA,iBACA,uBACA,wBACA,0BAGA,mBACA,4BACA,8BACA,6BACA,8BACA,sCACA,8BACA,6BACA,iCACA,iCACA,8BACA,oCACA,6BACA,+BACA,+BACA,8BACA,qCACA,mCACA,qCACA,gCAGA,YACA,eACA,eACA,iBACA,iBAGA,kBACA,iBACA,kBACA,WACA,UACA,UACA,YACA,aACA,eACA,eAGA,yBACA,yBACA,gBAGA,YACA,YACA,YACA,YACA,WACA,YACA,iBACA,iBAGA,YACA,aAGA,UAGA,gBACA,6BACA,sBACA,qBACA,sBACA,oBACF,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,EC1+BA,SAASG,EAAaC,EAAyD,CACxEA,OAAAA,EAEE,UAAU,OAAO,QAAQA,CAAM,EACnC,IAAI,CAAC,CAACC,EAAGC,CAAC,IAAOA,IAAM,GAAOD,EAAI,GAAGA,CAAC,IAAIC,CAAC,EAAG,EAC9C,KAAK,GAAG,CAAC,IAJQ,EAKtB,CAGA,SAASC,EAAOC,EAA0B,CACpC,GAAA,CAACA,EAAa,MAAA,GAElB,OAAQA,EAAK,KAAM,CACjB,IAAK,aACH,OAAOA,EAAK,KACd,IAAK,UACH,OAAOA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"}
1
+ {"version":3,"file":"index.js","sources":["../src/constants.ts","../src/generator.ts","../src/tokenizer.ts","../src/minifier.ts","../src/parser.ts","../src/visitor.ts"],"sourcesContent":null,"names":["WGSL_KEYWORDS","GLSL_KEYWORDS","SYMBOLS","GLSL_SYMBOLS","WGSL_SYMBOLS","formatLayout","layout","k","v","format","node","d","value","alternate","qualifiers","body","id","head","init","scope","generate","program","options","WGSL_REGEX","FLOAT_REGEX","INT_REGEX","BOOL_REGEX","ZERO","NINE","A","Z","LF","CR","TAB","SPACE","UNDERSCORE","DOT","SLASH","STAR","HASH","AT","isDigit","c","isAlpha","isLine","isSpace","isIdent","isMacro","matchAsPrefix","regex","string","start","tokenize","code","index","tokens","prev","KEYWORDS","char","terminator","symbol","isWord","isSymbol","Se","G","NEWLINE_REGEX","DIRECTIVE_REGEX","minify","mangle","mangleMap","i","mangleExternals","mangleCache","l","o","token","mangleIndex","lineIndex","blockIndex","minified","isStorage","isScoped","isName","next","prefix","namespace","storage","list","renamed","cache","j","PREFIX_OPERATOR_PRECEDENCE","POSTFIX_OPERATOR_PRECEDENCE","INFIX_OPERATOR_PRECEDENCE_LEFT","INFIX_OPERATOR_PRECEDENCE_RIGHT","QUALIFIER_REGEX","SCOPE_DELTAS","getScopeDelta","peek","offset","consume","expected","parseExpression","minBindingPower","lhs","rightBindingPower","rhs","leftBindingPower","args","elements","precedence","mhs","parseTypeSpecifier","typeSpecifier","dimensions","parseVariableDeclarator","parseVariable","declarations","parseBufferInterface","members","parseBlock","parseFunction","params","parseLayoutQualifier","qualifier","parseInvariant","parseIndeterminate","expression","parseStruct","parseStatements","type","name","parseContinue","parseBreak","parseDiscard","parseReturn","argument","parseIf","test","consequent","parseBlockOrStatement","elseToken","parseWhile","parseFor","update","parseDoWhile","parseSwitch","discriminant","cases","parsePrecision","precision","parsePreprocessor","left","right","isVariable","scopeIndex","delta","parseStatement","statement","parse","visit","visitors","ancestors","parentAncestors","visitor","dimension","kase","declaration","member","element"],"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,SAEA,KACA,MACA,KACA,MACA,OACA,WACA,SACA,SACA,SAEA,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,OAGA,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,WAKA,eACA,kBACA,YACA,cACA,gBACA,kBACA,sBACA,oBACA,mBACA,uBACA,qBAGA,YAIA,gBACA,oBAMA,SACA,SAGA,sBAGA,mBACA,mBACA,iBACA,uBACA,wBACA,0BAGA,mBACA,4BACA,8BACA,6BACA,8BACA,sCACA,8BACA,6BACA,iCACA,iCACA,8BACA,oCACA,6BACA,+BACA,+BACA,8BACA,qCACA,mCACA,qCACA,gCAGA,YACA,eACA,eACA,iBACA,iBAGA,kBACA,iBACA,kBACA,WACA,UACA,UACA,YACA,aACA,eACA,eAGA,yBACA,yBACA,gBAGA,YACA,YACA,YACA,YACA,WACA,YACA,iBACA,iBAGA,YACA,aAGA,UAGA,gBACA,6BACA,sBACA,qBACA,sBACA,oBACF,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,EC1+BA,SAASG,EAAaC,EAAyD,CAC7E,OAAKA,EAEE,UAAU,OAAO,QAAQA,CAAM,EACnC,IAAI,CAAC,CAACC,EAAGC,CAAC,IAAOA,IAAM,GAAOD,EAAI,GAAGA,CAAC,IAAIC,CAAC,EAAG,EAC9C,KAAK,GAAG,CAAC,IAJQ,EAKtB,CAGA,SAASC,EAAOC,EAA0B,CACxC,GAAI,CAACA,EAAM,MAAO,GAElB,OAAQA,EAAK,KAAA,CACX,IAAK,aACH,OAAOA,EAAK,KACd,IAAK,UACH,OAAOA,E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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shaderkit",
3
- "version": "0.6.1",
3
+ "version": "0.6.3",
4
4
  "description": "Tools and IntelliSense for GLSL and WGSL.",
5
5
  "keywords": [
6
6
  "shaders",
@@ -26,10 +26,10 @@
26
26
  "exports": "./dist/index.js",
27
27
  "sideEffects": false,
28
28
  "devDependencies": {
29
- "@types/node": "^22.10.2",
30
- "typescript": "^5.7.2",
31
- "vite": "^6.0.6",
32
- "vitest": "^2.1.8"
29
+ "@types/node": "^24.6.2",
30
+ "typescript": "^5.9.3",
31
+ "vite": "^7.1.8",
32
+ "vitest": "^3.2.4"
33
33
  },
34
34
  "scripts": {
35
35
  "dev": "vite",
package/src/parser.ts CHANGED
@@ -136,8 +136,24 @@ function getScopeDelta(token: Token): number {
136
136
  return SCOPE_DELTAS[token.value] ?? 0
137
137
  }
138
138
 
139
+ function peek(tokens: Token[], offset: number = 0): Token | null {
140
+ for (let i = 0; i < tokens.length; i++) {
141
+ const token = tokens[i]
142
+ if (token.type !== 'whitespace' && token.type !== 'comment') {
143
+ if (offset === 0) return token
144
+ else offset--
145
+ }
146
+ }
147
+
148
+ return null
149
+ }
150
+
139
151
  function consume(tokens: Token[], expected?: string): Token {
140
- const token = tokens.shift()
152
+ // TODO: use token cursor for performance and store for sourcemaps
153
+ let token = tokens.shift()
154
+ while (token && (token.type === 'whitespace' || token.type === 'comment')) {
155
+ token = tokens.shift()
156
+ }
141
157
 
142
158
  if (token === undefined && expected !== undefined) {
143
159
  throw new SyntaxError(`Expected "${expected}"`)
@@ -174,7 +190,7 @@ function parseExpression(tokens: Token[], minBindingPower: number = 0): Expressi
174
190
  }
175
191
 
176
192
  while (tokens.length) {
177
- token = tokens[0]
193
+ token = peek(tokens)!
178
194
 
179
195
  if (token.value in POSTFIX_OPERATOR_PRECEDENCE) {
180
196
  const leftBindingPower = POSTFIX_OPERATOR_PRECEDENCE[token.value]
@@ -185,24 +201,24 @@ function parseExpression(tokens: Token[], minBindingPower: number = 0): Expressi
185
201
  if (token.value === '(') {
186
202
  const args: Expression[] = []
187
203
 
188
- while (tokens[0]?.value !== ')') {
204
+ while (peek(tokens)?.value !== ')') {
189
205
  args.push(parseExpression(tokens, 0))
190
- if (tokens[0]?.value !== ')') consume(tokens, ',')
206
+ if (peek(tokens)?.value !== ')') consume(tokens, ',')
191
207
  }
192
208
  consume(tokens, ')')
193
209
 
194
210
  lhs = { type: 'CallExpression', callee: lhs, arguments: args }
195
211
  } else if (token.value === '[') {
196
- const rhs = tokens[0]?.value !== ']' ? parseExpression(tokens, 0) : null
212
+ const rhs = peek(tokens)?.value !== ']' ? parseExpression(tokens, 0) : null
197
213
  consume(tokens, ']')
198
214
 
199
- if (tokens[0]?.value === '(') {
215
+ if (peek(tokens)?.value === '(') {
200
216
  consume(tokens, '(')
201
217
  const elements: Expression[] = []
202
218
 
203
- while ((tokens[0] as Token | undefined)?.value !== ')') {
219
+ while (peek(tokens)?.value !== ')') {
204
220
  elements.push(parseExpression(tokens, 0))
205
- if ((tokens[0] as Token | undefined)?.value !== ')') consume(tokens, ',')
221
+ if (peek(tokens)?.value !== ')') consume(tokens, ',')
206
222
  }
207
223
  consume(tokens, ')')
208
224
 
@@ -268,13 +284,13 @@ function parseExpression(tokens: Token[], minBindingPower: number = 0): Expressi
268
284
  function parseTypeSpecifier(tokens: Token[]): Identifier | ArraySpecifier {
269
285
  let typeSpecifier: Identifier | ArraySpecifier = { type: 'Identifier', name: consume(tokens).value }
270
286
 
271
- if (tokens[0]?.value === '[') {
287
+ if (peek(tokens)?.value === '[') {
272
288
  const dimensions: (Literal | Identifier | null)[] = []
273
289
 
274
- while (tokens[0]?.value === '[') {
290
+ while (peek(tokens)?.value === '[') {
275
291
  consume(tokens, '[')
276
292
 
277
- if ((tokens[0]?.value as string) !== ']') {
293
+ if (peek(tokens)?.value !== ']') {
278
294
  dimensions.push(parseExpression(tokens) as Literal | Identifier)
279
295
  } else {
280
296
  dimensions.push(null)
@@ -303,7 +319,7 @@ function parseVariableDeclarator(
303
319
 
304
320
  let init: Expression | null = null
305
321
 
306
- if (tokens[0]?.value === '=') {
322
+ if (peek(tokens)?.value === '=') {
307
323
  consume(tokens, '=')
308
324
  init = parseExpression(tokens)
309
325
  }
@@ -319,11 +335,11 @@ function parseVariable(
319
335
  ): VariableDeclaration {
320
336
  const declarations: VariableDeclarator[] = []
321
337
 
322
- if (tokens[0]?.value !== ';') {
338
+ if (peek(tokens)?.value !== ';') {
323
339
  while (tokens.length) {
324
340
  declarations.push(parseVariableDeclarator(tokens, typeSpecifier, qualifiers, layout))
325
341
 
326
- if (tokens[0]?.value === ',') {
342
+ if (peek(tokens)?.value === ',') {
327
343
  consume(tokens, ',')
328
344
  } else {
329
345
  break
@@ -345,7 +361,7 @@ function parseBufferInterface(
345
361
  const members = parseBlock(tokens).body as VariableDeclaration[]
346
362
 
347
363
  let id: Identifier | null = null
348
- if (tokens[0]?.value !== ';') id = parseExpression(tokens) as Identifier
364
+ if (peek(tokens)?.value !== ';') id = parseExpression(tokens) as Identifier
349
365
  consume(tokens, ';')
350
366
 
351
367
  return { type: 'StructuredBufferDeclaration', id, qualifiers, typeSpecifier, layout, members }
@@ -361,25 +377,28 @@ function parseFunction(
361
377
  consume(tokens, '(')
362
378
 
363
379
  const params: FunctionParameter[] = []
364
- while (tokens[0] && tokens[0].value !== ')') {
380
+ while (true) {
381
+ const token = peek(tokens)
382
+ if (!token || token.value === ')') break
383
+
365
384
  const qualifiers: (ConstantQualifier | ParameterQualifier | PrecisionQualifier)[] = []
366
- while (tokens[0] && QUALIFIER_REGEX.test(tokens[0].value)) {
385
+ while (peek(tokens) && QUALIFIER_REGEX.test(peek(tokens)!.value)) {
367
386
  qualifiers.push(consume(tokens).value as ConstantQualifier | ParameterQualifier | PrecisionQualifier)
368
387
  }
369
388
  const typeSpecifier = parseTypeSpecifier(tokens)
370
389
 
371
390
  let id: Identifier | null = null
372
- if (tokens[0]?.type !== 'symbol') id = parseTypeSpecifier(tokens) as Identifier
391
+ if (peek(tokens)?.type !== 'symbol') id = parseTypeSpecifier(tokens) as Identifier
373
392
 
374
393
  params.push({ type: 'FunctionParameter', id, qualifiers, typeSpecifier })
375
394
 
376
- if (tokens[0]?.value === ',') consume(tokens, ',')
395
+ if (peek(tokens)?.value === ',') consume(tokens, ',')
377
396
  }
378
397
 
379
398
  consume(tokens, ')')
380
399
 
381
400
  let body = null
382
- if (tokens[0].value === ';') consume(tokens, ';')
401
+ if (peek(tokens)?.value === ';') consume(tokens, ';')
383
402
  else body = parseBlock(tokens)
384
403
 
385
404
  return { type: 'FunctionDeclaration', id, qualifiers, typeSpecifier, params, body }
@@ -407,13 +426,13 @@ function parseIndeterminate(
407
426
  | LayoutQualifierStatement
408
427
  | InvariantQualifierStatement {
409
428
  let layout: Record<string, string | boolean> | null = null
410
- if (tokens[0].value === 'layout') {
429
+ if (peek(tokens)?.value === 'layout') {
411
430
  consume(tokens, 'layout')
412
431
  consume(tokens, '(')
413
432
 
414
433
  layout = {}
415
434
 
416
- while (tokens[0] && (tokens[0] as Token).value !== ')') {
435
+ while (peek(tokens) && peek(tokens)!.value !== ')') {
417
436
  const expression = parseExpression(tokens)
418
437
 
419
438
  if (
@@ -428,33 +447,37 @@ function parseIndeterminate(
428
447
  throw new TypeError('Unexpected expression')
429
448
  }
430
449
 
431
- if (tokens[0] && (tokens[0] as Token).value !== ')') consume(tokens, ',')
450
+ if (peek(tokens) && peek(tokens)!.value !== ')') consume(tokens, ',')
432
451
  }
433
452
 
434
453
  consume(tokens, ')')
435
454
  }
436
455
 
437
456
  // Input qualifiers will suddenly terminate
438
- if (layout !== null && tokens[1]?.value === ';') {
457
+ if (layout !== null && peek(tokens, 1)?.value === ';') {
439
458
  return parseLayoutQualifier(tokens, layout)
440
459
  }
441
460
 
442
461
  // Invariant qualifiers will terminate with an identifier
443
- if (layout === null && tokens[0]?.value === 'invariant' && tokens[1]?.type === 'identifier') {
462
+ if (
463
+ layout === null &&
464
+ peek(tokens)?.value === 'invariant' &&
465
+ (peek(tokens, 1)?.type === 'identifier' || (peek(tokens, 1)?.type === 'keyword' && peek(tokens, 2)?.value === ';'))
466
+ ) {
444
467
  return parseInvariant(tokens)
445
468
  }
446
469
 
447
470
  // TODO: only precision qualifier valid for function return type
448
471
  const qualifiers: string[] = []
449
- while (tokens[0] && QUALIFIER_REGEX.test(tokens[0].value)) {
472
+ while (peek(tokens) && QUALIFIER_REGEX.test(peek(tokens)!.value)) {
450
473
  qualifiers.push(consume(tokens).value)
451
474
  }
452
475
 
453
476
  const typeSpecifier = parseTypeSpecifier(tokens)
454
477
 
455
- if (tokens[0]?.value === '{') {
478
+ if (peek(tokens)?.value === '{') {
456
479
  return parseBufferInterface(tokens, typeSpecifier, qualifiers as LayoutQualifier[], layout)
457
- } else if (tokens[1]?.value === '(') {
480
+ } else if (peek(tokens, 1)?.value === '(') {
458
481
  return parseFunction(tokens, typeSpecifier, qualifiers as PrecisionQualifier[])
459
482
  } else {
460
483
  return parseVariable(
@@ -471,16 +494,16 @@ function parseStruct(tokens: Token[]): StructDeclaration {
471
494
  const id: Identifier = { type: 'Identifier', name: consume(tokens).value }
472
495
  consume(tokens, '{')
473
496
  const members: VariableDeclaration[] = []
474
- while (tokens[0] && tokens[0].value !== '}') {
497
+ while (peek(tokens) && peek(tokens)!.value !== '}') {
475
498
  members.push(...(parseStatements(tokens) as unknown as VariableDeclaration[]))
476
499
  }
477
500
  consume(tokens, '}')
478
501
 
479
502
  // Hack to append a separate variable declaration in the next iterator
480
503
  // `struct a {} name;` is parsed as `struct a {}; a name;`
481
- if (tokens[0]?.type === 'identifier') {
504
+ if (peek(tokens)?.type === 'identifier') {
482
505
  const type = id.name
483
- const name = tokens.shift()!.value
506
+ const name = consume(tokens).value
484
507
  tokens.push(
485
508
  { type: 'identifier', value: type },
486
509
  { type: 'identifier', value: name },
@@ -518,7 +541,7 @@ function parseReturn(tokens: Token[]): ReturnStatement {
518
541
  consume(tokens, 'return')
519
542
 
520
543
  let argument: Expression | null = null
521
- if (tokens[0]?.value !== ';') argument = parseExpression(tokens)
544
+ if (peek(tokens)?.value !== ';') argument = parseExpression(tokens)
522
545
  consume(tokens, ';')
523
546
 
524
547
  return { type: 'ReturnStatement', argument }
@@ -530,24 +553,17 @@ function parseIf(tokens: Token[]): IfStatement {
530
553
  const test = parseExpression(tokens)
531
554
  consume(tokens, ')')
532
555
 
533
- let consequent: Statement
534
- if (tokens[0].value === '{') {
535
- consequent = parseBlock(tokens)
536
- } else {
537
- consequent = parseStatement(tokens)
538
- }
556
+ const consequent = parseBlockOrStatement(tokens)
539
557
 
540
558
  let alternate = null
541
- const elseToken = tokens[0]
559
+ const elseToken = peek(tokens)
542
560
  if (elseToken && elseToken.value === 'else') {
543
561
  consume(tokens, 'else')
544
562
 
545
- if (tokens[0] && (tokens[0] as Token).value === 'if') {
563
+ if (peek(tokens) && peek(tokens)!.value === 'if') {
546
564
  alternate = parseIf(tokens)
547
- } else if (tokens[0].value === '{') {
548
- alternate = parseBlock(tokens)
549
565
  } else {
550
- alternate = parseStatement(tokens)
566
+ alternate = parseBlockOrStatement(tokens)
551
567
  }
552
568
  }
553
569
 
@@ -559,7 +575,7 @@ function parseWhile(tokens: Token[]): WhileStatement {
559
575
  consume(tokens, '(')
560
576
  const test = parseExpression(tokens)
561
577
  consume(tokens, ')')
562
- const body = parseBlock(tokens)
578
+ const body = parseBlockOrStatement(tokens)
563
579
 
564
580
  return { type: 'WhileStatement', test, body }
565
581
  }
@@ -574,14 +590,14 @@ function parseFor(tokens: Token[]): ForStatement {
574
590
  consume(tokens, ';')
575
591
  const update = parseExpression(tokens)
576
592
  consume(tokens, ')')
577
- const body = parseBlock(tokens)
593
+ const body = parseBlockOrStatement(tokens)
578
594
 
579
595
  return { type: 'ForStatement', init, test, update, body }
580
596
  }
581
597
 
582
598
  function parseDoWhile(tokens: Token[]): DoWhileStatement {
583
599
  consume(tokens, 'do')
584
- const body = parseBlock(tokens)
600
+ const body = parseBlockOrStatement(tokens)
585
601
  consume(tokens, 'while')
586
602
  consume(tokens, '(')
587
603
  const test = parseExpression(tokens)
@@ -630,29 +646,29 @@ function parsePreprocessor(tokens: Token[]): PreprocessorStatement {
630
646
  let name = '' // name can be unset for the # directive which is ignored
631
647
  let value: Expression[] | null = null
632
648
 
633
- if (tokens[0]?.value !== '\\') {
649
+ if (peek(tokens)?.value !== '\\') {
634
650
  name = consume(tokens).value
635
651
 
636
652
  if (name === 'define') {
637
653
  const lhs = consume(tokens)
638
654
  let left: Expression = { type: 'Identifier', name: lhs.value }
639
- const next = tokens[0]
655
+ const next = peek(tokens)
640
656
 
641
657
  // Macro definition: #define foo(a, b, c) ...
642
658
  if (next && next.value === '(') {
643
659
  consume(tokens)
644
660
 
645
661
  const args: Expression[] = []
646
- while (tokens[0]?.value !== ')') {
662
+ while (peek(tokens)?.value !== ')') {
647
663
  args.push(parseExpression(tokens, 0))
648
- if (tokens[0]?.value !== ')') consume(tokens, ',')
664
+ if (peek(tokens)?.value !== ')') consume(tokens, ',')
649
665
  }
650
666
  consume(tokens, ')')
651
667
 
652
668
  left = { type: 'CallExpression', callee: left, arguments: args }
653
669
  }
654
670
 
655
- if (tokens[0]?.value === '\\') value = [left]
671
+ if (peek(tokens)?.value === '\\') value = [left]
656
672
  else value = [left, parseExpression(tokens)]
657
673
  } else if (name === 'extension') {
658
674
  // TODO: extension directives must be before declarations
@@ -666,7 +682,7 @@ function parsePreprocessor(tokens: Token[]): PreprocessorStatement {
666
682
  consume(tokens, '>')
667
683
  } else if (name !== 'else' && name !== 'endif') {
668
684
  value = []
669
- while (tokens.length && tokens[0].value !== '\\') {
685
+ while (peek(tokens) && peek(tokens)!.value !== '\\') {
670
686
  value.push(parseExpression(tokens))
671
687
  }
672
688
  }
@@ -678,7 +694,7 @@ function parsePreprocessor(tokens: Token[]): PreprocessorStatement {
678
694
  }
679
695
 
680
696
  function isVariable(tokens: Token[]): boolean {
681
- const token = tokens[0]
697
+ let token = peek(tokens, 0)
682
698
 
683
699
  // Skip first token if EOF or not type qualifier/specifier
684
700
  if (!token || (token.type !== 'identifier' && token.type !== 'keyword')) return false
@@ -689,16 +705,23 @@ function isVariable(tokens: Token[]): boolean {
689
705
  // Skip to end of possible expression statement (e.g. callexpr -> fndecl)
690
706
  let i = 1
691
707
  let scopeIndex = 0
692
- while (i < tokens.length && (scopeIndex > 0 || getScopeDelta(tokens[i]) > 0)) {
693
- scopeIndex += getScopeDelta(tokens[i++])
708
+ while (true) {
709
+ token = peek(tokens, i)
710
+ if (!token) break
711
+
712
+ const delta = getScopeDelta(token)
713
+ if (scopeIndex <= 0 && delta <= 0) break
714
+
715
+ scopeIndex += delta
716
+ i++
694
717
  }
695
718
 
696
719
  // A variable declaration must follow with an identifier or type
697
- return tokens[i]?.type !== 'symbol'
720
+ return peek(tokens, i)?.type !== 'symbol'
698
721
  }
699
722
 
700
723
  function parseStatement(tokens: Token[]): Statement {
701
- const token = tokens[0]
724
+ const token = peek(tokens)!
702
725
  let statement: Statement | null = null
703
726
 
704
727
  if (token.value === '#') statement = parsePreprocessor(tokens)
@@ -714,6 +737,7 @@ function parseStatement(tokens: Token[]): Statement {
714
737
  else if (token.value === 'switch') statement = parseSwitch(tokens)
715
738
  else if (token.value === 'precision') statement = parsePrecision(tokens)
716
739
  else if (isVariable(tokens)) statement = parseIndeterminate(tokens)
740
+ else if (token.value === '{') statement = parseBlock(tokens)
717
741
  else {
718
742
  const expression = parseExpression(tokens)
719
743
  consume(tokens, ';')
@@ -727,11 +751,12 @@ function parseStatements(tokens: Token[]): Statement[] {
727
751
  const body: Statement[] = []
728
752
  let scopeIndex = 0
729
753
 
730
- while (tokens.length) {
731
- const token = tokens[0]
754
+ while (true) {
755
+ const token = peek(tokens)
756
+ if (!token) break
732
757
 
733
758
  scopeIndex += getScopeDelta(token)
734
- if (scopeIndex < 0) break
759
+ if (scopeIndex < 0 || token.value === '}') break
735
760
 
736
761
  if (token.value === 'case' || token.value === 'default') break
737
762
  body.push(parseStatement(tokens))
@@ -740,7 +765,6 @@ function parseStatements(tokens: Token[]): Statement[] {
740
765
  return body
741
766
  }
742
767
 
743
- // TODO: allow block versus sub-statements for GLSL/WGSL
744
768
  function parseBlock(tokens: Token[]): BlockStatement {
745
769
  consume(tokens, '{')
746
770
  const body = parseStatements(tokens)
@@ -748,6 +772,15 @@ function parseBlock(tokens: Token[]): BlockStatement {
748
772
  return { type: 'BlockStatement', body }
749
773
  }
750
774
 
775
+ // TODO: validate block versus sub-statements for GLSL/WGSL
776
+ function parseBlockOrStatement(tokens: Token[]): BlockStatement | Statement {
777
+ if (peek(tokens)?.value === '{') {
778
+ return parseBlock(tokens)
779
+ } else {
780
+ return parseStatement(tokens)
781
+ }
782
+ }
783
+
751
784
  const NEWLINE_REGEX = /\\\s+/gm
752
785
  const DIRECTIVE_REGEX = /(^\s*#[^\\]*?)(\n|\/[\/\*])/gm
753
786
 
@@ -761,8 +794,7 @@ export function parse(code: string): Program {
761
794
  // Escape newlines after directives, skip comments
762
795
  code = code.replace(DIRECTIVE_REGEX, '$1\\$2')
763
796
 
764
- // TODO: preserve
765
- const tokens = tokenize(code).filter((token) => token.type !== 'whitespace' && token.type !== 'comment')
797
+ const tokens = tokenize(code)
766
798
 
767
799
  return { type: 'Program', body: parseStatements(tokens) }
768
800
  }