@speckle/objectloader2
Version:
This is an updated objectloader for the Speckle viewer written in typescript
86 lines • 3.76 kB
JavaScript
;
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