soonspacejs 3.0.0-alpha.10 → 3.0.0-alpha.11

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "soonspacejs",
3
- "version": "3.0.0-alpha.10",
3
+ "version": "3.0.0-alpha.11",
4
4
  "homepage": "https://www.xwbuilders.com/soonspacejs/",
5
5
  "description": "SoonSpace.js 3.0 alpha",
6
6
  "module": "./dist/index.esm.js",
@@ -1,8 +1,18 @@
1
+ import { ModelCacheDiagnostic } from '../Interface/modelCache';
2
+ interface CacheOptions {
3
+ maxEntryBytes?: number;
4
+ onDiagnostic?: (event: ModelCacheDiagnostic) => void;
5
+ }
1
6
  /** Raw HTTP model bytes only. Runtime leases / GPU graphs are never persisted. */
2
7
  export declare class ModelBufferCache {
3
8
  private readonly store;
4
9
  private readonly enabled;
5
- constructor(store?: LocalForage, enabled?: () => boolean);
10
+ private readonly options;
11
+ private warned;
12
+ constructor(store?: LocalForage, enabled?: () => boolean, options?: () => CacheOptions);
13
+ private maximumEntryBytes;
14
+ private withinLimit;
15
+ private diagnose;
6
16
  load(url: string, init: {
7
17
  headers: Headers;
8
18
  credentials: RequestCredentials;
@@ -13,3 +23,4 @@ export declare class ModelBufferCache {
13
23
  private mutate;
14
24
  clear(): Promise<void>;
15
25
  }
26
+ export {};
@@ -11,3 +11,4 @@ export * from './sbmCache';
11
11
  export * from './sbmXmlToJson';
12
12
  export * from './gmlToJson';
13
13
  export * from './poiMesh';
14
+ export * from './modelCache';
@@ -0,0 +1,9 @@
1
+ /** Cache diagnostics never contain resource URLs, headers or exception messages. */
2
+ export interface ModelCacheDiagnostic {
3
+ key: string;
4
+ operation: 'read' | 'write' | 'skip';
5
+ reason: 'storage-error' | 'invalid-entry' | 'entry-too-large';
6
+ bytes?: number;
7
+ maxEntryBytes: number;
8
+ errorName?: string;
9
+ }
@@ -6,6 +6,8 @@ interface SignalsState {
6
6
  backgroundChanged: Signal;
7
7
  beforeRender: Signal;
8
8
  sceneRendered: Signal;
9
+ /** Dispatches ModelCacheDiagnostic when persistent model caching fails or skips a size limit. */
10
+ modelCacheDiagnostic: Signal;
9
11
  tweenUpdate: Signal;
10
12
  hover: Signal;
11
13
  click: Signal;
@@ -102,6 +102,8 @@ interface ViewportOptions {
102
102
  closeInfoLog?: boolean;
103
103
  closeWarnLog?: boolean;
104
104
  useIndexedDB?: boolean;
105
+ /** Maximum bytes per persistent model resource; default 1 GiB, zero disables persistence. */
106
+ modelCacheMaxEntryBytes?: number;
105
107
  }
106
108
  interface ViewportState {
107
109
  useFreq: number;
package/types/index.d.ts CHANGED
@@ -1142,6 +1142,11 @@ declare class Bvh {
1142
1142
  dispose(): void;
1143
1143
  }
1144
1144
 
1145
+ declare interface CacheOptions {
1146
+ maxEntryBytes?: number;
1147
+ onDiagnostic?: (event: ModelCacheDiagnostic) => void;
1148
+ }
1149
+
1145
1150
  declare const calculateScaleFactor: (point3: Vector3, radiusPx: number, camera: Camera, size: Vector2) => number;
1146
1151
 
1147
1152
  declare class CameraManager {
@@ -3527,7 +3532,12 @@ export declare interface ModelAnimationFindFunc {
3527
3532
  declare class ModelBufferCache {
3528
3533
  private readonly store;
3529
3534
  private readonly enabled;
3530
- constructor(store?: LocalForage, enabled?: () => boolean);
3535
+ private readonly options;
3536
+ private warned;
3537
+ constructor(store?: LocalForage, enabled?: () => boolean, options?: () => CacheOptions);
3538
+ private maximumEntryBytes;
3539
+ private withinLimit;
3540
+ private diagnose;
3531
3541
  load(url: string, init: {
3532
3542
  headers: Headers;
3533
3543
  credentials: RequestCredentials;
@@ -3539,6 +3549,16 @@ declare class ModelBufferCache {
3539
3549
  clear(): Promise<void>;
3540
3550
  }
3541
3551
 
3552
+ /** Cache diagnostics never contain resource URLs, headers or exception messages. */
3553
+ export declare interface ModelCacheDiagnostic {
3554
+ key: string;
3555
+ operation: 'read' | 'write' | 'skip';
3556
+ reason: 'storage-error' | 'invalid-entry' | 'entry-too-large';
3557
+ bytes?: number;
3558
+ maxEntryBytes: number;
3559
+ errorName?: string;
3560
+ }
3561
+
3542
3562
  export declare interface ModelEventParams {
3543
3563
  target: Model;
3544
3564
  currentTarget: Mesh;
@@ -4576,6 +4596,8 @@ export declare interface SignalsState {
4576
4596
  backgroundChanged: Signal;
4577
4597
  beforeRender: Signal;
4578
4598
  sceneRendered: Signal;
4599
+ /** Dispatches ModelCacheDiagnostic when persistent model caching fails or skips a size limit. */
4600
+ modelCacheDiagnostic: Signal;
4579
4601
  tweenUpdate: Signal;
4580
4602
  hover: Signal;
4581
4603
  click: Signal;
@@ -6828,6 +6850,8 @@ export declare interface ViewportOptions {
6828
6850
  closeInfoLog?: boolean;
6829
6851
  closeWarnLog?: boolean;
6830
6852
  useIndexedDB?: boolean;
6853
+ /** Maximum bytes per persistent model resource; default 1 GiB, zero disables persistence. */
6854
+ modelCacheMaxEntryBytes?: number;
6831
6855
  }
6832
6856
 
6833
6857
  export declare interface ViewportState {