@getjones/test-infra 5.2.13 → 5.2.15

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 -500
  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 -35
  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 -13
  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 -118
  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 -54
  55. package/src/saas/internal-api/accounts/api/core/accounts.core.service.js +114 -114
  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 -217
  92. package/src/saas/internal-api/auth/index.js +3 -3
  93. package/src/saas/internal-api/certificial/api/certificial.api.js +15 -15
  94. package/src/saas/internal-api/certificial/api/certificial.service.js +24 -24
  95. package/src/saas/internal-api/certificial/consts.js +8 -8
  96. package/src/saas/internal-api/certificial/index.js +4 -4
  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/coiUploaderTypes.js +9 -0
  100. package/src/saas/internal-api/coi/consts/duplicateHandling.js +7 -7
  101. package/src/saas/internal-api/coi/consts/hashes.js +5 -5
  102. package/src/saas/internal-api/coi/consts/uploaderTypes.js +3 -3
  103. package/src/saas/internal-api/coi/index.js +1 -0
  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 +11 -10
  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 -109
  121. package/src/saas/internal-api/compliance/api/overrideGap/override.gap.service.js +300 -391
  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 -14
  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 -31
  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 -209
  149. package/src/saas/internal-api/dbEmails/consts/consts.js +66 -69
  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 -12
  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 -64
  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 -31
  240. package/src/saas/internal-api/schedulerJobRun/api/scheduler.job.run.service.js +56 -56
  241. package/src/saas/internal-api/schedulerJobRun/index.js +3 -3
  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 -86
  254. package/src/saas/internal-api/thread-scheduler/schedulerJobs.js +10 -10
  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 -176
  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,198 +1,198 @@
