@wavemaker/angular-codegen 12.0.0-next.142016 → 12.0.0-next.28533
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {angular-codegen → package}/angular-app/angular.json +92 -99
- {angular-codegen → package}/angular-app/build-scripts/build.js +1 -0
- package/angular-app/build-scripts/index-html-transform-ng-serve.ts +20 -0
- {angular-codegen → package}/angular-app/build-scripts/post-build.js +17 -111
- package/angular-app/dependency-report.html +124 -0
- package/angular-app/generate-dependency-report.js +240 -0
- package/angular-app/npm-shrinkwrap.json +24046 -0
- {angular-codegen → package}/angular-app/package-lock.json +14731 -14457
- package/angular-app/package.json +129 -0
- package/angular-app/proxy.conf.js +14 -0
- package/angular-app/src/app/lazy-load-scripts.resolve.ts +13 -0
- package/angular-app/src/assets/styles/css/font/summernote.eot +0 -0
- package/angular-app/src/assets/styles/css/font/summernote.ttf +0 -0
- package/angular-app/src/assets/styles/css/font/summernote.woff +0 -0
- package/angular-app/src/assets/styles/css/font/summernote.woff2 +0 -0
- package/angular-app/src/assets/styles/css/wm-style.css +1 -0
- {angular-codegen → package}/angular-app/src/framework/services/component-ref-provider.service.ts +4 -0
- package/angular-app/src/framework/services/customwidget-config-provider.service.ts +13 -0
- package/angular-app/src/framework/services/lazy-component-ref-provider.service.ts +56 -0
- package/angular-app/src/framework/util/page-util.ts +7 -0
- {angular-codegen → package}/angular-app/src/index.html +1 -1
- package/angular-app/src/main.ts +70 -0
- {angular-codegen → package}/angular-app/src/setup-jest.js +10 -10
- {angular-codegen → package}/angular-app/src/tsconfig.app.json +5 -2
- {angular-codegen → package}/angular-app/tsconfig.json +9 -36
- {angular-codegen → package}/angular-app/tsconfig.web-app.json +2 -23
- package/angular-app/wm-custom-webpack.config.js +51 -0
- package/build-angular-app.js +522 -0
- package/dependencies/app.component.html +40 -0
- package/dependencies/custom-widgets-bundle.cjs.js +421 -0
- {angular-codegen → package}/dependencies/expression-parser.cjs.js +20415 -40794
- {angular-codegen → package}/dependencies/pipe-provider.cjs.js +98263 -96194
- {angular-codegen → package}/dependencies/transpilation-web.cjs.js +47606 -45796
- package/download-packages.js +197 -0
- {angular-codegen → package}/generate-angular-app.js +3 -1
- package/npm-shrinkwrap.json +7959 -0
- package/package-lock.json +7959 -0
- {angular-codegen → package}/package.json +9 -3
- package/src/codegen-args-cli.js +1 -0
- package/src/codegen-cli.js +1 -0
- package/src/codegen.js +1 -0
- package/src/copy-utils.js +1 -0
- package/src/eslintrc_config.js +1 -0
- package/src/gen-app-codegen-module.js +1 -0
- package/src/gen-app-override-css.js +1 -0
- package/src/gen-app-routes.js +1 -0
- package/src/gen-app-skeleton.js +1 -0
- package/src/gen-components.js +1 -0
- package/src/gen-customwidget-config.js +1 -0
- package/src/gen-index-html.js +1 -0
- package/src/gen-layouts.js +1 -0
- package/src/gen-lazy-module-routes.js +1 -0
- package/src/handlebar-helpers.js +1 -0
- package/src/pages-util.js +1 -0
- package/src/project-meta.js +1 -0
- package/src/update-angular-json.js +1 -0
- package/src/wm-utils.js +1 -0
- package/templates/app-routes.ts.hbs +14 -0
- package/templates/app.config.ts.hbs +211 -0
- {angular-codegen → package}/templates/app.module.ts.hbs +5 -3
- package/templates/component.config.ts.hbs +1 -0
- package/templates/customwidget/customwidget-config.ts.hbs +6 -0
- package/templates/customwidget/customwidget.component.script.js.hbs +3 -0
- angular-codegen/templates/page/page.component.ts.hbs → package/templates/customwidget/customwidget.component.ts.hbs +11 -14
- {angular-codegen → package}/templates/layout/layout.component.ts.hbs +27 -4
- package/templates/page/page.component.ts.hbs +74 -0
- {angular-codegen → package}/templates/page/page.module.ts.hbs +12 -1
- {angular-codegen → package}/templates/partial/partial.component.ts.hbs +19 -4
- {angular-codegen → package}/templates/prefab/prefab.component.ts.hbs +22 -5
- angular-codegen/angular-app/package.json +0 -136
- angular-codegen/angular-app/src/app/app-codegen.module.ts +0 -11
- angular-codegen/angular-app/src/app/lazy-load-scripts.resolve.ts +0 -20
- angular-codegen/angular-app/src/assets/styles/css/font/summernote.eot +0 -0
- angular-codegen/angular-app/src/assets/styles/css/font/summernote.ttf +0 -0
- angular-codegen/angular-app/src/assets/styles/css/font/summernote.woff +0 -0
- angular-codegen/angular-app/src/assets/styles/css/wm-style.css +0 -1
- angular-codegen/angular-app/src/framework/angular1.polyfills.ts +0 -36
- angular-codegen/angular-app/src/framework/services/lazy-component-ref-provider.service.ts +0 -64
- angular-codegen/angular-app/src/framework/util/page-util.ts +0 -5
- angular-codegen/angular-app/src/main.ts +0 -30
- angular-codegen/angular-app/wm-custom-webpack.config.js +0 -94
- angular-codegen/build-angular-app.js +0 -79
- angular-codegen/dependencies/app.component.html +0 -28
- angular-codegen/dependencies/transpilation-mobile.cjs.js +0 -93296
- angular-codegen/download-packages.js +0 -69
- angular-codegen/package-lock.json +0 -6059
- angular-codegen/src/codegen-args-cli.js +0 -1
- angular-codegen/src/codegen-cli.js +0 -1
- angular-codegen/src/codegen.js +0 -1
- angular-codegen/src/gen-app-codegen-module.js +0 -1
- angular-codegen/src/gen-app-routes.js +0 -1
- angular-codegen/src/gen-app-skeleton.js +0 -1
- angular-codegen/src/gen-components.js +0 -1
- angular-codegen/src/gen-index-html.js +0 -1
- angular-codegen/src/gen-layouts.js +0 -1
- angular-codegen/src/gen-lazy-module-routes.js +0 -1
- angular-codegen/src/handlebar-helpers.js +0 -1
- angular-codegen/src/pages-util.js +0 -1
- angular-codegen/src/project-meta.js +0 -1
- angular-codegen/src/update-angular-json.js +0 -1
- angular-codegen/src/wm-utils.js +0 -1
- angular-codegen/templates/app-routes.ts.hbs +0 -17
- {angular-codegen → package}/.npmrc +0 -0
- {angular-codegen → package}/angular-app/.npmrc +0 -0
- {angular-codegen → package}/angular-app/build-scripts/index-html-transform.js +0 -0
- {angular-codegen → package}/angular-app/build-scripts/optimize-css.gulpfile.js +0 -0
- {angular-codegen → package}/angular-app/build-scripts/update-version.js +0 -0
- {angular-codegen → package}/angular-app/src/.browserslistrc +0 -0
- {angular-codegen → package}/angular-app/src/app/app.component.css +0 -0
- {angular-codegen → package}/angular-app/src/app/app.component.script.js +0 -0
- {angular-codegen → package}/angular-app/src/app/app.component.variables.ts +0 -0
- {angular-codegen → package}/angular-app/src/app/app.routes.ts +0 -0
- {angular-codegen → package}/angular-app/src/app/prefabs/prefab-config.js +0 -0
- {angular-codegen → package}/angular-app/src/app/wm-project-properties.ts +0 -0
- {angular-codegen → package}/angular-app/src/assets/.gitkeep +0 -0
- {angular-codegen → package}/angular-app/src/assets/print.css +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/css/bootstrap.css.map +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-icons_222222_256x240.png +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-icons_2e83ff_256x240.png +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-icons_444444_256x240.png +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-icons_454545_256x240.png +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-icons_555555_256x240.png +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-icons_777620_256x240.png +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-icons_777777_256x240.png +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-icons_888888_256x240.png +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-icons_cc0000_256x240.png +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-icons_cd0a0a_256x240.png +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-icons_ffffff_256x240.png +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/css/wm-responsive.css +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/fonts/FontAwesome.otf +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/fonts/fontawesome-webfont.eot +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/fonts/fontawesome-webfont.svg +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/fonts/fontawesome-webfont.ttf +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/fonts/fontawesome-webfont.woff +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/fonts/fontawesome-webfont.woff2 +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/fonts/glyphicons-halflings-regular.eot +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/fonts/glyphicons-halflings-regular.svg +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/fonts/glyphicons-halflings-regular.ttf +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/fonts/glyphicons-halflings-regular.woff +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/fonts/glyphicons-halflings-regular.woff2 +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/fonts/wavicon.eot +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/fonts/wavicon.ttf +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/fonts/wavicon.woff +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/fonts/wm-streamline-light-icon.eot +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/fonts/wm-streamline-light-icon.ttf +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/fonts/wm-streamline-light-icon.woff +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/fonts/wm-streamline-regular-icon.eot +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/fonts/wm-streamline-regular-icon.ttf +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/fonts/wm-streamline-regular-icon.woff +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/images/live-sync-icon.png +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/images/live-sync-touch-icon.png +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/images/loader.gif +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/images/spinner-small.gif +0 -0
- {angular-codegen → package}/angular-app/src/assets/styles/images/ui-icons.png +0 -0
- {angular-codegen → package}/angular-app/src/environments/environment.dev.ts +0 -0
- {angular-codegen → package}/angular-app/src/environments/environment.prod.ts +0 -0
- {angular-codegen → package}/angular-app/src/environments/environment.ts +0 -0
- {angular-codegen → package}/angular-app/src/framework/services/app-extension.service.ts +0 -0
- {angular-codegen → package}/angular-app/src/framework/services/app-js-provider.service.ts +0 -0
- {angular-codegen → package}/angular-app/src/framework/services/app-variables-provider.service.ts +0 -0
- {angular-codegen → package}/angular-app/src/framework/services/prefab-config-provider.service.ts +0 -0
- {angular-codegen → package}/angular-app/src/framework/util/lazy-module-routes.ts +0 -0
- {angular-codegen → package}/angular-app/src/polyfills.ts +0 -0
- {angular-codegen → package}/angular-app/src/styles.css +0 -0
- {angular-codegen → package}/angular-app/src/tslint.json +0 -0
- {angular-codegen → package}/build-util.js +0 -0
- {angular-codegen → package}/pwa-assets/icons/icon-128x128.png +0 -0
- {angular-codegen → package}/pwa-assets/icons/icon-144x144.png +0 -0
- {angular-codegen → package}/pwa-assets/icons/icon-152x152.png +0 -0
- {angular-codegen → package}/pwa-assets/icons/icon-192x192.png +0 -0
- {angular-codegen → package}/pwa-assets/icons/icon-384x384.png +0 -0
- {angular-codegen → package}/pwa-assets/icons/icon-512x512.png +0 -0
- {angular-codegen → package}/pwa-assets/icons/icon-72x72.png +0 -0
- {angular-codegen → package}/pwa-assets/icons/icon-96x96.png +0 -0
- {angular-codegen → package}/pwa-assets/manifest.json +0 -0
- {angular-codegen → package}/pwa-assets/ngsw-config.json +0 -0
- {angular-codegen → package}/pwa-assets/wmsw-worker.js +0 -0
- {angular-codegen → package}/src/expr-parser-utils.js +0 -0
- {angular-codegen → package}/src/gen-app-js.js +0 -0
- {angular-codegen → package}/src/gen-app-prefabs-module.js +0 -0
- {angular-codegen → package}/src/gen-app-variables.js +0 -0
- {angular-codegen → package}/src/gen-prefabs.js +0 -0
- {angular-codegen → package}/src/gen-pwa-files.js +0 -0
- {angular-codegen → package}/src/gen-tsconfig.js +0 -0
- {angular-codegen → package}/src/gen-wm-project-properties.js +0 -0
- {angular-codegen → package}/templates/app-codegen.module.ts.hbs +0 -0
- {angular-codegen → package}/templates/app-prefabs.module.ts.hbs +0 -0
- {angular-codegen → package}/templates/app.component.script.js.hbs +0 -0
- {angular-codegen → package}/templates/component.expressions.ts.hbs +0 -0
- {angular-codegen → package}/templates/component.variables.ts.hbs +0 -0
- {angular-codegen → package}/templates/expr-vs-fn.hbs +0 -0
- {angular-codegen → package}/templates/layout/layout.module.ts.hbs +0 -0
- {angular-codegen → package}/templates/lazy-module-routes.ts.hbs +0 -0
- {angular-codegen → package}/templates/page/page.component.script.js.hbs +0 -0
- {angular-codegen → package}/templates/partial/partial.component.script.js.hbs +0 -0
- {angular-codegen → package}/templates/partial/partial.module.ts.hbs +0 -0
- {angular-codegen → package}/templates/prefab/prefab-config.ts.hbs +0 -0
- {angular-codegen → package}/templates/prefab/prefab.component.script.js.hbs +0 -0
- {angular-codegen → package}/templates/prefab/prefab.module.ts.hbs +0 -0
- {angular-codegen → package}/templates/wm-project-properties.ts.hbs +0 -0
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const { executeSyncCmd } = require('./build-util');
|
|
3
|
+
const os = require('os');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const rimraf = require('rimraf');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* To check the npm package installation successs or not
|
|
10
|
+
* @param {*} path File path where installation success message was written
|
|
11
|
+
* @param {*} msg Success messsage to confirm that package was installed
|
|
12
|
+
* @returns boolean true/false
|
|
13
|
+
*/
|
|
14
|
+
const isNPMPackageExist = (path, msg) => {
|
|
15
|
+
if (fs.existsSync(path)) {
|
|
16
|
+
const successMsg = fs.readFileSync(path, { encoding: 'utf8', flag: 'r' });
|
|
17
|
+
if (successMsg == msg) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
} else {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Check node modules package were installed or not
|
|
27
|
+
* Create dir for packages with the version name
|
|
28
|
+
* Copy the generated angular app package.json to PATH_NPM_PACKAGE folder
|
|
29
|
+
* Run npm install
|
|
30
|
+
* Write success file to be make sure it was installed successfully.
|
|
31
|
+
*/
|
|
32
|
+
const downloadNPMPackage = async (packageInfo) => {
|
|
33
|
+
const HOME_DIR = os.homedir();
|
|
34
|
+
const PATH_NPM_PACKAGE = (packageInfo.baseDir || HOME_DIR + '/.wm/node_modules/') + packageInfo.name + '/' + packageInfo.version;
|
|
35
|
+
const PATH_NPM_PACKAGE_SUCCESS = PATH_NPM_PACKAGE + '/.SUCCESS', LOCK_FILE = path.join(PATH_NPM_PACKAGE, ".LOCK");
|
|
36
|
+
let isError = false;
|
|
37
|
+
try {
|
|
38
|
+
if (!packageInfo.baseDir) { // going to install in the .wm folder if baseDir is not defined(optimizeUIBuild true)
|
|
39
|
+
// To check node modules.
|
|
40
|
+
if (!isNPMPackageExist(PATH_NPM_PACKAGE_SUCCESS, packageInfo.successMsg)) {
|
|
41
|
+
fs.mkdirSync(PATH_NPM_PACKAGE, { recursive: true });
|
|
42
|
+
// Check if another process is already installing
|
|
43
|
+
if (fs.existsSync(LOCK_FILE)) {
|
|
44
|
+
console.log(`Waiting for another build to complete npm install... for package ${packageInfo.name}`);
|
|
45
|
+
await waitForLock(LOCK_FILE, 20 * 60 * 1000); // Wait for 20 minutes (timeout in milliseconds)
|
|
46
|
+
// After waiting, check if installation completed
|
|
47
|
+
if (!isNPMPackageExist(PATH_NPM_PACKAGE_SUCCESS, packageInfo.successMsg)) {
|
|
48
|
+
console.log(`[LOCK] Previous install for ${packageInfo.name} was incomplete. Re-installing...`);
|
|
49
|
+
createPidLock(LOCK_FILE);
|
|
50
|
+
await processPackage(packageInfo, PATH_NPM_PACKAGE);
|
|
51
|
+
fs.writeFileSync(PATH_NPM_PACKAGE_SUCCESS, packageInfo.successMsg);
|
|
52
|
+
}
|
|
53
|
+
} else {
|
|
54
|
+
// Create PID lock and Acquire the lock
|
|
55
|
+
createPidLock(LOCK_FILE);
|
|
56
|
+
|
|
57
|
+
await processPackage(packageInfo, PATH_NPM_PACKAGE);
|
|
58
|
+
|
|
59
|
+
//only create a .SUCCESS file when there is no error
|
|
60
|
+
if(!isError) {
|
|
61
|
+
isError = false;
|
|
62
|
+
fs.writeFileSync(PATH_NPM_PACKAGE_SUCCESS, packageInfo.successMsg);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
} else {
|
|
66
|
+
console.log(packageInfo.infoMsg + ` Node packages already installed! for package ${packageInfo.name}`);
|
|
67
|
+
}
|
|
68
|
+
} else {
|
|
69
|
+
await processPackage(packageInfo, PATH_NPM_PACKAGE);
|
|
70
|
+
}
|
|
71
|
+
} catch (err) {
|
|
72
|
+
deleteFiles([PATH_NPM_PACKAGE_SUCCESS, LOCK_FILE])
|
|
73
|
+
console.log(`Something went wrong while installing - for package ${packageInfo.name}`, err);
|
|
74
|
+
process.exit(err.code || err.pid);
|
|
75
|
+
} finally {
|
|
76
|
+
//cleanup : in windows / optimizeUIBuild is false, we need to delete the temp downloaded package
|
|
77
|
+
if (!packageInfo.baseDir) {
|
|
78
|
+
deleteFiles([LOCK_FILE]);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return PATH_NPM_PACKAGE;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const processPackage = (packageInfo, PATH_NPM_PACKAGE) => {
|
|
85
|
+
let npmInstallCMD = 'npm install --legacy-peer-deps ';
|
|
86
|
+
if (packageInfo.packageJsonFile && fs.existsSync(packageInfo.packageJsonFile)) {
|
|
87
|
+
fs.copyFileSync(packageInfo.packageJsonFile, PATH_NPM_PACKAGE + '/package.json');
|
|
88
|
+
try {
|
|
89
|
+
//expecting this lock file to be present for exact versions to be downloaded from private registry
|
|
90
|
+
fs.copyFileSync(`${path.dirname(packageInfo.packageJsonFile)} + /package-lock.json`, `${PATH_NPM_PACKAGE} + /package-lock.json`);
|
|
91
|
+
} catch (err) {
|
|
92
|
+
if (err.code === 'ENOENT') {
|
|
93
|
+
console.error(`Info: package-lock.json file not found at ${path.dirname(packageInfo.packageJsonFile)}`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
} else {
|
|
97
|
+
npmInstallCMD = 'npm init -y && ' + npmInstallCMD;
|
|
98
|
+
npmInstallCMD += packageInfo.skipPackageVersion === true
|
|
99
|
+
? packageInfo.name
|
|
100
|
+
: (packageInfo.scope ? packageInfo.scope + '/' : '') + packageInfo.name + '@' + packageInfo.version;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
fs.mkdirSync(PATH_NPM_PACKAGE, { recursive: true });
|
|
104
|
+
executeSyncCmd('cd ' + PATH_NPM_PACKAGE + ' && ' + npmInstallCMD, (errMsg) => {
|
|
105
|
+
console.log(packageInfo.infoMsg + ' Something wrong with npm installation ', errMsg);
|
|
106
|
+
throw Error(errMsg);
|
|
107
|
+
}, packageInfo.infoMsg);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
*
|
|
112
|
+
*/
|
|
113
|
+
const deleteFiles = (files) => {
|
|
114
|
+
files.forEach(file => {
|
|
115
|
+
try {
|
|
116
|
+
rimraf.sync(file);
|
|
117
|
+
console.log(`Successfully deleted file - ${file}`);
|
|
118
|
+
} catch (err) {
|
|
119
|
+
console.error(`Error while deleting file ${file}`, err);
|
|
120
|
+
throw new Error(`Error while deleting file: ${file}, Error: ${err}`);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Check if a process with given PID is still running.
|
|
127
|
+
* @param {number} pid Process ID to verify
|
|
128
|
+
* @returns {boolean} True if process is alive, false otherwise
|
|
129
|
+
*/
|
|
130
|
+
const isProcessRunning = (pid) => {
|
|
131
|
+
try {
|
|
132
|
+
process.kill(pid, 0); // check only, does NOT kill
|
|
133
|
+
return true;
|
|
134
|
+
} catch {
|
|
135
|
+
return false; // PID not running
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Create a lock file containing the current process PID.
|
|
142
|
+
* @param {string} lockFile Full path to the .LOCK file
|
|
143
|
+
*/
|
|
144
|
+
const createPidLock = (lockFile) => {
|
|
145
|
+
fs.mkdirSync(path.dirname(lockFile), { recursive: true });
|
|
146
|
+
fs.writeFileSync(lockFile, String(process.pid));
|
|
147
|
+
console.log(`[LOCK] Created lock for PID ${process.pid}`);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
*
|
|
152
|
+
* @param lockFile
|
|
153
|
+
* @param timeout
|
|
154
|
+
* @returns {Promise<void>}
|
|
155
|
+
*/
|
|
156
|
+
const waitForLock = async (lockFile, timeout) => {
|
|
157
|
+
timeout = timeout || 20 * 60 * 1000 // Wait for 20 minutes (timeout in milliseconds)
|
|
158
|
+
// Helper function to wait for the lock to be released with a timeout
|
|
159
|
+
const startTime = Date.now();
|
|
160
|
+
while (true) {
|
|
161
|
+
if (!fs.existsSync(lockFile)) return; // lock free
|
|
162
|
+
let pid = null;
|
|
163
|
+
try {
|
|
164
|
+
pid = Number(fs.readFileSync(lockFile, "utf8"));
|
|
165
|
+
} catch {
|
|
166
|
+
// corrupt lock → remove
|
|
167
|
+
fs.unlinkSync(lockFile);
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
// stale lock → PID dead
|
|
171
|
+
if (!isProcessRunning(pid)) {
|
|
172
|
+
console.log(`[LOCK] Removing stale lock from PID ${pid}`);
|
|
173
|
+
fs.unlinkSync(lockFile);
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
// still locked → wait
|
|
177
|
+
if (Date.now() - startTime > timeout) {
|
|
178
|
+
console.error(`[LOCK] Timeout!! - waiting for the lock for PID ${pid} to be released. Exiting...`);
|
|
179
|
+
process.exit(1); // Terminate the process with an error code
|
|
180
|
+
}
|
|
181
|
+
await sleep(1000); // Wait for 1 second before checking again
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
*
|
|
187
|
+
* @param ms
|
|
188
|
+
* @returns {Promise<unknown>}
|
|
189
|
+
*/
|
|
190
|
+
const sleep = (ms) => {
|
|
191
|
+
// Helper function to sleep for a given time
|
|
192
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
module.exports = {
|
|
196
|
+
downloadNPMPackage
|
|
197
|
+
}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
const {args, executeSyncCmd, MSG_CODEGEN_LOG, getArgs} = require('./build-util');
|
|
15
|
+
const { generateRandomHash } = require('./src/wm-utils');
|
|
15
16
|
|
|
16
17
|
/**
|
|
17
18
|
* From codegen-cli generate angular app into the target directory
|
|
@@ -19,7 +20,8 @@ const {args, executeSyncCmd, MSG_CODEGEN_LOG, getArgs} = require('./build-util')
|
|
|
19
20
|
const generateAngularApp = () => {
|
|
20
21
|
console.log(MSG_CODEGEN_LOG + 'Generating the angular App...');
|
|
21
22
|
let buildArgs = getArgs(args.ngBuildParams.split(' '));
|
|
22
|
-
|
|
23
|
+
global.randomHash = global.randomHash ? global.randomHash : generateRandomHash();
|
|
24
|
+
let deployUrl = `ng-bundle/${global.randomHash}/`;
|
|
23
25
|
if(buildArgs && buildArgs["deploy-url"]){
|
|
24
26
|
deployUrl = buildArgs["deploy-url"];
|
|
25
27
|
}
|