@decaf-ts/integrations 0.11.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (610) hide show
  1. package/README.md +164 -0
  2. package/dist/integrations.cjs +1 -1
  3. package/dist/integrations.cjs.map +1 -1
  4. package/dist/integrations.js +1 -1
  5. package/dist/integrations.js.map +1 -1
  6. package/docker/mailpit-compose.yml +17 -0
  7. package/docker/postgres-compose.yml +26 -0
  8. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs +12 -23
  9. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +1 -1
  10. package/lib/cjs/blob/core/BlobStoreService.cjs +26 -25
  11. package/lib/cjs/blob/core/BlobStoreService.cjs.map +1 -1
  12. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs +12 -23
  13. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +1 -1
  14. package/lib/cjs/blob/s3/S3BlobStoreService.cjs +11 -16
  15. package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +1 -1
  16. package/lib/cjs/blob/s3/S3CompatibleBlobStoreService.cjs +14 -16
  17. package/lib/cjs/blob/s3/S3CompatibleBlobStoreService.cjs.map +1 -1
  18. package/lib/cjs/calendar/environment.cjs +48 -0
  19. package/lib/cjs/calendar/environment.cjs.map +1 -0
  20. package/lib/cjs/calendar/google-calendar/GoogleCalendarService.cjs +338 -0
  21. package/lib/cjs/calendar/google-calendar/GoogleCalendarService.cjs.map +1 -0
  22. package/lib/cjs/calendar/google-calendar/index.cjs +20 -0
  23. package/lib/cjs/calendar/google-calendar/index.cjs.map +1 -0
  24. package/lib/cjs/comms/discord/DiscordService.cjs +318 -0
  25. package/lib/cjs/comms/discord/DiscordService.cjs.map +1 -0
  26. package/lib/cjs/comms/discord/index.cjs +19 -0
  27. package/lib/cjs/comms/discord/index.cjs.map +1 -0
  28. package/lib/cjs/comms/email/EmailService.cjs +376 -0
  29. package/lib/cjs/comms/email/EmailService.cjs.map +1 -0
  30. package/lib/cjs/comms/email/index.cjs +29 -0
  31. package/lib/cjs/comms/email/index.cjs.map +1 -0
  32. package/lib/cjs/comms/email/mime.cjs +225 -0
  33. package/lib/cjs/comms/email/mime.cjs.map +1 -0
  34. package/lib/cjs/comms/email/smtp.cjs +204 -0
  35. package/lib/cjs/comms/email/smtp.cjs.map +1 -0
  36. package/lib/cjs/comms/environment.cjs +79 -0
  37. package/lib/cjs/comms/environment.cjs.map +1 -0
  38. package/lib/cjs/comms/gmail/GmailService.cjs +235 -0
  39. package/lib/cjs/comms/gmail/GmailService.cjs.map +1 -0
  40. package/lib/cjs/comms/gmail/index.cjs +24 -0
  41. package/lib/cjs/comms/gmail/index.cjs.map +1 -0
  42. package/lib/cjs/comms/index.cjs +34 -0
  43. package/lib/cjs/comms/index.cjs.map +1 -0
  44. package/lib/cjs/comms/outlook/MicrosoftOutlookService.cjs +325 -0
  45. package/lib/cjs/comms/outlook/MicrosoftOutlookService.cjs.map +1 -0
  46. package/lib/cjs/comms/outlook/index.cjs +19 -0
  47. package/lib/cjs/comms/outlook/index.cjs.map +1 -0
  48. package/lib/cjs/comms/slack/SlackService.cjs +264 -0
  49. package/lib/cjs/comms/slack/SlackService.cjs.map +1 -0
  50. package/lib/cjs/comms/slack/index.cjs +24 -0
  51. package/lib/cjs/comms/slack/index.cjs.map +1 -0
  52. package/lib/cjs/comms/teams/TeamsService.cjs +212 -0
  53. package/lib/cjs/comms/teams/TeamsService.cjs.map +1 -0
  54. package/lib/cjs/comms/teams/index.cjs +24 -0
  55. package/lib/cjs/comms/teams/index.cjs.map +1 -0
  56. package/lib/cjs/comms/telegram/TelegramService.cjs +196 -0
  57. package/lib/cjs/comms/telegram/TelegramService.cjs.map +1 -0
  58. package/lib/cjs/comms/telegram/index.cjs +24 -0
  59. package/lib/cjs/comms/telegram/index.cjs.map +1 -0
  60. package/lib/cjs/comms/whatsapp/WhatsAppService.cjs +274 -0
  61. package/lib/cjs/comms/whatsapp/WhatsAppService.cjs.map +1 -0
  62. package/lib/cjs/comms/whatsapp/index.cjs +19 -0
  63. package/lib/cjs/comms/whatsapp/index.cjs.map +1 -0
  64. package/lib/cjs/devops/environment.cjs +43 -0
  65. package/lib/cjs/devops/environment.cjs.map +1 -0
  66. package/lib/cjs/devops/github/GithubService.cjs +302 -0
  67. package/lib/cjs/devops/github/GithubService.cjs.map +1 -0
  68. package/lib/cjs/devops/github/index.cjs +24 -0
  69. package/lib/cjs/devops/github/index.cjs.map +1 -0
  70. package/lib/cjs/devops/gitlab/GitlabService.cjs +282 -0
  71. package/lib/cjs/devops/gitlab/GitlabService.cjs.map +1 -0
  72. package/lib/cjs/devops/gitlab/index.cjs +24 -0
  73. package/lib/cjs/devops/gitlab/index.cjs.map +1 -0
  74. package/lib/cjs/devops/index.cjs +28 -0
  75. package/lib/cjs/devops/index.cjs.map +1 -0
  76. package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs +2 -0
  77. package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs.map +1 -1
  78. package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs +2 -0
  79. package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs.map +1 -1
  80. package/lib/cjs/index.cjs +3 -3
  81. package/lib/cjs/io/airtable/AirtableService.cjs +266 -0
  82. package/lib/cjs/io/airtable/AirtableService.cjs.map +1 -0
  83. package/lib/cjs/io/airtable/index.cjs +24 -0
  84. package/lib/cjs/io/airtable/index.cjs.map +1 -0
  85. package/lib/cjs/io/confluence/ConfluenceService.cjs +317 -0
  86. package/lib/cjs/io/confluence/ConfluenceService.cjs.map +1 -0
  87. package/lib/cjs/io/confluence/index.cjs +19 -0
  88. package/lib/cjs/io/confluence/index.cjs.map +1 -0
  89. package/lib/cjs/io/environment.cjs +74 -0
  90. package/lib/cjs/io/environment.cjs.map +1 -0
  91. package/lib/cjs/io/google-docs/GoogleDocsService.cjs +275 -0
  92. package/lib/cjs/io/google-docs/GoogleDocsService.cjs.map +1 -0
  93. package/lib/cjs/io/google-docs/index.cjs +19 -0
  94. package/lib/cjs/io/google-docs/index.cjs.map +1 -0
  95. package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs +288 -0
  96. package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs.map +1 -0
  97. package/lib/cjs/io/google-sheets/index.cjs +24 -0
  98. package/lib/cjs/io/google-sheets/index.cjs.map +1 -0
  99. package/lib/cjs/io/graphql/GraphqlService.cjs +143 -0
  100. package/lib/cjs/io/graphql/GraphqlService.cjs.map +1 -0
  101. package/lib/cjs/io/graphql/index.cjs +24 -0
  102. package/lib/cjs/io/graphql/index.cjs.map +1 -0
  103. package/lib/cjs/io/index.cjs +35 -0
  104. package/lib/cjs/io/index.cjs.map +1 -0
  105. package/lib/cjs/io/jira/JiraService.cjs +354 -0
  106. package/lib/cjs/io/jira/JiraService.cjs.map +1 -0
  107. package/lib/cjs/io/jira/index.cjs +19 -0
  108. package/lib/cjs/io/jira/index.cjs.map +1 -0
  109. package/lib/cjs/io/microsoft-excel/MicrosoftExcelService.cjs +253 -0
  110. package/lib/cjs/io/microsoft-excel/MicrosoftExcelService.cjs.map +1 -0
  111. package/lib/cjs/io/microsoft-excel/index.cjs +19 -0
  112. package/lib/cjs/io/microsoft-excel/index.cjs.map +1 -0
  113. package/lib/cjs/io/microsoft-sharepoint/MicrosoftSharePointService.cjs +261 -0
  114. package/lib/cjs/io/microsoft-sharepoint/MicrosoftSharePointService.cjs.map +1 -0
  115. package/lib/cjs/io/microsoft-sharepoint/index.cjs +19 -0
  116. package/lib/cjs/io/microsoft-sharepoint/index.cjs.map +1 -0
  117. package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs +205 -0
  118. package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs.map +1 -0
  119. package/lib/cjs/io/spreadsheet/index.cjs +25 -0
  120. package/lib/cjs/io/spreadsheet/index.cjs.map +1 -0
  121. package/lib/cjs/namespaces/index.cjs +1 -0
  122. package/lib/cjs/namespaces/index.cjs.map +1 -1
  123. package/lib/cjs/namespaces/models/credential.model.cjs +115 -0
  124. package/lib/cjs/namespaces/models/credential.model.cjs.map +1 -0
  125. package/lib/cjs/namespaces/models/effective-permission.model.cjs +2 -0
  126. package/lib/cjs/namespaces/models/effective-permission.model.cjs.map +1 -1
  127. package/lib/cjs/namespaces/models/group-membership.model.cjs +2 -0
  128. package/lib/cjs/namespaces/models/group-membership.model.cjs.map +1 -1
  129. package/lib/cjs/namespaces/models/group.model.cjs +2 -0
  130. package/lib/cjs/namespaces/models/group.model.cjs.map +1 -1
  131. package/lib/cjs/namespaces/models/index.cjs +1 -0
  132. package/lib/cjs/namespaces/models/index.cjs.map +1 -1
  133. package/lib/cjs/namespaces/models/inheritance-block.model.cjs +2 -0
  134. package/lib/cjs/namespaces/models/inheritance-block.model.cjs.map +1 -1
  135. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +2 -0
  136. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs.map +1 -1
  137. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +2 -0
  138. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs.map +1 -1
  139. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +2 -0
  140. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs.map +1 -1
  141. package/lib/cjs/namespaces/models/org-unit.model.cjs +2 -0
  142. package/lib/cjs/namespaces/models/org-unit.model.cjs.map +1 -1
  143. package/lib/cjs/namespaces/models/permission.model.cjs +2 -0
  144. package/lib/cjs/namespaces/models/permission.model.cjs.map +1 -1
  145. package/lib/cjs/namespaces/models/principal.model.cjs +2 -0
  146. package/lib/cjs/namespaces/models/principal.model.cjs.map +1 -1
  147. package/lib/cjs/namespaces/models/protected-resource.model.cjs +2 -0
  148. package/lib/cjs/namespaces/models/protected-resource.model.cjs.map +1 -1
  149. package/lib/cjs/namespaces/models/resource-grant.model.cjs +2 -0
  150. package/lib/cjs/namespaces/models/resource-grant.model.cjs.map +1 -1
  151. package/lib/cjs/namespaces/models/role-assignment.model.cjs +2 -0
  152. package/lib/cjs/namespaces/models/role-assignment.model.cjs.map +1 -1
  153. package/lib/cjs/namespaces/models/role-permission.model.cjs +2 -0
  154. package/lib/cjs/namespaces/models/role-permission.model.cjs.map +1 -1
  155. package/lib/cjs/namespaces/models/role.model.cjs +2 -0
  156. package/lib/cjs/namespaces/models/role.model.cjs.map +1 -1
  157. package/lib/cjs/namespaces/models/storage-binding.model.cjs +2 -0
  158. package/lib/cjs/namespaces/models/storage-binding.model.cjs.map +1 -1
  159. package/lib/cjs/namespaces/models/tenant-membership.model.cjs +2 -0
  160. package/lib/cjs/namespaces/models/tenant-membership.model.cjs.map +1 -1
  161. package/lib/cjs/namespaces/models/tenant-profile.model.cjs +2 -0
  162. package/lib/cjs/namespaces/models/tenant-profile.model.cjs.map +1 -1
  163. package/lib/cjs/namespaces/models/tenant.model.cjs +2 -0
  164. package/lib/cjs/namespaces/models/tenant.model.cjs.map +1 -1
  165. package/lib/cjs/namespaces/models/user.model.cjs +2 -0
  166. package/lib/cjs/namespaces/models/user.model.cjs.map +1 -1
  167. package/lib/cjs/namespaces/rls/index.cjs +28 -0
  168. package/lib/cjs/namespaces/rls/index.cjs.map +1 -0
  169. package/lib/cjs/namespaces/rls/principal-resolver.cjs +66 -0
  170. package/lib/cjs/namespaces/rls/principal-resolver.cjs.map +1 -0
  171. package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs +269 -0
  172. package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs.map +1 -0
  173. package/lib/cjs/namespaces/rls/rls.constants.cjs +79 -0
  174. package/lib/cjs/namespaces/rls/rls.constants.cjs.map +1 -0
  175. package/lib/cjs/namespaces/rls/rls.template.cjs +719 -0
  176. package/lib/cjs/namespaces/rls/rls.template.cjs.map +1 -0
  177. package/lib/cjs/namespaces/rls/rls.types.cjs +4 -0
  178. package/lib/cjs/namespaces/rls/rls.types.cjs.map +1 -0
  179. package/lib/cjs/namespaces/rls/session-binding.cjs +70 -0
  180. package/lib/cjs/namespaces/rls/session-binding.cjs.map +1 -0
  181. package/lib/cjs/namespaces/services/credential.service.cjs +327 -0
  182. package/lib/cjs/namespaces/services/credential.service.cjs.map +1 -0
  183. package/lib/cjs/namespaces/services/index.cjs +1 -0
  184. package/lib/cjs/namespaces/services/index.cjs.map +1 -1
  185. package/lib/cjs/namespaces/types.cjs +6 -1
  186. package/lib/cjs/namespaces/types.cjs.map +1 -1
  187. package/lib/cjs/redis/adapter.cjs +7 -1
  188. package/lib/cjs/redis/adapter.cjs.map +1 -1
  189. package/lib/cjs/secrets/InfraCredentialBootstrap.cjs +80 -0
  190. package/lib/cjs/secrets/InfraCredentialBootstrap.cjs.map +1 -0
  191. package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -15
  192. package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +1 -1
  193. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -16
  194. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +1 -1
  195. package/lib/cjs/secrets/core/SecretReference.cjs +1 -0
  196. package/lib/cjs/secrets/core/SecretReference.cjs.map +1 -1
  197. package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs +28 -0
  198. package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs.map +1 -0
  199. package/lib/cjs/secrets/fs/FsSecretService.cjs +420 -0
  200. package/lib/cjs/secrets/fs/FsSecretService.cjs.map +1 -0
  201. package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs +25 -0
  202. package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs.map +1 -0
  203. package/lib/cjs/secrets/fs/index.cjs +27 -0
  204. package/lib/cjs/secrets/fs/index.cjs.map +1 -0
  205. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -16
  206. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +1 -1
  207. package/lib/cjs/secrets/index.cjs +2 -0
  208. package/lib/cjs/secrets/index.cjs.map +1 -1
  209. package/lib/cjs/secrets/model/ModelSecretService.cjs +335 -43
  210. package/lib/cjs/secrets/model/ModelSecretService.cjs.map +1 -1
  211. package/lib/cjs/secrets/model/Secret.cjs +83 -5
  212. package/lib/cjs/secrets/model/Secret.cjs.map +1 -1
  213. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -16
  214. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +1 -1
  215. package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -16
  216. package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +1 -1
  217. package/lib/cjs/shared/environmentValue.cjs +24 -0
  218. package/lib/cjs/shared/environmentValue.cjs.map +1 -1
  219. package/lib/cjs/shared/http/HttpApiService.cjs +190 -0
  220. package/lib/cjs/shared/http/HttpApiService.cjs.map +1 -0
  221. package/lib/cjs/shared/http/hermeticBoot.cjs +150 -0
  222. package/lib/cjs/shared/http/hermeticBoot.cjs.map +1 -0
  223. package/lib/cjs/shared/http/index.cjs +28 -0
  224. package/lib/cjs/shared/http/index.cjs.map +1 -0
  225. package/lib/esm/blob/azure/AzureBlobStoreService.js +13 -21
  226. package/lib/esm/blob/azure/AzureBlobStoreService.js.map +1 -1
  227. package/lib/esm/blob/core/BlobStoreService.js +26 -25
  228. package/lib/esm/blob/core/BlobStoreService.js.map +1 -1
  229. package/lib/esm/blob/gcp/GcsBlobStoreService.js +13 -21
  230. package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +1 -1
  231. package/lib/esm/blob/s3/S3BlobStoreService.js +12 -14
  232. package/lib/esm/blob/s3/S3BlobStoreService.js.map +1 -1
  233. package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js +14 -16
  234. package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js.map +1 -1
  235. package/lib/esm/calendar/environment.js +44 -0
  236. package/lib/esm/calendar/environment.js.map +1 -0
  237. package/lib/esm/calendar/google-calendar/GoogleCalendarService.js +333 -0
  238. package/lib/esm/calendar/google-calendar/GoogleCalendarService.js.map +1 -0
  239. package/lib/esm/calendar/google-calendar/index.js +3 -0
  240. package/lib/esm/calendar/google-calendar/index.js.map +1 -0
  241. package/lib/esm/comms/discord/DiscordService.js +313 -0
  242. package/lib/esm/comms/discord/DiscordService.js.map +1 -0
  243. package/lib/esm/comms/discord/index.js +2 -0
  244. package/lib/esm/comms/discord/index.js.map +1 -0
  245. package/lib/esm/comms/email/EmailService.js +338 -0
  246. package/lib/esm/comms/email/EmailService.js.map +1 -0
  247. package/lib/esm/comms/email/index.js +12 -0
  248. package/lib/esm/comms/email/index.js.map +1 -0
  249. package/lib/esm/comms/email/mime.js +218 -0
  250. package/lib/esm/comms/email/mime.js.map +1 -0
  251. package/lib/esm/comms/email/smtp.js +166 -0
  252. package/lib/esm/comms/email/smtp.js.map +1 -0
  253. package/lib/esm/comms/environment.js +75 -0
  254. package/lib/esm/comms/environment.js.map +1 -0
  255. package/lib/esm/comms/gmail/GmailService.js +230 -0
  256. package/lib/esm/comms/gmail/GmailService.js.map +1 -0
  257. package/lib/esm/comms/gmail/index.js +7 -0
  258. package/lib/esm/comms/gmail/index.js.map +1 -0
  259. package/lib/esm/comms/index.js +17 -0
  260. package/lib/esm/comms/index.js.map +1 -0
  261. package/lib/esm/comms/outlook/MicrosoftOutlookService.js +320 -0
  262. package/lib/esm/comms/outlook/MicrosoftOutlookService.js.map +1 -0
  263. package/lib/esm/comms/outlook/index.js +2 -0
  264. package/lib/esm/comms/outlook/index.js.map +1 -0
  265. package/lib/esm/comms/slack/SlackService.js +259 -0
  266. package/lib/esm/comms/slack/SlackService.js.map +1 -0
  267. package/lib/esm/comms/slack/index.js +7 -0
  268. package/lib/esm/comms/slack/index.js.map +1 -0
  269. package/lib/esm/comms/teams/TeamsService.js +204 -0
  270. package/lib/esm/comms/teams/TeamsService.js.map +1 -0
  271. package/lib/esm/comms/teams/index.js +7 -0
  272. package/lib/esm/comms/teams/index.js.map +1 -0
  273. package/lib/esm/comms/telegram/TelegramService.js +191 -0
  274. package/lib/esm/comms/telegram/TelegramService.js.map +1 -0
  275. package/lib/esm/comms/telegram/index.js +7 -0
  276. package/lib/esm/comms/telegram/index.js.map +1 -0
  277. package/lib/esm/comms/whatsapp/WhatsAppService.js +269 -0
  278. package/lib/esm/comms/whatsapp/WhatsAppService.js.map +1 -0
  279. package/lib/esm/comms/whatsapp/index.js +2 -0
  280. package/lib/esm/comms/whatsapp/index.js.map +1 -0
  281. package/lib/esm/devops/environment.js +39 -0
  282. package/lib/esm/devops/environment.js.map +1 -0
  283. package/lib/esm/devops/github/GithubService.js +297 -0
  284. package/lib/esm/devops/github/GithubService.js.map +1 -0
  285. package/lib/esm/devops/github/index.js +7 -0
  286. package/lib/esm/devops/github/index.js.map +1 -0
  287. package/lib/esm/devops/gitlab/GitlabService.js +277 -0
  288. package/lib/esm/devops/gitlab/GitlabService.js.map +1 -0
  289. package/lib/esm/devops/gitlab/index.js +7 -0
  290. package/lib/esm/devops/gitlab/index.js.map +1 -0
  291. package/lib/esm/devops/index.js +11 -0
  292. package/lib/esm/devops/index.js.map +1 -0
  293. package/lib/esm/feature-flags/models/FeatureFlag.model.js +2 -0
  294. package/lib/esm/feature-flags/models/FeatureFlag.model.js.map +1 -1
  295. package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js +2 -0
  296. package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js.map +1 -1
  297. package/lib/esm/index.js +3 -3
  298. package/lib/esm/io/airtable/AirtableService.js +261 -0
  299. package/lib/esm/io/airtable/AirtableService.js.map +1 -0
  300. package/lib/esm/io/airtable/index.js +7 -0
  301. package/lib/esm/io/airtable/index.js.map +1 -0
  302. package/lib/esm/io/confluence/ConfluenceService.js +312 -0
  303. package/lib/esm/io/confluence/ConfluenceService.js.map +1 -0
  304. package/lib/esm/io/confluence/index.js +2 -0
  305. package/lib/esm/io/confluence/index.js.map +1 -0
  306. package/lib/esm/io/environment.js +70 -0
  307. package/lib/esm/io/environment.js.map +1 -0
  308. package/lib/esm/io/google-docs/GoogleDocsService.js +270 -0
  309. package/lib/esm/io/google-docs/GoogleDocsService.js.map +1 -0
  310. package/lib/esm/io/google-docs/index.js +2 -0
  311. package/lib/esm/io/google-docs/index.js.map +1 -0
  312. package/lib/esm/io/google-sheets/GoogleSheetsService.js +283 -0
  313. package/lib/esm/io/google-sheets/GoogleSheetsService.js.map +1 -0
  314. package/lib/esm/io/google-sheets/index.js +7 -0
  315. package/lib/esm/io/google-sheets/index.js.map +1 -0
  316. package/lib/esm/io/graphql/GraphqlService.js +138 -0
  317. package/lib/esm/io/graphql/GraphqlService.js.map +1 -0
  318. package/lib/esm/io/graphql/index.js +7 -0
  319. package/lib/esm/io/graphql/index.js.map +1 -0
  320. package/lib/esm/io/index.js +18 -0
  321. package/lib/esm/io/index.js.map +1 -0
  322. package/lib/esm/io/jira/JiraService.js +349 -0
  323. package/lib/esm/io/jira/JiraService.js.map +1 -0
  324. package/lib/esm/io/jira/index.js +2 -0
  325. package/lib/esm/io/jira/index.js.map +1 -0
  326. package/lib/esm/io/microsoft-excel/MicrosoftExcelService.js +248 -0
  327. package/lib/esm/io/microsoft-excel/MicrosoftExcelService.js.map +1 -0
  328. package/lib/esm/io/microsoft-excel/index.js +2 -0
  329. package/lib/esm/io/microsoft-excel/index.js.map +1 -0
  330. package/lib/esm/io/microsoft-sharepoint/MicrosoftSharePointService.js +256 -0
  331. package/lib/esm/io/microsoft-sharepoint/MicrosoftSharePointService.js.map +1 -0
  332. package/lib/esm/io/microsoft-sharepoint/index.js +2 -0
  333. package/lib/esm/io/microsoft-sharepoint/index.js.map +1 -0
  334. package/lib/esm/io/spreadsheet/SpreadsheetService.js +200 -0
  335. package/lib/esm/io/spreadsheet/SpreadsheetService.js.map +1 -0
  336. package/lib/esm/io/spreadsheet/index.js +8 -0
  337. package/lib/esm/io/spreadsheet/index.js.map +1 -0
  338. package/lib/esm/namespaces/index.js +1 -0
  339. package/lib/esm/namespaces/index.js.map +1 -1
  340. package/lib/esm/namespaces/models/credential.model.js +106 -0
  341. package/lib/esm/namespaces/models/credential.model.js.map +1 -0
  342. package/lib/esm/namespaces/models/effective-permission.model.js +2 -0
  343. package/lib/esm/namespaces/models/effective-permission.model.js.map +1 -1
  344. package/lib/esm/namespaces/models/group-membership.model.js +2 -0
  345. package/lib/esm/namespaces/models/group-membership.model.js.map +1 -1
  346. package/lib/esm/namespaces/models/group.model.js +2 -0
  347. package/lib/esm/namespaces/models/group.model.js.map +1 -1
  348. package/lib/esm/namespaces/models/index.js +1 -0
  349. package/lib/esm/namespaces/models/index.js.map +1 -1
  350. package/lib/esm/namespaces/models/inheritance-block.model.js +2 -0
  351. package/lib/esm/namespaces/models/inheritance-block.model.js.map +1 -1
  352. package/lib/esm/namespaces/models/org-unit-closure.model.js +2 -0
  353. package/lib/esm/namespaces/models/org-unit-closure.model.js.map +1 -1
  354. package/lib/esm/namespaces/models/org-unit-membership.model.js +2 -0
  355. package/lib/esm/namespaces/models/org-unit-membership.model.js.map +1 -1
  356. package/lib/esm/namespaces/models/org-unit-profile.model.js +2 -0
  357. package/lib/esm/namespaces/models/org-unit-profile.model.js.map +1 -1
  358. package/lib/esm/namespaces/models/org-unit.model.js +2 -0
  359. package/lib/esm/namespaces/models/org-unit.model.js.map +1 -1
  360. package/lib/esm/namespaces/models/permission.model.js +2 -0
  361. package/lib/esm/namespaces/models/permission.model.js.map +1 -1
  362. package/lib/esm/namespaces/models/principal.model.js +2 -0
  363. package/lib/esm/namespaces/models/principal.model.js.map +1 -1
  364. package/lib/esm/namespaces/models/protected-resource.model.js +2 -0
  365. package/lib/esm/namespaces/models/protected-resource.model.js.map +1 -1
  366. package/lib/esm/namespaces/models/resource-grant.model.js +2 -0
  367. package/lib/esm/namespaces/models/resource-grant.model.js.map +1 -1
  368. package/lib/esm/namespaces/models/role-assignment.model.js +2 -0
  369. package/lib/esm/namespaces/models/role-assignment.model.js.map +1 -1
  370. package/lib/esm/namespaces/models/role-permission.model.js +2 -0
  371. package/lib/esm/namespaces/models/role-permission.model.js.map +1 -1
  372. package/lib/esm/namespaces/models/role.model.js +2 -0
  373. package/lib/esm/namespaces/models/role.model.js.map +1 -1
  374. package/lib/esm/namespaces/models/storage-binding.model.js +2 -0
  375. package/lib/esm/namespaces/models/storage-binding.model.js.map +1 -1
  376. package/lib/esm/namespaces/models/tenant-membership.model.js +2 -0
  377. package/lib/esm/namespaces/models/tenant-membership.model.js.map +1 -1
  378. package/lib/esm/namespaces/models/tenant-profile.model.js +2 -0
  379. package/lib/esm/namespaces/models/tenant-profile.model.js.map +1 -1
  380. package/lib/esm/namespaces/models/tenant.model.js +2 -0
  381. package/lib/esm/namespaces/models/tenant.model.js.map +1 -1
  382. package/lib/esm/namespaces/models/user.model.js +2 -0
  383. package/lib/esm/namespaces/models/user.model.js.map +1 -1
  384. package/lib/esm/namespaces/rls/index.js +11 -0
  385. package/lib/esm/namespaces/rls/index.js.map +1 -0
  386. package/lib/esm/namespaces/rls/principal-resolver.js +61 -0
  387. package/lib/esm/namespaces/rls/principal-resolver.js.map +1 -0
  388. package/lib/esm/namespaces/rls/rls-bootstrap.service.js +261 -0
  389. package/lib/esm/namespaces/rls/rls-bootstrap.service.js.map +1 -0
  390. package/lib/esm/namespaces/rls/rls.constants.js +75 -0
  391. package/lib/esm/namespaces/rls/rls.constants.js.map +1 -0
  392. package/lib/esm/namespaces/rls/rls.template.js +711 -0
  393. package/lib/esm/namespaces/rls/rls.template.js.map +1 -0
  394. package/lib/esm/namespaces/rls/rls.types.js +9 -0
  395. package/lib/esm/namespaces/rls/rls.types.js.map +1 -0
  396. package/lib/esm/namespaces/rls/session-binding.js +65 -0
  397. package/lib/esm/namespaces/rls/session-binding.js.map +1 -0
  398. package/lib/esm/namespaces/services/credential.service.js +322 -0
  399. package/lib/esm/namespaces/services/credential.service.js.map +1 -0
  400. package/lib/esm/namespaces/services/index.js +1 -0
  401. package/lib/esm/namespaces/services/index.js.map +1 -1
  402. package/lib/esm/namespaces/types.js +6 -0
  403. package/lib/esm/namespaces/types.js.map +1 -1
  404. package/lib/esm/redis/adapter.js +7 -1
  405. package/lib/esm/redis/adapter.js.map +1 -1
  406. package/lib/esm/secrets/InfraCredentialBootstrap.js +74 -0
  407. package/lib/esm/secrets/InfraCredentialBootstrap.js.map +1 -0
  408. package/lib/esm/secrets/aws/AwsSecretService.js +3 -13
  409. package/lib/esm/secrets/aws/AwsSecretService.js.map +1 -1
  410. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +2 -13
  411. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +1 -1
  412. package/lib/esm/secrets/core/SecretReference.js +1 -0
  413. package/lib/esm/secrets/core/SecretReference.js.map +1 -1
  414. package/lib/esm/secrets/fs/FsSecretEnvironment.js +24 -0
  415. package/lib/esm/secrets/fs/FsSecretEnvironment.js.map +1 -0
  416. package/lib/esm/secrets/fs/FsSecretService.js +412 -0
  417. package/lib/esm/secrets/fs/FsSecretService.js.map +1 -0
  418. package/lib/esm/secrets/fs/FsSecretServiceConfig.js +21 -0
  419. package/lib/esm/secrets/fs/FsSecretServiceConfig.js.map +1 -0
  420. package/lib/esm/secrets/fs/index.js +10 -0
  421. package/lib/esm/secrets/fs/index.js.map +1 -0
  422. package/lib/esm/secrets/gcp/GcpSecretManagerService.js +2 -13
  423. package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +1 -1
  424. package/lib/esm/secrets/index.js +2 -0
  425. package/lib/esm/secrets/index.js.map +1 -1
  426. package/lib/esm/secrets/model/ModelSecretService.js +337 -42
  427. package/lib/esm/secrets/model/ModelSecretService.js.map +1 -1
  428. package/lib/esm/secrets/model/Secret.js +86 -7
  429. package/lib/esm/secrets/model/Secret.js.map +1 -1
  430. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +2 -13
  431. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +1 -1
  432. package/lib/esm/secrets/vault/VaultSecretService.js +2 -13
  433. package/lib/esm/secrets/vault/VaultSecretService.js.map +1 -1
  434. package/lib/esm/shared/environmentValue.js +24 -0
  435. package/lib/esm/shared/environmentValue.js.map +1 -1
  436. package/lib/esm/shared/http/HttpApiService.js +181 -0
  437. package/lib/esm/shared/http/HttpApiService.js.map +1 -0
  438. package/lib/esm/shared/http/hermeticBoot.js +146 -0
  439. package/lib/esm/shared/http/hermeticBoot.js.map +1 -0
  440. package/lib/esm/shared/http/index.js +11 -0
  441. package/lib/esm/shared/http/index.js.map +1 -0
  442. package/lib/types/blob/azure/AzureBlobStoreService.d.cts +7 -7
  443. package/lib/types/blob/azure/AzureBlobStoreService.d.mts +7 -7
  444. package/lib/types/blob/core/BlobStoreService.d.cts +28 -27
  445. package/lib/types/blob/core/BlobStoreService.d.mts +28 -27
  446. package/lib/types/blob/gcp/GcsBlobStoreService.d.cts +7 -7
  447. package/lib/types/blob/gcp/GcsBlobStoreService.d.mts +7 -7
  448. package/lib/types/blob/s3/S3BlobStoreService.d.cts +9 -1
  449. package/lib/types/blob/s3/S3BlobStoreService.d.mts +9 -1
  450. package/lib/types/blob/s3/S3CompatibleBlobStoreService.d.cts +11 -15
  451. package/lib/types/blob/s3/S3CompatibleBlobStoreService.d.mts +11 -15
  452. package/lib/types/calendar/environment.d.cts +48 -0
  453. package/lib/types/calendar/environment.d.mts +48 -0
  454. package/lib/types/calendar/google-calendar/GoogleCalendarService.d.cts +316 -0
  455. package/lib/types/calendar/google-calendar/GoogleCalendarService.d.mts +316 -0
  456. package/lib/types/calendar/google-calendar/index.d.cts +2 -0
  457. package/lib/types/calendar/google-calendar/index.d.mts +2 -0
  458. package/lib/types/comms/discord/DiscordService.d.cts +285 -0
  459. package/lib/types/comms/discord/DiscordService.d.mts +285 -0
  460. package/lib/types/comms/discord/index.d.cts +1 -0
  461. package/lib/types/comms/discord/index.d.mts +1 -0
  462. package/lib/types/comms/email/EmailService.d.cts +184 -0
  463. package/lib/types/comms/email/EmailService.d.mts +184 -0
  464. package/lib/types/comms/email/index.d.cts +11 -0
  465. package/lib/types/comms/email/index.d.mts +11 -0
  466. package/lib/types/comms/email/mime.d.cts +84 -0
  467. package/lib/types/comms/email/mime.d.mts +84 -0
  468. package/lib/types/comms/email/smtp.d.cts +107 -0
  469. package/lib/types/comms/email/smtp.d.mts +107 -0
  470. package/lib/types/comms/environment.d.cts +110 -0
  471. package/lib/types/comms/environment.d.mts +110 -0
  472. package/lib/types/comms/gmail/GmailService.d.cts +190 -0
  473. package/lib/types/comms/gmail/GmailService.d.mts +190 -0
  474. package/lib/types/comms/gmail/index.d.cts +6 -0
  475. package/lib/types/comms/gmail/index.d.mts +6 -0
  476. package/lib/types/comms/index.d.cts +16 -0
  477. package/lib/types/comms/index.d.mts +16 -0
  478. package/lib/types/comms/outlook/MicrosoftOutlookService.d.cts +282 -0
  479. package/lib/types/comms/outlook/MicrosoftOutlookService.d.mts +282 -0
  480. package/lib/types/comms/outlook/index.d.cts +1 -0
  481. package/lib/types/comms/outlook/index.d.mts +1 -0
  482. package/lib/types/comms/slack/SlackService.d.cts +259 -0
  483. package/lib/types/comms/slack/SlackService.d.mts +259 -0
  484. package/lib/types/comms/slack/index.d.cts +6 -0
  485. package/lib/types/comms/slack/index.d.mts +6 -0
  486. package/lib/types/comms/teams/TeamsService.d.cts +172 -0
  487. package/lib/types/comms/teams/TeamsService.d.mts +172 -0
  488. package/lib/types/comms/teams/index.d.cts +6 -0
  489. package/lib/types/comms/teams/index.d.mts +6 -0
  490. package/lib/types/comms/telegram/TelegramService.d.cts +202 -0
  491. package/lib/types/comms/telegram/TelegramService.d.mts +202 -0
  492. package/lib/types/comms/telegram/index.d.cts +6 -0
  493. package/lib/types/comms/telegram/index.d.mts +6 -0
  494. package/lib/types/comms/whatsapp/WhatsAppService.d.cts +258 -0
  495. package/lib/types/comms/whatsapp/WhatsAppService.d.mts +258 -0
  496. package/lib/types/comms/whatsapp/index.d.cts +1 -0
  497. package/lib/types/comms/whatsapp/index.d.mts +1 -0
  498. package/lib/types/devops/environment.d.cts +62 -0
  499. package/lib/types/devops/environment.d.mts +62 -0
  500. package/lib/types/devops/github/GithubService.d.cts +287 -0
  501. package/lib/types/devops/github/GithubService.d.mts +287 -0
  502. package/lib/types/devops/github/index.d.cts +6 -0
  503. package/lib/types/devops/github/index.d.mts +6 -0
  504. package/lib/types/devops/gitlab/GitlabService.d.cts +277 -0
  505. package/lib/types/devops/gitlab/GitlabService.d.mts +277 -0
  506. package/lib/types/devops/gitlab/index.d.cts +6 -0
  507. package/lib/types/devops/gitlab/index.d.mts +6 -0
  508. package/lib/types/devops/index.d.cts +10 -0
  509. package/lib/types/devops/index.d.mts +10 -0
  510. package/lib/types/index.d.cts +2 -2
  511. package/lib/types/index.d.mts +2 -2
  512. package/lib/types/io/airtable/AirtableService.d.cts +268 -0
  513. package/lib/types/io/airtable/AirtableService.d.mts +268 -0
  514. package/lib/types/io/airtable/index.d.cts +6 -0
  515. package/lib/types/io/airtable/index.d.mts +6 -0
  516. package/lib/types/io/confluence/ConfluenceService.d.cts +250 -0
  517. package/lib/types/io/confluence/ConfluenceService.d.mts +250 -0
  518. package/lib/types/io/confluence/index.d.cts +1 -0
  519. package/lib/types/io/confluence/index.d.mts +1 -0
  520. package/lib/types/io/environment.d.cts +107 -0
  521. package/lib/types/io/environment.d.mts +107 -0
  522. package/lib/types/io/google-docs/GoogleDocsService.d.cts +188 -0
  523. package/lib/types/io/google-docs/GoogleDocsService.d.mts +188 -0
  524. package/lib/types/io/google-docs/index.d.cts +1 -0
  525. package/lib/types/io/google-docs/index.d.mts +1 -0
  526. package/lib/types/io/google-sheets/GoogleSheetsService.d.cts +204 -0
  527. package/lib/types/io/google-sheets/GoogleSheetsService.d.mts +204 -0
  528. package/lib/types/io/google-sheets/index.d.cts +6 -0
  529. package/lib/types/io/google-sheets/index.d.mts +6 -0
  530. package/lib/types/io/graphql/GraphqlService.d.cts +173 -0
  531. package/lib/types/io/graphql/GraphqlService.d.mts +173 -0
  532. package/lib/types/io/graphql/index.d.cts +6 -0
  533. package/lib/types/io/graphql/index.d.mts +6 -0
  534. package/lib/types/io/index.d.cts +17 -0
  535. package/lib/types/io/index.d.mts +17 -0
  536. package/lib/types/io/jira/JiraService.d.cts +300 -0
  537. package/lib/types/io/jira/JiraService.d.mts +300 -0
  538. package/lib/types/io/jira/index.d.cts +1 -0
  539. package/lib/types/io/jira/index.d.mts +1 -0
  540. package/lib/types/io/microsoft-excel/MicrosoftExcelService.d.cts +230 -0
  541. package/lib/types/io/microsoft-excel/MicrosoftExcelService.d.mts +230 -0
  542. package/lib/types/io/microsoft-excel/index.d.cts +1 -0
  543. package/lib/types/io/microsoft-excel/index.d.mts +1 -0
  544. package/lib/types/io/microsoft-sharepoint/MicrosoftSharePointService.d.cts +226 -0
  545. package/lib/types/io/microsoft-sharepoint/MicrosoftSharePointService.d.mts +226 -0
  546. package/lib/types/io/microsoft-sharepoint/index.d.cts +1 -0
  547. package/lib/types/io/microsoft-sharepoint/index.d.mts +1 -0
  548. package/lib/types/io/spreadsheet/SpreadsheetService.d.cts +144 -0
  549. package/lib/types/io/spreadsheet/SpreadsheetService.d.mts +144 -0
  550. package/lib/types/io/spreadsheet/index.d.cts +7 -0
  551. package/lib/types/io/spreadsheet/index.d.mts +7 -0
  552. package/lib/types/namespaces/index.d.cts +1 -0
  553. package/lib/types/namespaces/index.d.mts +1 -0
  554. package/lib/types/namespaces/models/credential.model.d.cts +23 -0
  555. package/lib/types/namespaces/models/credential.model.d.mts +23 -0
  556. package/lib/types/namespaces/models/index.d.cts +1 -0
  557. package/lib/types/namespaces/models/index.d.mts +1 -0
  558. package/lib/types/namespaces/rls/index.d.cts +10 -0
  559. package/lib/types/namespaces/rls/index.d.mts +10 -0
  560. package/lib/types/namespaces/rls/principal-resolver.d.cts +47 -0
  561. package/lib/types/namespaces/rls/principal-resolver.d.mts +47 -0
  562. package/lib/types/namespaces/rls/rls-bootstrap.service.d.cts +157 -0
  563. package/lib/types/namespaces/rls/rls-bootstrap.service.d.mts +157 -0
  564. package/lib/types/namespaces/rls/rls.constants.d.cts +52 -0
  565. package/lib/types/namespaces/rls/rls.constants.d.mts +52 -0
  566. package/lib/types/namespaces/rls/rls.template.d.cts +42 -0
  567. package/lib/types/namespaces/rls/rls.template.d.mts +42 -0
  568. package/lib/types/namespaces/rls/rls.types.d.cts +77 -0
  569. package/lib/types/namespaces/rls/rls.types.d.mts +77 -0
  570. package/lib/types/namespaces/rls/session-binding.d.cts +87 -0
  571. package/lib/types/namespaces/rls/session-binding.d.mts +87 -0
  572. package/lib/types/namespaces/services/credential.service.d.cts +175 -0
  573. package/lib/types/namespaces/services/credential.service.d.mts +175 -0
  574. package/lib/types/namespaces/services/index.d.cts +1 -0
  575. package/lib/types/namespaces/services/index.d.mts +1 -0
  576. package/lib/types/namespaces/types.d.cts +37 -0
  577. package/lib/types/namespaces/types.d.mts +37 -0
  578. package/lib/types/redis/adapter.d.cts +2 -0
  579. package/lib/types/redis/adapter.d.mts +2 -0
  580. package/lib/types/redis/types.d.cts +27 -2
  581. package/lib/types/redis/types.d.mts +27 -2
  582. package/lib/types/secrets/InfraCredentialBootstrap.d.cts +100 -0
  583. package/lib/types/secrets/InfraCredentialBootstrap.d.mts +100 -0
  584. package/lib/types/secrets/core/SecretTypes.d.cts +15 -1
  585. package/lib/types/secrets/core/SecretTypes.d.mts +15 -1
  586. package/lib/types/secrets/fs/FsSecretEnvironment.d.cts +42 -0
  587. package/lib/types/secrets/fs/FsSecretEnvironment.d.mts +42 -0
  588. package/lib/types/secrets/fs/FsSecretService.d.cts +207 -0
  589. package/lib/types/secrets/fs/FsSecretService.d.mts +207 -0
  590. package/lib/types/secrets/fs/FsSecretServiceConfig.d.cts +37 -0
  591. package/lib/types/secrets/fs/FsSecretServiceConfig.d.mts +37 -0
  592. package/lib/types/secrets/fs/index.d.cts +9 -0
  593. package/lib/types/secrets/fs/index.d.mts +9 -0
  594. package/lib/types/secrets/index.d.cts +2 -0
  595. package/lib/types/secrets/index.d.mts +2 -0
  596. package/lib/types/secrets/model/ModelSecretService.d.cts +190 -1
  597. package/lib/types/secrets/model/ModelSecretService.d.mts +190 -1
  598. package/lib/types/secrets/model/Secret.d.cts +44 -3
  599. package/lib/types/secrets/model/Secret.d.mts +44 -3
  600. package/lib/types/shared/environmentValue.d.cts +24 -0
  601. package/lib/types/shared/environmentValue.d.mts +24 -0
  602. package/lib/types/shared/http/HttpApiService.d.cts +193 -0
  603. package/lib/types/shared/http/HttpApiService.d.mts +193 -0
  604. package/lib/types/shared/http/hermeticBoot.d.cts +84 -0
  605. package/lib/types/shared/http/hermeticBoot.d.mts +84 -0
  606. package/lib/types/shared/http/index.d.cts +10 -0
  607. package/lib/types/shared/http/index.d.mts +10 -0
  608. package/package.json +279 -6
  609. package/sql/002_rls.sql +660 -15
  610. package/sql/004_credentials.sql +46 -0
