UNPKG

@mango-js/scripts

Version:

Scripts required for building and testing Mango applications

65 lines (55 loc) 3.67 kB
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(); };`)}