@speckle/objectloader2
Version:
This is an updated objectloader for the Speckle viewer written in typescript
67 lines • 2.54 kB
JavaScript
import { getFeatureFlag, ObjectLoader2Flags } from '../types/functions.js';
import { ObjectLoader2 } from './objectLoader2.js';
import IndexedDatabase from './stages/indexedDatabase.js';
import { MemoryDatabase } from './stages/memory/memoryDatabase.js';
import { MemoryDownloader } from './stages/memory/memoryDownloader.js';
import ServerDownloader from './stages/serverDownloader.js';
export class ObjectLoader2Factory {
static createFromObjects(objects) {
const root = objects[0];
const records = new Map();
objects.forEach((element) => {
records.set(element.id, element);
});
const loader = new ObjectLoader2({
rootId: root.id,
database: new MemoryDatabase({ items: records }),
downloader: new MemoryDownloader(root.id, records)
});
return loader;
}
static createFromJSON(json) {
const jsonObj = JSON.parse(json);
return this.createFromObjects(jsonObj);
}
static createFromUrl(params) {
const log = ObjectLoader2Factory.getLogger(params.options?.logger);
let database;
if (getFeatureFlag(ObjectLoader2Flags.DEBUG) === 'true') {
this.logger('Using DEBUG mode for ObjectLoader2Factory');
}
if (getFeatureFlag(ObjectLoader2Flags.USE_CACHE) === 'true') {
database = new IndexedDatabase({
indexedDB: params.options?.indexedDB,
keyRange: params.options?.keyRange
});
}
else {
database = new MemoryDatabase({
items: new Map()
});
this.logger('Disabled persistent caching for ObjectLoader2. Using MemoryDatabase');
}
const loader = new ObjectLoader2({
rootId: params.objectId,
downloader: new ServerDownloader({
serverUrl: params.serverUrl,
streamId: params.streamId,
objectId: params.objectId,
token: params.token,
headers: params.headers
}),
database,
logger: log
});
return loader;
}
static getLogger(providedLogger) {
if (getFeatureFlag(ObjectLoader2Flags.DEBUG) === 'true') {
return providedLogger || this.logger;
}
return providedLogger;
}
static logger = (m, ...optionalParams) => {
console.log(`[debug] ${m}`, ...optionalParams);
};
}
//# sourceMappingURL=objectLoader2Factory.js.map