@loaders.gl/core
Version:
The core API for working with loaders.gl loaders and writers
51 lines (50 loc) • 1.63 kB
JavaScript
// loaders.gl
// SPDX-License-Identifier: MIT
// Copyright (c) vis.gl contributors
import { assert } from '@loaders.gl/loader-utils';
export function isLoaderObject(loader) {
if (!loader) {
return false;
}
if (Array.isArray(loader)) {
loader = loader[0];
}
const hasExtensions = Array.isArray(loader?.extensions);
/* Now handled by types and worker loaders do not have these
let hasParser =
loader.parseTextSync ||
loader.parseSync ||
loader.parse ||
loader.parseStream || // TODO Remove, Replace with parseInBatches
loader.parseInBatches;
*/
return hasExtensions;
}
export function normalizeLoader(loader) {
// This error is fairly easy to trigger by mixing up import statements etc
// So we make an exception and add a developer error message for this case
// To help new users from getting stuck here
assert(loader, 'null loader');
assert(isLoaderObject(loader), 'invalid loader');
// NORMALIZE [LOADER, OPTIONS] => LOADER
// If [loader, options], create a new loaders object with options merged in
let options;
if (Array.isArray(loader)) {
options = loader[1];
loader = loader[0];
loader = {
...loader,
options: { ...loader.options, ...options }
};
}
// NORMALIZE text and binary flags
// Ensure at least one of text/binary flags are properly set
// @ts-expect-error
if (loader?.parseTextSync || loader?.parseText) {
loader.text = true;
}
if (!loader.text) {
loader.binary = true;
}
return loader;
}