@servicelabsco/slabs-access-manager 3.0.3 → 3.0.4

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 (300) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/dist/access/controllers/developer.entity.controller.d.ts +8 -0
  3. package/dist/access/controllers/developer.entity.controller.js +11 -0
  4. package/dist/access/controllers/developer.entity.controller.js.map +1 -1
  5. package/dist/access/controllers/event.trigger.controller.d.ts +3 -2
  6. package/dist/access/controllers/event.trigger.controller.js +5 -3
  7. package/dist/access/controllers/event.trigger.controller.js.map +1 -1
  8. package/dist/access/dtos/developer.entity.get.dto.d.ts +2 -0
  9. package/dist/access/dtos/developer.entity.get.dto.js +13 -0
  10. package/dist/access/dtos/developer.entity.get.dto.js.map +1 -1
  11. package/dist/access/dtos/developer.entity.meta.dto.d.ts +55 -0
  12. package/dist/access/dtos/developer.entity.meta.dto.js +19 -0
  13. package/dist/access/dtos/developer.entity.meta.dto.js.map +1 -0
  14. package/dist/access/dtos/index.d.ts +1 -1
  15. package/dist/access/dtos/index.js +1 -1
  16. package/dist/access/dtos/index.js.map +1 -1
  17. package/dist/access/dtos/update.developer.business.dto.d.ts +1 -0
  18. package/dist/access/dtos/update.developer.business.dto.js +8 -0
  19. package/dist/access/dtos/update.developer.business.dto.js.map +1 -1
  20. package/dist/access/entities/access.business.entity.d.ts +1 -0
  21. package/dist/access/entities/access.business.entity.js +4 -0
  22. package/dist/access/entities/access.business.entity.js.map +1 -1
  23. package/dist/access/entities/event.trigger.entity.d.ts +1 -0
  24. package/dist/access/entities/event.trigger.entity.js +4 -0
  25. package/dist/access/entities/event.trigger.entity.js.map +1 -1
  26. package/dist/access/es6.classes.d.ts +9 -10
  27. package/dist/access/es6.classes.js +9 -9
  28. package/dist/access/es6.classes.js.map +1 -1
  29. package/dist/access/jobs/index.d.ts +1 -0
  30. package/dist/access/jobs/index.js +1 -0
  31. package/dist/access/jobs/index.js.map +1 -1
  32. package/dist/access/jobs/overriding.script.job.d.ts +1 -2
  33. package/dist/access/jobs/overriding.script.job.js +5 -9
  34. package/dist/access/jobs/overriding.script.job.js.map +1 -1
  35. package/dist/access/jobs/overriding.system.script.job.d.ts +8 -0
  36. package/dist/access/jobs/overriding.system.script.job.js +40 -0
  37. package/dist/access/jobs/overriding.system.script.job.js.map +1 -0
  38. package/dist/access/libraries/business.url.d.ts +3 -0
  39. package/dist/access/libraries/business.url.js +13 -0
  40. package/dist/access/libraries/business.url.js.map +1 -0
  41. package/dist/access/libraries/describe.developer.entity.d.ts +19 -0
  42. package/dist/access/libraries/describe.developer.entity.js +143 -0
  43. package/dist/access/libraries/describe.developer.entity.js.map +1 -0
  44. package/dist/access/libraries/index.d.ts +3 -2
  45. package/dist/access/libraries/index.js +3 -2
  46. package/dist/access/libraries/index.js.map +1 -1
  47. package/dist/access/libraries/process.bulk.upload.item.list.js +1 -5
  48. package/dist/access/libraries/process.bulk.upload.item.list.js.map +1 -1
  49. package/dist/access/libraries/process.bulk.upload.list.js +1 -5
  50. package/dist/access/libraries/process.bulk.upload.list.js.map +1 -1
  51. package/dist/access/libraries/process.common.list.d.ts +2 -0
  52. package/dist/access/libraries/process.common.list.js +14 -1
  53. package/dist/access/libraries/process.common.list.js.map +1 -1
  54. package/dist/access/libraries/process.developer.entity.d.ts +11 -0
  55. package/dist/access/libraries/process.developer.entity.js +15 -4
  56. package/dist/access/libraries/process.developer.entity.js.map +1 -1
  57. package/dist/access/libraries/process.event.trigger.data.d.ts +5 -1
  58. package/dist/access/libraries/process.event.trigger.data.js +16 -1
  59. package/dist/access/libraries/process.event.trigger.data.js.map +1 -1
  60. package/dist/access/libraries/{send.slack.webhook.notification..js → send.slack.webhook.notification.js} +3 -3
  61. package/dist/access/libraries/send.slack.webhook.notification.js.map +1 -0
  62. package/dist/access/libraries/update.developer.business.js +3 -0
  63. package/dist/access/libraries/update.developer.business.js.map +1 -1
  64. package/dist/access/services/access.business.service.d.ts +2 -3
  65. package/dist/access/services/access.business.service.js +6 -6
  66. package/dist/access/services/access.business.service.js.map +1 -1
  67. package/dist/access/services/gmail.integration.service.d.ts +2 -3
  68. package/dist/access/services/gmail.integration.service.js +2 -4
  69. package/dist/access/services/gmail.integration.service.js.map +1 -1
  70. package/dist/access/services/index.d.ts +0 -2
  71. package/dist/access/services/index.js +0 -2
  72. package/dist/access/services/index.js.map +1 -1
  73. package/dist/access/services/notification.service.js +1 -1
  74. package/dist/access/services/notification.service.js.map +1 -1
  75. package/dist/access/services/overriding.script.service.d.ts +2 -0
  76. package/dist/access/services/overriding.script.service.js +14 -5
  77. package/dist/access/services/overriding.script.service.js.map +1 -1
  78. package/dist/accessUtility/controllers/index.d.ts +3 -0
  79. package/dist/accessUtility/controllers/index.js +3 -0
  80. package/dist/accessUtility/controllers/index.js.map +1 -1
  81. package/dist/accessUtility/controllers/remote.file.controller.d.ts +18 -0
  82. package/dist/accessUtility/controllers/remote.file.controller.js +83 -0
  83. package/dist/accessUtility/controllers/remote.file.controller.js.map +1 -0
  84. package/dist/accessUtility/controllers/remote.file.path.controller.d.ts +40 -0
  85. package/dist/accessUtility/controllers/remote.file.path.controller.js +216 -0
  86. package/dist/accessUtility/controllers/remote.file.path.controller.js.map +1 -0
  87. package/dist/accessUtility/controllers/remote.file.rule.controller.d.ts +36 -0
  88. package/dist/accessUtility/controllers/remote.file.rule.controller.js +81 -0
  89. package/dist/accessUtility/controllers/remote.file.rule.controller.js.map +1 -0
  90. package/dist/accessUtility/dtos/add.remote.file.path.dto.d.ts +12 -0
  91. package/dist/accessUtility/dtos/add.remote.file.path.dto.js +72 -0
  92. package/dist/accessUtility/dtos/add.remote.file.path.dto.js.map +1 -0
  93. package/dist/accessUtility/dtos/add.remote.file.rule.dto.d.ts +9 -0
  94. package/dist/accessUtility/dtos/add.remote.file.rule.dto.js +54 -0
  95. package/dist/accessUtility/dtos/add.remote.file.rule.dto.js.map +1 -0
  96. package/dist/accessUtility/dtos/bulk.upload.column.match.score.dto.d.ts +6 -0
  97. package/dist/accessUtility/dtos/bulk.upload.column.match.score.dto.js +4 -1
  98. package/dist/accessUtility/dtos/bulk.upload.column.match.score.dto.js.map +1 -1
  99. package/dist/accessUtility/dtos/check.remote.file.path.dto.d.ts +5 -0
  100. package/dist/accessUtility/dtos/check.remote.file.path.dto.js +37 -0
  101. package/dist/accessUtility/dtos/check.remote.file.path.dto.js.map +1 -0
  102. package/dist/accessUtility/dtos/index.d.ts +13 -1
  103. package/dist/accessUtility/dtos/index.js +13 -1
  104. package/dist/accessUtility/dtos/index.js.map +1 -1
  105. package/dist/accessUtility/dtos/poll.remote.file.paths.payload.dto.d.ts +4 -0
  106. package/dist/accessUtility/dtos/poll.remote.file.paths.payload.dto.js +7 -0
  107. package/dist/accessUtility/dtos/poll.remote.file.paths.payload.dto.js.map +1 -0
  108. package/dist/accessUtility/dtos/remote.file.attributes.dto.d.ts +10 -0
  109. package/dist/accessUtility/dtos/remote.file.attributes.dto.js +8 -0
  110. package/dist/accessUtility/dtos/remote.file.attributes.dto.js.map +1 -0
  111. package/dist/accessUtility/dtos/remote.file.list.filter.dto.d.ts +5 -0
  112. package/dist/accessUtility/dtos/remote.file.list.filter.dto.js +33 -0
  113. package/dist/accessUtility/dtos/remote.file.list.filter.dto.js.map +1 -0
  114. package/dist/accessUtility/dtos/remote.file.path.attributes.dto.d.ts +6 -0
  115. package/dist/accessUtility/dtos/remote.file.path.attributes.dto.js +8 -0
  116. package/dist/accessUtility/dtos/remote.file.path.attributes.dto.js.map +1 -0
  117. package/dist/accessUtility/dtos/remote.file.path.list.filter.dto.d.ts +4 -0
  118. package/dist/accessUtility/dtos/{lambda.zip.dto.js → remote.file.path.list.filter.dto.js} +10 -11
  119. package/dist/accessUtility/dtos/remote.file.path.list.filter.dto.js.map +1 -0
  120. package/dist/accessUtility/dtos/remote.file.path.setup.dto.d.ts +20 -0
  121. package/dist/accessUtility/dtos/remote.file.path.setup.dto.js +10 -0
  122. package/dist/accessUtility/dtos/remote.file.path.setup.dto.js.map +1 -0
  123. package/dist/accessUtility/dtos/remote.file.path.setup.query.dto.d.ts +4 -0
  124. package/dist/{access/dtos/add.business.app.integration.dto.js → accessUtility/dtos/remote.file.path.setup.query.dto.js} +10 -10
  125. package/dist/accessUtility/dtos/remote.file.path.setup.query.dto.js.map +1 -0
  126. package/dist/accessUtility/dtos/remote.file.path.verify.dto.d.ts +20 -0
  127. package/dist/accessUtility/dtos/remote.file.path.verify.dto.js +10 -0
  128. package/dist/accessUtility/dtos/remote.file.path.verify.dto.js.map +1 -0
  129. package/dist/accessUtility/dtos/remote.file.rule.attributes.dto.d.ts +3 -0
  130. package/dist/accessUtility/dtos/remote.file.rule.attributes.dto.js +8 -0
  131. package/dist/accessUtility/dtos/remote.file.rule.attributes.dto.js.map +1 -0
  132. package/dist/accessUtility/dtos/remote.file.rule.list.filter.dto.d.ts +3 -0
  133. package/dist/accessUtility/dtos/remote.file.rule.list.filter.dto.js +8 -0
  134. package/dist/accessUtility/dtos/remote.file.rule.list.filter.dto.js.map +1 -0
  135. package/dist/accessUtility/entities/index.d.ts +3 -0
  136. package/dist/accessUtility/entities/index.js +3 -0
  137. package/dist/accessUtility/entities/index.js.map +1 -1
  138. package/dist/accessUtility/entities/remote.file.entity.d.ts +25 -0
  139. package/dist/accessUtility/entities/remote.file.entity.js +100 -0
  140. package/dist/accessUtility/entities/remote.file.entity.js.map +1 -0
  141. package/dist/accessUtility/entities/remote.file.path.entity.d.ts +18 -0
  142. package/dist/accessUtility/entities/remote.file.path.entity.js +76 -0
  143. package/dist/accessUtility/entities/remote.file.path.entity.js.map +1 -0
  144. package/dist/accessUtility/entities/remote.file.rule.entity.d.ts +15 -0
  145. package/dist/accessUtility/entities/remote.file.rule.entity.js +65 -0
  146. package/dist/accessUtility/entities/remote.file.rule.entity.js.map +1 -0
  147. package/dist/accessUtility/enums/index.d.ts +1 -0
  148. package/dist/accessUtility/enums/index.js +1 -0
  149. package/dist/accessUtility/enums/index.js.map +1 -1
  150. package/dist/accessUtility/enums/remote.file.provider.enum.d.ts +6 -0
  151. package/dist/accessUtility/enums/remote.file.provider.enum.js +11 -0
  152. package/dist/accessUtility/enums/remote.file.provider.enum.js.map +1 -0
  153. package/dist/accessUtility/es6.classes.d.ts +39 -14
  154. package/dist/accessUtility/es6.classes.js +80 -6
  155. package/dist/accessUtility/es6.classes.js.map +1 -1
  156. package/dist/accessUtility/index.d.ts +0 -1
  157. package/dist/accessUtility/index.js +0 -1
  158. package/dist/accessUtility/index.js.map +1 -1
  159. package/dist/accessUtility/jobs/bulk.upload.job.d.ts +1 -4
  160. package/dist/accessUtility/jobs/bulk.upload.job.js +1 -12
  161. package/dist/accessUtility/jobs/bulk.upload.job.js.map +1 -1
  162. package/dist/accessUtility/jobs/evaluate.remote.file.rule.job.d.ts +11 -0
  163. package/dist/accessUtility/jobs/evaluate.remote.file.rule.job.js +37 -0
  164. package/dist/accessUtility/jobs/evaluate.remote.file.rule.job.js.map +1 -0
  165. package/dist/accessUtility/jobs/index.d.ts +3 -1
  166. package/dist/accessUtility/jobs/index.js +3 -1
  167. package/dist/accessUtility/jobs/index.js.map +1 -1
  168. package/dist/accessUtility/jobs/poll.remote.file.paths.job.d.ts +19 -0
  169. package/dist/accessUtility/jobs/poll.remote.file.paths.job.js +65 -0
  170. package/dist/accessUtility/jobs/poll.remote.file.paths.job.js.map +1 -0
  171. package/dist/accessUtility/jobs/remote.file.job.d.ts +9 -0
  172. package/dist/accessUtility/jobs/remote.file.job.js +38 -0
  173. package/dist/accessUtility/jobs/remote.file.job.js.map +1 -0
  174. package/dist/accessUtility/libraries/analyse.bulk.upload.js +1 -1
  175. package/dist/accessUtility/libraries/analyse.bulk.upload.js.map +1 -1
  176. package/dist/accessUtility/libraries/check.remote.file.path.access.d.ts +30 -0
  177. package/dist/accessUtility/libraries/check.remote.file.path.access.js +47 -0
  178. package/dist/accessUtility/libraries/check.remote.file.path.access.js.map +1 -0
  179. package/dist/accessUtility/libraries/evaluate.remote.file.rule.d.ts +13 -0
  180. package/dist/accessUtility/libraries/evaluate.remote.file.rule.js +76 -0
  181. package/dist/accessUtility/libraries/evaluate.remote.file.rule.js.map +1 -0
  182. package/dist/accessUtility/libraries/google.drive.remote.file.source.d.ts +17 -0
  183. package/dist/accessUtility/libraries/google.drive.remote.file.source.js +95 -0
  184. package/dist/accessUtility/libraries/google.drive.remote.file.source.js.map +1 -0
  185. package/dist/accessUtility/libraries/index.d.ts +13 -1
  186. package/dist/accessUtility/libraries/index.js +13 -1
  187. package/dist/accessUtility/libraries/index.js.map +1 -1
  188. package/dist/accessUtility/libraries/poll.remote.file.path.d.ts +12 -0
  189. package/dist/accessUtility/libraries/poll.remote.file.path.js +93 -0
  190. package/dist/accessUtility/libraries/poll.remote.file.path.js.map +1 -0
  191. package/dist/accessUtility/libraries/process.bulk.definition.list.js +1 -5
  192. package/dist/accessUtility/libraries/process.bulk.definition.list.js.map +1 -1
  193. package/dist/accessUtility/libraries/process.bulk.upload.column.list.js +1 -5
  194. package/dist/accessUtility/libraries/process.bulk.upload.column.list.js.map +1 -1
  195. package/dist/accessUtility/libraries/process.bulk.upload.definition.change.js +3 -2
  196. package/dist/accessUtility/libraries/process.bulk.upload.definition.change.js.map +1 -1
  197. package/dist/accessUtility/libraries/process.bulk.upload.type.list.js +1 -5
  198. package/dist/accessUtility/libraries/process.bulk.upload.type.list.js.map +1 -1
  199. package/dist/accessUtility/libraries/process.remote.file.list.d.ts +17 -0
  200. package/dist/accessUtility/libraries/process.remote.file.list.js +34 -0
  201. package/dist/accessUtility/libraries/process.remote.file.list.js.map +1 -0
  202. package/dist/accessUtility/libraries/process.remote.file.path.data.d.ts +18 -0
  203. package/dist/accessUtility/libraries/process.remote.file.path.data.js +71 -0
  204. package/dist/accessUtility/libraries/process.remote.file.path.data.js.map +1 -0
  205. package/dist/accessUtility/libraries/process.remote.file.path.list.d.ts +17 -0
  206. package/dist/accessUtility/libraries/process.remote.file.path.list.js +31 -0
  207. package/dist/accessUtility/libraries/process.remote.file.path.list.js.map +1 -0
  208. package/dist/accessUtility/libraries/process.remote.file.rule.data.d.ts +15 -0
  209. package/dist/accessUtility/libraries/process.remote.file.rule.data.js +60 -0
  210. package/dist/accessUtility/libraries/process.remote.file.rule.data.js.map +1 -0
  211. package/dist/accessUtility/libraries/process.remote.file.rule.list.d.ts +17 -0
  212. package/dist/accessUtility/libraries/process.remote.file.rule.list.js +29 -0
  213. package/dist/accessUtility/libraries/process.remote.file.rule.list.js.map +1 -0
  214. package/dist/accessUtility/libraries/remote.file.path.setup.d.ts +16 -0
  215. package/dist/accessUtility/libraries/remote.file.path.setup.js +83 -0
  216. package/dist/accessUtility/libraries/remote.file.path.setup.js.map +1 -0
  217. package/dist/accessUtility/libraries/remote.file.sources.d.ts +36 -0
  218. package/dist/accessUtility/libraries/remote.file.sources.js +22 -0
  219. package/dist/accessUtility/libraries/remote.file.sources.js.map +1 -0
  220. package/dist/accessUtility/libraries/storage.remote.file.source.d.ts +13 -0
  221. package/dist/accessUtility/libraries/storage.remote.file.source.js +42 -0
  222. package/dist/accessUtility/libraries/storage.remote.file.source.js.map +1 -0
  223. package/dist/accessUtility/libraries/verify.remote.file.path.d.ts +21 -0
  224. package/dist/accessUtility/libraries/verify.remote.file.path.js +154 -0
  225. package/dist/accessUtility/libraries/verify.remote.file.path.js.map +1 -0
  226. package/dist/accessUtility/services/aws.identity.service.d.ts +15 -0
  227. package/dist/accessUtility/services/aws.identity.service.js +56 -0
  228. package/dist/accessUtility/services/aws.identity.service.js.map +1 -0
  229. package/dist/accessUtility/services/index.d.ts +1 -0
  230. package/dist/accessUtility/services/index.js +1 -0
  231. package/dist/accessUtility/services/index.js.map +1 -1
  232. package/dist/accessUtility/services/lambda.service.d.ts +2 -3
  233. package/dist/accessUtility/services/lambda.service.js +2 -4
  234. package/dist/accessUtility/services/lambda.service.js.map +1 -1
  235. package/dist/accessUtility/services/match.bulk.upload.columns.service.d.ts +4 -0
  236. package/dist/accessUtility/services/match.bulk.upload.columns.service.js +28 -4
  237. package/dist/accessUtility/services/match.bulk.upload.columns.service.js.map +1 -1
  238. package/dist/accessUtility/subscribers/index.d.ts +3 -0
  239. package/dist/accessUtility/subscribers/index.js +3 -0
  240. package/dist/accessUtility/subscribers/index.js.map +1 -1
  241. package/dist/accessUtility/subscribers/remote.file.path.subscriber.d.ts +8 -0
  242. package/dist/accessUtility/subscribers/remote.file.path.subscriber.js +31 -0
  243. package/dist/accessUtility/subscribers/remote.file.path.subscriber.js.map +1 -0
  244. package/dist/accessUtility/subscribers/remote.file.rule.subscriber.d.ts +8 -0
  245. package/dist/accessUtility/subscribers/remote.file.rule.subscriber.js +31 -0
  246. package/dist/accessUtility/subscribers/remote.file.rule.subscriber.js.map +1 -0
  247. package/dist/accessUtility/subscribers/remote.file.subscriber.d.ts +8 -0
  248. package/dist/{access/services/request.log.service.js → accessUtility/subscribers/remote.file.subscriber.js} +18 -17
  249. package/dist/accessUtility/subscribers/remote.file.subscriber.js.map +1 -0
  250. package/dist/config/source.hash.d.ts +3 -0
  251. package/dist/config/source.hash.js +3 -0
  252. package/dist/config/source.hash.js.map +1 -1
  253. package/dist/development/dtos/material.view.catalog.attributes.dto.d.ts +0 -3
  254. package/dist/development/dtos/material.view.catalog.attributes.dto.js +0 -4
  255. package/dist/development/dtos/material.view.catalog.attributes.dto.js.map +1 -1
  256. package/dist/migrations/1790533017292-CreateRemoteFilePathTable.d.ts +5 -0
  257. package/dist/migrations/1790533017292-CreateRemoteFilePathTable.js +31 -0
  258. package/dist/migrations/1790533017292-CreateRemoteFilePathTable.js.map +1 -0
  259. package/dist/migrations/1790533017293-CreateRemoteFileRuleTable.d.ts +5 -0
  260. package/dist/migrations/1790533017293-CreateRemoteFileRuleTable.js +26 -0
  261. package/dist/migrations/1790533017293-CreateRemoteFileRuleTable.js.map +1 -0
  262. package/dist/migrations/1790533017294-CreateRemoteFileTable.d.ts +5 -0
  263. package/dist/migrations/1790533017294-CreateRemoteFileTable.js +33 -0
  264. package/dist/migrations/1790533017294-CreateRemoteFileTable.js.map +1 -0
  265. package/dist/migrations/1793722190500-EnsureUrlColumnBzBusinessDetailsTable.d.ts +5 -0
  266. package/dist/migrations/1793722190500-EnsureUrlColumnBzBusinessDetailsTable.js +13 -0
  267. package/dist/migrations/1793722190500-EnsureUrlColumnBzBusinessDetailsTable.js.map +1 -0
  268. package/dist/migrations/1793821797214-AddVersionColumnBzEventTriggersTable.d.ts +5 -0
  269. package/dist/migrations/1793821797214-AddVersionColumnBzEventTriggersTable.js +15 -0
  270. package/dist/migrations/1793821797214-AddVersionColumnBzEventTriggersTable.js.map +1 -0
  271. package/package.json +3 -2
  272. package/dist/access/dtos/add.business.app.integration.dto.d.ts +0 -4
  273. package/dist/access/dtos/add.business.app.integration.dto.js.map +0 -1
  274. package/dist/access/libraries/process.business.script.data.d.ts +0 -12
  275. package/dist/access/libraries/process.business.script.data.js +0 -36
  276. package/dist/access/libraries/process.business.script.data.js.map +0 -1
  277. package/dist/access/libraries/send.slack.webhook.notification..js.map +0 -1
  278. package/dist/access/services/app.integration.service.d.ts +0 -9
  279. package/dist/access/services/app.integration.service.js +0 -63
  280. package/dist/access/services/app.integration.service.js.map +0 -1
  281. package/dist/access/services/request.log.service.d.ts +0 -7
  282. package/dist/access/services/request.log.service.js.map +0 -1
  283. package/dist/accessUtility/accessUtility.module.d.ts +0 -2
  284. package/dist/accessUtility/accessUtility.module.js +0 -27
  285. package/dist/accessUtility/accessUtility.module.js.map +0 -1
  286. package/dist/accessUtility/dtos/lambda.zip.dto.d.ts +0 -4
  287. package/dist/accessUtility/dtos/lambda.zip.dto.js.map +0 -1
  288. package/dist/accessUtility/jobs/bulk.upload.column.match.job.d.ts +0 -13
  289. package/dist/accessUtility/jobs/bulk.upload.column.match.job.js +0 -61
  290. package/dist/accessUtility/jobs/bulk.upload.column.match.job.js.map +0 -1
  291. package/dist/accessUtility/libraries/process.report.listing.d.ts +0 -23
  292. package/dist/accessUtility/libraries/process.report.listing.js +0 -93
  293. package/dist/accessUtility/libraries/process.report.listing.js.map +0 -1
  294. package/dist/config/constants.d.ts +0 -10
  295. package/dist/config/constants.js +0 -12
  296. package/dist/config/constants.js.map +0 -1
  297. package/dist/config/redis.config.d.ts +0 -5
  298. package/dist/config/redis.config.js +0 -9
  299. package/dist/config/redis.config.js.map +0 -1
  300. /package/dist/access/libraries/{send.slack.webhook.notification..d.ts → send.slack.webhook.notification.d.ts} +0 -0
