typegpu 0.11.8 → 0.12.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.
Files changed (362) hide show
  1. package/builtin.d.ts +51 -53
  2. package/builtin.js +30 -34
  3. package/common/fullScreenTriangle.d.ts +2 -10
  4. package/common/fullScreenTriangle.js +20 -28
  5. package/common/index.d.ts +2 -9
  6. package/common/index.js +3 -12
  7. package/common/writeSoA.d.ts +11 -12
  8. package/common/writeSoA.js +88 -76
  9. package/core/buffer/buffer.d.ts +79 -62
  10. package/core/buffer/buffer.js +279 -205
  11. package/core/buffer/bufferBinding.d.ts +71 -0
  12. package/core/buffer/bufferBinding.js +154 -0
  13. package/core/buffer/bufferUsage.d.ts +14 -45
  14. package/core/buffer/bufferUsage.js +1 -171
  15. package/core/buffer/laidOutBuffer.d.ts +25 -0
  16. package/core/buffer/laidOutBuffer.js +55 -0
  17. package/core/commandEncoder/attachments.d.ts +125 -0
  18. package/core/commandEncoder/attachments.js +29 -0
  19. package/core/commandEncoder/commandEncoder.d.ts +53 -0
  20. package/core/commandEncoder/commandEncoder.js +56 -0
  21. package/core/commandEncoder/computePass.d.ts +58 -0
  22. package/core/commandEncoder/computePass.js +63 -0
  23. package/core/commandEncoder/renderPass.d.ts +121 -0
  24. package/core/commandEncoder/renderPass.js +196 -0
  25. package/core/constant/tgpuConstant.d.ts +26 -26
  26. package/core/constant/tgpuConstant.js +76 -65
  27. package/core/declare/tgpuDeclare.d.ts +3 -6
  28. package/core/declare/tgpuDeclare.js +37 -38
  29. package/core/function/autoIO.d.ts +61 -33
  30. package/core/function/autoIO.js +68 -73
  31. package/core/function/comptime.d.ts +11 -13
  32. package/core/function/comptime.js +60 -52
  33. package/core/function/createCallableSchema.d.ts +16 -0
  34. package/core/function/createCallableSchema.js +50 -40
  35. package/core/function/dualImpl.d.ts +44 -0
  36. package/core/function/dualImpl.js +71 -50
  37. package/core/function/entryInputRouter.d.ts +26 -0
  38. package/core/function/entryInputRouter.js +31 -33
  39. package/core/function/extractArgs.d.ts +38 -0
  40. package/core/function/extractArgs.js +202 -200
  41. package/core/function/fnCore.d.ts +44 -0
  42. package/core/function/fnCore.js +148 -92
  43. package/core/function/fnTypes.d.ts +31 -29
  44. package/core/function/fnTypes.js +1 -0
  45. package/core/function/ioSchema.d.ts +12 -10
  46. package/core/function/ioSchema.js +65 -47
  47. package/core/function/shelllessImpl.d.ts +9 -12
  48. package/core/function/shelllessImpl.js +18 -20
  49. package/core/function/templateUtils.d.ts +2 -0
  50. package/core/function/templateUtils.js +9 -8
  51. package/core/function/tgpuComputeFn.d.ts +26 -28
  52. package/core/function/tgpuComputeFn.js +47 -48
  53. package/core/function/tgpuFn.d.ts +34 -37
  54. package/core/function/tgpuFn.js +179 -153
  55. package/core/function/tgpuFragmentFn.d.ts +52 -53
  56. package/core/function/tgpuFragmentFn.js +63 -56
  57. package/core/function/tgpuVertexFn.d.ts +36 -39
  58. package/core/function/tgpuVertexFn.js +56 -53
  59. package/core/pipeline/computePipeline.d.ts +141 -53
  60. package/core/pipeline/computePipeline.js +291 -225
  61. package/core/pipeline/connectAttachmentToShader.d.ts +4 -0
  62. package/core/pipeline/connectAttachmentToShader.js +25 -22
  63. package/core/pipeline/connectTargetsToShader.d.ts +3 -0
  64. package/core/pipeline/connectTargetsToShader.js +29 -27
  65. package/core/pipeline/drawState.d.ts +52 -0
  66. package/core/pipeline/drawState.js +225 -0
  67. package/core/pipeline/limitsOverflow.d.ts +2 -0
  68. package/core/pipeline/limitsOverflow.js +13 -10
  69. package/core/pipeline/performanceTracker.d.ts +14 -0
  70. package/core/pipeline/performanceTracker.js +34 -0
  71. package/core/pipeline/pipelineUtils.d.ts +18 -0
  72. package/core/pipeline/pipelineUtils.js +54 -25
  73. package/core/pipeline/priors.d.ts +1 -0
  74. package/core/pipeline/priors.js +12 -0
  75. package/core/pipeline/renderPipeline.d.ts +246 -261
  76. package/core/pipeline/renderPipeline.js +487 -480
  77. package/core/pipeline/timeable.d.ts +28 -18
  78. package/core/pipeline/timeable.js +90 -52
  79. package/core/pipeline/typeGuards.d.ts +17 -0
  80. package/core/pipeline/typeGuards.js +52 -22
  81. package/core/querySet/querySet.d.ts +26 -21
  82. package/core/querySet/querySet.js +127 -103
  83. package/core/rawCodeSnippet/tgpuRawCodeSnippet.d.ts +13 -18
  84. package/core/rawCodeSnippet/tgpuRawCodeSnippet.js +90 -93
  85. package/core/resolve/externals.d.ts +25 -7
  86. package/core/resolve/externals.js +79 -62
  87. package/core/resolve/namespace.d.ts +22 -25
  88. package/core/resolve/namespace.js +16 -21
  89. package/core/resolve/resolvableString.d.ts +7 -0
  90. package/core/resolve/resolvableString.js +13 -0
  91. package/core/resolve/resolveData.d.ts +10 -0
  92. package/core/resolve/resolveData.js +162 -121
  93. package/core/resolve/stitch.d.ts +8 -0
  94. package/core/resolve/stitch.js +23 -21
  95. package/core/resolve/tgpuResolve.d.ts +55 -53
  96. package/core/resolve/tgpuResolve.js +106 -55
  97. package/core/root/configurableImpl.d.ts +10 -0
  98. package/core/root/configurableImpl.js +17 -19
  99. package/core/root/init.d.ts +76 -38
  100. package/core/root/init.js +346 -454
  101. package/core/root/rootTypes.d.ts +461 -627
  102. package/core/root/rootTypes.js +1 -0
  103. package/core/sampler/sampler.d.ts +50 -31
  104. package/core/sampler/sampler.js +120 -113
  105. package/core/simulate/tgpuSimulate.d.ts +9 -12
  106. package/core/simulate/tgpuSimulate.js +68 -71
  107. package/core/slot/accessor.d.ts +36 -13
  108. package/core/slot/accessor.js +138 -91
  109. package/core/slot/internalSlots.d.ts +2 -0
  110. package/core/slot/internalSlots.js +1 -6
  111. package/core/slot/lazy.d.ts +2 -6
  112. package/core/slot/lazy.js +71 -39
  113. package/core/slot/slot.d.ts +2 -6
  114. package/core/slot/slot.js +45 -38
  115. package/core/slot/slotTypes.d.ts +78 -80
  116. package/core/slot/slotTypes.js +11 -16
  117. package/core/texture/externalTexture.d.ts +20 -11
  118. package/core/texture/externalTexture.js +46 -46
  119. package/core/texture/texture.d.ts +152 -97
  120. package/core/texture/texture.js +407 -314
  121. package/core/texture/textureFormats.d.ts +42 -23
  122. package/core/texture/textureFormats.js +104 -75
  123. package/core/texture/textureProps.d.ts +7 -10
  124. package/core/texture/textureProps.js +1 -0
  125. package/core/texture/textureUtils.d.ts +8 -0
  126. package/core/texture/textureUtils.js +185 -179
  127. package/core/texture/usageExtension.d.ts +21 -18
  128. package/core/texture/usageExtension.js +13 -17
  129. package/core/unroll/tgpuUnroll.d.ts +20 -19
  130. package/core/unroll/tgpuUnroll.js +82 -91
  131. package/core/valueProxyUtils.d.ts +3 -0
  132. package/core/valueProxyUtils.js +52 -41
  133. package/core/variable/tgpuVariable.d.ts +26 -27
  134. package/core/variable/tgpuVariable.js +93 -96
  135. package/core/vertexLayout/connectAttributesToShader.d.ts +9 -0
  136. package/core/vertexLayout/connectAttributesToShader.js +61 -56
  137. package/core/vertexLayout/vertexAttribute.d.ts +21 -17
  138. package/core/vertexLayout/vertexAttribute.js +1 -0
  139. package/core/vertexLayout/vertexLayout.d.ts +24 -18
  140. package/core/vertexLayout/vertexLayout.js +130 -99
  141. package/core/whitespaces.d.ts +2 -0
  142. package/core/whitespaces.js +16 -0
  143. package/data/alignIO.d.ts +7 -0
  144. package/data/alignIO.js +13 -13
  145. package/data/alignmentOf.d.ts +5 -8
  146. package/data/alignmentOf.js +90 -75
  147. package/data/array.d.ts +6 -9
  148. package/data/array.js +48 -40
  149. package/data/atomic.d.ts +2 -7
  150. package/data/atomic.js +26 -23
  151. package/data/attributes.d.ts +19 -21
  152. package/data/attributes.js +192 -132
  153. package/data/autoStruct.d.ts +36 -3
  154. package/data/autoStruct.js +84 -81
  155. package/data/compiledIO.d.ts +5 -0
  156. package/data/compiledIO.js +231 -214
  157. package/data/dataIO.d.ts +13 -11
  158. package/data/dataIO.js +643 -589
  159. package/data/dataTypes.d.ts +83 -65
  160. package/data/dataTypes.js +66 -68
  161. package/data/deepEqual.d.ts +2 -7
  162. package/data/deepEqual.js +80 -55
  163. package/data/disarray.d.ts +6 -10
  164. package/data/disarray.js +52 -46
  165. package/data/float16Conversion.d.ts +4 -0
  166. package/data/float16Conversion.js +7 -0
  167. package/data/getLongestContiguousPrefix.d.ts +4 -8
  168. package/data/getLongestContiguousPrefix.js +6 -11
  169. package/data/index.d.ts +30 -31
  170. package/data/index.js +39 -172
  171. package/data/instanceToSchema.d.ts +24 -27
  172. package/data/instanceToSchema.js +1 -0
  173. package/data/isContiguous.d.ts +4 -8
  174. package/data/isContiguous.js +6 -11
  175. package/data/matrix.d.ts +21 -21
  176. package/data/matrix.js +513 -505
  177. package/data/numberOps.d.ts +6 -0
  178. package/data/numberOps.js +26 -20
  179. package/data/numeric.d.ts +21 -12
  180. package/data/numeric.js +287 -192
  181. package/data/offsetUtils.d.ts +9 -13
  182. package/data/offsetUtils.js +204 -144
  183. package/data/offsets.d.ts +8 -0
  184. package/data/offsets.js +33 -33
  185. package/data/partialIO.d.ts +13 -8
  186. package/data/partialIO.js +124 -113
  187. package/data/ptr.d.ts +12 -12
  188. package/data/ptr.js +42 -44
  189. package/data/ref.d.ts +40 -27
  190. package/data/ref.js +125 -95
  191. package/data/sampler.d.ts +99 -101
  192. package/data/sampler.js +17 -21
  193. package/data/schemaCallWrapper.d.ts +19 -0
  194. package/data/schemaCallWrapper.js +31 -26
  195. package/data/schemaMemoryLayout.d.ts +8 -0
  196. package/data/schemaMemoryLayout.js +213 -185
  197. package/data/sizeOf.d.ts +4 -8
  198. package/data/sizeOf.js +6 -11
  199. package/data/snippet.d.ts +96 -20
  200. package/data/snippet.js +75 -86
  201. package/data/struct.d.ts +4 -7
  202. package/data/struct.js +51 -39
  203. package/data/texture.d.ts +253 -250
  204. package/data/texture.js +238 -200
  205. package/data/unstruct.d.ts +2 -7
  206. package/data/unstruct.js +43 -37
  207. package/data/vector.d.ts +33 -21
  208. package/data/vector.js +234 -221
  209. package/data/vectorImpl.d.ts +231 -0
  210. package/data/vectorImpl.js +563 -515
  211. package/data/vectorOps.d.ts +63 -0
  212. package/data/vectorOps.js +642 -630
  213. package/data/vertexFormatData.d.ts +181 -184
  214. package/data/vertexFormatData.js +104 -106
  215. package/data/wgslTypes.d.ts +665 -600
  216. package/data/wgslTypes.js +220 -198
  217. package/errors.d.ts +50 -24
  218. package/errors.js +146 -120
  219. package/execMode.d.ts +16 -0
  220. package/execMode.js +47 -40
  221. package/extension.d.ts +13 -8
  222. package/extension.js +10 -16
  223. package/getGPUValue.d.ts +1 -0
  224. package/getGPUValue.js +2 -7
  225. package/index.d.ts +28 -68
  226. package/index.js +8 -28
  227. package/indexNamedExports.d.ts +69 -42
  228. package/indexNamedExports.js +25 -0
  229. package/internal.d.ts +16 -0
  230. package/internal.js +12 -0
  231. package/mathUtils.d.ts +5 -0
  232. package/mathUtils.js +7 -11
  233. package/memo.d.ts +11 -0
  234. package/memo.js +20 -22
  235. package/minify.d.ts +5 -0
  236. package/minify.js +93 -0
  237. package/nameUtils.d.ts +29 -0
  238. package/nameUtils.js +428 -398
  239. package/package.json +9 -3
  240. package/resolutionCtx.d.ts +162 -22
  241. package/resolutionCtx.js +911 -624
  242. package/serial/registry.d.ts +15 -0
  243. package/serial/registry.js +106 -0
  244. package/serial/restore.d.ts +49 -0
  245. package/serial/restore.js +68 -0
  246. package/serial/schema.d.ts +58 -0
  247. package/serial/schema.js +209 -0
  248. package/serial/types.d.ts +5 -0
  249. package/serial/types.js +1 -0
  250. package/shared/env.d.ts +9 -0
  251. package/shared/env.js +9 -12
  252. package/shared/generators.d.ts +4 -0
  253. package/shared/generators.js +10 -12
  254. package/shared/meta.d.ts +29 -14
  255. package/shared/meta.js +71 -55
  256. package/shared/normalizeMetadata.d.ts +32 -27
  257. package/shared/normalizeMetadata.js +23 -36
  258. package/shared/repr.d.ts +73 -55
  259. package/shared/repr.js +1 -0
  260. package/shared/soul.d.ts +17 -0
  261. package/shared/soul.js +1 -0
  262. package/shared/stringify.d.ts +2 -0
  263. package/shared/stringify.js +29 -20
  264. package/shared/symbols.d.ts +26 -20
  265. package/shared/symbols.js +79 -79
  266. package/shared/tseynit.d.ts +2 -0
  267. package/shared/tseynit.js +160 -75
  268. package/shared/utilityTypes.d.ts +30 -14
  269. package/shared/utilityTypes.js +2 -6
  270. package/shared/vertexFormat.d.ts +41 -43
  271. package/shared/vertexFormat.js +59 -62
  272. package/std/array.d.ts +2 -7
  273. package/std/array.js +18 -23
  274. package/std/atomic.d.ts +14 -18
  275. package/std/atomic.js +96 -95
  276. package/std/bitcast.d.ts +193 -10
  277. package/std/bitcast.js +309 -39
  278. package/std/boolean.d.ts +19 -33
  279. package/std/boolean.js +296 -288
  280. package/std/copy.d.ts +2 -7
  281. package/std/copy.js +27 -24
  282. package/std/derivative.d.ts +11 -15
  283. package/std/derivative.js +56 -79
  284. package/std/discard.d.ts +1 -6
  285. package/std/discard.js +7 -14
  286. package/std/environment.d.ts +19 -14
  287. package/std/environment.js +71 -51
  288. package/std/extensions.d.ts +2 -8
  289. package/std/extensions.js +10 -11
  290. package/std/index.d.ts +20 -24
  291. package/std/index.js +32 -187
  292. package/std/matrix.d.ts +6 -12
  293. package/std/matrix.js +60 -69
  294. package/std/numeric.d.ts +143 -146
  295. package/std/numeric.js +858 -749
  296. package/std/operators.d.ts +19 -27
  297. package/std/operators.js +227 -193
  298. package/std/packing.d.ts +5 -11
  299. package/std/packing.js +67 -75
  300. package/std/range.d.ts +6 -11
  301. package/std/range.js +48 -36
  302. package/std/subgroup.d.ts +33 -37
  303. package/std/subgroup.js +180 -217
  304. package/std/texture.d.ts +70 -38
  305. package/std/texture.js +176 -172
  306. package/taskQueue.d.ts +6 -0
  307. package/taskQueue.js +30 -0
  308. package/tgpu.d.ts +16 -0
  309. package/tgpu.js +17 -44
  310. package/tgpuBindGroupLayout.d.ts +132 -152
  311. package/tgpuBindGroupLayout.js +346 -268
  312. package/tgpuLogger.d.ts +34 -0
  313. package/tgpuLogger.js +63 -0
  314. package/tgpuUnstable.d.ts +16 -22
  315. package/tgpuUnstable.js +13 -35
  316. package/tgsl/accessIndex.d.ts +2 -0
  317. package/tgsl/accessIndex.js +76 -33
  318. package/tgsl/accessProp.d.ts +2 -0
  319. package/tgsl/accessProp.js +142 -100
  320. package/tgsl/accessStructProp.d.ts +5 -0
  321. package/tgsl/accessStructProp.js +18 -0
  322. package/tgsl/consoleLog/deserializers.d.ts +13 -0
  323. package/tgsl/consoleLog/deserializers.js +119 -103
  324. package/tgsl/consoleLog/logGenerator.d.ts +21 -0
  325. package/tgsl/consoleLog/logGenerator.js +85 -80
  326. package/tgsl/consoleLog/serializers.d.ts +21 -0
  327. package/tgsl/consoleLog/serializers.js +119 -100
  328. package/tgsl/consoleLog/types.d.ts +40 -39
  329. package/tgsl/consoleLog/types.js +1 -0
  330. package/tgsl/conversion.d.ts +33 -0
  331. package/tgsl/conversion.js +272 -193
  332. package/tgsl/forOfUtils.d.ts +15 -0
  333. package/tgsl/forOfUtils.js +85 -70
  334. package/tgsl/generationHelpers.d.ts +22 -39
  335. package/tgsl/generationHelpers.js +85 -58
  336. package/tgsl/infixDispatch.d.ts +70 -0
  337. package/tgsl/infixDispatch.js +48 -46
  338. package/tgsl/jsPolyfills.d.ts +16 -19
  339. package/tgsl/jsPolyfills.js +44 -42
  340. package/tgsl/makeDereferenceable.d.ts +48 -0
  341. package/tgsl/makeDereferenceable.js +86 -0
  342. package/tgsl/makeResolvable.d.ts +22 -0
  343. package/tgsl/makeResolvable.js +33 -0
  344. package/tgsl/shaderGenerator.d.ts +77 -17
  345. package/tgsl/shaderGenerator.js +1 -0
  346. package/tgsl/shellless.d.ts +6 -9
  347. package/tgsl/shellless.js +73 -43
  348. package/tgsl/wgslGenerator.d.ts +66 -59
  349. package/tgsl/wgslGenerator.js +1344 -747
  350. package/types.d.ts +287 -221
  351. package/types.js +61 -44
  352. package/unwrapper.d.ts +31 -26
  353. package/unwrapper.js +1 -0
  354. package/wgslExtensions.d.ts +3 -5
  355. package/wgslExtensions.js +12 -16
  356. package/_virtual/rolldown_runtime.js +0 -13
  357. package/core/buffer/bufferShorthand.d.ts +0 -50
  358. package/core/buffer/bufferShorthand.js +0 -55
  359. package/core/pipeline/applyPipelineState.js +0 -37
  360. package/package.js +0 -5
  361. package/tgsl/shaderGenerator_members.d.ts +0 -33
  362. package/tgsl/shaderGenerator_members.js +0 -12
