Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 17 additions & 3 deletions src/templates/imports.js.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,25 @@ 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;

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
__webpack_require__.p = __webpack_public_path__ = _WM_APP_PROJECT.cdnUrl = artifactsUrl || '/ng-bundle/';
};
}
}

export const AppProperties = {{{appProperties}}}
36 changes: 5 additions & 31 deletions src/templates/interceptor.js.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -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];
Expand Down
2 changes: 0 additions & 2 deletions src/templates/post-build-ng-element.js.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,6 @@ const appName = process.argv[2].split("=")[1];
const targetsToDelete = [
'bootstrap',
'docs',
'files',
'i18n',
'prefabs',
'servicedefs',
'favicon.png',
Expand Down
45 changes: 18 additions & 27 deletions src/update.project.js
Original file line number Diff line number Diff line change
Expand Up @@ -245,11 +245,6 @@ const updateAngularJson = async(sourceDir) => {
"input": "resources/docs/",
"output": "/docs/"
},
{
"glob": "**/*",
"input": "resources/i18n/",
"output": "/i18n/"
},
{
"glob": "**/*",
"input": "resources/",
Expand Down Expand Up @@ -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}`;
}

Expand Down Expand Up @@ -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'));
Expand Down Expand Up @@ -861,7 +853,6 @@ const generateDist = async(sourceDir) => {
if(isPrefabProject()){
await generatePrefabServiceDefs(sourceDir);
}
await copyResourceFiles(sourceDir);

await copyBootstrapScript(sourceDir);
await installDeps(sourceDir);
Expand Down