@formant/data-sdk 1.79.0 → 1.80.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/dist/assets/data-loader.worker-a6fd974d.js.map +1 -0
- package/dist/data-sdk.cjs.js +44 -44
- package/dist/data-sdk.cjs.js.map +1 -1
- package/dist/data-sdk.es.js +5101 -4377
- package/dist/data-sdk.es.js.map +1 -1
- package/dist/data-sdk.es6.js +5101 -4377
- package/dist/data-sdk.umd.js +44 -44
- package/dist/types/data-sdk/src/connector/common/LruCache.d.ts +18 -0
- package/dist/types/data-sdk/src/connector/common/PromiseLruCache.d.ts +11 -0
- package/dist/types/data-sdk/src/connector/common/errorToObject.d.ts +14 -0
- package/dist/types/data-sdk/src/connector/common/errorToString.d.ts +4 -0
- package/dist/types/data-sdk/src/connector/common/toStringSafe.d.ts +8 -0
- package/dist/types/data-sdk/src/connector/data/BaseUniverseDataConnector.d.ts +1 -0
- package/dist/types/data-sdk/src/connector/data/loader/DataLoader.d.ts +27 -0
- package/dist/types/data-sdk/src/connector/data/loader/data-loader.worker.d.ts +1 -0
- package/dist/types/data-sdk/src/devices/BaseDevice.d.ts +2 -0
- package/dist/types/data-sdk/src/model/IPath.d.ts +1 -0
- package/package.json +4 -1
- package/dist/assets/DataFetchWorker-0a168933.js.map +0 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import BaseLruCache from "lru-cache";
|
|
2
|
+
export type CacheOptions<V> = BaseLruCache.Options<string, V> & {
|
|
3
|
+
name: string;
|
|
4
|
+
fastStringify?: boolean;
|
|
5
|
+
};
|
|
6
|
+
export declare class LruCache<K, V> {
|
|
7
|
+
private cache;
|
|
8
|
+
private stringify;
|
|
9
|
+
constructor(options: CacheOptions<V>);
|
|
10
|
+
set(key: K, value: V, ttl?: number): void;
|
|
11
|
+
get(key: K): V | undefined;
|
|
12
|
+
delete(key: K): void;
|
|
13
|
+
peek(key: K): V | undefined;
|
|
14
|
+
size(): number;
|
|
15
|
+
clear(): void;
|
|
16
|
+
forEach(callback: (value: V) => void): void;
|
|
17
|
+
purgeStale(): boolean;
|
|
18
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CacheOptions, LruCache } from "./LruCache";
|
|
2
|
+
export type PromiseCacheOptions<V> = CacheOptions<Promise<V>> & {
|
|
3
|
+
expireRejectedPromiseValues?: boolean;
|
|
4
|
+
rejectedPromiseValueTtl?: number;
|
|
5
|
+
};
|
|
6
|
+
export declare class PromiseLruCache<K, V> extends LruCache<K, Promise<V>> {
|
|
7
|
+
protected expireRejectedPromiseValues: boolean;
|
|
8
|
+
protected rejectedPromiseValueTtl: number;
|
|
9
|
+
constructor(options: PromiseCacheOptions<V>);
|
|
10
|
+
set(key: K, value: Promise<V>, ttl?: number): void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert an error object to plain javascript object, including any custom properties.
|
|
3
|
+
*/
|
|
4
|
+
export declare function errorToObject(error: any): {
|
|
5
|
+
message: string;
|
|
6
|
+
name?: undefined;
|
|
7
|
+
stack?: undefined;
|
|
8
|
+
meta?: undefined;
|
|
9
|
+
} | {
|
|
10
|
+
name: any;
|
|
11
|
+
message: any;
|
|
12
|
+
stack: any;
|
|
13
|
+
meta: any;
|
|
14
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safely stringify input.
|
|
3
|
+
* Similar to `JSON.stringify` but
|
|
4
|
+
* doesn't throw an error if input includes circular properties.
|
|
5
|
+
*
|
|
6
|
+
* Warning: output is not guaranteed to be a valid JSON string.
|
|
7
|
+
*/
|
|
8
|
+
export declare function toStringSafe(input: unknown): string;
|
|
@@ -25,6 +25,7 @@ export declare class BasicUniverseDataConnector {
|
|
|
25
25
|
time: Date | "live";
|
|
26
26
|
timeChangeListeners: ((time: Date | "live") => void)[];
|
|
27
27
|
queryStore: QueryStore;
|
|
28
|
+
dataLoader: any;
|
|
28
29
|
setTime(time: Date | "live"): void;
|
|
29
30
|
getTime(): Date | "live";
|
|
30
31
|
getTimeMs(): number;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
type JsonPrimitive = string | number | boolean | null;
|
|
2
|
+
interface IJsonMap {
|
|
3
|
+
[member: string]: JsonPrimitive | IJsonArray | IJsonMap;
|
|
4
|
+
}
|
|
5
|
+
interface IJsonArray extends Array<JsonPrimitive | IJsonArray | IJsonMap> {
|
|
6
|
+
}
|
|
7
|
+
export type Json = IJsonMap | IJsonArray | JsonPrimitive;
|
|
8
|
+
export interface IDataLoaderResult {
|
|
9
|
+
json: Json;
|
|
10
|
+
preview: string;
|
|
11
|
+
length: number;
|
|
12
|
+
}
|
|
13
|
+
export declare class DataLoader {
|
|
14
|
+
private static references;
|
|
15
|
+
private static instance;
|
|
16
|
+
static get(): DataLoader;
|
|
17
|
+
static release(loader: DataLoader): void;
|
|
18
|
+
private workers;
|
|
19
|
+
private cache;
|
|
20
|
+
private nextWorkerIndex;
|
|
21
|
+
private resolveMap;
|
|
22
|
+
private rejectMap;
|
|
23
|
+
private constructor();
|
|
24
|
+
load(url: string): Promise<IDataLoaderResult>;
|
|
25
|
+
private nextWorker;
|
|
26
|
+
}
|
|
27
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IRtcSendConfiguration, IRtcStreamMessage, RtcClient, IRtcPeer } from "@formant/realtime-sdk";
|
|
2
|
+
import { IPingInfo } from "@formant/realtime-sdk/dist/rtc-client/models/IPingInfo";
|
|
2
3
|
import { DataChannel } from "../DataChannel";
|
|
3
4
|
import { EventEmitter } from "eventemitter3";
|
|
4
5
|
import { Manipulator } from "../Manipulator";
|
|
@@ -25,6 +26,7 @@ export declare abstract class BaseDevice extends EventEmitter implements IRealti
|
|
|
25
26
|
protected stopConnectionMonitoring(): void;
|
|
26
27
|
protected assertNotCancelled(cancelled: boolean): void;
|
|
27
28
|
getRealtimeStatus(): "disconnected" | "connecting" | "connected";
|
|
29
|
+
getRealtimePingInfo(): IPingInfo | undefined;
|
|
28
30
|
getRealtimePing(): number | undefined;
|
|
29
31
|
addRealtimeListener(listener: RealtimeListener): void;
|
|
30
32
|
removeRealtimeListener(listener: RealtimeListener): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@formant/data-sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.80.2",
|
|
4
4
|
"description": "A library for getting data from Formant",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -49,6 +49,7 @@
|
|
|
49
49
|
"@eslint/js": "^9.11.1",
|
|
50
50
|
"@formant/realtime-sdk": "1.4.3",
|
|
51
51
|
"@types/base-64": "^1.0.0",
|
|
52
|
+
"@types/fast-json-stable-stringify": "=2.0.0",
|
|
52
53
|
"@types/node": "^18.16.3",
|
|
53
54
|
"@types/pako": "^2.0.0",
|
|
54
55
|
"@typescript-eslint/eslint-plugin": "^8.7.0",
|
|
@@ -75,7 +76,9 @@
|
|
|
75
76
|
"base64-js": "^1.5.1",
|
|
76
77
|
"date-fns": "^2.30.0",
|
|
77
78
|
"eventemitter3": "^5.0.1",
|
|
79
|
+
"fast-json-stable-stringify": "=2.0.0",
|
|
78
80
|
"google-protobuf": "^3.21.2",
|
|
81
|
+
"lru-cache": "^7.14.0",
|
|
79
82
|
"lzfjs": "^1.0.1",
|
|
80
83
|
"pako": "^2.1.0",
|
|
81
84
|
"validator": "^13.11.0"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DataFetchWorker-0a168933.js","sources":["../src/connector/common/duration.ts","../src/connector/common/fork.ts","../src/connector/data/StoreCache.ts","../src/connector/data/DataFetchWorker.ts"],"sourcesContent":["const millisecond = 1;\nconst second = 1000;\nconst minute = 60 * second;\nconst hour = 60 * minute;\nconst day = 24 * hour;\nconst week = 7 * day;\nconst month = 30 * day;\nconst year = 365 * day;\n\nexport const duration = {\n millisecond,\n second,\n minute,\n hour,\n day,\n week,\n month,\n year,\n} as const;\n","/**\n * Used to fire-and-forget a promise.\n * This is useful as a function wrapper to suppress floating promise warnings.\n */\nexport function fork<T>(_: Promise<T>): void {\n return undefined;\n}\n","import { duration } from \"../common/duration\";\nimport { fork } from \"../common/fork\";\n\ninterface ICacheEntryMetadata<Value> {\n generating: boolean;\n expiration: Date;\n lastValue?: Value;\n}\n\ntype CacheKey = string;\n\nexport class StoreCache<Key, Value> {\n private entries = new Map<CacheKey, Value>();\n private metadata = new Map<CacheKey, ICacheEntryMetadata<Value>>();\n private capacity!: number;\n private timeout!: number;\n\n constructor({\n capacity,\n timeout,\n }: { capacity?: number; timeout?: number } = {}) {\n this.capacity = capacity || 10000;\n this.timeout = timeout || duration.minute;\n }\n\n public get(key: Key, generator?: () => Promise<Value>): Value | undefined {\n const cacheKey = this.keyToCacheKey(key);\n const entry = this.entries.get(cacheKey);\n const metadata = this.metadata.get(cacheKey);\n\n if (\n (entry === undefined ||\n (metadata && metadata?.expiration.getTime() < Date.now())) &&\n !metadata?.generating &&\n generator\n ) {\n this.generate(key, generator());\n }\n\n if (entry === undefined && metadata && metadata.lastValue !== undefined) {\n return metadata.lastValue;\n }\n\n return entry;\n }\n\n public set(key: Key, value: Value) {\n const cacheKey = this.keyToCacheKey(key);\n this.metadata.set(cacheKey, {\n generating: false,\n expiration: new Date(Date.now() + this.timeout),\n lastValue: value,\n });\n this.entries.set(cacheKey, value);\n\n if (this.metadata.size > this.capacity) {\n this.deleteOldestEntry();\n }\n }\n\n public clear() {\n this.entries.clear();\n [...this.metadata.values()].forEach((value) => (value.generating = false));\n }\n\n public clearKey(key: string): void {\n this.metadata.delete(key);\n this.entries.delete(key);\n }\n\n private keyToCacheKey(key: Key): CacheKey {\n return JSON.stringify(key);\n }\n\n private deleteOldestEntry() {\n if (this.metadata.size < 1) {\n return;\n }\n const [key] = [...this.metadata.entries()].reduce(\n ([oldestKey, oldestEntry], [thisKey, entry]) =>\n entry.expiration.getTime() < oldestEntry.expiration.getTime()\n ? [thisKey, entry]\n : [oldestKey, oldestEntry]\n );\n this.clearKey(key);\n }\n\n private generate(key: Key, promise: Promise<Value>) {\n const cacheKey = this.keyToCacheKey(key);\n const existingMetadata = this.metadata.get(cacheKey) || {};\n this.metadata.set(cacheKey, {\n ...existingMetadata,\n generating: true,\n expiration: new Date(Date.now() + this.timeout),\n });\n setTimeout(() => {\n fork(\n promise.then((value) => {\n const metadata = this.metadata.get(cacheKey);\n const canceled = !metadata?.generating;\n if (!canceled) {\n this.set(key, value);\n }\n })\n );\n }, 0);\n }\n}\n","import { duration } from \"../common/duration\";\nimport { StoreCache } from \"./StoreCache\";\n\nconst cache = new StoreCache<string, any>({\n capacity: 1000,\n timeout: 1 * duration.minute,\n});\n\nonmessage = async (event: MessageEvent<{ url?: string }>) => {\n const { url } = event.data;\n\n if (url) {\n // Check if the point cloud for the given URL is already in the cache\n const cached = cache.get(url, async () => {\n // Fetch the point cloud and store it in the cache\n const res = await fetch(url, { mode: \"cors\" }).then((r) => r.json());\n return res;\n });\n\n if (cached) {\n postMessage({ url, response: cached });\n }\n }\n};\n"],"names":["duration","fork","_","StoreCache","capacity","timeout","__publicField","key","generator","cacheKey","entry","metadata","value","oldestKey","oldestEntry","thisKey","promise","existingMetadata","cache","event","url","cached","r"],"mappings":"iMASO,MAAMA,EAAW,CACtB,cACA,WACA,WACA,UACA,UACA,YACA,aACA,YACF,ECdO,SAASC,EAAQC,EAAqB,CAE7C,CCKO,MAAMC,CAAuB,CAMlC,YAAY,CACV,SAAAC,EACA,QAAAC,CACF,EAA6C,GAAI,CARzCC,EAAA,mBAAc,KACdA,EAAA,oBAAe,KACfA,EAAA,iBACAA,EAAA,gBAMN,KAAK,SAAWF,GAAY,IACvB,KAAA,QAAUC,GAAWL,EAAS,MACrC,CAEO,IAAIO,EAAUC,EAAqD,CAClE,MAAAC,EAAW,KAAK,cAAcF,CAAG,EACjCG,EAAQ,KAAK,QAAQ,IAAID,CAAQ,EACjCE,EAAW,KAAK,SAAS,IAAIF,CAAQ,EAW3C,OARGC,IAAU,QACRC,IAAYA,GAAA,YAAAA,EAAU,WAAW,WAAY,KAAK,IAAI,IACzD,EAACA,GAAA,MAAAA,EAAU,aACXH,GAEK,KAAA,SAASD,EAAKC,EAAW,CAAA,EAG5BE,IAAU,QAAaC,GAAYA,EAAS,YAAc,OACrDA,EAAS,UAGXD,CACT,CAEO,IAAIH,EAAUK,EAAc,CAC3B,MAAAH,EAAW,KAAK,cAAcF,CAAG,EAClC,KAAA,SAAS,IAAIE,EAAU,CAC1B,WAAY,GACZ,WAAY,IAAI,KAAK,KAAK,IAAI,EAAI,KAAK,OAAO,EAC9C,UAAWG,CAAA,CACZ,EACI,KAAA,QAAQ,IAAIH,EAAUG,CAAK,EAE5B,KAAK,SAAS,KAAO,KAAK,UAC5B,KAAK,kBAAkB,CAE3B,CAEO,OAAQ,CACb,KAAK,QAAQ,QACZ,CAAA,GAAG,KAAK,SAAS,QAAQ,EAAE,QAASA,GAAWA,EAAM,WAAa,EAAM,CAC3E,CAEO,SAASL,EAAmB,CAC5B,KAAA,SAAS,OAAOA,CAAG,EACnB,KAAA,QAAQ,OAAOA,CAAG,CACzB,CAEQ,cAAcA,EAAoB,CACjC,OAAA,KAAK,UAAUA,CAAG,CAC3B,CAEQ,mBAAoB,CACtB,GAAA,KAAK,SAAS,KAAO,EACvB,OAEI,KAAA,CAACA,CAAG,EAAI,CAAC,GAAG,KAAK,SAAS,QAAS,CAAA,EAAE,OACzC,CAAC,CAACM,EAAWC,CAAW,EAAG,CAACC,EAASL,CAAK,IACxCA,EAAM,WAAW,QAAY,EAAAI,EAAY,WAAW,UAChD,CAACC,EAASL,CAAK,EACf,CAACG,EAAWC,CAAW,CAAA,EAE/B,KAAK,SAASP,CAAG,CACnB,CAEQ,SAASA,EAAUS,EAAyB,CAC5C,MAAAP,EAAW,KAAK,cAAcF,CAAG,EACjCU,EAAmB,KAAK,SAAS,IAAIR,CAAQ,GAAK,GACnD,KAAA,SAAS,IAAIA,EAAU,CAC1B,GAAGQ,EACH,WAAY,GACZ,WAAY,IAAI,KAAK,KAAK,IAAI,EAAI,KAAK,OAAO,CAAA,CAC/C,EACD,WAAW,IAAM,CAEbD,EAAQ,KAAMJ,GAAU,CACtB,MAAMD,EAAW,KAAK,SAAS,IAAIF,CAAQ,EAC1B,EAACE,GAAA,MAAAA,EAAU,aAErB,KAAA,IAAIJ,EAAKK,CAAK,CACrB,CACD,GAEF,CAAC,CACN,CACF,CCxGA,MAAMM,EAAQ,IAAIf,EAAwB,CACxC,SAAU,IACV,QAAS,EAAIH,EAAS,MACxB,CAAC,EAED,UAAY,MAAOmB,GAA0C,CACrD,KAAA,CAAE,IAAAC,CAAI,EAAID,EAAM,KAEtB,GAAIC,EAAK,CAEP,MAAMC,EAASH,EAAM,IAAIE,EAAK,SAEhB,MAAM,MAAMA,EAAK,CAAE,KAAM,OAAQ,EAAE,KAAME,GAAMA,EAAE,KAAM,CAAA,CAEpE,EAEGD,GACF,YAAY,CAAE,IAAAD,EAAK,SAAUC,CAAQ,CAAA,EAG3C"}
|