Files
front/assets/workers/resolve-lygia.esm.js
T

57 lines
1.5 KiB
JavaScript

function getFile(url) {
if(url == "https://lygia.xyz/generative/fbm.glsl"){
url = "/fbm.glsl"
}
let httpRequest = new XMLHttpRequest();
httpRequest.open("GET", url, false);
httpRequest.send();
if (httpRequest.status == 200)
return httpRequest.responseText;
else
return "";
}
const lygiaURL = "https://lygia.xyz"
function resolveLygia(lines) {
if ( !Array.isArray(lines) ) {
lines = lines.split(/\r?\n/);
}
let src = "";
lines.forEach( (line, i) => {
const line_trim = line.trim();
if (line_trim.startsWith('#include \"lygia') ) {
let include_url = line_trim.substring(15);
include_url = lygiaURL + include_url.replace(/\"|\;|\s/g,'');
src += getFile(include_url) + '\n';
}
else {
src += line + '\n';
}
});
return src;
}
async function resolveLygiaAsync(lines) {
if (!Array.isArray(lines))
lines = lines.split(/\r?\n/);
let src = "";
const response = await Promise.all(
lines.map(async (line, i) => {
const line_trim = line.trim();
if (line_trim.startsWith('#include "lygia')) {
let include_url = line_trim.substring(15);
include_url = lygiaURL + include_url.replace(/\"|\;|\s/g, "");
return fetch(include_url).then((res) => res.text());
}
else
return line;
})
);
return response.join("\n");
}
export { resolveLygia as default };