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
@@ -1,84 +1,99 @@
1
- import { $gpuCallable } from "../shared/symbols.js";
2
- import { isNaturallyEphemeral, isPtr, isVec, isWgslArray } from "../data/wgslTypes.js";
3
1
  import { UnknownData } from "../data/dataTypes.js";
4
2
  import { isAlias, snip } from "../data/snippet.js";
5
- import { WgslTypeError, invariant } from "../errors.js";
6
3
  import { stitch } from "../core/resolve/stitch.js";
7
- import { createPtrFromOrigin, implicitFrom } from "../data/ptr.js";
4
+ import * as wgsl from "../data/wgslTypes.js";
8
5
  import { i32, u32 } from "../data/numeric.js";
9
- import { ArrayExpression, concretize } from "./generationHelpers.js";
10
- import { accessIndex } from "./accessIndex.js";
6
+ import { invariant, WgslTypeError } from "../errors.js";
11
7
  import { arrayLength } from "../std/array.js";
8
+ import { accessIndex } from "./accessIndex.js";
9
+ import { createPtrFromOrigin, implicitFrom } from "../data/ptr.js";
10
+ import { $gpuCallable } from "../shared/symbols.js";
11
+ import { ArrayExpression, concretize } from "./generationHelpers.js";
12
12
  import { isTgpuRange } from "../std/range.js";
