- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
import type { ExtensionMetadata } from '@pixi/core';
import type { Loader } from '../Loader';
import type { LoadAsset } from '../types';
/**
* All functions are optional here. The flow:
*
* for every asset,
*
* 1. `parser.test()`: Test the asset url.
* 2. `parser.load()`: If test passes call the load function with the url
* 3. `parser.testParse()`: Test to see if the asset should be parsed by the plugin
* 4. `parse.parse()`: If test is parsed, then run the parse function on the asset.
*
* some plugins may only be used for parsing,
* some only for loading
* and some for both!
*/
export interface LoaderParser<ASSET = any, META_DATA = any>
{
extension?: ExtensionMetadata;
/** A config to adjust the parser */
config?: Record<string, any>
/**
* each URL to load will be tested here,
* if the test is passed the assets are loaded using the load function below.
* Good place to test for things like file extensions!
* @param url - The URL to test
* @param loadAsset - Any custom additional information relevant to the asset being loaded
* @param loader - The loader instance
*/
test?: (url: string, loadAsset?: LoadAsset<META_DATA>, loader?: Loader) => boolean;
/**
* This is the promise that loads the URL provided
* resolves with a loaded asset if returned by the parser.
* @param url - The URL to load
* @param loadAsset - Any custom additional information relevant to the asset being loaded
* @param loader - The loader instance
*/
load?: <T>(url: string, loadAsset?: LoadAsset<META_DATA>, loader?: Loader) => Promise<T>;
/**
* This function is used to test if the parse function should be run on the asset
* If this returns true then parse is called with the asset
* @param asset - The loaded asset data
* @param loadAsset - Any custom additional information relevant to the asset being loaded
* @param loader - The loader instance
*/
testParse?: (asset: ASSET, loadAsset?: LoadAsset<META_DATA>, loader?: Loader) => Promise<boolean>;
/**
* Gets called on the asset it testParse passes. Useful to convert a raw asset into something more useful than
* @param asset - The loaded asset data
* @param loadAsset - Any custom additional information relevant to the asset being loaded
* @param loader - The loader instance
*/
parse?: <T>(asset: ASSET, loadAsset?: LoadAsset<META_DATA>, loader?: Loader) => Promise<T>;
/**
* If an asset is parsed using this parser, the unload function will be called when the user requests an asset
* to be unloaded. This is useful for things like sounds or textures that can be unloaded from memory
* @param asset - The asset to unload/destroy
* @param loadAsset - Any custom additional information relevant to the asset being loaded
* @param loader - The loader instance
*/
unload?: (asset: ASSET, loadAsset?: LoadAsset<META_DATA>, loader?: Loader) => void;
}