@@ -0,0 +1,15 @@
1
+ import { AccessBusinessEntity } from '../../access/entities/access.business.entity';
2
+ import { AddRemoteFileRuleDto } from '../dtos/add.remote.file.rule.dto';
3
+ import { RemoteFileRuleEntity } from '../entities/remote.file.rule.entity';
4
+ import { ProcessCommonData } from './process.common.data';
5
+ export declare class ProcessRemoteFileRuleData extends ProcessCommonData {
6
+ private readonly business;
7
+ protected payload: AddRemoteFileRuleDto;
8
+ constructor(business: AccessBusinessEntity);
9
+ process(payload: AddRemoteFileRuleDto): Promise<RemoteFileRuleEntity>;
10
+ private load;
11
+ private set;
12
+ private setScript;
13
+ private validate;
14
+ private validateUnique;
15
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProcessRemoteFileRuleData = void 0;
4
+ const nestjs_utility_services_1 = require("@servicelabsco/nestjs-utility-services");
5
+ const typeorm_1 = require("typeorm");
6
+ const SourceHash = require("../../config/source.hash");
7
+ const remote_file_rule_entity_1 = require("../entities/remote.file.rule.entity");
8
+ const process_common_data_1 = require("./process.common.data");
9
+ const SCRIPT_TYPE_ID = 14;
10
+ class ProcessRemoteFileRuleData extends process_common_data_1.ProcessCommonData {
11
+ constructor(business) {
12
+ super();
13
+ this.business = business;
14
+ }
15
+ async process(payload) {
16
+ this.payload = payload;
17
+ const entity = await this.load();
18
+ await this.validate();
19
+ return this.set(entity);
20
+ }
21
+ async load() {
22
+ if (!this.payload.id)
23
+ return remote_file_rule_entity_1.RemoteFileRuleEntity.create({ business_id: this.business.id, active: true, attributes: {} });
24
+ const entity = await remote_file_rule_entity_1.RemoteFileRuleEntity.findOne({ where: { id: this.payload.id, business_id: this.business.id, deleted_at: (0, typeorm_1.IsNull)() } });
25
+ if (!entity)
26
+ throw new nestjs_utility_services_1.AccessException();
27
+ return entity;
28
+ }
29
+ async set(entity) {
30
+ entity.name = this.payload.name;
31
+ entity.description = this.payload.description ?? null;
32
+ entity.priority = this.payload.priority;
33
+ entity.filter_condition = this.payload.filter_condition;
34
+ if (this.payload.active !== undefined)
35
+ entity.active = this.payload.active;
36
+ await entity.save();
37
+ const script = await this.setScript(entity);
38
+ entity.script_id = script.id;
39
+ return entity.save();
40
+ }
41
+ async setScript(rule) {
42
+ const script = await nestjs_utility_services_1.SystemScriptEntity.firstOrNew({ source_type: SourceHash.remoteFileRule, source_id: rule.id });
43
+ script.type_id = SCRIPT_TYPE_ID;
44
+ script.name = rule.name;
45
+ script.script = this.payload.script;
46
+ return script.save();
47
+ }
48
+ async validate() {
49
+ await this.validateUnique('name', (0, typeorm_1.ILike)(this.payload.name), 'Duplicate name');
50
+ await this.validateUnique('priority', this.payload.priority, 'Another rule with same priority already exists');
51
+ this.throwExceptionOnError();
52
+ }
53
+ async validateUnique(column, value, message) {
54
+ const record = await remote_file_rule_entity_1.RemoteFileRuleEntity.findOne({ where: { business_id: this.business.id, [column]: value, deleted_at: (0, typeorm_1.IsNull)() } });
55
+ if (record && record.id !== this.payload.id)
56
+ this.setColumnError(column, message);
57
+ }
58
+ }
59
+ exports.ProcessRemoteFileRuleData = ProcessRemoteFileRuleData;
60
+ //# sourceMappingURL=process.remote.file.rule.data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.remote.file.rule.data.js","sourceRoot":"","sources":["../../../src/accessUtility/libraries/process.remote.file.rule.data.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { ListResponseDto } from '../../access/dtos/list.response.dto';
2
+ import { AccessBusinessEntity } from '../../access/entities/access.business.entity';
3
+ import { ProcessCommonList } from '../../access/libraries/process.common.list';
4
+ import { ListingService } from '../../access/services/listing.service';
5
+ import { RemoteFileRuleListFilterDto } from '../dtos/remote.file.rule.list.filter.dto';
6
+ export declare class ProcessRemoteFileRuleList extends ProcessCommonList {
7
+ protected readonly business: AccessBusinessEntity;
8
+ protected readonly listingService: ListingService;
9
+ protected filter: RemoteFileRuleListFilterDto;
10
+ protected config: {
11
+ sql: string;
12
+ order: string;
13
+ columns: string[];
14
+ };
15
+ constructor(business: AccessBusinessEntity, listingService: ListingService);
16
+ process(filter: RemoteFileRuleListFilterDto): Promise<ListResponseDto>;
17
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProcessRemoteFileRuleList = void 0;
4
+ const process_common_list_1 = require("../../access/libraries/process.common.list");
5
+ class ProcessRemoteFileRuleList extends process_common_list_1.ProcessCommonList {
6
+ constructor(business, listingService) {
7
+ super();
8
+ this.business = business;
9
+ this.listingService = listingService;
10
+ this.config = {
11
+ sql: `bz_remote_file_rules a where a.deleted_at is null`,
12
+ order: 'sq.priority asc, sq.id asc',
13
+ columns: ['a.*'],
14
+ };
15
+ }
16
+ async process(filter) {
17
+ this.filter = filter;
18
+ await this.initialize();
19
+ this.restrictions.push(`a.business_id = ${Number(this.business.id)}`);
20
+ this.filterActive();
21
+ if (this.filter.search) {
22
+ const str = this.quote(`%${this.filter.search}%`);
23
+ this.restrictions.push(`(a.name ilike ${str} or a.description ilike ${str})`);
24
+ }
25
+ return this.handle();
26
+ }
27
+ }
28
+ exports.ProcessRemoteFileRuleList = ProcessRemoteFileRuleList;
29
+ //# sourceMappingURL=process.remote.file.rule.list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.remote.file.rule.list.js","sourceRoot":"","sources":["../../../src/accessUtility/libraries/process.remote.file.rule.list.ts"],"names":[],"mappings":";;;AAEA,oFAA+E;AAW/E,MAAa,yBAA0B,SAAQ,uCAAiB;IAQ5D,YACuB,QAA8B,EAC9B,cAA8B;QAEjD,KAAK,EAAE,CAAC;QAHW,aAAQ,GAAR,QAAQ,CAAsB;QAC9B,mBAAc,GAAd,cAAc,CAAgB;QAR3C,WAAM,GAAG;YACf,GAAG,EAAE,mDAAmD;YACxD,KAAK,EAAE,4BAA4B;YACnC,OAAO,EAAE,CAAC,KAAK,CAAC;SACnB,CAAC;IAOF,CAAC;IAMD,KAAK,CAAC,OAAO,CAAC,MAAmC;QAC7C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAExB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YAClD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,GAAG,2BAA2B,GAAG,GAAG,CAAC,CAAC;QAClF,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC;CACJ;AAhCD,8DAgCC"}
@@ -0,0 +1,16 @@
1
+ import { PropertyService } from '@servicelabsco/nestjs-utility-services';
2
+ import { RemoteFilePathSetupDto } from '../dtos/remote.file.path.setup.dto';
3
+ import { AwsIdentityService } from '../services/aws.identity.service';
4
+ export declare const AWS_PRINCIPAL_PROPERTY = "remote.file.aws.principal";
5
+ export declare class RemoteFilePathSetup {
6
+ private readonly propertyService;
7
+ private readonly awsIdentityService;
8
+ constructor(propertyService: PropertyService, awsIdentityService: AwsIdentityService);
9
+ all(): Promise<RemoteFilePathSetupDto[]>;
10
+ s3(location?: {
11
+ bucket?: string;
12
+ path?: string;
13
+ }): Promise<RemoteFilePathSetupDto>;
14
+ private principal;
15
+ private bucketPolicy;
16
+ }
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RemoteFilePathSetup = exports.AWS_PRINCIPAL_PROPERTY = void 0;
4
+ const remote_file_provider_enum_1 = require("../enums/remote.file.provider.enum");
5
+ const check_remote_file_path_access_1 = require("./check.remote.file.path.access");
6
+ exports.AWS_PRINCIPAL_PROPERTY = 'remote.file.aws.principal';
7
+ class RemoteFilePathSetup {
8
+ constructor(propertyService, awsIdentityService) {
9
+ this.propertyService = propertyService;
10
+ this.awsIdentityService = awsIdentityService;
11
+ }
12
+ async all() {
13
+ const s3 = await this.s3();
14
+ return [s3];
15
+ }
16
+ async s3(location = {}) {
17
+ const principal = await this.principal();
18
+ const bucket = (location.bucket || '').trim() || '<bucket>';
19
+ const path = check_remote_file_path_access_1.CheckRemoteFilePathAccess.normalizePath(location.path || '');
20
+ return {
21
+ provider: remote_file_provider_enum_1.RemoteFileProviderEnum.S3,
22
+ label: 'Amazon S3 bucket',
23
+ platform_identity: { type: 'aws_principal', label: 'Grant read access to', value: principal || null },
24
+ fields: [
25
+ {
26
+ name: 'bucket',
27
+ label: 'Bucket name',
28
+ required: true,
29
+ help: 'The bucket name only, without s3:// or a URL.',
30
+ example: 'acme-invoices',
31
+ },
32
+ {
33
+ name: 'path',
34
+ label: 'Folder (prefix)',
35
+ required: true,
36
+ help: 'The folder inside the bucket to watch. Sub-folders are included.',
37
+ example: 'incoming/invoices/',
38
+ },
39
+ ],
40
+ steps: [
41
+ `In the AWS console open S3 → ${bucket} → Permissions → Bucket policy.`,
42
+ `Add the statements below, which let ${principal || "the platform's AWS principal (ask the platform team for it)"} list the bucket and read files under ${path || 'the whole bucket'}. Keep any statements already there.`,
43
+ 'If the bucket is encrypted with a KMS key (SSE-KMS), also allow the same principal kms:Decrypt on that key.',
44
+ 'Enter the bucket name and folder, then run Verify.',
45
+ ],
46
+ policy: this.bucketPolicy(principal || '<platform AWS principal ARN>', bucket, path),
47
+ notes: [
48
+ "Listing is granted on the whole bucket because the platform lists the bucket and filters by folder; only the folder's files can be read.",
49
+ "The bucket must be in the same AWS region as the platform's storage; Verify reports a region mismatch.",
50
+ ],
51
+ };
52
+ }
53
+ async principal() {
54
+ const configured = await this.propertyService.get(exports.AWS_PRINCIPAL_PROPERTY, null);
55
+ if (configured)
56
+ return configured;
57
+ const identity = await this.awsIdentityService.get();
58
+ return identity?.principal || null;
59
+ }
60
+ bucketPolicy(principal, bucket, path) {
61
+ return {
62
+ Version: '2012-10-17',
63
+ Statement: [
64
+ {
65
+ Sid: 'RemoteFileList',
66
+ Effect: 'Allow',
67
+ Principal: { AWS: principal },
68
+ Action: 's3:ListBucket',
69
+ Resource: `arn:aws:s3:::${bucket}`,
70
+ },
71
+ {
72
+ Sid: 'RemoteFileRead',
73
+ Effect: 'Allow',
74
+ Principal: { AWS: principal },
75
+ Action: 's3:GetObject',
76
+ Resource: `arn:aws:s3:::${bucket}/${path}*`,
77
+ },
78
+ ],
79
+ };
80
+ }
81
+ }
82
+ exports.RemoteFilePathSetup = RemoteFilePathSetup;
83
+ //# sourceMappingURL=remote.file.path.setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote.file.path.setup.js","sourceRoot":"","sources":["../../../src/accessUtility/libraries/remote.file.path.setup.ts"],"names":[],"mappings":";;;AAEA,kFAA4E;AAE5E,mFAA4E;AAG/D,QAAA,sBAAsB,GAAG,2BAA2B,CAAC;AAYlE,MAAa,mBAAmB;IAC5B,YACqB,eAAgC,EAChC,kBAAsC;QADtC,oBAAe,GAAf,eAAe,CAAiB;QAChC,uBAAkB,GAAlB,kBAAkB,CAAoB;IACxD,CAAC;IAKJ,KAAK,CAAC,GAAG;QACL,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC;QAE3B,OAAO,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;IAMD,KAAK,CAAC,EAAE,CAAC,WAA+C,EAAE;QACtD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,UAAU,CAAC;QAC5D,MAAM,IAAI,GAAG,yDAAyB,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAE1E,OAAO;YACH,QAAQ,EAAE,kDAAsB,CAAC,EAAE;YACnC,KAAK,EAAE,kBAAkB;YACzB,iBAAiB,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,SAAS,IAAI,IAAI,EAAE;YACrG,MAAM,EAAE;gBACJ;oBACI,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,aAAa;oBACpB,QAAQ,EAAE,IAAI;oBACd,IAAI,EAAE,+CAA+C;oBACrD,OAAO,EAAE,eAAe;iBAC3B;gBACD;oBACI,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,iBAAiB;oBACxB,QAAQ,EAAE,IAAI;oBACd,IAAI,EAAE,kEAAkE;oBACxE,OAAO,EAAE,oBAAoB;iBAChC;aACJ;YACD,KAAK,EAAE;gBACH,gCAAgC,MAAM,iCAAiC;gBACvE,uCAAuC,SAAS,IAAI,6DAA6D,yCAAyC,IAAI,IAAI,kBAAkB,sCAAsC;gBAC1N,6GAA6G;gBAC7G,oDAAoD;aACvD;YACD,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,IAAI,8BAA8B,EAAE,MAAM,EAAE,IAAI,CAAC;YACpF,KAAK,EAAE;gBACH,0IAA0I;gBAC1I,wGAAwG;aAC3G;SACJ,CAAC;IACN,CAAC;IAGO,KAAK,CAAC,SAAS;QACnB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,8BAAsB,EAAE,IAAI,CAAC,CAAC;QAChF,IAAI,UAAU;YAAE,OAAO,UAAU,CAAC;QAElC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC;QAErD,OAAO,QAAQ,EAAE,SAAS,IAAI,IAAI,CAAC;IACvC,CAAC;IAEO,YAAY,CAAC,SAAiB,EAAE,MAAc,EAAE,IAAY;QAChE,OAAO;YACH,OAAO,EAAE,YAAY;YACrB,SAAS,EAAE;gBACP;oBACI,GAAG,EAAE,gBAAgB;oBACrB,MAAM,EAAE,OAAO;oBACf,SAAS,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE;oBAC7B,MAAM,EAAE,eAAe;oBACvB,QAAQ,EAAE,gBAAgB,MAAM,EAAE;iBACrC;gBACD;oBACI,GAAG,EAAE,gBAAgB;oBACrB,MAAM,EAAE,OAAO;oBACf,SAAS,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE;oBAC7B,MAAM,EAAE,cAAc;oBACtB,QAAQ,EAAE,gBAAgB,MAAM,IAAI,IAAI,GAAG;iBAC9C;aACJ;SACJ,CAAC;IACN,CAAC;CACJ;AAzFD,kDAyFC"}
@@ -0,0 +1,36 @@
1
+ import { StorageService } from '@servicelabsco/nestjs-utility-services';
2
+ import { GoogleDriveService } from '../services/google.drive.service';
3
+ export interface RemoteFileLocation {
4
+ bucket: string;
5
+ path: string;
6
+ recursive?: boolean;
7
+ max_keys?: number;
8
+ }
9
+ export interface RemoteFileObject {
10
+ key: string;
11
+ name: string;
12
+ url: string | null;
13
+ etag: string | null;
14
+ size: number | null;
15
+ content_type: string | null;
16
+ modified_at: Date | null;
17
+ attributes?: Record<string, any>;
18
+ }
19
+ export interface RemoteFileListPage {
20
+ objects: RemoteFileObject[];
21
+ nextToken?: string;
22
+ }
23
+ export interface RemoteFileSourceInterface {
24
+ list(location: RemoteFileLocation, token?: string): Promise<RemoteFileListPage>;
25
+ check(location: RemoteFileLocation): Promise<{
26
+ sample_count?: number;
27
+ sample_key?: string;
28
+ name?: string;
29
+ }>;
30
+ }
31
+ export declare class RemoteFileSources {
32
+ private readonly storageService;
33
+ private readonly googleDriveService?;
34
+ constructor(storageService: StorageService, googleDriveService?: GoogleDriveService);
35
+ for(provider: string): RemoteFileSourceInterface;
36
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RemoteFileSources = void 0;
4
+ const nestjs_utility_services_1 = require("@servicelabsco/nestjs-utility-services");
5
+ const remote_file_provider_enum_1 = require("../enums/remote.file.provider.enum");
6
+ const google_drive_remote_file_source_1 = require("./google.drive.remote.file.source");
7
+ const storage_remote_file_source_1 = require("./storage.remote.file.source");
8
+ class RemoteFileSources {
9
+ constructor(storageService, googleDriveService) {
10
+ this.storageService = storageService;
11
+ this.googleDriveService = googleDriveService;
12
+ }
13
+ for(provider) {
14
+ if (provider === remote_file_provider_enum_1.RemoteFileProviderEnum.S3 || provider === remote_file_provider_enum_1.RemoteFileProviderEnum.R2)
15
+ return new storage_remote_file_source_1.StorageRemoteFileSource(this.storageService, provider);
16
+ if (provider === remote_file_provider_enum_1.RemoteFileProviderEnum.GOOGLE_DRIVE && this.googleDriveService)
17
+ return new google_drive_remote_file_source_1.GoogleDriveRemoteFileSource(this.googleDriveService);
18
+ throw new nestjs_utility_services_1.OperationException(`Unsupported remote file provider: ${provider}`);
19
+ }
20
+ }
21
+ exports.RemoteFileSources = RemoteFileSources;
22
+ //# sourceMappingURL=remote.file.sources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote.file.sources.js","sourceRoot":"","sources":["../../../src/accessUtility/libraries/remote.file.sources.ts"],"names":[],"mappings":";;;AAAA,oFAA4F;AAC5F,kFAA4E;AAE5E,uFAAgF;AAChF,6EAAuE;AA8CvE,MAAa,iBAAiB;IAC1B,YACqB,cAA8B,EAC9B,kBAAuC;QADvC,mBAAc,GAAd,cAAc,CAAgB;QAC9B,uBAAkB,GAAlB,kBAAkB,CAAqB;IACzD,CAAC;IAOJ,GAAG,CAAC,QAAgB;QAChB,IAAI,QAAQ,KAAK,kDAAsB,CAAC,EAAE,IAAI,QAAQ,KAAK,kDAAsB,CAAC,EAAE;YAChF,OAAO,IAAI,oDAAuB,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QACtE,IAAI,QAAQ,KAAK,kDAAsB,CAAC,YAAY,IAAI,IAAI,CAAC,kBAAkB;YAC3E,OAAO,IAAI,6DAA2B,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAEpE,MAAM,IAAI,4CAAkB,CAAC,qCAAqC,QAAQ,EAAE,CAAC,CAAC;IAClF,CAAC;CACJ;AAnBD,8CAmBC"}
@@ -0,0 +1,13 @@
1
+ import { StorageService } from '@servicelabsco/nestjs-utility-services';
2
+ import { RemoteFileListPage, RemoteFileLocation, RemoteFileSourceInterface } from './remote.file.sources';
3
+ export declare class StorageRemoteFileSource implements RemoteFileSourceInterface {
4
+ private readonly storageService;
5
+ private readonly engine;
6
+ constructor(storageService: StorageService, engine: string);
7
+ list(location: RemoteFileLocation, token?: string): Promise<RemoteFileListPage>;
8
+ check(location: RemoteFileLocation): Promise<{
9
+ sample_count: number;
10
+ sample_key: string;
11
+ }>;
12
+ private toObject;
13
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StorageRemoteFileSource = void 0;
4
+ const DEFAULT_MAX_KEYS = 200;
5
+ class StorageRemoteFileSource {
6
+ constructor(storageService, engine) {
7
+ this.storageService = storageService;
8
+ this.engine = engine;
9
+ }
10
+ async list(location, token) {
11
+ const listed = await this.storageService.list({
12
+ engine: this.engine,
13
+ bucket: location.bucket,
14
+ prefix: location.path,
15
+ delimiter: location.recursive === false ? '/' : undefined,
16
+ maxKeys: location.max_keys || DEFAULT_MAX_KEYS,
17
+ continuationToken: token,
18
+ });
19
+ const objects = (listed.objects || [])
20
+ .filter((object) => object?.key && !object.key.endsWith('/'))
21
+ .map((object) => this.toObject(location, object));
22
+ return { objects, nextToken: listed.nextToken };
23
+ }
24
+ async check(location) {
25
+ const listed = await this.storageService.list({ engine: this.engine, bucket: location.bucket, prefix: location.path, maxKeys: 1 });
26
+ const sample = (listed.objects || []).find((object) => object?.key && !object.key.endsWith('/'));
27
+ return { sample_count: listed.objects?.length || 0, sample_key: sample?.key };
28
+ }
29
+ toObject(location, object) {
30
+ return {
31
+ key: object.key,
32
+ name: object.key.split('/').pop() || object.key,
33
+ url: object.url || this.storageService.publicUrl({ engine: this.engine, bucket: location.bucket, key: object.key }),
34
+ etag: object.etag || null,
35
+ size: object.size != null ? Number(object.size) : null,
36
+ content_type: object.contentType || null,
37
+ modified_at: object.lastModified || null,
38
+ };
39
+ }
40
+ }
41
+ exports.StorageRemoteFileSource = StorageRemoteFileSource;
42
+ //# sourceMappingURL=storage.remote.file.source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.remote.file.source.js","sourceRoot":"","sources":["../../../src/accessUtility/libraries/storage.remote.file.source.ts"],"names":[],"mappings":";;;AAGA,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAQ7B,MAAa,uBAAuB;IAChC,YACqB,cAA8B,EAC9B,MAAc;QADd,mBAAc,GAAd,cAAc,CAAgB;QAC9B,WAAM,GAAN,MAAM,CAAQ;IAChC,CAAC;IAEJ,KAAK,CAAC,IAAI,CAAC,QAA4B,EAAE,KAAc;QACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YAC1C,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,MAAM,EAAE,QAAQ,CAAC,IAAI;YACrB,SAAS,EAAE,QAAQ,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;YACzD,OAAO,EAAE,QAAQ,CAAC,QAAQ,IAAI,gBAAgB;YAC9C,iBAAiB,EAAE,KAAK;SAC3B,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;aACjC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aAC5D,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QAEtD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAA4B;QACpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACnI,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QAEjG,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAClF,CAAC;IAEO,QAAQ,CAAC,QAA4B,EAAE,MAAW;QACtD,OAAO;YACH,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,GAAG;YAC/C,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;YACnH,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;YACzB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;YACtD,YAAY,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI;YACxC,WAAW,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI;SAC3C,CAAC;IACN,CAAC;CACJ;AAzCD,0DAyCC"}
@@ -0,0 +1,21 @@
1
+ import { StorageService } from '@servicelabsco/nestjs-utility-services';
2
+ import { RemoteFilePathVerifyDto } from '../dtos/remote.file.path.verify.dto';
3
+ import { CheckRemoteFilePathInput } from './check.remote.file.path.access';
4
+ import { RemoteFilePathSetup } from './remote.file.path.setup';
5
+ import { RemoteFileSources } from './remote.file.sources';
6
+ export declare class VerifyRemoteFilePath {
7
+ private readonly sources;
8
+ private readonly setup;
9
+ private readonly storageService;
10
+ private checks;
11
+ constructor(sources: RemoteFileSources, setup: RemoteFilePathSetup, storageService: StorageService);
12
+ process(input: CheckRemoteFilePathInput): Promise<RemoteFilePathVerifyDto>;
13
+ private reach;
14
+ private succeed;
15
+ private fail;
16
+ private validateLocation;
17
+ private diagnose;
18
+ private pass;
19
+ private code;
20
+ private message;
21
+ }
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VerifyRemoteFilePath = void 0;
4
+ const remote_file_provider_enum_1 = require("../enums/remote.file.provider.enum");
5
+ const check_remote_file_path_access_1 = require("./check.remote.file.path.access");
6
+ class VerifyRemoteFilePath {
7
+ constructor(sources, setup, storageService) {
8
+ this.sources = sources;
9
+ this.setup = setup;
10
+ this.storageService = storageService;
11
+ this.checks = [];
12
+ }
13
+ async process(input) {
14
+ this.checks = [];
15
+ const location = check_remote_file_path_access_1.CheckRemoteFilePathAccess.normalize(input);
16
+ const base = { ...location, found: {}, code: null, error: null };
17
+ const invalid = this.validateLocation(location);
18
+ if (invalid)
19
+ return this.fail(base, invalid);
20
+ this.pass('location', 'The location is well formed.');
21
+ let found;
22
+ try {
23
+ found = await this.reach(location);
24
+ }
25
+ catch (error) {
26
+ const diagnosis = await this.diagnose(location, error);
27
+ return this.fail({ ...base, code: this.code(error), error: this.message(error) }, diagnosis);
28
+ }
29
+ return this.succeed({ ...base, found });
30
+ }
31
+ async reach(location) {
32
+ const found = await this.sources.for(location.provider).check(location);
33
+ this.pass('list', 'The platform can list the bucket.');
34
+ if (!found.sample_key)
35
+ return found;
36
+ await this.storageService.head({ engine: location.provider, bucket: location.bucket, key: found.sample_key });
37
+ this.pass('read', 'The platform can read files under the path.');
38
+ return found;
39
+ }
40
+ succeed(result) {
41
+ if (result.found.sample_count)
42
+ return { ...result, ok: true, status: 'ok', checks: this.checks, suggestions: [] };
43
+ return {
44
+ ...result,
45
+ ok: true,
46
+ status: 'empty',
47
+ checks: this.checks,
48
+ suggestions: [
49
+ 'No files found yet. Check the folder name; files added later are picked up on the next poll.',
50
+ 'On the current storage version only the first 1000 files of the bucket are listed, so a folder whose files sort after them looks empty.',
51
+ ],
52
+ };
53
+ }
54
+ fail(result, diagnosis) {
55
+ this.checks.push({ name: diagnosis.check, ok: false, message: diagnosis.message });
56
+ return { ...result, ok: false, status: diagnosis.status, checks: this.checks, suggestions: diagnosis.suggestions };
57
+ }
58
+ validateLocation(location) {
59
+ if (!remote_file_provider_enum_1.SUPPORTED_REMOTE_FILE_PROVIDERS.includes(location.provider)) {
60
+ return {
61
+ status: 'invalid_location',
62
+ check: 'location',
63
+ message: `Provider ${location.provider} is not supported.`,
64
+ suggestions: ['Use an S3 bucket.'],
65
+ };
66
+ }
67
+ if (!location.bucket || /[\s/:]/.test(location.bucket)) {
68
+ return {
69
+ status: 'invalid_location',
70
+ check: 'location',
71
+ message: 'The bucket name is missing or not a bucket name.',
72
+ suggestions: ['Enter the bucket name only, without s3://, a URL or the folder.'],
73
+ };
74
+ }
75
+ return null;
76
+ }
77
+ async diagnose(location, error) {
78
+ const setup = await this.setup.s3(location);
79
+ const principal = setup.platform_identity.value || "the platform's AWS principal";
80
+ const code = (this.code(error) || '').toLowerCase();
81
+ const message = this.message(error);
82
+ const reading = this.checks.some((check) => check.name === 'list');
83
+ if (/unknown storage engine|invalidaccesskeyid|signaturedoesnotmatch|not working/i.test(`${code} ${message}`)) {
84
+ return {
85
+ status: 'not_configured',
86
+ check: 'configured',
87
+ message: "The platform's S3 access is not set up.",
88
+ suggestions: ['Ask the platform team to check the storage configuration.'],
89
+ };
90
+ }
91
+ if (code === 'nosuchbucket' || code === '404' || code === 'notfound') {
92
+ if (reading) {
93
+ return {
94
+ status: 'read_denied',
95
+ check: 'read',
96
+ message: 'A listed file could not be read.',
97
+ suggestions: ['Run Verify again; if it repeats, check the file was not deleted while verifying.'],
98
+ };
99
+ }
100
+ return {
101
+ status: 'not_found',
102
+ check: 'list',
103
+ message: `The bucket ${location.bucket} does not exist.`,
104
+ suggestions: ['Check the bucket name for typos.'],
105
+ };
106
+ }
107
+ if (['permanentredirect', '301', 'authorizationheadermalformed', 'illegallocationconstraintexception'].includes(code)) {
108
+ return {
109
+ status: 'wrong_region',
110
+ check: 'list',
111
+ message: "The bucket is in a different region than the platform's storage.",
112
+ suggestions: ["Use a bucket in the same region as the platform's storage, or ask the platform team."],
113
+ };
114
+ }
115
+ if (code === 'accessdenied' || code === '403' || code === 'forbidden' || /access denied/i.test(message)) {
116
+ if (reading) {
117
+ return {
118
+ status: 'read_denied',
119
+ check: 'read',
120
+ message: 'The platform can list the bucket but not read its files.',
121
+ suggestions: [
122
+ `Allow s3:GetObject on arn:aws:s3:::${location.bucket}/${location.path}* for ${principal} (see the setup policy).`,
123
+ 'If the bucket uses a KMS key, allow the same principal kms:Decrypt on it.',
124
+ ],
125
+ };
126
+ }
127
+ return {
128
+ status: 'access_denied',
129
+ check: 'list',
130
+ message: 'The platform is not allowed to list the bucket.',
131
+ suggestions: setup.steps.slice(0, 2),
132
+ };
133
+ }
134
+ return {
135
+ status: 'unknown_error',
136
+ check: reading ? 'read' : 'list',
137
+ message: message || 'S3 refused the request.',
138
+ suggestions: ['Check the bucket and folder, then try again; share the error with the platform team if it repeats.'],
139
+ };
140
+ }
141
+ pass(name, message) {
142
+ this.checks.push({ name, ok: true, message });
143
+ }
144
+ code(error) {
145
+ const name = error?.name && !/^(Error|.*Exception)$/.test(error.name) ? error.name : null;
146
+ const code = error?.Code || error?.code || name || error?.$metadata?.httpStatusCode || error?.response?.status;
147
+ return code != null ? String(code) : null;
148
+ }
149
+ message(error) {
150
+ return error?.message || error?.Message || String(error);
151
+ }
152
+ }
153
+ exports.VerifyRemoteFilePath = VerifyRemoteFilePath;
154
+ //# sourceMappingURL=verify.remote.file.path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.remote.file.path.js","sourceRoot":"","sources":["../../../src/accessUtility/libraries/verify.remote.file.path.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { AwsClientFactory } from '@servicelabsco/nestjs-utility-services';
2
+ export interface AwsIdentity {
3
+ arn: string;
4
+ account: string;
5
+ user_id: string;
6
+ principal: string;
7
+ }
8
+ export declare class AwsIdentityService {
9
+ private readonly awsClientFactory;
10
+ private identity;
11
+ private readonly logger;
12
+ constructor(awsClientFactory: AwsClientFactory);
13
+ get(): Promise<AwsIdentity | null>;
14
+ static principalOf(arn: string): string;
15
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var AwsIdentityService_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.AwsIdentityService = void 0;
14
+ const client_sts_1 = require("@aws-sdk/client-sts");
15
+ const common_1 = require("@nestjs/common");
16
+ const nestjs_utility_services_1 = require("@servicelabsco/nestjs-utility-services");
17
+ let AwsIdentityService = AwsIdentityService_1 = class AwsIdentityService {
18
+ constructor(awsClientFactory) {
19
+ this.awsClientFactory = awsClientFactory;
20
+ this.identity = null;
21
+ this.logger = new common_1.Logger(AwsIdentityService_1.name);
22
+ }
23
+ async get() {
24
+ if (this.identity)
25
+ return this.identity;
26
+ try {
27
+ const client = await this.awsClientFactory.create(client_sts_1.STSClient);
28
+ const response = await client.send(new client_sts_1.GetCallerIdentityCommand({}));
29
+ if (!response.Arn)
30
+ return null;
31
+ this.identity = {
32
+ arn: response.Arn,
33
+ account: response.Account,
34
+ user_id: response.UserId,
35
+ principal: AwsIdentityService_1.principalOf(response.Arn),
36
+ };
37
+ return this.identity;
38
+ }
39
+ catch (error) {
40
+ this.logger.warn(`GetCallerIdentity failed: ${error?.message ?? error}`);
41
+ return null;
42
+ }
43
+ }
44
+ static principalOf(arn) {
45
+ const assumed = arn.match(/^arn:(aws[\w-]*):sts::(\d+):assumed-role\/([^/]+)\/.+$/);
46
+ if (assumed)
47
+ return `arn:${assumed[1]}:iam::${assumed[2]}:role/${assumed[3]}`;
48
+ return arn;
49
+ }
50
+ };
51
+ exports.AwsIdentityService = AwsIdentityService;
52
+ exports.AwsIdentityService = AwsIdentityService = AwsIdentityService_1 = __decorate([
53
+ (0, common_1.Injectable)(),
54
+ __metadata("design:paramtypes", [nestjs_utility_services_1.AwsClientFactory])
55
+ ], AwsIdentityService);
56
+ //# sourceMappingURL=aws.identity.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws.identity.service.js","sourceRoot":"","sources":["../../../src/accessUtility/services/aws.identity.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,oDAA0E;AAC1E,2CAAoD;AACpD,oFAA0E;AAkBnE,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAI3B,YAA6B,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAHvD,aAAQ,GAAuB,IAAI,CAAC;QAC3B,WAAM,GAAG,IAAI,eAAM,CAAC,oBAAkB,CAAC,IAAI,CAAC,CAAC;IAEI,CAAC;IAKnE,KAAK,CAAC,GAAG;QACL,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;QAExC,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,sBAAS,CAAC,CAAC;YAC7D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,qCAAwB,CAAC,EAAE,CAAC,CAAC,CAAC;YACrE,IAAI,CAAC,QAAQ,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC;YAE/B,IAAI,CAAC,QAAQ,GAAG;gBACZ,GAAG,EAAE,QAAQ,CAAC,GAAG;gBACjB,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,OAAO,EAAE,QAAQ,CAAC,MAAM;gBACxB,SAAS,EAAE,oBAAkB,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;aAC1D,CAAC;YACF,OAAO,IAAI,CAAC,QAAQ,CAAC;QACzB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC;YACzE,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAQD,MAAM,CAAC,WAAW,CAAC,GAAW;QAC1B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACpF,IAAI,OAAO;YAAE,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAE9E,OAAO,GAAG,CAAC;IACf,CAAC;CACJ,CAAA;AA1CY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;qCAKsC,0CAAgB;GAJtD,kBAAkB,CA0C9B"}