13
-
14
- //#region src/tgsl/forOfUtils.ts
15
- function getLoopVarKind(elementSnippet) {
16
- return elementSnippet.origin === "constant-immutable-def" ? "const" : "let";
13
+ export function getLoopVarKind(elementSnippet) {
14
+ // If it's ephemeral, it's a value that cannot change. If it's a reference, we take
15
+ // an implicit pointer to it
16
+ return elementSnippet.origin === 'constant-immutable-def' ? 'const' : 'let';
17
17
  }
18
- function getElementSnippet(iterableSnippet, index) {
19
- const elementSnippet = accessIndex(iterableSnippet, index);
20
- if (!elementSnippet) throw new WgslTypeError("`for ... of ...` loops only support array or vector iterables");
21
- return elementSnippet;
18
+ export function getElementSnippet(iterableSnippet, index) {
19
+ const elementSnippet = accessIndex(iterableSnippet, index);
20
+ if (!elementSnippet) {
21
+ throw new WgslTypeError('`for ... of ...` loops only support array or vector iterables');
22
+ }
23
+ return elementSnippet;
22
24
  }
23
25
  /**
24
- * Determines the type of the element as accessible inside of the `for .. of` loop body
25
- */
26
- function getElementType(elementSnippet, iterableSnippet) {
27
- let elementType = elementSnippet.dataType;
28
- if (elementType === UnknownData) throw new WgslTypeError(stitch`The elements in iterable ${iterableSnippet} are of unknown type`);
29
- if (isNaturallyEphemeral(elementSnippet.dataType) || elementSnippet.origin === "runtime" || elementSnippet.origin === "constant" || elementSnippet.origin === "constant-immutable-def" || elementSnippet.origin === "runtime-immutable-def") return elementType;
30
- if (!isPtr(elementType)) {
31
- const ptrType = createPtrFromOrigin(elementSnippet.origin, concretize(elementType));
32
- invariant(ptrType !== void 0, `Creating pointer type from origin ${elementSnippet.origin}`);
33
- elementType = ptrType;
34
- }
35
- return implicitFrom(elementType);
26
+ * Determines the type of the element as accessible inside of the `for .. of` loop body
27
+ */
28
+ export function getElementType(elementSnippet, iterableSnippet) {
29
+ let elementType = elementSnippet.dataType;
30
+ if (elementType === UnknownData) {
31
+ throw new WgslTypeError(stitch `The elements in iterable ${iterableSnippet} are of unknown type`);
32
+ }
33
+ if (wgsl.isNaturallyEphemeral(elementSnippet.dataType) ||
34
+ elementSnippet.origin === 'runtime' ||
35
+ elementSnippet.origin === 'constant' ||
36
+ elementSnippet.origin === 'constant-immutable-def' ||
37
+ elementSnippet.origin === 'runtime-immutable-def') {
38
+ return elementType;
39
+ }
40
+ if (!wgsl.isPtr(elementType)) {
41
+ const ptrType = createPtrFromOrigin(elementSnippet.origin, concretize(elementType));
42
+ invariant(ptrType !== undefined, `Creating pointer type from origin ${elementSnippet.origin}`);
43
+ elementType = ptrType;
44
+ }
45
+ return implicitFrom(elementType);
36
46
  }
37
- function getRangeSnippets(ctx, iterableSnippet, unroll = false) {
38
- const { value, dataType } = iterableSnippet;
39
- if (isTgpuRange(value)) {
40
- const { start, end, step } = value;
41
- const dataType$1 = [
42
- start,
43
- end,
44
- step
45
- ].every((v) => v >= 0) ? u32 : i32;
46
- return {
47
- start: snip(start, dataType$1, "constant"),
48
- end: snip(end, dataType$1, "constant"),
49
- step: snip(step, dataType$1, "constant"),
50
- comparison: step < 0 ? ">" : "<"
51
- };
52
- }
53
- if (!unroll && !isAlias(iterableSnippet)) throw new Error(`\`for ... of ...\` loops only support std.range or iterables stored in variables.
47
+ export function getRangeSnippets(ctx, iterableSnippet, unroll = false) {
48
+ const { value, dataType } = iterableSnippet;
49
+ if (isTgpuRange(value)) {
50
+ const { start, end, step } = value;
51
+ const dataType = [start, end, step].every((v) => v >= 0) ? u32 : i32;
52
+ return {
53
+ start: snip(start, dataType, 'constant', false),
54
+ end: snip(end, dataType, 'constant', false),
55
+ step: snip(step, dataType, 'constant', false),
56
+ comparison: step < 0 ? '>' : '<',
57
+ };
58
+ }
59
+ if (!unroll && !isAlias(iterableSnippet)) {
60
+ throw new Error(`\`for ... of ...\` loops only support std.range or iterables stored in variables.
54
61
  -----
55
62
  You can wrap iterable with \`tgpu.unroll(...)\`. If iterable is known at comptime, the loop will be unrolled.
56
63
  -----`);
57
- const defaults = {
58
- start: snip(0, u32, "constant"),
59
- step: snip(1, u32, "constant"),
60
- comparison: "<"
61
- };
62
- if (isWgslArray(dataType)) return {
63
- ...defaults,
64
- end: dataType.elementCount > 0 ? snip(dataType.elementCount, u32, "constant") : arrayLength[$gpuCallable].call(ctx, [iterableSnippet])
65
- };
66
- if (isVec(dataType)) return {
67
- ...defaults,
68
- end: snip(dataType.componentCount, u32, "constant")
69
- };
70
- if (unroll) {
71
- if (Array.isArray(value)) return {
72
- ...defaults,
73
- end: snip(value.length, u32, "constant")
74
- };
75
- if (value instanceof ArrayExpression) return {
76
- ...defaults,
77
- end: snip(value.elements.length, u32, "constant")
78
- };
79
- }
80
- throw new WgslTypeError("`for ... of ...` loops only support array or vector iterables");
64
+ }
65
+ const defaults = {
66
+ start: snip(0, u32, 'constant', false),
67
+ step: snip(1, u32, 'constant', false),
68
+ comparison: '<',
69
+ };
70
+ if (wgsl.isWgslArray(dataType)) {
71
+ return {
72
+ ...defaults,
73
+ end: dataType.elementCount > 0
74
+ ? snip(dataType.elementCount, u32, 'constant', false)
75
+ : arrayLength[$gpuCallable].call(ctx, [iterableSnippet]),
76
+ };
77
+ }
78
+ if (wgsl.isVec(dataType)) {
79
+ return {
80
+ ...defaults,
81
+ end: snip(dataType.componentCount, u32, 'constant', false),
82
+ };
83
+ }
84
+ if (unroll) {
85
+ if (Array.isArray(value)) {
86
+ return {
87
+ ...defaults,
88
+ end: snip(value.length, u32, 'constant', false),
89
+ };
90
+ }
91
+ if (value instanceof ArrayExpression) {
92
+ return {
93
+ ...defaults,
94
+ end: snip(value.elements.length, u32, 'constant', false),
95
+ };
96
+ }
97
+ }
98
+ throw new WgslTypeError('`for ... of ...` loops only support array or vector iterables');
81
99
  }
82
-
83
- //#endregion
84
- export { getElementSnippet, getElementType, getLoopVarKind, getRangeSnippets };
@@ -1,39 +1,22 @@
1
- import { Snippet } from "../data/snippet.js";
2
- import { ShelllessRepository } from "./shellless.js";
3
- import { SupportedLogOp } from "./consoleLog/types.js";
4
- import { FunctionScopeLayer, ResolutionCtx } from "../types.js";
5
- import { BaseData } from "../data/wgslTypes.js";
6
-
7
- //#region src/tgsl/generationHelpers.d.ts
8
-
9
- type GenerationCtx = ResolutionCtx & {
10
- readonly pre: string;
11
- /**
12
- * Used by `typedExpression` to signal downstream
13
- * expression resolution what type is expected of them.
14
- *
15
- * It is used exclusively for inferring the types of structs and arrays.
16
- * It is modified exclusively by `typedExpression` function.
17
- */
18
- expectedType: (BaseData | BaseData[]) | undefined;
19
- readonly topFunctionScope: FunctionScopeLayer | undefined;
20
- readonly topFunctionReturnType: BaseData | undefined;
21
- indent(): string;
22
- dedent(): string;
23
- pushBlockScope(): void;
24
- popBlockScope(): void;
25
- generateLog(op: SupportedLogOp, args: Snippet[]): Snippet;
26
- getById(id: string): Snippet | null;
27
- defineVariable(id: string, snippet: Snippet): void;
28
- setBlockExternals(externals: Record<string, Snippet>): void;
29
- clearBlockExternals(): void;
30
- /**
31
- * Types that are used in `return` statements are
32
- * reported using this function, and used to infer
33
- * the return type of the owning function.
34
- */
35
- reportReturnType(dataType: BaseData): void;
36
- readonly shelllessRepo: ShelllessRepository;
37
- };
38
- //#endregion
39
- export { GenerationCtx };
1
+ import type { ResolvedSnippet, Snippet } from '../data/snippet.ts';
2
+ import { type AnyWgslData, type BaseData, type F32, type I32, type WgslArray } from '../data/wgslTypes.ts';
3
+ import { type ResolutionCtx, type SelfResolvable } from '../types.ts';
4
+ import { $internal, $resolve } from '../shared/symbols.ts';
5
+ export declare function numericLiteralToSnippet(value: number): Snippet;
6
+ export declare function concretize<T extends BaseData>(type: T): T | F32 | I32;
7
+ export declare function concretizeSnippet(snippet: Snippet): Snippet;
8
+ export declare function concretizeSnippets(args: Snippet[]): Snippet[];
9
+ export declare function coerceToSnippet(value: unknown): Snippet;
10
+ /**
11
+ * Intermediate representation for WGSL array expressions.
12
+ * Defers resolution. Stores array elements as snippets so the
13
+ * generator can access them when needed.
14
+ */
15
+ export declare class ArrayExpression implements SelfResolvable {
16
+ readonly [$internal] = true;
17
+ readonly type: WgslArray<AnyWgslData>;
18
+ readonly elements: Snippet[];
19
+ constructor(type: WgslArray<AnyWgslData>, elements: Snippet[]);
20
+ toString(): string;
21
+ [$resolve](ctx: ResolutionCtx): ResolvedSnippet;
22
+ }
@@ -1,65 +1,92 @@
1
- import { $internal, $resolve } from "../shared/symbols.js";
2
- import { WORKAROUND_getSchema, isMatInstance, isNaturallyEphemeral, isVecInstance } from "../data/wgslTypes.js";
3
1
  import { UnknownData } from "../data/dataTypes.js";
4
- import { isAlias, isSnippet, snip } from "../data/snippet.js";
5
- import { WgslTypeError } from "../errors.js";
6
- import { getOwnSnippet } from "../types.js";
7
- import { isRef } from "../data/ref.js";
8
2
  import { abstractFloat, abstractInt, bool, f32, i32 } from "../data/numeric.js";
9
-
10
- //#region src/tgsl/generationHelpers.ts
11
- function numericLiteralToSnippet(value) {
12
- if (value >= 2 ** 63 || value < -(2 ** 63)) return snip(value, abstractFloat, "constant", false);
13
- if (Number.isInteger(value)) {
14
- if (!Number.isSafeInteger(value)) console.warn(`The integer ${value} exceeds the safe integer range and may have lost precision.`);
15
- return snip(value, abstractInt, "constant", false);
16
- }
17
- return snip(value, abstractFloat, "constant", false);
3
+ import { isRef } from "../data/ref.js";
4
+ import { isAlias, isSnippet, snip, withDataType } from "../data/snippet.js";
5
+ import { isMatInstance, isNaturallyEphemeral, isVecInstance, WORKAROUND_getSchema, } from "../data/wgslTypes.js";
6
+ import { getOwnSnippet } from "../types.js";
7
+ import { WgslTypeError } from "../errors.js";
8
+ import { $internal, $resolve } from "../shared/symbols.js";
9
+ import { logger } from "../tgpuLogger.js";
10
+ export function numericLiteralToSnippet(value) {
11
+ if (value >= 2 ** 63 || value < -(2 ** 63)) {
12
+ return snip(value, abstractFloat, /* origin */ 'constant', /* possibleSideEffects */ false);
13
+ }
14
+ // WGSL AbstractInt uses 64-bit precision, but JS numbers are only safe up to 2^53 - 1.
15
+ // Warn when values exceed this range to prevent precision loss.
16
+ if (Number.isInteger(value)) {
17
+ if (!Number.isSafeInteger(value)) {
18
+ logger.warn('precision-loss', `The integer ${value} exceeds the safe integer range and may have lost precision.`);
19
+ }
20
+ return snip(value, abstractInt, /* origin */ 'constant', /* possibleSideEffects */ false);
21
+ }
22
+ return snip(value, abstractFloat, /* origin */ 'constant', /* possibleSideEffects */ false);
18
23
  }
19
- function concretize(type) {
20
- if (type.type === "abstractFloat") return f32;
21
- if (type.type === "abstractInt") return i32;
22
- return type;
24
+ export function concretize(type) {
25
+ if (type.type === 'abstractFloat') {
26
+ return f32;
27
+ }
28
+ if (type.type === 'abstractInt') {
29
+ return i32;
30
+ }
31
+ return type;
23
32
  }
24
- function concretizeSnippet(snippet) {
25
- return snip(snippet.value, concretize(snippet.dataType), snippet.origin);
33
+ export function concretizeSnippet(snippet) {
34
+ return withDataType(concretize(snippet.dataType), snippet);
26
35
  }
27
- function coerceToSnippet(value) {
28
- if (isSnippet(value)) return value;
29
- if (isRef(value)) throw new Error("Cannot use refs (d.ref(...)) from the outer scope.");
30
- const ownSnippet = getOwnSnippet(value);
31
- if (ownSnippet) return ownSnippet;
32
- if (isVecInstance(value) || isMatInstance(value)) return snip(value, WORKAROUND_getSchema(value), "constant", false);
33
- if (typeof value === "string" || typeof value === "function" || typeof value === "object" || typeof value === "symbol" || typeof value === "undefined" || value === null) return snip(value, UnknownData, "constant", false);
34
- if (typeof value === "number") return numericLiteralToSnippet(value);
35
- if (typeof value === "boolean") return snip(value, bool, "constant", false);
36
- return snip(value, UnknownData, "constant", false);
36
+ export function concretizeSnippets(args) {
37
+ return args.map(concretizeSnippet);
38
+ }
39
+ export function coerceToSnippet(value) {
40
+ if (isSnippet(value)) {
41
+ // Already a snippet
42
+ return value;
43
+ }
44
+ if (isRef(value)) {
45
+ throw new Error('Cannot use refs (d.ref(...)) from the outer scope.');
46
+ }
47
+ // Maybe the value can tell us what snippet it is
48
+ const ownSnippet = getOwnSnippet(value);
49
+ if (ownSnippet) {
50
+ return ownSnippet;
51
+ }
52
+ if (isVecInstance(value) || isMatInstance(value)) {
53
+ return snip(value, WORKAROUND_getSchema(value),
54
+ /* origin */ 'constant',
55
+ /* possibleSideEffects */ false);
56
+ }
57
+ if (typeof value === 'number') {
58
+ return numericLiteralToSnippet(value);
59
+ }
60
+ if (typeof value === 'boolean') {
61
+ return snip(value, bool, /* origin */ 'constant', /* possibleSideEffects */ false);
62
+ }
63
+ return snip(value, UnknownData, /* origin */ 'constant', /* possibleSideEffects */ false);
37
64
  }
38
65
  /**
39
- * Intermediate representation for WGSL array expressions.
40
- * Defers resolution. Stores array elements as snippets so the
41
- * generator can access them when needed.
42
- */
43
- var ArrayExpression = class {
44
- [$internal] = true;
45
- type;
46
- elements;
47
- constructor(type, elements) {
48
- this.type = type;
49
- this.elements = elements;
50
- }
51
- toString() {
52
- return "ArrayExpression";
53
- }
54
- [$resolve](ctx) {
55
- for (const elem of this.elements) if (isAlias(elem) && !isNaturallyEphemeral(elem.dataType)) {
56
- const snippetStr = ctx.resolve(elem.value, elem.dataType).value;
57
- const snippetType = ctx.resolve(concretize(elem.dataType)).value;
58
- throw new WgslTypeError(`'${snippetStr}' reference cannot be used in an array constructor.\n-----\nTry '${snippetType}(${snippetStr})' or 'arrayOf(${snippetType}, count)([...])' to copy the value instead.\n-----`);
59
- }
60
- return ctx.gen.typeInstantiation(this.type, this.elements);
61
- }
62
- };
63
-
64
- //#endregion
65
- export { ArrayExpression, coerceToSnippet, concretize, concretizeSnippet, numericLiteralToSnippet };
66
+ * Intermediate representation for WGSL array expressions.
67
+ * Defers resolution. Stores array elements as snippets so the
68
+ * generator can access them when needed.
69
+ */
70
+ export class ArrayExpression {
71
+ [$internal] = true;
72
+ type;
73
+ elements;
74
+ constructor(type, elements) {
75
+ this.type = type;
76
+ this.elements = elements;
77
+ }
78
+ toString() {
79
+ return 'ArrayExpression';
80
+ }
81
+ [$resolve](ctx) {
82
+ for (const elem of this.elements) {
83
+ // We check if there are no references among the elements
84
+ if (isAlias(elem) && !isNaturallyEphemeral(elem.dataType)) {
85
+ const snippetStr = ctx.resolveSnippet(elem).value;
86
+ const snippetType = ctx.resolve(concretize(elem.dataType)).value;
87
+ throw new WgslTypeError(`'${snippetStr}' reference cannot be used in an array constructor.\n-----\nTry '${snippetType}(${snippetStr})' or 'arrayOf(${snippetType}, count)([...])' to copy the value instead.\n-----`);
88
+ }
89
+ }
90
+ return ctx.gen.typeInstantiation(this.type, this.elements);
91
+ }
92
+ }
@@ -0,0 +1,70 @@
1
+ import type { MatBase } from '../data/matrix.ts';
2
+ import { type Snippet } from '../data/snippet.ts';
3
+ import type { VecBase } from '../data/vectorImpl.ts';
4
+ import type { AnyMatInstance, AnyNumericVecInstance } from '../data/wgslTypes.ts';
5
+ export declare const infixOperators: {
6
+ readonly add: import("../types.ts").DualFn<{
7
+ (lhs: number, rhs: number): number;
8
+ <T extends AnyNumericVecInstance>(lhs: number, rhs: T): T;
9
+ <T extends AnyNumericVecInstance>(lhs: T, rhs: number): T;
10
+ <T extends AnyNumericVecInstance | AnyMatInstance>(lhs: T, rhs: T): T;
11
+ <Lhs extends number | AnyNumericVecInstance | AnyMatInstance, Rhs extends Lhs extends number ? number | AnyNumericVecInstance : Lhs extends AnyNumericVecInstance ? number | Lhs : Lhs extends AnyMatInstance ? Lhs : never>(lhs: Lhs, rhs: Rhs): Lhs | Rhs;
12
+ }>;
13
+ readonly sub: import("../types.ts").DualFn<{
14
+ (lhs: number, rhs: number): number;
15
+ <T extends AnyNumericVecInstance>(lhs: number, rhs: T): T;
16
+ <T extends AnyNumericVecInstance>(lhs: T, rhs: number): T;
17
+ <T extends AnyNumericVecInstance | AnyMatInstance>(lhs: T, rhs: T): T;
18
+ <Lhs extends number | AnyNumericVecInstance | AnyMatInstance, Rhs extends Lhs extends number ? number | AnyNumericVecInstance : Lhs extends AnyNumericVecInstance ? number | Lhs : Lhs extends AnyMatInstance ? Lhs : never>(lhs: Lhs, rhs: Rhs): Lhs | Rhs;
19
+ }>;
20
+ readonly mul: import("../types.ts").DualFn<{
21
+ (lhs: number, rhs: number): number;
22
+ <MV extends AnyNumericVecInstance | AnyMatInstance>(lhs: number, rhs: MV): MV;
23
+ <MV extends AnyNumericVecInstance | AnyMatInstance>(lhs: MV, rhs: number): MV;
24
+ <V extends AnyNumericVecInstance>(lhs: V, rhs: V): V;
25
+ <M extends AnyMatInstance, V extends import("../data/wgslTypes.ts").vBaseForMat<M>>(lhs: V, rhs: M): V;
26
+ <M extends AnyMatInstance, V extends import("../data/wgslTypes.ts").vBaseForMat<M>>(lhs: M, rhs: V): V;
27
+ <M extends AnyMatInstance>(lhs: M, rhs: M): M;
28
+ <Lhs extends number | AnyNumericVecInstance | AnyMatInstance, Rhs extends Lhs extends number ? number | AnyNumericVecInstance | AnyMatInstance : Lhs extends AnyNumericVecInstance ? number | Lhs | import("../data/wgslTypes.ts").mBaseForVec<Lhs> : Lhs extends AnyMatInstance ? number | import("../data/wgslTypes.ts").vBaseForMat<Lhs> | Lhs : never>(lhs: Lhs, rhs: Rhs): Lhs | Rhs;
29
+ }>;
30
+ readonly div: import("../types.ts").DualFn<{
31
+ (lhs: number, rhs: number): number;
32
+ <T extends AnyNumericVecInstance>(lhs: T, rhs: T): T;
33
+ <T extends AnyNumericVecInstance>(lhs: number, rhs: T): T;
34
+ <T extends AnyNumericVecInstance>(lhs: T, rhs: number): T;
35
+ }>;
36
+ readonly mod: import("../types.ts").DualFn<{
37
+ (a: number, b: number): number;
38
+ <T extends AnyNumericVecInstance>(a: T, b: T): T;
39
+ <T extends AnyNumericVecInstance>(a: number, b: T): T;
40
+ <T extends AnyNumericVecInstance>(a: T, b: number): T;
41
+ }>;
42
+ readonly bitShiftLeft: import("../types.ts").DualFn<(<T extends import("../data/wgslTypes.ts").AnyIntegerVecInstance>(lhs: T, rhs: number | import("../data/wgslTypes.ts").vecIToVecU<T>) => T)>;
43
+ readonly bitShiftRight: import("../types.ts").DualFn<(<T extends import("../data/wgslTypes.ts").AnyIntegerVecInstance>(lhs: T, rhs: number | import("../data/wgslTypes.ts").vecIToVecU<T>) => T)>;
44
+ };
45
+ type Numeric = number | AnyNumericVecInstance | AnyMatInstance;
46
+ export type InfixOperatorName = keyof typeof infixOperators;
47
+ export type InfixOperator = (typeof infixOperators)[InfixOperatorName];
48
+ /**
49
+ * InfixDispatch is only used in codegen mode.
50
+ * `lhs` may either be Numeric or Snippet.
51
+ * @example
52
+ * const external = d.vec2u(1);
53
+ * const fn = () => {
54
+ * 'use gpu';
55
+ * external.mul(2); // lhs is Numeric
56
+ * d.vec2u(1).mul(2) // lhs is a snippet
57
+ * }
58
+ */
59
+ export declare class InfixDispatch {
60
+ readonly lhs: Snippet | Numeric;
61
+ readonly operator: InfixOperator;
62
+ constructor(lhs: Snippet | Numeric, operator: InfixOperator);
63
+ }
64
+ export declare function isInfixDispatch(o: unknown): o is InfixDispatch;
65
+ /**
66
+ * This function is used on vec/mat prototypes.
67
+ * This is done in runtime in order to avoid a circular dependency.
68
+ */
69
+ export declare function assignInfixOperator<T extends typeof VecBase | typeof MatBase>(base: T, operator: InfixOperatorName, operatorSymbol: symbol): void;
70
+ export {};
@@ -1,53 +1,55 @@
1
+ import {} from "../data/snippet.js";
1
2
  import { inCodegenMode } from "../execMode.js";
2
3
  import { add, bitShiftLeft, bitShiftRight, div, mod, mul, sub } from "../std/operators.js";
3
-
4
- //#region src/tgsl/infixDispatch.ts
5
- const infixOperators = {
6
- add,
7
- sub,
8
- mul,
9
- div,
10
- mod,
11
- bitShiftLeft,
12
- bitShiftRight
4
+ export const infixOperators = {
5
+ add,
6
+ sub,
7
+ mul,
8
+ div,
9
+ mod,
10
+ bitShiftLeft,
11
+ bitShiftRight,
13
12
  };
14
13
  /**
15
- * InfixDispatch is only used in codegen mode.
16
- * `lhs` may either be Numeric or Snippet.
17
- * @example
18
- * const external = d.vec2u(1);
19
- * const fn = () => {
20
- * 'use gpu';
21
- * external.mul(2); // lhs is Numeric
22
- * d.vec2u(1).mul(2) // lhs is a snippet
23
- * }
24
- */
25
- var InfixDispatch = class {
26
- lhs;
27
- operator;
28
- constructor(lhs, operator) {
29
- this.lhs = lhs;
30
- this.operator = operator;
31
- }
32
- };
33
- function isInfixDispatch(o) {
34
- return o instanceof InfixDispatch;
14
+ * InfixDispatch is only used in codegen mode.
15
+ * `lhs` may either be Numeric or Snippet.
16
+ * @example
17
+ * const external = d.vec2u(1);
18
+ * const fn = () => {
19
+ * 'use gpu';
20
+ * external.mul(2); // lhs is Numeric
21
+ * d.vec2u(1).mul(2) // lhs is a snippet
22
+ * }
23
+ */
24
+ export class InfixDispatch {
25
+ lhs;
26
+ operator;
27
+ constructor(lhs, operator) {
28
+ this.lhs = lhs;
29
+ this.operator = operator;
30
+ }
31
+ }
32
+ export function isInfixDispatch(o) {
33
+ return o instanceof InfixDispatch;
35
34
  }
36
35
  /**
37
- * This function is used on vec/mat prototypes.
38
- * This is done in runtime in order to avoid a circular dependency.
39
- */
40
- function assignInfixOperator(base, operator, operatorSymbol) {
41
- const opImpl = infixOperators[operator];
42
- Object.defineProperty(base.prototype, operatorSymbol, { value: opImpl });
43
- function jsInfixDispatchFor(arg) {
44
- return opImpl(this, arg);
45
- }
46
- Object.defineProperty(base.prototype, operator, { get() {
47
- if (inCodegenMode()) return new InfixDispatch(this, opImpl);
48
- return jsInfixDispatchFor;
49
- } });
36
+ * This function is used on vec/mat prototypes.
37
+ * This is done in runtime in order to avoid a circular dependency.
38
+ */
39
+ export function assignInfixOperator(base, operator, operatorSymbol) {
40
+ const opImpl = infixOperators[operator];
41
+ Object.defineProperty(base.prototype, operatorSymbol, { value: opImpl });
42
+ // Returning this from a getter will work as if this was a vector/matrix's method.
43
+ function jsInfixDispatchFor(arg) {
44
+ // operator will perform all necessary type checks
45
+ return opImpl(this, arg);
46
+ }
47
+ Object.defineProperty(base.prototype, operator, {
48
+ get() {
49
+ if (inCodegenMode()) {
50
+ return new InfixDispatch(this, opImpl);
51
+ }
52
+ return jsInfixDispatchFor;
53
+ },
54
+ });
50
55
  }
51
-
52
- //#endregion
53
- export { InfixDispatch, assignInfixOperator, infixOperators, isInfixDispatch };
@@ -1,25 +1,22 @@
1
- import "../core/function/fnTypes.js";
2
- import "../types.js";
3
-
4
- //#region src/tgsl/jsPolyfills.d.ts
5
- declare const supportedLogOps: () => readonly [{
6
- (...data: any[]): void;
7
- (message?: any, ...optionalParams: any[]): void;
1
+ import type { AnyFn } from '../core/function/fnTypes.ts';
2
+ import type { DualFn } from '../types.ts';
3
+ export declare const mathToStd: Map<AnyFn, DualFn<AnyFn>>;
4
+ export declare const supportedLogOps: () => readonly [{
5
+ (...data: any[]): void;
6
+ (message?: any, ...optionalParams: any[]): void;
8
7
  }, {
9
- (...data: any[]): void;
10
- (message?: any, ...optionalParams: any[]): void;
8
+ (...data: any[]): void;
9
+ (message?: any, ...optionalParams: any[]): void;
11
10
  }, {
12
- (...data: any[]): void;
13
- (message?: any, ...optionalParams: any[]): void;
11
+ (...data: any[]): void;
12
+ (message?: any, ...optionalParams: any[]): void;
14
13
  }, {
15
- (...data: any[]): void;
16
- (message?: any, ...optionalParams: any[]): void;
14
+ (...data: any[]): void;
15
+ (message?: any, ...optionalParams: any[]): void;
17
16
  }, {
18
- (...data: any[]): void;
19
- (message?: any, ...optionalParams: any[]): void;
17
+ (...data: any[]): void;
18
+ (message?: any, ...optionalParams: any[]): void;
20
19
  }, {
21
- (): void;
22
- (): void;
20
+ (): void;
21
+ (): void;
23
22
  }];
24
- //#endregion
25
- export { supportedLogOps };