1
- const requirementsAPI = require('./requirements.api');
2
- const { CreateRequirementModel } = require('../models/create.requirement.model');
3
- const { UpdateRequirementModel } = require('../models/update.requirement.model');
4
- const requirementUtils = require('../utils/utils');
5
- const httpResponseStatusCodes = require('../../../../common/httpResponseStatusCodes.json');
6
-
7
- const { validateType, validateArray } = require('../../../../common/validations/typeValidations');
8
-
9
- const createRequirement = (createRequirementModel, tabId, context) => {
10
- validateType(createRequirementModel, CreateRequirementModel);
11
- return requirementsAPI.createRequirement(createRequirementModel, tabId, context);
12
- };
13
-
14
- const getRequirementsByTabId = (tabId, context) => {
15
- return requirementsAPI.getRequirementsByTabId(tabId, context);
16
- };
17
-
18
- const getRequirementById = (requirementId, context, { isPermanentLink } = {}) => {
19
- return requirementsAPI.getRequirementById(requirementId, context, { isPermanentLink });
20
- };
21
-
22
- const getViewOnlyRequirement = (encryptedUrl, context = null, { isPermanent } = {}) => {
23
- return requirementsAPI.getViewOnlyRequirement(encryptedUrl, context, { isPermanent });
24
- };
25
-
26
- const getEncryptedUrlFromViewOnlyLink = publicViewOnlyLink => {
27
- if (!publicViewOnlyLink) {
28
- return null;
29
- }
30
-
31
- return publicViewOnlyLink.split('/').pop();
32
- };
33
-
34
- const getRequirementByName = async (tabId, requirementName, context, { isPermanentLink } = {}) => {
35
- const { data: requirementList } = await getRequirementsByTabId(tabId, context);
36
-
37
- const requirement = requirementList.find(req => req.name === requirementName);
38
-
39
- if (!requirement) {
40
- return null;
41
- }
42
-
43
- const requirementResponse = await getRequirementById(requirement.id, context, { isPermanentLink });
44
- return requirementResponse.data.requirement;
45
- };
46
-
47
- const getRequirementIdByName = async (tabId, requirementName, context) => {
48
- const requirement = await getRequirementByName(tabId, requirementName, context);
49
- return requirement ? requirement.id : requirement;
50
- };
51
-
52
- const getOrCreateRequirement = async (requirement, tabId, context) => {
53
- let existingRequirement = await getRequirementByName(tabId, requirement.name, context);
54
-
55
- if (!existingRequirement) {
56
- const createRequirementModel = getCreateRequirementModel(requirement);
57
- await createRequirement(createRequirementModel, tabId, context);
58
- existingRequirement = await getRequirementByName(tabId, requirement.name, context);
59
- }
60
-
61
- return existingRequirement;
62
- };
63
-
64
- const updateRequirement = (updateRequirementModel, tabId, context) => {
65
- validateType(updateRequirementModel, UpdateRequirementModel);
66
- return requirementsAPI.updateRequirement(updateRequirementModel, tabId, context);
67
- };
68
-
69
- const updateRequirementWithNotification = (updateRequirementModel, tabId, context) => {
70
- validateType(updateRequirementModel, UpdateRequirementModel);
71
- return requirementsAPI.updateRequirementWithNotification(updateRequirementModel, tabId, context);
72
- };
73
-
74
- const updateBulkRequirementsVisibility = async (data, context) => {
75
- validateArray(data);
76
- const response = await requirementsAPI.updateRequirementsVisibility(data, context);
77
-
78
- if (response.status !== httpResponseStatusCodes.NO_CONTENT) {
79
- throw new Error('Failed to update bulk requirements visibility');
80
- }
81
-
82
- return response;
83
- };
84
-
85
- const updateRequirementsVisibility = async (requirementId, visibility, context) => {
86
- const data = [{ id: requirementId, visibility }];
87
- const response = await requirementsAPI.updateRequirementsVisibility(data, context);
88
-
89
- if (response.status !== httpResponseStatusCodes.NO_CONTENT) {
90
- throw new Error('Failed to update requirements visibility');
91
- }
92
-
93
- return response;
94
- };
95
-
96
- const deleteByRequirementId = (requirementId, context) => {
97
- return requirementsAPI.deleteByRequirementId(requirementId, context);
98
- };
99
-
100
- const deleteRequirementByName = async (requirementName, tabId, context) => {
101
- const requirementToDelete = await getRequirementByName(tabId, requirementName, context);
102
-
103
- if (!requirementToDelete) {
104
- return;
105
- }
106
-
107
- return deleteByRequirementId(requirementToDelete.id, context);
108
- };
109
-
110
- const deleteAllRequirementsInTabs = async (tabIds, context) => {
111
- const failedToDeleteRequirements = [];
112
- const successfulDeleteRes = [];
113
- let requirementsToDelete = [];
114
-
115
- for (const tabId of tabIds) {
116
- const { data: existingRequirements } = await getRequirementsByTabId(tabId, context);
117
- requirementsToDelete = existingRequirements || [];
118
-
119
- for (const requirement of existingRequirements) {
120
- const response = await deleteByRequirementId(requirement.id, context);
121
-
122
- if (response.status !== httpResponseStatusCodes.OK) {
123
- console.error('Failed to delete requirement: ', requirement.id);
124
- failedToDeleteRequirements.push(response);
125
- }
126
-
127
- if (response.data.result === 'linked') {
128
- console.error('Requirement is linked to a record and cannot be deleted', requirement.id);
129
- failedToDeleteRequirements.push(response);
130
- }
131
-
132
- if (response.status === httpResponseStatusCodes.OK) {
133
- successfulDeleteRes.push(response.data.result);
134
- }
135
- }
136
- }
137
-
138
- if (failedToDeleteRequirements.length) {
139
- throw Error(`Failed to delete ${failedToDeleteRequirements.length} of ${requirementsToDelete.length} requirements in account. Failed with status: ${ failedToDeleteRequirements[0].status }`);
140
- }
141
-
142
- return successfulDeleteRes;
143
- };
144
-
145
- const getCreateRequirementModel = requirement => {
146
- return requirementUtils.getCreateRequirementModel(requirement);
147
- };
148
-
149
- const getUpdatedRequirementModel = async (updatedRequirement, tabId, context, { originalRequirementName } = {}) => {
150
- const requirementName = originalRequirementName || updatedRequirement.name;
151
- const existingRequirement = await getRequirementByName(tabId, requirementName, context);
152
- updatedRequirement.id = existingRequirement.id;
153
- updatedRequirement.dateModified = existingRequirement.dateModified;
154
-
155
- return requirementUtils.getUpdateRequirementModel(updatedRequirement);
156
- };
157
-
158
- const getRequirementDateModified = async (tabId, requirementName, context) => {
159
- const requirementRes = await getRequirementByName(tabId, requirementName, context);
160
-
161
- if (!requirementRes) {
162
- throw new Error(`Failed to retrieve requirement - ${requirementName}`);
163
- }
164
-
165
- return requirementRes.dateModified;
166
- };
167
-
168
- const getRequirementLinkedRecordCount = async (requirementId, context, { shouldCountDraft } = {}) => {
169
- const recordCount = await requirementsAPI.getRequirementLinkedRecordCount(requirementId, context, { shouldCountDraft });
170
-
171
- if (recordCount.status !== httpResponseStatusCodes.OK) {
172
- throw new Error(`Failed to retrieve linked record count for requirement - ${requirementId}\n${recordCount}`);
173
- }
174
-
175
- return recordCount;
176
- };
177
-
178
- module.exports = {
179
- createRequirement,
180
- getRequirementById,
181
- getRequirementByName,
182
- getRequirementIdByName,
183
- getRequirementsByTabId,
184
- getViewOnlyRequirement,
185
- getEncryptedUrlFromViewOnlyLink,
186
- getOrCreateRequirement,
187
- updateRequirement,
188
- updateRequirementWithNotification,
189
- updateBulkRequirementsVisibility,
190
- updateRequirementsVisibility,
191
- deleteByRequirementId,
192
- deleteRequirementByName,
193
- deleteAllRequirementsInTabs,
194
- getCreateRequirementModel,
195
- getUpdatedRequirementModel,
196
- getRequirementDateModified,
197
- getRequirementLinkedRecordCount
198
- };
1
+ const requirementsAPI = require('./requirements.api');
2
+ const { CreateRequirementModel } = require('../models/create.requirement.model');
3
+ const { UpdateRequirementModel } = require('../models/update.requirement.model');
4
+ const requirementUtils = require('../utils/utils');
5
+ const httpResponseStatusCodes = require('../../../../common/httpResponseStatusCodes.json');
6
+
7
+ const { validateType, validateArray } = require('../../../../common/validations/typeValidations');
8
+
9
+ const createRequirement = (createRequirementModel, tabId, context) => {
10
+ validateType(createRequirementModel, CreateRequirementModel);
11
+ return requirementsAPI.createRequirement(createRequirementModel, tabId, context);
12
+ };
13
+
14
+ const getRequirementsByTabId = (tabId, context) => {
15
+ return requirementsAPI.getRequirementsByTabId(tabId, context);
16
+ };
17
+
18
+ const getRequirementById = (requirementId, context, { isPermanentLink } = {}) => {
19
+ return requirementsAPI.getRequirementById(requirementId, context, { isPermanentLink });
20
+ };
21
+
22
+ const getViewOnlyRequirement = (encryptedUrl, context = null, { isPermanent } = {}) => {
23
+ return requirementsAPI.getViewOnlyRequirement(encryptedUrl, context, { isPermanent });
24
+ };
25
+
26
+ const getEncryptedUrlFromViewOnlyLink = publicViewOnlyLink => {
27
+ if (!publicViewOnlyLink) {
28
+ return null;
29
+ }
30
+
31
+ return publicViewOnlyLink.split('/').pop();
32
+ };
33
+
34
+ const getRequirementByName = async (tabId, requirementName, context, { isPermanentLink } = {}) => {
35
+ const { data: requirementList } = await getRequirementsByTabId(tabId, context);
36
+
37
+ const requirement = requirementList.find(req => req.name === requirementName);
38
+
39
+ if (!requirement) {
40
+ return null;
41
+ }
42
+
43
+ const requirementResponse = await getRequirementById(requirement.id, context, { isPermanentLink });
44
+ return requirementResponse.data.requirement;
45
+ };
46
+
47
+ const getRequirementIdByName = async (tabId, requirementName, context) => {
48
+ const requirement = await getRequirementByName(tabId, requirementName, context);
49
+ return requirement ? requirement.id : requirement;
50
+ };
51
+
52
+ const getOrCreateRequirement = async (requirement, tabId, context) => {
53
+ let existingRequirement = await getRequirementByName(tabId, requirement.name, context);
54
+
55
+ if (!existingRequirement) {
56
+ const createRequirementModel = getCreateRequirementModel(requirement);
57
+ await createRequirement(createRequirementModel, tabId, context);
58
+ existingRequirement = await getRequirementByName(tabId, requirement.name, context);
59
+ }
60
+
61
+ return existingRequirement;
62
+ };
63
+
64
+ const updateRequirement = (updateRequirementModel, tabId, context) => {
65
+ validateType(updateRequirementModel, UpdateRequirementModel);
66
+ return requirementsAPI.updateRequirement(updateRequirementModel, tabId, context);
67
+ };
68
+
69
+ const updateRequirementWithNotification = (updateRequirementModel, tabId, context) => {
70
+ validateType(updateRequirementModel, UpdateRequirementModel);
71
+ return requirementsAPI.updateRequirementWithNotification(updateRequirementModel, tabId, context);
72
+ };
73
+
74
+ const updateBulkRequirementsVisibility = async (data, context) => {
75
+ validateArray(data);
76
+ const response = await requirementsAPI.updateRequirementsVisibility(data, context);
77
+
78
+ if (response.status !== httpResponseStatusCodes.NO_CONTENT) {
79
+ throw new Error('Failed to update bulk requirements visibility');
80
+ }
81
+
82
+ return response;
83
+ };
84
+
85
+ const updateRequirementsVisibility = async (requirementId, visibility, context) => {
86
+ const data = [{ id: requirementId, visibility }];
87
+ const response = await requirementsAPI.updateRequirementsVisibility(data, context);
88
+
89
+ if (response.status !== httpResponseStatusCodes.NO_CONTENT) {
90
+ throw new Error('Failed to update requirements visibility');
91
+ }
92
+
93
+ return response;
94
+ };
95
+
96
+ const deleteByRequirementId = (requirementId, context) => {
97
+ return requirementsAPI.deleteByRequirementId(requirementId, context);
98
+ };
99
+
100
+ const deleteRequirementByName = async (requirementName, tabId, context) => {
101
+ const requirementToDelete = await getRequirementByName(tabId, requirementName, context);
102
+
103
+ if (!requirementToDelete) {
104
+ return;
105
+ }
106
+
107
+ return deleteByRequirementId(requirementToDelete.id, context);
108
+ };
109
+
110
+ const deleteAllRequirementsInTabs = async (tabIds, context) => {
111
+ const failedToDeleteRequirements = [];
112
+ const successfulDeleteRes = [];
113
+ let requirementsToDelete = [];
114
+
115
+ for (const tabId of tabIds) {
116
+ const { data: existingRequirements } = await getRequirementsByTabId(tabId, context);
117
+ requirementsToDelete = existingRequirements || [];
118
+
119
+ for (const requirement of existingRequirements) {
120
+ const response = await deleteByRequirementId(requirement.id, context);
121
+
122
+ if (response.status !== httpResponseStatusCodes.OK) {
123
+ console.error('Failed to delete requirement: ', requirement.id);
124
+ failedToDeleteRequirements.push(response);
125
+ }
126
+
127
+ if (response.data.result === 'linked') {
128
+ console.error('Requirement is linked to a record and cannot be deleted', requirement.id);
129
+ failedToDeleteRequirements.push(response);
130
+ }
131
+
132
+ if (response.status === httpResponseStatusCodes.OK) {
133
+ successfulDeleteRes.push(response.data.result);
134
+ }
135
+ }
136
+ }
137
+
138
+ if (failedToDeleteRequirements.length) {
139
+ throw Error(`Failed to delete ${failedToDeleteRequirements.length} of ${requirementsToDelete.length} requirements in account. Failed with status: ${ failedToDeleteRequirements[0].status }`);
140
+ }
141
+
142
+ return successfulDeleteRes;
143
+ };
144
+
145
+ const getCreateRequirementModel = requirement => {
146
+ return requirementUtils.getCreateRequirementModel(requirement);
147
+ };
148
+
149
+ const getUpdatedRequirementModel = async (updatedRequirement, tabId, context, { originalRequirementName } = {}) => {
150
+ const requirementName = originalRequirementName || updatedRequirement.name;
151
+ const existingRequirement = await getRequirementByName(tabId, requirementName, context);
152
+ updatedRequirement.id = existingRequirement.id;
153
+ updatedRequirement.dateModified = existingRequirement.dateModified;
154
+
155
+ return requirementUtils.getUpdateRequirementModel(updatedRequirement);
156
+ };
157
+
158
+ const getRequirementDateModified = async (tabId, requirementName, context) => {
159
+ const requirementRes = await getRequirementByName(tabId, requirementName, context);
160
+
161
+ if (!requirementRes) {
162
+ throw new Error(`Failed to retrieve requirement - ${requirementName}`);
163
+ }
164
+
165
+ return requirementRes.dateModified;
166
+ };
167
+
168
+ const getRequirementLinkedRecordCount = async (requirementId, context, { shouldCountDraft } = {}) => {
169
+ const recordCount = await requirementsAPI.getRequirementLinkedRecordCount(requirementId, context, { shouldCountDraft });
170
+
171
+ if (recordCount.status !== httpResponseStatusCodes.OK) {
172
+ throw new Error(`Failed to retrieve linked record count for requirement - ${requirementId}\n${recordCount}`);
173
+ }
174
+
175
+ return recordCount;
176
+ };
177
+
178
+ module.exports = {
179
+ createRequirement,
180
+ getRequirementById,
181
+ getRequirementByName,
182
+ getRequirementIdByName,
183
+ getRequirementsByTabId,
184
+ getViewOnlyRequirement,
185
+ getEncryptedUrlFromViewOnlyLink,
186
+ getOrCreateRequirement,
187
+ updateRequirement,
188
+ updateRequirementWithNotification,
189
+ updateBulkRequirementsVisibility,
190
+ updateRequirementsVisibility,
191
+ deleteByRequirementId,
192
+ deleteRequirementByName,
193
+ deleteAllRequirementsInTabs,
194
+ getCreateRequirementModel,
195
+ getUpdatedRequirementModel,
196
+ getRequirementDateModified,
197
+ getRequirementLinkedRecordCount
198
+ };
@@ -1,9 +1,9 @@
1
- {
2
- "endorsement": "ENDORSEMENT",
3
- "limit": "LIMIT",
4
- "boolean": "BOOLEAN",
5
- "multiple": "MULTIPLE",
6
- "numeric": "NUMERIC",
7
- "amBestRating": "AM_BEST_RATING",
8
- "amBestFinancialSizeCategory": "AM_BEST_FINANCIAL_SIZE_CATEGORY"
1
+ {
2
+ "endorsement": "ENDORSEMENT",
3
+ "limit": "LIMIT",
4
+ "boolean": "BOOLEAN",
5
+ "multiple": "MULTIPLE",
6
+ "numeric": "NUMERIC",
7
+ "amBestRating": "AM_BEST_RATING",
8
+ "amBestFinancialSizeCategory": "AM_BEST_FINANCIAL_SIZE_CATEGORY"
9
9
  }
@@ -1,22 +1,22 @@
1
- const REQUIREMENT_SHARING_LEVELS = {
2
- TAB: 'Tab',
3
- ACCOUNT: 'Account'
4
- };
5
-
6
- const leaseExtractionStatus = {
7
- pending: 'PENDING',
8
- inProgress: 'IN_PROGRESS',
9
- completed: 'COMPLETED',
10
- success: 'SUCCESS',
11
- canceled: 'CANCELED',
12
- closedReqSet: 'CLOSED_REQ_SET'
13
- };
14
-
15
- const DEFAULT_LEASE_PATH = 'packages/test-infra/src/resources/lease/defaultLease.pdf';
16
-
17
- const LEASE_TRIGGER_TYPES = {
18
- record: 'RECORD',
19
- tab: 'TAB'
20
- };
21
-
22
- module.exports = { REQUIREMENT_SHARING_LEVELS, leaseExtractionStatus, LEASE_TRIGGER_TYPES, DEFAULT_LEASE_PATH };
1
+ const REQUIREMENT_SHARING_LEVELS = {
2
+ TAB: 'Tab',
3
+ ACCOUNT: 'Account'
4
+ };
5
+
6
+ const leaseExtractionStatus = {
7
+ pending: 'PENDING',
8
+ inProgress: 'IN_PROGRESS',
9
+ completed: 'COMPLETED',
10
+ success: 'SUCCESS',
11
+ canceled: 'CANCELED',
12
+ closedReqSet: 'CLOSED_REQ_SET'
13
+ };
14
+
15
+ const DEFAULT_LEASE_PATH = 'packages/test-infra/src/resources/lease/defaultLease.pdf';
16
+
17
+ const LEASE_TRIGGER_TYPES = {
18
+ record: 'RECORD',
19
+ tab: 'TAB'
20
+ };
21
+
22
+ module.exports = { REQUIREMENT_SHARING_LEVELS, leaseExtractionStatus, LEASE_TRIGGER_TYPES, DEFAULT_LEASE_PATH };
@@ -1,22 +1,22 @@
1
- const createModel = require('./models/create.requirement.model');
2
- const updateModel = require('./models/update.requirement.model');
3
- const policyModel = require('./models/policy.model');
4
- const extractionRequestModel = require('./models/extraction.request.model');
5
- const tabExtractionRequestModel = require('./models/tab.extraction.request.model');
6
- const services = require('./api/requirements.service');
7
- const consts = require('./consts/consts');
8
- const utils = require('./utils/utils');
9
-
10
- const models = { create: createModel, update: updateModel, policy: policyModel, extractionRequest: extractionRequestModel, tabExtractionRequest: tabExtractionRequestModel };
11
-
12
- const leaseServices = require('./api/lease/lease.service');
13
-
14
- module.exports = {
15
- services,
16
- models,
17
- consts,
18
- utils,
19
- lease: {
20
- services: leaseServices
21
- }
22
- };
1
+ const createModel = require('./models/create.requirement.model');
2
+ const updateModel = require('./models/update.requirement.model');
3
+ const policyModel = require('./models/policy.model');
4
+ const extractionRequestModel = require('./models/extraction.request.model');
5
+ const tabExtractionRequestModel = require('./models/tab.extraction.request.model');
6
+ const services = require('./api/requirements.service');
7
+ const consts = require('./consts/consts');
8
+ const utils = require('./utils/utils');
9
+
10
+ const models = { create: createModel, update: updateModel, policy: policyModel, extractionRequest: extractionRequestModel, tabExtractionRequest: tabExtractionRequestModel };
11
+
12
+ const leaseServices = require('./api/lease/lease.service');
13
+
14
+ module.exports = {
15
+ services,
16
+ models,
17
+ consts,
18
+ utils,
19
+ lease: {
20
+ services: leaseServices
21
+ }
22
+ };
@@ -1,17 +1,17 @@
1
- const { validateType } = require('../../../../common/validations/typeValidations');
2
- const { PolicyModel } = require('./policy.model');
3
-
4
- const { REQUIREMENT_SHARING_LEVELS } = require('../consts/consts');
5
-
6
- class CreateRequirementModel {
7
- constructor(name, policies, sharingLevel = REQUIREMENT_SHARING_LEVELS.TAB) {
8
- this.name = name;
9
- this.policies = policies;
10
- this.sharingLevel = sharingLevel;
11
-
12
- validateType(policies, Array);
13
- policies.length > 0 && validateType(policies[0], PolicyModel);
14
- }
15
- }
16
-
17
- module.exports = { CreateRequirementModel };
1
+ const { validateType } = require('../../../../common/validations/typeValidations');
2
+ const { PolicyModel } = require('./policy.model');
3
+
4
+ const { REQUIREMENT_SHARING_LEVELS } = require('../consts/consts');
5
+
6
+ class CreateRequirementModel {
7
+ constructor(name, policies, sharingLevel = REQUIREMENT_SHARING_LEVELS.TAB) {
8
+ this.name = name;
9
+ this.policies = policies;
10
+ this.sharingLevel = sharingLevel;
11
+
12
+ validateType(policies, Array);
13
+ policies.length > 0 && validateType(policies[0], PolicyModel);
14
+ }
15
+ }
16
+
17
+ module.exports = { CreateRequirementModel };
@@ -1,16 +1,16 @@
1
- const { RELATED_DOC_TYPES } = require('../../uploadFiles/consts');
2
-
3
- class ExtractionRequestModel {
4
- // tempFileName, name, fileSize describe the lease to extract requirements from,
5
- // coiDoc is the optional on-behalf COI
6
- constructor({ tempFileName, name, fileSize, docType = RELATED_DOC_TYPES.LEASE, notes = null, coiDoc = null }) {
7
- this.tempFileName = tempFileName;
8
- this.name = name;
9
- this.fileSize = fileSize;
10
- this.docType = docType;
11
- this.notes = notes;
12
- this.coiDoc = coiDoc;
13
- }
14
- }
15
-
16
- module.exports = { ExtractionRequestModel };
1
+ const { RELATED_DOC_TYPES } = require('../../uploadFiles/consts');
2
+
3
+ class ExtractionRequestModel {
4
+ // tempFileName, name, fileSize describe the lease to extract requirements from,
5
+ // coiDoc is the optional on-behalf COI
6
+ constructor({ tempFileName, name, fileSize, docType = RELATED_DOC_TYPES.LEASE, notes = null, coiDoc = null }) {
7
+ this.tempFileName = tempFileName;
8
+ this.name = name;
9
+ this.fileSize = fileSize;
10
+ this.docType = docType;
11
+ this.notes = notes;
12
+ this.coiDoc = coiDoc;
13
+ }
14
+ }
15
+
16
+ module.exports = { ExtractionRequestModel };
@@ -1,35 +1,35 @@
1
- const Enum = require('enum');
2
- const { validateType } = require('../../../../common/validations/typeValidations');
3
-
4
- class PolicyModel {
5
- constructor(name, attributes) {
6
- this.policyName = name;
7
- this.attributes = attributes;
8
- validateType(attributes, Array);
9
- attributes && validateType(attributes[0], AttributeModel);
10
- }
11
- }
12
-
13
- class AttributeModel {
14
- constructor(name, type, values) {
15
- this.attributeName = name;
16
- this.type = type.value;
17
- this.values = values.map(value => ({ value }));
18
-
19
- if (!AttributeTypes.get(type) || !AttributeTypes.get(type.key)) {
20
- throw TypeError(`Expected type to be instance of: ${AttributeTypes.name}`);
21
- }
22
- }
23
- }
24
-
25
- const AttributeTypes = new Enum({
26
- 'ENDORSEMENT': 'endorsment', //typo in BE
27
- 'LIMIT': 'limit',
28
- 'BOOLEAN': 'boolean',
29
- 'NUMERIC': 'numeric',
30
- 'MULTIPLE': 'multiple',
31
- 'AM_BEST_RATING': 'amBestRating',
32
- 'AM_BEST_FINANCIAL_SIZE_CATEGORY': 'amBestFinancialSizeCategory'
33
- }, { name: 'AttributeTypes' });
34
-
35
- module.exports = { PolicyModel, AttributeModel, AttributeTypes };
1
+ const Enum = require('enum');
2
+ const { validateType } = require('../../../../common/validations/typeValidations');
3
+
4
+ class PolicyModel {
5
+ constructor(name, attributes) {
6
+ this.policyName = name;
7
+ this.attributes = attributes;
8
+ validateType(attributes, Array);
9
+ attributes && validateType(attributes[0], AttributeModel);
10
+ }
11
+ }
12
+
13
+ class AttributeModel {
14
+ constructor(name, type, values) {
15
+ this.attributeName = name;
16
+ this.type = type.value;
17
+ this.values = values.map(value => ({ value }));
18
+
19
+ if (!AttributeTypes.get(type) || !AttributeTypes.get(type.key)) {
20
+ throw TypeError(`Expected type to be instance of: ${AttributeTypes.name}`);
21
+ }
22
+ }
23
+ }
24
+
25
+ const AttributeTypes = new Enum({
26
+ 'ENDORSEMENT': 'endorsment', //typo in BE
27
+ 'LIMIT': 'limit',
28
+ 'BOOLEAN': 'boolean',
29
+ 'NUMERIC': 'numeric',
30
+ 'MULTIPLE': 'multiple',
31
+ 'AM_BEST_RATING': 'amBestRating',
32
+ 'AM_BEST_FINANCIAL_SIZE_CATEGORY': 'amBestFinancialSizeCategory'
33
+ }, { name: 'AttributeTypes' });
34
+
35
+ module.exports = { PolicyModel, AttributeModel, AttributeTypes };