cc-core-cli 1.0.0

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 (291) hide show
  1. package/README.md +107 -0
  2. package/admin/.env +10 -0
  3. package/admin/docker-compose.yml +9 -0
  4. package/bin/index.js +113 -0
  5. package/genpkg/core-lib/package.json +49 -0
  6. package/package.json +28 -0
  7. package/template/media/system/icons/company.svg +1 -0
  8. package/template/media/system/icons/deploy.svg +2 -0
  9. package/template/media/system/icons/entities.svg +55 -0
  10. package/template/media/system/icons/gateway.svg +1 -0
  11. package/template/media/system/icons/import-export.svg +41 -0
  12. package/template/media/system/icons/integration.svg +1 -0
  13. package/template/media/system/icons/master_data.svg +53 -0
  14. package/template/media/system/icons/monitoring.svg +114 -0
  15. package/template/media/system/icons/provider.svg +1 -0
  16. package/template/media/system/icons/report.svg +69 -0
  17. package/template/media/system/icons/schedule.svg +1 -0
  18. package/template/media/system/icons/security.svg +1 -0
  19. package/template/media/system/icons/storage.svg +1 -0
  20. package/template/media/system/icons/template.svg +44 -0
  21. package/template/media/system/icons/theme-layout.svg +1 -0
  22. package/template/newrelic.sh +15 -0
  23. package/template/package-lock.json +13944 -0
  24. package/template/package.json +165 -0
  25. package/template/src/app.controller.ts +33 -0
  26. package/template/src/app.module.ts +163 -0
  27. package/template/src/app.service.ts +21 -0
  28. package/template/src/app_cluster.service.ts +58 -0
  29. package/template/src/core/core.controller.ts +410 -0
  30. package/template/src/core/core.module.ts +86 -0
  31. package/template/src/core/core.service.ts +715 -0
  32. package/template/src/core/setting/_settings/about.layout.json +49 -0
  33. package/template/src/core/setting/_settings/cache.layout.json +309 -0
  34. package/template/src/core/setting/_settings/schedule.layout.json +132 -0
  35. package/template/src/core/setting/_settings/security.layout.json +1622 -0
  36. package/template/src/core/setting/_settings/storage.layout.json +520 -0
  37. package/template/src/core/setting/_settings/swagger.layout.json +128 -0
  38. package/template/src/core/setting/_settings/theme_layout.layout.json +1195 -0
  39. package/template/src/main.ts +299 -0
  40. package/template/src/modules/modules.ts +16 -0
  41. package/template/tsconfig.build.json +4 -0
  42. package/template/tsconfig.json +22 -0
  43. package/template/version.json +5 -0
  44. package/template_admin/.env +10 -0
  45. package/template_admin/README.md +29 -0
  46. package/template_admin/config/service-account.json +1 -0
  47. package/template_admin/index.js +63 -0
  48. package/template_admin/newrelic.js +78 -0
  49. package/template_admin/next.config.js +76 -0
  50. package/template_admin/package-lock.json +7379 -0
  51. package/template_admin/package.json +23 -0
  52. package/template_admin/pages/404.js +13 -0
  53. package/template_admin/pages/[...url_key].js +21 -0
  54. package/template_admin/pages/_app.js +10 -0
  55. package/template_admin/pages/_document.js +43 -0
  56. package/template_admin/pages/callback.js +13 -0
  57. package/template_admin/pages/cognito.js +13 -0
  58. package/template_admin/pages/confirmpassword.js +12 -0
  59. package/template_admin/pages/forgotpassword.js +12 -0
  60. package/template_admin/pages/index.js +13 -0
  61. package/template_admin/pages/login.js +13 -0
  62. package/template_admin/pages/maintenance.js +12 -0
  63. package/template_admin/pages/newrelic.js +78 -0
  64. package/template_admin/pages/password_expired.js +13 -0
  65. package/template_admin/pages/permission_denied.js +13 -0
  66. package/template_admin/pages/profile.js +14 -0
  67. package/template_admin/pages/setting/[...setting_url_key].js +13 -0
  68. package/template_admin/pages/setting/entities/[subList]/detail.js +14 -0
  69. package/template_admin/pages/setting/entities/[subList]/detail_compare.js +8 -0
  70. package/template_admin/pages/setting/entities/[subList]/index.js +7 -0
  71. package/template_admin/pages/setting/entities/detail/index.js +14 -0
  72. package/template_admin/pages/setting/entities/index.js +14 -0
  73. package/template_admin/pages/social.js +13 -0
  74. package/template_admin/pages/token_expired.js +12 -0
  75. package/template_admin/public/icon-192x192.png +0 -0
  76. package/template_admin/public/icon-256x256.png +0 -0
  77. package/template_admin/public/icon-384x384.png +0 -0
  78. package/template_admin/public/icon-512x512.png +0 -0
  79. package/template_admin/public/manifest.json +32 -0
  80. package/template_admin/public/static/images/aws-cognito.png +0 -0
  81. package/template_admin/public/static/images/bin_icon.svg +1 -0
  82. package/template_admin/public/static/images/color-picker.png +0 -0
  83. package/template_admin/public/static/images/csv_icon.svg +1 -0
  84. package/template_admin/public/static/images/default-file.png +0 -0
  85. package/template_admin/public/static/images/default-img.png +0 -0
  86. package/template_admin/public/static/images/default-map.png +0 -0
  87. package/template_admin/public/static/images/default-profile.png +0 -0
  88. package/template_admin/public/static/images/doc_icon.svg +1 -0
  89. package/template_admin/public/static/images/exe_icon.svg +1 -0
  90. package/template_admin/public/static/images/gif_icon.svg +1 -0
  91. package/template_admin/public/static/images/google.png +0 -0
  92. package/template_admin/public/static/images/id-connect.png +0 -0
  93. package/template_admin/public/static/images/iso_icon.svg +1 -0
  94. package/template_admin/public/static/images/json_icon.png +0 -0
  95. package/template_admin/public/static/images/lang/af-ZA.svg +41 -0
  96. package/template_admin/public/static/images/lang/ar-AE.svg +38 -0
  97. package/template_admin/public/static/images/lang/ar-BH.svg +36 -0
  98. package/template_admin/public/static/images/lang/ar-DZ.svg +40 -0
  99. package/template_admin/public/static/images/lang/ar-EG.svg +38 -0
  100. package/template_admin/public/static/images/lang/ar-IQ.svg +46 -0
  101. package/template_admin/public/static/images/lang/ar-JO.svg +39 -0
  102. package/template_admin/public/static/images/lang/ar-KW.svg +38 -0
  103. package/template_admin/public/static/images/lang/ar-LB.svg +40 -0
  104. package/template_admin/public/static/images/lang/ar-LY.svg +41 -0
  105. package/template_admin/public/static/images/lang/ar-MA.svg +36 -0
  106. package/template_admin/public/static/images/lang/ar-OM.svg +70 -0
  107. package/template_admin/public/static/images/lang/ar-QA.svg +36 -0
  108. package/template_admin/public/static/images/lang/ar-SA.svg +62 -0
  109. package/template_admin/public/static/images/lang/ar-TN.svg +40 -0
  110. package/template_admin/public/static/images/lang/ar-YE.svg +37 -0
  111. package/template_admin/public/static/images/lang/az-AZ.svg +41 -0
  112. package/template_admin/public/static/images/lang/be-BY.svg +38 -0
  113. package/template_admin/public/static/images/lang/bg-BG.svg +37 -0
  114. package/template_admin/public/static/images/lang/bs-BA.svg +48 -0
  115. package/template_admin/public/static/images/lang/ca-ES.svg +89 -0
  116. package/template_admin/public/static/images/lang/cs-CZ.svg +37 -0
  117. package/template_admin/public/static/images/lang/cy-GB.svg +43 -0
  118. package/template_admin/public/static/images/lang/da-DK.svg +36 -0
  119. package/template_admin/public/static/images/lang/de-AT.svg +39 -0
  120. package/template_admin/public/static/images/lang/de-CH.svg +36 -0
  121. package/template_admin/public/static/images/lang/de-DE.svg +37 -0
  122. package/template_admin/public/static/images/lang/de-LI.svg +45 -0
  123. package/template_admin/public/static/images/lang/de-LU.svg +37 -0
  124. package/template_admin/public/static/images/lang/dv-MV.svg +37 -0
  125. package/template_admin/public/static/images/lang/el-GR.svg +46 -0
  126. package/template_admin/public/static/images/lang/en-AU.svg +51 -0
  127. package/template_admin/public/static/images/lang/en-BZ.svg +196 -0
  128. package/template_admin/public/static/images/lang/en-CA.svg +43 -0
  129. package/template_admin/public/static/images/lang/en-GB.svg +43 -0
  130. package/template_admin/public/static/images/lang/en-IE.svg +37 -0
  131. package/template_admin/public/static/images/lang/en-JM.svg +40 -0
  132. package/template_admin/public/static/images/lang/en-NZ.svg +51 -0
  133. package/template_admin/public/static/images/lang/en-PH.svg +51 -0
  134. package/template_admin/public/static/images/lang/en-SG.svg +44 -0
  135. package/template_admin/public/static/images/lang/en-TT.svg +40 -0
  136. package/template_admin/public/static/images/lang/en-US.svg +88 -0
  137. package/template_admin/public/static/images/lang/en-ZA.svg +41 -0
  138. package/template_admin/public/static/images/lang/en-ZW.svg +50 -0
  139. package/template_admin/public/static/images/lang/es-AR.svg +41 -0
  140. package/template_admin/public/static/images/lang/es-BO.svg +101 -0
  141. package/template_admin/public/static/images/lang/es-CL.svg +38 -0
  142. package/template_admin/public/static/images/lang/es-CO.svg +37 -0
  143. package/template_admin/public/static/images/lang/es-CR.svg +111 -0
  144. package/template_admin/public/static/images/lang/es-DO.svg +103 -0
  145. package/template_admin/public/static/images/lang/es-EC.svg +87 -0
  146. package/template_admin/public/static/images/lang/es-ES.svg +89 -0
  147. package/template_admin/public/static/images/lang/es-GT.svg +109 -0
  148. package/template_admin/public/static/images/lang/es-HN.svg +46 -0
  149. package/template_admin/public/static/images/lang/es-MX.svg +60 -0
  150. package/template_admin/public/static/images/lang/es-NI.svg +82 -0
  151. package/template_admin/public/static/images/lang/es-PA.svg +41 -0
  152. package/template_admin/public/static/images/lang/es-PE.svg +37 -0
  153. package/template_admin/public/static/images/lang/es-PR.svg +43 -0
  154. package/template_admin/public/static/images/lang/es-PY.svg +41 -0
  155. package/template_admin/public/static/images/lang/es-SV.svg +115 -0
  156. package/template_admin/public/static/images/lang/es-UY.svg +75 -0
  157. package/template_admin/public/static/images/lang/es-VE.svg +49 -0
  158. package/template_admin/public/static/images/lang/et-EE.svg +37 -0
  159. package/template_admin/public/static/images/lang/eu-ES.svg +89 -0
  160. package/template_admin/public/static/images/lang/fa-IR.svg +81 -0
  161. package/template_admin/public/static/images/lang/fi-FI.svg +36 -0
  162. package/template_admin/public/static/images/lang/fr-BE.svg +37 -0
  163. package/template_admin/public/static/images/lang/fr-CA.svg +43 -0
  164. package/template_admin/public/static/images/lang/fr-CH.svg +36 -0
  165. package/template_admin/public/static/images/lang/fr-FR.svg +37 -0
  166. package/template_admin/public/static/images/lang/fr-LU.svg +37 -0
  167. package/template_admin/public/static/images/lang/fr-MC.svg +36 -0
  168. package/template_admin/public/static/images/lang/gl-ES.svg +89 -0
  169. package/template_admin/public/static/images/lang/gu-IN.svg +59 -0
  170. package/template_admin/public/static/images/lang/he-IL.svg +37 -0
  171. package/template_admin/public/static/images/lang/hi-IN.svg +59 -0
  172. package/template_admin/public/static/images/lang/hr-BA.svg +48 -0
  173. package/template_admin/public/static/images/lang/hr-HR.svg +101 -0
  174. package/template_admin/public/static/images/lang/hu-HU.svg +37 -0
  175. package/template_admin/public/static/images/lang/hy-AM.svg +37 -0
  176. package/template_admin/public/static/images/lang/id-ID.svg +36 -0
  177. package/template_admin/public/static/images/lang/is-IS.svg +37 -0
  178. package/template_admin/public/static/images/lang/it-CH.svg +36 -0
  179. package/template_admin/public/static/images/lang/it-IT.svg +37 -0
  180. package/template_admin/public/static/images/lang/ja-JP.svg +36 -0
  181. package/template_admin/public/static/images/lang/ka-GE.svg +42 -0
  182. package/template_admin/public/static/images/lang/kk-KZ.svg +72 -0
  183. package/template_admin/public/static/images/lang/kn-IN.svg +59 -0
  184. package/template_admin/public/static/images/lang/ko-KR.svg +57 -0
  185. package/template_admin/public/static/images/lang/kok-IN.svg +59 -0
  186. package/template_admin/public/static/images/lang/ky-KG.svg +54 -0
  187. package/template_admin/public/static/images/lang/lt-LT.svg +37 -0
  188. package/template_admin/public/static/images/lang/lv-LV.svg +36 -0
  189. package/template_admin/public/static/images/lang/mi-NZ.svg +51 -0
  190. package/template_admin/public/static/images/lang/mk-MK.svg +46 -0
  191. package/template_admin/public/static/images/lang/mn-MN.svg +50 -0
  192. package/template_admin/public/static/images/lang/mr-IN.svg +59 -0
  193. package/template_admin/public/static/images/lang/ms-BN.svg +47 -0
  194. package/template_admin/public/static/images/lang/ms-MY.svg +53 -0
  195. package/template_admin/public/static/images/lang/mt-MT.svg +50 -0
  196. package/template_admin/public/static/images/lang/nb-NO.svg +37 -0
  197. package/template_admin/public/static/images/lang/nl-BE.svg +37 -0
  198. package/template_admin/public/static/images/lang/nl-NL.svg +37 -0
  199. package/template_admin/public/static/images/lang/nn-NO.svg +37 -0
  200. package/template_admin/public/static/images/lang/ns-ZA.svg +41 -0
  201. package/template_admin/public/static/images/lang/pa-IN.svg +59 -0
  202. package/template_admin/public/static/images/lang/pl-PL.svg +36 -0
  203. package/template_admin/public/static/images/lang/ps-AR.svg +68 -0
  204. package/template_admin/public/static/images/lang/pt-BR.svg +51 -0
  205. package/template_admin/public/static/images/lang/pt-PT.svg +55 -0
  206. package/template_admin/public/static/images/lang/qu-BO.svg +101 -0
  207. package/template_admin/public/static/images/lang/qu-EC.svg +87 -0
  208. package/template_admin/public/static/images/lang/qu-PE.svg +37 -0
  209. package/template_admin/public/static/images/lang/ro-RO.svg +37 -0
  210. package/template_admin/public/static/images/lang/ru-RU.svg +37 -0
  211. package/template_admin/public/static/images/lang/sa-IN.svg +59 -0
  212. package/template_admin/public/static/images/lang/se-FI.svg +36 -0
  213. package/template_admin/public/static/images/lang/se-NO.svg +37 -0
  214. package/template_admin/public/static/images/lang/se-SE.svg +36 -0
  215. package/template_admin/public/static/images/lang/sk-SK.svg +41 -0
  216. package/template_admin/public/static/images/lang/sl-SI.svg +51 -0
  217. package/template_admin/public/static/images/lang/sq-AL.svg +36 -0
  218. package/template_admin/public/static/images/lang/sr-BA.svg +48 -0
  219. package/template_admin/public/static/images/lang/sr-SP.svg +79 -0
  220. package/template_admin/public/static/images/lang/sv-FI.svg +36 -0
  221. package/template_admin/public/static/images/lang/sv-SE.svg +36 -0
  222. package/template_admin/public/static/images/lang/sw-KE.svg +55 -0
  223. package/template_admin/public/static/images/lang/syr-SY.svg +41 -0
  224. package/template_admin/public/static/images/lang/ta-IN.svg +59 -0
  225. package/template_admin/public/static/images/lang/te-IN.svg +59 -0
  226. package/template_admin/public/static/images/lang/th-TH.svg +40 -0
  227. package/template_admin/public/static/images/lang/tl-PH.svg +51 -0
  228. package/template_admin/public/static/images/lang/tn-ZA.svg +41 -0
  229. package/template_admin/public/static/images/lang/tr-TR.svg +39 -0
  230. package/template_admin/public/static/images/lang/tt-RU.svg +37 -0
  231. package/template_admin/public/static/images/lang/uk-UA.svg +36 -0
  232. package/template_admin/public/static/images/lang/ur-PK.svg +40 -0
  233. package/template_admin/public/static/images/lang/vi-VN.svg +36 -0
  234. package/template_admin/public/static/images/lang/xh-ZA.svg +41 -0
  235. package/template_admin/public/static/images/lang/zh-CN.svg +42 -0
  236. package/template_admin/public/static/images/lang/zh-HK.svg +42 -0
  237. package/template_admin/public/static/images/lang/zh-SG.svg +44 -0
  238. package/template_admin/public/static/images/lang/zh-TW.svg +43 -0
  239. package/template_admin/public/static/images/lang/zu-ZA.svg +41 -0
  240. package/template_admin/public/static/images/logo-company-default.svg +1 -0
  241. package/template_admin/public/static/images/logo.png +0 -0
  242. package/template_admin/public/static/images/m_logo.png +0 -0
  243. package/template_admin/public/static/images/maintenance-icon.png +0 -0
  244. package/template_admin/public/static/images/member_logo.png +0 -0
  245. package/template_admin/public/static/images/pdf_icon.svg +1 -0
  246. package/template_admin/public/static/images/png_icon.svg +1 -0
  247. package/template_admin/public/static/images/security.png +0 -0
  248. package/template_admin/public/static/images/translation.svg +82 -0
  249. package/template_admin/public/static/images/txt_icon.svg +1 -0
  250. package/template_admin/public/static/images/widget-bubble.png +0 -0
  251. package/template_admin/public/static/images/widget-column.png +0 -0
  252. package/template_admin/public/static/images/widget-combo.png +0 -0
  253. package/template_admin/public/static/images/widget-doughnut.png +0 -0
  254. package/template_admin/public/static/images/widget-line.png +0 -0
  255. package/template_admin/public/static/images/widget-pie.png +0 -0
  256. package/template_admin/public/static/images/widget-scatter.png +0 -0
  257. package/template_admin/public/static/images/widget-summary_box.png +0 -0
  258. package/template_admin/public/static/images/widget-treemap.png +0 -0
  259. package/template_admin/public/static/images/xls_icon.svg +1 -0
  260. package/template_admin/public/static/images/xml_icon.svg +1 -0
  261. package/template_admin/public/static/images/zip_icon.svg +1 -0
  262. package/template_admin/public/static/styles/activity_log.less +157 -0
  263. package/template_admin/public/static/styles/calendar.less +132 -0
  264. package/template_admin/public/static/styles/collections.less +123 -0
  265. package/template_admin/public/static/styles/compute_field.less +250 -0
  266. package/template_admin/public/static/styles/custom-antd.less +78 -0
  267. package/template_admin/public/static/styles/custom.less +0 -0
  268. package/template_admin/public/static/styles/custom_icon.less +556 -0
  269. package/template_admin/public/static/styles/date_search.less +53 -0
  270. package/template_admin/public/static/styles/detail.less +2670 -0
  271. package/template_admin/public/static/styles/entities.less +891 -0
  272. package/template_admin/public/static/styles/filter.less +24 -0
  273. package/template_admin/public/static/styles/filter_new.less +154 -0
  274. package/template_admin/public/static/styles/hook.less +136 -0
  275. package/template_admin/public/static/styles/import_export.less +62 -0
  276. package/template_admin/public/static/styles/input.less +386 -0
  277. package/template_admin/public/static/styles/layout.less +1211 -0
  278. package/template_admin/public/static/styles/login.less +222 -0
  279. package/template_admin/public/static/styles/mainheader.less +32 -0
  280. package/template_admin/public/static/styles/permission_denied.less +13 -0
  281. package/template_admin/public/static/styles/print_template.less +36 -0
  282. package/template_admin/public/static/styles/rabbitmq.less +3 -0
  283. package/template_admin/public/static/styles/restful.less +22 -0
  284. package/template_admin/public/static/styles/setting.less +409 -0
  285. package/template_admin/public/static/styles/style.less +1736 -0
  286. package/template_admin/public/static/styles/system.less +11 -0
  287. package/template_admin/public/static/styles/versioning_control.less +24 -0
  288. package/template_admin/public/static/styles/wysiwyg.less +8 -0
  289. package/template_admin/theme/main.less +1 -0
  290. package/template_admin/theme/vars.less +34 -0
  291. package/template_admin/version.json +1 -0
