@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.
Files changed (208) hide show
  1. {angular-codegen → package}/angular-app/angular.json +92 -99
  2. {angular-codegen → package}/angular-app/build-scripts/build.js +1 -0
  3. package/angular-app/build-scripts/index-html-transform-ng-serve.ts +20 -0
  4. {angular-codegen → package}/angular-app/build-scripts/post-build.js +17 -111
  5. package/angular-app/dependency-report.html +124 -0
  6. package/angular-app/generate-dependency-report.js +240 -0
  7. package/angular-app/npm-shrinkwrap.json +24046 -0
  8. {angular-codegen → package}/angular-app/package-lock.json +14731 -14457
  9. package/angular-app/package.json +129 -0
  10. package/angular-app/proxy.conf.js +14 -0
  11. package/angular-app/src/app/lazy-load-scripts.resolve.ts +13 -0
  12. package/angular-app/src/assets/styles/css/font/summernote.eot +0 -0
  13. package/angular-app/src/assets/styles/css/font/summernote.ttf +0 -0
  14. package/angular-app/src/assets/styles/css/font/summernote.woff +0 -0
  15. package/angular-app/src/assets/styles/css/font/summernote.woff2 +0 -0
  16. package/angular-app/src/assets/styles/css/wm-style.css +1 -0
  17. {angular-codegen → package}/angular-app/src/framework/services/component-ref-provider.service.ts +4 -0
  18. package/angular-app/src/framework/services/customwidget-config-provider.service.ts +13 -0
  19. package/angular-app/src/framework/services/lazy-component-ref-provider.service.ts +56 -0
  20. package/angular-app/src/framework/util/page-util.ts +7 -0
  21. {angular-codegen → package}/angular-app/src/index.html +1 -1
  22. package/angular-app/src/main.ts +70 -0
  23. {angular-codegen → package}/angular-app/src/setup-jest.js +10 -10
  24. {angular-codegen → package}/angular-app/src/tsconfig.app.json +5 -2
  25. {angular-codegen → package}/angular-app/tsconfig.json +9 -36
  26. {angular-codegen → package}/angular-app/tsconfig.web-app.json +2 -23
  27. package/angular-app/wm-custom-webpack.config.js +51 -0
  28. package/build-angular-app.js +522 -0
  29. package/dependencies/app.component.html +40 -0
  30. package/dependencies/custom-widgets-bundle.cjs.js +421 -0
  31. {angular-codegen → package}/dependencies/expression-parser.cjs.js +20415 -40794
  32. {angular-codegen → package}/dependencies/pipe-provider.cjs.js +98263 -96194
  33. {angular-codegen → package}/dependencies/transpilation-web.cjs.js +47606 -45796
  34. package/download-packages.js +197 -0
  35. {angular-codegen → package}/generate-angular-app.js +3 -1
  36. package/npm-shrinkwrap.json +7959 -0
  37. package/package-lock.json +7959 -0
  38. {angular-codegen → package}/package.json +9 -3
  39. package/src/codegen-args-cli.js +1 -0
  40. package/src/codegen-cli.js +1 -0
  41. package/src/codegen.js +1 -0
  42. package/src/copy-utils.js +1 -0
  43. package/src/eslintrc_config.js +1 -0
  44. package/src/gen-app-codegen-module.js +1 -0
  45. package/src/gen-app-override-css.js +1 -0
  46. package/src/gen-app-routes.js +1 -0
  47. package/src/gen-app-skeleton.js +1 -0
  48. package/src/gen-components.js +1 -0
  49. package/src/gen-customwidget-config.js +1 -0
  50. package/src/gen-index-html.js +1 -0
  51. package/src/gen-layouts.js +1 -0
  52. package/src/gen-lazy-module-routes.js +1 -0
  53. package/src/handlebar-helpers.js +1 -0
  54. package/src/pages-util.js +1 -0
  55. package/src/project-meta.js +1 -0
  56. package/src/update-angular-json.js +1 -0
  57. package/src/wm-utils.js +1 -0
  58. package/templates/app-routes.ts.hbs +14 -0
  59. package/templates/app.config.ts.hbs +211 -0
  60. {angular-codegen → package}/templates/app.module.ts.hbs +5 -3
  61. package/templates/component.config.ts.hbs +1 -0
  62. package/templates/customwidget/customwidget-config.ts.hbs +6 -0
  63. package/templates/customwidget/customwidget.component.script.js.hbs +3 -0
  64. angular-codegen/templates/page/page.component.ts.hbs → package/templates/customwidget/customwidget.component.ts.hbs +11 -14
  65. {angular-codegen → package}/templates/layout/layout.component.ts.hbs +27 -4
  66. package/templates/page/page.component.ts.hbs +74 -0
  67. {angular-codegen → package}/templates/page/page.module.ts.hbs +12 -1
  68. {angular-codegen → package}/templates/partial/partial.component.ts.hbs +19 -4
  69. {angular-codegen → package}/templates/prefab/prefab.component.ts.hbs +22 -5
  70. angular-codegen/angular-app/package.json +0 -136
  71. angular-codegen/angular-app/src/app/app-codegen.module.ts +0 -11
  72. angular-codegen/angular-app/src/app/lazy-load-scripts.resolve.ts +0 -20
  73. angular-codegen/angular-app/src/assets/styles/css/font/summernote.eot +0 -0
  74. angular-codegen/angular-app/src/assets/styles/css/font/summernote.ttf +0 -0
  75. angular-codegen/angular-app/src/assets/styles/css/font/summernote.woff +0 -0
  76. angular-codegen/angular-app/src/assets/styles/css/wm-style.css +0 -1
  77. angular-codegen/angular-app/src/framework/angular1.polyfills.ts +0 -36
  78. angular-codegen/angular-app/src/framework/services/lazy-component-ref-provider.service.ts +0 -64
  79. angular-codegen/angular-app/src/framework/util/page-util.ts +0 -5
  80. angular-codegen/angular-app/src/main.ts +0 -30
  81. angular-codegen/angular-app/wm-custom-webpack.config.js +0 -94
  82. angular-codegen/build-angular-app.js +0 -79
  83. angular-codegen/dependencies/app.component.html +0 -28
  84. angular-codegen/dependencies/transpilation-mobile.cjs.js +0 -93296
  85. angular-codegen/download-packages.js +0 -69
  86. angular-codegen/package-lock.json +0 -6059
  87. angular-codegen/src/codegen-args-cli.js +0 -1
  88. angular-codegen/src/codegen-cli.js +0 -1
  89. angular-codegen/src/codegen.js +0 -1
  90. angular-codegen/src/gen-app-codegen-module.js +0 -1
  91. angular-codegen/src/gen-app-routes.js +0 -1
  92. angular-codegen/src/gen-app-skeleton.js +0 -1
  93. angular-codegen/src/gen-components.js +0 -1
  94. angular-codegen/src/gen-index-html.js +0 -1
  95. angular-codegen/src/gen-layouts.js +0 -1
  96. angular-codegen/src/gen-lazy-module-routes.js +0 -1
  97. angular-codegen/src/handlebar-helpers.js +0 -1
  98. angular-codegen/src/pages-util.js +0 -1
  99. angular-codegen/src/project-meta.js +0 -1
  100. angular-codegen/src/update-angular-json.js +0 -1
  101. angular-codegen/src/wm-utils.js +0 -1
  102. angular-codegen/templates/app-routes.ts.hbs +0 -17
  103. {angular-codegen → package}/.npmrc +0 -0
  104. {angular-codegen → package}/angular-app/.npmrc +0 -0
  105. {angular-codegen → package}/angular-app/build-scripts/index-html-transform.js +0 -0
  106. {angular-codegen → package}/angular-app/build-scripts/optimize-css.gulpfile.js +0 -0
  107. {angular-codegen → package}/angular-app/build-scripts/update-version.js +0 -0
  108. {angular-codegen → package}/angular-app/src/.browserslistrc +0 -0
  109. {angular-codegen → package}/angular-app/src/app/app.component.css +0 -0
  110. {angular-codegen → package}/angular-app/src/app/app.component.script.js +0 -0
  111. {angular-codegen → package}/angular-app/src/app/app.component.variables.ts +0 -0
  112. {angular-codegen → package}/angular-app/src/app/app.routes.ts +0 -0
  113. {angular-codegen → package}/angular-app/src/app/prefabs/prefab-config.js +0 -0
  114. {angular-codegen → package}/angular-app/src/app/wm-project-properties.ts +0 -0
  115. {angular-codegen → package}/angular-app/src/assets/.gitkeep +0 -0
  116. {angular-codegen → package}/angular-app/src/assets/print.css +0 -0
  117. {angular-codegen → package}/angular-app/src/assets/styles/css/bootstrap.css.map +0 -0
  118. {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  119. {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  120. {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  121. {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  122. {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  123. {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  124. {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  125. {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  126. {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-icons_222222_256x240.png +0 -0
  127. {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-icons_2e83ff_256x240.png +0 -0
  128. {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-icons_444444_256x240.png +0 -0
  129. {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-icons_454545_256x240.png +0 -0
  130. {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-icons_555555_256x240.png +0 -0
  131. {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-icons_777620_256x240.png +0 -0
  132. {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-icons_777777_256x240.png +0 -0
  133. {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-icons_888888_256x240.png +0 -0
  134. {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-icons_cc0000_256x240.png +0 -0
  135. {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-icons_cd0a0a_256x240.png +0 -0
  136. {angular-codegen → package}/angular-app/src/assets/styles/css/images/ui-icons_ffffff_256x240.png +0 -0
  137. {angular-codegen → package}/angular-app/src/assets/styles/css/wm-responsive.css +0 -0
  138. {angular-codegen → package}/angular-app/src/assets/styles/fonts/FontAwesome.otf +0 -0
  139. {angular-codegen → package}/angular-app/src/assets/styles/fonts/fontawesome-webfont.eot +0 -0
  140. {angular-codegen → package}/angular-app/src/assets/styles/fonts/fontawesome-webfont.svg +0 -0
  141. {angular-codegen → package}/angular-app/src/assets/styles/fonts/fontawesome-webfont.ttf +0 -0
  142. {angular-codegen → package}/angular-app/src/assets/styles/fonts/fontawesome-webfont.woff +0 -0
  143. {angular-codegen → package}/angular-app/src/assets/styles/fonts/fontawesome-webfont.woff2 +0 -0
  144. {angular-codegen → package}/angular-app/src/assets/styles/fonts/glyphicons-halflings-regular.eot +0 -0
  145. {angular-codegen → package}/angular-app/src/assets/styles/fonts/glyphicons-halflings-regular.svg +0 -0
  146. {angular-codegen → package}/angular-app/src/assets/styles/fonts/glyphicons-halflings-regular.ttf +0 -0
  147. {angular-codegen → package}/angular-app/src/assets/styles/fonts/glyphicons-halflings-regular.woff +0 -0
  148. {angular-codegen → package}/angular-app/src/assets/styles/fonts/glyphicons-halflings-regular.woff2 +0 -0
  149. {angular-codegen → package}/angular-app/src/assets/styles/fonts/wavicon.eot +0 -0
  150. {angular-codegen → package}/angular-app/src/assets/styles/fonts/wavicon.ttf +0 -0
  151. {angular-codegen → package}/angular-app/src/assets/styles/fonts/wavicon.woff +0 -0
  152. {angular-codegen → package}/angular-app/src/assets/styles/fonts/wm-streamline-light-icon.eot +0 -0
  153. {angular-codegen → package}/angular-app/src/assets/styles/fonts/wm-streamline-light-icon.ttf +0 -0
  154. {angular-codegen → package}/angular-app/src/assets/styles/fonts/wm-streamline-light-icon.woff +0 -0
  155. {angular-codegen → package}/angular-app/src/assets/styles/fonts/wm-streamline-regular-icon.eot +0 -0
  156. {angular-codegen → package}/angular-app/src/assets/styles/fonts/wm-streamline-regular-icon.ttf +0 -0
  157. {angular-codegen → package}/angular-app/src/assets/styles/fonts/wm-streamline-regular-icon.woff +0 -0
  158. {angular-codegen → package}/angular-app/src/assets/styles/images/live-sync-icon.png +0 -0
  159. {angular-codegen → package}/angular-app/src/assets/styles/images/live-sync-touch-icon.png +0 -0
  160. {angular-codegen → package}/angular-app/src/assets/styles/images/loader.gif +0 -0
  161. {angular-codegen → package}/angular-app/src/assets/styles/images/spinner-small.gif +0 -0
  162. {angular-codegen → package}/angular-app/src/assets/styles/images/ui-icons.png +0 -0
  163. {angular-codegen → package}/angular-app/src/environments/environment.dev.ts +0 -0
  164. {angular-codegen → package}/angular-app/src/environments/environment.prod.ts +0 -0
  165. {angular-codegen → package}/angular-app/src/environments/environment.ts +0 -0
  166. {angular-codegen → package}/angular-app/src/framework/services/app-extension.service.ts +0 -0
  167. {angular-codegen → package}/angular-app/src/framework/services/app-js-provider.service.ts +0 -0
  168. {angular-codegen → package}/angular-app/src/framework/services/app-variables-provider.service.ts +0 -0
  169. {angular-codegen → package}/angular-app/src/framework/services/prefab-config-provider.service.ts +0 -0
  170. {angular-codegen → package}/angular-app/src/framework/util/lazy-module-routes.ts +0 -0
  171. {angular-codegen → package}/angular-app/src/polyfills.ts +0 -0
  172. {angular-codegen → package}/angular-app/src/styles.css +0 -0
  173. {angular-codegen → package}/angular-app/src/tslint.json +0 -0
  174. {angular-codegen → package}/build-util.js +0 -0
  175. {angular-codegen → package}/pwa-assets/icons/icon-128x128.png +0 -0
  176. {angular-codegen → package}/pwa-assets/icons/icon-144x144.png +0 -0
  177. {angular-codegen → package}/pwa-assets/icons/icon-152x152.png +0 -0
  178. {angular-codegen → package}/pwa-assets/icons/icon-192x192.png +0 -0
  179. {angular-codegen → package}/pwa-assets/icons/icon-384x384.png +0 -0
  180. {angular-codegen → package}/pwa-assets/icons/icon-512x512.png +0 -0
  181. {angular-codegen → package}/pwa-assets/icons/icon-72x72.png +0 -0
  182. {angular-codegen → package}/pwa-assets/icons/icon-96x96.png +0 -0
  183. {angular-codegen → package}/pwa-assets/manifest.json +0 -0
  184. {angular-codegen → package}/pwa-assets/ngsw-config.json +0 -0
  185. {angular-codegen → package}/pwa-assets/wmsw-worker.js +0 -0
  186. {angular-codegen → package}/src/expr-parser-utils.js +0 -0
  187. {angular-codegen → package}/src/gen-app-js.js +0 -0
  188. {angular-codegen → package}/src/gen-app-prefabs-module.js +0 -0
  189. {angular-codegen → package}/src/gen-app-variables.js +0 -0
  190. {angular-codegen → package}/src/gen-prefabs.js +0 -0
  191. {angular-codegen → package}/src/gen-pwa-files.js +0 -0
  192. {angular-codegen → package}/src/gen-tsconfig.js +0 -0
  193. {angular-codegen → package}/src/gen-wm-project-properties.js +0 -0
  194. {angular-codegen → package}/templates/app-codegen.module.ts.hbs +0 -0
  195. {angular-codegen → package}/templates/app-prefabs.module.ts.hbs +0 -0
  196. {angular-codegen → package}/templates/app.component.script.js.hbs +0 -0
  197. {angular-codegen → package}/templates/component.expressions.ts.hbs +0 -0
  198. {angular-codegen → package}/templates/component.variables.ts.hbs +0 -0
  199. {angular-codegen → package}/templates/expr-vs-fn.hbs +0 -0
  200. {angular-codegen → package}/templates/layout/layout.module.ts.hbs +0 -0
  201. {angular-codegen → package}/templates/lazy-module-routes.ts.hbs +0 -0
  202. {angular-codegen → package}/templates/page/page.component.script.js.hbs +0 -0
  203. {angular-codegen → package}/templates/partial/partial.component.script.js.hbs +0 -0
  204. {angular-codegen → package}/templates/partial/partial.module.ts.hbs +0 -0
  205. {angular-codegen → package}/templates/prefab/prefab-config.ts.hbs +0 -0
  206. {angular-codegen → package}/templates/prefab/prefab.component.script.js.hbs +0 -0
  207. {angular-codegen → package}/templates/prefab/prefab.module.ts.hbs +0 -0
  208. {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
- let deployUrl = 'ng-bundle/';
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
  }