package/nameUtils.js CHANGED
@@ -1,405 +1,435 @@
1
- //#region src/nameUtils.ts
2
- const bannedTokens = new Set([
3
- "alias",
4
- "break",
5
- "case",
6
- "const",
7
- "const_assert",
8
- "continue",
9
- "continuing",
10
- "default",
11
- "diagnostic",
12
- "discard",
13
- "else",
14
- "enable",
15
- "false",
16
- "fn",
17
- "for",
18
- "if",
19
- "let",
20
- "loop",
21
- "override",
22
- "requires",
23
- "return",
24
- "struct",
25
- "switch",
26
- "true",
27
- "var",
28
- "while",
29
- "NULL",
30
- "Self",
31
- "abstract",
32
- "active",
33
- "alignas",
34
- "alignof",
35
- "as",
36
- "asm",
37
- "asm_fragment",
38
- "async",
39
- "attribute",
40
- "auto",
41
- "await",
42
- "become",
43
- "cast",
44
- "catch",
45
- "class",
46
- "co_await",
47
- "co_return",
48
- "co_yield",
49
- "coherent",
50
- "column_major",
51
- "common",
52
- "compile",
53
- "compile_fragment",
54
- "concept",
55
- "const_cast",
56
- "consteval",
57
- "constexpr",
58
- "constinit",
59
- "crate",
60
- "debugger",
61
- "decltype",
62
- "delete",
63
- "demote",
64
- "demote_to_helper",
65
- "do",
66
- "dynamic_cast",
67
- "enum",
68
- "explicit",
69
- "export",
70
- "extends",
71
- "extern",
72
- "external",
73
- "fallthrough",
74
- "filter",
75
- "final",
76
- "finally",
77
- "friend",
78
- "from",
79
- "fxgroup",
80
- "get",
81
- "goto",
82
- "groupshared",
83
- "highp",
84
- "impl",
85
- "implements",
86
- "import",
87
- "inline",
88
- "instanceof",
89
- "interface",
90
- "layout",
91
- "lowp",
92
- "macro",
93
- "macro_rules",
94
- "match",
95
- "mediump",
96
- "meta",
97
- "mod",
98
- "module",
99
- "move",
100
- "mut",
101
- "mutable",
102
- "namespace",
103
- "new",
104
- "nil",
105
- "noexcept",
106
- "noinline",
107
- "nointerpolation",
108
- "non_coherent",
109
- "noncoherent",
110
- "noperspective",
111
- "null",
112
- "nullptr",
113
- "of",
114
- "operator",
115
- "package",
116
- "packoffset",
117
- "partition",
118
- "pass",
119
- "patch",
120
- "pixelfragment",
121
- "precise",
122
- "precision",
123
- "premerge",
124
- "priv",
125
- "protected",
126
- "pub",
127
- "public",
128
- "readonly",
129
- "ref",
130
- "regardless",
131
- "register",
132
- "reinterpret_cast",
133
- "require",
134
- "resource",
135
- "restrict",
136
- "self",
137
- "set",
138
- "shared",
139
- "sizeof",
140
- "smooth",
141
- "snorm",
142
- "static",
143
- "static_assert",
144
- "static_cast",
145
- "std",
146
- "subroutine",
147
- "super",
148
- "target",
149
- "template",
150
- "this",
151
- "thread_local",
152
- "throw",
153
- "trait",
154
- "try",
155
- "type",
156
- "typedef",
157
- "typeid",
158
- "typename",
159
- "typeof",
160
- "union",
161
- "unless",
162
- "unorm",
163
- "unsafe",
164
- "unsized",
165
- "use",
166
- "using",
167
- "varying",
168
- "virtual",
169
- "volatile",
170
- "wgsl",
171
- "where",
172
- "with",
173
- "writeonly",
174
- "yield",
175
- "sampler",
176
- "uniform",
177
- "storage"
1
+ export const bannedTokens = new Set([
2
+ // keywords
3
+ 'alias',
4
+ 'break',
5
+ 'case',
6
+ 'const',
7
+ 'const_assert',
8
+ 'continue',
9
+ 'continuing',
10
+ 'default',
11
+ 'diagnostic',
12
+ 'discard',
13
+ 'else',
14
+ 'enable',
15
+ 'false',
16
+ 'fn',
17
+ 'for',
18
+ 'if',
19
+ 'let',
20
+ 'loop',
21
+ 'override',
22
+ 'requires',
23
+ 'return',
24
+ 'struct',
25
+ 'switch',
26
+ 'true',
27
+ 'var',
28
+ 'while',
29
+ // reserved words
30
+ 'NULL',
31
+ 'Self',
32
+ 'abstract',
33
+ 'active',
34
+ 'alignas',
35
+ 'alignof',
36
+ 'as',
37
+ 'asm',
38
+ 'asm_fragment',
39
+ 'async',
40
+ 'attribute',
41
+ 'auto',
42
+ 'await',
43
+ 'become',
44
+ 'cast',
45
+ 'catch',
46
+ 'class',
47
+ 'co_await',
48
+ 'co_return',
49
+ 'co_yield',
50
+ 'coherent',
51
+ 'column_major',
52
+ 'common',
53
+ 'compile',
54
+ 'compile_fragment',
55
+ 'concept',
56
+ 'const_cast',
57
+ 'consteval',
58
+ 'constexpr',
59
+ 'constinit',
60
+ 'crate',
61
+ 'debugger',
62
+ 'decltype',
63
+ 'delete',
64
+ 'demote',
65
+ 'demote_to_helper',
66
+ 'do',
67
+ 'dynamic_cast',
68
+ 'enum',
69
+ 'explicit',
70
+ 'export',
71
+ 'extends',
72
+ 'extern',
73
+ 'external',
74
+ 'fallthrough',
75
+ 'filter',
76
+ 'final',
77
+ 'finally',
78
+ 'friend',
79
+ 'from',
80
+ 'fxgroup',
81
+ 'get',
82
+ 'goto',
83
+ 'groupshared',
84
+ 'highp',
85
+ 'impl',
86
+ 'implements',
87
+ 'import',
88
+ 'inline',
89
+ 'instanceof',
90
+ 'interface',
91
+ 'layout',
92
+ 'lowp',
93
+ 'macro',
94
+ 'macro_rules',
95
+ 'match',
96
+ 'mediump',
97
+ 'meta',
98
+ 'mod',
99
+ 'module',
100
+ 'move',
101
+ 'mut',
102
+ 'mutable',
103
+ 'namespace',
104
+ 'new',
105
+ 'nil',
106
+ 'noexcept',
107
+ 'noinline',
108
+ 'nointerpolation',
109
+ 'non_coherent',
110
+ 'noncoherent',
111
+ 'noperspective',
112
+ 'null',
113
+ 'nullptr',
114
+ 'of',
115
+ 'operator',
116
+ 'package',
117
+ 'packoffset',
118
+ 'partition',
119
+ 'pass',
120
+ 'patch',
121
+ 'pixelfragment',
122
+ 'precise',
123
+ 'precision',
124
+ 'premerge',
125
+ 'priv',
126
+ 'protected',
127
+ 'pub',
128
+ 'public',
129
+ 'readonly',
130
+ 'ref',
131
+ 'regardless',
132
+ 'register',
133
+ 'reinterpret_cast',
134
+ 'require',
135
+ 'resource',
136
+ 'restrict',
137
+ 'self',
138
+ 'set',
139
+ 'shared',
140
+ 'sizeof',
141
+ 'smooth',
142
+ 'snorm',
143
+ 'static',
144
+ 'static_assert',
145
+ 'static_cast',
146
+ 'std',
147
+ 'subroutine',
148
+ 'super',
149
+ 'target',
150
+ 'template',
151
+ 'this',
152
+ 'thread_local',
153
+ 'throw',
154
+ 'trait',
155
+ 'try',
156
+ 'type',
157
+ 'typedef',
158
+ 'typeid',
159
+ 'typename',
160
+ 'typeof',
161
+ 'union',
162
+ 'unless',
163
+ 'unorm',
164
+ 'unsafe',
165
+ 'unsized',
166
+ 'use',
167
+ 'using',
168
+ 'varying',
169
+ 'virtual',
170
+ 'volatile',
171
+ 'wgsl',
172
+ 'where',
173
+ 'with',
174
+ 'writeonly',
175
+ 'yield',
176
+ // Keywords that should be reserved
177
+ 'sampler',
178
+ 'uniform',
179
+ 'storage',
178
180
  ]);
179
- const builtins = new Set([
180
- "array",
181
- "bool",
182
- "f16",
183
- "f32",
184
- "i32",
185
- "u32",
186
- "mat2x2",
187
- "mat2x3",
188
- "mat2x4",
189
- "mat3x2",
190
- "mat3x3",
191
- "mat3x4",
192
- "mat4x2",
193
- "mat4x3",
194
- "mat4x4",
195
- "vec2",
196
- "vec3",
197
- "vec4",
198
- "bitcast",
199
- "all",
200
- "any",
201
- "select",
202
- "arrayLength",
203
- "abs",
204
- "acos",
205
- "acosh",
206
- "asin",
207
- "asinh",
208
- "atan",
209
- "atanh",
210
- "atan2",
211
- "ceil",
212
- "clamp",
213
- "cos",
214
- "cosh",
215
- "countLeadingZeros",
216
- "countOneBits",
217
- "countTrailingZeros",
218
- "cross",
219
- "degrees",
220
- "determinant",
221
- "distance",
222
- "dot",
223
- "dot4U8Packed",
224
- "dot4I8Packed",
225
- "exp",
226
- "exp2",
227
- "extractBits",
228
- "faceForward",
229
- "firstLeadingBit",
230
- "firstTrailingBit",
231
- "floor",
232
- "fma",
233
- "fract",
234
- "frexp",
235
- "insertBits",
236
- "inverseSqrt",
237
- "ldexp",
238
- "length",
239
- "log",
240
- "log2",
241
- "max",
242
- "min",
243
- "mix",
244
- "modf",
245
- "normalize",
246
- "pow",
247
- "quantizeToF16",
248
- "radians",
249
- "reflect",
250
- "refract",
251
- "reverseBits",
252
- "round",
253
- "saturate",
254
- "sign",
255
- "sin",
256
- "sinh",
257
- "smoothstep",
258
- "sqrt",
259
- "step",
260
- "tan",
261
- "tanh",
262
- "transpose",
263
- "trunc",
264
- "dpdx",
265
- "dpdxCoarse",
266
- "dpdxFine",
267
- "dpdy",
268
- "dpdyCoarse",
269
- "dpdyFine",
270
- "fwidth",
271
- "fwidthCoarse",
272
- "fwidthFine",
273
- "textureDimensions",
274
- "textureGather",
275
- "textureGatherCompare",
276
- "textureLoad",
277
- "textureNumLayers",
278
- "textureNumLevels",
279
- "textureNumSamples",
280
- "textureSample",
281
- "textureSampleBias",
282
- "textureSampleCompare",
283
- "textureSampleCompareLevel",
284
- "textureSampleGrad",
285
- "textureSampleLevel",
286
- "textureSampleBaseClampToEdge",
287
- "textureStore",
288
- "atomicLoad",
289
- "atomicStore",
290
- "atomicAdd",
291
- "atomicSub",
292
- "atomicMax",
293
- "atomicMin",
294
- "atomicAnd",
295
- "atomicOr",
296
- "atomicXor",
297
- "atomicExchange",
298
- "atomicCompareExchangeWeak",
299
- "pack4x8snorm",
300
- "pack4x8unorm",
301
- "pack4xI8",
302
- "pack4xU8",
303
- "pack4xI8Clamp",
304
- "pack4xU8Clamp",
305
- "pack2x16snorm",
306
- "pack2x16unorm",
307
- "pack2x16float",
308
- "unpack4x8snorm",
309
- "unpack4x8unorm",
310
- "unpack4xI8",
311
- "unpack4xU8",
312
- "unpack2x16snorm",
313
- "unpack2x16unorm",
314
- "unpack2x16float",
315
- "storageBarrier",
316
- "textureBarrier",
317
- "workgroupBarrier",
318
- "workgroupUniformLoad",
319
- "subgroupAdd",
320
- "subgroupExclusiveAdd",
321
- "subgroupInclusiveAdd",
322
- "subgroupAll",
323
- "subgroupAnd",
324
- "subgroupAny",
325
- "subgroupBallot",
326
- "subgroupBroadcast",
327
- "subgroupBroadcastFirst",
328
- "subgroupElect",
329
- "subgroupMax",
330
- "subgroupMin",
331
- "subgroupMul",
332
- "subgroupExclusiveMul",
333
- "subgroupInclusiveMul",
334
- "subgroupOr",
335
- "subgroupShuffle",
336
- "subgroupShuffleDown",
337
- "subgroupShuffleUp",
338
- "subgroupShuffleXor",
339
- "subgroupXor",
340
- "quadBroadcast",
341
- "quadSwapDiagonal",
342
- "quadSwapX",
343
- "quadSwapY"
181
+ export const builtins = new Set([
182
+ // constructors
183
+ 'array',
184
+ 'bool',
185
+ 'f16',
186
+ 'f32',
187
+ 'i32',
188
+ 'u32',
189
+ 'mat2x2',
190
+ 'mat2x3',
191
+ 'mat2x4',
192
+ 'mat3x2',
193
+ 'mat3x3',
194
+ 'mat3x4',
195
+ 'mat4x2',
196
+ 'mat4x3',
197
+ 'mat4x4',
198
+ 'vec2',
199
+ 'vec3',
200
+ 'vec4',
201
+ // bitcast
202
+ 'bitcast',
203
+ // logical
204
+ 'all',
205
+ 'any',
206
+ 'select',
207
+ // array
208
+ 'arrayLength',
209
+ // numeric
210
+ 'abs',
211
+ 'acos',
212
+ 'acosh',
213
+ 'asin',
214
+ 'asinh',
215
+ 'atan',
216
+ 'atanh',
217
+ 'atan2',
218
+ 'ceil',
219
+ 'clamp',
220
+ 'cos',
221
+ 'cosh',
222
+ 'countLeadingZeros',
223
+ 'countOneBits',
224
+ 'countTrailingZeros',
225
+ 'cross',
226
+ 'degrees',
227
+ 'determinant',
228
+ 'distance',
229
+ 'dot',
230
+ 'dot4U8Packed',
231
+ 'dot4I8Packed',
232
+ 'exp',
233
+ 'exp2',
234
+ 'extractBits',
235
+ 'faceForward',
236
+ 'firstLeadingBit',
237
+ 'firstTrailingBit',
238
+ 'floor',
239
+ 'fma',
240
+ 'fract',
241
+ 'frexp',
242
+ 'insertBits',
243
+ 'inverseSqrt',
244
+ 'ldexp',
245
+ 'length',
246
+ 'log',
247
+ 'log2',
248
+ 'max',
249
+ 'min',
250
+ 'mix',
251
+ 'modf',
252
+ 'normalize',
253
+ 'pow',
254
+ 'quantizeToF16',
255
+ 'radians',
256
+ 'reflect',
257
+ 'refract',
258
+ 'reverseBits',
259
+ 'round',
260
+ 'saturate',
261
+ 'sign',
262
+ 'sin',
263
+ 'sinh',
264
+ 'smoothstep',
265
+ 'sqrt',
266
+ 'step',
267
+ 'tan',
268
+ 'tanh',
269
+ 'transpose',
270
+ 'trunc',
271
+ // derivative
272
+ 'dpdx',
273
+ 'dpdxCoarse',
274
+ 'dpdxFine',
275
+ 'dpdy',
276
+ 'dpdyCoarse',
277
+ 'dpdyFine',
278
+ 'fwidth',
279
+ 'fwidthCoarse',
280
+ 'fwidthFine',
281
+ // texture
282
+ 'textureDimensions',
283
+ 'textureGather',
284
+ 'textureGatherCompare',
285
+ 'textureLoad',
286
+ 'textureNumLayers',
287
+ 'textureNumLevels',
288
+ 'textureNumSamples',
289
+ 'textureSample',
290
+ 'textureSampleBias',
291
+ 'textureSampleCompare',
292
+ 'textureSampleCompareLevel',
293
+ 'textureSampleGrad',
294
+ 'textureSampleLevel',
295
+ 'textureSampleBaseClampToEdge',
296
+ 'textureStore',
297
+ // atomic
298
+ 'atomicLoad',
299
+ 'atomicStore',
300
+ 'atomicAdd',
301
+ 'atomicSub',
302
+ 'atomicMax',
303
+ 'atomicMin',
304
+ 'atomicAnd',
305
+ 'atomicOr',
306
+ 'atomicXor',
307
+ 'atomicExchange',
308
+ 'atomicCompareExchangeWeak',
309
+ // data packing
310
+ 'pack4x8snorm',
311
+ 'pack4x8unorm',
312
+ 'pack4xI8',
313
+ 'pack4xU8',
314
+ 'pack4xI8Clamp',
315
+ 'pack4xU8Clamp',
316
+ 'pack2x16snorm',
317
+ 'pack2x16unorm',
318
+ 'pack2x16float',
319
+ // data unpacking
320
+ 'unpack4x8snorm',
321
+ 'unpack4x8unorm',
322
+ 'unpack4xI8',
323
+ 'unpack4xU8',
324
+ 'unpack2x16snorm',
325
+ 'unpack2x16unorm',
326
+ 'unpack2x16float',
327
+ // synchronization
328
+ 'storageBarrier',
329
+ 'textureBarrier',
330
+ 'workgroupBarrier',
331
+ 'workgroupUniformLoad',
332
+ // subgroup
333
+ 'subgroupAdd',
334
+ 'subgroupExclusiveAdd',
335
+ 'subgroupInclusiveAdd',
336
+ 'subgroupAll',
337
+ 'subgroupAnd',
338
+ 'subgroupAny',
339
+ 'subgroupBallot',
340
+ 'subgroupBroadcast',
341
+ 'subgroupBroadcastFirst',
342
+ 'subgroupElect',
343
+ 'subgroupMax',
344
+ 'subgroupMin',
345
+ 'subgroupMul',
346
+ 'subgroupExclusiveMul',
347
+ 'subgroupInclusiveMul',
348
+ 'subgroupOr',
349
+ 'subgroupShuffle',
350
+ 'subgroupShuffleDown',
351
+ 'subgroupShuffleUp',
352
+ 'subgroupShuffleXor',
353
+ 'subgroupXor',
354
+ // quad operations
355
+ 'quadBroadcast',
356
+ 'quadSwapDiagonal',
357
+ 'quadSwapX',
358
+ 'quadSwapY',
344
359
  ]);
345
- /* @__NO_SIDE_EFFECTS__ */
346
- function sanitizePrimer(primer) {
347
- if (primer) {
348
- const base = primer.replaceAll(/\s/g, "_").replaceAll(/[^\w\d]/g, "");
349
- if (base === "_" || base === "" || base.startsWith("__")) return "item";
350
- return base;
351
- }
352
- return "item";
360
+ /**
361
+ * Sanitizes the primer so that it is compliant with WGSL guidelines.
362
+ * This primer is not necessarily a valid identifier yet, as it may still collide with other idents or reserved keywords.
363
+ */
364
+ /*#__NO_SIDE_EFFECTS__*/
365
+ export function sanitizePrimer(primer) {
366
+ if (primer) {
367
+ const base = primer
368
+ .replaceAll(/\s/g, '_') // whitespaces
369
+ .replaceAll(/[^\w]/g, ''); // removing illegal characters
370
+ if (!validateIdentifier(base).success) {
371
+ return 'item';
372
+ }
373
+ return base;
374
+ }
375
+ return 'item';
353
376
  }
354
377
  /**
355
- * A function for checking whether an identifier needs renaming.
356
- * Throws if provided with an invalid identifier that cannot be easily renamed.
357
- * @example
358
- * validateIdentifier("ident"); // { success: true }
359
- * validateIdentifier("struct"); // { success: false, error: "Identifiers cannot start with reserved keywords." }
360
- * validateIdentifier("struct_1"); { success: false, error: "Identifiers cannot start with reserved keywords." }
361
- * validateIdentifier("_"); // { success: false }
362
- * validateIdentifier("my variable"); // { success: false, error: "Identifiers cannot contain whitespace." }
363
- */
364
- /* @__NO_SIDE_EFFECTS__ */
365
- function validateIdentifier(ident) {
366
- if (ident === "_") return { success: false };
367
- if (/\s/.test(ident)) return {
368
- success: false,
369
- error: `Identifiers cannot contain whitespace.`
370
- };
371
- if (ident.startsWith("__")) return {
372
- success: false,
373
- error: `Identifiers cannot start with double underscores.`
374
- };
375
- const prefix = ident.split("_")[0];
376
- if (bannedTokens.has(prefix) || builtins.has(prefix)) return {
377
- success: false,
378
- error: `Identifiers cannot start with reserved keywords.`
379
- };
380
- return { success: true };
378
+ * A function for checking whether an identifier is valid.
379
+ * If `ident` passes the checks, it is not necessarily a valid identifier yet, as it may still collide with other idents or reserved keywords.
380
+ * @example
381
+ * validateIdentifier("ident"); // { success: true }
382
+ * validateIdentifier("_"); // { success: false, error: `Identifiers cannot be equal to '' or '_'` }
383
+ * validateIdentifier("my variable"); // { success: false, error: "Identifiers cannot contain whitespace." }
384
+ * validateIdentifier("0"); // { success: false, error: "Identifier is not compliant with the WGSL guideline." }
385
+ */
386
+ /*#__NO_SIDE_EFFECTS__*/
387
+ export function validateIdentifier(ident) {
388
+ if (ident === '_' || ident === '') {
389
+ return {
390
+ success: false,
391
+ error: `Identifiers cannot be equal to '' or '_'`,
392
+ };
393
+ }
394
+ if (/\s/.test(ident)) {
395
+ return {
396
+ success: false,
397
+ error: `Identifiers cannot contain whitespace.`,
398
+ };
399
+ }
400
+ if (ident.startsWith('__')) {
401
+ return {
402
+ success: false,
403
+ error: `Identifiers cannot start with double underscores.`,
404
+ };
405
+ }
406
+ // see: https://www.w3.org/TR/WGSL/#syntax-ident_pattern_token
407
+ if (!/^(([_\p{XID_Start}][\p{XID_Continue}]+)|([\p{XID_Start}]))$/u.test(ident)) {
408
+ return {
409
+ success: false,
410
+ error: `Not compliant with WGSL guidelines.`,
411
+ };
412
+ }
413
+ return {
414
+ success: true,
415
+ };
381
416
  }
382
417
  /**
383
- * Same as `validateIdentifier`, except does not check for builtin clashes.
384
- */
385
- /* @__NO_SIDE_EFFECTS__ */
386
- function validateProp(ident) {
387
- if (ident === "_") return { success: false };
388
- if (/\s/.test(ident)) return {
389
- success: false,
390
- error: `Identifiers cannot contain whitespace.`
391
- };
392
- if (ident.startsWith("__")) return {
393
- success: false,
394
- error: `Identifiers cannot start with double underscores.`
395
- };
396
- const prefix = ident.split("_")[0];
397
- if (bannedTokens.has(prefix)) return {
398
- success: false,
399
- error: `Identifiers cannot start with reserved keywords.`
400
- };
401
- return { success: true };
418
+ * Same as `validateIdentifier`, except also checks for bannedToken clashes.
419
+ */
420
+ /*#__NO_SIDE_EFFECTS__*/
421
+ export function validateProp(ident) {
422
+ const identResult = validateIdentifier(ident);
423
+ if (!identResult.success) {
424
+ return identResult;
425
+ }
426
+ if (bannedTokens.has(ident)) {
427
+ return {
428
+ success: false,
429
+ error: `Identifiers cannot start with reserved keywords.`,
430
+ };
431
+ }
432
+ return {
433
+ success: true,
434
+ };
402
435
  }
403
-
404
- //#endregion
405
- export { bannedTokens, builtins, sanitizePrimer, validateIdentifier, validateProp };