typegpu 0.11.9 → 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.
- package/builtin.d.ts +51 -53
- package/builtin.js +30 -34
- package/common/fullScreenTriangle.d.ts +2 -10
- package/common/fullScreenTriangle.js +20 -28
- package/common/index.d.ts +2 -9
- package/common/index.js +3 -12
- package/common/writeSoA.d.ts +11 -12
- package/common/writeSoA.js +88 -76
- package/core/buffer/buffer.d.ts +79 -62
- package/core/buffer/buffer.js +279 -205
- package/core/buffer/bufferBinding.d.ts +71 -0
- package/core/buffer/bufferBinding.js +154 -0
- package/core/buffer/bufferUsage.d.ts +14 -45
- package/core/buffer/bufferUsage.js +1 -171
- package/core/buffer/laidOutBuffer.d.ts +25 -0
- package/core/buffer/laidOutBuffer.js +55 -0
- package/core/commandEncoder/attachments.d.ts +125 -0
- package/core/commandEncoder/attachments.js +29 -0
- package/core/commandEncoder/commandEncoder.d.ts +53 -0
- package/core/commandEncoder/commandEncoder.js +56 -0
- package/core/commandEncoder/computePass.d.ts +58 -0
- package/core/commandEncoder/computePass.js +63 -0
- package/core/commandEncoder/renderPass.d.ts +121 -0
- package/core/commandEncoder/renderPass.js +196 -0
- package/core/constant/tgpuConstant.d.ts +26 -26
- package/core/constant/tgpuConstant.js +76 -65
- package/core/declare/tgpuDeclare.d.ts +3 -6
- package/core/declare/tgpuDeclare.js +36 -36
- package/core/function/autoIO.d.ts +61 -33
- package/core/function/autoIO.js +68 -73
- package/core/function/comptime.d.ts +11 -13
- package/core/function/comptime.js +60 -52
- package/core/function/createCallableSchema.d.ts +16 -0
- package/core/function/createCallableSchema.js +50 -40
- package/core/function/dualImpl.d.ts +44 -0
- package/core/function/dualImpl.js +71 -50
- package/core/function/entryInputRouter.d.ts +26 -0
- package/core/function/entryInputRouter.js +31 -33
- package/core/function/extractArgs.d.ts +38 -0
- package/core/function/extractArgs.js +202 -200
- package/core/function/fnCore.d.ts +44 -5
- package/core/function/fnCore.js +148 -93
- package/core/function/fnTypes.d.ts +31 -29
- package/core/function/fnTypes.js +1 -0
- package/core/function/ioSchema.d.ts +12 -10
- package/core/function/ioSchema.js +65 -47
- package/core/function/shelllessImpl.d.ts +9 -12
- package/core/function/shelllessImpl.js +17 -22
- package/core/function/templateUtils.d.ts +2 -0
- package/core/function/templateUtils.js +9 -8
- package/core/function/tgpuComputeFn.d.ts +26 -28
- package/core/function/tgpuComputeFn.js +47 -48
- package/core/function/tgpuFn.d.ts +34 -37
- package/core/function/tgpuFn.js +179 -153
- package/core/function/tgpuFragmentFn.d.ts +52 -53
- package/core/function/tgpuFragmentFn.js +63 -56
- package/core/function/tgpuVertexFn.d.ts +36 -39
- package/core/function/tgpuVertexFn.js +56 -53
- package/core/pipeline/computePipeline.d.ts +141 -53
- package/core/pipeline/computePipeline.js +291 -225
- package/core/pipeline/connectAttachmentToShader.d.ts +4 -0
- package/core/pipeline/connectAttachmentToShader.js +25 -22
- package/core/pipeline/connectTargetsToShader.d.ts +3 -0
- package/core/pipeline/connectTargetsToShader.js +29 -27
- package/core/pipeline/drawState.d.ts +52 -0
- package/core/pipeline/drawState.js +225 -0
- package/core/pipeline/limitsOverflow.d.ts +2 -0
- package/core/pipeline/limitsOverflow.js +13 -10
- package/core/pipeline/performanceTracker.d.ts +14 -0
- package/core/pipeline/performanceTracker.js +34 -0
- package/core/pipeline/pipelineUtils.d.ts +18 -0
- package/core/pipeline/pipelineUtils.js +54 -25
- package/core/pipeline/priors.d.ts +1 -0
- package/core/pipeline/priors.js +12 -0
- package/core/pipeline/renderPipeline.d.ts +246 -261
- package/core/pipeline/renderPipeline.js +487 -480
- package/core/pipeline/timeable.d.ts +28 -18
- package/core/pipeline/timeable.js +90 -52
- package/core/pipeline/typeGuards.d.ts +17 -0
- package/core/pipeline/typeGuards.js +52 -22
- package/core/querySet/querySet.d.ts +26 -21
- package/core/querySet/querySet.js +127 -103
- package/core/rawCodeSnippet/tgpuRawCodeSnippet.d.ts +13 -18
- package/core/rawCodeSnippet/tgpuRawCodeSnippet.js +89 -90
- package/core/resolve/externals.d.ts +25 -8
- package/core/resolve/externals.js +78 -54
- package/core/resolve/namespace.d.ts +22 -25
- package/core/resolve/namespace.js +16 -21
- package/core/resolve/resolvableString.d.ts +7 -0
- package/core/resolve/resolvableString.js +13 -0
- package/core/resolve/resolveData.d.ts +10 -0
- package/core/resolve/resolveData.js +162 -121
- package/core/resolve/stitch.d.ts +8 -0
- package/core/resolve/stitch.js +23 -21
- package/core/resolve/tgpuResolve.d.ts +55 -53
- package/core/resolve/tgpuResolve.js +106 -53
- package/core/root/configurableImpl.d.ts +10 -0
- package/core/root/configurableImpl.js +17 -19
- package/core/root/init.d.ts +76 -38
- package/core/root/init.js +346 -455
- package/core/root/rootTypes.d.ts +461 -636
- package/core/root/rootTypes.js +1 -0
- package/core/sampler/sampler.d.ts +50 -31
- package/core/sampler/sampler.js +120 -113
- package/core/simulate/tgpuSimulate.d.ts +9 -12
- package/core/simulate/tgpuSimulate.js +68 -71
- package/core/slot/accessor.d.ts +36 -13
- package/core/slot/accessor.js +138 -91
- package/core/slot/internalSlots.d.ts +2 -0
- package/core/slot/internalSlots.js +1 -6
- package/core/slot/lazy.d.ts +2 -6
- package/core/slot/lazy.js +71 -39
- package/core/slot/slot.d.ts +2 -6
- package/core/slot/slot.js +45 -38
- package/core/slot/slotTypes.d.ts +78 -80
- package/core/slot/slotTypes.js +11 -16
- package/core/texture/externalTexture.d.ts +20 -11
- package/core/texture/externalTexture.js +46 -46
- package/core/texture/texture.d.ts +152 -97
- package/core/texture/texture.js +407 -314
- package/core/texture/textureFormats.d.ts +42 -23
- package/core/texture/textureFormats.js +104 -75
- package/core/texture/textureProps.d.ts +7 -10
- package/core/texture/textureProps.js +1 -0
- package/core/texture/textureUtils.d.ts +8 -0
- package/core/texture/textureUtils.js +185 -179
- package/core/texture/usageExtension.d.ts +21 -18
- package/core/texture/usageExtension.js +13 -17
- package/core/unroll/tgpuUnroll.d.ts +20 -19
- package/core/unroll/tgpuUnroll.js +82 -91
- package/core/valueProxyUtils.d.ts +3 -0
- package/core/valueProxyUtils.js +52 -41
- package/core/variable/tgpuVariable.d.ts +26 -27
- package/core/variable/tgpuVariable.js +93 -96
- package/core/vertexLayout/connectAttributesToShader.d.ts +9 -0
- package/core/vertexLayout/connectAttributesToShader.js +61 -56
- package/core/vertexLayout/vertexAttribute.d.ts +21 -17
- package/core/vertexLayout/vertexAttribute.js +1 -0
- package/core/vertexLayout/vertexLayout.d.ts +24 -18
- package/core/vertexLayout/vertexLayout.js +130 -99
- package/core/whitespaces.d.ts +2 -0
- package/core/whitespaces.js +16 -0
- package/data/alignIO.d.ts +7 -0
- package/data/alignIO.js +13 -13
- package/data/alignmentOf.d.ts +5 -8
- package/data/alignmentOf.js +90 -75
- package/data/array.d.ts +6 -9
- package/data/array.js +48 -40
- package/data/atomic.d.ts +2 -7
- package/data/atomic.js +26 -23
- package/data/attributes.d.ts +19 -21
- package/data/attributes.js +192 -132
- package/data/autoStruct.d.ts +36 -3
- package/data/autoStruct.js +84 -81
- package/data/compiledIO.d.ts +5 -0
- package/data/compiledIO.js +231 -215
- package/data/dataIO.d.ts +13 -11
- package/data/dataIO.js +643 -589
- package/data/dataTypes.d.ts +83 -65
- package/data/dataTypes.js +66 -68
- package/data/deepEqual.d.ts +2 -7
- package/data/deepEqual.js +80 -55
- package/data/disarray.d.ts +6 -10
- package/data/disarray.js +52 -46
- package/data/float16Conversion.d.ts +4 -0
- package/data/float16Conversion.js +7 -0
- package/data/getLongestContiguousPrefix.d.ts +4 -8
- package/data/getLongestContiguousPrefix.js +6 -11
- package/data/index.d.ts +30 -31
- package/data/index.js +39 -172
- package/data/instanceToSchema.d.ts +24 -27
- package/data/instanceToSchema.js +1 -0
- package/data/isContiguous.d.ts +4 -8
- package/data/isContiguous.js +6 -11
- package/data/matrix.d.ts +21 -21
- package/data/matrix.js +513 -505
- package/data/numberOps.d.ts +6 -0
- package/data/numberOps.js +26 -20
- package/data/numeric.d.ts +21 -12
- package/data/numeric.js +287 -197
- package/data/offsetUtils.d.ts +9 -13
- package/data/offsetUtils.js +204 -144
- package/data/offsets.d.ts +8 -0
- package/data/offsets.js +33 -33
- package/data/partialIO.d.ts +13 -8
- package/data/partialIO.js +124 -113
- package/data/ptr.d.ts +12 -12
- package/data/ptr.js +42 -44
- package/data/ref.d.ts +40 -27
- package/data/ref.js +125 -95
- package/data/sampler.d.ts +99 -101
- package/data/sampler.js +17 -21
- package/data/schemaCallWrapper.d.ts +19 -0
- package/data/schemaCallWrapper.js +31 -26
- package/data/schemaMemoryLayout.d.ts +8 -0
- package/data/schemaMemoryLayout.js +213 -185
- package/data/sizeOf.d.ts +4 -8
- package/data/sizeOf.js +6 -11
- package/data/snippet.d.ts +96 -20
- package/data/snippet.js +75 -86
- package/data/struct.d.ts +4 -7
- package/data/struct.js +51 -39
- package/data/texture.d.ts +253 -250
- package/data/texture.js +238 -200
- package/data/unstruct.d.ts +2 -7
- package/data/unstruct.js +43 -37
- package/data/vector.d.ts +33 -21
- package/data/vector.js +234 -221
- package/data/vectorImpl.d.ts +231 -0
- package/data/vectorImpl.js +563 -515
- package/data/vectorOps.d.ts +63 -0
- package/data/vectorOps.js +642 -630
- package/data/vertexFormatData.d.ts +181 -184
- package/data/vertexFormatData.js +104 -106
- package/data/wgslTypes.d.ts +665 -600
- package/data/wgslTypes.js +220 -198
- package/errors.d.ts +50 -24
- package/errors.js +146 -126
- package/execMode.d.ts +16 -0
- package/execMode.js +47 -40
- package/extension.d.ts +13 -8
- package/extension.js +10 -16
- package/getGPUValue.d.ts +1 -0
- package/getGPUValue.js +2 -7
- package/index.d.ts +28 -68
- package/index.js +8 -28
- package/indexNamedExports.d.ts +69 -42
- package/indexNamedExports.js +25 -0
- package/internal.d.ts +16 -0
- package/internal.js +12 -0
- package/mathUtils.d.ts +5 -0
- package/mathUtils.js +7 -11
- package/memo.d.ts +11 -0
- package/memo.js +20 -22
- package/minify.d.ts +5 -0
- package/minify.js +93 -0
- package/nameUtils.d.ts +29 -0
- package/nameUtils.js +427 -394
- package/package.json +5 -1
- package/resolutionCtx.d.ts +162 -22
- package/resolutionCtx.js +911 -629
- package/serial/registry.d.ts +15 -0
- package/serial/registry.js +106 -0
- package/serial/restore.d.ts +49 -0
- package/serial/restore.js +68 -0
- package/serial/schema.d.ts +58 -0
- package/serial/schema.js +209 -0
- package/serial/types.d.ts +5 -0
- package/serial/types.js +1 -0
- package/shared/env.d.ts +9 -0
- package/shared/env.js +9 -12
- package/shared/generators.d.ts +4 -0
- package/shared/generators.js +10 -12
- package/shared/meta.d.ts +29 -14
- package/shared/meta.js +71 -55
- package/shared/normalizeMetadata.d.ts +32 -27
- package/shared/normalizeMetadata.js +23 -36
- package/shared/repr.d.ts +73 -55
- package/shared/repr.js +1 -0
- package/shared/soul.d.ts +17 -0
- package/shared/soul.js +1 -0
- package/shared/stringify.d.ts +2 -0
- package/shared/stringify.js +29 -20
- package/shared/symbols.d.ts +26 -20
- package/shared/symbols.js +79 -79
- package/shared/tseynit.d.ts +2 -0
- package/shared/tseynit.js +160 -75
- package/shared/utilityTypes.d.ts +30 -14
- package/shared/utilityTypes.js +2 -6
- package/shared/vertexFormat.d.ts +41 -43
- package/shared/vertexFormat.js +59 -62
- package/std/array.d.ts +2 -7
- package/std/array.js +18 -23
- package/std/atomic.d.ts +14 -18
- package/std/atomic.js +96 -95
- package/std/bitcast.d.ts +193 -10
- package/std/bitcast.js +309 -39
- package/std/boolean.d.ts +19 -33
- package/std/boolean.js +296 -288
- package/std/copy.d.ts +2 -7
- package/std/copy.js +27 -24
- package/std/derivative.d.ts +11 -15
- package/std/derivative.js +56 -79
- package/std/discard.d.ts +1 -6
- package/std/discard.js +7 -14
- package/std/environment.d.ts +19 -14
- package/std/environment.js +71 -51
- package/std/extensions.d.ts +2 -8
- package/std/extensions.js +10 -11
- package/std/index.d.ts +20 -24
- package/std/index.js +32 -187
- package/std/matrix.d.ts +6 -12
- package/std/matrix.js +60 -69
- package/std/numeric.d.ts +143 -146
- package/std/numeric.js +858 -749
- package/std/operators.d.ts +19 -27
- package/std/operators.js +227 -193
- package/std/packing.d.ts +5 -11
- package/std/packing.js +67 -75
- package/std/range.d.ts +6 -11
- package/std/range.js +48 -36
- package/std/subgroup.d.ts +33 -37
- package/std/subgroup.js +180 -217
- package/std/texture.d.ts +70 -38
- package/std/texture.js +176 -172
- package/taskQueue.d.ts +6 -0
- package/taskQueue.js +30 -0
- package/tgpu.d.ts +16 -0
- package/tgpu.js +17 -44
- package/tgpuBindGroupLayout.d.ts +132 -152
- package/tgpuBindGroupLayout.js +346 -268
- package/tgpuLogger.d.ts +34 -0
- package/tgpuLogger.js +63 -0
- package/tgpuUnstable.d.ts +16 -22
- package/tgpuUnstable.js +13 -35
- package/tgsl/accessIndex.d.ts +2 -0
- package/tgsl/accessIndex.js +76 -33
- package/tgsl/accessProp.d.ts +2 -0
- package/tgsl/accessProp.js +142 -101
- package/tgsl/accessStructProp.d.ts +5 -0
- package/tgsl/accessStructProp.js +13 -15
- package/tgsl/consoleLog/deserializers.d.ts +13 -0
- package/tgsl/consoleLog/deserializers.js +119 -103
- package/tgsl/consoleLog/logGenerator.d.ts +21 -0
- package/tgsl/consoleLog/logGenerator.js +85 -80
- package/tgsl/consoleLog/serializers.d.ts +21 -0
- package/tgsl/consoleLog/serializers.js +119 -100
- package/tgsl/consoleLog/types.d.ts +40 -39
- package/tgsl/consoleLog/types.js +1 -0
- package/tgsl/conversion.d.ts +33 -0
- package/tgsl/conversion.js +271 -216
- package/tgsl/forOfUtils.d.ts +15 -0
- package/tgsl/forOfUtils.js +85 -70
- package/tgsl/generationHelpers.d.ts +22 -39
- package/tgsl/generationHelpers.js +85 -58
- package/tgsl/infixDispatch.d.ts +70 -0
- package/tgsl/infixDispatch.js +48 -46
- package/tgsl/jsPolyfills.d.ts +16 -19
- package/tgsl/jsPolyfills.js +44 -42
- package/tgsl/makeDereferenceable.d.ts +48 -0
- package/tgsl/makeDereferenceable.js +86 -0
- package/tgsl/makeResolvable.d.ts +22 -0
- package/tgsl/makeResolvable.js +33 -0
- package/tgsl/shaderGenerator.d.ts +77 -17
- package/tgsl/shaderGenerator.js +1 -0
- package/tgsl/shellless.d.ts +6 -9
- package/tgsl/shellless.js +73 -43
- package/tgsl/wgslGenerator.d.ts +66 -59
- package/tgsl/wgslGenerator.js +1344 -760
- package/types.d.ts +287 -222
- package/types.js +61 -44
- package/unwrapper.d.ts +31 -26
- package/unwrapper.js +1 -0
- package/wgslExtensions.d.ts +3 -5
- package/wgslExtensions.js +12 -16
- package/_virtual/rolldown_runtime.js +0 -13
- package/core/buffer/bufferShorthand.d.ts +0 -50
- package/core/buffer/bufferShorthand.js +0 -55
- package/core/pipeline/applyPipelineState.js +0 -37
- package/package.js +0 -5
- package/tgsl/shaderGenerator_members.d.ts +0 -33
- package/tgsl/shaderGenerator_members.js +0 -12
package/tgsl/forOfUtils.js
CHANGED
|
@@ -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
|
|
4
|
+
import * as wgsl from "../data/wgslTypes.js";
|
|
8
5
|
import { i32, u32 } from "../data/numeric.js";
|
|
9
|
-
import {
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
33
|
+
export function concretizeSnippet(snippet) {
|
|
34
|
+
return withDataType(concretize(snippet.dataType), snippet);
|
|
26
35
|
}
|
|
27
|
-
function
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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 {};
|
package/tgsl/infixDispatch.js
CHANGED
|
@@ -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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
function isInfixDispatch(o) {
|
|
34
|
-
|
|
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
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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 };
|
package/tgsl/jsPolyfills.d.ts
CHANGED
|
@@ -1,25 +1,22 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
10
|
-
|
|
8
|
+
(...data: any[]): void;
|
|
9
|
+
(message?: any, ...optionalParams: any[]): void;
|
|
11
10
|
}, {
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
(...data: any[]): void;
|
|
12
|
+
(message?: any, ...optionalParams: any[]): void;
|
|
14
13
|
}, {
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
(...data: any[]): void;
|
|
15
|
+
(message?: any, ...optionalParams: any[]): void;
|
|
17
16
|
}, {
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
(...data: any[]): void;
|
|
18
|
+
(message?: any, ...optionalParams: any[]): void;
|
|
20
19
|
}, {
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
(): void;
|
|
21
|
+
(): void;
|
|
23
22
|
}];
|
|
24
|
-
//#endregion
|
|
25
|
-
export { supportedLogOps };
|