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,70 +1,76 @@
1
- //#region src/shared/symbols.d.ts
2
- declare const $internal: unique symbol;
1
+ export declare const $internal: unique symbol;
2
+ /** A plain record of all definitional state of a resource, surviving transfer between runtimes */
3
+ export declare const $soul: unique symbol;
3
4
  /**
4
5
  * The getter to the value of this resource, accessible on the GPU
5
6
  */
6
- declare const $gpuValueOf: unique symbol;
7
+ export declare const $gpuValueOf: unique symbol;
7
8
  /**
8
9
  * If this symbol is present, this means that getName and setName
9
10
  * will refer to object behind this property instead.
10
11
  */
11
- declare const $getNameForward: unique symbol;
12
+ export declare const $getNameForward: unique symbol;
12
13
  /**
13
14
  * Marks an object with slot-value bindings
14
15
  */
15
- declare const $providing: unique symbol;
16
- declare const $resolve: unique symbol;
16
+ export declare const $providing: unique symbol;
17
+ /**
18
+ * Objects can provide the snippet that represents them.
19
+ */
20
+ export declare const $ownSnippet: unique symbol;
21
+ export declare const $resolve: unique symbol;
17
22
  /**
18
23
  * A way for a schema to provide casting behavior, without the need to be explicitly
19
24
  * callable by the end-user (e.g. vertex formats)
20
25
  */
21
- declare const $cast: unique symbol;
26
+ export declare const $cast: unique symbol;
22
27
  /**
23
28
  * Can be called on the GPU
24
29
  */
25
- declare const $gpuCallable: unique symbol;
30
+ export declare const $gpuCallable: unique symbol;
26
31
  /**
27
32
  * Type token for the inferred (CPU & GPU) representation of a resource
28
33
  */
29
- declare const $repr: unique symbol;
34
+ export declare const $repr: unique symbol;
30
35
  /**
31
36
  * Type token for the inferred (GPU-side) representation of a resource
32
37
  * If present, it shadows the value of `$repr` for GPU-side inference.
33
38
  */
34
- declare const $gpuRepr: unique symbol;
39
+ export declare const $gpuRepr: unique symbol;
35
40
  /**
36
41
  * Type token for the inferred partial representation of a resource.
37
42
  * If present, it shadows the value of `$repr` for use in partial IO.
38
43
  */
39
- declare const $reprPartial: unique symbol;
44
+ export declare const $reprPartial: unique symbol;
40
45
  /**
41
46
  * Type token for the inferred patch representation of a resource.
42
47
  * Used by the `buffer.patch` API with `Record<number, T>` sparse arrays.
43
48
  */
44
- declare const $reprPatch: unique symbol;
49
+ export declare const $reprPatch: unique symbol;
45
50
  /**
46
51
  * Type token for the write-side (input) representation of a resource.
47
52
  */
48
- declare const $inRepr: unique symbol;
53
+ export declare const $inRepr: unique symbol;
49
54
  /**
50
55
  * Type token holding schemas that are identical in memory layout.
51
56
  */
52
- declare const $memIdent: unique symbol;
57
+ export declare const $memIdent: unique symbol;
53
58
  /**
54
59
  * Type token, signaling that a schema can be used in a storage buffer.
55
60
  */
56
- declare const $validStorageSchema: unique symbol;
61
+ export declare const $validStorageSchema: unique symbol;
57
62
  /**
58
63
  * Type token, signaling that a schema can be used in a uniform buffer.
59
64
  */
60
- declare const $validUniformSchema: unique symbol;
65
+ export declare const $validUniformSchema: unique symbol;
61
66
  /**
62
67
  * Type token, signaling that a schema can be used in a vertex buffer.
63
68
  */
64
- declare const $validVertexSchema: unique symbol;
69
+ export declare const $validVertexSchema: unique symbol;
65
70
  /**
66
71
  * Type token, containing a reason for why the schema is invalid (if it is).
67
72
  */