@@ -0,0 +1,259 @@
1
+ /**
2
+ * @module integrations/comms/slack/service
3
+ * @summary Slack Web API integration service for posting messages and reading conversations and users.
4
+ * @description Exposes the Slack Web API (`chat.postMessage`, `conversations.*`, `users.info`)
5
+ * as an undecorated client-based service built on {@link HttpApiService}.
6
+ * Configuration comes from an explicit `SlackServiceConfig` or the `comms.slack`
7
+ * environment slice; every response is normalized and failures are mapped to decaf
8
+ * errors via {@link httpError}.
9
+ */
10
+ import { InternalError } from "@decaf-ts/db-decorators";
11
+ import { CommsEnvironment } from "./../environment.js";
12
+ import { envNumber, envString } from "./../../shared/environmentValue.js";
13
+ import { HttpApiService, httpError, } from "./../../shared/http/index.js";
14
+ /**
15
+ * @description Slack Web API integration service
16
+ * @summary An undecorated HTTP service for posting messages,
17
+ * listing conversations with cursor paging, fetching a single conversation,
18
+ * and looking up users. The Slack Bot token is sent as a bearer token, every
19
+ * call requires it (`requireToken()`), non-`ok` Slack responses raise
20
+ * `InternalError`, and transport failures are mapped to decaf errors via
21
+ * {@link httpError}.
22
+ * @class SlackService
23
+ * @category Comms
24
+ * @example
25
+ * ```ts
26
+ * import { SlackService } from "@decaf-ts/integrations/comms/slack";
27
+ *
28
+ * const slack = new SlackService();
29
+ * await slack.initialize({
30
+ * token: process.env.GRAPH_CREDENTIAL_SLACK_TOKEN,
31
+ * });
32
+ * await slack.postMessage({
33
+ * channel: "#general",
34
+ * text: "Deployment finished",
35
+ * });
36
+ * ```
37
+ * @mermaid
38
+ * sequenceDiagram
39
+ * autonumber
40
+ * participant Caller
41
+ * participant Service as SlackService
42
+ * participant Slack as Slack Web API
43
+ * Caller->>Service: postMessage(input)
44
+ * activate Service
45
+ * Service->>Service: requireToken()
46
+ * Service->>Slack: POST /chat.postMessage
47
+ * activate Slack
48
+ * Slack-->>Service: { ok, channel, ts }
49
+ * deactivate Slack
50
+ * alt ok
51
+ * Service-->>Caller: SlackPostMessageResult
52
+ * else error
53
+ * Service--xCaller: InternalError / mapped decaf error
54
+ * end
55
+ * deactivate Service
56
+ * @memberOf module:integrations/comms/slack/service
57
+ */
58
+ export class SlackService extends HttpApiService {
59
+ constructor() {
60
+ super(...arguments);
61
+ /**
62
+ * @description The provider name used in error messages
63
+ */
64
+ this.serviceName = "Slack";
65
+ }
66
+ /**
67
+ * @description The Slack Web API base URL
68
+ * @summary Used when the resolved config carries no `baseUrl`.
69
+ * @returns {string} `"https://slack.com/api"`.
70
+ */
71
+ defaultBaseUrl() {
72
+ return "https://slack.com/api";
73
+ }
74
+ /**
75
+ * @description Builds the Slack bearer authorization headers
76
+ * @summary Returns the `Authorization: Bearer <token>` header when the
77
+ * config carries a token, and no headers otherwise.
78
+ * @param {SlackServiceConfig} config - The resolved service configuration.
79
+ * @returns {Record<string, string>} The authorization headers (empty without a token).
80
+ */
81
+ authHeaders(config) {
82
+ return config.token ? { Authorization: `Bearer ${config.token}` } : {};
83
+ }
84
+ /**
85
+ * @description Reads the Slack credentials and defaults from the environment
86
+ * @summary Reads the `comms.slack` environment slice and returns a partial
87
+ * config when a token is configured, `undefined` otherwise. Values pass
88
+ * through `envString`/`envNumber` to reject unset-leaf proxies.
89
+ * @returns {Partial<SlackServiceConfig> | undefined} A partial config, or `undefined` when no Slack token is configured.
90
+ */
91
+ configFromEnvironment() {
92
+ const env = CommsEnvironment.comms.slack;
93
+ const token = envString(env?.token);
94
+ if (!token)
95
+ return undefined;
96
+ return {
97
+ token,
98
+ baseUrl: envString(env.baseUrl),
99
+ timeout: envNumber(env.timeout),
100
+ };
101
+ }
102
+ /**
103
+ * @description Posts a request to a Slack Web API method
104
+ * @summary Shared request path for all Slack operations: asserts a token is
105
+ * configured, `POST`s the payload to `/<method>`, rejects non-`ok` Slack
106
+ * responses with an `InternalError`, and maps transport failures through
107
+ * {@link httpError}.
108
+ * @template T - The expected Slack response shape, extending `SlackApiResponse`.
109
+ * @param {string} method - The Slack Web API method name (e.g. `"chat.postMessage"`).
110
+ * @param {Record<string, unknown>} payload - The JSON body for the method.
111
+ * @returns {Promise<T>} The parsed Slack response payload.
112
+ * @throws {InternalError} When no token is configured or Slack answers with `ok: false`.
113
+ * @throws {NotFoundError} When Slack answers with HTTP 404.
114
+ * @throws {ConflictError} When Slack answers with HTTP 409.
115
+ * @throws {BadRequestError} When Slack answers with any other HTTP error status.
116
+ */
117
+ async call(method, payload) {
118
+ this.requireToken();
119
+ try {
120
+ const response = await this.client.post(`/${method}`, payload);
121
+ const data = response.data;
122
+ if (!data || data.ok !== true) {
123
+ throw new InternalError(`Slack API ${method} failed: ${data?.error ?? "unknown error"}`);
124
+ }
125
+ return data;
126
+ }
127
+ catch (error) {
128
+ throw httpError("Slack", `API ${method}`, error);
129
+ }
130
+ }
131
+ /**
132
+ * @description Posts a message to a Slack channel or thread
133
+ * @summary Sends the input to Slack's `chat.postMessage` method and returns
134
+ * the destination channel and message timestamp; use the returned `ts` as
135
+ * `threadTs` to reply in the same thread. Provide `blocks` for Block Kit
136
+ * layouts (with `text` as the fallback), or plain text alone.
137
+ * @param {SlackPostMessageInput} input - The message destination and content.
138
+ * @returns {Promise<SlackPostMessageResult>} The posted message's channel, timestamp, text, and raw payload.
139
+ * @throws {InternalError} When no token is configured or Slack rejects the message.
140
+ * @throws {NotFoundError} When the channel cannot be found (HTTP 404).
141
+ * @throws {ConflictError} When Slack answers with HTTP 409.
142
+ * @throws {BadRequestError} When Slack answers with any other HTTP error status.
143
+ * @example
144
+ * ```ts
145
+ * await slack.postMessage({
146
+ * channel: "#deploys",
147
+ * text: "Release 1.2.0 is live",
148
+ * unfurlLinks: false,
149
+ * });
150
+ * ```
151
+ */
152
+ async postMessage(input) {
153
+ const data = await this.call("chat.postMessage", {
154
+ channel: input.channel,
155
+ text: input.text,
156
+ blocks: input.blocks,
157
+ thread_ts: input.threadTs,
158
+ reply_broadcast: input.replyBroadcast,
159
+ unfurl_links: input.unfurlLinks,
160
+ unfurl_media: input.unfurlMedia,
161
+ });
162
+ return {
163
+ channel: data.channel,
164
+ ts: data.ts,
165
+ text: data.text,
166
+ message: data.message,
167
+ };
168
+ }
169
+ /**
170
+ * @description Lists Slack conversations with cursor paging
171
+ * @summary Calls `conversations.list` with a page size (default `100`),
172
+ * conversation `types` (default public and private channels), and archived
173
+ * exclusion (default `true`), returning normalized channels and the
174
+ * `nextCursor` to pass back as `cursor` for the next page.
175
+ * @param {object} [options] - Paging and filter options.
176
+ * @param {number} [options.limit] - Page size; defaults to `100`.
177
+ * @param {string} [options.cursor] - The `nextCursor` from the previous page.
178
+ * @param {string} [options.types] - Comma-separated conversation types (e.g. `"public_channel,private_channel"`); defaults to `"public_channel,private_channel"`.
179
+ * @param {boolean} [options.excludeArchived] - Whether archived channels are excluded; defaults to `true`.
180
+ * @returns {Promise<{channels: SlackChannel[], nextCursor?: string}>} The page of channels and the cursor for the next page, when more pages exist.
181
+ * @throws {InternalError} When no token is configured or Slack rejects the call.
182
+ * @throws {NotFoundError} When Slack answers with HTTP 404.
183
+ * @throws {ConflictError} When Slack answers with HTTP 409.
184
+ * @throws {BadRequestError} When Slack answers with any other HTTP error status.
185
+ * @example
186
+ * ```ts
187
+ * let cursor: string | undefined;
188
+ * do {
189
+ * const page = await slack.listConversations({ limit: 200, cursor });
190
+ * console.log(page.channels.map((channel) => channel.name));
191
+ * cursor = page.nextCursor;
192
+ * } while (cursor);
193
+ * ```
194
+ */
195
+ async listConversations(options = {}) {
196
+ const data = await this.call("conversations.list", {
197
+ limit: options.limit ?? 100,
198
+ cursor: options.cursor,
199
+ types: options.types ?? "public_channel,private_channel",
200
+ exclude_archived: options.excludeArchived ?? true,
201
+ });
202
+ return {
203
+ channels: (data.channels ?? []).map((channel) => ({
204
+ id: String(channel["id"] ?? ""),
205
+ name: envString(channel["name"]),
206
+ isPrivate: channel["is_private"] === true,
207
+ isArchived: channel["is_archived"] === true,
208
+ memberCount: typeof channel["num_members"] === "number"
209
+ ? channel["num_members"]
210
+ : undefined,
211
+ topic: channel["topic"]?.value,
212
+ purpose: channel["purpose"]?.value,
213
+ })),
214
+ nextCursor: envString(data.response_metadata?.next_cursor),
215
+ };
216
+ }
217
+ /**
218
+ * @description Fetches a single Slack conversation
219
+ * @summary Calls `conversations.info` for the given channel ID (or
220
+ * `#name`) and returns the normalized channel descriptor.
221
+ * @param {string} channel - The channel ID or `#name` to look up.
222
+ * @returns {Promise<SlackChannel>} The normalized conversation descriptor.
223
+ * @throws {InternalError} When no token is configured or Slack rejects the call.
224
+ * @throws {NotFoundError} When the channel does not exist (HTTP 404).
225
+ * @throws {ConflictError} When Slack answers with HTTP 409.
226
+ * @throws {BadRequestError} When Slack answers with any other HTTP error status.
227
+ */
228
+ async getConversation(channel) {
229
+ const data = await this.call("conversations.info", { channel });
230
+ const found = data.channel ?? {};
231
+ return {
232
+ id: String(found["id"] ?? channel),
233
+ name: envString(found["name"]),
234
+ isPrivate: found["is_private"] === true,
235
+ isArchived: found["is_archived"] === true,
236
+ memberCount: typeof found["num_members"] === "number"
237
+ ? found["num_members"]
238
+ : undefined,
239
+ topic: found["topic"]?.value,
240
+ purpose: found["purpose"]?.value,
241
+ };
242
+ }
243
+ /**
244
+ * @description Fetches a Slack user profile
245
+ * @summary Calls `users.info` for the given user ID and returns the raw
246
+ * user payload, or `undefined` when Slack reports no user.
247
+ * @param {string} userId - The Slack user ID to look up (e.g. `"U12345678"`).
248
+ * @returns {Promise<Record<string, unknown> | undefined>} The raw user payload, or `undefined` when the user is not found.
249
+ * @throws {InternalError} When no token is configured or Slack rejects the call.
250
+ * @throws {NotFoundError} When the user does not exist (HTTP 404).
251
+ * @throws {ConflictError} When Slack answers with HTTP 409.
252
+ * @throws {BadRequestError} When Slack answers with any other HTTP error status.
253
+ */
254
+ async getUser(userId) {
255
+ const data = await this.call("users.info", { user: userId });
256
+ return data.user;
257
+ }
258
+ }
259
+ //# sourceMappingURL=SlackService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlackService.js","sourceRoot":"","sources":["../../../../src/comms/slack/SlackService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @module integrations/comms/slack
3
+ * @summary Slack Web API service (posting, conversations, users).
4
+ * @description Re-exports the Slack client-based service and its types.
5
+ */
6
+ export * from "./SlackService.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/comms/slack/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,kCAA+B"}
@@ -0,0 +1,204 @@
1
+ /**
2
+ * @module integrations/comms/teams/service
3
+ * @summary Microsoft Teams integration service for webhook and Microsoft Graph channel messaging.
4
+ * @description Exposes two delivery paths as an undecorated client-based
5
+ * service built on {@link HttpApiService}: incoming-webhook
6
+ * `MessageCard` delivery (no Graph token required) and Microsoft Graph
7
+ * channel messaging, team listing, and channel listing (requires a Graph
8
+ * access token). Configuration comes from an explicit `TeamsServiceConfig`
9
+ * or the `comms.teams` environment slice, and failures are mapped to decaf
10
+ * errors via {@link httpError}.
11
+ */
12
+ import { InternalError } from "@decaf-ts/db-decorators";
13
+ import Axios from "axios";
14
+ import { CommsEnvironment } from "./../environment.js";
15
+ import { envNumber, envString } from "./../../shared/environmentValue.js";
16
+ import { HttpApiService, httpError, } from "./../../shared/http/index.js";
17
+ /**
18
+ * @description Microsoft Teams integration service
19
+ * @summary An undecorated HTTP service combining incoming-webhook
20
+ * delivery (needs only `webhookUrl`) with Microsoft Graph operations — channel
21
+ * messaging, team listing, and channel listing (need a Graph `token`).
22
+ * Webhook delivery posts an Office 365 `MessageCard` directly to the
23
+ * configured URL; Graph operations go through the service client with bearer
24
+ * auth, require a token (`requireToken()`), and map transport failures to
25
+ * decaf errors via {@link httpError}.
26
+ * @class TeamsService
27
+ * @category Comms
28
+ * @example
29
+ * ```ts
30
+ * import { TeamsService } from "@decaf-ts/integrations/comms/teams";
31
+ *
32
+ * const teams = new TeamsService();
33
+ * await teams.initialize({
34
+ * webhookUrl: process.env.GRAPH_CREDENTIAL_TEAMS_WEBHOOK_URL,
35
+ * token: process.env.GRAPH_CREDENTIAL_TEAMS_TOKEN,
36
+ * });
37
+ * await teams.sendWebhook({ title: "Deploy", text: "Release 1.2.0 is live" });
38
+ * ```
39
+ * @memberOf module:integrations/comms/teams/service
40
+ */
41
+ export class TeamsService extends HttpApiService {
42
+ constructor() {
43
+ super(...arguments);
44
+ /**
45
+ * @description The provider name used in error messages
46
+ */
47
+ this.serviceName = "Microsoft Teams";
48
+ }
49
+ /**
50
+ * @description The Microsoft Graph v1.0 base URL
51
+ * @summary Used when the resolved config carries no `baseUrl`.
52
+ * @returns {string} `"https://graph.microsoft.com/v1.0"`.
53
+ */
54
+ defaultBaseUrl() {
55
+ return "https://graph.microsoft.com/v1.0";
56
+ }
57
+ /**
58
+ * @description Builds the Microsoft Graph bearer authorization headers
59
+ * @summary Returns the `Authorization: Bearer <token>` header when the
60
+ * config carries a token, and no headers otherwise.
61
+ * @param {TeamsServiceConfig} config - The resolved service configuration.
62
+ * @returns {Record<string, string>} The authorization headers (empty without a token).
63
+ */
64
+ authHeaders(config) {
65
+ return config.token ? { Authorization: `Bearer ${config.token}` } : {};
66
+ }
67
+ /**
68
+ * @description Reads the Teams credentials and defaults from the environment
69
+ * @summary Reads the `comms.teams` environment slice and returns a partial
70
+ * config when a Graph token or webhook URL is configured, `undefined`
71
+ * otherwise. Values pass through `envString`/`envNumber` to reject
72
+ * unset-leaf proxies.
73
+ * @returns {Partial<TeamsServiceConfig> | undefined} A partial config, or `undefined` when neither token nor webhook URL is configured.
74
+ */
75
+ configFromEnvironment() {
76
+ const env = CommsEnvironment.comms.teams;
77
+ const token = envString(env?.token);
78
+ const webhookUrl = envString(env?.webhookUrl);
79
+ if (!token && !webhookUrl)
80
+ return undefined;
81
+ return {
82
+ token,
83
+ webhookUrl,
84
+ baseUrl: envString(env?.baseUrl),
85
+ timeout: envNumber(env?.timeout),
86
+ };
87
+ }
88
+ /**
89
+ * @description Delivers a MessageCard through the configured incoming webhook
90
+ * @summary Posts an Office 365 `MessageCard` (`@type: "MessageCard"`) with
91
+ * the title, text, and markdown flag directly to `config.webhookUrl` using
92
+ * a standalone Axios call (no Graph token involved). Requires a configured
93
+ * webhook URL.
94
+ * @param {TeamsWebhookMessage} input - The card title, text, and markdown flag.
95
+ * @returns {Promise<unknown>} The raw webhook response payload.
96
+ * @throws {InternalError} When no webhook URL is configured.
97
+ * @throws {NotFoundError} When the webhook endpoint answers with HTTP 404.
98
+ * @throws {ConflictError} When the webhook endpoint answers with HTTP 409.
99
+ * @throws {BadRequestError} When the webhook endpoint answers with any other HTTP error status.
100
+ */
101
+ async sendWebhook(input) {
102
+ const webhookUrl = this.config.webhookUrl;
103
+ if (!webhookUrl) {
104
+ throw new InternalError("Microsoft Teams requires a webhook URL");
105
+ }
106
+ try {
107
+ const response = await Axios.post(webhookUrl, {
108
+ "@type": "MessageCard",
109
+ "@context": "https://schema.org/extensions",
110
+ summary: input.title ?? input.text,
111
+ title: input.title,
112
+ text: input.text,
113
+ markdown: input.markdown ?? true,
114
+ }, { timeout: this.config.timeout ?? 30000 });
115
+ return response.data;
116
+ }
117
+ catch (error) {
118
+ throw httpError("Microsoft Teams", "webhook delivery", error);
119
+ }
120
+ }
121
+ /**
122
+ * @description Sends a message into a Teams channel through Microsoft Graph
123
+ * @summary `POST`s a chat message to
124
+ * `/teams/<teamId>/channels/<channelId>/messages` with the given content
125
+ * type (`text` by default, or `html`). Requires a Graph token and both a
126
+ * team and channel ID; IDs are URL-encoded.
127
+ * @param {TeamsChannelMessage} input - The target team/channel and the message content.
128
+ * @returns {Promise<unknown>} The raw Graph message payload.
129
+ * @throws {InternalError} When no token is configured or the team/channel IDs are missing.
130
+ * @throws {NotFoundError} When the team or channel does not exist (HTTP 404).
131
+ * @throws {ConflictError} When Graph answers with HTTP 409.
132
+ * @throws {BadRequestError} When Graph answers with any other HTTP error status.
133
+ * @example
134
+ * ```ts
135
+ * await teams.sendChannelMessage({
136
+ * teamId: "team-id",
137
+ * channelId: "channel-id",
138
+ * content: "<b>Release</b> 1.2.0 is live",
139
+ * contentType: "html",
140
+ * });
141
+ * ```
142
+ */
143
+ async sendChannelMessage(input) {
144
+ this.requireToken();
145
+ if (!input.teamId || !input.channelId) {
146
+ throw new InternalError("Microsoft Teams channel messages require a team and channel");
147
+ }
148
+ try {
149
+ const response = await this.client.post(`/teams/${encodeURIComponent(input.teamId)}/channels/${encodeURIComponent(input.channelId)}/messages`, {
150
+ body: {
151
+ contentType: input.contentType ?? "text",
152
+ content: input.content,
153
+ },
154
+ });
155
+ return response.data;
156
+ }
157
+ catch (error) {
158
+ throw httpError("Microsoft Teams", "channel message", error);
159
+ }
160
+ }
161
+ /**
162
+ * @description Lists Teams accessible to the authenticated identity
163
+ * @summary `GET`s `/teams` with a `$top` page size (default `50`) and
164
+ * returns the raw Graph `team` payloads.
165
+ * @param {number} [limit] - Maximum number of teams to return; defaults to `50`.
166
+ * @returns {Promise<Array<Record<string, unknown>>>} The raw Graph `team` payloads.
167
+ * @throws {InternalError} When no token is configured.
168
+ * @throws {NotFoundError} When Graph answers with HTTP 404.
169
+ * @throws {ConflictError} When Graph answers with HTTP 409.
170
+ * @throws {BadRequestError} When Graph answers with any other HTTP error status.
171
+ */
172
+ async listTeams(limit = 50) {
173
+ this.requireToken();
174
+ try {
175
+ const response = await this.client.get("/teams", { params: { $top: limit } });
176
+ return response.data.value ?? [];
177
+ }
178
+ catch (error) {
179
+ throw httpError("Microsoft Teams", "list teams", error);
180
+ }
181
+ }
182
+ /**
183
+ * @description Lists channels of a Teams team
184
+ * @summary `GET`s `/teams/<teamId>/channels` and returns the raw Graph
185
+ * `channel` payloads; the team ID is URL-encoded.
186
+ * @param {string} teamId - The ID of the team whose channels are listed.
187
+ * @returns {Promise<Array<Record<string, unknown>>>} The raw Graph `channel` payloads.
188
+ * @throws {InternalError} When no token is configured.
189
+ * @throws {NotFoundError} When the team does not exist (HTTP 404).
190
+ * @throws {ConflictError} When Graph answers with HTTP 409.
191
+ * @throws {BadRequestError} When Graph answers with any other HTTP error status.
192
+ */
193
+ async listChannels(teamId) {
194
+ this.requireToken();
195
+ try {
196
+ const response = await this.client.get(`/teams/${encodeURIComponent(teamId)}/channels`);
197
+ return response.data.value ?? [];
198
+ }
199
+ catch (error) {
200
+ throw httpError("Microsoft Teams", "list channels", error);
201
+ }
202
+ }
203
+ }
204
+ //# sourceMappingURL=TeamsService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeamsService.js","sourceRoot":"","sources":["../../../../src/comms/teams/TeamsService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @module integrations/comms/teams
3
+ * @summary Microsoft Teams service (webhook posts and Graph channel messaging).
4
+ * @description Re-exports the Teams client-based service and its types.
5
+ */
6
+ export * from "./TeamsService.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/comms/teams/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,kCAA+B"}