WARNING: This project is under development. Current use is not recommended!
Modular asset loader for web applications.
With NPM
$ npm install --save @wault/web-loaderimport {
load,
Chain,
XHRLoader,
ImageElementLoader,
WebAudioParser,
TypeDetector
} from '@wault/web-loader'
load(Chain([
TypeDetector,
XHRLoader(),
ImageElementLoader,
WebAudioParser(audioContext)
]), [
'assets/textures/background.jpg',
'assets/sfx/theme.mp3'
], progress => console.log(`Loading ${100 * progress}%`))
.then(assets => {
const image = assets[0].data
const music = assets[1].data
})
.catch(error => console.error(error))Loader is composed out of different modules, each providing it's own functionality.
| Module | Example | Description |
|---|---|---|
| Chain | Chain([ ...modules ]) |
For each block. |
| Filter | Filter(module, material => true/false) |
If block. |
| Catch | Catch(module, (error, material) => material) |
Try catch block. |
| Throttle | Throttle(16)(module) |
Limit the number of concurrent requests. |
| Store | Store(internal?) |
Cache. Internal resolve assumes that no additional requests should be made. |
| Fallback | Fallback() |
In case of failure will resort to fallbacks if supplied. |
| Order | Order(module) |
Execute in strict order. |
| Module | Example | Description |
|---|---|---|
| XHRLoader | XHRLoader() |
Load files using http request. |
| ImageElementLoader | ImageElementLoader |
Load image into <img>. |
| AudioElementLoader | AudioElementLoader |
Load audio into <audio>. |
| ScriptElementLoader | ScriptElementLoader() |
Load and execute javascript asynchronously into <script>. |
| StylesheetLoader | StylesheetLoader() |
Load CSS asynchronously into <link>. |
| Module | Example | Description |
|---|---|---|
| TypeDetector | TypeDetector() |
Detect file extension. |
| JSONParser | JSONParser |
Parse JSON data. |
| XMLParser | XMLParser |
Parse XML data. |
| ScriptExecutor | ScriptExecutor() |
Execute script. |
| StylesheetParser | StylesheetParser() |
Apply CSS. |
| SVGParser | SVGParser |
Convert SVG to image. |
| WebAudioDecoder | WebAudioDecoder(audioContext) |
Decode web audio buffer. |
| Base64Unpacker | Base64Unpacker(material => material.data) |
Unpack base64 encoded assets from json bundle. |
Any function or async function can be used as a loading module.
async function customLoader(material){
const response = await fetch(material.path)
const data = await response.json()
return { ...material, data }
}