68
- declare const $invalidSchemaReason: unique symbol;
69
- //#endregion
70
- export { $cast, $getNameForward, $gpuCallable, $gpuRepr, $gpuValueOf, $inRepr, $internal, $invalidSchemaReason, $memIdent, $providing, $repr, $reprPartial, $reprPatch, $resolve, $validStorageSchema, $validUniformSchema, $validVertexSchema };
73
+ export declare const $invalidSchemaReason: unique symbol;
74
+ export declare function isMarkedInternal(value: unknown): value is {
75
+ [$internal]: Record<string, unknown> | true;
76
+ };
package/shared/symbols.js CHANGED
@@ -1,80 +1,80 @@
1
- import { version } from "../package.js";
2
-
3
- //#region src/shared/symbols.ts
4
- const $internal = Symbol(`typegpu:${version}:$internal`);
5
- /**
6
- * The getter to the value of this resource, accessible on the GPU
7
- */
8
- const $gpuValueOf = Symbol(`typegpu:${version}:$gpuValueOf`);
9
- /**
10
- * If this symbol is present, this means that getName and setName
11
- * will refer to object behind this property instead.
12
- */
13
- const $getNameForward = Symbol(`typegpu:${version}:$getNameForward`);
14
- /**
15
- * Marks an object with slot-value bindings
16
- */
17
- const $providing = Symbol(`typegpu:${version}:$providing`);
18
- /**
19
- * Objects can provide the snippet that represents them.
20
- */
21
- const $ownSnippet = Symbol(`typegpu:${version}:$ownSnippet`);
22
- const $resolve = Symbol(`typegpu:${version}:$resolve`);
23
- /**
24
- * A way for a schema to provide casting behavior, without the need to be explicitly
25
- * callable by the end-user (e.g. vertex formats)
26
- */
27
- const $cast = Symbol(`typegpu:${version}:$cast`);
28
- /**
29
- * Can be called on the GPU
30
- */
31
- const $gpuCallable = Symbol(`typegpu:${version}:$gpuCallable`);
32
- /**
33
- * Type token for the inferred (CPU & GPU) representation of a resource
34
- */
35
- const $repr = Symbol(`typegpu:${version}:$repr`);
36
- /**
37
- * Type token for the inferred (GPU-side) representation of a resource
38
- * If present, it shadows the value of `$repr` for GPU-side inference.
39
- */
40
- const $gpuRepr = Symbol(`typegpu:${version}:$gpuRepr`);
41
- /**
42
- * Type token for the inferred partial representation of a resource.
43
- * If present, it shadows the value of `$repr` for use in partial IO.
44
- */
45
- const $reprPartial = Symbol(`typegpu:${version}:$reprPartial`);
46
- /**
47
- * Type token for the inferred patch representation of a resource.
48
- * Used by the `buffer.patch` API with `Record<number, T>` sparse arrays.
49
- */
50
- const $reprPatch = Symbol(`typegpu:${version}:$reprPatch`);
51
- /**
52
- * Type token for the write-side (input) representation of a resource.
53
- */
54
- const $inRepr = Symbol(`typegpu:${version}:$inRepr`);
55
- /**
56
- * Type token holding schemas that are identical in memory layout.
57
- */
58
- const $memIdent = Symbol(`typegpu:${version}:$memIdent`);
59
- /**
60
- * Type token, signaling that a schema can be used in a storage buffer.
61
- */
62
- const $validStorageSchema = Symbol(`typegpu:${version}:$invalidStorageSchema`);
63
- /**
64
- * Type token, signaling that a schema can be used in a uniform buffer.
65
- */
66
- const $validUniformSchema = Symbol(`typegpu:${version}:$validUniformSchema`);
67
- /**
68
- * Type token, signaling that a schema can be used in a vertex buffer.
69
- */
70
- const $validVertexSchema = Symbol(`typegpu:${version}:$validVertexSchema`);
71
- /**
72
- * Type token, containing a reason for why the schema is invalid (if it is).
73
- */
74
- const $invalidSchemaReason = Symbol(`typegpu:${version}:$invalidSchemaReason`);
75
- function isMarkedInternal(value) {
76
- return !!value?.[$internal];
1
+ const version = "0.12.1";
2
+ export const $internal = Symbol(`typegpu:${version}:$internal`);
3
+ /** A plain record of all definitional state of a resource, surviving transfer between runtimes */
4
+ export const $soul = Symbol(`typegpu:${version}:$soul`);
5
+ /**
6
+ * The getter to the value of this resource, accessible on the GPU
7
+ */
8
+ export const $gpuValueOf = Symbol(`typegpu:${version}:$gpuValueOf`);
9
+ /**
10
+ * If this symbol is present, this means that getName and setName
11
+ * will refer to object behind this property instead.
12
+ */
13
+ export const $getNameForward = Symbol(`typegpu:${version}:$getNameForward`);
14
+ /**
15
+ * Marks an object with slot-value bindings
16
+ */
17
+ export const $providing = Symbol(`typegpu:${version}:$providing`);
18
+ /**
19
+ * Objects can provide the snippet that represents them.
20
+ */
21
+ export const $ownSnippet = Symbol(`typegpu:${version}:$ownSnippet`);
22
+ export const $resolve = Symbol(`typegpu:${version}:$resolve`);
23
+ /**
24
+ * A way for a schema to provide casting behavior, without the need to be explicitly
25
+ * callable by the end-user (e.g. vertex formats)
26
+ */
27
+ export const $cast = Symbol(`typegpu:${version}:$cast`);
28
+ /**
29
+ * Can be called on the GPU
30
+ */
31
+ export const $gpuCallable = Symbol(`typegpu:${version}:$gpuCallable`);
32
+ //
33
+ // Type tokens
34
+ //
35
+ /**
36
+ * Type token for the inferred (CPU & GPU) representation of a resource
37
+ */
38
+ export const $repr = Symbol(`typegpu:${version}:$repr`);
39
+ /**
40
+ * Type token for the inferred (GPU-side) representation of a resource
41
+ * If present, it shadows the value of `$repr` for GPU-side inference.
42
+ */
43
+ export const $gpuRepr = Symbol(`typegpu:${version}:$gpuRepr`);
44
+ /**
45
+ * Type token for the inferred partial representation of a resource.
46
+ * If present, it shadows the value of `$repr` for use in partial IO.
47
+ */
48
+ export const $reprPartial = Symbol(`typegpu:${version}:$reprPartial`);
49
+ /**
50
+ * Type token for the inferred patch representation of a resource.
51
+ * Used by the `buffer.patch` API with `Record<number, T>` sparse arrays.
52
+ */
53
+ export const $reprPatch = Symbol(`typegpu:${version}:$reprPatch`);
54
+ /**
55
+ * Type token for the write-side (input) representation of a resource.
56
+ */
57
+ export const $inRepr = Symbol(`typegpu:${version}:$inRepr`);
58
+ /**
59
+ * Type token holding schemas that are identical in memory layout.
60
+ */
61
+ export const $memIdent = Symbol(`typegpu:${version}:$memIdent`);
62
+ /**
63
+ * Type token, signaling that a schema can be used in a storage buffer.
64
+ */
65
+ export const $validStorageSchema = Symbol(`typegpu:${version}:$invalidStorageSchema`);
66
+ /**
67
+ * Type token, signaling that a schema can be used in a uniform buffer.
68
+ */
69
+ export const $validUniformSchema = Symbol(`typegpu:${version}:$validUniformSchema`);
70
+ /**
71
+ * Type token, signaling that a schema can be used in a vertex buffer.
72
+ */
73
+ export const $validVertexSchema = Symbol(`typegpu:${version}:$validVertexSchema`);
74
+ /**
75
+ * Type token, containing a reason for why the schema is invalid (if it is).
76
+ */
77
+ export const $invalidSchemaReason = Symbol(`typegpu:${version}:$invalidSchemaReason`);
78
+ export function isMarkedInternal(value) {
79
+ return !!value?.[$internal];
77
80
  }
78
-
79
- //#endregion
80
- export { $cast, $getNameForward, $gpuCallable, $gpuValueOf, $internal, $ownSnippet, $providing, $repr, $resolve, isMarkedInternal };
@@ -0,0 +1,2 @@
1
+ import * as tinyest from 'tinyest';
2
+ export declare function stringifyNode(node: tinyest.AnyNode): string;
package/shared/tseynit.js CHANGED
@@ -1,90 +1,175 @@
1
- import * as tinyest from "tinyest";
2
-
3
- //#region src/shared/tseynit.ts
1
+ import * as tinyest from 'tinyest';
4
2
  const { NodeTypeCatalog: NODE } = tinyest;
5
- function stringifyNode(node) {
6
- if (isExpression(node)) return stringifyExpression(node, "");
7
- return stringifyStatement(node, "");
3
+ export function stringifyNode(node) {
4
+ if (isExpression(node)) {
5
+ return stringifyExpression(node, '');
6
+ }
7
+ return stringifyStatement(node, '');
8
8
  }
9
9
  function stringifyStatement(node, ident) {
10
- if (isExpression(node)) return `${ident}${stringifyExpression(node, ident)};`;
11
- if (node[0] === NODE.block) return `{\n${node[1].map((n) => stringifyStatement(n, ident + " ")).join("\n")}\n${ident}}`;
12
- if (node[0] === NODE.return) return `${ident}return${node[1] === void 0 ? "" : ` ${stringifyExpression(node[1], "")}`};`;
13
- if (node[0] === NODE.if) {
14
- const base = `${ident}if (${stringifyExpression(node[1], ident)}) ${stringifyStatement(node[2], ident)}`;
15
- if (node[3] !== void 0) return `${base} else ${stringifyStatement(node[3], ident)}`;
16
- return base;
17
- }
18
- if (node[0] === NODE.let) {
19
- if (node[2] !== void 0) return `${ident}let ${node[1]} = ${stringifyExpression(node[2], ident)};`;
20
- return `${ident}let ${node[1]};`;
21
- }
22
- if (node[0] === NODE.const) {
23
- if (node[2] !== void 0) return `${ident}const ${node[1]} = ${stringifyExpression(node[2], ident)};`;
24
- return `${ident}const ${node[1]};`;
25
- }
26
- if (node[0] === NODE.for) {
27
- const init = node[1] ? stringifyStatement(node[1], "") : ";";
28
- const cond = node[2] ? stringifyExpression(node[2], ident) : "";
29
- const update = node[3] ? stringifyStatement(node[3], "") : "";
30
- const body = stringifyStatement(node[4], ident);
31
- return `${ident}for (${init} ${cond}; ${update.slice(0, -1)}) ${body}`;
32
- }
33
- if (node[0] === NODE.while) return `${ident}while (${stringifyExpression(node[1], ident)}) ${stringifyStatement(node[2], ident)}`;
34
- if (node[0] === NODE.continue) return `${ident}continue;`;
35
- if (node[0] === NODE.break) return `${ident}break;`;
36
- if (node[0] === NODE.forOf) return `${ident}for (${node[1][0] === NODE.const ? "const" : "let"} ${node[1][1]} of ${stringifyExpression(node[2], ident)}) ${stringifyStatement(node[3], ident)}`;
37
- assertExhaustive(node);
10
+ if (isExpression(node)) {
11
+ return `${ident}${stringifyExpression(node, ident)};`;
12
+ }
13
+ if (node[0] === NODE.block) {
14
+ const statements = node[1].map((n) => stringifyStatement(n, ident + ' '));
15
+ return `{\n${statements.join('\n')}\n${ident}}`;
16
+ }
17
+ if (node[0] === NODE.return) {
18
+ const expr = node[1] === undefined ? '' : ` ${stringifyExpression(node[1], '')}`;
19
+ return `${ident}return${expr};`;
20
+ }
21
+ if (node[0] === NODE.if) {
22
+ const cond = stringifyExpression(node[1], ident);
23
+ const then = stringifyStatement(node[2], ident);
24
+ const base = `${ident}if (${cond}) ${then}`;
25
+ if (node[3] !== undefined) {
26
+ return `${base} else ${stringifyStatement(node[3], ident)}`;
27
+ }
28
+ return base;
29
+ }
30
+ if (node[0] === NODE.let) {
31
+ if (node[2] !== undefined) {
32
+ return `${ident}let ${node[1]} = ${stringifyExpression(node[2], ident)};`;
33
+ }
34
+ return `${ident}let ${node[1]};`;
35
+ }
36
+ if (node[0] === NODE.const) {
37
+ if (node[2] !== undefined) {
38
+ return `${ident}const ${node[1]} = ${stringifyExpression(node[2], ident)};`;
39
+ }
40
+ return `${ident}const ${node[1]};`;
41
+ }
42
+ if (node[0] === NODE.for) {
43
+ const init = node[1] ? stringifyStatement(node[1], '') : ';';
44
+ const cond = node[2] ? stringifyExpression(node[2], ident) : '';
45
+ const update = node[3] ? stringifyStatement(node[3], '') : '';
46
+ const body = stringifyStatement(node[4], ident);
47
+ return `${ident}for (${init} ${cond}; ${update.slice(0, -1) /* trim the ';' */}) ${body}`;
48
+ }
49
+ if (node[0] === NODE.while) {
50
+ const cond = stringifyExpression(node[1], ident);
51
+ const body = stringifyStatement(node[2], ident);
52
+ return `${ident}while (${cond}) ${body}`;
53
+ }
54
+ if (node[0] === NODE.continue) {
55
+ return `${ident}continue;`;
56
+ }
57
+ if (node[0] === NODE.break) {
58
+ return `${ident}break;`;
59
+ }
60
+ if (node[0] === NODE.forOf) {
61
+ const leftKind = node[1][0] === NODE.const ? 'const' : 'let';
62
+ const leftName = node[1][1];
63
+ const right = stringifyExpression(node[2], ident);
64
+ const body = stringifyStatement(node[3], ident);
65
+ return `${ident}for (${leftKind} ${leftName} of ${right}) ${body}`;
66
+ }
67
+ assertExhaustive(node);
38
68
  }
39
69
  function stringifyExpression(node, ident) {
40
- if (typeof node === "string") return node;
41
- if (typeof node === "boolean") return `${node}`;
42
- if (node[0] === NODE.numericLiteral) return node[1];
43
- if (node[0] === NODE.stringLiteral) return JSON.stringify(node[1]);
44
- if (node[0] === NODE.arrayExpr) return `[${node[1].map((n) => stringifyExpression(n, ident)).join(", ")}]`;
45
- if (node[0] === NODE.binaryExpr) return `${wrapIfComplex(node[1], ident)} ${node[2]} ${wrapIfComplex(node[3], ident)}`;
46
- if (node[0] === NODE.assignmentExpr) return `${stringifyExpression(node[1], ident)} ${node[2]} ${stringifyExpression(node[3], ident)}`;
47
- if (node[0] === NODE.logicalExpr) return `${wrapIfComplex(node[1], ident)} ${node[2]} ${wrapIfComplex(node[3], ident)}`;
48
- if (node[0] === NODE.unaryExpr) {
49
- const sep = node[1].length > 1 ? " " : "";
50
- return `${node[1]}${sep}${wrapIfComplex(node[2], ident)}`;
51
- }
52
- if (node[0] === NODE.call) return `${wrapIfComplex(node[1], ident)}(${node[2].map((n) => stringifyExpression(n, ident)).join(", ")})`;
53
- if (node[0] === NODE.memberAccess) {
54
- if (Array.isArray(node[1]) && node[1][0] === NODE.numericLiteral) return `(${stringifyExpression(node[1], ident)}).${node[2]}`;
55
- return `${wrapIfComplex(node[1], ident)}.${node[2]}`;
56
- }
57
- if (node[0] === NODE.indexAccess) return `${wrapIfComplex(node[1], ident)}[${stringifyExpression(node[2], ident)}]`;
58
- if (node[0] === NODE.preUpdate) return `${node[1]}${wrapIfComplex(node[2], ident)}`;
59
- if (node[0] === NODE.postUpdate) return `${wrapIfComplex(node[2], ident)}${node[1]}`;
60
- if (node[0] === NODE.objectExpr) return `{ ${Object.entries(node[1]).map(([key, val]) => `${key}: ${stringifyExpression(val, ident)}`).join(", ")} }`;
61
- if (node[0] === NODE.conditionalExpr) return `${wrapIfComplex(node[1], ident)} ? ${wrapIfComplex(node[2], ident)} : ${wrapIfComplex(node[3], ident)}`;
62
- assertExhaustive(node);
70
+ if (typeof node === 'string') {
71
+ return node;
72
+ }
73
+ if (typeof node === 'boolean') {
74
+ return `${node}`;
75
+ }
76
+ if (node[0] === NODE.numericLiteral) {
77
+ return node[1];
78
+ }
79
+ if (node[0] === NODE.stringLiteral) {
80
+ return JSON.stringify(node[1]);
81
+ }
82
+ if (node[0] === NODE.arrayExpr) {
83
+ const elements = node[1].map((n) => stringifyExpression(n, ident));
84
+ return `[${elements.join(', ')}]`;
85
+ }
86
+ if (node[0] === NODE.binaryExpr) {
87
+ return `${wrapIfComplex(node[1], ident)} ${node[2]} ${wrapIfComplex(node[3], ident)}`;
88
+ }
89
+ if (node[0] === NODE.assignmentExpr) {
90
+ return `${stringifyExpression(node[1], ident)} ${node[2]} ${stringifyExpression(node[3], ident)}`;
91
+ }
92
+ if (node[0] === NODE.logicalExpr) {
93
+ return `${wrapIfComplex(node[1], ident)} ${node[2]} ${wrapIfComplex(node[3], ident)}`;
94
+ }
95
+ if (node[0] === NODE.unaryExpr) {
96
+ // Unary word operators like void, instanceof and delete require a space
97
+ const sep = node[1].length > 1 ? ' ' : '';
98
+ return `${node[1]}${sep}${wrapIfComplex(node[2], ident)}`;
99
+ }
100
+ if (node[0] === NODE.call) {
101
+ const callee = wrapIfComplex(node[1], ident);
102
+ const args = node[2].map((n) => stringifyExpression(n, ident)).join(', ');
103
+ return `${callee}(${args})`;
104
+ }
105
+ if (node[0] === NODE.memberAccess) {
106
+ if (Array.isArray(node[1]) && node[1][0] === NODE.numericLiteral) {
107
+ return `(${stringifyExpression(node[1], ident)}).${node[2]}`;
108
+ }
109
+ return `${wrapIfComplex(node[1], ident)}.${node[2]}`;
110
+ }
111
+ if (node[0] === NODE.indexAccess) {
112
+ return `${wrapIfComplex(node[1], ident)}[${stringifyExpression(node[2], ident)}]`;
113
+ }
114
+ if (node[0] === NODE.preUpdate) {
115
+ return `${node[1]}${wrapIfComplex(node[2], ident)}`;
116
+ }
117
+ if (node[0] === NODE.postUpdate) {
118
+ return `${wrapIfComplex(node[2], ident)}${node[1]}`;
119
+ }
120
+ if (node[0] === NODE.objectExpr) {
121
+ const entries = Object.entries(node[1]).map(([key, val]) => `${key}: ${stringifyExpression(val, ident)}`);
122
+ return `{ ${entries.join(', ')} }`;
123
+ }
124
+ if (node[0] === NODE.conditionalExpr) {
125
+ return `${wrapIfComplex(node[1], ident)} ? ${wrapIfComplex(node[2], ident)} : ${wrapIfComplex(node[3], ident)}`;
126
+ }
127
+ assertExhaustive(node);
63
128
  }
64
129
  function assertExhaustive(value) {
65
- throw new Error(`'${JSON.stringify(value)}' was not handled by the stringify function.`);
130
+ throw new Error(`'${JSON.stringify(value)}' was not handled by the stringify function.`);
66
131
  }
67
132
  function isExpression(node) {
68
- if (typeof node === "string" || typeof node === "boolean" || node[0] === NODE.numericLiteral || node[0] === NODE.stringLiteral || node[0] === NODE.arrayExpr || node[0] === NODE.binaryExpr || node[0] === NODE.assignmentExpr || node[0] === NODE.logicalExpr || node[0] === NODE.unaryExpr || node[0] === NODE.call || node[0] === NODE.memberAccess || node[0] === NODE.indexAccess || node[0] === NODE.preUpdate || node[0] === NODE.postUpdate || node[0] === NODE.objectExpr || node[0] === NODE.conditionalExpr) return true;
69
- return false;
133
+ if (typeof node === 'string' ||
134
+ typeof node === 'boolean' ||
135
+ node[0] === NODE.numericLiteral ||
136
+ node[0] === NODE.stringLiteral ||
137
+ node[0] === NODE.arrayExpr ||
138
+ node[0] === NODE.binaryExpr ||
139
+ node[0] === NODE.assignmentExpr ||
140
+ node[0] === NODE.logicalExpr ||
141
+ node[0] === NODE.unaryExpr ||
142
+ node[0] === NODE.call ||
143
+ node[0] === NODE.memberAccess ||
144
+ node[0] === NODE.indexAccess ||
145
+ node[0] === NODE.preUpdate ||
146
+ node[0] === NODE.postUpdate ||
147
+ node[0] === NODE.objectExpr ||
148
+ node[0] === NODE.conditionalExpr) {
149
+ node;
150
+ return true;
151
+ }
152
+ node;
153
+ return false;
70
154
  }
71
155
  const SIMPLE_NODES = [
72
- NODE.memberAccess,
73
- NODE.indexAccess,
74
- NODE.call,
75
- NODE.arrayExpr,
76
- NODE.stringLiteral,
77
- NODE.numericLiteral
156
+ NODE.memberAccess, // highest precedence
157
+ NODE.indexAccess, // highest precedence
158
+ NODE.call, // highest precedence
159
+ NODE.arrayExpr, // [] make things not ambiguous
160
+ NODE.stringLiteral,
161
+ NODE.numericLiteral,
78
162
  ];
79
163
  /**
80
- * Stringifies expression, and wraps it in parentheses if they cannot be trivially omitted
81
- */
164
+ * Stringifies expression, and wraps it in parentheses if they cannot be trivially omitted
165
+ */
82
166
  function wrapIfComplex(node, ident) {
83
- const s = stringifyExpression(node, ident);
84
- if (typeof node === "string" || typeof node === "boolean") return s;
85
- if (SIMPLE_NODES.includes(node[0])) return s;
86
- return `(${s})`;
167
+ const s = stringifyExpression(node, ident);
168
+ if (typeof node === 'string' || typeof node === 'boolean') {
169
+ return s;
170
+ }
171
+ if (SIMPLE_NODES.includes(node[0])) {
172
+ return s;
173
+ }
174
+ return `(${s})`;
87
175
  }
88
-
89
- //#endregion
90
- export { stringifyNode };
@@ -1,33 +1,49 @@
1
- //#region src/shared/utilityTypes.d.ts
2
- type Default<T, TDefault> = unknown extends T ? TDefault : T extends undefined ? TDefault : T;
3
- type SwapNever<T, Replacement> = [T] extends [never] ? Replacement : T;
4
- type UnionToIntersection<U> = (U extends any ? (x: U) => void : never) extends ((x: infer I) => void) ? I : never;
5
- type Prettify<T> = { [K in keyof T]: T[K] } & {};
1
+ export type Default<T, TDefault> = unknown extends T ? TDefault : T extends undefined ? TDefault : T;
2
+ export type SwapNever<T, Replacement> = [T] extends [never] ? Replacement : T;
3
+ export type UnionToIntersection<U> = (U extends any ? (x: U) => void : never) extends (x: infer I) => void ? I : never;
4
+ export type Prettify<T> = {
5
+ [K in keyof T]: T[K];
6
+ } & {};
6
7
  /**
7
8
  * Utility type that merges a partial type with defaults, where defaults are used
8
9
  * for properties not present in the partial type.
9
10
  */
10
- type WithDefaults<TPartial, TDefaults> = Omit<TDefaults, keyof TPartial> & TPartial;
11
+ export type WithDefaults<TPartial, TDefaults> = Omit<TDefaults, keyof TPartial> & TPartial;
11
12
  /**
12
13
  * Removes properties from record type that extend `Prop`
13
14
  */
14
- type OmitProps<T extends Record<string, unknown>, Prop> = Pick<T, { [Key in keyof T]: T[Key] extends Prop ? never : Key }[keyof T]>;
15
- type NullableToOptional<T> = { [K in keyof T as T[K] extends null ? K : never]?: T[K] } & { [K in keyof T as T[K] extends null ? never : K]: T[K] };
15
+ export type OmitProps<T extends Record<string, unknown>, Prop> = Pick<T, {
16
+ [Key in keyof T]: T[Key] extends Prop ? never : Key;
17
+ }[keyof T]>;
18
+ /**
19
+ * Removes properties from record type that equal `Prop`
20
+ */
21
+ export type OmitPropsExact<T extends Record<string, unknown>, Prop> = Pick<T, {
22
+ [Key in keyof T]: [T[Key], Prop] extends [Prop, T[Key]] ? never : Key;
23
+ }[keyof T]>;
24
+ export type NullableToOptional<T> = {
25
+ [K in keyof T as T[K] extends null ? K : never]?: T[K];
26
+ } & {
27
+ [K in keyof T as T[K] extends null ? never : K]: T[K];
28
+ };
16
29
  /**
17
30
  * The opposite of Readonly<T>
18
31
  */
19
- type Mutable<T> = { -readonly [P in keyof T]: T[P] };
32
+ export type Mutable<T> = {
33
+ -readonly [P in keyof T]: T[P];
34
+ };
20
35
  /**
21
36
  * Source: https://code.lol/post/programming/higher-kinded-types
22
37
  */
23
- type Assume<T, U> = T extends U ? T : U;
38
+ export type Assume<T, U> = T extends U ? T : U;
24
39
  /**
25
40
  * Any typed array
26
41
  */
27
- type TypedArray = Uint8Array | Uint16Array | Uint32Array | Int32Array | Float32Array | Float64Array;
42
+ export type TypedArray = Uint8Array | Uint16Array | Uint32Array | Int32Array | Float32Array | Float64Array;
43
+ export declare function assertExhaustive(x: never, location: string): never;
28
44
  /**
29
45
  * Source: https://futurestud.io/tutorials/typescript-how-to-remove-index-signature-from-a-type
30
46
  */
31
- type RemoveIndexSignature<T> = { [K in keyof T as string extends K ? never : number extends K ? never : symbol extends K ? never : K]: T[K] };
32
- //#endregion
33
- export { Assume, Default, Mutable, NullableToOptional, OmitProps, Prettify, RemoveIndexSignature, SwapNever, TypedArray, UnionToIntersection, WithDefaults };
47
+ export type RemoveIndexSignature<T> = {
48
+ [K in keyof T as string extends K ? never : number extends K ? never : symbol extends K ? never : K]: T[K];
49
+ };
@@ -1,7 +1,3 @@
1
- //#region src/shared/utilityTypes.ts
2
- function assertExhaustive(x, location) {
3
- throw new Error(`Failed to handle ${x} at ${location}`);
1
+ export function assertExhaustive(x, location) {
2
+ throw new Error(`Failed to handle ${x} at ${location}`);
4
3
  }
5
-
6
- //#endregion
7
- export { assertExhaustive };