@getjones/test-infra 5.2.12 → 5.2.14

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 (296) hide show
  1. package/eslint.config.mjs +156 -156
  2. package/package.json +43 -43
  3. package/src/common/commonFlows/auth/auth.js +95 -95
  4. package/src/common/commonFlows/index.js +5 -5
  5. package/src/common/commonFlows/records/records.js +452 -457
  6. package/src/common/commonFlows/users/users.js +15 -15
  7. package/src/common/consts/accountSettings.js +112 -112
  8. package/src/common/consts/activationStatuses.js +6 -6
  9. package/src/common/consts/analysisStatuses.js +7 -7
  10. package/src/common/consts/autocomplete.js +10 -10
  11. package/src/common/consts/constantsForRecordsSortingAndFilters.js +49 -49
  12. package/src/common/consts/dashboardCharts.js +18 -18
  13. package/src/common/consts/homepage/AttentionTab.js +6 -6
  14. package/src/common/consts/homepage/sortOptions.js +19 -19
  15. package/src/common/consts/projectSettings.js +28 -28
  16. package/src/common/consts/recordTypes.js +5 -5
  17. package/src/common/consts/requirementActions.js +10 -10
  18. package/src/common/consts/s3FileTypes.js +12 -12
  19. package/src/common/consts/userRoles.js +21 -21
  20. package/src/common/consts/userTypes.js +16 -16
  21. package/src/common/errorCodes.js +13 -12
  22. package/src/common/httpResponseStatusCodes.json +19 -19
  23. package/src/common/httpResponseTypes.json +2 -2
  24. package/src/common/requests/apiKeyAuth/requests.js +45 -45
  25. package/src/common/requests/cookieAuth/requests.js +40 -40
  26. package/src/common/requests/internalAuth/requests.js +48 -48
  27. package/src/common/requests/requestHandlers.js +112 -112
  28. package/src/common/utils/arrayUtils.js +19 -19
  29. package/src/common/utils/complianceUtil.js +114 -114
  30. package/src/common/utils/configsUtil.js +22 -22
  31. package/src/common/utils/dataTypeUtils.js +41 -41
  32. package/src/common/utils/numberUtils.js +22 -22
  33. package/src/common/utils/objectUtils.js +102 -102
  34. package/src/common/utils/timeUtils.js +202 -195
  35. package/src/common/validations/typeValidations.js +36 -36
  36. package/src/defaults/configs/attributes.js +170 -170
  37. package/src/defaults/configs/auditConfigs.js +129 -129
  38. package/src/defaults/configs/coverage.js +144 -144
  39. package/src/defaults/configs/polices.js +28 -28
  40. package/src/defaults/configs/requirement.js +218 -218
  41. package/src/defaults/index.js +7 -7
  42. package/src/env.js +58 -58
  43. package/src/factory/globalRecord/globalRecord.js +43 -43
  44. package/src/factory/index.js +8 -8
  45. package/src/factory/records/records.js +295 -295
  46. package/src/factory/users/users.js +70 -70
  47. package/src/index.js +118 -114
  48. package/src/reporters/mochaReporter.js +273 -273
  49. package/src/saas/internal-api/accountDirectory/api/accountDirectory.api.js +152 -152
  50. package/src/saas/internal-api/accountDirectory/api/accountDirectory.service.js +576 -576
  51. package/src/saas/internal-api/accountDirectory/consts/accountDirectory.consts.js +75 -75
  52. package/src/saas/internal-api/accountDirectory/index.js +5 -5
  53. package/src/saas/internal-api/accountDirectory/models/accountDirectory.models.js +172 -172
  54. package/src/saas/internal-api/accounts/api/core/accounts.core.api.js +54 -48
  55. package/src/saas/internal-api/accounts/api/core/accounts.core.service.js +114 -104
  56. package/src/saas/internal-api/accounts/api/emailCustomization/accounts.email.customizations.api.js +29 -29
  57. package/src/saas/internal-api/accounts/api/emailCustomization/accounts.email.customizations.service.js +60 -60
  58. package/src/saas/internal-api/accounts/api/emailCustomization/consts.js +8 -8
  59. package/src/saas/internal-api/accounts/api/openapi/accounts.openapi.api.js +54 -54
  60. package/src/saas/internal-api/accounts/api/openapi/accounts.openapi.service.js +67 -67
  61. package/src/saas/internal-api/accounts/api/settings/settings.api.js +21 -21
  62. package/src/saas/internal-api/accounts/api/settings/settings.service.js +58 -58
  63. package/src/saas/internal-api/accounts/consts/consts.js +8 -8
  64. package/src/saas/internal-api/accounts/index.js +22 -22
  65. package/src/saas/internal-api/accounts/models/core/create.account.model.js +16 -16
  66. package/src/saas/internal-api/accounts/models/settings/update.settings.model.js +110 -110
  67. package/src/saas/internal-api/accounts/utils/utils.js +60 -60
  68. package/src/saas/internal-api/agreement/api/agreement.api.js +39 -39
  69. package/src/saas/internal-api/agreement/api/agreement.service.js +121 -121
  70. package/src/saas/internal-api/agreement/consts/consts.js +11 -11
  71. package/src/saas/internal-api/agreement/index.js +12 -12
  72. package/src/saas/internal-api/agreement/models/create.agreement.model.js +12 -12
  73. package/src/saas/internal-api/agreement/models/createAgreementByAuditorModel.js +11 -11
  74. package/src/saas/internal-api/agreement/models/createAgreementByPMModel.js +13 -13
  75. package/src/saas/internal-api/auditCustomerRules/api/customer.rules.api.js +49 -49
  76. package/src/saas/internal-api/auditCustomerRules/api/customer.rules.service.js +121 -121
  77. package/src/saas/internal-api/auditCustomerRules/consts/customer.rule.js +40 -40
  78. package/src/saas/internal-api/auditCustomerRules/index.js +7 -7
  79. package/src/saas/internal-api/auditCustomerRules/models/customer.rule.model.js +55 -55
  80. package/src/saas/internal-api/auditCustomerRules/utils/customer.rule.util.js +70 -70
  81. package/src/saas/internal-api/auditNotes/api/audit.notes.api.js +40 -40
  82. package/src/saas/internal-api/auditNotes/api/audit.notes.service.js +116 -116
  83. package/src/saas/internal-api/auditNotes/index.js +4 -4
  84. package/src/saas/internal-api/auditNotes/models/audit.note.model.js +32 -32
  85. package/src/saas/internal-api/auditorComments/api/auditor.comments.api.js +20 -20
  86. package/src/saas/internal-api/auditorComments/api/auditor.comments.service.js +27 -27
  87. package/src/saas/internal-api/auditorComments/consts/auditor.comment.js +16 -16
  88. package/src/saas/internal-api/auditorComments/index.js +5 -5
  89. package/src/saas/internal-api/auditorComments/models/auditor.comment.model.js +40 -40
  90. package/src/saas/internal-api/auth/api/auth.api.js +78 -78
  91. package/src/saas/internal-api/auth/api/auth.service.js +217 -206
  92. package/src/saas/internal-api/auth/index.js +3 -3
  93. package/src/saas/internal-api/certificial/api/certificial.api.js +15 -0
  94. package/src/saas/internal-api/certificial/api/certificial.service.js +24 -0
  95. package/src/saas/internal-api/certificial/consts.js +8 -0
  96. package/src/saas/internal-api/certificial/index.js +4 -0
  97. package/src/saas/internal-api/coi/api/coi.api.js +76 -76
  98. package/src/saas/internal-api/coi/api/coi.service.js +104 -104
  99. package/src/saas/internal-api/coi/consts/duplicateHandling.js +7 -7
  100. package/src/saas/internal-api/coi/consts/hashes.js +5 -5
  101. package/src/saas/internal-api/coi/consts/uploaderStatuses.js +9 -0
  102. package/src/saas/internal-api/coi/consts/uploaderTypes.js +3 -3
  103. package/src/saas/internal-api/coi/index.js +17 -16
  104. package/src/saas/internal-api/coi/models/Combine.last.two.cois.model.js +25 -25
  105. package/src/saas/internal-api/coi/models/submit.coi.batch.model.js +23 -23
  106. package/src/saas/internal-api/coi/models/submit.coi.model.js +23 -23
  107. package/src/saas/internal-api/coi/utils/utils.js +185 -185
  108. package/src/saas/internal-api/compliance/api/amBestRating/am.best.rating.api.js +12 -12
  109. package/src/saas/internal-api/compliance/api/amBestRating/am.best.rating.service.js +14 -14
  110. package/src/saas/internal-api/compliance/api/audit/aiAudit/aiAudit.api.js +63 -63
  111. package/src/saas/internal-api/compliance/api/audit/aiAudit/aiAudit.service.js +99 -99
  112. package/src/saas/internal-api/compliance/api/audit/audit.api.js +124 -124
  113. package/src/saas/internal-api/compliance/api/audit/audit.service.js +390 -390
  114. package/src/saas/internal-api/compliance/api/complianceSnapshot/compliance.snapshot.api.js +32 -32
  115. package/src/saas/internal-api/compliance/api/complianceSnapshot/compliance.snapshot.service.js +73 -73
  116. package/src/saas/internal-api/compliance/api/convert/convert.api.js +12 -12
  117. package/src/saas/internal-api/compliance/api/convert/convert.service.js +7 -7
  118. package/src/saas/internal-api/compliance/api/coverage/coverage.api.js +33 -33
  119. package/src/saas/internal-api/compliance/api/coverage/coverage.service.js +46 -46
  120. package/src/saas/internal-api/compliance/api/overrideGap/override.gap.api.js +86 -86
  121. package/src/saas/internal-api/compliance/api/overrideGap/override.gap.service.js +300 -300
  122. package/src/saas/internal-api/compliance/consts/audit.js +130 -130
  123. package/src/saas/internal-api/compliance/consts/overrideGapRequest/override.gap.request.js +7 -7
  124. package/src/saas/internal-api/compliance/index.js +41 -41
  125. package/src/saas/internal-api/compliance/models/audit/audit.model.js +109 -109
  126. package/src/saas/internal-api/compliance/models/overrideGapRequest/override.gap.request.model.js +16 -16
  127. package/src/saas/internal-api/compliance/models/waive/waive.model.js +112 -112
  128. package/src/saas/internal-api/compliance/utils/auditUtil.js +308 -308
  129. package/src/saas/internal-api/compliance/utils/coverageUtil.js +45 -45
  130. package/src/saas/internal-api/contractors/api/contractors.api.js +251 -251
  131. package/src/saas/internal-api/contractors/api/contractors.service.js +482 -482
  132. package/src/saas/internal-api/contractors/consts/consts.js +6 -6
  133. package/src/saas/internal-api/contractors/index.js +8 -8
  134. package/src/saas/internal-api/contractors/models/assign.requirement.model.js +11 -11
  135. package/src/saas/internal-api/contractors/models/edit.contractor.model.js +73 -73
  136. package/src/saas/internal-api/contractors/models/link.request.model.js +10 -10
  137. package/src/saas/internal-api/contractors/models/verification.contractor.model.js +29 -29
  138. package/src/saas/internal-api/contractors/utils.js +25 -25
  139. package/src/saas/internal-api/customTags/api/customTags.api.js +47 -47
  140. package/src/saas/internal-api/customTags/api/customTags.service.js +96 -96
  141. package/src/saas/internal-api/customTags/index.js +4 -4
  142. package/src/saas/internal-api/customTags/models/customTagsModels.js +17 -17
  143. package/src/saas/internal-api/dashboard/api/recordList.api.js +38 -38
  144. package/src/saas/internal-api/dashboard/api/recordList.service.js +60 -60
  145. package/src/saas/internal-api/dashboard/index.js +5 -5
  146. package/src/saas/internal-api/dashboard/models/dashboard.filter.criteria.model.js +38 -38
  147. package/src/saas/internal-api/dbEmails/api/db.emails.api.js +25 -25
  148. package/src/saas/internal-api/dbEmails/api/db.emails.service.js +209 -178
  149. package/src/saas/internal-api/dbEmails/consts/consts.js +66 -66
  150. package/src/saas/internal-api/dbEmails/index.js +6 -6
  151. package/src/saas/internal-api/dbEmails/models/db.emails.model.js +22 -22
  152. package/src/saas/internal-api/dbEmails/utils/util.js +82 -82
  153. package/src/saas/internal-api/emailCustomization/api/email.customization.api.js +26 -26
  154. package/src/saas/internal-api/emailCustomization/api/email.customization.service.js +50 -50
  155. package/src/saas/internal-api/emailCustomization/index.js +3 -3
  156. package/src/saas/internal-api/fileScan/api/file.scan.api.js +14 -14
  157. package/src/saas/internal-api/fileScan/api/file.scan.service.js +35 -35
  158. package/src/saas/internal-api/fileScan/index.js +3 -3
  159. package/src/saas/internal-api/fileScan/models/update.scan.status.model.js +13 -13
  160. package/src/saas/internal-api/globalRecord/api/global.record.api.js +95 -95
  161. package/src/saas/internal-api/globalRecord/api/global.record.service.js +112 -112
  162. package/src/saas/internal-api/globalRecord/consts.js +20 -20
  163. package/src/saas/internal-api/globalRecord/index.js +6 -6
  164. package/src/saas/internal-api/globalRecord/models/global.record.model.js +60 -60
  165. package/src/saas/internal-api/globalRecord/utils/util.js +161 -161
  166. package/src/saas/internal-api/homepageCharts/api/charts.api.js +12 -12
  167. package/src/saas/internal-api/homepageCharts/api/charts.service.js +7 -7
  168. package/src/saas/internal-api/homepageCharts/index.js +3 -3
  169. package/src/saas/internal-api/notificationCenter/api/notification.center.api.js +32 -32
  170. package/src/saas/internal-api/notificationCenter/api/notification.center.service.js +49 -49
  171. package/src/saas/internal-api/notificationCenter/consts.js +9 -9
  172. package/src/saas/internal-api/notificationCenter/index.js +4 -4
  173. package/src/saas/internal-api/outlook/api/outlook.api.js +14 -14
  174. package/src/saas/internal-api/outlook/api/outlook.service.js +14 -14
  175. package/src/saas/internal-api/outlook/index.js +3 -3
  176. package/src/saas/internal-api/policyFile/api/policy.file.api.js +43 -43
  177. package/src/saas/internal-api/policyFile/api/policy.file.service.js +117 -117
  178. package/src/saas/internal-api/policyFile/consts.js +21 -21
  179. package/src/saas/internal-api/policyFile/index.js +11 -11
  180. package/src/saas/internal-api/policyFile/models/create.policy.file.model.js +11 -11
  181. package/src/saas/internal-api/policyFile/models/set.publish.flag.to.policy.model.js +13 -13
  182. package/src/saas/internal-api/projects/api/core/projects.api.js +39 -39
  183. package/src/saas/internal-api/projects/api/core/projects.service.js +77 -77
  184. package/src/saas/internal-api/projects/api/settings/project.settings.api.js +18 -18
  185. package/src/saas/internal-api/projects/api/settings/project.settings.service.js +35 -35
  186. package/src/saas/internal-api/projects/consts/defaultProject.js +3 -3
  187. package/src/saas/internal-api/projects/index.js +24 -24
  188. package/src/saas/internal-api/projects/models/core/create.project.model.js +41 -41
  189. package/src/saas/internal-api/projects/models/core/update.project.model.js +47 -47
  190. package/src/saas/internal-api/projects/models/settings/update.project.settings.model.js +56 -48
  191. package/src/saas/internal-api/projects/utils/utils.js +159 -159
  192. package/src/saas/internal-api/recordHub/api/record.hub.api.js +20 -20
  193. package/src/saas/internal-api/recordHub/api/record.hub.service.js +86 -86
  194. package/src/saas/internal-api/recordHub/index.js +3 -3
  195. package/src/saas/internal-api/recordNotes/api/record.notes.api.js +38 -38
  196. package/src/saas/internal-api/recordNotes/api/record.notes.service.js +56 -56
  197. package/src/saas/internal-api/recordNotes/api/record.notes.utils.js +12 -12
  198. package/src/saas/internal-api/recordNotes/index.js +3 -3
  199. package/src/saas/internal-api/relatedDocs/api/related.docs.api.js +98 -98
  200. package/src/saas/internal-api/relatedDocs/api/related.docs.service.js +180 -180
  201. package/src/saas/internal-api/relatedDocs/index.js +4 -4
  202. package/src/saas/internal-api/relatedDocs/models/related.doc.model.js +36 -36
  203. package/src/saas/internal-api/reports/api/reports.api.js +56 -56
  204. package/src/saas/internal-api/reports/api/reports.service.js +68 -68
  205. package/src/saas/internal-api/reports/consts/consts.js +71 -71
  206. package/src/saas/internal-api/reports/index.js +15 -15
  207. package/src/saas/internal-api/reports/models/report.model.js +27 -27
  208. package/src/saas/internal-api/requests/api/requests.api.js +132 -132
  209. package/src/saas/internal-api/requests/api/requests.service.js +315 -315
  210. package/src/saas/internal-api/requests/index.js +21 -21
  211. package/src/saas/internal-api/requests/models/create.request.model.js +39 -39
  212. package/src/saas/internal-api/requests/models/draft.request.criteria.model.js +18 -18
  213. package/src/saas/internal-api/requests/models/draft.request.report.model.js +14 -14
  214. package/src/saas/internal-api/requests/models/edit.request.model.js +31 -31
  215. package/src/saas/internal-api/requests/models/homepageRequestCriteriaModel.js +19 -19
  216. package/src/saas/internal-api/requests/models/requestListCriteriaModel.js +17 -17
  217. package/src/saas/internal-api/requests/models/tenant.request.model.js +9 -9
  218. package/src/saas/internal-api/requests/utils.js +16 -16
  219. package/src/saas/internal-api/requestsTable/api/requests.table.api.js +20 -20
  220. package/src/saas/internal-api/requestsTable/api/requests.table.service.js +14 -14
  221. package/src/saas/internal-api/requestsTable/index.js +3 -3
  222. package/src/saas/internal-api/requirements/api/lease/lease.api.js +74 -74
  223. package/src/saas/internal-api/requirements/api/lease/lease.service.js +167 -167
  224. package/src/saas/internal-api/requirements/api/requirements.api.js +65 -65
  225. package/src/saas/internal-api/requirements/api/requirements.service.js +198 -198
  226. package/src/saas/internal-api/requirements/consts/attributeTypes.json +8 -8
  227. package/src/saas/internal-api/requirements/consts/consts.js +22 -22
  228. package/src/saas/internal-api/requirements/index.js +22 -22
  229. package/src/saas/internal-api/requirements/models/create.requirement.model.js +17 -17
  230. package/src/saas/internal-api/requirements/models/extraction.request.model.js +16 -16
  231. package/src/saas/internal-api/requirements/models/policy.model.js +35 -35
  232. package/src/saas/internal-api/requirements/models/tab.extraction.request.model.js +14 -14
  233. package/src/saas/internal-api/requirements/models/update.requirement.model.js +19 -19
  234. package/src/saas/internal-api/requirements/utils/utils.js +129 -129
  235. package/src/saas/internal-api/sampleCoi/api/sample.coi.api.js +15 -15
  236. package/src/saas/internal-api/sampleCoi/api/sample.coi.service.js +48 -48
  237. package/src/saas/internal-api/sampleCoi/consts/consts.js +22 -22
  238. package/src/saas/internal-api/sampleCoi/index.js +4 -4
  239. package/src/saas/internal-api/schedulerJobRun/api/scheduler.job.run.api.js +31 -0
  240. package/src/saas/internal-api/schedulerJobRun/api/scheduler.job.run.service.js +56 -0
  241. package/src/saas/internal-api/schedulerJobRun/index.js +3 -0
  242. package/src/saas/internal-api/serviceArea/api/coordinates.api.js +12 -12
  243. package/src/saas/internal-api/serviceArea/api/coordinates.service.js +7 -7
  244. package/src/saas/internal-api/serviceArea/index.js +4 -4
  245. package/src/saas/internal-api/serviceArea/utils/utils.js +8 -8
  246. package/src/saas/internal-api/tableOfContents/api/table.of.contents.api.js +37 -37
  247. package/src/saas/internal-api/tableOfContents/api/table.of.contents.service.js +19 -19
  248. package/src/saas/internal-api/tableOfContents/index.js +3 -3
  249. package/src/saas/internal-api/tabs/api/tabs.api.js +32 -32
  250. package/src/saas/internal-api/tabs/api/tabs.service.js +60 -60
  251. package/src/saas/internal-api/tabs/index.js +3 -3
  252. package/src/saas/internal-api/tabs/models/tabs.model.js +19 -19
  253. package/src/saas/internal-api/thread-scheduler/runner.js +86 -69
  254. package/src/saas/internal-api/thread-scheduler/schedulerJobs.js +10 -8
  255. package/src/saas/internal-api/uploadFiles/api/upload.file.api.js +49 -49
  256. package/src/saas/internal-api/uploadFiles/api/upload.file.service.js +176 -162
  257. package/src/saas/internal-api/uploadFiles/consts.js +36 -36
  258. package/src/saas/internal-api/uploadFiles/index.js +5 -5
  259. package/src/saas/internal-api/uploadFiles/utils.js +34 -34
  260. package/src/saas/internal-api/users/api/tenantApp/tenant.app.api.js +38 -38
  261. package/src/saas/internal-api/users/api/tenantApp/tenant.app.service.js +109 -109
  262. package/src/saas/internal-api/users/api/users.api.js +158 -158
  263. package/src/saas/internal-api/users/api/users.service.js +363 -363
  264. package/src/saas/internal-api/users/index.js +17 -17
  265. package/src/saas/internal-api/users/models/create.inner.system.user.model.js +18 -18
  266. package/src/saas/internal-api/users/models/notification.settings.model.js +15 -15
  267. package/src/saas/internal-api/users/models/tenant.user.model.js +11 -11
  268. package/src/saas/internal-api/users/models/users.model.js +43 -43
  269. package/src/saas/internal-api/users/utils/util.js +50 -50
  270. package/src/saas/internal-api/vendorProfile/api/vendor.profile.api.js +26 -26
  271. package/src/saas/internal-api/vendorProfile/api/vendor.profile.service.js +19 -19
  272. package/src/saas/internal-api/vendorProfile/index.js +3 -3
  273. package/src/saas/openapi/accounts/accounts.api.js +17 -17
  274. package/src/saas/openapi/accounts/accounts.service.js +11 -11
  275. package/src/saas/openapi/coi/coi.api.js +35 -35
  276. package/src/saas/openapi/coi/coi.service.js +53 -53
  277. package/src/saas/openapi/projects/projects.api.js +83 -83
  278. package/src/saas/openapi/projects/projects.service.js +89 -71
  279. package/src/saas/openapi/relatedDocs/related.docs.api.js +30 -30
  280. package/src/saas/openapi/relatedDocs/related.docs.service.js +56 -55
  281. package/src/saas/openapi/requests/index.js +7 -7
  282. package/src/saas/openapi/requests/models/invite.request.model.js +42 -42
  283. package/src/saas/openapi/requests/models/update.request.model.js +37 -37
  284. package/src/saas/openapi/requests/requests.api.js +93 -93
  285. package/src/saas/openapi/requests/requests.service.js +100 -94
  286. package/src/saas/openapi/requirements/index.js +6 -6
  287. package/src/saas/openapi/requirements/models/copy.requirement.model.js +10 -10
  288. package/src/saas/openapi/requirements/requirements.api.js +41 -41
  289. package/src/saas/openapi/requirements/requirements.service.js +61 -55
  290. package/src/saas/openapi/tabs/index.js +6 -6
  291. package/src/saas/openapi/tabs/models/create.tab.model.js +6 -6
  292. package/src/saas/openapi/tabs/tabs.api.js +27 -27
  293. package/src/saas/openapi/tabs/tabs.service.js +26 -19
  294. package/src/saas/openapi/users/user.model.js +10 -10
  295. package/src/saas/openapi/users/users.api.js +33 -33
  296. package/src/saas/openapi/users/users.service.js +51 -51
