From 7267d2ef3838b25b5344fa655f4068aad0919681 Mon Sep 17 00:00:00 2001 From: Joseph Garrone Date: Tue, 30 Jan 2024 00:37:30 +0100 Subject: [PATCH] Add a test case for the code that enable the import to work in webpack if base isn't / --- .../replaceImportsInJsCode/webpack.ts | 12 +++--- test/bin/replacers.spec.ts | 40 +++++++++++++++++++ 2 files changed, 45 insertions(+), 7 deletions(-) diff --git a/src/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.ts b/src/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.ts index 5a7d91dd..dcbefdf6 100644 --- a/src/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.ts +++ b/src/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.ts @@ -21,20 +21,18 @@ export function replaceImportsInJsCode_webpack(params: { jsCode: string; buildOp let fixedJsCode = jsCode; - // "__esModule",{value:!0})},n.p="/",function(){if("undefined" -> n.p="/abcde12345/" - - // d={NODE_ENV:"production",PUBLIC_URL:"/abcde12345",WDS_SOCKET_HOST - // d={NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST - // -> - // PUBLIC_URL:"${window.${nameOfTheGlobal}.url.resourcesPath}/${basenameOfTheKeycloakifyResourcesDir}"` - if (buildOptions.urlPathname !== undefined) { + // "__esModule",{value:!0})},n.p="/foo-bar/",function(){if("undefined" -> ... n.p="/" ... fixedJsCode = fixedJsCode.replace( new RegExp(`,([a-zA-Z]\\.[a-zA-Z])="${replaceAll(buildOptions.urlPathname, "/", "\\/")}",`, "g"), (...[, assignTo]) => `,${assignTo}="/",` ); } + // d={NODE_ENV:"production",PUBLIC_URL:"/abcde12345",WDS_SOCKET_HOST + // d={NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST + // -> + // PUBLIC_URL:`${window.kcContext.url.resourcesPath}/build"` fixedJsCode = fixedJsCode.replace( new RegExp( `NODE_ENV:"production",PUBLIC_URL:"${ diff --git a/test/bin/replacers.spec.ts b/test/bin/replacers.spec.ts index bb7d846a..a006c438 100644 --- a/test/bin/replacers.spec.ts +++ b/test/bin/replacers.spec.ts @@ -321,6 +321,46 @@ describe("js replacer - webpack", () => { expect(isSameCode(fixedJsCode, fixedJsCodeExpected)).toBe(true); }); + + it("replaceImportsInJsCode_webpack - 2", () => { + const before = `"__esModule",{value:!0})}`; + const after = `function(){if("undefined"`; + + const jsCodeUntransformed = `${before},n.p="/foo-bar/",${after}`; + + const { fixedJsCode } = replaceImportsInJsCode_webpack({ + "jsCode": jsCodeUntransformed, + "buildOptions": { + "reactAppBuildDirPath": "/Users/someone/github/keycloakify-starter/build", + "assetsDirPath": "/Users/someone/github/keycloakify-starter/dist/build/static", + "urlPathname": "/foo-bar/" + } + }); + + const fixedJsCodeExpected = `${before},n.p="/",${after}`; + + expect(isSameCode(fixedJsCode, fixedJsCodeExpected)).toBe(true); + }); + + it("replaceImportsInJsCode_webpack - 3", () => { + const before = `"__esModule",{value:!0})}`; + const after = `function(){if("undefined"`; + + const jsCodeUntransformed = `${before},n.p="/foo/bar/",${after}`; + + const { fixedJsCode } = replaceImportsInJsCode_webpack({ + "jsCode": jsCodeUntransformed, + "buildOptions": { + "reactAppBuildDirPath": "/Users/someone/github/keycloakify-starter/build", + "assetsDirPath": "/Users/someone/github/keycloakify-starter/dist/build/static", + "urlPathname": "/foo/bar/" + } + }); + + const fixedJsCodeExpected = `${before},n.p="/",${after}`; + + expect(isSameCode(fixedJsCode, fixedJsCodeExpected)).toBe(true); + }); }); describe("css replacer", () => {