@luma.gl/test-utils 9.0.0-beta.4 → 9.0.0-beta.6

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 (56) hide show
  1. package/dist/check-type.js +5 -2
  2. package/dist/create-test-device.d.ts +2 -6
  3. package/dist/create-test-device.d.ts.map +1 -1
  4. package/dist/create-test-device.js +47 -54
  5. package/dist/engine/classic-animation-loop.d.ts +5 -5
  6. package/dist/engine/classic-animation-loop.d.ts.map +1 -1
  7. package/dist/engine/classic-animation-loop.js +518 -422
  8. package/dist/index.cjs +63 -41
  9. package/dist/index.cjs.map +7 -0
  10. package/dist/index.d.ts +11 -8
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +7 -3
  13. package/dist/performance-test-runner.d.ts +1 -1
  14. package/dist/performance-test-runner.d.ts.map +1 -1
  15. package/dist/performance-test-runner.js +36 -42
  16. package/dist/register-devices.js +4 -4
  17. package/dist/snapshot-test-runner.d.ts +1 -1
  18. package/dist/snapshot-test-runner.d.ts.map +1 -1
  19. package/dist/snapshot-test-runner.js +44 -36
  20. package/dist/test-runner.d.ts +3 -3
  21. package/dist/test-runner.d.ts.map +1 -1
  22. package/dist/test-runner.js +180 -152
  23. package/dist/utils/check-type.d.ts +6 -0
  24. package/dist/utils/check-type.d.ts.map +1 -0
  25. package/dist/utils/check-type.js +5 -0
  26. package/dist/utils/deep-copy.d.ts +3 -0
  27. package/dist/utils/deep-copy.d.ts.map +1 -0
  28. package/dist/utils/deep-copy.js +14 -0
  29. package/dist/utils/get-bounding-box.d.ts +7 -0
  30. package/dist/utils/get-bounding-box.d.ts.map +1 -0
  31. package/dist/utils/get-bounding-box.js +10 -0
  32. package/dist/utils/resource-tracker.d.ts +6 -0
  33. package/dist/utils/resource-tracker.d.ts.map +1 -0
  34. package/dist/utils/resource-tracker.js +23 -0
  35. package/dist/utils.js +8 -8
  36. package/package.json +17 -25
  37. package/src/create-test-device.ts +11 -16
  38. package/src/engine/classic-animation-loop.ts +20 -20
  39. package/src/index.ts +9 -2
  40. package/src/performance-test-runner.ts +2 -1
  41. package/src/register-devices.ts +3 -5
  42. package/src/snapshot-test-runner.ts +7 -3
  43. package/src/test-runner.ts +14 -8
  44. package/src/{check-type.ts → utils/check-type.ts} +0 -1
  45. package/src/utils/deep-copy.ts +16 -0
  46. package/src/{utils.ts → utils/get-bounding-box.ts} +6 -1
  47. package/src/utils/resource-tracker.ts +27 -0
  48. package/dist/check-type.js.map +0 -1
  49. package/dist/create-test-device.js.map +0 -1
  50. package/dist/engine/classic-animation-loop.js.map +0 -1
  51. package/dist/index.js.map +0 -1
  52. package/dist/performance-test-runner.js.map +0 -1
  53. package/dist/register-devices.js.map +0 -1
  54. package/dist/snapshot-test-runner.js.map +0 -1
  55. package/dist/test-runner.js.map +0 -1
  56. package/dist/utils.js.map +0 -1
@@ -1,2 +1,5 @@
1
- export function checkType(value) {}
2
- //# sourceMappingURL=check-type.js.map
1
+ /**
2
+ * Tests that an argument matches the type.
3
+ * @note fails during typescript type check, not during runtime.
4
+ */
5
+ export function checkType(value) { }
@@ -2,14 +2,10 @@ import type { Device, DeviceProps } from '@luma.gl/core';
2
2
  import { WebGLDevice } from '@luma.gl/webgl';
3
3
  import { WebGPUDevice } from '@luma.gl/webgpu';
4
4
  /** Create a test WebGL context */
5
- export declare function createTestContext(opts?: Record<string, any>): WebGLRenderingContext | null;
5
+ export declare function createTestContext(opts?: Record<string, any>): WebGL2RenderingContext | null;
6
6
  /** Create a test WebGLDevice */
7
7
  export declare function createTestDevice(props?: DeviceProps): WebGLDevice | null;
8
- /** A WebGL 1 Device intended for testing */
9
- export declare const webgl1Device: WebGLDevice;
10
- /** A WebGL 2 Device intended for testing. Can be null */
11
- export declare const webgl2Device: WebGLDevice;
12
- /** A WebGL 2 or WebGL 1 Device intended for testing. Best available. */
8
+ /** A WebGL 2 Device intended for testing */
13
9
  export declare const webglDevice: WebGLDevice;