@@ -1,185 +1,185 @@
1
- const fs = require('fs');
2
-
3
- const services = require('../api/coi.service');
4
- const fileScanService = require('../../fileScan/api/file.scan.service');
5
- const { SubmitCoiModel } = require('../models/submit.coi.model');
6
- const { SubmitCoiBatchModel } = require('../models/submit.coi.batch.model');
7
- const { CombineLastTwoCOIsModel } = require('../models/Combine.last.two.cois.model');
8
- const { getContractorById } = require('../../contractors/api/contractors.service');
9
- const { getIcsCookie } = require('../../auth/api/auth.service');
10
- const timeUtils = require('../../../../common/utils/timeUtils');
11
- const UPLOADER_TYPES = require('../consts/uploaderTypes');
12
-
13
- // Stages the certificate into TEMPCOI/{recordId}/ without submitting it, no audit is created
14
- const uploadFileToStorage = async (recordId, filePath) => {
15
- const fileData = fs.createReadStream(filePath);
16
- const uploadResponse = await services.uploadToS3(recordId, fileData);
17
-
18
- return uploadResponse.data.fileId;
19
- };
20
-
21
- const submitCoiFilesUpload = async ({
22
- recordId,
23
- fileIds,
24
- uploadedBy,
25
- uploaderContext,
26
- uploaderEmail,
27
- recordDateModified,
28
- duplicateHandling
29
- }) => {
30
- const submitCoiModel = new SubmitCoiModel({
31
- recordId,
32
- fileIds,
33
- uploadedBy,
34
- uploaderContext,
35
- uploaderEmail,
36
- recordDateModified,
37
- duplicateHandling
38
- });
39
-
40
- if (uploadedBy != UPLOADER_TYPES.ICS) { // Upload by user role
41
- return services.submitCoi(submitCoiModel);
42
- }
43
-
44
- return services.submitCoiByUserContext(submitCoiModel, uploaderContext); // Upload by user context
45
- };
46
-
47
- const uploadCoi = async (
48
- recordId,
49
- filePath,
50
- uploadedBy,
51
- uploaderEmail,
52
- {
53
- markAsScaned, // Should be passed with context
54
- uploaderContext,
55
- duplicateHandling
56
- } = {}
57
- ) => {
58
- if (!uploaderContext) {
59
- uploaderContext = await getIcsCookie();
60
- }
61
-
62
- const recordResponse = await getContractorById(recordId, uploaderContext);
63
- const recordDateModified = recordResponse.data.dateModified;
64
- const fileId = await uploadFileToStorage(recordId, filePath);
65
-
66
- const submitResponse = fileId && await submitCoiFilesUpload({
67
- recordId,
68
- fileIds: [fileId],
69
- uploadedBy,
70
- uploaderContext,
71
- uploaderEmail,
72
- recordDateModified,
73
- duplicateHandling
74
- });
75
-
76
- const uploadedCoi = !!submitResponse.data.fileName && { id: fileId, name: submitResponse.data.fileName };
77
-
78
- if (uploadedCoi.name && markAsScaned && uploaderContext) {
79
- await fileScanService.completeCoiScan(recordId, uploadedCoi.name, uploaderContext);
80
- }
81
-
82
- return uploadedCoi;
83
- };
84
-
85
- // Stages a certificate the way the UI does before an on-behalf upload: upload, then merge with
86
- // isContractorExist false. The merge writes the file flat to TEMPCOI/ and returns before any
87
- // certificate, audit or history write, so the COI is staged but not attached to the record.
88
- const stageMergedCertificate = async (recordId, filePath, context) => {
89
- const fileId = await uploadFileToStorage(recordId, filePath);
90
- const submitCoiModel = new SubmitCoiModel({ recordId, fileIds: [fileId], isContractorExist: false });
91
- const submitResponse = await services.submitCoiByUserContext(submitCoiModel, context);
92
-
93
- if (!submitResponse.data.fileName) {
94
- throw Error(`Failed to stage an on-behalf certificate for record: ${recordId}`);
95
- }
96
-
97
- return submitResponse.data.fileName;
98
- };
99
-
100
- const waitForAntiVirusRecordCoiScanToFinish = async (recordId, context, { maxSecondToWait = 10 } = {}) => {
101
- let isScanned = false;
102
- const oneSecondInMilliseconds = 1000;
103
- let timeFromTheStart = 0;
104
- let coiLink;
105
- const started = Date.now();
106
-
107
- const { data: record } = await getContractorById(recordId, context);
108
-
109
- while (!isScanned && timeFromTheStart < maxSecondToWait) {
110
- ({ data: coiLink } = await services.getCoiPreSignedUrl(record.certificatePdf));
111
- isScanned = coiLink.isInProgress;
112
- const now = Date.now();
113
- timeFromTheStart = (now - started) / oneSecondInMilliseconds;
114
- await timeUtils.waitFor(1).seconds;
115
- }
116
-
117
- return coiLink.coiPreSignedUrl;
118
- };
119
-
120
- const uploadCoiBatch = async (sourceRecordId, recordIds, filePaths, uploadedBy, uploaderEmail, {
121
- uploaderContext,
122
- duplicateHandling,
123
- expectError
124
- } = {}) => {
125
- if (!uploaderContext) {
126
- uploaderContext = await getIcsCookie();
127
- }
128
-
129
- const fileIds = await Promise.all(
130
- filePaths.map(filePath => uploadFileToStorage(sourceRecordId, filePath))
131
- );
132
-
133
- const records = await Promise.all(
134
- recordIds.map(async recordId => {
135
- const { data: record } = await getContractorById(recordId, uploaderContext);
136
- return { contractorId: recordId, contractorDateModified: record.dateModified };
137
- })
138
- );
139
-
140
- const submitCoiBatchModel = new SubmitCoiBatchModel({
141
- fileIds,
142
- sourceRecordId,
143
- records,
144
- uploadedBy,
145
- uploaderEmail,
146
- duplicateHandling
147
- });
148
-
149
- return services.submitCoiBatch(submitCoiBatchModel, uploaderContext, { expectError });
150
- };
151
-
152
- const combineLastTwoCOIs = async ({
153
- recordId,
154
- fileIds,
155
- uploadedBy,
156
- uploaderEmail,
157
- isContractorExist,
158
- icsContext,
159
- auditorContext,
160
- isNewCoiOnTop
161
- }) => {
162
- const recordResponse = await getContractorById(recordId, icsContext);
163
- const recordDateModified = recordResponse.data.dateModified;
164
-
165
- const combineLastTwoCOIsModel = new CombineLastTwoCOIsModel({
166
- recordId,
167
- fileIds,
168
- uploadedBy,
169
- uploaderEmail,
170
- recordDateModified,
171
- isContractorExist,
172
- isNewCoiOnTop
173
- });
174
- return services.combineLastTwoCOIs(combineLastTwoCOIsModel, auditorContext);
175
- };
176
-
177
- module.exports = {
178
- uploadCoi,
179
- uploadCoiBatch,
180
- uploadFileToStorage,
181
- submitCoiFilesUpload,
182
- stageMergedCertificate,
183
- waitForAntiVirusRecordCoiScanToFinish,
184
- combineLastTwoCOIs
185
- };
1
+ const fs = require('fs');
2
+
3
+ const services = require('../api/coi.service');
4
+ const fileScanService = require('../../fileScan/api/file.scan.service');
5
+ const { SubmitCoiModel } = require('../models/submit.coi.model');
6
+ const { SubmitCoiBatchModel } = require('../models/submit.coi.batch.model');
7
+ const { CombineLastTwoCOIsModel } = require('../models/Combine.last.two.cois.model');
8
+ const { getContractorById } = require('../../contractors/api/contractors.service');
9
+ const { getIcsCookie } = require('../../auth/api/auth.service');
10
+ const timeUtils = require('../../../../common/utils/timeUtils');
11
+ const UPLOADER_TYPES = require('../consts/uploaderTypes');
12
+
13
+ // Stages the certificate into TEMPCOI/{recordId}/ without submitting it, no audit is created
14
+ const uploadFileToStorage = async (recordId, filePath) => {
15
+ const fileData = fs.createReadStream(filePath);
16
+ const uploadResponse = await services.uploadToS3(recordId, fileData);
17
+
18
+ return uploadResponse.data.fileId;
19
+ };
20
+
21
+ const submitCoiFilesUpload = async ({
22
+ recordId,
23
+ fileIds,
24
+ uploadedBy,
25
+ uploaderContext,
26
+ uploaderEmail,
27
+ recordDateModified,
28
+ duplicateHandling
29
+ }) => {
30
+ const isAnonymousUpload = !uploaderContext && uploadedBy !== UPLOADER_TYPES.ICS;
31
+ const sessionContext = uploaderContext || await getIcsCookie();
32
+
33
+ const submitCoiModel = new SubmitCoiModel({
34
+ recordId,
35
+ fileIds,
36
+ uploadedBy,
37
+ uploaderContext: sessionContext,
38
+ uploaderEmail,
39
+ recordDateModified,
40
+ duplicateHandling
41
+ });
42
+
43
+ if (isAnonymousUpload) {
44
+ return services.submitCoi(submitCoiModel);
45
+ }
46
+
47
+ return services.submitCoiByUserContext(submitCoiModel, sessionContext);
48
+ };
49
+
50
+ const uploadCoi = async (
51
+ recordId,
52
+ filePath,
53
+ uploadedBy,
54
+ uploaderEmail,
55
+ {
56
+ markAsScaned,
57
+ uploaderContext,
58
+ duplicateHandling
59
+ } = {}
60
+ ) => {
61
+ const icsContext = await getIcsCookie();
62
+ const recordResponse = await getContractorById(recordId, icsContext); // Auditors can't read the record, same as combineLastTwoCOIs
63
+ const recordDateModified = recordResponse.data.dateModified;
64
+ const fileId = await uploadFileToStorage(recordId, filePath);
65
+
66
+ const submitResponse = fileId && await submitCoiFilesUpload({
67
+ recordId,
68
+ fileIds: [fileId],
69
+ uploadedBy,
70
+ uploaderContext,
71
+ uploaderEmail,
72
+ recordDateModified,
73
+ duplicateHandling
74
+ });
75
+
76
+ const uploadedCoi = !!submitResponse.data.fileName && { id: fileId, name: submitResponse.data.fileName };
77
+
78
+ if (uploadedCoi.name && markAsScaned) {
79
+ await fileScanService.completeCoiScan(recordId, uploadedCoi.name, icsContext); // Only ICS may update the scan status
80
+ }
81
+
82
+ return uploadedCoi;
83
+ };
84
+
85
+ // Stages a certificate the way the UI does before an on-behalf upload: upload, then merge with
86
+ // isContractorExist false. The merge writes the file flat to TEMPCOI/ and returns before any
87
+ // certificate, audit or history write, so the COI is staged but not attached to the record.
88
+ const stageMergedCertificate = async (recordId, filePath, context) => {
89
+ const fileId = await uploadFileToStorage(recordId, filePath);
90
+ const submitCoiModel = new SubmitCoiModel({ recordId, fileIds: [fileId], isContractorExist: false });
91
+ const submitResponse = await services.submitCoiByUserContext(submitCoiModel, context);
92
+
93
+ if (!submitResponse.data.fileName) {
94
+ throw Error(`Failed to stage an on-behalf certificate for record: ${recordId}`);
95
+ }
96
+
97
+ return submitResponse.data.fileName;
98
+ };
99
+
100
+ const waitForAntiVirusRecordCoiScanToFinish = async (recordId, context, { maxSecondToWait = 10 } = {}) => {
101
+ let isScanned = false;
102
+ const oneSecondInMilliseconds = 1000;
103
+ let timeFromTheStart = 0;
104
+ let coiLink;
105
+ const started = Date.now();
106
+
107
+ const { data: record } = await getContractorById(recordId, context);
108
+
109
+ while (!isScanned && timeFromTheStart < maxSecondToWait) {
110
+ ({ data: coiLink } = await services.getCoiPreSignedUrl(record.certificatePdf));
111
+ isScanned = coiLink.isInProgress;
112
+ const now = Date.now();
113
+ timeFromTheStart = (now - started) / oneSecondInMilliseconds;
114
+ await timeUtils.waitFor(1).seconds;
115
+ }
116
+
117
+ return coiLink.coiPreSignedUrl;
118
+ };
119
+
120
+ const uploadCoiBatch = async (sourceRecordId, recordIds, filePaths, uploadedBy, uploaderEmail, {
121
+ uploaderContext,
122
+ duplicateHandling,
123
+ expectError
124
+ } = {}) => {
125
+ if (!uploaderContext) {
126
+ uploaderContext = await getIcsCookie();
127
+ }
128
+
129
+ const fileIds = await Promise.all(
130
+ filePaths.map(filePath => uploadFileToStorage(sourceRecordId, filePath))
131
+ );
132
+
133
+ const records = await Promise.all(
134
+ recordIds.map(async recordId => {
135
+ const { data: record } = await getContractorById(recordId, uploaderContext);
136
+ return { contractorId: recordId, contractorDateModified: record.dateModified };
137
+ })
138
+ );
139
+
140
+ const submitCoiBatchModel = new SubmitCoiBatchModel({
141
+ fileIds,
142
+ sourceRecordId,
143
+ records,
144
+ uploadedBy,
145
+ uploaderEmail,
146
+ duplicateHandling
147
+ });
148
+
149
+ return services.submitCoiBatch(submitCoiBatchModel, uploaderContext, { expectError });
150
+ };
151
+
152
+ const combineLastTwoCOIs = async ({
153
+ recordId,
154
+ fileIds,
155
+ uploadedBy,
156
+ uploaderEmail,
157
+ isContractorExist,
158
+ icsContext,
159
+ auditorContext,
160
+ isNewCoiOnTop
161
+ }) => {
162
+ const recordResponse = await getContractorById(recordId, icsContext);
163
+ const recordDateModified = recordResponse.data.dateModified;
164
+
165
+ const combineLastTwoCOIsModel = new CombineLastTwoCOIsModel({
166
+ recordId,
167
+ fileIds,
168
+ uploadedBy,
169
+ uploaderEmail,
170
+ recordDateModified,
171
+ isContractorExist,
172
+ isNewCoiOnTop
173
+ });
174
+ return services.combineLastTwoCOIs(combineLastTwoCOIsModel, auditorContext);
175
+ };
176
+
177
+ module.exports = {
178
+ uploadCoi,
179
+ uploadCoiBatch,
180
+ uploadFileToStorage,
181
+ submitCoiFilesUpload,
182
+ stageMergedCertificate,
183
+ waitForAntiVirusRecordCoiScanToFinish,
184
+ combineLastTwoCOIs
185
+ };
@@ -1,12 +1,12 @@
1
- const internalRequests = require('../../../../../common/requests/internalAuth/requests');
2
- const { nodeBackendUrl } = require('../../../../../env').getEnv();
3
-
4
- const Endpoints = {
5
- getAMBestRatingForInsurers: `${nodeBackendUrl}/compliance/am-best-rating`
6
- };
7
-
8
- const getAMBestRatingForInsurers = insurerList => {
9
- return internalRequests.postRequestHandler(Endpoints.getAMBestRatingForInsurers, insurerList);
10
- };
11
-
12
- module.exports = { getAMBestRatingForInsurers };
1
+ const internalRequests = require('../../../../../common/requests/internalAuth/requests');
2
+ const { nodeBackendUrl } = require('../../../../../env').getEnv();
3
+
4
+ const Endpoints = {
5
+ getAMBestRatingForInsurers: `${nodeBackendUrl}/compliance/am-best-rating`
6
+ };
7
+
8
+ const getAMBestRatingForInsurers = insurerList => {
9
+ return internalRequests.postRequestHandler(Endpoints.getAMBestRatingForInsurers, insurerList);
10
+ };
11
+
12
+ module.exports = { getAMBestRatingForInsurers };
@@ -1,14 +1,14 @@
1
- const amBestRatingApi = require('./am.best.rating.api');
2
- const httpResponseStatusCodes = require('../../../../../common/httpResponseStatusCodes.json');
3
-
4
- const getAMBestRatingForInsurers = async insurerList => {
5
- const response = await amBestRatingApi.getAMBestRatingForInsurers(insurerList);
6
-
7
- if (response.status !== httpResponseStatusCodes.OK) {
8
- throw Error(`Failed to get AM best data - Response: ${response.status}`);
9
- }
10
-
11
- return response.data;
12
- };
13
-
14
- module.exports = { getAMBestRatingForInsurers };
1
+ const amBestRatingApi = require('./am.best.rating.api');
2
+ const httpResponseStatusCodes = require('../../../../../common/httpResponseStatusCodes.json');
3
+
4
+ const getAMBestRatingForInsurers = async insurerList => {
5
+ const response = await amBestRatingApi.getAMBestRatingForInsurers(insurerList);
6
+
7
+ if (response.status !== httpResponseStatusCodes.OK) {
8
+ throw Error(`Failed to get AM best data - Response: ${response.status}`);
9
+ }
10
+
11
+ return response.data;
12
+ };
13
+
14
+ module.exports = { getAMBestRatingForInsurers };
@@ -1,63 +1,63 @@
1
- const internalRequests = require('../../../../../../common/requests/internalAuth/requests');
2
- const requests = require('../../../../../../common/requests/cookieAuth/requests');
3
- const { nodeBackendUrl, backendUrl } = require('../../../../../../env').getEnv();
4
-
5
- const Endpoints = {
6
- getAiAnalysisResult: `${nodeBackendUrl}/compliance/ai/analysis-results`,
7
- getComparisonAlgorithmResultsIos: `${nodeBackendUrl}/compliance/comparison-algorithm-results`,
8
- getComplianceReport: aiAnalysisProcessId => `${nodeBackendUrl}/compliance/ai/audit/compliance-report/${aiAnalysisProcessId}`,
9
- getAiAnalysisExtractionStep: recordId => `${backendUrl}/saas/record/${recordId}/coi/ai-analysis-status`,
10
- getAiAnalysisStatus: recordId => `${backendUrl}/saas/ai-analysis-process/status/record/${recordId}`,
11
- getAiAnalysisProcess: recordId => `${backendUrl}/saas/integration-tests/ai-analysis-process/record/${recordId}`,
12
- getAcord25ByAiAnalysis: `${nodeBackendUrl}/compliance/ai/analysis/acord25`,
13
- getAuxiliaryDataByAiAnalysis: uniqueCoiId => `${nodeBackendUrl}/compliance/auxiliary-data/from/coi-analysis/${uniqueCoiId}`,
14
- getOcrByRecordIdAiAnalysis: recordId => `${backendUrl}/jcsc/record/${recordId}/ocr`
15
- };
16
-
17
- const getAiAnalysisResult = (uniqueCoiIds, requirementsId) => {
18
- return internalRequests.postRequestHandler(Endpoints.getAiAnalysisResult, { uniqueCoiIds, requirementsId });
19
- };
20
-
21
- const getComparisonAlgorithmResultsIos = data => {
22
- return internalRequests.postRequestHandler(Endpoints.getComparisonAlgorithmResultsIos, data);
23
- };
24
-
25
- const getComplianceReport = aiAnalysisProcessId => {
26
- return internalRequests.getRequestHandler(Endpoints.getComplianceReport(aiAnalysisProcessId));
27
- };
28
-
29
- const getAiAnalysisExtractionStep = (recordId, context) => {
30
- return requests.getRequestHandler(Endpoints.getAiAnalysisExtractionStep(recordId), {}, context);
31
- };
32
-
33
- const getAiAnalysisStatus = (recordId, context) => {
34
- return requests.getRequestHandler(Endpoints.getAiAnalysisStatus(recordId), {}, context);
35
- };
36
-
37
- const getAiAnalysisProcess = (recordId, context) => {
38
- return requests.getRequestHandler(Endpoints.getAiAnalysisProcess(recordId), {}, context);
39
- };
40
-
41
- const getAcord25ByAiAnalysis = uniqueCoiIds => {
42
- return internalRequests.postRequestHandler(Endpoints.getAcord25ByAiAnalysis, { uniqueCoiIds });
43
- };
44
-
45
- const getAuxiliaryDataByAiAnalysis = uniqueCoiId => {
46
- return internalRequests.getRequestHandler(Endpoints.getAuxiliaryDataByAiAnalysis(uniqueCoiId));
47
- };
48
-
49
- const getOcrByRecordIdAiAnalysis = recordId => {
50
- return internalRequests.getRequestHandler(Endpoints.getOcrByRecordIdAiAnalysis(recordId));
51
- };
52
-
53
- module.exports = {
54
- getComparisonAlgorithmResultsIos,
55
- getAiAnalysisResult,
56
- getComplianceReport,
57
- getAiAnalysisExtractionStep,
58
- getAiAnalysisStatus,
59
- getAiAnalysisProcess,
60
- getAcord25ByAiAnalysis,
61
- getAuxiliaryDataByAiAnalysis,
62
- getOcrByRecordIdAiAnalysis
63
- };
1
+ const internalRequests = require('../../../../../../common/requests/internalAuth/requests');
2
+ const requests = require('../../../../../../common/requests/cookieAuth/requests');
3
+ const { nodeBackendUrl, backendUrl } = require('../../../../../../env').getEnv();
4
+
5
+ const Endpoints = {
6
+ getAiAnalysisResult: `${nodeBackendUrl}/compliance/ai/analysis-results`,
7
+ getComparisonAlgorithmResultsIos: `${nodeBackendUrl}/compliance/comparison-algorithm-results`,
8
+ getComplianceReport: aiAnalysisProcessId => `${nodeBackendUrl}/compliance/ai/audit/compliance-report/${aiAnalysisProcessId}`,
9
+ getAiAnalysisExtractionStep: recordId => `${backendUrl}/saas/record/${recordId}/coi/ai-analysis-status`,
10
+ getAiAnalysisStatus: recordId => `${backendUrl}/saas/ai-analysis-process/status/record/${recordId}`,
11
+ getAiAnalysisProcess: recordId => `${backendUrl}/saas/integration-tests/ai-analysis-process/record/${recordId}`,
12
+ getAcord25ByAiAnalysis: `${nodeBackendUrl}/compliance/ai/analysis/acord25`,
13
+ getAuxiliaryDataByAiAnalysis: uniqueCoiId => `${nodeBackendUrl}/compliance/auxiliary-data/from/coi-analysis/${uniqueCoiId}`,
14
+ getOcrByRecordIdAiAnalysis: recordId => `${backendUrl}/jcsc/record/${recordId}/ocr`
15
+ };
16
+
17
+ const getAiAnalysisResult = (uniqueCoiIds, requirementsId) => {
18
+ return internalRequests.postRequestHandler(Endpoints.getAiAnalysisResult, { uniqueCoiIds, requirementsId });
19
+ };
20
+
21
+ const getComparisonAlgorithmResultsIos = data => {
22
+ return internalRequests.postRequestHandler(Endpoints.getComparisonAlgorithmResultsIos, data);
23
+ };
24
+
25
+ const getComplianceReport = aiAnalysisProcessId => {
26
+ return internalRequests.getRequestHandler(Endpoints.getComplianceReport(aiAnalysisProcessId));
27
+ };
28
+
29
+ const getAiAnalysisExtractionStep = (recordId, context) => {
30
+ return requests.getRequestHandler(Endpoints.getAiAnalysisExtractionStep(recordId), {}, context);
31
+ };
32
+
33
+ const getAiAnalysisStatus = (recordId, context) => {
34
+ return requests.getRequestHandler(Endpoints.getAiAnalysisStatus(recordId), {}, context);
35
+ };
36
+
37
+ const getAiAnalysisProcess = (recordId, context) => {
38
+ return requests.getRequestHandler(Endpoints.getAiAnalysisProcess(recordId), {}, context);
39
+ };
40
+
41
+ const getAcord25ByAiAnalysis = uniqueCoiIds => {
42
+ return internalRequests.postRequestHandler(Endpoints.getAcord25ByAiAnalysis, { uniqueCoiIds });
43
+ };
44
+
45
+ const getAuxiliaryDataByAiAnalysis = uniqueCoiId => {
46
+ return internalRequests.getRequestHandler(Endpoints.getAuxiliaryDataByAiAnalysis(uniqueCoiId));
47
+ };
48
+
49
+ const getOcrByRecordIdAiAnalysis = recordId => {
50
+ return internalRequests.getRequestHandler(Endpoints.getOcrByRecordIdAiAnalysis(recordId));
51
+ };
52
+
53
+ module.exports = {
54
+ getComparisonAlgorithmResultsIos,
55
+ getAiAnalysisResult,
56
+ getComplianceReport,
57
+ getAiAnalysisExtractionStep,
58
+ getAiAnalysisStatus,
59
+ getAiAnalysisProcess,
60
+ getAcord25ByAiAnalysis,
61
+ getAuxiliaryDataByAiAnalysis,
62
+ getOcrByRecordIdAiAnalysis
63
+ };