@luma.gl/core 9.0.0-alpha.9 → 9.0.0-beta.2
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/LICENSE +3 -1
- package/README.md +4 -4
- package/dist/adapter/attribute-utils/get-attribute-from-layouts.d.ts +52 -0
- package/dist/adapter/attribute-utils/get-attribute-from-layouts.d.ts.map +1 -0
- package/dist/adapter/attribute-utils/get-attribute-from-layouts.js +130 -0
- package/dist/adapter/attribute-utils/get-attribute-from-layouts.js.map +1 -0
- package/dist/adapter/canvas-context.d.ts +109 -0
- package/dist/adapter/canvas-context.d.ts.map +1 -0
- package/dist/adapter/canvas-context.js +254 -0
- package/dist/adapter/canvas-context.js.map +1 -0
- package/dist/adapter/device.d.ts +219 -0
- package/dist/adapter/device.d.ts.map +1 -0
- package/dist/adapter/device.js +99 -0
- package/dist/adapter/device.js.map +1 -0
- package/dist/adapter/resources/buffer.d.ts +56 -0
- package/dist/adapter/resources/buffer.d.ts.map +1 -0
- package/dist/adapter/resources/buffer.js +62 -0
- package/dist/adapter/resources/buffer.js.map +1 -0
- package/dist/adapter/resources/command-buffer.d.ts +12 -0
- package/dist/adapter/resources/command-buffer.d.ts.map +1 -0
- package/dist/adapter/resources/command-buffer.js +15 -0
- package/dist/adapter/resources/command-buffer.js.map +1 -0
- package/dist/adapter/resources/command-encoder.d.ts +113 -0
- package/dist/adapter/resources/command-encoder.d.ts.map +1 -0
- package/dist/adapter/resources/command-encoder.js +19 -0
- package/dist/adapter/resources/command-encoder.js.map +1 -0
- package/dist/adapter/resources/compute-pass.d.ts +31 -0
- package/dist/adapter/resources/compute-pass.d.ts.map +1 -0
- package/dist/adapter/resources/compute-pass.js +15 -0
- package/dist/adapter/resources/compute-pass.js.map +1 -0
- package/dist/adapter/resources/compute-pipeline.d.ts +24 -0
- package/dist/adapter/resources/compute-pipeline.d.ts.map +1 -0
- package/dist/adapter/resources/compute-pipeline.js +20 -0
- package/dist/adapter/resources/compute-pipeline.js.map +1 -0
- package/dist/adapter/resources/external-texture.d.ts +12 -0
- package/dist/adapter/resources/external-texture.d.ts.map +1 -0
- package/dist/adapter/resources/external-texture.js +17 -0
- package/dist/adapter/resources/external-texture.js.map +1 -0
- package/dist/adapter/resources/framebuffer.d.ts +50 -0
- package/dist/adapter/resources/framebuffer.d.ts.map +1 -0
- package/dist/adapter/resources/framebuffer.js +102 -0
- package/dist/adapter/resources/framebuffer.js.map +1 -0
- package/dist/adapter/resources/render-pass.d.ts +51 -0
- package/dist/adapter/resources/render-pass.d.ts.map +1 -0
- package/dist/adapter/resources/render-pass.js +23 -0
- package/dist/adapter/resources/render-pass.js.map +1 -0
- package/dist/adapter/resources/render-pipeline.d.ts +89 -0
- package/dist/adapter/resources/render-pipeline.d.ts.map +1 -0
- package/dist/adapter/resources/render-pipeline.js +36 -0
- package/dist/adapter/resources/render-pipeline.js.map +1 -0
- package/dist/adapter/resources/resource.d.ts +73 -0
- package/dist/adapter/resources/resource.d.ts.map +1 -0
- package/dist/adapter/resources/resource.js +101 -0
- package/dist/adapter/resources/resource.js.map +1 -0
- package/dist/adapter/resources/sampler.d.ts +42 -0
- package/dist/adapter/resources/sampler.d.ts.map +1 -0
- package/dist/adapter/resources/sampler.js +26 -0
- package/dist/adapter/resources/sampler.js.map +1 -0
- package/dist/adapter/resources/shader.d.ts +45 -0
- package/dist/adapter/resources/shader.d.ts.map +1 -0
- package/dist/adapter/resources/shader.js +90 -0
- package/dist/adapter/resources/shader.js.map +1 -0
- package/dist/adapter/resources/texture.d.ts +90 -0
- package/dist/adapter/resources/texture.d.ts.map +1 -0
- package/dist/adapter/resources/texture.js +45 -0
- package/dist/adapter/resources/texture.js.map +1 -0
- package/dist/adapter/resources/transform-feedback.d.ts +30 -0
- package/dist/adapter/resources/transform-feedback.d.ts.map +1 -0
- package/dist/adapter/resources/transform-feedback.js +17 -0
- package/dist/adapter/resources/transform-feedback.js.map +1 -0
- package/dist/adapter/resources/vertex-array.d.ts +40 -0
- package/dist/adapter/resources/vertex-array.d.ts.map +1 -0
- package/dist/adapter/resources/vertex-array.js +24 -0
- package/dist/adapter/resources/vertex-array.js.map +1 -0
- package/dist/adapter/type-utils/decode-attribute-type.d.ts +20 -0
- package/dist/adapter/type-utils/decode-attribute-type.d.ts.map +1 -0
- package/dist/adapter/type-utils/decode-attribute-type.js +60 -0
- package/dist/adapter/type-utils/decode-attribute-type.js.map +1 -0
- package/dist/adapter/type-utils/decode-data-type.d.ts +16 -0
- package/dist/adapter/type-utils/decode-data-type.d.ts.map +1 -0
- package/dist/adapter/type-utils/decode-data-type.js +43 -0
- package/dist/adapter/type-utils/decode-data-type.js.map +1 -0
- package/dist/adapter/type-utils/decode-shader-types.d.ts +9 -0
- package/dist/adapter/type-utils/decode-shader-types.d.ts.map +1 -0
- package/dist/adapter/type-utils/decode-shader-types.js +103 -0
- package/dist/adapter/type-utils/decode-shader-types.js.map +1 -0
- package/dist/adapter/type-utils/decode-texture-format.d.ts +19 -0
- package/dist/adapter/type-utils/decode-texture-format.d.ts.map +1 -0
- package/dist/adapter/type-utils/decode-texture-format.js +101 -0
- package/dist/adapter/type-utils/decode-texture-format.js.map +1 -0
- package/dist/adapter/type-utils/decode-vertex-format.d.ts +22 -0
- package/dist/adapter/type-utils/decode-vertex-format.d.ts.map +1 -0
- package/dist/adapter/type-utils/decode-vertex-format.js +25 -0
- package/dist/adapter/type-utils/decode-vertex-format.js.map +1 -0
- package/dist/adapter/type-utils/vertex-format-from-attribute.d.ts +10 -0
- package/dist/adapter/type-utils/vertex-format-from-attribute.d.ts.map +1 -0
- package/dist/adapter/type-utils/vertex-format-from-attribute.js +76 -0
- package/dist/adapter/type-utils/vertex-format-from-attribute.js.map +1 -0
- package/dist/adapter/type-utils/wgsl-utils.d.ts +4 -0
- package/dist/adapter/type-utils/wgsl-utils.d.ts.map +1 -0
- package/dist/adapter/type-utils/wgsl-utils.js +15 -0
- package/dist/adapter/type-utils/wgsl-utils.js.map +1 -0
- package/dist/adapter/types/accessor.d.ts +23 -0
- package/dist/adapter/types/accessor.d.ts.map +1 -0
- package/dist/adapter/types/accessor.js +2 -0
- package/dist/adapter/types/accessor.js.map +1 -0
- package/dist/adapter/types/buffer-layout.d.ts +59 -0
- package/dist/adapter/types/buffer-layout.d.ts.map +1 -0
- package/dist/adapter/types/buffer-layout.js +2 -0
- package/dist/adapter/types/buffer-layout.js.map +1 -0
- package/dist/adapter/types/parameters.d.ts +97 -0
- package/dist/adapter/types/parameters.d.ts.map +1 -0
- package/dist/adapter/types/parameters.js +28 -0
- package/dist/adapter/types/parameters.js.map +1 -0
- package/dist/adapter/types/shader-layout.d.ts +145 -0
- package/dist/adapter/types/shader-layout.d.ts.map +1 -0
- package/dist/adapter/types/shader-layout.js +2 -0
- package/dist/adapter/types/shader-layout.js.map +1 -0
- package/dist/adapter/types/shader-types.d.ts +21 -0
- package/dist/adapter/types/shader-types.d.ts.map +1 -0
- package/dist/adapter/types/shader-types.js +2 -0
- package/dist/adapter/types/shader-types.js.map +1 -0
- package/dist/adapter/types/texture-formats.d.ts +12 -0
- package/dist/adapter/types/texture-formats.d.ts.map +1 -0
- package/dist/adapter/types/texture-formats.js +2 -0
- package/dist/adapter/types/texture-formats.js.map +1 -0
- package/dist/adapter/types/types.d.ts +90 -0
- package/dist/adapter/types/types.d.ts.map +1 -0
- package/dist/adapter/types/types.js +2 -0
- package/dist/adapter/types/types.js.map +1 -0
- package/dist/adapter/types/vertex-formats.d.ts +14 -0
- package/dist/adapter/types/vertex-formats.d.ts.map +1 -0
- package/dist/adapter/types/vertex-formats.js +2 -0
- package/dist/adapter/types/vertex-formats.js.map +1 -0
- package/dist/dist.dev.js +2976 -0
- package/dist/index.cjs +2445 -0
- package/dist/index.d.ts +81 -128
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +45 -18
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +5 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +24 -0
- package/dist/init.js.map +1 -0
- package/dist/lib/compiler-log/compiler-message.d.ts +8 -0
- package/dist/lib/compiler-log/compiler-message.d.ts.map +1 -0
- package/dist/lib/compiler-log/compiler-message.js +2 -0
- package/dist/lib/compiler-log/compiler-message.js.map +1 -0
- package/dist/lib/compiler-log/format-compiler-log.d.ts +8 -0
- package/dist/lib/compiler-log/format-compiler-log.d.ts.map +1 -0
- package/dist/lib/compiler-log/format-compiler-log.js +64 -0
- package/dist/lib/compiler-log/format-compiler-log.js.map +1 -0
- package/dist/lib/compiler-log/get-shader-info.d.ts +9 -0
- package/dist/lib/compiler-log/get-shader-info.d.ts.map +1 -0
- package/dist/lib/compiler-log/get-shader-info.js +25 -0
- package/dist/lib/compiler-log/get-shader-info.js.map +1 -0
- package/dist/lib/luma.d.ts +22 -0
- package/dist/lib/luma.d.ts.map +1 -0
- package/dist/lib/luma.js +63 -0
- package/dist/lib/luma.js.map +1 -0
- package/dist/lib/uniforms/uniform-block.d.ts +29 -0
- package/dist/lib/uniforms/uniform-block.d.ts.map +1 -0
- package/dist/lib/uniforms/uniform-block.js +48 -0
- package/dist/lib/uniforms/uniform-block.js.map +1 -0
- package/dist/lib/uniforms/uniform-buffer-layout.d.ts +27 -0
- package/dist/lib/uniforms/uniform-buffer-layout.d.ts.map +1 -0
- package/dist/lib/uniforms/uniform-buffer-layout.js +76 -0
- package/dist/lib/uniforms/uniform-buffer-layout.js.map +1 -0
- package/dist/lib/uniforms/uniform-store.d.ts +62 -0
- package/dist/lib/uniforms/uniform-store.d.ts.map +1 -0
- package/dist/lib/uniforms/uniform-store.js +89 -0
- package/dist/lib/uniforms/uniform-store.js.map +1 -0
- package/dist/lib/uniforms/uniform.d.ts +10 -0
- package/dist/lib/uniforms/uniform.d.ts.map +1 -0
- package/dist/lib/uniforms/uniform.js +20 -0
- package/dist/lib/uniforms/uniform.js.map +1 -0
- package/dist/types.d.ts +19 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/array-equal.d.ts +5 -0
- package/dist/utils/array-equal.d.ts.map +1 -0
- package/dist/utils/array-equal.js +28 -0
- package/dist/utils/array-equal.js.map +1 -0
- package/dist/utils/array-utils-flat.d.ts +10 -0
- package/dist/utils/array-utils-flat.d.ts.map +1 -0
- package/dist/utils/array-utils-flat.js +36 -0
- package/dist/utils/array-utils-flat.js.map +1 -0
- package/dist/utils/assert.d.ts +2 -0
- package/dist/utils/assert.d.ts.map +1 -0
- package/dist/utils/assert.js +6 -0
- package/dist/utils/assert.js.map +1 -0
- package/dist/utils/cast.d.ts +3 -0
- package/dist/utils/cast.d.ts.map +1 -0
- package/dist/utils/cast.js +4 -0
- package/dist/utils/cast.js.map +1 -0
- package/dist/utils/check-props.d.ts +7 -0
- package/dist/utils/check-props.d.ts.map +1 -0
- package/dist/utils/check-props.js +32 -0
- package/dist/utils/check-props.js.map +1 -0
- package/dist/utils/deep-equal.d.ts +9 -0
- package/dist/utils/deep-equal.d.ts.map +1 -0
- package/dist/utils/deep-equal.js +40 -0
- package/dist/utils/deep-equal.js.map +1 -0
- package/dist/utils/format-value.d.ts +7 -0
- package/dist/utils/format-value.d.ts.map +1 -0
- package/dist/utils/format-value.js +42 -0
- package/dist/utils/format-value.js.map +1 -0
- package/dist/utils/is-array.d.ts +16 -0
- package/dist/utils/is-array.d.ts.map +1 -0
- package/dist/utils/is-array.js +10 -0
- package/dist/utils/is-array.js.map +1 -0
- package/dist/utils/load-file.d.ts +35 -0
- package/dist/utils/load-file.d.ts.map +1 -0
- package/dist/utils/load-file.js +48 -0
- package/dist/utils/load-file.js.map +1 -0
- package/dist/utils/log.d.ts +4 -0
- package/dist/utils/log.d.ts.map +1 -0
- package/dist/utils/log.js +5 -0
- package/dist/utils/log.js.map +1 -0
- package/dist/utils/random.d.ts +5 -0
- package/dist/utils/random.d.ts.map +1 -0
- package/dist/utils/random.js +14 -0
- package/dist/utils/random.js.map +1 -0
- package/dist/utils/request-animation-frame.d.ts +3 -0
- package/dist/utils/request-animation-frame.d.ts.map +1 -0
- package/dist/utils/request-animation-frame.js +7 -0
- package/dist/utils/request-animation-frame.js.map +1 -0
- package/dist/utils/stats-manager.d.ts +12 -0
- package/dist/utils/stats-manager.d.ts.map +1 -0
- package/dist/utils/stats-manager.js +19 -0
- package/dist/utils/stats-manager.js.map +1 -0
- package/dist/utils/stub-methods.d.ts +2 -0
- package/dist/utils/stub-methods.d.ts.map +1 -0
- package/dist/utils/stub-methods.js +16 -0
- package/dist/utils/stub-methods.js.map +1 -0
- package/dist/utils/utils.d.ts +15 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +19 -0
- package/dist/utils/utils.js.map +1 -0
- package/dist.min.js +33 -0
- package/package.json +17 -12
- package/src/adapter/attribute-utils/get-attribute-from-layouts.ts +259 -0
- package/src/adapter/canvas-context.ts +433 -0
- package/src/adapter/device.ts +435 -0
- package/src/adapter/resources/buffer.ts +106 -0
- package/src/adapter/resources/command-buffer.ts +38 -0
- package/src/adapter/resources/command-encoder.ts +172 -0
- package/src/adapter/resources/compute-pass.ts +52 -0
- package/src/adapter/resources/compute-pipeline.ts +39 -0
- package/src/adapter/resources/external-texture.ts +20 -0
- package/src/adapter/resources/framebuffer.ts +230 -0
- package/src/adapter/resources/render-pass.ts +117 -0
- package/src/adapter/resources/render-pipeline.ts +133 -0
- package/src/adapter/resources/resource.ts +176 -0
- package/src/adapter/resources/sampler.ts +69 -0
- package/src/adapter/resources/shader.ts +143 -0
- package/src/adapter/resources/texture.ts +140 -0
- package/src/adapter/resources/transform-feedback.ts +45 -0
- package/src/adapter/resources/vertex-array.ts +65 -0
- package/src/adapter/type-utils/decode-attribute-type.ts +82 -0
- package/src/adapter/type-utils/decode-data-type.ts +62 -0
- package/src/adapter/type-utils/decode-shader-types.ts +48 -0
- package/src/adapter/type-utils/decode-texture-format.ts +190 -0
- package/src/adapter/type-utils/decode-vertex-format.ts +49 -0
- package/src/adapter/type-utils/vertex-format-from-attribute.ts +103 -0
- package/src/adapter/type-utils/wgsl-utils.ts +18 -0
- package/src/adapter/types/accessor.ts +34 -0
- package/src/adapter/types/buffer-layout.ts +62 -0
- package/src/adapter/types/parameters.ts +250 -0
- package/src/adapter/types/shader-layout.ts +193 -0
- package/src/adapter/types/shader-types.ts +77 -0
- package/src/adapter/types/texture-formats.ts +168 -0
- package/src/adapter/types/types.ts +109 -0
- package/src/adapter/types/vertex-formats.ts +91 -0
- package/src/index.ts +160 -92
- package/src/init.ts +47 -0
- package/src/lib/compiler-log/compiler-message.ts +10 -0
- package/src/lib/compiler-log/format-compiler-log.ts +113 -0
- package/src/lib/compiler-log/get-shader-info.ts +41 -0
- package/src/lib/luma.ts +84 -0
- package/src/lib/uniforms/uniform-block.ts +80 -0
- package/src/lib/uniforms/uniform-buffer-layout.ts +109 -0
- package/src/lib/uniforms/uniform-store.ts +173 -0
- package/src/lib/uniforms/uniform.ts +25 -0
- package/src/types.ts +33 -0
- package/src/utils/array-equal.ts +33 -0
- package/src/utils/array-utils-flat.ts +43 -0
- package/src/utils/assert.ts +7 -0
- package/src/utils/cast.ts +4 -0
- package/src/utils/check-props.ts +74 -0
- package/src/utils/deep-equal.ts +47 -0
- package/src/utils/format-value.ts +40 -0
- package/src/utils/is-array.ts +24 -0
- package/src/utils/load-file.ts +89 -0
- package/src/utils/log.ts +4 -0
- package/src/utils/random.ts +17 -0
- package/src/utils/request-animation-frame.ts +15 -0
- package/src/utils/stats-manager.ts +23 -0
- package/src/utils/stub-methods.ts +20 -0
- package/src/utils/utils.ts +36 -0
- package/dist/bundle.d.ts +0 -2
- package/dist/bundle.d.ts.map +0 -1
- package/dist/bundle.js +0 -5
- package/dist/bundle.js.map +0 -1
- package/src/bundle.ts +0 -4
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
|
+
|
|
4
|
+
import {isNumberArray} from './is-array';
|
|
5
|
+
|
|
6
|
+
/** Test if two arrays are deep equal, with a length limit that defaults to 16 */
|
|
7
|
+
export function arrayEqual(a: unknown, b: unknown, limit: number = 16) {
|
|
8
|
+
if (a !== b) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
const arrayA = isNumberArray(a);
|
|
12
|
+
if (!arrayA) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
const arrayB = isNumberArray(b);
|
|
16
|
+
if (arrayB && arrayA.length === arrayB.length) {
|
|
17
|
+
for (let i = 0; i < arrayA.length; ++i) {
|
|
18
|
+
if (arrayB[i] !== arrayA[i]) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/** Copy a value */
|
|
27
|
+
export function arrayCopy<T>(a: T): T {
|
|
28
|
+
const numberArray = isNumberArray(a);
|
|
29
|
+
if (numberArray) {
|
|
30
|
+
return numberArray.slice() as T;
|
|
31
|
+
}
|
|
32
|
+
return a;
|
|
33
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
|
+
|
|
4
|
+
import type {TypedArray, NumberArray} from '../types';
|
|
5
|
+
|
|
6
|
+
let arrayBuffer: ArrayBuffer;
|
|
7
|
+
|
|
8
|
+
export function getScratchArrayBuffer(byteLength: number): ArrayBuffer {
|
|
9
|
+
if (!arrayBuffer || arrayBuffer.byteLength < byteLength) {
|
|
10
|
+
arrayBuffer = new ArrayBuffer(byteLength);
|
|
11
|
+
}
|
|
12
|
+
return arrayBuffer;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function getScratchArray(Type: any, length: number): TypedArray {
|
|
16
|
+
const scratchArrayBuffer = getScratchArrayBuffer(Type.BYTES_PER_ELEMENT * length);
|
|
17
|
+
return new Type(scratchArrayBuffer, 0, length); // arrayBuffer, byteOffset, length (in elements)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Uses copyWithin to significantly speed up typed array value filling
|
|
21
|
+
export function fillArray(options: {target: NumberArray, source: NumberArray, start?: number, count?: number}): NumberArray {
|
|
22
|
+
const {target, source, start = 0, count = 1} = options;
|
|
23
|
+
const length = source.length;
|
|
24
|
+
const total = count * length;
|
|
25
|
+
let copied = 0;
|
|
26
|
+
for (let i = start; copied < length; copied++) {
|
|
27
|
+
target[i++] = source[copied] ;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
while (copied < total) {
|
|
31
|
+
// If we have copied less than half, copy everything we got
|
|
32
|
+
// else copy remaining in one operation
|
|
33
|
+
if (copied < total - copied) {
|
|
34
|
+
target.copyWithin(start + copied, start, start + copied);
|
|
35
|
+
copied *= 2;
|
|
36
|
+
} else {
|
|
37
|
+
target.copyWithin(start + copied, start, start + total - copied);
|
|
38
|
+
copied = total;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return options.target;
|
|
43
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Recommendation is to ignore message but current test suite checks agains the
|
|
2
|
+
// message so keep it for now.
|
|
3
|
+
export function assert(condition: unknown, message?: string): void | never {
|
|
4
|
+
if (!condition) {
|
|
5
|
+
throw new Error(message || 'luma.gl: assertion failed.');
|
|
6
|
+
}
|
|
7
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import {log} from './log';
|
|
2
|
+
|
|
3
|
+
/* Use as
|
|
4
|
+
import {checkProps} from '../util/check-props;'
|
|
5
|
+
|
|
6
|
+
const PROP_CHECKS = {
|
|
7
|
+
// Removed props no longer supported, print error and link to upgrade guide
|
|
8
|
+
removedProps: {
|
|
9
|
+
},
|
|
10
|
+
// Deprecated props
|
|
11
|
+
deprecatedProps: {
|
|
12
|
+
offset: 'accessor',
|
|
13
|
+
stride: 'accessor',
|
|
14
|
+
type: 'accessor',
|
|
15
|
+
size: 'accessor',
|
|
16
|
+
divisor: 'accessor',
|
|
17
|
+
normalized: 'accessor',
|
|
18
|
+
integer: 'accessor'
|
|
19
|
+
},
|
|
20
|
+
// Deprecated props that can be autosubstituted, print warning and return updated props object
|
|
21
|
+
replacedProps: {
|
|
22
|
+
bytes: 'byteLength'
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
class Buffer {
|
|
27
|
+
setProps(props) {
|
|
28
|
+
checkProps('Buffer', props, PROP_CHECKS);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
export type PropChecks = {
|
|
34
|
+
removedProps?: Record<string, any>;
|
|
35
|
+
replacedProps?: Record<string, string>;
|
|
36
|
+
deprecatedProps?: Record<string, string>;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export function checkProps(className: string, props: Record<string, any>, propChecks: PropChecks): Record<string, unknown> {
|
|
40
|
+
const {removedProps = {}, deprecatedProps = {}, replacedProps = {}} = propChecks;
|
|
41
|
+
|
|
42
|
+
// removedProps: Removed props no longer supported
|
|
43
|
+
// print error and link to upgrade guide
|
|
44
|
+
for (const propName in removedProps) {
|
|
45
|
+
if (propName in props) {
|
|
46
|
+
const replacementProp = removedProps[propName];
|
|
47
|
+
const replacement = replacementProp ? `${className}.${removedProps[propName]}` : 'N/A';
|
|
48
|
+
log.removed(`${className}.${propName}`, replacement)();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// deprecatedProps: Deprecated props that can not be autosubstituted
|
|
53
|
+
// print warning and rely on caller to substitute
|
|
54
|
+
for (const propName in deprecatedProps) {
|
|
55
|
+
if (propName in props) {
|
|
56
|
+
const replacementProp = deprecatedProps[propName];
|
|
57
|
+
log.deprecated(`${className}.${propName}`, `${className}.${replacementProp}`)();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// replacedProps: Deprecated props that can be autosubstituted
|
|
62
|
+
// print warning and return updated props object
|
|
63
|
+
let newProps = null;
|
|
64
|
+
for (const [propName, replacementProp] of Object.entries(replacedProps)) {
|
|
65
|
+
if (propName in props) {
|
|
66
|
+
log.deprecated(`${className}.${propName}`, `${className}.${replacementProp}`)();
|
|
67
|
+
newProps = newProps || Object.assign({}, props);
|
|
68
|
+
newProps[replacementProp] = props[propName];
|
|
69
|
+
delete newProps[propName];
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return newProps || props;
|
|
74
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fast partial deep equal for prop.
|
|
3
|
+
*
|
|
4
|
+
* @param a Prop
|
|
5
|
+
* @param b Prop to compare against `a`
|
|
6
|
+
* @param depth Depth to which to recurse in nested Objects/Arrays. Use 0 (default) for shallow comparison, -1 for infinite depth
|
|
7
|
+
*/
|
|
8
|
+
/* eslint-disable complexity */
|
|
9
|
+
export function deepEqual(a: any, b: any, depth: number): boolean {
|
|
10
|
+
if (a === b) {
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
if (!depth || !a || !b) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
if (Array.isArray(a)) {
|
|
17
|
+
if (!Array.isArray(b) || a.length !== b.length) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
for (let i = 0; i < a.length; i++) {
|
|
21
|
+
if (!deepEqual(a[i], b[i], depth - 1)) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
if (Array.isArray(b)) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
if (typeof a === 'object' && typeof b === 'object') {
|
|
31
|
+
const aKeys = Object.keys(a);
|
|
32
|
+
const bKeys = Object.keys(b);
|
|
33
|
+
if (aKeys.length !== bKeys.length) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
for (const key of aKeys) {
|
|
37
|
+
if (!b.hasOwnProperty(key)) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
if (!deepEqual(a[key], b[key], depth - 1)) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import type {NumberArray} from '../types';
|
|
3
|
+
|
|
4
|
+
/** TODO @deprecated - delete when confident that probe.gl logging implements all opts */
|
|
5
|
+
function formatArrayValue(v: NumberArray, opts: {maxElts?: number, size?: number} = {}): string {
|
|
6
|
+
const {maxElts = 16, size = 1} = opts;
|
|
7
|
+
let string = '[';
|
|
8
|
+
for (let i = 0; i < v.length && i < maxElts; ++i) {
|
|
9
|
+
if (i > 0) {
|
|
10
|
+
string += `,${i % size === 0 ? ' ' : ''}`;
|
|
11
|
+
}
|
|
12
|
+
string += formatValue(v[i], opts);
|
|
13
|
+
}
|
|
14
|
+
const terminator = v.length > maxElts ? '...' : ']';
|
|
15
|
+
return `${string}${terminator}`;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/** TODO @deprecated - delete when confident that probe.gl logging implements all opts */
|
|
19
|
+
export function formatValue(v: number | NumberArray | unknown, opts: {isInteger?: boolean, size?: number} = {}): string {
|
|
20
|
+
const EPSILON = 1e-16;
|
|
21
|
+
const {isInteger = false} = opts;
|
|
22
|
+
if (Array.isArray(v) || ArrayBuffer.isView(v)) {
|
|
23
|
+
return formatArrayValue(v as NumberArray, opts);
|
|
24
|
+
}
|
|
25
|
+
if (typeof v !== 'number') {
|
|
26
|
+
return String(v);
|
|
27
|
+
}
|
|
28
|
+
if (Math.abs(v) < EPSILON) {
|
|
29
|
+
return isInteger ? '0' : '0.';
|
|
30
|
+
}
|
|
31
|
+
if (isInteger) {
|
|
32
|
+
return v.toFixed(0);
|
|
33
|
+
}
|
|
34
|
+
if (Math.abs(v) > 100 && Math.abs(v) < 10000) {
|
|
35
|
+
return v.toFixed(0);
|
|
36
|
+
}
|
|
37
|
+
const string = v.toPrecision(2);
|
|
38
|
+
const decimal = string.indexOf('.0');
|
|
39
|
+
return decimal === string.length - 2 ? string.slice(0, -1) : string;
|
|
40
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import {TypedArray, NumberArray} from '../types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Check is an array is a typed array
|
|
5
|
+
* @param value value to be tested
|
|
6
|
+
* @returns input as TypedArray, or null
|
|
7
|
+
* @todo this should be provided by @math.gl/types
|
|
8
|
+
*/
|
|
9
|
+
export function isTypedArray(value: unknown): TypedArray | null {
|
|
10
|
+
return ArrayBuffer.isView(value) && !(value instanceof DataView) ? (value as TypedArray) : null;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Check is an array is a numeric array (typed array or array of numbers)
|
|
15
|
+
* @param value value to be tested
|
|
16
|
+
* @returns input as NumberArray, or null
|
|
17
|
+
* @todo this should be provided by @math.gl/types
|
|
18
|
+
*/
|
|
19
|
+
export function isNumberArray(value: unknown): NumberArray | null {
|
|
20
|
+
if (Array.isArray(value)) {
|
|
21
|
+
return value.length === 0 || typeof value[0] === 'number' ? (value as number[]) : null;
|
|
22
|
+
}
|
|
23
|
+
return isTypedArray(value);
|
|
24
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
|
+
|
|
4
|
+
let pathPrefix = '';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Set a relative path prefix
|
|
8
|
+
*/
|
|
9
|
+
export function setPathPrefix(prefix: string) {
|
|
10
|
+
pathPrefix = prefix;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Reads raw file data. Respects setPathPrefix.
|
|
15
|
+
*/
|
|
16
|
+
export async function loadFile(
|
|
17
|
+
url: string,
|
|
18
|
+
options?: {dataType?: 'text' | 'arrayBuffer'} & RequestInit
|
|
19
|
+
): Promise<any> {
|
|
20
|
+
url = url.startsWith('http') ? url : pathPrefix + url;
|
|
21
|
+
const dataType = options?.dataType || 'text';
|
|
22
|
+
const response = await fetch(url, options);
|
|
23
|
+
return await response[dataType]();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Loads ImageBitmap asynchronously. Respects setPathPrefix.
|
|
28
|
+
* image.crossOrigin can be set via opts.crossOrigin, default to 'anonymous'
|
|
29
|
+
* @returns a promise tracking the load
|
|
30
|
+
*/
|
|
31
|
+
export async function loadImageBitmap(
|
|
32
|
+
url: string,
|
|
33
|
+
opts?: {crossOrigin?: string}
|
|
34
|
+
): Promise<ImageBitmap> {
|
|
35
|
+
const image = new Image();
|
|
36
|
+
image.crossOrigin = opts?.crossOrigin || 'anonymous';
|
|
37
|
+
image.src = url.startsWith('http') ? url : pathPrefix + url;
|
|
38
|
+
await image.decode();
|
|
39
|
+
return await createImageBitmap(image);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Loads image asynchronously. Respects setPathPrefix.
|
|
44
|
+
* image.crossOrigin can be set via opts.crossOrigin, default to 'anonymous'
|
|
45
|
+
* @returns a promise tracking the load
|
|
46
|
+
* @deprecated Use `loadImageBitmap()` unless you are supporting old versions of Safari.
|
|
47
|
+
*/
|
|
48
|
+
export async function loadImage(
|
|
49
|
+
url: string,
|
|
50
|
+
opts?: {crossOrigin?: string}
|
|
51
|
+
): Promise<HTMLImageElement> {
|
|
52
|
+
return new Promise((resolve, reject) => {
|
|
53
|
+
try {
|
|
54
|
+
const image = new Image();
|
|
55
|
+
image.onload = () => resolve(image);
|
|
56
|
+
image.onerror = () => reject(new Error(`Could not load image ${url}.`));
|
|
57
|
+
image.crossOrigin = opts?.crossOrigin || 'anonymous';
|
|
58
|
+
image.src = url.startsWith('http') ? url : pathPrefix + url;
|
|
59
|
+
} catch (error) {
|
|
60
|
+
reject(error);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Load a script (identified by an url). When the url returns, the
|
|
67
|
+
* content of this file is added into a new script element, attached to the DOM (body element)
|
|
68
|
+
* @param scriptUrl defines the url of the script to laod
|
|
69
|
+
* @param scriptId defines the id of the script element
|
|
70
|
+
*/
|
|
71
|
+
export async function loadScript(scriptUrl: string, scriptId?: string): Promise<Event> {
|
|
72
|
+
const head = document.getElementsByTagName('head')[0];
|
|
73
|
+
if (!head) {
|
|
74
|
+
throw new Error('loadScript');
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const script = document.createElement('script');
|
|
78
|
+
script.setAttribute('type', 'text/javascript');
|
|
79
|
+
script.setAttribute('src', scriptUrl);
|
|
80
|
+
if (scriptId) {
|
|
81
|
+
script.id = scriptId;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return new Promise((resolve, reject) => {
|
|
85
|
+
script.onload = resolve;
|
|
86
|
+
script.onerror = (error) => reject(new Error(`Unable to load script '${scriptUrl}': ${error as string}`));
|
|
87
|
+
head.appendChild(script);
|
|
88
|
+
});
|
|
89
|
+
}
|
package/src/utils/log.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Creates a deterministic pseudorandom number generator */
|
|
2
|
+
export function makeRandomNumberGenerator(): () => number {
|
|
3
|
+
let s = 1;
|
|
4
|
+
let c = 1;
|
|
5
|
+
return () => {
|
|
6
|
+
s = Math.sin(c * 17.23);
|
|
7
|
+
c = Math.cos(s * 27.92);
|
|
8
|
+
return fract(Math.abs(s * c) * 1432.71);
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function fract(n: number): number {
|
|
13
|
+
return n - Math.floor(n);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/** Generates a deterministic pseudorandom number */
|
|
17
|
+
export const random = makeRandomNumberGenerator();
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Node.js polyfills for requestAnimationFrame and cancelAnimationFrame
|
|
2
|
+
/* global window, setTimeout, clearTimeout */
|
|
3
|
+
|
|
4
|
+
// / <reference types="@types/node" />
|
|
5
|
+
export function requestAnimationFrame(callback: (time?: any) => void): any {
|
|
6
|
+
return typeof window !== 'undefined' && window.requestAnimationFrame
|
|
7
|
+
? window.requestAnimationFrame(callback)
|
|
8
|
+
: setTimeout(callback, 1000 / 60);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export function cancelAnimationFrame(timerId: any): void {
|
|
12
|
+
return typeof window !== 'undefined' && window.cancelAnimationFrame
|
|
13
|
+
? window.cancelAnimationFrame(timerId)
|
|
14
|
+
: clearTimeout(timerId);
|
|
15
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import {Stats} from '@probe.gl/stats';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Helper class managing a collection of probe.gl stats objects
|
|
5
|
+
*/
|
|
6
|
+
export class StatsManager {
|
|
7
|
+
stats = new Map();
|
|
8
|
+
|
|
9
|
+
getStats(name: string): Stats {
|
|
10
|
+
return this.get(name);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
get(name: string): Stats {
|
|
14
|
+
if (!this.stats.has(name)) {
|
|
15
|
+
this.stats.set(name, new Stats({id: name}));
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return this.stats.get(name);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** Global stats for all luma.gl devices */
|
|
23
|
+
export const lumaStats: StatsManager = new StatsManager();
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import {log} from './log';
|
|
2
|
+
|
|
3
|
+
// Install stubs for removed methods
|
|
4
|
+
export function stubRemovedMethods(instance: any, className: string, version: string, methodNames: string[]) {
|
|
5
|
+
const upgradeMessage = `See luma.gl ${version} Upgrade Guide at \
|
|
6
|
+
https://luma.gl/docs/upgrade-guide`;
|
|
7
|
+
|
|
8
|
+
const prototype = Object.getPrototypeOf(instance);
|
|
9
|
+
|
|
10
|
+
methodNames.forEach((methodName: string): void => {
|
|
11
|
+
if (prototype.methodName) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
prototype[methodName] = () => {
|
|
16
|
+
log.removed(`Calling removed method ${className}.${methodName}: `, upgradeMessage)();
|
|
17
|
+
throw new Error(methodName);
|
|
18
|
+
};
|
|
19
|
+
});
|
|
20
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
// Copyright (c) vis.gl contributors
|
|
3
|
+
|
|
4
|
+
const uidCounters: Record<string, number> = {};
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Returns a UID.
|
|
8
|
+
* @param id= - Identifier base name
|
|
9
|
+
* @return uid
|
|
10
|
+
**/
|
|
11
|
+
export function uid(id: string = 'id'): string {
|
|
12
|
+
uidCounters[id] = uidCounters[id] || 1;
|
|
13
|
+
const count = uidCounters[id]++;
|
|
14
|
+
return `${id}-${count}`;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Verifies if a given number is power of two or not.
|
|
19
|
+
* @param n - The number to check.
|
|
20
|
+
* @return Returns true if the given number is power of 2, false otherwise.
|
|
21
|
+
**/
|
|
22
|
+
export function isPowerOfTwo(n: number): boolean {
|
|
23
|
+
return (n > 0) && (n & (n - 1)) === 0;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/** Returns true if given object is empty, false otherwise. */
|
|
27
|
+
export function isObjectEmpty(obj: object): boolean {
|
|
28
|
+
let isEmpty = true;
|
|
29
|
+
// @ts-ignore key is unused
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
31
|
+
for (const key in obj) {
|
|
32
|
+
isEmpty = false;
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
return isEmpty;
|
|
36
|
+
}
|
package/dist/bundle.d.ts
DELETED
package/dist/bundle.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,aAAa,KAAqB,CAAC"}
|
package/dist/bundle.js
DELETED
package/dist/bundle.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/bundle.ts"],"names":["moduleExports","require","globalThis","luma","module","exports","Object","assign"],"mappings":"AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AACAC,UAAU,CAACC,IAAX,GAAkBD,UAAU,CAACC,IAAX,IAAmB,EAArC;AACAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,IAAzB,EAA+BH,aAA/B,CAAjB","sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.luma = globalThis.luma || {};\nmodule.exports = Object.assign(globalThis.luma, moduleExports);\n"],"file":"bundle.js"}
|
package/src/bundle.ts
DELETED