@vgpu/wgsl 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +81 -0
- package/dist/compile.d.ts +3 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +50 -0
- package/dist/compile.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/loader-vite/index.d.ts +10 -0
- package/dist/loader-vite/index.d.ts.map +1 -0
- package/dist/loader-vite/index.js +19 -0
- package/dist/loader-vite/index.js.map +1 -0
- package/dist/loader-webpack/index.d.ts +7 -0
- package/dist/loader-webpack/index.d.ts.map +1 -0
- package/dist/loader-webpack/index.js +16 -0
- package/dist/loader-webpack/index.js.map +1 -0
- package/dist/runtime/astProjection.d.ts +5 -0
- package/dist/runtime/astProjection.d.ts.map +1 -0
- package/dist/runtime/astProjection.js +14 -0
- package/dist/runtime/astProjection.js.map +1 -0
- package/dist/runtime/cacheKey.d.ts +4 -0
- package/dist/runtime/cacheKey.d.ts.map +1 -0
- package/dist/runtime/cacheKey.js +36 -0
- package/dist/runtime/cacheKey.js.map +1 -0
- package/dist/runtime/diagnosticTypes.d.ts +15 -0
- package/dist/runtime/diagnosticTypes.d.ts.map +1 -0
- package/dist/runtime/diagnosticTypes.js +2 -0
- package/dist/runtime/diagnosticTypes.js.map +1 -0
- package/dist/runtime/errors.d.ts +16 -0
- package/dist/runtime/errors.d.ts.map +1 -0
- package/dist/runtime/errors.js +19 -0
- package/dist/runtime/errors.js.map +1 -0
- package/dist/runtime/lru.d.ts +2 -0
- package/dist/runtime/lru.d.ts.map +1 -0
- package/dist/runtime/lru.js +6 -0
- package/dist/runtime/lru.js.map +1 -0
- package/dist/runtime/mangler.d.ts +20 -0
- package/dist/runtime/mangler.d.ts.map +1 -0
- package/dist/runtime/mangler.js +96 -0
- package/dist/runtime/mangler.js.map +1 -0
- package/dist/runtime/packageResolution.d.ts +11 -0
- package/dist/runtime/packageResolution.d.ts.map +1 -0
- package/dist/runtime/packageResolution.js +77 -0
- package/dist/runtime/packageResolution.js.map +1 -0
- package/dist/runtime/parser.d.ts +29 -0
- package/dist/runtime/parser.d.ts.map +1 -0
- package/dist/runtime/parser.js +129 -0
- package/dist/runtime/parser.js.map +1 -0
- package/dist/runtime/reflect.d.ts +25 -0
- package/dist/runtime/reflect.d.ts.map +1 -0
- package/dist/runtime/reflect.js +22 -0
- package/dist/runtime/reflect.js.map +1 -0
- package/dist/runtime/resolveShader.d.ts +48 -0
- package/dist/runtime/resolveShader.d.ts.map +1 -0
- package/dist/runtime/resolveShader.js +94 -0
- package/dist/runtime/resolveShader.js.map +1 -0
- package/dist/runtime/scanner.d.ts +12 -0
- package/dist/runtime/scanner.d.ts.map +1 -0
- package/dist/runtime/scanner.js +90 -0
- package/dist/runtime/scanner.js.map +1 -0
- package/dist/runtime/validation.d.ts +2 -0
- package/dist/runtime/validation.d.ts.map +1 -0
- package/dist/runtime/validation.js +63 -0
- package/dist/runtime/validation.js.map +1 -0
- package/dist/runtime/xxh64.d.ts +2 -0
- package/dist/runtime/xxh64.d.ts.map +1 -0
- package/dist/runtime/xxh64.js +58 -0
- package/dist/runtime/xxh64.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types.d.ts +38 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +64 -0
- package/src/ResolvedShader.docs.md +28 -0
- package/src/compile.docs.md +24 -0
- package/src/loader-vite/index.docs.md +7 -0
- package/src/loader-webpack/index.docs.md +7 -0
- package/src/runtime/resolveShader.docs.md +9 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Vercel, Inc.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# @vgpu/wgsl
|
|
2
|
+
|
|
3
|
+
> 0.0.1 — early preview
|
|
4
|
+
|
|
5
|
+
`@vgpu/wgsl` packages the shader-side utilities in vgpu. The top-level entry handles direct WGSL compilation for plain source strings, while sub-exports cover import resolution at runtime and integration points for webpack and vite. In 0.0.1 this package is the bridge between raw WGSL text and the shader modules consumed by `@vgpu/core` and `@vgpu/render`.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pnpm add @vgpu/wgsl
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Exports
|
|
14
|
+
|
|
15
|
+
### `@vgpu/wgsl`
|
|
16
|
+
- `compile`
|
|
17
|
+
- types: `ResolvedShader`, `SourceMap`, `WGSLAst`, `WGSLSource`
|
|
18
|
+
|
|
19
|
+
### `@vgpu/wgsl/runtime`
|
|
20
|
+
- `resolveShader`
|
|
21
|
+
- types: `ResolveOptions`, `WGSLModule`, `WGSLAst`, `SourceMap`, `ResolvedShader`
|
|
22
|
+
|
|
23
|
+
### `@vgpu/wgsl/loader-webpack`
|
|
24
|
+
- default export: `wgslWebpackLoader`
|
|
25
|
+
|
|
26
|
+
### `@vgpu/wgsl/loader-vite`
|
|
27
|
+
- `transformWgsl`
|
|
28
|
+
- default export: `wgslVitePlugin`
|
|
29
|
+
- type: `ViteLoadResult`
|
|
30
|
+
|
|
31
|
+
## Usage
|
|
32
|
+
|
|
33
|
+
### `@vgpu/wgsl`
|
|
34
|
+
|
|
35
|
+
```ts
|
|
36
|
+
import { compile } from "@vgpu/wgsl";
|
|
37
|
+
|
|
38
|
+
const shader = compile(`@compute @workgroup_size(1) fn main() {}`);
|
|
39
|
+
console.log(shader.kind, shader.entryPoints);
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### `@vgpu/wgsl/runtime`
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
import { resolveShader } from "@vgpu/wgsl/runtime";
|
|
46
|
+
|
|
47
|
+
const resolved = await resolveShader({
|
|
48
|
+
entry: "/triangle.wgsl",
|
|
49
|
+
modules: {
|
|
50
|
+
"/triangle.wgsl": `@vertex fn vs_main(@builtin(vertex_index) i: u32) -> @builtin(position) vec4f {
|
|
51
|
+
var p = array<vec2f, 3>(vec2f(0.0, 0.5), vec2f(-0.5, -0.5), vec2f(0.5, -0.5));
|
|
52
|
+
return vec4f(p[i], 0.0, 1.0);
|
|
53
|
+
}`,
|
|
54
|
+
},
|
|
55
|
+
validate: false,
|
|
56
|
+
});
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### `@vgpu/wgsl/loader-webpack`
|
|
60
|
+
|
|
61
|
+
```ts
|
|
62
|
+
import wgslWebpackLoader from "@vgpu/wgsl/loader-webpack";
|
|
63
|
+
|
|
64
|
+
// Add wgslWebpackLoader to your webpack rule for .wgsl files.
|
|
65
|
+
void wgslWebpackLoader;
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### `@vgpu/wgsl/loader-vite`
|
|
69
|
+
|
|
70
|
+
```ts
|
|
71
|
+
import wgslVitePlugin, { transformWgsl } from "@vgpu/wgsl/loader-vite";
|
|
72
|
+
|
|
73
|
+
const plugin = wgslVitePlugin();
|
|
74
|
+
const result = await transformWgsl("@compute @workgroup_size(1) fn main() {}", "/shader.wgsl");
|
|
75
|
+
void plugin;
|
|
76
|
+
void result;
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## License
|
|
80
|
+
|
|
81
|
+
MIT.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,YAAY,CAAC;AAKrE,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAqBpD"}
|
package/dist/compile.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export function compile(wgsl) {
|
|
2
|
+
if (hasTopLevelImport(wgsl))
|
|
3
|
+
throw runtimeImportError();
|
|
4
|
+
const sourceMap = { version: 1, mappings: [] };
|
|
5
|
+
const ast = {
|
|
6
|
+
version: 1,
|
|
7
|
+
modules: [{ path: "<runtime>", text: wgsl }],
|
|
8
|
+
diagnostics: [],
|
|
9
|
+
sourceMap,
|
|
10
|
+
cacheKey: cacheKey(wgsl),
|
|
11
|
+
};
|
|
12
|
+
return {
|
|
13
|
+
kind: "wgsl",
|
|
14
|
+
wgsl,
|
|
15
|
+
source: { text: wgsl, path: "<runtime>", imports: [] },
|
|
16
|
+
ast,
|
|
17
|
+
sourceMap,
|
|
18
|
+
diagnostics: [],
|
|
19
|
+
cacheKey: ast.cacheKey,
|
|
20
|
+
entryPoints: entryPoints(wgsl),
|
|
21
|
+
stats: { lines: wgsl.split(/\r?\n/).length, bytes: new TextEncoder().encode(wgsl).byteLength, bindGroups: 0 },
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function cacheKey(wgsl) {
|
|
25
|
+
let hash = 0x811c9dc5;
|
|
26
|
+
for (let i = 0; i < wgsl.length; i++)
|
|
27
|
+
hash = Math.imul(hash ^ wgsl.charCodeAt(i), 0x01000193);
|
|
28
|
+
return { default: `vgpu-wgsl-1:${(hash >>> 0).toString(16).padStart(8, "0")}` };
|
|
29
|
+
}
|
|
30
|
+
function entryPoints(wgsl) {
|
|
31
|
+
const names = [];
|
|
32
|
+
const pattern = /@(vertex|fragment|compute)\s+fn\s+([A-Za-z_][A-Za-z0-9_]*)/g;
|
|
33
|
+
for (const match of wgsl.matchAll(pattern))
|
|
34
|
+
names.push(match[2]);
|
|
35
|
+
return names;
|
|
36
|
+
}
|
|
37
|
+
function hasTopLevelImport(wgsl) {
|
|
38
|
+
const stripped = wgsl.replace(/\/\*[\s\S]*?\*\//g, "").replace(/\/\/.*$/gm, "").trimStart();
|
|
39
|
+
return stripped.startsWith("import ") || stripped.startsWith("import{");
|
|
40
|
+
}
|
|
41
|
+
function runtimeImportError() {
|
|
42
|
+
// Structured error cast: Error is extended immediately with the public code/severity/source fields below.
|
|
43
|
+
const error = new Error("Runtime WGSL strings cannot contain import statements. Use a build-time loader or @vgpu/wgsl/runtime.");
|
|
44
|
+
error.name = "VGPUWGSLRuntimeImportError";
|
|
45
|
+
error.code = "VGPU-WGSL-RUNTIME-IMPORT";
|
|
46
|
+
error.severity = "error";
|
|
47
|
+
error.source = "wgsl";
|
|
48
|
+
return error;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=compile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,IAAI,iBAAiB,CAAC,IAAI,CAAC;QAAE,MAAM,kBAAkB,EAAE,CAAC;IACxD,MAAM,SAAS,GAAc,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC1D,MAAM,GAAG,GAAY;QACnB,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC5C,WAAW,EAAE,EAAE;QACf,SAAS;QACT,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC;KACzB,CAAC;IACF,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,IAAI;QACJ,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE;QACtD,GAAG;QACH,SAAS;QACT,WAAW,EAAE,EAAE;QACf,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC;QAC9B,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE;KAC9G,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,IAAI,GAAG,UAAU,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC9F,OAAO,EAAE,OAAO,EAAE,eAAe,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AAClF,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,6DAA6D,CAAC;IAC9E,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;IAC5F,OAAO,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,kBAAkB;IACzB,0GAA0G;IAC1G,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB,uGAAuG,CAClF,CAAC;IACxB,KAAK,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC1C,KAAK,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACxC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;IACzB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface ViteLoadResult {
|
|
2
|
+
readonly code: string;
|
|
3
|
+
readonly map: null;
|
|
4
|
+
}
|
|
5
|
+
export declare function transformWgsl(source: string, id: string): Promise<ViteLoadResult>;
|
|
6
|
+
export default function wgslVitePlugin(): {
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly transform: (source: string, id: string) => Promise<ViteLoadResult | null>;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/loader-vite/index.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAA;CAAE;AAE7E,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAIvF;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,IAAI;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;CAAE,CAQtJ"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { resolveShader } from "../runtime/resolveShader.js";
|
|
2
|
+
import { hasTopLevelImport } from "../runtime/scanner.js";
|
|
3
|
+
export async function transformWgsl(source, id) {
|
|
4
|
+
if (!hasTopLevelImport(source))
|
|
5
|
+
return { code: `export default ${JSON.stringify(source)};`, map: null };
|
|
6
|
+
const resolved = await resolveShader({ entry: id, validate: false });
|
|
7
|
+
return { code: `export default ${JSON.stringify(resolved.wgsl)};`, map: null };
|
|
8
|
+
}
|
|
9
|
+
export default function wgslVitePlugin() {
|
|
10
|
+
return {
|
|
11
|
+
name: "@vgpu/wgsl",
|
|
12
|
+
async transform(source, id) {
|
|
13
|
+
if (!id.endsWith(".wgsl"))
|
|
14
|
+
return null;
|
|
15
|
+
return transformWgsl(source, id);
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/loader-vite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAI1D,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAc,EAAE,EAAU;IAC5D,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IACxG,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACrE,OAAO,EAAE,IAAI,EAAE,kBAAkB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACjF,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,cAAc;IACpC,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE;YACxB,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,OAAO,IAAI,CAAC;YACvC,OAAO,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/loader-webpack/index.ts"],"names":[],"mappings":"AAIA,KAAK,aAAa,GAAG;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,CAAC;AAE7G,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS5F"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { wgslError } from "../runtime/errors.js";
|
|
2
|
+
import { resolveShader } from "../runtime/resolveShader.js";
|
|
3
|
+
import { hasTopLevelImport } from "../runtime/scanner.js";
|
|
4
|
+
export default function wgslWebpackLoader(source) {
|
|
5
|
+
if (!hasTopLevelImport(source))
|
|
6
|
+
return `export default ${JSON.stringify(source)};`;
|
|
7
|
+
const done = this.async?.();
|
|
8
|
+
const run = async () => {
|
|
9
|
+
const resolved = await resolveShader({ entry: this.resourcePath ?? "<webpack>", validate: false });
|
|
10
|
+
return `export default ${JSON.stringify(resolved.wgsl)};`;
|
|
11
|
+
};
|
|
12
|
+
if (!done)
|
|
13
|
+
throw wgslError("VGPU-WGSL-RUNTIME-IMPORT", "@vgpu/wgsl webpack loader requires asynchronous mode for imports.");
|
|
14
|
+
run().then((code) => done(null, code), (error) => done(error instanceof Error ? error : new Error(String(error))));
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/loader-webpack/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAI1D,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAsB,MAAc;IAC3E,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAAE,OAAO,kBAAkB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;IACnF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,KAAK,IAAI,EAAE;QACrB,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACnG,OAAO,kBAAkB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5D,CAAC,CAAC;IACF,IAAI,CAAC,IAAI;QAAE,MAAM,SAAS,CAAC,0BAA0B,EAAE,mEAAmE,CAAC,CAAC;IAC5H,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9H,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type MangleModule } from "./mangler.ts";
|
|
2
|
+
import type { SourceMap, WGSLModule } from "./resolveShader.ts";
|
|
3
|
+
export declare function sourceMap(modules: readonly MangleModule[]): SourceMap;
|
|
4
|
+
export declare function toAstModule(module: MangleModule): WGSLModule;
|
|
5
|
+
//# sourceMappingURL=astProjection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"astProjection.d.ts","sourceRoot":"","sources":["../../src/runtime/astProjection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhE,wBAAgB,SAAS,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,CAErE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,UAAU,CAQ5D"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { hash8 } from "./mangler.js";
|
|
2
|
+
export function sourceMap(modules) {
|
|
3
|
+
return { version: 3, sources: modules.map((module) => module.path), mappings: "" };
|
|
4
|
+
}
|
|
5
|
+
export function toAstModule(module) {
|
|
6
|
+
return {
|
|
7
|
+
path: module.path,
|
|
8
|
+
bytes: new TextEncoder().encode(module.source).byteLength,
|
|
9
|
+
hash8: hash8(module.path),
|
|
10
|
+
exports: module.parsed.exports.map((exp) => ({ name: exp.name, localName: exp.localName, sourcePath: module.path })),
|
|
11
|
+
imports: module.parsed.imports.map((imp) => ({ from: imp.from, bindings: imp.bindings.map((b) => ({ local: b.local, imported: b.imported })) })),
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=astProjection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"astProjection.js","sourceRoot":"","sources":["../../src/runtime/astProjection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,cAAc,CAAC;AAGxD,MAAM,UAAU,SAAS,CAAC,OAAgC;IACxD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAoB;IAC9C,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU;QACzD,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACpH,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;KACjJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { MangleModule } from "./mangler.ts";
|
|
2
|
+
import type { Reflection } from "./reflect.ts";
|
|
3
|
+
export declare function cacheKeys(modules: readonly MangleModule[], reflection: Reflection, rootDir: string): Record<string, string>;
|
|
4
|
+
//# sourceMappingURL=cacheKey.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cacheKey.d.ts","sourceRoot":"","sources":["../../src/runtime/cacheKey.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,wBAAgB,SAAS,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqB3H"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
export function cacheKeys(modules, reflection, rootDir) {
|
|
3
|
+
const entries = reflection.entryPoints.length ? reflection.entryPoints.map((entry) => entry.name) : ["main"];
|
|
4
|
+
const keys = {};
|
|
5
|
+
for (const entryPoint of entries) {
|
|
6
|
+
const graph = {
|
|
7
|
+
bindings: [...reflection.bindings].sort((a, b) => a.group - b.group || a.binding - b.binding),
|
|
8
|
+
entryPoint,
|
|
9
|
+
overrides: [...reflection.overrides].map((item) => item.name).sort(),
|
|
10
|
+
reachableModules: modules.map((module) => ({
|
|
11
|
+
deps: module.parsed.imports.map((imp) => imp.from).sort(),
|
|
12
|
+
exports: module.parsed.exports.map((exp) => exp.name).sort(),
|
|
13
|
+
modulePath: module.path.replace(rootDir, "").replace(/^\//, ""),
|
|
14
|
+
normalizedSourceHash: sha(normalize(module.source)),
|
|
15
|
+
})).sort((a, b) => a.modulePath.localeCompare(b.modulePath)),
|
|
16
|
+
rootDir: rootDir.split(/[\\/]/).filter(Boolean).pop() ?? "",
|
|
17
|
+
types: "",
|
|
18
|
+
version: "vgsl-1",
|
|
19
|
+
};
|
|
20
|
+
keys[entryPoint] = `vgsl-1:${sha(canonical(graph)).slice(0, 32)}`;
|
|
21
|
+
}
|
|
22
|
+
return keys;
|
|
23
|
+
}
|
|
24
|
+
function normalize(source) {
|
|
25
|
+
return source.replace(/\/\*[\s\S]*?\*\//g, "").replace(/\/\/.*$/gm, "").replace(/\s+/g, "");
|
|
26
|
+
}
|
|
27
|
+
function sha(text) { return createHash("sha256").update(text).digest("hex"); }
|
|
28
|
+
function canonical(value) {
|
|
29
|
+
if (value === null || typeof value !== "object")
|
|
30
|
+
return JSON.stringify(value);
|
|
31
|
+
if (Array.isArray(value))
|
|
32
|
+
return `[${value.map(canonical).join(",")}]`;
|
|
33
|
+
const record = value;
|
|
34
|
+
return `{${Object.keys(record).sort().map((key) => `${JSON.stringify(key)}:${canonical(record[key])}`).join(",")}}`;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=cacheKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cacheKey.js","sourceRoot":"","sources":["../../src/runtime/cacheKey.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type Diagnostic = Error & {
|
|
2
|
+
code: string;
|
|
3
|
+
severity?: "error" | "warning";
|
|
4
|
+
line?: number;
|
|
5
|
+
column?: number;
|
|
6
|
+
range?: unknown;
|
|
7
|
+
columnPrecise?: boolean;
|
|
8
|
+
relatedDiagnostics?: readonly {
|
|
9
|
+
code: string;
|
|
10
|
+
message: string;
|
|
11
|
+
}[];
|
|
12
|
+
metadata?: Record<string, unknown>;
|
|
13
|
+
};
|
|
14
|
+
export type DiagnosticList = readonly Diagnostic[];
|
|
15
|
+
//# sourceMappingURL=diagnosticTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosticTypes.d.ts","sourceRoot":"","sources":["../../src/runtime/diagnosticTypes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,kBAAkB,CAAC,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AACnQ,MAAM,MAAM,cAAc,GAAG,SAAS,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosticTypes.js","sourceRoot":"","sources":["../../src/runtime/diagnosticTypes.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare class VGPUError extends Error {
|
|
2
|
+
readonly code: string;
|
|
3
|
+
readonly line: number;
|
|
4
|
+
readonly column: number;
|
|
5
|
+
readonly severity: "error" | "warning";
|
|
6
|
+
metadata?: Record<string, unknown>;
|
|
7
|
+
relatedDiagnostics?: readonly {
|
|
8
|
+
code: string;
|
|
9
|
+
message: string;
|
|
10
|
+
}[];
|
|
11
|
+
constructor(code: string, message: string, line?: number, column?: number, severity?: "error" | "warning");
|
|
12
|
+
}
|
|
13
|
+
export type WGSLError = VGPUError;
|
|
14
|
+
export declare function wgslError(code: string, message: string, line?: number, column?: number): WGSLError;
|
|
15
|
+
export declare function wgslWarning(code: string, message: string, line?: number, column?: number): WGSLError;
|
|
16
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/runtime/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAU,SAAQ,KAAK;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,kBAAkB,CAAC,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;gBAEtD,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,SAAI,EAAE,MAAM,SAAI,EAAE,QAAQ,GAAE,OAAO,GAAG,SAAmB;CAQzG;AAED,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC;AAClC,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,SAAI,EAAE,MAAM,SAAI,GAAG,SAAS,CAAuD;AAChJ,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,SAAI,EAAE,MAAM,SAAI,GAAG,SAAS,CAAkE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export class VGPUError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
line;
|
|
4
|
+
column;
|
|
5
|
+
severity;
|
|
6
|
+
metadata;
|
|
7
|
+
relatedDiagnostics;
|
|
8
|
+
constructor(code, message, line = 1, column = 1, severity = "error") {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = "VGPUError";
|
|
11
|
+
this.code = code;
|
|
12
|
+
this.line = line;
|
|
13
|
+
this.column = column;
|
|
14
|
+
this.severity = severity;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function wgslError(code, message, line = 1, column = 1) { return new VGPUError(code, message, line, column); }
|
|
18
|
+
export function wgslWarning(code, message, line = 1, column = 1) { return new VGPUError(code, message, line, column, "warning"); }
|
|
19
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/runtime/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,SAAU,SAAQ,KAAK;IACzB,IAAI,CAAS;IACb,IAAI,CAAS;IACb,MAAM,CAAS;IACf,QAAQ,CAAsB;IACvC,QAAQ,CAA2B;IACnC,kBAAkB,CAAgD;IAElE,YAAY,IAAY,EAAE,OAAe,EAAE,IAAI,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,WAAgC,OAAO;QACtG,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAGD,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,OAAe,EAAE,IAAI,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,IAAe,OAAO,IAAI,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAChJ,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,OAAe,EAAE,IAAI,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,IAAe,OAAO,IAAI,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lru.d.ts","sourceRoot":"","sources":["../../src/runtime/lru.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,SAAK,GAAG,IAAI,CAG/E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lru.js","sourceRoot":"","sources":["../../src/runtime/lru.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,QAAQ,CAAO,GAAc,EAAE,GAAM,EAAE,KAAQ,EAAE,GAAG,GAAG,EAAE;IACvE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpB,IAAI,GAAG,CAAC,IAAI,GAAG,GAAG;QAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAU,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ImportDecl, ModuleParse } from "./parser.ts";
|
|
2
|
+
import type { Token } from "./scanner.ts";
|
|
3
|
+
export interface MangleModule {
|
|
4
|
+
readonly path: string;
|
|
5
|
+
readonly source: string;
|
|
6
|
+
readonly tokens: readonly Token[];
|
|
7
|
+
readonly parsed: ModuleParse;
|
|
8
|
+
}
|
|
9
|
+
export interface ExportTarget {
|
|
10
|
+
readonly path: string;
|
|
11
|
+
readonly localName: string;
|
|
12
|
+
readonly kind: string;
|
|
13
|
+
}
|
|
14
|
+
export type ExportMap = ReadonlyMap<string, ExportTarget>;
|
|
15
|
+
export declare function hash64(text: string): string;
|
|
16
|
+
export declare function hash8(path: string): string;
|
|
17
|
+
export declare function mangle(path: string, name: string): string;
|
|
18
|
+
export declare function assertNoMangleCollisions(paths: readonly string[]): void;
|
|
19
|
+
export declare function emitModule(module: MangleModule, exportsByPath: ReadonlyMap<string, ExportMap>, pathOf: (from: string, imp: ImportDecl) => string): string;
|
|
20
|
+
//# sourceMappingURL=mangler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mangler.d.ts","sourceRoot":"","sources":["../../src/runtime/mangler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAI1C,MAAM,WAAW,YAAY;IAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE;AACjJ,MAAM,WAAW,YAAY;IAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAC1G,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAE1D,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAwB;AACpE,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAqC;AAChF,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAA4C;AAEtG,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAOvE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,KAAK,MAAM,GAAG,MAAM,CAKzJ"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { wgslError } from "./errors.js";
|
|
2
|
+
import { xxh64 } from "./xxh64.js";
|
|
3
|
+
export function hash64(text) { return xxh64(text); }
|
|
4
|
+
export function hash8(path) { return hash64(path).slice(0, 8); }
|
|
5
|
+
export function mangle(path, name) { return `_vgsl_${hash8(path)}__${name}`; }
|
|
6
|
+
export function assertNoMangleCollisions(paths) {
|
|
7
|
+
const owners = new Map();
|
|
8
|
+
for (const path of paths) {
|
|
9
|
+
const full = hash64(path), short = full.slice(0, 8), previous = owners.get(short);
|
|
10
|
+
if (previous && previous !== path)
|
|
11
|
+
throw wgslError("VGPU-WGSL-MANGLE-COLLISION", `VGPU-WGSL-MANGLE-COLLISION: mangle hash collision between ${previous} (${hash64(previous)}) and ${path} (${full}); rename one directory in either canonical path.`);
|
|
12
|
+
owners.set(short, path);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export function emitModule(module, exportsByPath, pathOf) {
|
|
16
|
+
const table = new Map();
|
|
17
|
+
for (const local of module.parsed.locals)
|
|
18
|
+
if (!isVisible(local.kind, module.source, local.name))
|
|
19
|
+
table.set(local.name, mangle(module.path, local.name));
|
|
20
|
+
for (const imp of module.parsed.imports)
|
|
21
|
+
addImports(module, imp, table, exportsByPath, pathOf);
|
|
22
|
+
return stripExports(substitute(module, table, exportsByPath, pathOf));
|
|
23
|
+
}
|
|
24
|
+
function addImports(module, imp, table, exportsByPath, pathOf) {
|
|
25
|
+
const targetPath = pathOf(module.path, imp);
|
|
26
|
+
const targetExports = exportsByPath.get(targetPath);
|
|
27
|
+
for (const binding of imp.bindings) {
|
|
28
|
+
if (binding.namespace)
|
|
29
|
+
continue;
|
|
30
|
+
const target = targetExports?.get(binding.imported);
|
|
31
|
+
if (!target)
|
|
32
|
+
throw wgslError("VGPU-WGSL-SYM-NOEXPORT", `Module ${targetPath} has no export ${binding.imported}`);
|
|
33
|
+
table.set(binding.local, isTargetVisible(target) ? target.localName : mangle(target.path, target.localName));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function substitute(module, table, exportsByPath, pathOf) {
|
|
37
|
+
let out = "", cursor = 0, braceDepth = 0;
|
|
38
|
+
const skip = new Set(module.parsed.imports.flatMap((imp) => range(imp.start, imp.end)));
|
|
39
|
+
const shadowed = new Set();
|
|
40
|
+
for (let i = 0; i < module.tokens.length; i++) {
|
|
41
|
+
const token = module.tokens[i];
|
|
42
|
+
if (token.text === "{")
|
|
43
|
+
braceDepth++;
|
|
44
|
+
if (token.text === "}")
|
|
45
|
+
braceDepth = Math.max(0, braceDepth - 1);
|
|
46
|
+
if (token.kind === "ident" && isLocalDecl(module.tokens, i, braceDepth))
|
|
47
|
+
shadowed.add(token.text);
|
|
48
|
+
if (skip.has(token.start)) {
|
|
49
|
+
out += module.source.slice(cursor, token.start);
|
|
50
|
+
cursor = Math.max(cursor, token.end);
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
out += module.source.slice(cursor, token.start);
|
|
54
|
+
const namespace = namespaceReplacement(module, i, exportsByPath, pathOf);
|
|
55
|
+
if (namespace) {
|
|
56
|
+
out += namespace.name;
|
|
57
|
+
cursor = namespace.end;
|
|
58
|
+
i += 2;
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
if (bareNamespace(module, i))
|
|
62
|
+
throw wgslError("VGPU-WGSL-NS-NOTVALUE", `Namespace ${token.text} is not a WGSL value`, token.line, token.column);
|
|
63
|
+
out += token.kind === "ident" && !shadowed.has(token.text) && !blocked(module.tokens, i) ? table.get(token.text) ?? token.text : token.text;
|
|
64
|
+
cursor = token.end;
|
|
65
|
+
}
|
|
66
|
+
return out + module.source.slice(cursor);
|
|
67
|
+
}
|
|
68
|
+
function namespaceReplacement(module, i, exportsByPath, pathOf) {
|
|
69
|
+
const token = module.tokens[i], dot = module.tokens[i + 1], member = module.tokens[i + 2];
|
|
70
|
+
if (token?.kind !== "ident" || dot?.text !== "." || member?.kind !== "ident")
|
|
71
|
+
return undefined;
|
|
72
|
+
const imp = module.parsed.imports.find((item) => item.bindings.some((b) => b.namespace && b.local === token.text));
|
|
73
|
+
if (!imp)
|
|
74
|
+
return undefined;
|
|
75
|
+
const targetPath = pathOf(module.path, imp);
|
|
76
|
+
const target = exportsByPath.get(targetPath)?.get(member.text);
|
|
77
|
+
if (!target)
|
|
78
|
+
throw wgslError("VGPU-WGSL-NS-NOMEMBER", `Namespace ${token.text} has no member ${member.text}`, member.line, member.column);
|
|
79
|
+
return { name: isTargetVisible(target) ? target.localName : mangle(target.path, target.localName), end: member.end };
|
|
80
|
+
}
|
|
81
|
+
function bareNamespace(module, i) { const token = module.tokens[i]; return token?.kind === "ident" && module.parsed.imports.some((item) => item.bindings.some((b) => b.namespace && b.local === token.text)) && module.tokens[i + 1]?.text !== "."; }
|
|
82
|
+
function isLocalDecl(tokens, i, braceDepth) { const prev = tokens[i - 1]?.text, next = tokens[i + 1]?.text; if (braceDepth > 0 && (prev === "let" || prev === "var"))
|
|
83
|
+
return true; if (next === ":")
|
|
84
|
+
for (let j = i; j >= 0 && tokens[j]?.text !== "{" && tokens[j]?.text !== "}"; j--)
|
|
85
|
+
if (tokens[j]?.text === "fn")
|
|
86
|
+
return true; return false; }
|
|
87
|
+
function blocked(tokens, i) { const prev = tokens[i - 1]?.text, next = tokens[i + 1]?.text; return prev === "@" || prev === "." || (next === ":" && !declared(tokens, i)) || prev === "enable" || prev === "requires" || prev === "override"; }
|
|
88
|
+
function declared(tokens, i) { for (let j = i - 1; j >= 0 && tokens[j]?.text !== ";" && tokens[j]?.text !== "{" && tokens[j]?.text !== "}"; j--)
|
|
89
|
+
if (["var", "let", "const", "override"].includes(tokens[j].text))
|
|
90
|
+
return true; return false; }
|
|
91
|
+
function stripExports(source) { return source.replace(/\bexport\s+(?=@|fn|struct|const|alias|var|override)/g, "").replace(/(@[A-Za-z_][A-Za-z0-9_]*(?:\([^)]*\))?\s*)export\s+(?=fn|struct|const|alias|var|override)/g, "$1"); }
|
|
92
|
+
function isVisible(kind, source, name) { return kind === "override" || new RegExp(`@(vertex|fragment|compute)[\\s\\S]*?fn\\s+${name}\\b`).test(source); }
|
|
93
|
+
function isTargetVisible(target) { return target.kind === "override" || target.kind === "entry"; }
|
|
94
|
+
function range(start, end) { const values = []; for (let i = start; i < end; i++)
|
|
95
|
+
values.push(i); return values; }
|
|
96
|
+
//# sourceMappingURL=mangler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mangler.js","sourceRoot":"","sources":["../../src/runtime/mangler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Diagnostic } from "./diagnosticTypes.ts";
|
|
2
|
+
export interface PackageResolveOptions {
|
|
3
|
+
readonly entry: string;
|
|
4
|
+
readonly rootDir?: string;
|
|
5
|
+
readonly packageMap?: Record<string, string>;
|
|
6
|
+
readonly modules?: Record<string, string>;
|
|
7
|
+
}
|
|
8
|
+
export declare function resolveImport(spec: string, from: string, opts: PackageResolveOptions, diagnostics: Diagnostic[]): string;
|
|
9
|
+
export declare function readModule(path: string, opts: PackageResolveOptions): string;
|
|
10
|
+
export declare function canonicalEntry(entry: string, opts: PackageResolveOptions): string;
|
|
11
|
+
//# sourceMappingURL=packageResolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packageResolution.d.ts","sourceRoot":"","sources":["../../src/runtime/packageResolution.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,WAAW,qBAAqB;IAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE;AAErL,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CAQxH;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAK5E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAEjF"}
|