UNPKG

@speckle/objectloader2

Version:

This is an updated objectloader for the Speckle viewer written in typescript

86 lines 3.76 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ObjectLoader2Factory = void 0; const defermentManager_js_1 = require("../deferment/defermentManager.js"); const functions_js_1 = require("../types/functions.js"); const objectLoader2_js_1 = require("./objectLoader2.js"); const indexedDatabase_js_1 = require("./stages/indexedDatabase.js"); const memoryDatabase_js_1 = require("./stages/memory/memoryDatabase.js"); const memoryDownloader_js_1 = require("./stages/memory/memoryDownloader.js"); const serverDownloader_js_1 = __importDefault(require("./stages/serverDownloader.js")); 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_js_1.ObjectLoader2({ rootId: root.id, deferments: new defermentManager_js_1.MemoryOnlyDeferment(records), database: new memoryDatabase_js_1.MemoryDatabase({ items: records }), downloader: new memoryDownloader_js_1.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 (params.options?.debug === true || (0, functions_js_1.getFeatureFlag)(functions_js_1.ObjectLoader2Flags.DEBUG) === 'true') { this.logger('Using DEBUG mode for ObjectLoader2Factory'); } const useCache = params.options?.useCache ?? true; const flag = (0, functions_js_1.getFeatureFlag)(functions_js_1.ObjectLoader2Flags.USE_CACHE); const flagAllowsCache = flag !== 'false'; if (useCache && flagAllowsCache) { database = new indexedDatabase_js_1.IndexedDatabase({ indexedDB: params.options?.indexedDB, keyRange: params.options?.keyRange }); } else { database = new memoryDatabase_js_1.MemoryDatabase({ items: new Map() }); this.logger('Disabled persistent caching for ObjectLoader2. Using MemoryDatabase'); } const logger = log || (() => { }); const loader = new objectLoader2_js_1.ObjectLoader2({ rootId: params.objectId, deferments: new defermentManager_js_1.DefermentManager(logger), downloader: new serverDownloader_js_1.default({ serverUrl: params.serverUrl, streamId: params.streamId, objectId: params.objectId, token: params.token, headers: params.headers, fetch: params.options?.fetch, attributeMask: params.attributeMask, objectTypeMask: params.objectTypeMask, logger }), database, logger }); return loader; } static getLogger(providedLogger) { if ((0, functions_js_1.getFeatureFlag)(functions_js_1.ObjectLoader2Flags.DEBUG) === 'true') { return providedLogger || this.logger; } return providedLogger; } static logger = (m, ...optionalParams) => { console.log(`[debug] ${m}`, ...optionalParams); }; } exports.ObjectLoader2Factory = ObjectLoader2Factory; //# sourceMappingURL=objectLoader2Factory.js.map