@loaders.gl/loader-utils
Version:
Framework-independent loaders for 3D graphics formats
45 lines (38 loc) • 1.21 kB
text/typescript
// loaders.gl
// SPDX-License-Identifier: MIT
// Copyright (c) vis.gl contributors
import type {LoaderOptions} from '@loaders.gl/loader-utils';
/**
* Gets the current fetch function from options
* @todo - move to loader-utils module
* @todo - use in core module counterpart
* @param options
* @param context
*/
export function getFetchFunction(options?: LoaderOptions) {
const fetchFunction = options?.fetch;
// options.fetch can be a function
if (fetchFunction && typeof fetchFunction === 'function') {
return (url: string, fetchOptions?: RequestInit) => fetchFunction(url, fetchOptions);
}
// options.fetch can be an options object, use global fetch with those options
const fetchOptions = options?.fetch;
if (fetchOptions && typeof fetchOptions !== 'function') {
return (url) => fetch(url, fetchOptions);
}
// else return the global fetch function
return (url) => fetch(url);
}
export function mergeImageSourceLoaderProps<Props extends {loadOptions?: any}>(
props: Props
): Required<Props> {
// @ts-expect-error
return {
// Default fetch
...props,
loadOptions: {
...props.loadOptions,
fetch: getFetchFunction(props.loadOptions)
}
};
}