typegpu 0.11.9 → 0.12.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.
Files changed (366) hide show
  1. package/bin.mjs +28 -6
  2. package/builtin.d.ts +51 -53
  3. package/builtin.js +30 -34
  4. package/common/fullScreenTriangle.d.ts +2 -10
  5. package/common/fullScreenTriangle.js +20 -28
  6. package/common/index.d.ts +2 -9
  7. package/common/index.js +3 -12
  8. package/common/writeSoA.d.ts +11 -12
  9. package/common/writeSoA.js +88 -76
  10. package/core/buffer/buffer.d.ts +79 -62
  11. package/core/buffer/buffer.js +283 -205
  12. package/core/buffer/bufferBinding.d.ts +71 -0
  13. package/core/buffer/bufferBinding.js +154 -0
  14. package/core/buffer/bufferUsage.d.ts +14 -45
  15. package/core/buffer/bufferUsage.js +1 -171
  16. package/core/buffer/laidOutBuffer.d.ts +25 -0
  17. package/core/buffer/laidOutBuffer.js +55 -0
  18. package/core/commandEncoder/attachments.d.ts +125 -0
  19. package/core/commandEncoder/attachments.js +29 -0
  20. package/core/commandEncoder/commandEncoder.d.ts +53 -0
  21. package/core/commandEncoder/commandEncoder.js +56 -0
  22. package/core/commandEncoder/computePass.d.ts +58 -0
  23. package/core/commandEncoder/computePass.js +63 -0
  24. package/core/commandEncoder/renderPass.d.ts +121 -0
  25. package/core/commandEncoder/renderPass.js +196 -0
  26. package/core/constant/tgpuConstant.d.ts +26 -26
  27. package/core/constant/tgpuConstant.js +76 -65
  28. package/core/declare/tgpuDeclare.d.ts +3 -6
  29. package/core/declare/tgpuDeclare.js +36 -36
  30. package/core/function/autoIO.d.ts +61 -33
  31. package/core/function/autoIO.js +68 -73
  32. package/core/function/comptime.d.ts +11 -13
  33. package/core/function/comptime.js +60 -52
  34. package/core/function/createCallableSchema.d.ts +16 -0
  35. package/core/function/createCallableSchema.js +50 -40
  36. package/core/function/dualImpl.d.ts +44 -0
  37. package/core/function/dualImpl.js +71 -50
  38. package/core/function/entryInputRouter.d.ts +26 -0
  39. package/core/function/entryInputRouter.js +31 -33
  40. package/core/function/extractArgs.d.ts +38 -0
  41. package/core/function/extractArgs.js +202 -200
  42. package/core/function/fnCore.d.ts +44 -5
  43. package/core/function/fnCore.js +148 -93
  44. package/core/function/fnTypes.d.ts +31 -29
  45. package/core/function/fnTypes.js +1 -0
  46. package/core/function/ioSchema.d.ts +12 -10
  47. package/core/function/ioSchema.js +65 -47
  48. package/core/function/shelllessImpl.d.ts +9 -12
  49. package/core/function/shelllessImpl.js +17 -22
  50. package/core/function/templateUtils.d.ts +2 -0
  51. package/core/function/templateUtils.js +9 -8
  52. package/core/function/tgpuComputeFn.d.ts +26 -28
  53. package/core/function/tgpuComputeFn.js +47 -48
  54. package/core/function/tgpuFn.d.ts +34 -37
  55. package/core/function/tgpuFn.js +179 -153
  56. package/core/function/tgpuFragmentFn.d.ts +52 -53
  57. package/core/function/tgpuFragmentFn.js +63 -56
  58. package/core/function/tgpuVertexFn.d.ts +36 -39
  59. package/core/function/tgpuVertexFn.js +56 -53
  60. package/core/pipeline/computePipeline.d.ts +141 -53
  61. package/core/pipeline/computePipeline.js +291 -225
  62. package/core/pipeline/connectAttachmentToShader.d.ts +4 -0
  63. package/core/pipeline/connectAttachmentToShader.js +25 -22
  64. package/core/pipeline/connectTargetsToShader.d.ts +3 -0
  65. package/core/pipeline/connectTargetsToShader.js +29 -27
  66. package/core/pipeline/drawState.d.ts +52 -0
  67. package/core/pipeline/drawState.js +225 -0
  68. package/core/pipeline/performanceTracker.d.ts +14 -0
  69. package/core/pipeline/performanceTracker.js +34 -0
  70. package/core/pipeline/pipelineUtils.d.ts +18 -0
  71. package/core/pipeline/pipelineUtils.js +54 -25
  72. package/core/pipeline/priors.d.ts +1 -0
  73. package/core/pipeline/priors.js +12 -0
  74. package/core/pipeline/renderPipeline.d.ts +246 -261
  75. package/core/pipeline/renderPipeline.js +487 -480
  76. package/core/pipeline/timeable.d.ts +28 -18
  77. package/core/pipeline/timeable.js +90 -52
  78. package/core/pipeline/typeGuards.d.ts +17 -0
  79. package/core/pipeline/typeGuards.js +52 -22
  80. package/core/pipeline/webgpuLimitations.d.ts +10 -0
  81. package/core/pipeline/webgpuLimitations.js +81 -0
  82. package/core/querySet/querySet.d.ts +26 -21
  83. package/core/querySet/querySet.js +127 -103
  84. package/core/rawCodeSnippet/tgpuRawCodeSnippet.d.ts +13 -18
  85. package/core/rawCodeSnippet/tgpuRawCodeSnippet.js +89 -90
  86. package/core/resolve/externals.d.ts +25 -8
  87. package/core/resolve/externals.js +78 -54
  88. package/core/resolve/namespace.d.ts +22 -25
  89. package/core/resolve/namespace.js +16 -21
  90. package/core/resolve/resolvableString.d.ts +7 -0
  91. package/core/resolve/resolvableString.js +13 -0
  92. package/core/resolve/resolveData.d.ts +10 -0
  93. package/core/resolve/resolveData.js +162 -121
  94. package/core/resolve/stitch.d.ts +8 -0
  95. package/core/resolve/stitch.js +23 -21
  96. package/core/resolve/tgpuResolve.d.ts +55 -53
  97. package/core/resolve/tgpuResolve.js +106 -53
  98. package/core/root/configurableImpl.d.ts +10 -0
  99. package/core/root/configurableImpl.js +17 -19
  100. package/core/root/init.d.ts +76 -38
  101. package/core/root/init.js +346 -455
  102. package/core/root/rootTypes.d.ts +461 -636
  103. package/core/root/rootTypes.js +1 -0
  104. package/core/sampler/sampler.d.ts +50 -31
  105. package/core/sampler/sampler.js +120 -113
  106. package/core/simulate/tgpuSimulate.d.ts +9 -12
  107. package/core/simulate/tgpuSimulate.js +68 -71
  108. package/core/slot/accessor.d.ts +36 -13
  109. package/core/slot/accessor.js +138 -91
  110. package/core/slot/internalSlots.d.ts +2 -0
  111. package/core/slot/internalSlots.js +1 -6
  112. package/core/slot/lazy.d.ts +2 -6
  113. package/core/slot/lazy.js +71 -39
  114. package/core/slot/slot.d.ts +2 -6
  115. package/core/slot/slot.js +45 -38
  116. package/core/slot/slotTypes.d.ts +78 -80
  117. package/core/slot/slotTypes.js +11 -16
  118. package/core/texture/externalTexture.d.ts +20 -11
  119. package/core/texture/externalTexture.js +46 -46
  120. package/core/texture/texture.d.ts +152 -97
  121. package/core/texture/texture.js +407 -314
  122. package/core/texture/textureFormats.d.ts +42 -23
  123. package/core/texture/textureFormats.js +104 -75
  124. package/core/texture/textureProps.d.ts +7 -10
  125. package/core/texture/textureProps.js +1 -0
  126. package/core/texture/textureUtils.d.ts +8 -0
  127. package/core/texture/textureUtils.js +185 -179
  128. package/core/texture/usageExtension.d.ts +21 -18
  129. package/core/texture/usageExtension.js +13 -17
  130. package/core/unroll/tgpuUnroll.d.ts +20 -19
  131. package/core/unroll/tgpuUnroll.js +82 -91
  132. package/core/valueProxyUtils.d.ts +3 -0
  133. package/core/valueProxyUtils.js +52 -41
  134. package/core/variable/tgpuVariable.d.ts +26 -27
  135. package/core/variable/tgpuVariable.js +93 -96
  136. package/core/vertexLayout/connectAttributesToShader.d.ts +9 -0
  137. package/core/vertexLayout/connectAttributesToShader.js +61 -56
  138. package/core/vertexLayout/vertexAttribute.d.ts +21 -17
  139. package/core/vertexLayout/vertexAttribute.js +1 -0
  140. package/core/vertexLayout/vertexLayout.d.ts +24 -18
  141. package/core/vertexLayout/vertexLayout.js +130 -99
  142. package/core/whitespaces.d.ts +2 -0
  143. package/core/whitespaces.js +16 -0
  144. package/data/alignIO.d.ts +7 -0
  145. package/data/alignIO.js +13 -13
  146. package/data/alignmentOf.d.ts +5 -8
  147. package/data/alignmentOf.js +90 -75
  148. package/data/array.d.ts +17 -9
  149. package/data/array.js +57 -40
  150. package/data/atomic.d.ts +2 -7
  151. package/data/atomic.js +26 -23
  152. package/data/attributes.d.ts +19 -21
  153. package/data/attributes.js +192 -132
  154. package/data/autoStruct.d.ts +36 -3
  155. package/data/autoStruct.js +84 -81
  156. package/data/compiledIO.d.ts +5 -0
  157. package/data/compiledIO.js +231 -215
  158. package/data/dataIO.d.ts +13 -11
  159. package/data/dataIO.js +643 -589
  160. package/data/dataTypes.d.ts +83 -65
  161. package/data/dataTypes.js +66 -68
  162. package/data/deepEqual.d.ts +2 -7
  163. package/data/deepEqual.js +80 -55
  164. package/data/disarray.d.ts +6 -10
  165. package/data/disarray.js +52 -46
  166. package/data/float16Conversion.d.ts +4 -0
  167. package/data/float16Conversion.js +7 -0
  168. package/data/generalizeFn.d.ts +25 -0
  169. package/data/generalizeFn.js +89 -0
  170. package/data/getLongestContiguousPrefix.d.ts +4 -8
  171. package/data/getLongestContiguousPrefix.js +6 -11
  172. package/data/index.d.ts +30 -31
  173. package/data/index.js +39 -172
  174. package/data/instanceToSchema.d.ts +24 -27
  175. package/data/instanceToSchema.js +1 -0
  176. package/data/isContiguous.d.ts +4 -8
  177. package/data/isContiguous.js +6 -11
  178. package/data/matrix.d.ts +21 -21
  179. package/data/matrix.js +513 -505
  180. package/data/numberOps.d.ts +5 -0
  181. package/data/numberOps.js +21 -21
  182. package/data/numeric.d.ts +21 -12
  183. package/data/numeric.js +287 -197
  184. package/data/offsetUtils.d.ts +9 -13
  185. package/data/offsetUtils.js +204 -144
  186. package/data/offsets.d.ts +8 -0
  187. package/data/offsets.js +33 -33
  188. package/data/partialIO.d.ts +13 -8
  189. package/data/partialIO.js +124 -113
  190. package/data/ptr.d.ts +12 -12
  191. package/data/ptr.js +42 -44
  192. package/data/ref.d.ts +40 -27
  193. package/data/ref.js +125 -95
  194. package/data/sampler.d.ts +99 -101
  195. package/data/sampler.js +17 -21
  196. package/data/schemaCallWrapper.d.ts +19 -0
  197. package/data/schemaCallWrapper.js +31 -26
  198. package/data/schemaMemoryLayout.d.ts +8 -0
  199. package/data/schemaMemoryLayout.js +213 -185
  200. package/data/sizeOf.d.ts +4 -8
  201. package/data/sizeOf.js +6 -11
  202. package/data/snippet.d.ts +96 -20
  203. package/data/snippet.js +75 -86
  204. package/data/struct.d.ts +4 -7
  205. package/data/struct.js +51 -39
  206. package/data/texture.d.ts +253 -250
  207. package/data/texture.js +238 -200
  208. package/data/unstruct.d.ts +2 -7
  209. package/data/unstruct.js +43 -37
  210. package/data/vector.d.ts +33 -21
  211. package/data/vector.js +234 -221
  212. package/data/vectorImpl.d.ts +231 -0
  213. package/data/vectorImpl.js +563 -515
  214. package/data/vectorOps.d.ts +25 -0
  215. package/data/vectorOps.js +118 -669
  216. package/data/vertexFormatData.d.ts +181 -184
  217. package/data/vertexFormatData.js +104 -106
  218. package/data/wgslTypes.d.ts +665 -600
  219. package/data/wgslTypes.js +220 -198
  220. package/errors.d.ts +50 -24
  221. package/errors.js +146 -126
  222. package/execMode.d.ts +16 -0
  223. package/execMode.js +47 -40
  224. package/extension.d.ts +13 -8
  225. package/extension.js +10 -16
  226. package/getGPUValue.d.ts +1 -0
  227. package/getGPUValue.js +2 -7
  228. package/index.d.ts +28 -68
  229. package/index.js +8 -28
  230. package/indexNamedExports.d.ts +69 -42
  231. package/indexNamedExports.js +25 -0
  232. package/internal.d.ts +16 -0
  233. package/internal.js +12 -0
  234. package/mathUtils.d.ts +5 -0
  235. package/mathUtils.js +7 -11
  236. package/memo.d.ts +11 -0
  237. package/memo.js +20 -22
  238. package/minify.d.ts +5 -0
  239. package/minify.js +93 -0
  240. package/nameUtils.d.ts +29 -0
  241. package/nameUtils.js +427 -394
  242. package/package.json +5 -1
  243. package/resolutionCtx.d.ts +162 -22
  244. package/resolutionCtx.js +911 -629
  245. package/serial/registry.d.ts +15 -0
  246. package/serial/registry.js +106 -0
  247. package/serial/restore.d.ts +49 -0
  248. package/serial/restore.js +68 -0
  249. package/serial/schema.d.ts +58 -0
  250. package/serial/schema.js +209 -0
  251. package/serial/types.d.ts +5 -0
  252. package/serial/types.js +1 -0
  253. package/shared/env.d.ts +9 -0
  254. package/shared/env.js +9 -12
  255. package/shared/generators.d.ts +4 -0
  256. package/shared/generators.js +10 -12
  257. package/shared/meta.d.ts +29 -14
  258. package/shared/meta.js +71 -55
  259. package/shared/normalizeMetadata.d.ts +32 -27
  260. package/shared/normalizeMetadata.js +23 -36
  261. package/shared/repr.d.ts +73 -55
  262. package/shared/repr.js +1 -0
  263. package/shared/soul.d.ts +17 -0
  264. package/shared/soul.js +1 -0
  265. package/shared/stringify.d.ts +2 -0
  266. package/shared/stringify.js +29 -20
  267. package/shared/symbols.d.ts +26 -20
  268. package/shared/symbols.js +79 -79
  269. package/shared/tseynit.d.ts +2 -0
  270. package/shared/tseynit.js +160 -75
  271. package/shared/utilityTypes.d.ts +30 -14
  272. package/shared/utilityTypes.js +2 -6
  273. package/shared/vertexFormat.d.ts +41 -43
  274. package/shared/vertexFormat.js +59 -62
  275. package/std/array.d.ts +2 -7
  276. package/std/array.js +18 -23
  277. package/std/atomic.d.ts +14 -18
  278. package/std/atomic.js +96 -95
  279. package/std/bitcast.d.ts +193 -10
  280. package/std/bitcast.js +309 -39
  281. package/std/boolean.d.ts +19 -33
  282. package/std/boolean.js +296 -292
  283. package/std/copy.d.ts +2 -7
  284. package/std/copy.js +27 -24
  285. package/std/derivative.d.ts +11 -15
  286. package/std/derivative.js +56 -79
  287. package/std/discard.d.ts +1 -6
  288. package/std/discard.js +7 -14
  289. package/std/environment.d.ts +19 -14
  290. package/std/environment.js +71 -51
  291. package/std/extensions.d.ts +2 -8
  292. package/std/extensions.js +10 -11
  293. package/std/index.d.ts +20 -24
  294. package/std/index.js +32 -187
  295. package/std/matrix.d.ts +6 -12
  296. package/std/matrix.js +60 -69
  297. package/std/numeric.d.ts +150 -146
  298. package/std/numeric.js +771 -727
  299. package/std/operators.d.ts +19 -27
  300. package/std/operators.js +195 -194
  301. package/std/packing.d.ts +5 -11
  302. package/std/packing.js +67 -75
  303. package/std/range.d.ts +6 -11
  304. package/std/range.js +48 -36
  305. package/std/subgroup.d.ts +33 -37
  306. package/std/subgroup.js +180 -217
  307. package/std/texture.d.ts +70 -38
  308. package/std/texture.js +176 -172
  309. package/taskQueue.d.ts +6 -0
  310. package/taskQueue.js +30 -0
  311. package/tgpu.d.ts +16 -0
  312. package/tgpu.js +17 -44
  313. package/tgpuBindGroupLayout.d.ts +132 -152
  314. package/tgpuBindGroupLayout.js +346 -268
  315. package/tgpuLogger.d.ts +34 -0
  316. package/tgpuLogger.js +64 -0
  317. package/tgpuUnstable.d.ts +16 -22
  318. package/tgpuUnstable.js +13 -35
  319. package/tgsl/accessIndex.d.ts +2 -0
  320. package/tgsl/accessIndex.js +76 -33
  321. package/tgsl/accessProp.d.ts +2 -0
  322. package/tgsl/accessProp.js +142 -101
  323. package/tgsl/accessStructProp.d.ts +5 -0
  324. package/tgsl/accessStructProp.js +13 -15
  325. package/tgsl/consoleLog/deserializers.d.ts +13 -0
  326. package/tgsl/consoleLog/deserializers.js +119 -103
  327. package/tgsl/consoleLog/logGenerator.d.ts +21 -0
  328. package/tgsl/consoleLog/logGenerator.js +85 -80
  329. package/tgsl/consoleLog/serializers.d.ts +21 -0
  330. package/tgsl/consoleLog/serializers.js +119 -100
  331. package/tgsl/consoleLog/types.d.ts +40 -39
  332. package/tgsl/consoleLog/types.js +1 -0
  333. package/tgsl/conversion.d.ts +33 -0
  334. package/tgsl/conversion.js +271 -216
  335. package/tgsl/forOfUtils.d.ts +15 -0
  336. package/tgsl/forOfUtils.js +85 -70
  337. package/tgsl/generationHelpers.d.ts +22 -39
  338. package/tgsl/generationHelpers.js +85 -58
  339. package/tgsl/infixDispatch.d.ts +70 -0
  340. package/tgsl/infixDispatch.js +48 -46
  341. package/tgsl/jsPolyfills.d.ts +16 -19
  342. package/tgsl/jsPolyfills.js +44 -42
  343. package/tgsl/makeDereferenceable.d.ts +48 -0
  344. package/tgsl/makeDereferenceable.js +86 -0
  345. package/tgsl/makeResolvable.d.ts +22 -0
  346. package/tgsl/makeResolvable.js +33 -0
  347. package/tgsl/shaderGenerator.d.ts +77 -17
  348. package/tgsl/shaderGenerator.js +1 -0
  349. package/tgsl/shellless.d.ts +6 -9
  350. package/tgsl/shellless.js +73 -43
  351. package/tgsl/wgslGenerator.d.ts +66 -59
  352. package/tgsl/wgslGenerator.js +1345 -760
  353. package/types.d.ts +287 -222
  354. package/types.js +61 -44
  355. package/unwrapper.d.ts +31 -26
  356. package/unwrapper.js +1 -0
  357. package/wgslExtensions.d.ts +3 -5
  358. package/wgslExtensions.js +12 -16
  359. package/_virtual/rolldown_runtime.js +0 -13
  360. package/core/buffer/bufferShorthand.d.ts +0 -50
  361. package/core/buffer/bufferShorthand.js +0 -55
  362. package/core/pipeline/applyPipelineState.js +0 -37
  363. package/core/pipeline/limitsOverflow.js +0 -13
  364. package/package.js +0 -5
  365. package/tgsl/shaderGenerator_members.d.ts +0 -33
  366. 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 };