@aziontech/opennextjs-azion
Version:
Azion builder for next apps
107 lines (104 loc) • 3.94 kB
JavaScript
/**
* This code was originally copied and modified from the @opennextjs/cloudflare repository.
* Significant changes have been made to adapt it for use with Azion.
*/
import { patchCode } from "@opennextjs/aws/build/patch/astCodePatcher.js";
import { describe, expect, test } from "vitest";
import { buildMultipleChunksRule, singleChunkRule } from "./webpack-runtime.js";
describe("webpack runtime", () => {
describe("multiple chunks", () => {
test("patch runtime", () => {
const code = `
/******/ // require() chunk loading for javascript
/******/ __webpack_require__.f.require = (chunkId, promises) => {
/******/ // "1" is the signal for "already loaded"
/******/ if (!installedChunks[chunkId]) {
/******/ if (658 != chunkId) {
/******/ installChunk(require("./chunks/" + __webpack_require__.u(chunkId)));
/******/
} else installedChunks[chunkId] = 1;
/******/
}
/******/
};
`;
expect(patchCode(code, buildMultipleChunksRule([1, 2, 3]))).toMatchInlineSnapshot(`
"/******/ // require() chunk loading for javascript
/******/ __webpack_require__.f.require = (chunkId, promises) => {
if (!installedChunks[chunkId]) {
switch (chunkId) {
case 1: installChunk(require("./chunks/1.js")); break;
case 2: installChunk(require("./chunks/2.js")); break;
case 3: installChunk(require("./chunks/3.js")); break;
case 658: installedChunks[chunkId] = 1; break;
default: throw new Error(\`Unknown chunk \${chunkId}\`);
}
}
}
;
"
`);
});
test("patch minified runtime", () => {
const code = `
t.f.require=(o,n)=>{e[o]||(658!=o?r(require("./chunks/"+t.u(o))):e[o]=1)}
`;
expect(patchCode(code, buildMultipleChunksRule([1, 2, 3]))).toMatchInlineSnapshot(`
"t.f.require=(o, promises) => {
if (!e[o]) {
switch (o) {
case 1: r(require("./chunks/1.js")); break;
case 2: r(require("./chunks/2.js")); break;
case 3: r(require("./chunks/3.js")); break;
case 658: e[o] = 1; break;
default: throw new Error(\`Unknown chunk \${o}\`);
}
}
}
"
`);
});
});
describe("single chunk", () => {
test("patch runtime", () => {
const code = `
/******/ // require() chunk loading for javascript
/******/ __webpack_require__.f.require = (chunkId, promises) => {
/******/ // "1" is the signal for "already loaded"
/******/ if(!installedChunks[chunkId]) {
/******/ if(710 == chunkId) {
/******/ installChunk(require("./chunks/" + __webpack_require__.u(chunkId)));
/******/ } else installedChunks[chunkId] = 1;
/******/ }
/******/ };
`;
expect(patchCode(code, singleChunkRule)).toMatchInlineSnapshot(`
"/******/ // require() chunk loading for javascript
/******/ __webpack_require__.f.require = (chunkId, _) => {
if (!installedChunks[chunkId]) {
try {
installChunk(require("./chunks/710.js"));
} catch {}
}
}
;
"
`);
});
test("patch minified runtime", () => {
const code = `
o.f.require=(t,a)=>{e[t]||(710==t?r(require("./chunks/"+o.u(t))):e[t]=1)}
`;
expect(patchCode(code, singleChunkRule)).toMatchInlineSnapshot(`
"o.f.require=(t, _) => {
if (!e[t]) {
try {
r(require("./chunks/710.js"));
} catch {}
}
}
"
`);
});
});
});