@@ -0,0 +1,165 @@
1
+ {
2
+ "name": "cc-core",
3
+ "version": "2.4.0",
4
+ "description": "",
5
+ "author": "",
6
+ "private": true,
7
+ "license": "UNLICENSED",
8
+ "scripts": {
9
+ "prebuild": "rimraf dist",
10
+ "build": "source ./newrelic.sh && nest build",
11
+ "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
12
+ "start": "nest start",
13
+ "start:dev": "source ./newrelic.sh && nest start --watch",
14
+ "start:debug": "nest start --debug --watch",
15
+ "start:prod": "source ./newrelic.sh && node dist/src/main",
16
+ "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
17
+ "test": "jest",
18
+ "test:watch": "jest --watch",
19
+ "test:cov": "jest --coverage",
20
+ "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
21
+ "test:e2e": "jest --config ./test/jest-e2e.json"
22
+ },
23
+ "dependencies": {
24
+ "@aws-sdk/client-s3": "^3.282.0",
25
+ "@aws-sdk/credential-providers": "^3.293.0",
26
+ "@azure/identity": "^3.2.3",
27
+ "@azure/storage-file-datalake": "^12.13.0",
28
+ "@fastify/cors": "^8.2.0",
29
+ "@fastify/static": "^6.5.1",
30
+ "@golevelup/nestjs-discovery": "^3.0.0",
31
+ "@nestjs/bull": "^0.6.3",
32
+ "@nestjs/common": "^9.3.9",
33
+ "@nestjs/core": "^9.3.9",
34
+ "@nestjs/jwt": "^10.0.2",
35
+ "@nestjs/mongoose": "^9.2.1",
36
+ "@nestjs/passport": "^9.0.3",
37
+ "@nestjs/platform-express": "^9.3.9",
38
+ "@nestjs/platform-fastify": "^9.3.9",
39
+ "@nestjs/schedule": "^2.2.0",
40
+ "@nestjs/swagger": "^6.2.1",
41
+ "@types/chroma-js": "^2.4.0",
42
+ "@types/numeral": "^2.0.2",
43
+ "amazon-cognito-identity-js": "^4.5.0",
44
+ "amqplib": "^0.8.0",
45
+ "async-redis": "^2.0.0",
46
+ "axios": "^0.21.1",
47
+ "base32-codecs": "^1.0.4",
48
+ "bs58": "^5.0.0",
49
+ "bson": "^4.2.3",
50
+ "bull": "^3.18.0",
51
+ "bwip-js": "^2.0.11",
52
+ "cartesian": "^1.0.1",
53
+ "cc-core-lib": "git+ssh://git@cconnect:shopstackthailand/cc-core-lib.git#latest",
54
+ "chroma-js": "^2.4.2",
55
+ "cls-rtracer": "^2.6.2",
56
+ "cron-converter": "^1.0.0",
57
+ "crypto-js": "^4.0.0",
58
+ "csvtojson": "^2.0.10",
59
+ "currency-formatter": "^1.5.9",
60
+ "dayjs": "^1.11.5",
61
+ "dotenv": "^16.0.3",
62
+ "elasticsearch": "^16.7.2",
63
+ "events": "^3.3.0",
64
+ "exceljs": "^4.2.1",
65
+ "fastify": "^4.10.2",
66
+ "fastify-helmet": "^5.0.3",
67
+ "fastify-rate-limit": "^4.0.3",
68
+ "fastify-xml-body-parser": "^2.2.0",
69
+ "file-type": "^16.5.0",
70
+ "flat": "^5.0.2",
71
+ "form-data": "^3.0.0",
72
+ "fs-extra": "^9.0.1",
73
+ "googleapis": "^59.0.0",
74
+ "hot-formula-parser": "^4.0.0",
75
+ "image-to-base64": "^2.1.1",
76
+ "ioredis": "^5.2.4",
77
+ "json-rules-engine": "^6.1.2",
78
+ "json2csv": "^5.0.3",
79
+ "jsonwebtoken": "^9.0.0",
80
+ "jwk-to-pem": "^2.0.3",
81
+ "kafkajs": "^1.16.0",
82
+ "knex": "^2.4.2",
83
+ "ldapauth-fork": "^5.0.5",
84
+ "lodash": "^4.17.20",
85
+ "lzutf8": "^0.6.0",
86
+ "moment": "^2.29.1",
87
+ "moment-timezone": "^0.5.40",
88
+ "mongoose": "^6.7.2",
89
+ "mongoose-dynamic-schemas": "^1.2.6",
90
+ "ms": "^2.1.2",
91
+ "mysql": "^2.18.1",
92
+ "mysql2": "^2.3.3",
93
+ "nanoid": "^3.1.20",
94
+ "nest-emitter": "^1.1.0",
95
+ "nestjs-cls": "^3.3.1",
96
+ "newrelic": "^9.10.1",
97
+ "node-fetch": "^2.6.1",
98
+ "nodemailer": "^6.4.14",
99
+ "numeral": "^2.0.6",
100
+ "object-path": "^0.11.8",
101
+ "oracledb": "^5.2.0",
102
+ "otplib": "^12.0.1",
103
+ "passport": "^0.6.0",
104
+ "passport-jwt": "^4.0.0",
105
+ "passport-local": "^1.0.0",
106
+ "pdf-img-convert": "^1.2.1",
107
+ "pdf-merger-js": "^3.2.1",
108
+ "performance-now": "^2.1.0",
109
+ "pg": "^8.7.1",
110
+ "puppeteer": "^5.3.1",
111
+ "qs": "^6.9.4",
112
+ "randomstring": "^1.1.5",
113
+ "reflect-metadata": "^0.1.13",
114
+ "request-image-size": "^2.2.0",
115
+ "rimraf": "^3.0.2",
116
+ "rxjs": "^7.5.4",
117
+ "sharp": "^0.31.2",
118
+ "sqlite3": "^5.0.2",
119
+ "ssh2-sftp-client": "^9.0.0",
120
+ "string-replace-async": "^2.0.0",
121
+ "stringify-object": "^3.3.0",
122
+ "swagger-ui-express": "^4.1.4",
123
+ "tedious": "^15.1.3",
124
+ "tesseract.js": "^4.0.3",
125
+ "thai-baht-text": "^1.0.8",
126
+ "to-words": "^2.3.0",
127
+ "uuid": "^8.3.1",
128
+ "web-push": "^3.6.1",
129
+ "xlsx": "^0.18.5"
130
+ },
131
+ "devDependencies": {
132
+ "@types/bull": "^3.14.4",
133
+ "@types/express": "^4.17.8",
134
+ "@types/jest": "25.1.4",
135
+ "@types/node": "^13.13.27",
136
+ "@types/supertest": "^2.0.10",
137
+ "@typescript-eslint/eslint-plugin": "^6.1.0",
138
+ "@typescript-eslint/parser": "^6.1.0",
139
+ "eslint": "^8.44.0",
140
+ "eslint-config-prettier": "^6.13.0",
141
+ "eslint-plugin-import": "^2.22.1",
142
+ "jest": "^29.3.1",
143
+ "prettier": "^1.19.1",
144
+ "supertest": "^4.0.2",
145
+ "ts-jest": "^29.0.5",
146
+ "ts-loader": "^6.2.1",
147
+ "ts-node": "^10.9.1",
148
+ "tsconfig-paths": "^3.9.0",
149
+ "typescript": "^4.8.4"
150
+ },
151
+ "jest": {
152
+ "moduleFileExtensions": [
153
+ "js",
154
+ "json",
155
+ "ts"
156
+ ],
157
+ "rootDir": "src",
158
+ "testRegex": ".spec.ts$",
159
+ "transform": {
160
+ "^.+\\.(t|j)s$": "ts-jest"
161
+ },
162
+ "coverageDirectory": "../coverage",
163
+ "testEnvironment": "node"
164
+ }
165
+ }
@@ -0,0 +1,33 @@
1
+ import * as _ from "lodash";
2
+
3
+ import { Controller, Get, Param } from "@nestjs/common";
4
+ import { AppService } from "./app.service";
5
+
6
+ import { Public, CONST } from "cc-core-lib/core";
7
+ @Controller()
8
+ export class AppController {
9
+ constructor(private readonly appService: AppService) { }
10
+
11
+ @Public()
12
+ @Get("/health_check")
13
+ healthCheck(): boolean {
14
+ return this.appService.healthCheck();
15
+ }
16
+
17
+ @Public()
18
+ @Get("/health_check/init")
19
+ init(): string {
20
+ return this.appService.init();
21
+ }
22
+
23
+ @Get("/all_x_routes/:method")
24
+ listAllRoutes(@Param() params: any): any {
25
+ const { method } = params;
26
+ if (_.isEmpty(method)) {
27
+ return [];
28
+ }
29
+ return CONST.ENDPOINT_PATHS.filter(
30
+ p => p.method.toLowerCase() === method.toLowerCase()
31
+ );
32
+ }
33
+ }
@@ -0,0 +1,163 @@
1
+ import * as _ from "lodash";
2
+ import {
3
+ Module,
4
+ } from "@nestjs/common";
5
+ import { MongooseModule } from "@nestjs/mongoose";
6
+ import { ClsModule } from "nestjs-cls";
7
+ import * as dotenv from "dotenv";
8
+
9
+ import { NestEmitterModule } from "nest-emitter";
10
+ import { EventEmitter } from "events";
11
+ import { AppController } from "./app.controller";
12
+ import { AppService } from "./app.service";
13
+ import { ScheduleModule } from "@nestjs/schedule";
14
+
15
+ import { CUSTOM_MODULES } from "./modules/modules";
16
+ // import { CoreModule } from "./core/core.module";
17
+ import {
18
+ UserModule,
19
+ AuthModule,
20
+ EntitiesModule,
21
+ ScheduleActionModule,
22
+ SettingModule,
23
+ TemplateModule,
24
+ QueueModule,
25
+ TranslateModule,
26
+ AttachmentModule,
27
+ NotificationModule,
28
+ SFTPSettingModule,
29
+ RedisModule,
30
+ MailSettingModule,
31
+ SmsModule,
32
+ ShortlyModule,
33
+ LayoutModule,
34
+ ReportModule,
35
+ CompanyModule,
36
+ LanguageModule,
37
+ ImportExportModule,
38
+ CommentDataModule,
39
+ DatabaseModule,
40
+ DeployModule,
41
+ CustomFunctionModule,
42
+ CacheModule
43
+ } from 'cc-core-lib/core'
44
+
45
+ import { CoreModule } from './core/core.module'
46
+
47
+ // const { CoreModule } = core
48
+
49
+ dotenv.config();
50
+
51
+ const SPECIFY_CUSTOM_MODULES =
52
+ process.env.CUSTOM_MODULES === "" || process.env.CUSTOM_MODULES === undefined
53
+ ? []
54
+ : process.env.CUSTOM_MODULES.split(",");
55
+ const RUN_CUSTOM_MODULES =
56
+ SPECIFY_CUSTOM_MODULES.length === 0
57
+ ? CUSTOM_MODULES.map(c => c.module)
58
+ : CUSTOM_MODULES.filter(c =>
59
+ SPECIFY_CUSTOM_MODULES.includes(c.module.name)
60
+ ).map(c => c.module);
61
+
62
+ const mongoConfig = {};
63
+
64
+ if (+process.env.MONGODB_MIN_POOL_SIZE) {
65
+ mongoConfig["minPoolSize"] = +process.env.MONGODB_MIN_POOL_SIZE;
66
+ }
67
+
68
+ if (+process.env.MONGODB_MAX_POOL_SIZE) {
69
+ mongoConfig["maxPoolSize"] = +process.env.MONGODB_MAX_POOL_SIZE;
70
+ }
71
+
72
+ @Module({
73
+ imports: [
74
+ // MongooseModule.forRootAsync({
75
+ // useFactory: async () => ({
76
+ // uri: process.env.MONGODB_URI,
77
+ // useNewUrlParser: true,
78
+ // useFindAndModify: false
79
+ // })
80
+ // }),
81
+ MongooseModule.forRoot(process.env.MONGODB_URI, mongoConfig),
82
+ // Register the ClsModule,
83
+ ClsModule.forRoot({
84
+ middleware: {
85
+ // automatically mount the
86
+ // ClsMiddleware for all routes
87
+ mount: true,
88
+ // and use the setup method to
89
+ // provide default store values.
90
+ setup: (cls, req) => {
91
+ cls.set("request", {
92
+ api_key: _.get(req, "api_key", {}),
93
+ profile: _.get(req, "profile", {}),
94
+ permissions: _.get(req, "permissions", []),
95
+ headers: _.get(req, "headers", {}),
96
+ ip: _.get(req, "ip"),
97
+ hostname: _.get(req, "hostname"),
98
+ body: _.get(req, "body", {}),
99
+ action_profile: _.get(req, "action_profile", {})
100
+ });
101
+ }
102
+ },
103
+ interceptor: {
104
+ mount: true,
105
+ setup: (cls, ctx) => {
106
+ const req = ctx.switchToHttp().getRequest();
107
+ cls.set("request", {
108
+ api_key: _.get(req, "api_key", {}),
109
+ profile: _.get(req, "profile", {}),
110
+ permissions: _.get(req, "permissions", []),
111
+ roles: _.get(req, "roles", []),
112
+ headers: _.get(req, "headers", {}),
113
+ // ip: req.connection.remoteAddress,
114
+ ip:
115
+ _.get(req, "socket.remoteAddress") ||
116
+ _.get(req, "connection.remoteAddress"),
117
+ hostname: req.hostname,
118
+ body: _.get(req, "body", {}),
119
+ action_profile: _.get(req, "action_profile", {})
120
+ });
121
+ }
122
+ }
123
+ }),
124
+
125
+ EntitiesModule,
126
+ NestEmitterModule.forRoot(new EventEmitter()),
127
+ ScheduleModule.forRoot(),
128
+ AuthModule,
129
+ SettingModule,
130
+ QueueModule,
131
+ RedisModule,
132
+ DatabaseModule,
133
+ CacheModule,
134
+
135
+ CompanyModule,
136
+
137
+ AttachmentModule,
138
+ CommentDataModule,
139
+ CustomFunctionModule,
140
+ DeployModule,
141
+ ReportModule,
142
+ ImportExportModule,
143
+ LanguageModule,
144
+ MailSettingModule,
145
+ ScheduleActionModule,
146
+ SFTPSettingModule,
147
+ SmsModule,
148
+ TemplateModule,
149
+ TranslateModule,
150
+ NotificationModule,
151
+ ShortlyModule,
152
+ UserModule,
153
+
154
+ LayoutModule,
155
+
156
+ // ...RUN_CUSTOM_MODULES,
157
+
158
+ CoreModule
159
+ ],
160
+ controllers: [AppController],
161
+ providers: [AppService]
162
+ })
163
+ export class AppModule { }
@@ -0,0 +1,21 @@
1
+ import { Injectable, Logger } from "@nestjs/common";
2
+ import * as os from "os";
3
+ import { CONST } from "cc-core-lib/core";
4
+
5
+ @Injectable()
6
+ export class AppService {
7
+ private _isReady: boolean;
8
+
9
+ init(): string {
10
+ this._isReady = true;
11
+ Logger.log(`CPU cores ${os.cpus().length}`, "OS");
12
+ return "health_check";
13
+ }
14
+
15
+ healthCheck(): boolean {
16
+ if (!CONST.HEALTH_CHECK) {
17
+ throw new Error("not ready");
18
+ }
19
+ return true;
20
+ }
21
+ }
@@ -0,0 +1,58 @@
1
+ import * as _ from "lodash";
2
+ import * as cluster from "cluster";
3
+ import * as os from "os";
4
+ import { Injectable } from "@nestjs/common";
5
+ import axios, { AxiosInstance } from "axios";
6
+ import { CONST } from 'cc-core-lib/core'
7
+
8
+ CONST.INTERNAL_DOMAIN = `http://${process.env.LOOP_BACK_IP}:${process.env
9
+ .PORT || 3000}/api/v1`;
10
+
11
+ const numCPUs = _.isEmpty(process.env.MAX_WORKER)
12
+ ? os.cpus().length
13
+ : parseInt(process.env.MAX_WORKER, 10) === 0
14
+ ? os.cpus().length
15
+ : parseInt(process.env.MAX_WORKER, 10);
16
+ console.log("MAXIMUM WORKER PROCESS: " + numCPUs);
17
+ // const numCPUs = 2;
18
+ let checkInit = false;
19
+ let mainPID = 0;
20
+
21
+ @Injectable()
22
+ export class AppClusterService {
23
+ static async clusterize(callback: Function): Promise<void> {
24
+ if (cluster.isMaster) {
25
+ console.log(`Master server started on ${process.pid}`);
26
+ CONST.MAIN_PROCESS = true;
27
+ for (let i = 0; i < numCPUs; i++) {
28
+ const env = { WORKER_NO: i + 1 }
29
+ const worker = cluster.fork(env);
30
+ worker.process['env'] = env
31
+ }
32
+ cluster.on("listening", (worker, address) => {
33
+ console.log(
34
+ `A worker is now connected to ${address.address}:${address.port}`
35
+ );
36
+ const http: AxiosInstance = axios.create();
37
+ http.get(`${CONST.INTERNAL_DOMAIN}/user_role/reload_system`);
38
+ http.get(`${CONST.INTERNAL_DOMAIN}/translate/generate`);
39
+ http.get(`${CONST.INTERNAL_DOMAIN}/setting/update_version`);
40
+ http.get(`${CONST.INTERNAL_DOMAIN}/health_check/init`);
41
+ });
42
+ // cluster.on("online", worker => {
43
+ // console.log("Yay, the worker responded after it was forked");
44
+ // });
45
+ cluster.on("exit", (worker, code, signal, ...other) => {
46
+ const env = worker.process['env']
47
+ console.log(
48
+ `Worker ${worker.process.pid} (${code},${signal}) died. Restarting`
49
+ );
50
+ const newWorker = cluster.fork(env);
51
+ newWorker.process['env'] = env
52
+ });
53
+ } else {
54
+ console.log(`Cluster server started on ${process.pid}`);
55
+ await callback();
56
+ }
57
+ }
58
+ }