voodoojs 0.4.6

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.
Files changed (54) hide show
  1. package/README.md +77 -0
  2. package/dist/chunk-234ZLC6W.js +401 -0
  3. package/dist/chunk-4HQEOXTK.js +10271 -0
  4. package/dist/chunk-5777LJVW.js +64 -0
  5. package/dist/chunk-5CKGDARU.js +1845 -0
  6. package/dist/chunk-A2UOVQBP.js +82 -0
  7. package/dist/chunk-E27NRARW.js +16 -0
  8. package/dist/chunk-JZIYRIY6.js +1196 -0
  9. package/dist/chunk-NNU6WOOU.js +641 -0
  10. package/dist/chunk-PQZEVFVZ.js +448 -0
  11. package/dist/chunk-RJUNPXQF.js +946 -0
  12. package/dist/chunk-U76IRJKH.js +72 -0
  13. package/dist/essential.cjs +13889 -0
  14. package/dist/essential.d.cts +24 -0
  15. package/dist/essential.d.ts +24 -0
  16. package/dist/essential.js +51 -0
  17. package/dist/gpu.cjs +2008 -0
  18. package/dist/gpu.d.cts +68 -0
  19. package/dist/gpu.d.ts +68 -0
  20. package/dist/gpu.js +273 -0
  21. package/dist/http.cjs +467 -0
  22. package/dist/http.d.cts +148 -0
  23. package/dist/http.d.ts +148 -0
  24. package/dist/http.js +7 -0
  25. package/dist/index-CaLD-0oh.d.cts +608 -0
  26. package/dist/index-CaLD-0oh.d.ts +608 -0
  27. package/dist/index-DTllqUtj.d.cts +261 -0
  28. package/dist/index-DTllqUtj.d.ts +261 -0
  29. package/dist/index.cjs +23063 -0
  30. package/dist/index.d.cts +1603 -0
  31. package/dist/index.d.ts +1603 -0
  32. package/dist/index.js +6924 -0
  33. package/dist/query-CKJ4oSpG.d.cts +1595 -0
  34. package/dist/query-DQFRmu3u.d.ts +1595 -0
  35. package/dist/reactivity.cjs +676 -0
  36. package/dist/reactivity.d.cts +188 -0
  37. package/dist/reactivity.d.ts +188 -0
  38. package/dist/reactivity.js +4 -0
  39. package/dist/socket.cjs +2685 -0
  40. package/dist/socket.d.cts +167 -0
  41. package/dist/socket.d.ts +167 -0
  42. package/dist/socket.js +238 -0
  43. package/dist/style-XEUAGGJK.js +5 -0
  44. package/dist/utils.cjs +397 -0
  45. package/dist/utils.d.cts +111 -0
  46. package/dist/utils.d.ts +111 -0
  47. package/dist/utils.js +4 -0
  48. package/dist/voodoo.core.js +8213 -0
  49. package/dist/voodoo.core.min.js +146 -0
  50. package/dist/voodoo.full.js +21193 -0
  51. package/dist/voodoo.full.min.js +1784 -0
  52. package/dist/voodoo.js +14185 -0
  53. package/dist/voodoo.min.js +420 -0
  54. package/package.json +127 -0
