shaderkit 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -13,6 +13,7 @@ Tools and IntelliSense for GLSL and WGSL.
13
13
  - [Minify](#minify)
14
14
  - [Parse](#parse)
15
15
  - [Generate](#generate)
16
+ - [Visit](#visit)
16
17
  - [AST](#ast)
17
18
  - [Node Objects](#node-objects)
18
19
  - [Identifier](#identifier)
@@ -265,6 +266,29 @@ const code: string = generate(program: Program, {
265
266
  })
266
267
  ```
267
268
 
269
+ ## Visit
270
+
271
+ Recurses through an [AST](https://en.wikipedia.org/wiki/Abstract_syntax_tree), calling a visitor object on matching nodes.
272
+
273
+ ```ts
274
+ visit(
275
+ program: Program,
276
+ visitors: {
277
+ Program: {
278
+ enter(node, ancestors) {
279
+ // Called before any descendant nodes are processed
280
+ },
281
+ exit(node, ancestors) {
282
+ // Called after all nodes are processed
283
+ }
284
+ },
285
+ Identifier(node, ancestors) {
286
+ // Called before any descendant nodes are processed (alias to enter)
287
+ }
288
+ } satisfies Visitors
289
+ )
290
+ ```
291
+
268
292
  ## AST
269
293
 
270
294
  An [Abstract Syntax Tree](https://en.wikipedia.org/wiki/Abstract_syntax_tree) loosely based on [ESTree](https://github.com/estree/estree) for GLSL and WGSL grammars.
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
- const k=["vec2","vec2i","vec2u","vec2f","vec2h","vec3","vec3i","vec3u","vec3f","vec3h","vec4","vec4i","vec4u","vec4f","vec4h","mat2x2","mat2x2f","mat2x2h","mat2x3","mat2x3f","mat2x3h","mat2x4","mat2x4f","mat2x4h","mat3x2","mat3x2f","mat3x2h","mat3x3","mat3x3f","mat3x3h","mat3x4","mat3x4f","mat3x4h","mat4x2","mat4x2f","mat4x2h","mat4x3","mat4x3f","mat4x3h","mat4x4","mat4x4f","mat4x4h","array","atomic","bool","f32","f16","i32","ptr","sampler","sampler_comparison","texture_1d","texture_2d","texture_2d_array","texture_3d","texture_cube","texture_cube_array","texture_multisampled_2d","texture_storage_1d","texture_storage_2d","texture_storage_2d_array","texture_storage_3d","texture_depth_2d","texture_depth_2d_array","texture_depth_cube","texture_depth_cube_array","texture_depth_multisampled_2d","u32","alias","bitcast","break","case","const","const_assert","continue","continuing","default","discard","else","enable","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"],A=["//","/*","*/",":",",",".","{","[","(","?","}","]",")",";","~","--","++","!","&","|","^","/","==",">",">=","<","<=","&&","||","^^","-","*","!=","+","%","<<",">>","=","+=","&=","|=","^=","/=","*=","%=","<<=",">>=","-="],L=[...A,"#","\\"],j=[...A,"->","@"];function P(e){return e?`layout(${Object.entries(e).map(([a,t])=>t===!0?a:`${a}=${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(s).join(",")}]`;case"ExpressionStatement":return`${s(e.expression)};`;case"BlockStatement":return`{${e.body.map(s).join("")}}`;case"DiscardStatement":return"discard;";case"PreprocessorStatement":{let a="";return e.value&&(e.name==="include"?a=` <${s(e.value[0])}>`:e.name==="extension"?a=`${e.value.map(s).join(":")}`:a=` ${e.value.map(s).join(" ")}`),`
2
- #${e.name}${a}
3
- `}case"PrecisionStatement":return`precision ${e.precision} ${e.typeSpecifier.name};`;case"ReturnStatement":return e.argument?`return ${s(e.argument)};`:"return;";case"BreakStatement":return"break;";case"ContinueStatement":return"continue;";case"IfStatement":{const a=e.alternate?` else${s(e.consequent)}`:"";return`if(${s(e.test)})${s(e.consequent)}${a}`}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 a=e.qualifiers.length?`${e.qualifiers.join(" ")} `:"",t=e.body?s(e.body):";";return`${a}${s(e.typeSpecifier)} ${s(e.id)}(${e.params.map(s).join(",")})${t}`}case"FunctionParameter":return`${e.qualifiers.length?`${e.qualifiers.join(" ")} `:""}${s(e.typeSpecifier)} ${s(e.id)}`;case"VariableDeclaration":{const a=e.declarations[0],t=P(a.layout),r=a.qualifiers.length?`${a.qualifiers.join(" ")} `:"";return`${t}${r}${s(a.typeSpecifier)} ${e.declarations.map(s).join(",")};`}case"VariableDeclarator":{const a=e.init?`=${s(e.init)}`:"";return`${s(e.id)}${a}`}case"UniformDeclarationBlock":{const a=P(e.layout),t=e.qualifiers.length?`${e.qualifiers.join(" ")} `:"",r=e.id?`${s(e.id)}`:"";return`${a}${t}${s(e.typeSpecifier)}{${e.members.map(s).join("")}}${r};`}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.consequent)}:${s(e.alternate)}`;case"CallExpression":return`${s(e.callee)}(${e.arguments.map(s).join(",")})`;case"Program":return`${e.body.map(s).join("")}`;default:return e}}function Y(e,a){return s(e).replaceAll(`
1
+ const C=["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"],A=["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"],L=["//","/*","*/",":",",",".","{","[","(","?","}","]",")",";","~","--","++","!","&","|","^","/","==",">",">=","<","<=","&&","||","^^","-","*","!=","+","%","<<",">>","=","+=","&=","|=","^=","/=","*=","%=","<<=",">>=","-="],P=[...L,"#","\\"],j=[...L,"->","@"];function q(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(s).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(":")}`:r=` ${e.value.map(s).join(" ")}`),`
2
+ #${e.name}${r}
3
+ `}case"PrecisionStatement":return`precision ${e.precision} ${e.typeSpecifier.name};`;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":return`${e.qualifiers.length?`${e.qualifiers.join(" ")} `:""}${s(e.typeSpecifier)} ${s(e.id)}`;case"VariableDeclaration":{const r=e.declarations[0],t=q(r.layout),a=r.qualifiers.length?`${r.qualifiers.join(" ")} `:"";return`${t}${a}${s(r.typeSpecifier)} ${e.declarations.map(s).join(",")};`}case"VariableDeclarator":{const r=e.init?`=${s(e.init)}`:"";return`${s(e.id)}${r}`}case"UniformDeclarationBlock":{const r=q(e.layout),t=e.qualifiers.length?`${e.qualifiers.join(" ")} `:"",a=e.id?`${s(e.id)}`:"";return`${r}${t}${s(e.typeSpecifier)}{${e.members.map(s).join("")}}${a};`}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.consequent)}:${s(e.alternate)}`;case"CallExpression":return`${s(e.callee)}(${e.arguments.map(s).join(",")})`;case"Program":return`${e.body.map(s).join("")}`;default:return e}}function Z(e,r){return s(e).replaceAll(`
4
4
 
5
5
  `,`
6
- `).trim()}const Z=/\bfn\s+\w+\s*\(|\b(var|let|const)\s+\w+\s*[:=]/,q=/((\d+\.\d*|\d*\.\d+)([eEpP][-+]?\d+)?|\d+[eEpP][-+]?\d+)[fFhH]?/y,B=/(0[xX][\w\d]+|\d+)[iIuU]?/y,K=/^(true|false)$/,J=48,Q=57,ee=65,te=90,ae=10,re=13,ne=9,ie=32,oe=95,se=46,I=47,M=42,le=35,ue=64,S=e=>J<=e&&e<=Q,ce=e=>(e&=-33,ee<=e&&e<=te),pe=e=>e===ae||e===re,U=e=>pe(e)||e===ne||e===ie,F=e=>ce(e)||S(e)||e===oe,me=e=>e===le||e===ue;function R(e,a,t){return e.lastIndex=t,e.exec(a)?.[0]}function $(e,a=0){const t=[];let r=-1;const[i,o]=Z.test(e)?[k,j]:[C,L];for(;a<e.length;){let c=e[a];const p=e.charCodeAt(a++);if(U(p)){for(;U(e.charCodeAt(a));)c+=e[a++];t.push({type:"whitespace",value:c})}else if(S(p)||p===se&&S(e.charCodeAt(a)))(c=R(q,e,a-1))?(a=q.lastIndex,t.push({type:"float",value:c})):(c=R(B,e,a-1))&&(a=B.lastIndex,t.push({type:"int",value:c}));else if(F(p)){for(;F(e.charCodeAt(a));)c+=e[a++];K.test(c)?t.push({type:"bool",value:c}):i.includes(me(r)?String.fromCharCode(r)+c:c)?t.push({type:"keyword",value:c}):t.push({type:"identifier",value:c})}else if(p===I&&(e.charCodeAt(a)===I||e.charCodeAt(a)===M)){const m=e.charCodeAt(a)===M?"*/":`
7
- `;for(;a<e.length&&!c.endsWith(m);)c+=e[a++];t.push({type:"comment",value:c.trim()})}else{for(const m of o)m.length>c.length&&e.startsWith(m,a-1)&&(c=m);a+=c.length-1,t.push({type:"symbol",value:c})}r=p}return t}const T=/*@__PURE__*/RegExp.prototype.test.bind(/^\w/),fe=/*@__PURE__*/RegExp.prototype.test.bind(/[^\w\\]/),O=/*@__PURE__*/RegExp.prototype.test.bind(/^[_A-Za-z]/),de=/*@__PURE__*/RegExp.prototype.test.bind(/[;{}\\@]/),V=/*@__PURE__*/RegExp.prototype.test.bind(/^(binding|group|layout|uniform|in|out|attribute|varying)$/);function ve(e,{mangle:a=!1,mangleMap:t=/*@__PURE__*/new Map,mangleExternals:r=!1}={}){e=e.replace(/(^\s*#[^\\]*?)(\n|\/[\/\*])/gm,"$1\\$2");const i=/*@__PURE__*/new Map,o=$(e).filter(l=>l.type!=="whitespace"&&l.type!=="comment");let c=-1,p=-1,m=-1,d="";for(let l=0;l<o.length;l++){const f=o[l];if((V(f.value)||de(o[l-1]?.value))&&(p=l),f.value==="{"&&O(o[l-1]?.value)?m=l-1:f.value==="}"&&(m=-1),T(f.value)&&T(o[l-1]?.value)&&(d+=" "),fe(f.value)&&(o[l-2]?.value==="#"&&o[l-1]?.value==="include"||o[l-2]?.value==="#"&&o[l-1]?.value==="if"||o[l-2]?.value==="#"&&o[l-1]?.value==="elif"||o[l-3]?.value==="#"&&o[l-2]?.value==="define"))if(f.value==="("){for(;l<o.length;){const y=o[l++];if(d+=y.value,y.value===")")break}d+=" "+o[l].value;continue}else d+=" ";let g=f.value;if(o[l-1]?.value==="."&&(g=`${o[l-2]?.value}.`+g),f.type==="identifier"&&g!=="main"&&(typeof a=="boolean"?a:a(f,l,o))){const y=o[l-1]?.value==="}"&&o[l+1]?.value===";",b=V(o[p]?.value),D=b&&o[l-1]?.value===",";let v=t.get(g)??i.get(g);if(!v&&m===-1&&(O(o[l-1]?.value)||y||D||o[l-1]?.type==="symbol"&&o[l+1]?.value===":")&&(r||!b)){const E=r&&b||o[l-2]?.value==="#"||y||D||o[l-1]?.value==="fn"&&(o[l-2]?.value===")"||o[l-3]?.value==="@")?t:i;for(;!v||E.has(v);){v="",c++;let _=c;for(;_>0;)v=String.fromCharCode(97+(_-1)%26)+v,_=Math.floor(_/26)}E.set(g,v)}d+=v??f.value}else f.value==="#"&&o[l-1]?.value!=="\\"?d+=`
8
- #`:f.value==="\\"?d+=`
9
- `:d+=f.value}return d.trim()}const G={"~":14,"!":14,"--":14,"++":14,"-":14,"+":14},z={"--":15,"++":15,"(":0,"[":16,".":16},W={"||":3,"^^":4,"&&":5,"|":6,"^":7,"&":8,"==":10,">":10,">=":10,"<":10,"<=":10,"!=":10,"<<":11,">>":11,"+":12,"-":12,"*":13,"/":13,"%":13},X={"=":2,"+=":2,"&=":2,"|=":2,"^=":2,"/=":2,"*=":2,"%=":2,"<<=":2,">>=":2,"-=":2,"?":9},xe=/^(void|bool|float|u?int|[uib]?vec\d|mat\d(x\d)?)$/,w=/^(const|uniform|in|out|inout|centroid|flat|smooth|invariant|lowp|mediump|highp)$/,ge=new RegExp(`${xe.source}|${w.source}|layout`),ye={"(":1,"[":1,"{":1,")":-1,"]":-1,"}":-1};function he(e){return ye[e.value]??0}function n(e,a){const t=e.shift();if(t===void 0&&a!==void 0)throw new SyntaxError(`Expected "${a}"`);if(t===void 0)throw new SyntaxError("Unexpected end of input");if(a!==void 0&&t.value!==a)throw new SyntaxError(`Expected "${a}" got "${t.value}"`);return t}function u(e,a=0){let t=n(e),r;if(t.type==="identifier"||t.type==="keyword")r={type:"Identifier",name:t.value};else if(t.type==="bool"||t.type==="float"||t.type==="int")r={type:"Literal",value:t.value};else if(t.type==="symbol"&&t.value==="(")r=u(e,0),n(e,")");else if(t.type==="symbol"&&t.value in G){const i=G[t.value],o=u(e,i);t.value==="--"||t.value==="++"?r={type:"UpdateExpression",operator:t.value,prefix:!0,argument:o}:r={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 z){if(z[t.value]<a)break;if(n(e),t.value==="("){const i=[];for(;e[0]?.value!==")";)i.push(u(e,0)),e[0]?.value!==")"&&n(e,",");n(e,")"),r={type:"CallExpression",callee:r,arguments:i}}else if(t.value==="["){const i=e[0]?.value!=="]"?u(e,0):null;if(n(e,"]"),e[0]?.value==="("){n(e,"(");const o=[];for(;e[0]?.value!==")";)o.push(u(e,0)),e[0]?.value!==")"&&n(e,",");n(e,")"),r={type:"ArrayExpression",typeSpecifier:{type:"ArraySpecifier",typeSpecifier:r,dimensions:[i]},elements:o}}else r={type:"MemberExpression",object:r,property:i,computed:!0}}else if(t.value==="."){const i=u(e,0);r={type:"MemberExpression",object:r,property:i,computed:!1}}else t.value==="--"||t.value==="++"?r={type:"UpdateExpression",operator:t.value,prefix:!1,argument:r}:r={type:"UnaryExpression",operator:t.value,prefix:!1,argument:r}}else if(t.value in W){const i=W[t.value],o=i-1,c=i;if(o<a)break;if(n(e),t.value==="||"||t.value==="&&"||t.value==="^^"){const p=u(e,c);r={type:"LogicalExpression",operator:t.value,left:r,right:p}}else{const p=u(e,c);r={type:"BinaryExpression",operator:t.value,left:r,right:p}}}else if(t.value in X){const i=X[t.value],o=i,c=i-1;if(o<a)break;if(n(e),t.value==="?"){const p=u(e,0);n(e,":");const m=u(e,c);r={type:"ConditionalExpression",test:r,alternate:p,consequent:m}}else{const p=u(e,c);r={type:"AssignmentExpression",operator:t.value,left:r,right:p}}}else break;return r}function _e(e,a,t,r){let i={type:"Identifier",name:n(e).value};e[0]?.value==="["&&(n(e,"["),i={type:"ArraySpecifier",typeSpecifier:i,dimensions:[u(e)]},n(e,"]"));let o=null;return e[0]?.value==="="&&(n(e,"="),o=u(e)),{type:"VariableDeclarator",id:i,qualifiers:t,typeSpecifier:a,layout:r,init:o}}function N(e,a,t=[],r=null){const i=[];if(e[0]?.value!==";")for(;e.length&&(i.push(_e(e,a,t,r)),e[0]?.value===",");)n(e,",");return n(e,";"),{type:"VariableDeclaration",declarations:i}}function be(e,a,t=[],r=null){const i=x(e).body;let o=null;return e[0]?.value!==";"&&(o=u(e)),n(e,";"),{type:"UniformDeclarationBlock",id:o,qualifiers:t,typeSpecifier:a,layout:r,members:i}}function Se(e,a,t=[]){const r={type:"Identifier",name:n(e).value};n(e,"(");const i=[];for(;e[0]&&e[0].value!==")";){const c=[];for(;e[0]&&w.test(e[0].value);)c.push(n(e).value);const p=u(e),m={type:"Identifier",name:n(e).value};i.push({type:"FunctionParameter",id:m,qualifiers:c,typeSpecifier:p}),e[0]?.value===","&&n(e,",")}n(e,")");let o=null;return e[0].value===";"?n(e,";"):o=x(e),{type:"FunctionDeclaration",id:r,qualifiers:t,typeSpecifier:a,params:i,body:o}}function $e(e){let a=null;if(e[0].value==="layout"){for(n(e,"layout"),n(e,"("),a={};e[0]&&e[0].value!==")";){const i=u(e);if(i.type==="AssignmentExpression"&&i.left.type==="Identifier"&&i.right.type==="Literal")a[i.left.name]=i.right.value;else if(i.type==="Identifier")a[i.name]=!0;else throw new TypeError("Unexpected expression");e[0]&&e[0].value!==")"&&n(e,",")}n(e,")")}const t=[];for(;e[0]&&w.test(e[0].value);)t.push(n(e).value);if(e[2]?.value==="(")return Se(e,u(e),t);const r=u(e);return e[0]?.value==="{"?be(e,r,t,a):N(e,r,t,a)}function we(e){n(e,"struct");const a={type:"Identifier",name:n(e).value};n(e,"{");const t=[];for(;e[0]&&e[0].value!=="}";)t.push(...h(e));return n(e,"}"),n(e,";"),{type:"StructDeclaration",id:a,members:t}}function De(e){return n(e,"continue"),n(e,";"),{type:"ContinueStatement"}}function Ee(e){return n(e,"break"),n(e,";"),{type:"BreakStatement"}}function ke(e){return n(e,"discard"),n(e,";"),{type:"DiscardStatement"}}function Ce(e){n(e,"return");let a=null;return e[0]?.value!==";"&&(a=u(e)),n(e,";"),{type:"ReturnStatement",argument:a}}function H(e){n(e,"if"),n(e,"(");const a=u(e);n(e,")");const t=x(e);let r=null;return e[0]&&e[0].value==="else"&&(n(e,"else"),e[0]&&e[0].value==="if"?r=H(e):r=x(e)),{type:"IfStatement",test:a,consequent:t,alternate:r}}function Ae(e){n(e,"while"),n(e,"(");const a=u(e);n(e,")");const t=x(e);return{type:"WhileStatement",test:a,body:t}}function Le(e){n(e,"for"),n(e,"(");const a=u(e),t=N(e,a),r=u(e);n(e,";");const i=u(e);n(e,")");const o=x(e);return{type:"ForStatement",init:t,test:r,update:i,body:o}}function je(e){n(e,"do");const a=x(e);n(e,"while"),n(e,"(");const t=u(e);return n(e,")"),n(e,";"),{type:"DoWhileStatement",test:t,body:a}}function Pe(e){n(e,"switch");const a=u(e),t=[];for(;e.length;){const r=n(e);if(r.value==="}")break;if(r.value==="case"){const i=u(e);n(e,":");const o=h(e);t.push({type:"SwitchCase",test:i,consequent:o})}else if(r.value==="default"){n(e,":");const i=h(e);t.push({type:"SwitchCase",test:null,consequent:i})}}return{type:"SwitchStatement",discriminant:a,cases:t}}function qe(e){n(e,"precision");const a=n(e).value,t={type:"Identifier",name:n(e).value};return n(e,";"),{type:"PrecisionStatement",precision:a,typeSpecifier:t}}function Be(e){n(e,"#");let a="",t=null;if(e[0]?.value!=="\\"){if(a=n(e).value,a==="define"){const r=u(e);e[0]?.value==="\\"?t=[r]:t=[r,u(e)]}else if(a==="extension"){const r=u(e);n(e,":");const i=u(e);t=[r,i]}else if(a==="include")n(e,"<"),t=[{type:"Identifier",name:n(e).value}],n(e,">");else if(a!=="else"&&a!=="endif")for(t=[];e.length&&e[0].value!=="\\";)t.push(u(e))}return n(e,"\\"),{type:"PreprocessorStatement",name:a,value:t}}function h(e){const a=[];let t=0;for(;e.length;){const r=e[0];if(t+=he(r),t<0)break;let i=null;if(r.value==="case"||r.value==="default")break;if(r.value==="#")i=Be(e);else if(r.value==="struct")i=we(e);else if(r.value==="continue")i=De(e);else if(r.value==="break")i=Ee(e);else if(r.value==="discard")i=ke(e);else if(r.value==="return")i=Ce(e);else if(r.value==="if")i=H(e);else if(r.value==="while")i=Ae(e);else if(r.value==="for")i=Le(e);else if(r.value==="do")i=je(e);else if(r.value==="switch")i=Pe(e);else if(r.value==="precision")i=qe(e);else if(ge.test(r.value)&&e[1].value!=="[")i=$e(e);else{const o=u(e);n(e,";"),i={type:"ExpressionStatement",expression:o}}a.push(i)}return a}function x(e){n(e,"{");const a=h(e);return n(e,"}"),{type:"BlockStatement",body:a}}const Ie=/\\\n/gm,Me=/(^\s*#[^\\]*?)(\n|\/[\/\*])/gm;function Ue(e){e=e.replace(Ie,""),e=e.replace(Me,"$1\\$2");const a=$(e).filter(t=>t.type!=="whitespace"&&t.type!=="comment");return{type:"Program",body:h(a)}}export{C as GLSL_KEYWORDS,L as GLSL_SYMBOLS,k as WGSL_KEYWORDS,j as WGSL_SYMBOLS,Y as generate,ve as minify,Ue as parse,$ as tokenize};
6
+ `).trim()}const K=/\bfn\s+\w+\s*\(|\b(var|let|const)\s+\w+\s*[:=]/,B=/((\d+\.\d*|\d*\.\d+)([eEpP][-+]?\d+)?|\d+[eEpP][-+]?\d+)[fFhH]?/y,U=/(0[xX][\w\d]+|\d+)[iIuU]?/y,J=/^(true|false)$/,Q=48,ee=57,te=65,re=90,ae=10,ne=13,ie=9,oe=32,se=95,le=46,F=47,I=42,ue=35,ce=64,$=e=>Q<=e&&e<=ee,pe=e=>(e&=-33,te<=e&&e<=re),me=e=>e===ae||e===ne,M=e=>me(e)||e===ie||e===oe,R=e=>pe(e)||$(e)||e===se,fe=e=>e===ue||e===ce;function T(e,r,t){return e.lastIndex=t,e.exec(r)?.[0]}function D(e,r=0){const t=[];let a=-1;const[o,n]=K.test(e)?[C,j]:[A,P];for(;r<e.length;){let p=e[r];const m=e.charCodeAt(r++);if(M(m)){for(;M(e.charCodeAt(r));)p+=e[r++];t.push({type:"whitespace",value:p})}else if($(m)||m===le&&$(e.charCodeAt(r)))(p=T(B,e,r-1))?(r=B.lastIndex,t.push({type:"float",value:p})):(p=T(U,e,r-1))&&(r=U.lastIndex,t.push({type:"int",value:p}));else if(R(m)){for(;R(e.charCodeAt(r));)p+=e[r++];J.test(p)?t.push({type:"bool",value:p}):o.includes(fe(a)?String.fromCharCode(a)+p:p)?t.push({type:"keyword",value:p}):t.push({type:"identifier",value:p})}else if(m===F&&(e.charCodeAt(r)===F||e.charCodeAt(r)===I)){const f=e.charCodeAt(r)===I?"*/":`
7
+ `;for(;r<e.length&&!p.endsWith(f);)p+=e[r++];t.push({type:"comment",value:p.trim()})}else{for(const f of n)f.length>p.length&&e.startsWith(f,r-1)&&(p=f);r+=p.length-1,t.push({type:"symbol",value:p})}a=m}return t}const O=/*@__PURE__*/RegExp.prototype.test.bind(/^\w/),de=/*@__PURE__*/RegExp.prototype.test.bind(/[^\w\\]/),V=/*@__PURE__*/RegExp.prototype.test.bind(/^[_A-Za-z]/),xe=/*@__PURE__*/RegExp.prototype.test.bind(/[;{}\\@]/),G=/*@__PURE__*/RegExp.prototype.test.bind(/^(binding|group|layout|uniform|in|out|attribute|varying)$/);function ve(e,{mangle:r=!1,mangleMap:t=/*@__PURE__*/new Map,mangleExternals:a=!1}={}){e=e.replace(/(^\s*#[^\\]*?)(\n|\/[\/\*])/gm,"$1\\$2");const o=/*@__PURE__*/new Map,n=D(e).filter(u=>u.type!=="whitespace"&&u.type!=="comment");let p=-1,m=-1,f=-1,x="";for(let u=0;u<n.length;u++){const d=n[u];if((G(d.value)||xe(n[u-1]?.value))&&(m=u),d.value==="{"&&V(n[u-1]?.value)?f=u-1:d.value==="}"&&(f=-1),O(d.value)&&O(n[u-1]?.value)&&(x+=" "),de(d.value)&&(n[u-2]?.value==="#"&&n[u-1]?.value==="include"||n[u-2]?.value==="#"&&n[u-1]?.value==="if"||n[u-2]?.value==="#"&&n[u-1]?.value==="elif"||n[u-3]?.value==="#"&&n[u-2]?.value==="define"))if(d.value==="("){for(;u<n.length;){const h=n[u++];if(x+=h.value,h.value===")")break}x+=" "+n[u].value;continue}else x+=" ";let g=d.value;if(n[u-1]?.value==="."&&(g=`${n[u-2]?.value}.`+g),d.type==="identifier"&&g!=="main"&&(typeof r=="boolean"?r:r(d,u,n))){const h=n[u-1]?.value==="}"&&n[u+1]?.value===";",S=G(n[m]?.value),E=S&&n[u-1]?.value===",";let v=t.get(g)??o.get(g);if(!v&&f===-1&&(V(n[u-1]?.value)||h||E||n[u-1]?.type==="symbol"&&n[u+1]?.value===":")&&(a||!S)){const k=a&&S||n[u-2]?.value==="#"||h||E||n[u-1]?.value==="fn"&&(n[u-2]?.value===")"||n[u-3]?.value==="@")?t:o;for(;!v||k.has(v);){v="",p++;let _=p;for(;_>0;)v=String.fromCharCode(97+(_-1)%26)+v,_=Math.floor(_/26)}k.set(g,v)}x+=v??d.value}else d.value==="#"&&n[u-1]?.value!=="\\"?x+=`
8
+ #`:d.value==="\\"?x+=`
9
+ `:x+=d.value}return x.trim()}const W={"~":14,"!":14,"--":14,"++":14,"-":14,"+":14},z={"--":15,"++":15,"(":0,"[":16,".":16},X={"||":3,"^^":4,"&&":5,"|":6,"^":7,"&":8,"==":10,">":10,">=":10,"<":10,"<=":10,"!=":10,"<<":11,">>":11,"+":12,"-":12,"*":13,"/":13,"%":13},N={"=":2,"+=":2,"&=":2,"|=":2,"^=":2,"/=":2,"*=":2,"%=":2,"<<=":2,">>=":2,"-=":2,"?":9},ye=/^(void|bool|float|u?int|[uib]?vec\d|mat\d(x\d)?)$/,w=/^(const|uniform|in|out|inout|centroid|flat|smooth|invariant|lowp|mediump|highp)$/,ge=new RegExp(`${ye.source}|${w.source}|layout`),he={"(":1,"[":1,"{":1,")":-1,"]":-1,"}":-1};function be(e){return he[e.value]??0}function i(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 c(e,r=0){let t=i(e),a;if(t.type==="identifier"||t.type==="keyword")a={type:"Identifier",name:t.value};else if(t.type==="bool"||t.type==="float"||t.type==="int")a={type:"Literal",value:t.value};else if(t.type==="symbol"&&t.value==="(")a=c(e,0),i(e,")");else if(t.type==="symbol"&&t.value in W){const o=W[t.value],n=c(e,o);t.value==="--"||t.value==="++"?a={type:"UpdateExpression",operator:t.value,prefix:!0,argument:n}:a={type:"UnaryExpression",operator:t.value,prefix:!0,argument:n}}else throw new SyntaxError(`Unexpected token: "${t.value}"`);for(;e.length;)if(t=e[0],t.value in z){if(z[t.value]<r)break;if(i(e),t.value==="("){const o=[];for(;e[0]?.value!==")";)o.push(c(e,0)),e[0]?.value!==")"&&i(e,",");i(e,")"),a={type:"CallExpression",callee:a,arguments:o}}else if(t.value==="["){const o=e[0]?.value!=="]"?c(e,0):null;if(i(e,"]"),e[0]?.value==="("){i(e,"(");const n=[];for(;e[0]?.value!==")";)n.push(c(e,0)),e[0]?.value!==")"&&i(e,",");i(e,")"),a={type:"ArrayExpression",typeSpecifier:{type:"ArraySpecifier",typeSpecifier:a,dimensions:[o]},elements:n}}else a={type:"MemberExpression",object:a,property:o,computed:!0}}else if(t.value==="."){const o=c(e,0);a={type:"MemberExpression",object:a,property:o,computed:!1}}else t.value==="--"||t.value==="++"?a={type:"UpdateExpression",operator:t.value,prefix:!1,argument:a}:a={type:"UnaryExpression",operator:t.value,prefix:!1,argument:a}}else if(t.value in X){const o=X[t.value],n=o-1,p=o;if(n<r)break;if(i(e),t.value==="||"||t.value==="&&"||t.value==="^^"){const m=c(e,p);a={type:"LogicalExpression",operator:t.value,left:a,right:m}}else{const m=c(e,p);a={type:"BinaryExpression",operator:t.value,left:a,right:m}}}else if(t.value in N){const o=N[t.value],n=o,p=o-1;if(n<r)break;if(i(e),t.value==="?"){const m=c(e,0);i(e,":");const f=c(e,p);a={type:"ConditionalExpression",test:a,alternate:m,consequent:f}}else{const m=c(e,p);a={type:"AssignmentExpression",operator:t.value,left:a,right:m}}}else break;return a}function _e(e,r,t,a){let o={type:"Identifier",name:i(e).value};e[0]?.value==="["&&(i(e,"["),o={type:"ArraySpecifier",typeSpecifier:o,dimensions:[c(e)]},i(e,"]"));let n=null;return e[0]?.value==="="&&(i(e,"="),n=c(e)),{type:"VariableDeclarator",id:o,qualifiers:t,typeSpecifier:r,layout:a,init:n}}function H(e,r,t=[],a=null){const o=[];if(e[0]?.value!==";")for(;e.length&&(o.push(_e(e,r,t,a)),e[0]?.value===",");)i(e,",");return i(e,";"),{type:"VariableDeclaration",declarations:o}}function Se(e,r,t=[],a=null){const o=y(e).body;let n=null;return e[0]?.value!==";"&&(n=c(e)),i(e,";"),{type:"UniformDeclarationBlock",id:n,qualifiers:t,typeSpecifier:r,layout:a,members:o}}function $e(e,r,t=[]){const a={type:"Identifier",name:i(e).value};i(e,"(");const o=[];for(;e[0]&&e[0].value!==")";){const p=[];for(;e[0]&&w.test(e[0].value);)p.push(i(e).value);const m=c(e),f={type:"Identifier",name:i(e).value};o.push({type:"FunctionParameter",id:f,qualifiers:p,typeSpecifier:m}),e[0]?.value===","&&i(e,",")}i(e,")");let n=null;return e[0].value===";"?i(e,";"):n=y(e),{type:"FunctionDeclaration",id:a,qualifiers:t,typeSpecifier:r,params:o,body:n}}function De(e){let r=null;if(e[0].value==="layout"){for(i(e,"layout"),i(e,"("),r={};e[0]&&e[0].value!==")";){const o=c(e);if(o.type==="AssignmentExpression"&&o.left.type==="Identifier"&&o.right.type==="Literal")r[o.left.name]=o.right.value;else if(o.type==="Identifier")r[o.name]=!0;else throw new TypeError("Unexpected expression");e[0]&&e[0].value!==")"&&i(e,",")}i(e,")")}const t=[];for(;e[0]&&w.test(e[0].value);)t.push(i(e).value);if(e[2]?.value==="(")return $e(e,c(e),t);const a=c(e);return e[0]?.value==="{"?Se(e,a,t,r):H(e,a,t,r)}function we(e){i(e,"struct");const r={type:"Identifier",name:i(e).value};i(e,"{");const t=[];for(;e[0]&&e[0].value!=="}";)t.push(...b(e));return i(e,"}"),i(e,";"),{type:"StructDeclaration",id:r,members:t}}function Ee(e){return i(e,"continue"),i(e,";"),{type:"ContinueStatement"}}function ke(e){return i(e,"break"),i(e,";"),{type:"BreakStatement"}}function Ce(e){return i(e,"discard"),i(e,";"),{type:"DiscardStatement"}}function Ae(e){i(e,"return");let r=null;return e[0]?.value!==";"&&(r=c(e)),i(e,";"),{type:"ReturnStatement",argument:r}}function Y(e){i(e,"if"),i(e,"(");const r=c(e);i(e,")");const t=y(e);let a=null;return e[0]&&e[0].value==="else"&&(i(e,"else"),e[0]&&e[0].value==="if"?a=Y(e):a=y(e)),{type:"IfStatement",test:r,consequent:t,alternate:a}}function Le(e){i(e,"while"),i(e,"(");const r=c(e);i(e,")");const t=y(e);return{type:"WhileStatement",test:r,body:t}}function Pe(e){i(e,"for"),i(e,"(");const r=c(e),t=H(e,r),a=c(e);i(e,";");const o=c(e);i(e,")");const n=y(e);return{type:"ForStatement",init:t,test:a,update:o,body:n}}function je(e){i(e,"do");const r=y(e);i(e,"while"),i(e,"(");const t=c(e);return i(e,")"),i(e,";"),{type:"DoWhileStatement",test:t,body:r}}function qe(e){i(e,"switch");const r=c(e),t=[];for(;e.length;){const a=i(e);if(a.value==="}")break;if(a.value==="case"){const o=c(e);i(e,":");const n=b(e);t.push({type:"SwitchCase",test:o,consequent:n})}else if(a.value==="default"){i(e,":");const o=b(e);t.push({type:"SwitchCase",test:null,consequent:o})}}return{type:"SwitchStatement",discriminant:r,cases:t}}function Be(e){i(e,"precision");const r=i(e).value,t={type:"Identifier",name:i(e).value};return i(e,";"),{type:"PrecisionStatement",precision:r,typeSpecifier:t}}function Ue(e){i(e,"#");let r="",t=null;if(e[0]?.value!=="\\"){if(r=i(e).value,r==="define"){const a=c(e);e[0]?.value==="\\"?t=[a]:t=[a,c(e)]}else if(r==="extension"){const a=c(e);i(e,":");const o=c(e);t=[a,o]}else if(r==="include")i(e,"<"),t=[{type:"Identifier",name:i(e).value}],i(e,">");else if(r!=="else"&&r!=="endif")for(t=[];e.length&&e[0].value!=="\\";)t.push(c(e))}return i(e,"\\"),{type:"PreprocessorStatement",name:r,value:t}}function b(e){const r=[];let t=0;for(;e.length;){const a=e[0];if(t+=be(a),t<0)break;let o=null;if(a.value==="case"||a.value==="default")break;if(a.value==="#")o=Ue(e);else if(a.value==="struct")o=we(e);else if(a.value==="continue")o=Ee(e);else if(a.value==="break")o=ke(e);else if(a.value==="discard")o=Ce(e);else if(a.value==="return")o=Ae(e);else if(a.value==="if")o=Y(e);else if(a.value==="while")o=Le(e);else if(a.value==="for")o=Pe(e);else if(a.value==="do")o=je(e);else if(a.value==="switch")o=qe(e);else if(a.value==="precision")o=Be(e);else if(ge.test(a.value)&&e[1].value!=="[")o=De(e);else{const n=c(e);i(e,";"),o={type:"ExpressionStatement",expression:n}}r.push(o)}return r}function y(e){i(e,"{");const r=b(e);return i(e,"}"),{type:"BlockStatement",body:r}}const Fe=/\\\n/gm,Ie=/(^\s*#[^\\]*?)(\n|\/[\/\*])/gm;function Me(e){e=e.replace(Fe,""),e=e.replace(Ie,"$1\\$2");const r=D(e).filter(t=>t.type!=="whitespace"&&t.type!=="comment");return{type:"Program",body:b(r)}}function l(e,r,t=[]){const a=t,o=r[e.type];switch((o?.enter??o)?.(e,a),t=[...t,e],e.type){case"ArraySpecifier":l(e.typeSpecifier,r,t);for(const n of e.dimensions)n&&l(n,r,t);break;case"ExpressionStatement":l(e.expression,r,t);break;case"BlockStatement":for(const n of e.body)l(n,r,t);break;case"PreprocessorStatement":if(e.value)for(const n of e.value)l(n,r,t);break;case"PrecisionStatement":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 n of e.cases)l(n,r,t);break;case"SwitchCase":e.test&&l(e.test,r,t);for(const n of e.consequent)l(n,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),l(e.id,r,t);break;case"VariableDeclaration":for(const n of e.declarations)l(n,r,t);break;case"VariableDeclarator":l(e.typeSpecifier,r,t),l(e.id,r,t),e.init&&l(e.init,r,t);break;case"UniformDeclarationBlock":l(e.typeSpecifier,r,t);for(const n of e.members)l(n,r,t);e.id&&l(e.id,r,t);break;case"StructDeclaration":l(e.id,r,t);for(const n of e.members)l(n,r,t);break;case"ArrayExpression":l(e.typeSpecifier,r,t);for(const n of e.elements)l(n,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 n of e.arguments)l(n,r,t);break;case"Program":for(const n of e.body)l(n,r,t);break}o?.exit?.(e,a)}export{A as GLSL_KEYWORDS,P as GLSL_SYMBOLS,C as WGSL_KEYWORDS,j as WGSL_SYMBOLS,Z as generate,ve as minify,Me as parse,D as tokenize,l 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"],"sourcesContent":null,"names":["WGSL_KEYWORDS","GLSL_KEYWORDS","SYMBOLS","GLSL_SYMBOLS","WGSL_SYMBOLS","formatLayout","layout","k","v","format","node","value","alternate","qualifiers","body","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","isName","me","F","minify","mangle","mangleMap","mangleExternals","mangleCache","l","u","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","TYPE_REGEX","QUALIFIER_REGEX","VARIABLE_REGEX","SCOPE_DELTAS","getScopeDelta","consume","expected","parseExpression","minBindingPower","lhs","rightBindingPower","rhs","args","elements","precedence","leftBindingPower","mhs","parseVariableDeclarator","typeSpecifier","id","parseVariable","declarations","parseUniformBlock","members","parseBlock","parseFunction","params","parseIndeterminate","expression","parseStruct","parseStatements","parseContinue","parseBreak","parseDiscard","parseReturn","argument","parseIf","test","consequent","parseWhile","parseFor","update","parseDoWhile","parseSwitch","discriminant","cases","parsePrecision","precision","parsePreprocessor","name","left","right","scopeIndex","statement","NEWLINE_REGEX","DIRECTIVE_REGEX","parse"],"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,mBACF,EAEMC,EAAU,CAEd,KACA,KACA,KAGA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAGA,IACA,KACA,KACA,IAGA,IACA,IACA,IACA,IACA,KACA,IACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,IACA,KACA,IACA,IACA,KACA,KAGA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,IACF,EAGaC,EAAe,CAC1B,GAAGD,EAEH,IAEA,IACF,EAGaE,EAAe,CAC1B,GAAGF,EAEH,KAEA,GACF,ECj5BA,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,EAAK,MACd,IAAK,iBACH,MAAO,GAAGA,EAAK,cAAc,IAAI,IAAIA,EAAK,WAAW,IAAID,CAAM,EAAE,KAAK,GAAG,CAAC,IAC5E,IAAK,sBACH,MAAO,GAAGA,EAAOC,EAAK,UAAU,CAAC,IACnC,IAAK,iBACI,MAAA,IAAIA,EAAK,KAAK,IAAID,CAAM,EAAE,KAAK,EAAE,CAAC,IAC3C,IAAK,mBACI,MAAA,WACT,IAAK,wBAAyB,CAC5B,IAAIE,EAAQ,GACZ,OAAID,EAAK,QACHA,EAAK,OAAS,UAAmBC,EAAA,KAAKF,EAAOC,EAAK,MAAM,CAAC,CAAC,CAAC,IACtDA,EAAK,OAAS,YAAaC,EAAQ,GAAGD,EAAK,MAAM,IAAID,CAAM,EAAE,KAAK,GAAG,CAAC,GAC1EE,EAAQ,IAAID,EAAK,MAAM,IAAID,CAAM,EAAE,KAAK,GAAG,CAAC,IAG5C;AAAA,GAAMC,EAAK,IAAI,GAAGC,CAAK;AAAA,CAAA,CAEhC,IAAK,qBACH,MAAO,aAAaD,EAAK,SAAS,IAAIA,EAAK,cAAc,IAAI,IAC/D,IAAK,kBACH,OAAOA,EAAK,SAAW,UAAUD,EAAOC,EAAK,QAAQ,CAAC,IAAM,UAC9D,IAAK,iBACI,MAAA,SACT,IAAK,oBACI,MAAA,YACT,IAAK,cAAe,CACZE,MAAAA,EAAYF,EAAK,UAAY,QAAQD,EAAOC,EAAK,UAAU,CAAC,GAAK,GAChE,MAAA,MAAMD,EAAOC,EAAK,IAAI,CAAC,IAAID,EAAOC,EAAK,UAAU,CAAC,GAAGE,CAAS,EAAA,CAEvE,IAAK,kBACH,MAAO,UAAUH,EAAOC,EAAK,YAAY,CAAC,KAAKA,EAAK,MAAM,IAAID,CAAM,EAAE,KAAK,EAAE,CAAC,IAChF,IAAK,aACH,MAAO,QAAQC,EAAK,KAAOD,EAAOC,EAAK,IAAI,EAAI,SAAS,KAAKA,EAAK,WAAW,IAAID,CAAM,EAAE,KAAK,GAAG,CAAC,IACpG,IAAK,iBACI,MAAA,UAAUA,EAAOC,EAAK,IAAI,CAAC,KAAKD,EAAOC,EAAK,IAAI,CAAC,GAC1D,IAAK,mBACI,MAAA,MAAMD,EAAOC,EAAK,IAAI,CAAC,SAASD,EAAOC,EAAK,IAAI,CAAC,IAC1D,IAAK,eACH,MAAO,OAAOD,EAAOC,EAAK,IAAI,CAAC,IAAID,EAAOC,EAAK,IAAI,CAAC,IAAID,EAAOC,EAAK,MAAM,CAAC,IAAID,EAAOC,EAAK,IAAI,CAAC,GAClG,IAAK,sBAAuB,CACpB,MAAAG,EAAaH,EAAK,WAAW,OAAS,GAAGA,EAAK,WAAW,KAAK,GAAG,CAAC,IAAM,GACxEI,EAAOJ,EAAK,KAAOD,EAAOC,EAAK,IAAI,EAAI,IACtC,MAAA,GAAGG,CAAU,GAAGJ,EAAOC,EAAK,aAAa,CAAC,IAAID,EAAOC,EAAK,EAAE,CAAC,IAAIA,EAAK,OAC1E,IAAID,CAAM,EACV,KAAK,GAAG,CAAC,IAAIK,CAAI,EAAA,CAEtB,IAAK,oBAEI,MAAA,GADYJ,EAAK,WAAW,OAAS,GAAGA,EAAK,WAAW,KAAK,GAAG,CAAC,IAAM,EAC1D,GAAGD,EAAOC,EAAK,aAAa,CAAC,IAAID,EAAOC,EAAK,EAAE,CAAC,GAEtE,IAAK,sBAAuB,CACpBK,MAAAA,EAAOL,EAAK,aAAa,CAAC,EAC1BJ,EAASD,EAAaU,EAAK,MAAM,EACjCF,EAAaE,EAAK,WAAW,OAAS,GAAGA,EAAK,WAAW,KAAK,GAAG,CAAC,IAAM,GAC9E,MAAO,GAAGT,CAAM,GAAGO,CAAU,GAAGJ,EAAOM,EAAK,aAAa,CAAC,IAAIL,EAAK,aAAa,IAAID,CAAM,EAAE,KAAK,GAAG,CAAC,GAAA,CAEvG,IAAK,qBAAsB,CACnBO,MAAAA,EAAON,EAAK,KAAO,IAAID,EAAOC,EAAK,IAAI,CAAC,GAAK,GACnD,MAAO,GAAGD,EAAOC,EAAK,EAAE,CAAC,GAAGM,CAAI,EAAA,CAElC,IAAK,0BAA2B,CACxBV,MAAAA,EAASD,EAAaK,EAAK,MAAM,EACjCG,EAAaH,EAAK,WAAW,OAAS,GAAGA,EAAK,WAAW,KAAK,GAAG,CAAC,IAAM,GACxEO,EAAQP,EAAK,GAAK,GAAGD,EAAOC,EAAK,EAAE,CAAC,GAAK,GAC/C,MAAO,GAAGJ,CAAM,GAAGO,CAAU,GAAGJ,EAAOC,EAAK,aAAa,CAAC,IAAIA,EAAK,QAAQ,IAAID,CAAM,EAAE,KAAK,EAAE,CAAC,IAAIQ,CAAK,GAAA,CAE1G,IAAK,oBACH,MAAO,UAAUR,EAAOC,EAAK,EAAE,CAAC,IAAIA,EAAK,QAAQ,IAAID,CAAM,EAAE,KAAK,EAAE,CAAC,KACvE,IAAK,kBACH,MAAO,GAAGA,EAAOC,EAAK,aAAa,CAAC,IAAIA,EAAK,SAAS,IAAID,CAAM,EAAE,KAAK,GAAG,CAAC,IAC7E,IAAK,kBACL,IAAK,mBACH,OAAOC,EAAK,OAAS,GAAGA,EAAK,QAAQ,GAAGD,EAAOC,EAAK,QAAQ,CAAC,GAAK,GAAGD,EAAOC,EAAK,QAAQ,CAAC,GAAGA,EAAK,QAAQ,GAC5G,IAAK,mBACL,IAAK,uBACL,IAAK,oBACH,MAAO,GAAGD,EAAOC,EAAK,IAAI,CAAC,GAAGA,EAAK,QAAQ,GAAGD,EAAOC,EAAK,KAAK,CAAC,GAClE,IAAK,mBACIA,OAAAA,EAAK,SACR,GAAGD,EAAOC,EAAK,MAAM,CAAC,IAAID,EAAOC,EAAK,QAAQ,CAAC,IAC/C,GAAGD,EAAOC,EAAK,MAAM,CAAC,IAAID,EAAOC,EAAK,QAAQ,CAAC,GACrD,IAAK,wBACH,MAAO,GAAGD,EAAOC,EAAK,IAAI,CAAC,IAAID,EAAOC,EAAK,UAAU,CAAC,IAAID,EAAOC,EAAK,SAAS,CAAC,GAClF,IAAK,iBACH,MAAO,GAAGD,EAAOC,EAAK,MAAM,CAAC,IAAIA,EAAK,UAAU,IAAID,CAAM,EAAE,KAAK,GAAG,CAAC,IACvE,IAAK,UACI,MAAA,GAAGC,EAAK,KAAK,IAAID,CAAM,EAAE,KAAK,EAAE,CAAC,GAC1C,QACSC,OAAAA,CAAA,CAEb,CASgB,SAAAQ,EAASC,EAAkBC,EAAkC,CACpEX,OAAAA,EAAOU,CAAO,EAAE,WAAW;AAAA;AAAA,EAAQ;AAAA,CAAI,EAAE,KAAK,CACvD,CC/GA,MAAME,EAAa,iDAEbC,EAAc,mEACdC,EAAY,6BACZC,EAAa,iBAEbC,EAAO,GACPC,EAAO,GACPC,GAAI,GACJC,GAAI,GACJC,GAAK,GACLC,GAAK,GACLC,GAAM,EACNC,GAAQ,GACRC,GAAa,GACbC,GAAM,GACNC,EAAQ,GACRC,EAAO,GACPC,GAAO,GACPC,GAAK,GAELC,EAAWC,GAAcf,GAAQe,GAAKA,GAAKd,EAC3Ce,GAAWD,IAAgBA,GAAK,IAAMb,IAAKa,GAAKA,GAAKZ,IACrDc,GAAUF,GAAcA,IAAMX,IAAMW,IAAMV,GAC1Ca,EAAWH,GAAcE,GAAOF,CAAC,GAAKA,IAAMT,IAAOS,IAAMR,GACzDY,EAAWJ,GAAcC,GAAQD,CAAC,GAAKD,EAAQC,CAAC,GAAKA,IAAMP,GAC3DY,GAAWL,GAAcA,IAAMH,IAAQG,IAAMF,GAGnD,SAASQ,EAAcC,EAAeC,EAAgBC,EAAmC,CACvF,OAAAF,EAAM,UAAYE,EACXF,EAAM,KAAKC,CAAM,IAAI,CAAC,CAC/B,CAKgB,SAAAE,EAASC,EAAcC,EAAgB,EAAY,CACjE,MAAMC,EAAkB,CAAC,EAEzB,IAAIC,EAAe,GACnB,KAAM,CAACC,EAAUrD,CAAO,EAAImB,EAAW,KAAK8B,CAAI,EAAI,CAACnD,EAAeI,CAAY,EAAI,CAACH,EAAeE,CAAY,EACzGiD,KAAAA,EAAQD,EAAK,QAAQ,CACtBxC,IAAAA,EAAQwC,EAAKC,CAAK,EAChBI,MAAAA,EAAOL,EAAK,WAAWC,GAAO,EAEhCT,GAAAA,EAAQa,CAAI,EAAG,CACVb,KAAAA,EAAQQ,EAAK,WAAWC,CAAK,CAAC,GAAGzC,GAASwC,EAAKC,GAAO,EAC7DC,EAAO,KAAK,CAAE,KAAM,aAAc,MAAA1C,EAAO,CAC3C,SAAW4B,EAAQiB,CAAI,GAAMA,IAAStB,IAAOK,EAAQY,EAAK,WAAWC,CAAK,CAAC,GACpEzC,EAAQmC,EAAcxB,EAAa6B,EAAMC,EAAQ,CAAC,IACrDA,EAAQ9B,EAAY,UACpB+B,EAAO,KAAK,CAAE,KAAM,QAAS,MAAA1C,EAAO,IAC1BA,EAAQmC,EAAcvB,EAAW4B,EAAMC,EAAQ,CAAC,KAC1DA,EAAQ7B,EAAU,UAClB8B,EAAO,KAAK,CAAE,KAAM,MAAO,MAAA1C,EAAO,WAE3BiC,EAAQY,CAAI,EAAG,CACjBZ,KAAAA,EAAQO,EAAK,WAAWC,CAAK,CAAC,GAAGzC,GAASwC,EAAKC,GAAO,EACzD5B,EAAW,KAAKb,CAAK,EAAG0C,EAAO,KAAK,CAAE,KAAM,OAAQ,MAAA1C,EAAO,EACtD4C,EAAS,SAASV,GAAQS,CAAI,EAAI,OAAO,aAAaA,CAAI,EAAI3C,EAAQA,CAAK,EAClF0C,EAAO,KAAK,CAAE,KAAM,UAAW,MAAA1C,EAAO,IAC5B,KAAK,CAAE,KAAM,aAAc,MAAAA,EAAO,CACrC,SAAA6C,IAASrB,IAAUgB,EAAK,WAAWC,CAAK,IAAMjB,GAASgB,EAAK,WAAWC,CAAK,IAAMhB,GAAO,CAClG,MAAMqB,EAAaN,EAAK,WAAWC,CAAK,IAAMhB,EAAO,KAAO;AAAA,EACrDgB,KAAAA,EAAQD,EAAK,QAAU,CAACxC,EAAM,SAAS8C,CAAU,GAAY9C,GAAAwC,EAAKC,GAAO,EACzEC,EAAA,KAAK,CAAE,KAAM,UAAW,MAAO1C,EAAM,KAAA,EAAQ,CAAA,KAC/C,CACL,UAAW+C,KAAUxD,EACfwD,EAAO,OAAS/C,EAAM,QAAUwC,EAAK,WAAWO,EAAQN,EAAQ,CAAC,IAAWzC,EAAA+C,GAElFN,GAASzC,EAAM,OAAS,EACxB0C,EAAO,KAAK,CAAE,KAAM,SAAU,MAAA1C,EAAO,CAAA,CAEhC2C,EAAAE,CAAA,CAGFH,OAAAA,CACT,CC3EA,MAAMM,EAAyB,UAAA,OAAA,UAAiB,KAAA,KAAU,KAAA,EAAK,GACzDC,UAAkC,OAAA,UAAA,KAAA,KAAe,aACjDC,UAAgC,OAAA,UAAA,KAAA,KAAe,YAAiB,EAAAC,GAAA,UAC9B,OAAA,UAAA,KAAA,KAAA,UAAe,EAAeC,EAAA,UAC7B,OAAA,UAAA,KAAA,KACvC,2DACF,EAKO,SAASC,GACdb,EACA,CAAE,OAAAc,EAAS,GAAO,UAAAC,EAAgB,UAAA,IAAA,oBAAOC,EAAAA,EAAkB,EAAM,CAAA,EAA4B,CAGtFhB,EAAAA,EAAK,QAAQ,gCAAiC,QAAQ,EAEvD,MAAAiB,YAAkB,IAAA,IAAIC,EACtBhB,EAAAA,CAAkBH,EAASC,OAAamB,YAAiB,cAAyBC,EAAAA,gBAAwB,EAEhH,IAAIC,EAAsB,GACtBC,EAAoB,GACpBC,EAAqB,GACrBC,EAAmB,GACvB,QAASC,EAAI,EAAGA,EAAIvB,EAAO,OAAQuB,IAAK,CAChCL,MAAAA,EAAQlB,EAAOuB,CAAC,EAGlBC,IAAAA,EAAUN,EAAM,KAAK,GAAKO,GAASzB,EAAOuB,EAAI,CAAC,GAAG,KAAK,KAAeH,EAAAG,GAGtEL,EAAM,QAAU,KAAOV,EAAOR,EAAOuB,EAAI,CAAC,GAAG,KAAK,EAAGF,EAAaE,EAAI,EACjEL,EAAM,QAAU,MAAkBG,EAAA,IAGvCf,EAAOY,EAAM,KAAK,GAAKZ,EAAON,EAAOuB,EAAI,CAAC,GAAG,KAAK,IAAeD,GAAA,KAInEf,GAASW,EAAM,KAAK,IAClBlB,EAAOuB,EAAI,CAAC,GAAG,QAAU,KAAOvB,EAAOuB,EAAI,CAAC,GAAG,QAAU,WACxDvB,EAAOuB,EAAI,CAAC,GAAG,QAAU,KAAOvB,EAAOuB,EAAI,CAAC,GAAG,QAAU,MACzDvB,EAAOuB,EAAI,CAAC,GAAG,QAAU,KAAOvB,EAAOuB,EAAI,CAAC,GAAG,QAAU,QACzDvB,EAAOuB,EAAI,CAAC,GAAG,QAAU,KAAOvB,EAAOuB,EAAI,CAAC,GAAG,QAAU,UAGxDL,GAAAA,EAAM,QAAU,IAAK,CAChBK,KAAAA,EAAIvB,EAAO,QAAQ,CAClB0B,MAAAA,EAAO1B,EAAOuB,GAAG,EAGnB,GAFJD,GAAYI,EAAK,MAEbA,EAAK,QAAU,IAAK,KAAA,CAGdJ,GAAA,IAAMtB,EAAOuB,CAAC,EAAE,MAE5B,QAAA,MAEYD,GAAA,IAIhB,IAAIK,EAAST,EAAM,MAMnB,GALIlB,EAAOuB,EAAI,CAAC,GAAG,QAAU,MAC3BI,EAAS,GAAG3B,EAAOuB,EAAI,CAAC,GAAG,KAAK,IAAMI,GAKtCT,EAAM,OAAS,cAEfS,IAAW,SACV,OAAOf,GAAW,UAAYA,EAASA,EAAOM,EAAOK,EAAGvB,CAAM,GAC/D,CACM4B,MAAAA,EAAY5B,EAAOuB,EAAI,CAAC,GAAG,QAAU,KAAOvB,EAAOuB,EAAI,CAAC,GAAG,QAAU,IACrEM,EAAUL,EAAUxB,EAAOoB,CAAS,GAAG,KAAK,EAC5CU,EAAOD,GAAW7B,EAAOuB,EAAI,CAAC,GAAG,QAAU,IACjD,IAAIQ,EAAUlB,EAAU,IAAIc,CAAM,GAAKZ,EAAY,IAAIY,CAAM,EAC7D,GAEE,CAACI,GAEDV,IAAe,KAEdb,EAAOR,EAAOuB,EAAI,CAAC,GAAG,KAAK,GAE1BK,GAEAE,GAEC9B,EAAOuB,EAAI,CAAC,GAAG,OAAS,UAAYvB,EAAOuB,EAAI,CAAC,GAAG,QAAU,OAE/DT,GAAmB,CAACe,GACrB,CAcM,MAAAG,EATHlB,GAAmBe,GAEpB7B,EAAOuB,EAAI,CAAC,GAAG,QAAU,KAEzBK,GAEAE,GAEC9B,EAAOuB,EAAI,CAAC,GAAG,QAAU,OAASvB,EAAOuB,EAAI,CAAC,GAAG,QAAU,KAAOvB,EAAOuB,EAAI,CAAC,GAAG,QAAU,KACnEV,EAAYE,EAEvC,KAAO,CAACgB,GAAWC,EAAM,IAAID,CAAO,GAAG,CAC3BA,EAAA,GACVZ,IAEA,IAAIc,EAAId,EACR,KAAOc,EAAI,GACTF,EAAU,OAAO,aAAa,IAAOE,EAAI,GAAK,EAAG,EAAIF,EACjDE,EAAA,KAAK,MAAMA,EAAI,EAAE,CACvB,CAGID,EAAA,IAAIL,EAAQI,CAAO,CAAA,CAG3BT,GAAYS,GAAWb,EAAM,KAAA,MAEzBA,EAAM,QAAU,KAAOlB,EAAOuB,EAAI,CAAC,GAAG,QAAU,KAAkBD,GAAA;AAAA,GAC7DJ,EAAM,QAAU,KAAkBI,GAAA;AAAA,KAC1BJ,EAAM,KACzB,CAGF,OAAOI,EAAS,KAAK,CACvB,CClFA,MAAMY,EAAyD,CAC7D,IAAK,GACL,IAAK,GACL,KAAM,GACN,KAAM,GACN,IAAK,GACL,IAAK,EACP,EAEMC,EAA0D,CAC9D,KAAM,GACN,KAAM,GACN,IAAK,EACL,IAAK,GACL,IAAK,EACP,EAEMC,EAA6D,CACjE,KAAM,EACN,KAAM,EACN,KAAM,EACN,IAAK,EACL,IAAK,EACL,IAAK,EACL,KAAM,GACN,IAAK,GACL,KAAM,GACN,IAAK,GACL,KAAM,GACN,KAAM,GACN,KAAM,GACN,KAAM,GACN,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,EACP,EAEMC,EAA8D,CAClE,IAAK,EACL,KAAM,EACN,KAAM,EACN,KAAM,EACN,KAAM,EACN,KAAM,EACN,KAAM,EACN,KAAM,EACN,MAAO,EACP,MAAO,EACP,KAAM,EACN,IAAK,CACP,EAGMC,GAAa,oDAGbC,EAAkB,mFAClBC,GAAiB,IAAI,OAAO,GAAGF,GAAW,MAAM,IAAIC,EAAgB,MAAM,SAAS,EAEnFE,GAAuC,CAE3C,IAAK,EACL,IAAK,EACL,IAAK,EAEL,IAAK,GACL,IAAK,GACL,IAAK,EACP,EACA,SAASC,GAAcxB,EAAsB,CACpCuB,OAAAA,GAAavB,EAAM,KAAK,GAAK,CACtC,CAEA,SAASyB,EAAQ3C,EAAiB4C,EAA0B,CACpD1B,MAAAA,EAAQlB,EAAO,MAAM,EAEvBkB,GAAAA,IAAU,QAAa0B,IAAa,OACtC,MAAM,IAAI,YAAY,aAAaA,CAAQ,GAAG,EAChD,GAAW1B,IAAU,OACb,MAAA,IAAI,YAAY,yBAAyB,EACtC0B,GAAAA,IAAa,QAAa1B,EAAM,QAAU0B,EACnD,MAAM,IAAI,YAAY,aAAaA,CAAQ,UAAU1B,EAAM,KAAK,GAAG,EAG9DA,OAAAA,CACT,CAEA,SAAS2B,EAAgB7C,EAAiB8C,EAA0B,EAAe,CAC7E5B,IAAAA,EAAQyB,EAAQ3C,CAAM,EAEtB+C,EACJ,GAAI7B,EAAM,OAAS,cAAgBA,EAAM,OAAS,UAChD6B,EAAM,CAAE,KAAM,aAAc,KAAM7B,EAAM,KAAM,UACrCA,EAAM,OAAS,QAAUA,EAAM,OAAS,SAAWA,EAAM,OAAS,MAC3E6B,EAAM,CAAE,KAAM,UAAW,MAAO7B,EAAM,KAAM,UACnCA,EAAM,OAAS,UAAYA,EAAM,QAAU,IAC9C6B,EAAAF,EAAgB7C,EAAQ,CAAC,EAC/B2C,EAAQ3C,EAAQ,GAAG,UACVkB,EAAM,OAAS,UAAYA,EAAM,SAASgB,EAA4B,CACzEc,MAAAA,EAAoBd,EAA2BhB,EAAM,KAAK,EAC1D+B,EAAMJ,EAAgB7C,EAAQgD,CAAiB,EACjD9B,EAAM,QAAU,MAAQA,EAAM,QAAU,KACpC6B,EAAA,CAAE,KAAM,mBAAoB,SAAU7B,EAAM,MAAO,OAAQ,GAAM,SAAU+B,CAAI,EAE/EF,EAAA,CAAE,KAAM,kBAAmB,SAAU7B,EAAM,MAAwB,OAAQ,GAAM,SAAU+B,CAAI,CACvG,KAEA,OAAM,IAAI,YAAY,sBAAsB/B,EAAM,KAAK,GAAG,EAG5D,KAAOlB,EAAO,QAGR,GAFJkB,EAAQlB,EAAO,CAAC,EAEZkB,EAAM,SAASiB,EAA6B,CAE9C,GADyBA,EAA4BjB,EAAM,KAAK,EACzC4B,EAAiB,MAIpC,GAFJH,EAAQ3C,CAAM,EAEVkB,EAAM,QAAU,IAAK,CACvB,MAAMgC,EAAqB,CAAC,EAErBlD,KAAAA,EAAO,CAAC,GAAG,QAAU,KAC1BkD,EAAK,KAAKL,EAAgB7C,EAAQ,CAAC,CAAC,EAChCA,EAAO,CAAC,GAAG,QAAU,KAAK2C,EAAQ3C,EAAQ,GAAG,EAEnD2C,EAAQ3C,EAAQ,GAAG,EAEnB+C,EAAM,CAAE,KAAM,iBAAkB,OAAQA,EAAK,UAAWG,CAAK,CAAA,SACpDhC,EAAM,QAAU,IAAK,CACxB+B,MAAAA,EAAMjD,EAAO,CAAC,GAAG,QAAU,IAAM6C,EAAgB7C,EAAQ,CAAC,EAAI,KACpE2C,GAAAA,EAAQ3C,EAAQ,GAAG,EAEfA,EAAO,CAAC,GAAG,QAAU,IAAK,CAC5B2C,EAAQ3C,EAAQ,GAAG,EACnB,MAAMmD,EAAyB,CAAC,EAExBnD,KAAAA,EAAO,CAAC,GAAyB,QAAU,KACjDmD,EAAS,KAAKN,EAAgB7C,EAAQ,CAAC,CAAC,EACnCA,EAAO,CAAC,GAAyB,QAAU,KAAK2C,EAAQ3C,EAAQ,GAAG,EAE1E2C,EAAQ3C,EAAQ,GAAG,EAOnB+C,EAAM,CAAE,KAAM,kBAAmB,cALK,CACpC,KAAM,iBACN,cAAeA,EACf,WAAY,CAACE,CAAqB,CACpC,EACgD,SAAAE,CAAS,CAAA,MAEnDJ,EAAA,CAAE,KAAM,mBAAoB,OAAQA,EAAK,SAAUE,EAAM,SAAU,EAAK,CAChF,SACS/B,EAAM,QAAU,IAAK,CACxB+B,MAAAA,EAAMJ,EAAgB7C,EAAQ,CAAC,EAC/B+C,EAAA,CAAE,KAAM,mBAAoB,OAAQA,EAAK,SAAUE,EAAK,SAAU,EAAM,CAAA,MACrE/B,EAAM,QAAU,MAAQA,EAAM,QAAU,KAC3C6B,EAAA,CAAE,KAAM,mBAAoB,SAAU7B,EAAM,MAAyB,OAAQ,GAAO,SAAU6B,CAAI,EAElGA,EAAA,CAAE,KAAM,kBAAmB,SAAU7B,EAAM,MAAwB,OAAQ,GAAO,SAAU6B,CAAI,CACxG,SACS7B,EAAM,SAASkB,EAAgC,CAClDgB,MAAAA,EAAahB,EAA+BlB,EAAM,KAAK,EACvDmC,EAAmBD,EAAa,EAChCJ,EAAoBI,EAE1B,GAAIC,EAAmBP,EAAiB,MAExCH,GAAAA,EAAQ3C,CAAM,EAEVkB,EAAM,QAAU,MAAQA,EAAM,QAAU,MAAQA,EAAM,QAAU,KAAM,CAClE+B,MAAAA,EAAMJ,EAAgB7C,EAAQgD,CAAiB,EAC/CD,EAAA,CAAE,KAAM,oBAAqB,SAAU7B,EAAM,MAAO,KAAM6B,EAAK,MAAOE,CAAI,CAAA,KAC3E,CACCA,MAAAA,EAAMJ,EAAgB7C,EAAQgD,CAAiB,EAC/CD,EAAA,CAAE,KAAM,mBAAoB,SAAU7B,EAAM,MAAyB,KAAM6B,EAAK,MAAOE,CAAI,CAAA,CACnG,SACS/B,EAAM,SAASmB,EAAiC,CACnDe,MAAAA,EAAaf,EAAgCnB,EAAM,KAAK,EACxDmC,EAAmBD,EACnBJ,EAAoBI,EAAa,EAEvC,GAAIC,EAAmBP,EAAiB,MAIpC,GAFJH,EAAQ3C,CAAM,EAEVkB,EAAM,QAAU,IAAK,CACjBoC,MAAAA,EAAMT,EAAgB7C,EAAQ,CAAC,EACrC2C,EAAQ3C,EAAQ,GAAG,EACbiD,MAAAA,EAAMJ,EAAgB7C,EAAQgD,CAAiB,EAC/CD,EAAA,CAAE,KAAM,wBAAyB,KAAMA,EAAK,UAAWO,EAAK,WAAYL,CAAI,CAAA,KAC7E,CACCA,MAAAA,EAAMJ,EAAgB7C,EAAQgD,CAAiB,EAC/CD,EAAA,CAAE,KAAM,uBAAwB,SAAU7B,EAAM,MAA6B,KAAM6B,EAAK,MAAOE,CAAI,CAAA,CAC3G,KAEA,OAIGF,OAAAA,CACT,CAEA,SAASQ,GACPvD,EACAwD,EACAhG,EACAP,EACoB,CAChBwG,IAAAA,EAAiB,CAAE,KAAM,aAAc,KAAMd,EAAQ3C,CAAM,EAAE,KAAM,EAEnEA,EAAO,CAAC,GAAG,QAAU,MACvB2C,EAAQ3C,EAAQ,GAAG,EACdyD,EAAA,CACH,KAAM,iBACN,cAAeA,EACf,WAAY,CAACZ,EAAgB7C,CAAM,CAAyB,CAC9D,EACA2C,EAAQ3C,EAAQ,GAAG,GAGrB,IAAIrC,EAA0B,KAE1BqC,OAAAA,EAAO,CAAC,GAAG,QAAU,MACvB2C,EAAQ3C,EAAQ,GAAG,EACnBrC,EAAOkF,EAAgB7C,CAAM,GAGxB,CAAE,KAAM,qBAAsB,GAAAyD,EAAI,WAAAjG,EAAY,cAAAgG,EAAe,OAAAvG,EAAQ,KAAAU,CAAK,CACnF,CAEA,SAAS+F,EACP1D,EACAwD,EACAhG,EAAqG,CAAC,EACtGP,EAAkD,KAC7B,CACrB,MAAM0G,EAAqC,CAAC,EAExC3D,GAAAA,EAAO,CAAC,GAAG,QAAU,IACvB,KAAOA,EAAO,SACZ2D,EAAa,KAAKJ,GAAwBvD,EAAQwD,EAAehG,EAAYP,CAAM,CAAC,EAEhF+C,EAAO,CAAC,GAAG,QAAU,MACvB2C,EAAQ3C,EAAQ,GAAG,EAOzB2C,OAAAA,EAAQ3C,EAAQ,GAAG,EAEZ,CAAE,KAAM,sBAAuB,aAAA2D,CAAa,CACrD,CAEA,SAASC,GACP5D,EACAwD,EACAhG,EAAgC,CAAC,EACjCP,EAAkD,KACzB,CACnB4G,MAAAA,EAAUC,EAAW9D,CAAM,EAAE,KAEnC,IAAIyD,EAAwB,KACxBzD,OAAAA,EAAO,CAAC,GAAG,QAAU,MAAKyD,EAAKZ,EAAgB7C,CAAM,GACzD2C,EAAQ3C,EAAQ,GAAG,EAEZ,CAAE,KAAM,0BAA2B,GAAAyD,EAAI,WAAAjG,EAAY,cAAAgG,EAAe,OAAAvG,EAAQ,QAAA4G,CAAQ,CAC3F,CAEA,SAASE,GACP/D,EACAwD,EACAhG,EAAmC,CAAA,EACd,CACfiG,MAAAA,EAAiB,CAAE,KAAM,aAAc,KAAMd,EAAQ3C,CAAM,EAAE,KAAM,EAEzE2C,EAAQ3C,EAAQ,GAAG,EAEnB,MAAMgE,EAA8B,CAAC,EACrC,KAAOhE,EAAO,CAAC,GAAKA,EAAO,CAAC,EAAE,QAAU,KAAK,CAC3C,MAAMxC,EAA8E,CAAC,EAC9EwC,KAAAA,EAAO,CAAC,GAAKuC,EAAgB,KAAKvC,EAAO,CAAC,EAAE,KAAK,GACtDxC,EAAW,KAAKmF,EAAQ3C,CAAM,EAAE,KAAoE,EAEhGwD,MAAAA,EAAgBX,EAAgB7C,CAAM,EACtCyD,EAAiB,CAAE,KAAM,aAAc,KAAMd,EAAQ3C,CAAM,EAAE,KAAM,EAElEgE,EAAA,KAAK,CAAE,KAAM,oBAAqB,GAAAP,EAAI,WAAAjG,EAAY,cAAAgG,CAAAA,CAAe,EAEpExD,EAAO,CAAC,GAAG,QAAU,KAAK2C,EAAQ3C,EAAQ,GAAG,CAAA,CAGnD2C,EAAQ3C,EAAQ,GAAG,EAEnB,IAAIvC,EAAO,KACPuC,OAAAA,EAAO,CAAC,EAAE,QAAU,IAAK2C,EAAQ3C,EAAQ,GAAG,EAC3CvC,EAAOqG,EAAW9D,CAAM,EAEtB,CAAE,KAAM,sBAAuB,GAAAyD,EAAI,WAAAjG,EAAY,cAAAgG,EAAe,OAAAQ,EAAQ,KAAAvG,CAAK,CACpF,CAEA,SAASwG,GAAmBjE,EAAsF,CAChH,IAAI/C,EAAkD,KACtD,GAAI+C,EAAO,CAAC,EAAE,QAAU,SAAU,CAMhC,IALA2C,EAAQ3C,EAAQ,QAAQ,EACxB2C,EAAQ3C,EAAQ,GAAG,EAEnB/C,EAAS,CAAC,EAEH+C,EAAO,CAAC,GAAMA,EAAO,CAAC,EAAY,QAAU,KAAK,CAChDkE,MAAAA,EAAarB,EAAgB7C,CAAM,EAGvCkE,GAAAA,EAAW,OAAS,wBACpBA,EAAW,KAAK,OAAS,cACzBA,EAAW,MAAM,OAAS,UAE1BjH,EAAOiH,EAAW,KAAK,IAAI,EAAIA,EAAW,MAAM,cACvCA,EAAW,OAAS,aACtBjH,EAAAiH,EAAW,IAAI,EAAI,OAEpB,OAAA,IAAI,UAAU,uBAAuB,EAGzClE,EAAO,CAAC,GAAMA,EAAO,CAAC,EAAY,QAAU,KAAa2C,EAAA3C,EAAQ,GAAG,CAAA,CAG1E2C,EAAQ3C,EAAQ,GAAG,CAAA,CAIrB,MAAMxC,EAAuB,CAAC,EACvBwC,KAAAA,EAAO,CAAC,GAAKuC,EAAgB,KAAKvC,EAAO,CAAC,EAAE,KAAK,GACtDxC,EAAW,KAAKmF,EAAQ3C,CAAM,EAAE,KAAK,EAInCA,GAAAA,EAAO,CAAC,GAAG,QAAU,IAChB+D,OAAAA,GACL/D,EACA6C,EAAgB7C,CAAM,EACtBxC,CACF,EAEIgG,MAAAA,EAAgBX,EAAgB7C,CAAM,EAExCA,OAAAA,EAAO,CAAC,GAAG,QAAU,IAAY4D,GAAkB5D,EAAQwD,EAAehG,EAAiCP,CAAM,EAE5GyG,EACL1D,EACAwD,EACAhG,EACAP,CACF,CACJ,CAEA,SAASkH,GAAYnE,EAAoC,CACvD2C,EAAQ3C,EAAQ,QAAQ,EAClByD,MAAAA,EAAiB,CAAE,KAAM,aAAc,KAAMd,EAAQ3C,CAAM,EAAE,KAAM,EACzE2C,EAAQ3C,EAAQ,GAAG,EACnB,MAAM6D,EAAiC,CAAC,EACxC,KAAO7D,EAAO,CAAC,GAAKA,EAAO,CAAC,EAAE,QAAU,KACtC6D,EAAQ,KAAK,GAAIO,EAAgBpE,CAAM,CAAsC,EAE/E,OAAA2C,EAAQ3C,EAAQ,GAAG,EACnB2C,EAAQ3C,EAAQ,GAAG,EAEZ,CAAE,KAAM,oBAAqB,GAAAyD,EAAI,QAAAI,CAAQ,CAClD,CAEA,SAASQ,GAAcrE,EAAoC,CACzD2C,OAAAA,EAAQ3C,EAAQ,UAAU,EAC1B2C,EAAQ3C,EAAQ,GAAG,EAEZ,CAAE,KAAM,mBAAoB,CACrC,CAEA,SAASsE,GAAWtE,EAAiC,CACnD2C,OAAAA,EAAQ3C,EAAQ,OAAO,EACvB2C,EAAQ3C,EAAQ,GAAG,EAEZ,CAAE,KAAM,gBAAiB,CAClC,CAEA,SAASuE,GAAavE,EAAmC,CACvD2C,OAAAA,EAAQ3C,EAAQ,SAAS,EACzB2C,EAAQ3C,EAAQ,GAAG,EAEZ,CAAE,KAAM,kBAAmB,CACpC,CAEA,SAASwE,GAAYxE,EAAkC,CACrD2C,EAAQ3C,EAAQ,QAAQ,EAExB,IAAIyE,EAA8B,KAClC,OAAIzE,EAAO,CAAC,GAAG,QAAU,MAAKyE,EAAW5B,EAAgB7C,CAAM,GAC/D2C,EAAQ3C,EAAQ,GAAG,EAEZ,CAAE,KAAM,kBAAmB,SAAAyE,CAAS,CAC7C,CAEA,SAASC,EAAQ1E,EAA8B,CAC7C2C,EAAQ3C,EAAQ,IAAI,EACpB2C,EAAQ3C,EAAQ,GAAG,EACb2E,MAAAA,EAAO9B,EAAgB7C,CAAM,EACnC2C,EAAQ3C,EAAQ,GAAG,EAEb4E,MAAAA,EAAad,EAAW9D,CAAM,EAEpC,IAAIzC,EAAY,KAChB,OAAIyC,EAAO,CAAC,GAAKA,EAAO,CAAC,EAAE,QAAU,SACnC2C,EAAQ3C,EAAQ,MAAM,EAElBA,EAAO,CAAC,GAAMA,EAAO,CAAC,EAAY,QAAU,KAC9CzC,EAAYmH,EAAQ1E,CAAM,EAE1BzC,EAAYuG,EAAW9D,CAAM,GAI1B,CAAE,KAAM,cAAe,KAAA2E,EAAM,WAAAC,EAAY,UAAArH,CAAU,CAC5D,CAEA,SAASsH,GAAW7E,EAAiC,CACnD2C,EAAQ3C,EAAQ,OAAO,EACvB2C,EAAQ3C,EAAQ,GAAG,EACb2E,MAAAA,EAAO9B,EAAgB7C,CAAM,EACnC2C,EAAQ3C,EAAQ,GAAG,EACbvC,MAAAA,EAAOqG,EAAW9D,CAAM,EAE9B,MAAO,CAAE,KAAM,iBAAkB,KAAA2E,EAAM,KAAAlH,CAAK,CAC9C,CAEA,SAASqH,GAAS9E,EAA+B,CAC/C2C,EAAQ3C,EAAQ,KAAK,EACrB2C,EAAQ3C,EAAQ,GAAG,EACbwD,MAAAA,EAAgBX,EAAgB7C,CAAM,EACtCrC,EAAO+F,EAAc1D,EAAQwD,CAAa,EAE1CmB,EAAO9B,EAAgB7C,CAAM,EACnC2C,EAAQ3C,EAAQ,GAAG,EACb+E,MAAAA,EAASlC,EAAgB7C,CAAM,EACrC2C,EAAQ3C,EAAQ,GAAG,EACbvC,MAAAA,EAAOqG,EAAW9D,CAAM,EAEvB,MAAA,CAAE,KAAM,eAAgB,KAAArC,EAAM,KAAAgH,EAAM,OAAAI,EAAQ,KAAAtH,CAAK,CAC1D,CAEA,SAASuH,GAAahF,EAAmC,CACvD2C,EAAQ3C,EAAQ,IAAI,EACdvC,MAAAA,EAAOqG,EAAW9D,CAAM,EAC9B2C,EAAQ3C,EAAQ,OAAO,EACvB2C,EAAQ3C,EAAQ,GAAG,EACb2E,MAAAA,EAAO9B,EAAgB7C,CAAM,EACnC,OAAA2C,EAAQ3C,EAAQ,GAAG,EACnB2C,EAAQ3C,EAAQ,GAAG,EAEZ,CAAE,KAAM,mBAAoB,KAAA2E,EAAM,KAAAlH,CAAK,CAChD,CAEA,SAASwH,GAAYjF,EAAkC,CACrD2C,EAAQ3C,EAAQ,QAAQ,EAClB,MAAAkF,EAAerC,EAAgB7C,CAAM,EAErCmF,EAAsB,CAAC,EAC7B,KAAOnF,EAAO,QAAQ,CACdkB,MAAAA,EAAQyB,EAAQ3C,CAAM,EACxBkB,GAAAA,EAAM,QAAU,IAAK,MAErBA,GAAAA,EAAM,QAAU,OAAQ,CACpByD,MAAAA,EAAO9B,EAAgB7C,CAAM,EACnC2C,EAAQ3C,EAAQ,GAAG,EACb4E,MAAAA,EAAaR,EAAgBpE,CAAM,EACzCmF,EAAM,KAAK,CAAE,KAAM,aAAc,KAAAR,EAAM,WAAAC,EAAY,CAAA,SAC1C1D,EAAM,QAAU,UAAW,CAEpCyB,EAAQ3C,EAAQ,GAAG,EACb4E,MAAAA,EAAaR,EAAgBpE,CAAM,EACzCmF,EAAM,KAAK,CAAE,KAAM,aAAc,KAAM,KAAA,WAAAP,EAAY,CAAA,CACrD,CAGF,MAAO,CAAE,KAAM,kBAAmB,aAAAM,EAAc,MAAAC,CAAM,CACxD,CAEA,SAASC,GAAepF,EAAqC,CAC3D2C,EAAQ3C,EAAQ,WAAW,EACrB,MAAAqF,EAAY1C,EAAQ3C,CAAM,EAAE,MAC5BwD,EAA4B,CAAE,KAAM,aAAc,KAAMb,EAAQ3C,CAAM,EAAE,KAAM,EACpF2C,OAAAA,EAAQ3C,EAAQ,GAAG,EACZ,CAAE,KAAM,qBAAsB,UAAAqF,EAAW,cAAA7B,CAAc,CAChE,CAEA,SAAS8B,GAAkBtF,EAAwC,CACjE2C,EAAQ3C,EAAQ,GAAG,EAEfuF,IAAAA,EAAO,GACPjI,EAA6B,KAE7B0C,GAAAA,EAAO,CAAC,GAAG,QAAU,MAGvB,GAFOuF,EAAA5C,EAAQ3C,CAAM,EAAE,MAEnBuF,IAAS,SAAU,CACfC,MAAAA,EAAO3C,EAAgB7C,CAAM,EAC/BA,EAAO,CAAC,GAAG,QAAU,KAAM1C,EAAQ,CAACkI,CAAI,EAC/BlI,EAAA,CAACkI,EAAM3C,EAAgB7C,CAAM,CAAC,CAAA,SAClCuF,IAAS,YAAa,CAEzBC,MAAAA,EAAO3C,EAAgB7C,CAAM,EACnC2C,EAAQ3C,EAAQ,GAAG,EACbyF,MAAAA,EAAQ5C,EAAgB7C,CAAM,EAC5B1C,EAAA,CAACkI,EAAMC,CAAK,CAAA,SACXF,IAAS,UAClB5C,EAAQ3C,EAAQ,GAAG,EACX1C,EAAA,CAAC,CAAE,KAAM,aAAc,KAAMqF,EAAQ3C,CAAM,EAAE,MAAO,EAC5D2C,EAAQ3C,EAAQ,GAAG,UACVuF,IAAS,QAAUA,IAAS,QACrCjI,IAAAA,EAAQ,CAAC,EACF0C,EAAO,QAAUA,EAAO,CAAC,EAAE,QAAU,MACpC1C,EAAA,KAAKuF,EAAgB7C,CAAM,CAAC,EAKxC2C,OAAAA,EAAQ3C,EAAQ,IAAI,EAEb,CAAE,KAAM,wBAAyB,KAAAuF,EAAM,MAAAjI,CAAM,CACtD,CAEA,SAAS8G,EAAgBpE,EAA8B,CACrD,MAAMvC,EAAoB,CAAC,EAC3B,IAAIiI,EAAa,EAEjB,KAAO1F,EAAO,QAAQ,CACdkB,MAAAA,EAAQlB,EAAO,CAAC,EAGtB,GADA0F,GAAchD,GAAcxB,CAAK,EAC7BwE,EAAa,EAAG,MAEpB,IAAIC,EAA8B,KAElC,GAAIzE,EAAM,QAAU,QAAUA,EAAM,QAAU,UAAW,MAAA,GAChDA,EAAM,QAAU,IAAKyE,EAAYL,GAAkBtF,CAAM,UACzDkB,EAAM,QAAU,SAAUyE,EAAYxB,GAAYnE,CAAM,UACxDkB,EAAM,QAAU,WAAYyE,EAAYtB,GAAcrE,CAAM,UAC5DkB,EAAM,QAAU,QAASyE,EAAYrB,GAAWtE,CAAM,UACtDkB,EAAM,QAAU,UAAWyE,EAAYpB,GAAavE,CAAM,UAC1DkB,EAAM,QAAU,SAAUyE,EAAYnB,GAAYxE,CAAM,UACxDkB,EAAM,QAAU,KAAMyE,EAAYjB,EAAQ1E,CAAM,UAChDkB,EAAM,QAAU,QAASyE,EAAYd,GAAW7E,CAAM,UACtDkB,EAAM,QAAU,MAAOyE,EAAYb,GAAS9E,CAAM,UAClDkB,EAAM,QAAU,KAAMyE,EAAYX,GAAahF,CAAM,UACrDkB,EAAM,QAAU,SAAUyE,EAAYV,GAAYjF,CAAM,UACxDkB,EAAM,QAAU,YAAayE,EAAYP,GAAepF,CAAM,UAC9DwC,GAAe,KAAKtB,EAAM,KAAK,GAAKlB,EAAO,CAAC,EAAE,QAAU,IAAiB2F,EAAA1B,GAAmBjE,CAAM,MACtG,CACGkE,MAAAA,EAAarB,EAAgB7C,CAAM,EACzC2C,EAAQ3C,EAAQ,GAAG,EACP2F,EAAA,CAAE,KAAM,sBAAuB,WAAAzB,CAAW,CAAA,CAGxDzG,EAAK,KAAKkI,CAAS,CAAA,CAGdlI,OAAAA,CACT,CAGA,SAASqG,EAAW9D,EAAiC,CACnD2C,EAAQ3C,EAAQ,GAAG,EACbvC,MAAAA,EAAO2G,EAAgBpE,CAAM,EACnC2C,OAAAA,EAAQ3C,EAAQ,GAAG,EACZ,CAAE,KAAM,iBAAkB,KAAAvC,CAAK,CACxC,CAEA,MAAMmI,GAAgB,SAChBC,GAAkB,gCAKjB,SAASC,GAAMhG,EAAuB,CAEpCA,EAAAA,EAAK,QAAQ8F,GAAe,EAAE,EAG9B9F,EAAAA,EAAK,QAAQ+F,GAAiB,QAAQ,EAG7C,MAAM7F,EAASH,EAASC,CAAI,EAAE,OAAQoB,GAAUA,EAAM,OAAS,cAAgBA,EAAM,OAAS,SAAS,EAEvG,MAAO,CAAE,KAAM,UAAW,KAAMkD,EAAgBpE,CAAM,CAAE,CAC1D"}
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","value","alternate","qualifiers","body","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","me","isSymbol","isName","he","q","minify","mangle","mangleMap","mangleExternals","mangleCache","r","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","TYPE_REGEX","QUALIFIER_REGEX","VARIABLE_REGEX","SCOPE_DELTAS","getScopeDelta","consume","expected","parseExpression","minBindingPower","lhs","rightBindingPower","rhs","args","elements","precedence","leftBindingPower","mhs","parseVariableDeclarator","typeSpecifier","id","parseVariable","declarations","parseUniformBlock","members","parseBlock","parseFunction","params","parseIndeterminate","expression","parseStruct","parseStatements","parseContinue","parseBreak","parseDiscard","parseReturn","argument","parseIf","test","consequent","parseWhile","parseFor","update","parseDoWhile","parseSwitch","discriminant","cases","parsePrecision","precision","parsePreprocessor","name","left","right","scopeIndex","statement","NEWLINE_REGEX","DIRECTIVE_REGEX","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,Q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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shaderkit",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "description": "Tools and IntelliSense for GLSL and WGSL.",
5
5
  "keywords": [
6
6
  "shaders",
package/src/index.ts CHANGED
@@ -4,3 +4,4 @@ export * from './generator.js'
4
4
  export * from './minifier.js'
5
5
  export * from './parser.js'
6
6
  export * from './tokenizer.js'
7
+ export * from './visitor.js'
package/src/visitor.ts ADDED
@@ -0,0 +1,128 @@
1
+ import { type AST } from './ast'
2
+
3
+ export type Visitors = Partial<{
4
+ [K in AST['type']]:
5
+ | ((node: Extract<AST, { type: K }>, ancestors: AST[]) => void)
6
+ | {
7
+ enter?(node: Extract<AST, { type: K }>, ancestors: AST[]): void
8
+ exit?(node: Extract<AST, { type: K }>, ancestors: AST[]): void
9
+ }
10
+ }>
11
+
12
+ /**
13
+ * Recurses through an [AST](https://en.wikipedia.org/wiki/Abstract_syntax_tree), calling a visitor object on matching nodes.
14
+ */
15
+ export function visit(node: AST, visitors: Visitors, ancestors: AST[] = []): void {
16
+ const parentAncestors = ancestors
17
+ const visitor = visitors[node.type]
18
+
19
+ // @ts-ignore
20
+ ;(visitor?.enter ?? visitor)?.(node, parentAncestors)
21
+
22
+ ancestors = [...ancestors, node]
23
+
24
+ switch (node.type) {
25
+ case 'ArraySpecifier':
26
+ visit(node.typeSpecifier, visitors, ancestors)
27
+ for (const dimension of node.dimensions) if (dimension) visit(dimension, visitors, ancestors)
28
+ break
29
+ case 'ExpressionStatement':
30
+ visit(node.expression, visitors, ancestors)
31
+ break
32
+ case 'BlockStatement':
33
+ for (const statement of node.body) visit(statement, visitors, ancestors)
34
+ break
35
+ case 'PreprocessorStatement':
36
+ if (node.value) for (const expression of node.value) visit(expression, visitors, ancestors)
37
+ break
38
+ case 'PrecisionStatement':
39
+ visit(node.typeSpecifier, visitors, ancestors)
40
+ break
41
+ case 'ReturnStatement':
42
+ if (node.argument) visit(node.argument, visitors, ancestors)
43
+ break
44
+ case 'IfStatement':
45
+ visit(node.test, visitors, ancestors)
46
+ visit(node.consequent, visitors, ancestors)
47
+ if (node.alternate) visit(node.alternate, visitors, ancestors)
48
+ break
49
+ case 'SwitchStatement':
50
+ visit(node.discriminant, visitors, ancestors)
51
+ for (const kase of node.cases) visit(kase, visitors, ancestors)
52
+ break
53
+ case 'SwitchCase':
54
+ if (node.test) visit(node.test, visitors, ancestors)
55
+ for (const statement of node.consequent) visit(statement, visitors, ancestors)
56
+ break
57
+ case 'WhileStatement':
58
+ case 'DoWhileStatement':
59
+ visit(node.test, visitors, ancestors)
60
+ visit(node.body, visitors, ancestors)
61
+ break
62
+ case 'ForStatement':
63
+ if (node.init) visit(node.init, visitors, ancestors)
64
+ if (node.test) visit(node.test, visitors, ancestors)
65
+ if (node.update) visit(node.update, visitors, ancestors)
66
+ visit(node.body, visitors, ancestors)
67
+ break
68
+ case 'FunctionDeclaration':
69
+ visit(node.typeSpecifier, visitors, ancestors)
70
+ visit(node.id, visitors, ancestors)
71
+ if (node.body) visit(node.body, visitors, ancestors)
72
+ break
73
+ case 'FunctionParameter':
74
+ visit(node.typeSpecifier, visitors, ancestors)
75
+ visit(node.id, visitors, ancestors)
76
+ break
77
+ case 'VariableDeclaration':
78
+ for (const declaration of node.declarations) visit(declaration, visitors, ancestors)
79
+ break
80
+ case 'VariableDeclarator':
81
+ visit(node.typeSpecifier, visitors, ancestors)
82
+ visit(node.id, visitors, ancestors)
83
+ if (node.init) visit(node.init, visitors, ancestors)
84
+ break
85
+ case 'UniformDeclarationBlock':
86
+ visit(node.typeSpecifier, visitors, ancestors)
87
+ for (const member of node.members) visit(member, visitors, ancestors)
88
+ if (node.id) visit(node.id, visitors, ancestors)
89
+ break
90
+ case 'StructDeclaration':
91
+ visit(node.id, visitors, ancestors)
92
+ for (const member of node.members) visit(member, visitors, ancestors)
93
+ break
94
+ case 'ArrayExpression':
95
+ visit(node.typeSpecifier, visitors, ancestors)
96
+ for (const element of node.elements) visit(element, visitors, ancestors)
97
+ break
98
+ case 'UnaryExpression':
99
+ case 'UpdateExpression':
100
+ visit(node.argument, visitors, ancestors)
101
+ break
102
+ case 'BinaryExpression':
103
+ case 'AssignmentExpression':
104
+ case 'LogicalExpression':
105
+ visit(node.left, visitors, ancestors)
106
+ visit(node.right, visitors, ancestors)
107
+ break
108
+ case 'MemberExpression':
109
+ visit(node.object, visitors, ancestors)
110
+ visit(node.property, visitors, ancestors)
111
+ break
112
+ case 'ConditionalExpression':
113
+ visit(node.test, visitors, ancestors)
114
+ visit(node.consequent, visitors, ancestors)
115
+ visit(node.alternate, visitors, ancestors)
116
+ break
117
+ case 'CallExpression':
118
+ visit(node.callee, visitors, ancestors)
119
+ for (const argument of node.arguments) visit(argument, visitors, ancestors)
120
+ break
121
+ case 'Program':
122
+ for (const statement of node.body) visit(statement, visitors, ancestors)
123
+ break
124
+ }
125
+
126
+ // @ts-ignore
127
+ visitor?.exit?.(node, parentAncestors)
128
+ }