14
10
  /** Only available after getTestDevices() has completed */
15
11
  export declare let webgpuDevice: WebGPUDevice;
@@ -1 +1 @@
1
- {"version":3,"file":"create-test-device.d.ts","sourceRoot":"","sources":["../src/create-test-device.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,MAAM,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAQ7C,kCAAkC;AAClC,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,qBAAqB,GAAG,IAAI,CAG9F;AAED,gCAAgC;AAChC,wBAAgB,gBAAgB,CAAC,KAAK,GAAE,WAAgB,GAAG,WAAW,GAAG,IAAI,CAU5E;AAED,4CAA4C;AAC5C,eAAO,MAAM,YAAY,EAAE,WAAuF,CAAE;AACpH,yDAAyD;AACzD,eAAO,MAAM,YAAY,EAAE,WAAuF,CAAE;AACpH,wEAAwE;AACxE,eAAO,MAAM,WAAW,EAAE,WAA0C,CAAC;AAErE,0DAA0D;AAC1D,eAAO,IAAI,YAAY,EAAE,YAAY,CAAC;AAItC,yDAAyD;AACzD,wBAAgB,mBAAmB,IAAI,WAAW,EAAE,CASnD;AAED,0CAA0C;AAC1C,wBAAsB,cAAc,IAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAezD"}
1
+ {"version":3,"file":"create-test-device.d.ts","sourceRoot":"","sources":["../src/create-test-device.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAQ7C,kCAAkC;AAClC,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,sBAAsB,GAAG,IAAI,CAG/F;AAED,gCAAgC;AAChC,wBAAgB,gBAAgB,CAAC,KAAK,GAAE,WAAgB,GAAG,WAAW,GAAG,IAAI,CAU5E;AAED,4CAA4C;AAC5C,eAAO,MAAM,WAAW,EAAE,WAA0D,CAAC;AAErF,0DAA0D;AAC1D,eAAO,IAAI,YAAY,EAAE,YAAY,CAAC;AAItC,yDAAyD;AACzD,wBAAgB,mBAAmB,IAAI,WAAW,EAAE,CAInD;AAED,0CAA0C;AAC1C,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAkBxD"}
@@ -1,66 +1,59 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { luma } from '@luma.gl/core';
2
5
  import { WebGLDevice } from '@luma.gl/webgl';
3
6
  const CONTEXT_DEFAULTS = {
4
- width: 1,
5
- height: 1,
6
- debug: true
7
+ width: 1,
8
+ height: 1,
9
+ debug: true
7
10
  };
8
- export function createTestContext() {
9
- let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
10
- const device = createTestDevice(opts);
11
- return device && device.gl;
11
+ /** Create a test WebGL context */
12
+ export function createTestContext(opts = {}) {
13
+ const device = createTestDevice(opts);
14
+ return device && device.gl;
12
15
  }
13
- export function createTestDevice() {
14
- let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
15
- try {
16
- props = {
17
- ...CONTEXT_DEFAULTS,
18
- ...props,
19
- debug: true
20
- };
21
- return new WebGLDevice(props);
22
- } catch (error) {
23
- console.error(`Failed to created device '${props.id}': ${error.message}`);
24
- return null;
25
- }
16
+ /** Create a test WebGLDevice */
17
+ export function createTestDevice(props = {}) {
18
+ try {
19
+ props = { ...CONTEXT_DEFAULTS, ...props, debug: true };
20
+ // We dont use luma.createDevice since this tests current expect this context to be created synchronously
21
+ return new WebGLDevice(props);
22
+ }
23
+ catch (error) {
24
+ // eslint-disable-next-line no-console
25
+ console.error(`Failed to created device '${props.id}': ${error.message}`);
26
+ return null;
27
+ }
26
28
  }
27
- export const webgl1Device = createTestDevice({
28
- id: 'webgl1-test-device',
29
- webgl1: true,
30
- webgl2: false
31
- });
32
- export const webgl2Device = createTestDevice({
33
- id: 'webgl2-test-device',
34
- webgl1: false,
35
- webgl2: true
36
- });
37
- export const webglDevice = webgl2Device || webgl1Device;
29
+ /** A WebGL 2 Device intended for testing */
30
+ export const webglDevice = createTestDevice({ id: 'webgl2-test-device' });
31
+ /** Only available after getTestDevices() has completed */
38
32
  export let webgpuDevice;
39
33
  let webgpuCreated = false;
34
+ /** Synchronously get test devices (only WebGLDevices) */
40
35
  export function getWebGLTestDevices() {
41
- const devices = [];
42
- if (webgl2Device) {
43
- devices.push(webgl2Device);
44
- }
45
- if (webgl1Device) {
46
- devices.push(webgl1Device);
47
- }
48
- return devices;
36
+ const devices = [];
37
+ devices.push(webglDevice);
38
+ return devices;
49
39
  }
40
+ /** Includes WebGPU device if available */
50
41
  export async function getTestDevices() {
51
- if (!webgpuCreated) {
52
- webgpuCreated = true;
53
- try {
54
- webgpuDevice = await luma.createDevice({
55
- id: 'webgpu-test-device',
56
- type: 'webgpu'
57
- });
58
- } catch {}
59
- }
60
- const devices = getWebGLTestDevices();
61
- if (webgpuDevice) {
62
- devices.unshift(webgpuDevice);
63
- }
64
- return devices;
42
+ if (!webgpuCreated) {
43
+ webgpuCreated = true;
44
+ try {
45
+ webgpuDevice = (await luma.createDevice({
46
+ id: 'webgpu-test-device',
47
+ type: 'webgpu'
48
+ }));
49
+ }
50
+ catch {
51
+ // ignore (assume WebGPU was not available)
52
+ }
53
+ }
54
+ const devices = getWebGLTestDevices();
55
+ if (webgpuDevice) {
56
+ devices.unshift(webgpuDevice);
57
+ }
58
+ return devices;
65
59
  }
66
- //# sourceMappingURL=create-test-device.js.map
@@ -12,7 +12,7 @@ export type ClassicAnimationProps = AnimationProps & {
12
12
  /** @deprecated Use .device */
13
13
  stop: () => ClassicAnimationLoop;
14
14
  /** @deprecated Use .device */
15
- gl: WebGLRenderingContext;
15
+ gl: WebGL2RenderingContext;
16
16
  /** @deprecated Will be removed */
17
17
  framebuffer: unknown;
18
18
  /** @deprecated Use .timeline */
@@ -25,7 +25,7 @@ export type ClassicAnimationProps = AnimationProps & {
25
25
  /** ClassicAnimationLoop properties */
26
26
  export type ClassicAnimationLoopProps = {
27
27
  onCreateDevice?: (props: DeviceProps) => Promise<Device>;
28
- onCreateContext?: (props: ContextProps) => WebGLRenderingContext;
28
+ onCreateContext?: (props: ContextProps) => WebGL2RenderingContext;
29
29
  onAddHTML?: (div: HTMLDivElement) => string;
30
30
  onInitialize?: (animationProps: ClassicAnimationProps) => {} | void | Promise<{} | void>;
31
31
  onRender?: (animationProps: ClassicAnimationProps) => void;
@@ -38,7 +38,7 @@ export type ClassicAnimationLoopProps = {
38
38
  autoResizeDrawingBuffer?: boolean;
39
39
  useDevicePixels?: number | boolean;
40
40
  /** @deprecated Use .device */
41
- gl?: WebGLRenderingContext | null;
41
+ gl?: WebGL2RenderingContext | null;
42
42
  /** @deprecated Will be removed */
43
43
  createFramebuffer?: boolean;
44
44
  };
@@ -66,7 +66,7 @@ export declare class ClassicAnimationLoop {
66
66
  _resolveNextFrame: ((loop: ClassicAnimationLoop) => void) | null;
67
67
  _cpuStartTime: number;
68
68
  /** @deprecated */
69
- gl: WebGLRenderingContext;
69
+ gl: WebGL2RenderingContext;
70
70
  constructor(props?: ClassicAnimationLoopProps);
71
71
  destroy(): void;
72
72
  /** @deprecated Use .destroy() */
@@ -89,7 +89,7 @@ export declare class ClassicAnimationLoop {
89
89
  onRender(animationProps: ClassicAnimationProps): void;
90
90
  onFinalize(animationProps: ClassicAnimationProps): void;
91
91
  /** @deprecated Use .onCreateDevice() */
92
- onCreateContext(props: ContextProps): WebGLRenderingContext;
92
+ onCreateContext(props: ContextProps): WebGL2RenderingContext;
93
93
  /** @deprecated */
94
94
  getHTMLControlValue(id: any, defaultValue?: number): number;
95
95
  _initialize(props: ClassicAnimationLoopProps): void;
@@ -1 +1 @@
1
- {"version":3,"file":"classic-animation-loop.d.ts","sourceRoot":"","sources":["../../src/engine/classic-animation-loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"classic-animation-loop.d.ts","sourceRoot":"","sources":["../../src/engine/classic-animation-loop.ts"],"names":[],"mappings":"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"}