@loaders.gl/core
Version: 
Framework-independent loaders for 3D graphics formats
40 lines (33 loc) • 1.31 kB
JavaScript
import { selectLoader } from './select-loader';
import { isLoaderObject } from './loader-utils/normalize-loader';
import { mergeLoaderAndUserOptions } from './loader-utils/normalize-options';
import { getArrayBufferOrStringFromDataSync } from './loader-utils/get-data';
import { getLoaderContext } from './loader-utils/get-loader-context';
export function parseSync(data, loaders, options, url) {
  if (!Array.isArray(loaders) && !isLoaderObject(loaders)) {
    url = options;
    options = loaders;
    loaders = null;
  }
  const loader = selectLoader(loaders, url, data);
  if (!loader) {
    return null;
  }
  options = mergeLoaderAndUserOptions(options, loader);
  const context = getLoaderContext({
    url,
    parseSync
  }, options);
  return parseWithLoaderSync(loader, data, options, context);
}
function parseWithLoaderSync(loader, data, options, context) {
  data = getArrayBufferOrStringFromDataSync(data, loader);
  if (loader.parseTextSync && typeof data === 'string') {
    return loader.parseTextSync(data, options, context, loader);
  }
  if (loader.parseSync) {
    return loader.parseSync(data, options, context, loader);
  }
  throw new Error("Could not parse ".concat(context.url || 'data', " using ").concat(loader.name, " loader"));
}
//# sourceMappingURL=parse-sync.js.map