@mango-js/scripts
Version:
Scripts required for building and testing Mango applications
65 lines (55 loc) • 3.67 kB
JavaScript
import i from"fs";import r from"fs/promises";import s from"path";import p from"https";import{fileURLToPath as o}from"url";{const e="https://repl.parceljs.org/parcel_node_bindings.fd45f024.wasm",n=s.join(s.dirname(o(import.meta.resolve("@parcel/rust"))),"parcel_node_bindings.wasm");i.existsSync(n)||await new Promise(t=>p.get(e,c=>{const a=i.createWriteStream(n);c.pipe(a),a.on("finish",()=>{a.close(),t()})}))}{const e=s.join(s.dirname(o(import.meta.resolve("@parcel/rust"))),"package.json"),n=await r.readFile(e,"utf8"),t=JSON.parse(n);t.main!=="browser.js"&&(t.main="browser.js",await r.writeFile(e,JSON.stringify(t)))}{const e=s.join(s.dirname(o(import.meta.resolve("@parcel/source-map"))),"..","package.json"),n=await r.readFile(e,"utf8"),t=JSON.parse(n);t.main!=="./dist/wasm.js"&&(t.main="./dist/wasm.js",await r.writeFile(e,JSON.stringify(t)))}{const e=o(import.meta.resolve("@parcel/package-manager")),n=await r.readFile(e,"utf8");if(n.indexOf('process.versions.hasOwnProperty("webcontainer")')===-1){const t=n.replace("this.fs instanceof",'!process.versions.hasOwnProperty("webcontainer") && this.fs instanceof');await r.writeFile(e,t)}}{const e=s.join(s.dirname(o(import.meta.resolve("@parcel/core"))),"resolveOptions.js"),n=await r.readFile(e,"utf8");if(n.indexOf('!process.versions.hasOwnProperty("webcontainer")')===-1){const t=n.replace("outputFS instanceof _fs().NodeFS &&",'outputFS instanceof _fs().NodeFS && !process.versions.hasOwnProperty("webcontainer")');await r.writeFile(e,t)}}{const e=o(import.meta.resolve("@parcel/fs")),n=await r.readFile(e,"utf8");if(n.indexOf("@parcel/watcher-wasm")===-1){const t=n.replace("process.versions.pnp != null","true").replace("@parcel/watcher","@parcel/watcher-wasm").replace("function $parcel$interopDefault(a) {",`$5X5qb$parcelwatcher.default = $5X5qb$parcelwatcher;
function $parcel$interopDefault(a) {`);await r.writeFile(e,t)}}{const e=s.join(s.dirname(o(import.meta.resolve("@parcel/rust"))),"browser.js");await r.writeFile(e,`const { Environment, napi } = require("napi-wasm");
const crypto = require("crypto");
module.exports.hashString = void 0;
let env;
module.exports.init = async function init(input) {
if (env) return;
input = input ?? require("path").join(__dirname, "parcel_node_bindings.wasm");
const { instance } = await WebAssembly.instantiate(
require("fs").readFileSync(input),
{
env: {
...napi,
__getrandom_custom: (ptr, len) => {
let buf = env.memory.subarray(ptr, ptr + len);
crypto.getRandomValues(buf);
},
log: (ptr, len) => {
// eslint-disable-next-line no-console
console.log(env.getString(ptr, len));
},
},
}
);
for (let key in instance.exports) {
if (key.startsWith("__napi_register__")) {
instance.exports[key]();
}
}
env = new Environment(instance);
for (let key in env.exports) {
if (key !== "transform") {
module.exports[key] = env.exports[key];
}
}
module.exports.transform = function (config) {
!config.env["LOCALES"] && delete config.env["LOCALES"];
!config.env["RTL_LOCALES"] && delete config.env["RTL_LOCALES"];
!config.env["DEFAULT_LOCALE"] && delete config.env["DEFAULT_LOCALE"];
let result = env.exports.transform(config);
return {
...result,
// Hydrate Uint8Array into Buffer
code: Buffer.from(result.code),
};
};
module.exports.Resolver.prototype.getInvalidations = function (_path) {
return {
invalidateOnFileCreate: [],
invalidateOnFileChange: new Set(),
invalidateOnStartup: false,
};
};
env.exports.initPanicHook();
};`)}