@gltf-transform/core
Version:
glTF 2.0 SDK for JavaScript and TypeScript, on Web and Node.js.
36 lines (33 loc) • 1.04 kB
text/typescript
import { ImageUtils } from './image-utils.js';
/**
* *Utility class for working with file systems and URI paths.*
*
* @category Utilities
*/
export class FileUtils {
/**
* Extracts the basename from a file path, e.g. "folder/model.glb" -> "model".
* See: {@link HTTPUtils.basename}
*/
static basename(uri: string): string {
const fileName = uri.split(/[\\/]/).pop()!;
return fileName.substring(0, fileName.lastIndexOf('.'));
}
/**
* Extracts the extension from a file path, e.g. "folder/model.glb" -> "glb".
* See: {@link HTTPUtils.extension}
*/
static extension(uri: string): string {
if (uri.startsWith('data:image/')) {
const mimeType = uri.match(/data:(image\/\w+)/)![1];
return ImageUtils.mimeTypeToExtension(mimeType);
} else if (uri.startsWith('data:model/gltf+json')) {
return 'gltf';
} else if (uri.startsWith('data:model/gltf-binary')) {
return 'glb';
} else if (uri.startsWith('data:application/')) {
return 'bin';
}
return uri.split(/[\\/]/).pop()!.split(/[.]/).pop()!;
}
}