package/dist/gpu.d.cts ADDED
@@ -0,0 +1,68 @@
1
+ export { B as BUFFER_USAGE, G as GPUAdapter, a as GPUBindGroup, b as GPUBindGroupLayout, c as GPUBuffer, d as GPUCanvasContext, e as GPUCommandBuffer, f as GPUCommandEncoder, g as GPUCompilationInfo, h as GPUCompilationMessage, i as GPUComputePassEncoder, j as GPUComputePipeline, k as GPUDevice, l as GPUDeviceLostInfo, m as GPUNavigator, n as GPUPipelineLayout, o as GPUQueue, p as GPURenderPassEncoder, q as GPURenderPipeline, r as GPUSampler, s as GPUShaderModule, t as GPUTexture, u as GPUTextureFormat, v as GPUTextureView, w as GpuClearColor, x as GpuClock, y as GpuCompute, z as GpuComputeOptions, A as GpuContext, C as GpuEffect, D as GpuEffectOptions, E as GpuFrame, F as GpuInitOptions, H as GpuPassTarget, I as GpuSurface, J as GpuSurfaceOptions, K as GpuTarget, L as GpuTargetOptions, M as GpuUniforms, S as SHADER_STAGE, T as TEXTURE_USAGE, W as WgslBinding, N as WgslBindingKind, O as WgslEntry, P as WgslField, Q as WgslReflection, R as WgslStruct, U as WgslType, V as WgslTypeKind, X as clock, Y as compute, Z as describeWgslType, _ as destroy, $ as effect, a0 as findEntry, a1 as flattenValue, a2 as frame, a3 as frameLoop, a4 as gpu, a5 as inferStruct, a6 as init, a7 as packStruct, a8 as reflectBindings, a9 as reflectEntries, aa as reflectStructs, ab as reflectWgsl, ac as resetShared, ad as shared, ae as splitTopLevel, af as stripWgslComments, ag as supported, ah as surface, ai as target, aj as uniforms, ak as writeField, al as writeStruct } from './index-CaLD-0oh.cjs';
2
+
3
+ /**
4
+ * @module directives/gpu
5
+ *
6
+ * `v-shader`: a WebGPU shader running on a `<canvas>` without writing JavaScript.
7
+ *
8
+ * ```html
9
+ * <canvas v-shader="waves.wgsl" :set="{ speed: velocity, tint: color }"></canvas>
10
+ * <canvas v-shader="#my-shader" v-shader.visible></canvas>
11
+ * <script type="x-shader/wgsl" id="my-shader"> ... </script>
12
+ * ```
13
+ *
14
+ * The directive's commitment is the same as the `gpu` module: without WebGPU nothing breaks.
15
+ * The canvas gets `data-gpu="unsupported"`, fires `voodoo:gpu-unsupported`, and the
16
+ * content inside it appears in its place. No rAF is scheduled,
17
+ * no observer stays open, and the console only gets a warning in dev mode.
18
+ */
19
+ /** Where the shader text comes from. */
20
+ type ShaderSourceKind = 'inline' | 'selector' | 'url' | 'empty';
21
+ /**
22
+ * Decides if the attribute value is WGSL written right there, an element
23
+ * selector, or an address to fetch.
24
+ *
25
+ * The rule is by elimination: `#` only appears in selectors, and WGSL always has
26
+ * a declaration or a key. What's left is an address, the most common case.
27
+ */
28
+ declare function classifyShaderSource(text: string): ShaderSourceKind;
29
+ /**
30
+ * Resolves the shader text.
31
+ *
32
+ * @returns the WGSL, or empty string when the source doesn't exist
33
+ */
34
+ declare function resolveShaderSource(text: string): Promise<string>;
35
+
36
+ /**
37
+ * @module gpu/plugin
38
+ *
39
+ * Separate entry for the GPU layer.
40
+ *
41
+ * The module doesn't go into CDN bundles for a measured reason, not a preference:
42
+ * it costs around 8 KB compressed, and the complete build has a 133 KB ceiling.
43
+ * WebGPU is a niche feature, so those who pay for it are those who use it.
44
+ *
45
+ * ```js
46
+ * import V from 'voodoojs'
47
+ * import 'voodoojs/dist/gpu.js' // registers v-shader and sets up V.gpu
48
+ * ```
49
+ *
50
+ * Importing this file has two effects: registers the `v-shader` directive and
51
+ * makes `V.gpu` available. In ESM builds both sides share the same
52
+ * runtime, because common parts go out in shared chunks.
53
+ */
54
+
55
+ /**
56
+ * Plugin in the format accepted by `V.use()`.
57
+ *
58
+ * ```js
59
+ * import { voodooGpu } from 'voodoojs/dist/gpu.js'
60
+ * V.use(voodooGpu)
61
+ * ```
62
+ */
63
+ declare const voodooGpu: {
64
+ name: string;
65
+ install(V: Record<string, unknown>): void;
66
+ };
67
+
68
+ export { classifyShaderSource, voodooGpu as default, resolveShaderSource, voodooGpu };
package/dist/gpu.d.ts ADDED
@@ -0,0 +1,68 @@
1
+ export { B as BUFFER_USAGE, G as GPUAdapter, a as GPUBindGroup, b as GPUBindGroupLayout, c as GPUBuffer, d as GPUCanvasContext, e as GPUCommandBuffer, f as GPUCommandEncoder, g as GPUCompilationInfo, h as GPUCompilationMessage, i as GPUComputePassEncoder, j as GPUComputePipeline, k as GPUDevice, l as GPUDeviceLostInfo, m as GPUNavigator, n as GPUPipelineLayout, o as GPUQueue, p as GPURenderPassEncoder, q as GPURenderPipeline, r as GPUSampler, s as GPUShaderModule, t as GPUTexture, u as GPUTextureFormat, v as GPUTextureView, w as GpuClearColor, x as GpuClock, y as GpuCompute, z as GpuComputeOptions, A as GpuContext, C as GpuEffect, D as GpuEffectOptions, E as GpuFrame, F as GpuInitOptions, H as GpuPassTarget, I as GpuSurface, J as GpuSurfaceOptions, K as GpuTarget, L as GpuTargetOptions, M as GpuUniforms, S as SHADER_STAGE, T as TEXTURE_USAGE, W as WgslBinding, N as WgslBindingKind, O as WgslEntry, P as WgslField, Q as WgslReflection, R as WgslStruct, U as WgslType, V as WgslTypeKind, X as clock, Y as compute, Z as describeWgslType, _ as destroy, $ as effect, a0 as findEntry, a1 as flattenValue, a2 as frame, a3 as frameLoop, a4 as gpu, a5 as inferStruct, a6 as init, a7 as packStruct, a8 as reflectBindings, a9 as reflectEntries, aa as reflectStructs, ab as reflectWgsl, ac as resetShared, ad as shared, ae as splitTopLevel, af as stripWgslComments, ag as supported, ah as surface, ai as target, aj as uniforms, ak as writeField, al as writeStruct } from './index-CaLD-0oh.js';
2
+
3
+ /**
4
+ * @module directives/gpu
5
+ *
6
+ * `v-shader`: a WebGPU shader running on a `<canvas>` without writing JavaScript.
7
+ *
8
+ * ```html
9
+ * <canvas v-shader="waves.wgsl" :set="{ speed: velocity, tint: color }"></canvas>
10
+ * <canvas v-shader="#my-shader" v-shader.visible></canvas>
11
+ * <script type="x-shader/wgsl" id="my-shader"> ... </script>
12
+ * ```
13
+ *
14
+ * The directive's commitment is the same as the `gpu` module: without WebGPU nothing breaks.
15
+ * The canvas gets `data-gpu="unsupported"`, fires `voodoo:gpu-unsupported`, and the
16
+ * content inside it appears in its place. No rAF is scheduled,
17
+ * no observer stays open, and the console only gets a warning in dev mode.
18
+ */
19
+ /** Where the shader text comes from. */
20
+ type ShaderSourceKind = 'inline' | 'selector' | 'url' | 'empty';
21
+ /**
22
+ * Decides if the attribute value is WGSL written right there, an element
23
+ * selector, or an address to fetch.
24
+ *
25
+ * The rule is by elimination: `#` only appears in selectors, and WGSL always has
26
+ * a declaration or a key. What's left is an address, the most common case.
27
+ */
28
+ declare function classifyShaderSource(text: string): ShaderSourceKind;
29
+ /**
30
+ * Resolves the shader text.
31
+ *
32
+ * @returns the WGSL, or empty string when the source doesn't exist
33
+ */
34
+ declare function resolveShaderSource(text: string): Promise<string>;
35
+
36
+ /**
37
+ * @module gpu/plugin
38
+ *
39
+ * Separate entry for the GPU layer.
40
+ *
41
+ * The module doesn't go into CDN bundles for a measured reason, not a preference:
42
+ * it costs around 8 KB compressed, and the complete build has a 133 KB ceiling.
43
+ * WebGPU is a niche feature, so those who pay for it are those who use it.
44
+ *
45
+ * ```js
46
+ * import V from 'voodoojs'
47
+ * import 'voodoojs/dist/gpu.js' // registers v-shader and sets up V.gpu
48
+ * ```
49
+ *
50
+ * Importing this file has two effects: registers the `v-shader` directive and
51
+ * makes `V.gpu` available. In ESM builds both sides share the same
52
+ * runtime, because common parts go out in shared chunks.
53
+ */
54
+
55
+ /**
56
+ * Plugin in the format accepted by `V.use()`.
57
+ *
58
+ * ```js
59
+ * import { voodooGpu } from 'voodoojs/dist/gpu.js'
60
+ * V.use(voodooGpu)
61
+ * ```
62
+ */
63
+ declare const voodooGpu: {
64
+ name: string;
65
+ install(V: Record<string, unknown>): void;
66
+ };
67
+
68
+ export { classifyShaderSource, voodooGpu as default, resolveShaderSource, voodooGpu };
package/dist/gpu.js ADDED
@@ -0,0 +1,273 @@
1
+ import { supported, clock, shared, gpu, surface, effect, frameLoop, frame } from './chunk-JZIYRIY6.js';
2
+ export { clock, compute, describeWgslType, destroy, effect, findEntry, flattenValue, frame, frameLoop, gpu, inferStruct, init, packStruct, reflectBindings, reflectEntries, reflectStructs, reflectWgsl, resetShared, shared, splitTopLevel, stripWgslComments, supported, surface, target, uniforms, writeField, writeStruct } from './chunk-JZIYRIY6.js';
3
+ import { http } from './chunk-PQZEVFVZ.js';
4
+ import { originalAttributes, destroy } from './chunk-5CKGDARU.js';
5
+ import { handleError } from './chunk-NNU6WOOU.js';
6
+ import { warn, describeElement } from './chunk-A2UOVQBP.js';
7
+ import './chunk-234ZLC6W.js';
8
+ import { defineDirective } from './chunk-5777LJVW.js';
9
+ import './chunk-E27NRARW.js';
10
+
11
+ /**
12
+ * Voodoo.js v0.4.6
13
+ * JavaScript feels like magic.
14
+ * (c) 2026 Voodoo.js contributors. MIT License.
15
+ */
16
+
17
+ // src/directives/gpu.ts
18
+ function classifyShaderSource(text) {
19
+ const valor = text.trim();
20
+ if (!valor) return "empty";
21
+ if (valor.startsWith("#")) return "selector";
22
+ if (/@(?:vertex|fragment|compute)\b/.test(valor)) return "inline";
23
+ if (/\bfn\s+[A-Za-z_]/.test(valor)) return "inline";
24
+ if (valor.includes("{") || valor.includes("\n")) return "inline";
25
+ return "url";
26
+ }
27
+ async function resolveShaderSource(text) {
28
+ const valor = text.trim();
29
+ const kind = classifyShaderSource(valor);
30
+ if (kind === "empty") return "";
31
+ if (kind === "inline") return valor;
32
+ if (kind === "selector") {
33
+ if (typeof document === "undefined") return "";
34
+ let target3 = null;
35
+ try {
36
+ target3 = document.querySelector(valor);
37
+ } catch {
38
+ target3 = null;
39
+ }
40
+ if (!target3) {
41
+ warn(`v-shader did not find the element "${valor}" with the shader source.`);
42
+ return "";
43
+ }
44
+ return target3.textContent ?? "";
45
+ }
46
+ try {
47
+ const response = await http.get(valor, { responseType: "text" });
48
+ return typeof response === "string" ? response : "";
49
+ } catch (err) {
50
+ handleError(err, `v-shader when fetching "${valor}"`);
51
+ return "";
52
+ }
53
+ }
54
+ function revealFallback(el, mount) {
55
+ if (!el.firstChild || typeof document === "undefined") return () => void 0;
56
+ const substitute = document.createElement("div");
57
+ substitute.setAttribute("data-gpu-fallback", "");
58
+ while (el.firstChild) substitute.appendChild(el.firstChild);
59
+ el.parentNode?.insertBefore(substitute, el.nextSibling);
60
+ const previousDisplay = el.style.display;
61
+ el.style.display = "none";
62
+ mount(substitute);
63
+ return () => {
64
+ destroy(substitute);
65
+ while (substitute.firstChild) el.appendChild(substitute.firstChild);
66
+ substitute.remove();
67
+ if (previousDisplay) el.style.display = previousDisplay;
68
+ else el.style.removeProperty("display");
69
+ };
70
+ }
71
+ function noSupport(el, reason, mount) {
72
+ el.setAttribute("data-gpu", "unsupported");
73
+ el.dispatchEvent(
74
+ new CustomEvent("voodoo:gpu-unsupported", { bubbles: true, detail: { reason, el } })
75
+ );
76
+ warn(
77
+ `v-shader at ${describeElement(el)} did not run: ${reason}. The content inside the <canvas> was used as a fallback. Listen to voodoo:gpu-unsupported to offer something else.`
78
+ );
79
+ return revealFallback(el, mount);
80
+ }
81
+ function expressionOfSet(el) {
82
+ const atributos = originalAttributes(el);
83
+ for (const nome of [":set", "v-bind:set", "data-v-bind:set"]) {
84
+ const valor = atributos.get(nome);
85
+ if (valor) return valor;
86
+ }
87
+ const proprio = el.getAttribute("v-shader-set") ?? el.getAttribute("data-v-shader-set");
88
+ return proprio || null;
89
+ }
90
+ function dprRange(el) {
91
+ const raw = el.getAttribute("v-shader-dpr") ?? el.getAttribute("data-v-shader-dpr");
92
+ if (!raw) return [1, 2];
93
+ const parts = raw.split(",").map((n) => parseFloat(n.trim()));
94
+ const min = Number.isFinite(parts[0]) ? parts[0] : 1;
95
+ const max = Number.isFinite(parts[1]) ? parts[1] : Math.max(min, 2);
96
+ return [Math.max(0.5, min), Math.max(min, max)];
97
+ }
98
+ var AUTOMATIC_UNIFORMS = ["time", "delta", "frame", "resolution"];
99
+ defineDirective("shader", (ctx) => {
100
+ const { el, expression, modifiers, evaluate, effect: effect2, cleanup, scope, walk } = ctx;
101
+ const mountOn = (node) => walk(node, scope);
102
+ if (typeof HTMLCanvasElement === "undefined" || !(el instanceof HTMLCanvasElement)) {
103
+ warn(
104
+ `v-shader needs a <canvas>, but was used on ${describeElement(el)}. Change the tag to <canvas> so the shader has somewhere to draw.`
105
+ );
106
+ return;
107
+ }
108
+ const canvas = el;
109
+ let canceled = false;
110
+ cleanup(() => {
111
+ canceled = true;
112
+ canvas.removeAttribute("data-gpu");
113
+ });
114
+ if (!supported()) {
115
+ const restore = noSupport(canvas, "this browser does not have WebGPU", mountOn);
116
+ cleanup(restore);
117
+ return;
118
+ }
119
+ const setExpr = expressionOfSet(canvas);
120
+ let values = {};
121
+ let apply = null;
122
+ if (setExpr) {
123
+ effect2(() => {
124
+ const read = evaluate(setExpr);
125
+ values = read && typeof read === "object" ? read : {};
126
+ apply?.(values);
127
+ });
128
+ }
129
+ const pausedExpr = canvas.getAttribute("v-shader-paused") ?? canvas.getAttribute("data-v-shader-paused");
130
+ let paused = !!modifiers.paused;
131
+ let visible = !modifiers.visible;
132
+ let surface_obj = null;
133
+ let effect_obj = null;
134
+ let stopLoop = null;
135
+ let singleFrame = 0;
136
+ let observer_obj = null;
137
+ let restoreFallback = null;
138
+ let automaticList = [];
139
+ const clock_obj = clock();
140
+ cleanup(() => {
141
+ stopLoop?.();
142
+ stopLoop = null;
143
+ observer_obj?.disconnect();
144
+ observer_obj = null;
145
+ if (singleFrame) cancelAnimationFrame(singleFrame);
146
+ singleFrame = 0;
147
+ effect_obj?.destroy();
148
+ effect_obj = null;
149
+ surface_obj?.destroy();
150
+ surface_obj = null;
151
+ apply = null;
152
+ restoreFallback?.();
153
+ restoreFallback = null;
154
+ });
155
+ const feedClock = () => {
156
+ if (!effect_obj || automaticList.length === 0) return;
157
+ const package_data = {
158
+ time: clock_obj.time,
159
+ delta: clock_obj.delta,
160
+ frame: clock_obj.frame,
161
+ resolution: [surface_obj?.width ?? 0, surface_obj?.height ?? 0]
162
+ };
163
+ const uniforms2 = {};
164
+ for (const name of automaticList) uniforms2[name] = package_data[name];
165
+ effect_obj.set(uniforms2);
166
+ };
167
+ const draw = (gpu2) => {
168
+ feedClock();
169
+ frame(gpu2, (frame2) => frame2.pass(surface_obj, effect_obj));
170
+ };
171
+ const isRunning = () => !!stopLoop;
172
+ const syncLoop = (gpu2) => {
173
+ if (canceled || !effect_obj) return;
174
+ const shouldRun = !paused && visible && !modifiers.once;
175
+ if (shouldRun && !isRunning()) {
176
+ stopLoop = frameLoop(gpu2, (frame2) => {
177
+ clock_obj.tick();
178
+ feedClock();
179
+ frame2.pass(surface_obj, effect_obj);
180
+ });
181
+ canvas.setAttribute("data-gpu", "ready");
182
+ return;
183
+ }
184
+ if (!shouldRun && isRunning()) {
185
+ stopLoop?.();
186
+ stopLoop = null;
187
+ canvas.setAttribute("data-gpu", "paused");
188
+ }
189
+ };
190
+ const mount = (gpu2, source) => {
191
+ surface_obj = surface(gpu2, canvas, { dpr: dprRange(canvas), alpha: true });
192
+ effect_obj = effect(gpu2, source, {
193
+ set: values,
194
+ format: surface_obj.format || void 0,
195
+ label: `v-shader ${describeElement(canvas)}`
196
+ });
197
+ if (!effect_obj.ok) {
198
+ canvas.setAttribute("data-gpu", "error");
199
+ effect_obj.destroy();
200
+ effect_obj = null;
201
+ surface_obj.destroy();
202
+ surface_obj = null;
203
+ return;
204
+ }
205
+ apply = (v) => effect_obj?.set(v);
206
+ const fields = effect_obj.reflection.uniform?.struct?.fields ?? [];
207
+ automaticList = AUTOMATIC_UNIFORMS.filter((name) => fields.some((f) => f.name === name));
208
+ if (pausedExpr) {
209
+ effect2(() => {
210
+ paused = !!evaluate(pausedExpr);
211
+ syncLoop(gpu2);
212
+ });
213
+ }
214
+ if (modifiers.visible && typeof IntersectionObserver !== "undefined") {
215
+ observer_obj = new IntersectionObserver((entries) => {
216
+ for (const entry of entries) visible = entry.isIntersecting;
217
+ syncLoop(gpu2);
218
+ });
219
+ observer_obj.observe(canvas);
220
+ } else {
221
+ visible = true;
222
+ }
223
+ if (modifiers.once) {
224
+ singleFrame = requestAnimationFrame(() => {
225
+ singleFrame = 0;
226
+ if (canceled) return;
227
+ clock_obj.tick();
228
+ draw(gpu2);
229
+ canvas.setAttribute("data-gpu", "ready");
230
+ });
231
+ return;
232
+ }
233
+ canvas.setAttribute("data-gpu", "ready");
234
+ syncLoop(gpu2);
235
+ };
236
+ canvas.setAttribute("data-gpu", "loading");
237
+ void (async () => {
238
+ const source = await resolveShaderSource(expression);
239
+ if (canceled) return;
240
+ if (!source) {
241
+ canvas.setAttribute("data-gpu", "error");
242
+ restoreFallback = revealFallback(canvas, mountOn);
243
+ return;
244
+ }
245
+ const gpu2 = await shared();
246
+ if (canceled) return;
247
+ if (!gpu2) {
248
+ restoreFallback = noSupport(canvas, "the WebGPU adapter did not open", mountOn);
249
+ return;
250
+ }
251
+ try {
252
+ mount(gpu2, source);
253
+ } catch (err) {
254
+ canvas.setAttribute("data-gpu", "error");
255
+ handleError(err, `v-shader at ${describeElement(canvas)}`);
256
+ }
257
+ })();
258
+ });
259
+
260
+ // src/gpu/plugin.ts
261
+ var voodooGpu = {
262
+ name: "gpu",
263
+ install(V) {
264
+ if (!V.gpu) V.gpu = gpu;
265
+ }
266
+ };
267
+ var target2 = globalThis.V;
268
+ if (target2 && typeof target2 === "object" && !target2.gpu) target2.gpu = gpu;
269
+ var plugin_default = voodooGpu;
270
+
271
+ export { classifyShaderSource, plugin_default as default, resolveShaderSource, voodooGpu };
272
+ //# sourceMappingURL=gpu.js.map
273
+ //# sourceMappingURL=gpu.js.map