From 8e972967e156d95082a458a83395fed66ee666f6 Mon Sep 17 00:00:00 2001 From: likhith-9999 Date: Thu, 26 Jun 2025 10:07:03 +0530 Subject: [PATCH 1/2] data-api-url removed, files included --- src/templates/imports.js.hbs | 6 ++- src/templates/interceptor.js.hbs | 36 +++-------------- src/templates/post-build-ng-element.js.hbs | 2 - src/update.project.js | 45 +++++++++------------- 4 files changed, 27 insertions(+), 62 deletions(-) diff --git a/src/templates/imports.js.hbs b/src/templates/imports.js.hbs index ff320bc..309efd6 100644 --- a/src/templates/imports.js.hbs +++ b/src/templates/imports.js.hbs @@ -21,10 +21,12 @@ export function initMetadata(appName) { } _WM_APP_PROJECT.isPreview = false; //@ts-ignore - let baseAPIUrl = _WM_APP_PROJECT.apiUrl = WM_APPS_META[appName].apiUrl; + let baseAPIUrl = _WM_APP_PROJECT.apiUrl = WM_APPS_META[appName].apiUrl = AppProperties["app.apiUrl"]; //@ts-ignore let artifactsUrl = WM_APPS_META[appName].artifactsUrl; //@ts-ignore __webpack_require__.p = __webpack_public_path__ = _WM_APP_PROJECT.cdnUrl = artifactsUrl || '/ng-bundle/'; }; -} \ No newline at end of file +} + +export const AppProperties = {{{appProperties}}} \ No newline at end of file diff --git a/src/templates/interceptor.js.hbs b/src/templates/interceptor.js.hbs index 4362ed6..d8a7a26 100644 --- a/src/templates/interceptor.js.hbs +++ b/src/templates/interceptor.js.hbs @@ -15,42 +15,16 @@ export class WMInterceptor implements HttpInterceptor { let redirectToWm = this.WM_REDIRECTS.some((url)=>request.url.startsWith(url)); let isPathMappingReq = request.url.indexOf("path_mapping.json") !== -1; - let isi18nReq = request.url.indexOf("resources/i18n") !== -1; - let servicedefsReq = request.url.indexOf("servicedefs") !== -1; - let infoReq = request.url.indexOf("info") !== -1; - - //to be removed added in case of api having "info" in the url - let algoinfo = (request.url.indexOf("algobook") !== -1) ; - if(algoinfo){ - infoReq = false; + let isPrefabReq = request.url.indexOf("/prefabs/") !== -1; + const isAbsoluteUrl = (url) => { + return /^[a-z][a-z0-9+.-]*:\/\//i.test(url); } //@ts-ignore let apiUrl = WM_APPS_META["{{appName}}"].apiUrl, artifactsUrl = WM_APPS_META["{{appName}}"].artifactsUrl; if (!redirectToWm) { - if(isi18nReq || servicedefsReq || infoReq) { - let fileName = request.url.split("/").pop(); - artifactsUrl = (artifactsUrl.slice(-1) === "/" ? artifactsUrl.slice(0, -1) : artifactsUrl); - let reqUrl = artifactsUrl+'/'+fileName; - if(fileName.indexOf("servicedefs") !== -1) { - reqUrl = artifactsUrl+'/servicedefs/'+fileName - } - if(fileName === "info.json") { - reqUrl = artifactsUrl+'/security/'+fileName - } - if(isi18nReq) { - reqUrl = artifactsUrl+'/i18n/'+fileName - } - request = request.clone({ url: reqUrl }); - } else { - apiUrl = (apiUrl.slice(-1) === "/" ? apiUrl.slice(0, -1) : apiUrl) - const requestUrl = request.url; - try { - const parsedUrl = new URL(requestUrl); - request = request.clone({url:request.url}); - } catch(error) { - request = request.clone({url:apiUrl+'/'+request.url}); - } + if(!isAbsoluteUrl(request.url) && isPrefabReq) { + request = request.clone({url:apiUrl+request.url}); } } else { let fileUrl = request.url.split("/")[1]; diff --git a/src/templates/post-build-ng-element.js.hbs b/src/templates/post-build-ng-element.js.hbs index ca79996..1dfff12 100644 --- a/src/templates/post-build-ng-element.js.hbs +++ b/src/templates/post-build-ng-element.js.hbs @@ -35,8 +35,6 @@ const appName = process.argv[2].split("=")[1]; const targetsToDelete = [ 'bootstrap', 'docs', - 'files', - 'i18n', 'prefabs', 'servicedefs', 'favicon.png', diff --git a/src/update.project.js b/src/update.project.js index 859a5e9..d339b99 100644 --- a/src/update.project.js +++ b/src/update.project.js @@ -245,11 +245,6 @@ const updateAngularJson = async(sourceDir) => { "input": "resources/docs/", "output": "/docs/" }, - { - "glob": "**/*", - "input": "resources/i18n/", - "output": "/i18n/" - }, { "glob": "**/*", "input": "resources/", @@ -516,10 +511,27 @@ const getComponentImports = async(sourceDir) => { return componentImports; } +const extractAppProperties = async (sourceDir) => { + const fileContent = await fs.promises.readFile(`${getTargetDir(sourceDir)}/classes/app.properties`, 'utf-8'); + + const appProperties = {}; + fileContent.split('\n').forEach(line => { + line = line.trim(); + if (line && !line.startsWith('#')) { + const [key, ...rest] = line.split('='); + appProperties[key.trim()] = rest.join('=').trim(); + } + }); + + return appProperties; +} + const updateImports = async (sourceDir, data) => { const template = getHandlebarTemplate('imports'); let componentImports = await getComponentImports(sourceDir); - const contents = template({componentImports}); + const appPropertiesObj = await extractAppProperties(sourceDir); + const appProperties = JSON.stringify(appPropertiesObj, null, 4); + const contents = template({componentImports, appProperties}); return `${contents}\n${data}`; } @@ -708,26 +720,6 @@ const copyWebpackConfigFiles = async (sourceDir) => { await writeFile(`${targetDir}/wc-custom-webpack.config.js`, contents); }; -const copyResourceFiles = async (sourceDir) => { - let appName = await getAppName(sourceDir); - - let sourceI18nDir = geti18nDir(sourceDir); - const i18nFiles = fs.readdirSync(sourceI18nDir); - let destI18nDir = getResourceFilesDir(sourceDir); - - i18nFiles.forEach(i18nFile => { - const sourcePath = join(sourceI18nDir, i18nFile); - const destPath = join(destI18nDir, i18nFile); - - try { - fs.copyFileSync(sourcePath, destPath); - log(`Copied ${sourcePath} to ${destPath}`); - } catch (err) { - error(`Error copying file ${sourcePath}: ${err}`); - } - }); -}; - const getActiveTheme = async (sourceDir) => { let themesConfigPath = getThemesConfigJson(sourceDir); return JSON.parse(await readFile(`${themesConfigPath}`, 'utf8')); @@ -861,7 +853,6 @@ const generateDist = async(sourceDir) => { if(isPrefabProject()){ await generatePrefabServiceDefs(sourceDir); } - await copyResourceFiles(sourceDir); await copyBootstrapScript(sourceDir); await installDeps(sourceDir); From f7a2699f23dd65b808198bf6627260fd3a141f20 Mon Sep 17 00:00:00 2001 From: likhith-9999 Date: Thu, 26 Jun 2025 11:59:06 +0530 Subject: [PATCH 2/2] preferred data-api-url than app.properties.apiUrl --- src/templates/imports.js.hbs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/templates/imports.js.hbs b/src/templates/imports.js.hbs index 309efd6..ac45c93 100644 --- a/src/templates/imports.js.hbs +++ b/src/templates/imports.js.hbs @@ -20,8 +20,20 @@ export function initMetadata(appName) { //no prefabs present. just ignore the error } _WM_APP_PROJECT.isPreview = false; - //@ts-ignore - let baseAPIUrl = _WM_APP_PROJECT.apiUrl = WM_APPS_META[appName].apiUrl = AppProperties["app.apiUrl"]; + + const scriptSelector = `script[src*="bootstrap-${appName}.js"]`; + const currentScript = document.querySelector(scriptSelector); + let baseAPIUrl; + if (currentScript) { + if(currentScript.getAttribute('data-api-url')){ + //@ts-ignore + baseAPIUrl = _WM_APP_PROJECT.apiUrl = WM_APPS_META[appName].apiUrl; + } else { + //@ts-ignore + baseAPIUrl = _WM_APP_PROJECT.apiUrl = WM_APPS_META[appName].apiUrl = AppProperties["app.apiUrl"]; + } + } + //@ts-ignore let artifactsUrl = WM_APPS_META[appName].artifactsUrl; //@ts-ignore