@decaf-ts/integrations 0.11.0 → 0.12.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 (496) 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/comms/email/EmailService.cjs +376 -0
  19. package/lib/cjs/comms/email/EmailService.cjs.map +1 -0
  20. package/lib/cjs/comms/email/index.cjs +29 -0
  21. package/lib/cjs/comms/email/index.cjs.map +1 -0
  22. package/lib/cjs/comms/email/mime.cjs +225 -0
  23. package/lib/cjs/comms/email/mime.cjs.map +1 -0
  24. package/lib/cjs/comms/email/smtp.cjs +204 -0
  25. package/lib/cjs/comms/email/smtp.cjs.map +1 -0
  26. package/lib/cjs/comms/environment.cjs +63 -0
  27. package/lib/cjs/comms/environment.cjs.map +1 -0
  28. package/lib/cjs/comms/gmail/GmailService.cjs +235 -0
  29. package/lib/cjs/comms/gmail/GmailService.cjs.map +1 -0
  30. package/lib/cjs/comms/gmail/index.cjs +24 -0
  31. package/lib/cjs/comms/gmail/index.cjs.map +1 -0
  32. package/lib/cjs/comms/index.cjs +31 -0
  33. package/lib/cjs/comms/index.cjs.map +1 -0
  34. package/lib/cjs/comms/slack/SlackService.cjs +264 -0
  35. package/lib/cjs/comms/slack/SlackService.cjs.map +1 -0
  36. package/lib/cjs/comms/slack/index.cjs +24 -0
  37. package/lib/cjs/comms/slack/index.cjs.map +1 -0
  38. package/lib/cjs/comms/teams/TeamsService.cjs +212 -0
  39. package/lib/cjs/comms/teams/TeamsService.cjs.map +1 -0
  40. package/lib/cjs/comms/teams/index.cjs +24 -0
  41. package/lib/cjs/comms/teams/index.cjs.map +1 -0
  42. package/lib/cjs/comms/telegram/TelegramService.cjs +196 -0
  43. package/lib/cjs/comms/telegram/TelegramService.cjs.map +1 -0
  44. package/lib/cjs/comms/telegram/index.cjs +24 -0
  45. package/lib/cjs/comms/telegram/index.cjs.map +1 -0
  46. package/lib/cjs/devops/environment.cjs +43 -0
  47. package/lib/cjs/devops/environment.cjs.map +1 -0
  48. package/lib/cjs/devops/github/GithubService.cjs +302 -0
  49. package/lib/cjs/devops/github/GithubService.cjs.map +1 -0
  50. package/lib/cjs/devops/github/index.cjs +24 -0
  51. package/lib/cjs/devops/github/index.cjs.map +1 -0
  52. package/lib/cjs/devops/gitlab/GitlabService.cjs +282 -0
  53. package/lib/cjs/devops/gitlab/GitlabService.cjs.map +1 -0
  54. package/lib/cjs/devops/gitlab/index.cjs +24 -0
  55. package/lib/cjs/devops/gitlab/index.cjs.map +1 -0
  56. package/lib/cjs/devops/index.cjs +28 -0
  57. package/lib/cjs/devops/index.cjs.map +1 -0
  58. package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs +2 -0
  59. package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs.map +1 -1
  60. package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs +2 -0
  61. package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs.map +1 -1
  62. package/lib/cjs/index.cjs +3 -3
  63. package/lib/cjs/io/airtable/AirtableService.cjs +266 -0
  64. package/lib/cjs/io/airtable/AirtableService.cjs.map +1 -0
  65. package/lib/cjs/io/airtable/index.cjs +24 -0
  66. package/lib/cjs/io/airtable/index.cjs.map +1 -0
  67. package/lib/cjs/io/environment.cjs +46 -0
  68. package/lib/cjs/io/environment.cjs.map +1 -0
  69. package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs +288 -0
  70. package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs.map +1 -0
  71. package/lib/cjs/io/google-sheets/index.cjs +24 -0
  72. package/lib/cjs/io/google-sheets/index.cjs.map +1 -0
  73. package/lib/cjs/io/graphql/GraphqlService.cjs +143 -0
  74. package/lib/cjs/io/graphql/GraphqlService.cjs.map +1 -0
  75. package/lib/cjs/io/graphql/index.cjs +24 -0
  76. package/lib/cjs/io/graphql/index.cjs.map +1 -0
  77. package/lib/cjs/io/index.cjs +30 -0
  78. package/lib/cjs/io/index.cjs.map +1 -0
  79. package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs +205 -0
  80. package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs.map +1 -0
  81. package/lib/cjs/io/spreadsheet/index.cjs +25 -0
  82. package/lib/cjs/io/spreadsheet/index.cjs.map +1 -0
  83. package/lib/cjs/namespaces/index.cjs +1 -0
  84. package/lib/cjs/namespaces/index.cjs.map +1 -1
  85. package/lib/cjs/namespaces/models/credential.model.cjs +115 -0
  86. package/lib/cjs/namespaces/models/credential.model.cjs.map +1 -0
  87. package/lib/cjs/namespaces/models/effective-permission.model.cjs +2 -0
  88. package/lib/cjs/namespaces/models/effective-permission.model.cjs.map +1 -1
  89. package/lib/cjs/namespaces/models/group-membership.model.cjs +2 -0
  90. package/lib/cjs/namespaces/models/group-membership.model.cjs.map +1 -1
  91. package/lib/cjs/namespaces/models/group.model.cjs +2 -0
  92. package/lib/cjs/namespaces/models/group.model.cjs.map +1 -1
  93. package/lib/cjs/namespaces/models/index.cjs +1 -0
  94. package/lib/cjs/namespaces/models/index.cjs.map +1 -1
  95. package/lib/cjs/namespaces/models/inheritance-block.model.cjs +2 -0
  96. package/lib/cjs/namespaces/models/inheritance-block.model.cjs.map +1 -1
  97. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +2 -0
  98. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs.map +1 -1
  99. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +2 -0
  100. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs.map +1 -1
  101. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +2 -0
  102. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs.map +1 -1
  103. package/lib/cjs/namespaces/models/org-unit.model.cjs +2 -0
  104. package/lib/cjs/namespaces/models/org-unit.model.cjs.map +1 -1
  105. package/lib/cjs/namespaces/models/permission.model.cjs +2 -0
  106. package/lib/cjs/namespaces/models/permission.model.cjs.map +1 -1
  107. package/lib/cjs/namespaces/models/principal.model.cjs +2 -0
  108. package/lib/cjs/namespaces/models/principal.model.cjs.map +1 -1
  109. package/lib/cjs/namespaces/models/protected-resource.model.cjs +2 -0
  110. package/lib/cjs/namespaces/models/protected-resource.model.cjs.map +1 -1
  111. package/lib/cjs/namespaces/models/resource-grant.model.cjs +2 -0
  112. package/lib/cjs/namespaces/models/resource-grant.model.cjs.map +1 -1
  113. package/lib/cjs/namespaces/models/role-assignment.model.cjs +2 -0
  114. package/lib/cjs/namespaces/models/role-assignment.model.cjs.map +1 -1
  115. package/lib/cjs/namespaces/models/role-permission.model.cjs +2 -0
  116. package/lib/cjs/namespaces/models/role-permission.model.cjs.map +1 -1
  117. package/lib/cjs/namespaces/models/role.model.cjs +2 -0
  118. package/lib/cjs/namespaces/models/role.model.cjs.map +1 -1
  119. package/lib/cjs/namespaces/models/storage-binding.model.cjs +2 -0
  120. package/lib/cjs/namespaces/models/storage-binding.model.cjs.map +1 -1
  121. package/lib/cjs/namespaces/models/tenant-membership.model.cjs +2 -0
  122. package/lib/cjs/namespaces/models/tenant-membership.model.cjs.map +1 -1
  123. package/lib/cjs/namespaces/models/tenant-profile.model.cjs +2 -0
  124. package/lib/cjs/namespaces/models/tenant-profile.model.cjs.map +1 -1
  125. package/lib/cjs/namespaces/models/tenant.model.cjs +2 -0
  126. package/lib/cjs/namespaces/models/tenant.model.cjs.map +1 -1
  127. package/lib/cjs/namespaces/models/user.model.cjs +2 -0
  128. package/lib/cjs/namespaces/models/user.model.cjs.map +1 -1
  129. package/lib/cjs/namespaces/rls/index.cjs +28 -0
  130. package/lib/cjs/namespaces/rls/index.cjs.map +1 -0
  131. package/lib/cjs/namespaces/rls/principal-resolver.cjs +66 -0
  132. package/lib/cjs/namespaces/rls/principal-resolver.cjs.map +1 -0
  133. package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs +269 -0
  134. package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs.map +1 -0
  135. package/lib/cjs/namespaces/rls/rls.constants.cjs +79 -0
  136. package/lib/cjs/namespaces/rls/rls.constants.cjs.map +1 -0
  137. package/lib/cjs/namespaces/rls/rls.template.cjs +719 -0
  138. package/lib/cjs/namespaces/rls/rls.template.cjs.map +1 -0
  139. package/lib/cjs/namespaces/rls/rls.types.cjs +4 -0
  140. package/lib/cjs/namespaces/rls/rls.types.cjs.map +1 -0
  141. package/lib/cjs/namespaces/rls/session-binding.cjs +70 -0
  142. package/lib/cjs/namespaces/rls/session-binding.cjs.map +1 -0
  143. package/lib/cjs/namespaces/services/credential.service.cjs +327 -0
  144. package/lib/cjs/namespaces/services/credential.service.cjs.map +1 -0
  145. package/lib/cjs/namespaces/services/index.cjs +1 -0
  146. package/lib/cjs/namespaces/services/index.cjs.map +1 -1
  147. package/lib/cjs/namespaces/types.cjs +6 -1
  148. package/lib/cjs/namespaces/types.cjs.map +1 -1
  149. package/lib/cjs/redis/adapter.cjs +7 -1
  150. package/lib/cjs/redis/adapter.cjs.map +1 -1
  151. package/lib/cjs/secrets/InfraCredentialBootstrap.cjs +80 -0
  152. package/lib/cjs/secrets/InfraCredentialBootstrap.cjs.map +1 -0
  153. package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -15
  154. package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +1 -1
  155. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -16
  156. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +1 -1
  157. package/lib/cjs/secrets/core/SecretReference.cjs +1 -0
  158. package/lib/cjs/secrets/core/SecretReference.cjs.map +1 -1
  159. package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs +28 -0
  160. package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs.map +1 -0
  161. package/lib/cjs/secrets/fs/FsSecretService.cjs +420 -0
  162. package/lib/cjs/secrets/fs/FsSecretService.cjs.map +1 -0
  163. package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs +25 -0
  164. package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs.map +1 -0
  165. package/lib/cjs/secrets/fs/index.cjs +27 -0
  166. package/lib/cjs/secrets/fs/index.cjs.map +1 -0
  167. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -16
  168. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +1 -1
  169. package/lib/cjs/secrets/index.cjs +2 -0
  170. package/lib/cjs/secrets/index.cjs.map +1 -1
  171. package/lib/cjs/secrets/model/ModelSecretService.cjs +335 -43
  172. package/lib/cjs/secrets/model/ModelSecretService.cjs.map +1 -1
  173. package/lib/cjs/secrets/model/Secret.cjs +83 -5
  174. package/lib/cjs/secrets/model/Secret.cjs.map +1 -1
  175. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -16
  176. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +1 -1
  177. package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -16
  178. package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +1 -1
  179. package/lib/cjs/shared/environmentValue.cjs +24 -0
  180. package/lib/cjs/shared/environmentValue.cjs.map +1 -1
  181. package/lib/cjs/shared/http/HttpApiService.cjs +190 -0
  182. package/lib/cjs/shared/http/HttpApiService.cjs.map +1 -0
  183. package/lib/cjs/shared/http/hermeticBoot.cjs +150 -0
  184. package/lib/cjs/shared/http/hermeticBoot.cjs.map +1 -0
  185. package/lib/cjs/shared/http/index.cjs +28 -0
  186. package/lib/cjs/shared/http/index.cjs.map +1 -0
  187. package/lib/esm/blob/azure/AzureBlobStoreService.js +13 -21
  188. package/lib/esm/blob/azure/AzureBlobStoreService.js.map +1 -1
  189. package/lib/esm/blob/core/BlobStoreService.js +26 -25
  190. package/lib/esm/blob/core/BlobStoreService.js.map +1 -1
  191. package/lib/esm/blob/gcp/GcsBlobStoreService.js +13 -21
  192. package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +1 -1
  193. package/lib/esm/blob/s3/S3BlobStoreService.js +12 -14
  194. package/lib/esm/blob/s3/S3BlobStoreService.js.map +1 -1
  195. package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js +14 -16
  196. package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js.map +1 -1
  197. package/lib/esm/comms/email/EmailService.js +338 -0
  198. package/lib/esm/comms/email/EmailService.js.map +1 -0
  199. package/lib/esm/comms/email/index.js +12 -0
  200. package/lib/esm/comms/email/index.js.map +1 -0
  201. package/lib/esm/comms/email/mime.js +218 -0
  202. package/lib/esm/comms/email/mime.js.map +1 -0
  203. package/lib/esm/comms/email/smtp.js +166 -0
  204. package/lib/esm/comms/email/smtp.js.map +1 -0
  205. package/lib/esm/comms/environment.js +59 -0
  206. package/lib/esm/comms/environment.js.map +1 -0
  207. package/lib/esm/comms/gmail/GmailService.js +230 -0
  208. package/lib/esm/comms/gmail/GmailService.js.map +1 -0
  209. package/lib/esm/comms/gmail/index.js +7 -0
  210. package/lib/esm/comms/gmail/index.js.map +1 -0
  211. package/lib/esm/comms/index.js +14 -0
  212. package/lib/esm/comms/index.js.map +1 -0
  213. package/lib/esm/comms/slack/SlackService.js +259 -0
  214. package/lib/esm/comms/slack/SlackService.js.map +1 -0
  215. package/lib/esm/comms/slack/index.js +7 -0
  216. package/lib/esm/comms/slack/index.js.map +1 -0
  217. package/lib/esm/comms/teams/TeamsService.js +204 -0
  218. package/lib/esm/comms/teams/TeamsService.js.map +1 -0
  219. package/lib/esm/comms/teams/index.js +7 -0
  220. package/lib/esm/comms/teams/index.js.map +1 -0
  221. package/lib/esm/comms/telegram/TelegramService.js +191 -0
  222. package/lib/esm/comms/telegram/TelegramService.js.map +1 -0
  223. package/lib/esm/comms/telegram/index.js +7 -0
  224. package/lib/esm/comms/telegram/index.js.map +1 -0
  225. package/lib/esm/devops/environment.js +39 -0
  226. package/lib/esm/devops/environment.js.map +1 -0
  227. package/lib/esm/devops/github/GithubService.js +297 -0
  228. package/lib/esm/devops/github/GithubService.js.map +1 -0
  229. package/lib/esm/devops/github/index.js +7 -0
  230. package/lib/esm/devops/github/index.js.map +1 -0
  231. package/lib/esm/devops/gitlab/GitlabService.js +277 -0
  232. package/lib/esm/devops/gitlab/GitlabService.js.map +1 -0
  233. package/lib/esm/devops/gitlab/index.js +7 -0
  234. package/lib/esm/devops/gitlab/index.js.map +1 -0
  235. package/lib/esm/devops/index.js +11 -0
  236. package/lib/esm/devops/index.js.map +1 -0
  237. package/lib/esm/feature-flags/models/FeatureFlag.model.js +2 -0
  238. package/lib/esm/feature-flags/models/FeatureFlag.model.js.map +1 -1
  239. package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js +2 -0
  240. package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js.map +1 -1
  241. package/lib/esm/index.js +3 -3
  242. package/lib/esm/io/airtable/AirtableService.js +261 -0
  243. package/lib/esm/io/airtable/AirtableService.js.map +1 -0
  244. package/lib/esm/io/airtable/index.js +7 -0
  245. package/lib/esm/io/airtable/index.js.map +1 -0
  246. package/lib/esm/io/environment.js +42 -0
  247. package/lib/esm/io/environment.js.map +1 -0
  248. package/lib/esm/io/google-sheets/GoogleSheetsService.js +283 -0
  249. package/lib/esm/io/google-sheets/GoogleSheetsService.js.map +1 -0
  250. package/lib/esm/io/google-sheets/index.js +7 -0
  251. package/lib/esm/io/google-sheets/index.js.map +1 -0
  252. package/lib/esm/io/graphql/GraphqlService.js +138 -0
  253. package/lib/esm/io/graphql/GraphqlService.js.map +1 -0
  254. package/lib/esm/io/graphql/index.js +7 -0
  255. package/lib/esm/io/graphql/index.js.map +1 -0
  256. package/lib/esm/io/index.js +13 -0
  257. package/lib/esm/io/index.js.map +1 -0
  258. package/lib/esm/io/spreadsheet/SpreadsheetService.js +200 -0
  259. package/lib/esm/io/spreadsheet/SpreadsheetService.js.map +1 -0
  260. package/lib/esm/io/spreadsheet/index.js +8 -0
  261. package/lib/esm/io/spreadsheet/index.js.map +1 -0
  262. package/lib/esm/namespaces/index.js +1 -0
  263. package/lib/esm/namespaces/index.js.map +1 -1
  264. package/lib/esm/namespaces/models/credential.model.js +106 -0
  265. package/lib/esm/namespaces/models/credential.model.js.map +1 -0
  266. package/lib/esm/namespaces/models/effective-permission.model.js +2 -0
  267. package/lib/esm/namespaces/models/effective-permission.model.js.map +1 -1
  268. package/lib/esm/namespaces/models/group-membership.model.js +2 -0
  269. package/lib/esm/namespaces/models/group-membership.model.js.map +1 -1
  270. package/lib/esm/namespaces/models/group.model.js +2 -0
  271. package/lib/esm/namespaces/models/group.model.js.map +1 -1
  272. package/lib/esm/namespaces/models/index.js +1 -0
  273. package/lib/esm/namespaces/models/index.js.map +1 -1
  274. package/lib/esm/namespaces/models/inheritance-block.model.js +2 -0
  275. package/lib/esm/namespaces/models/inheritance-block.model.js.map +1 -1
  276. package/lib/esm/namespaces/models/org-unit-closure.model.js +2 -0
  277. package/lib/esm/namespaces/models/org-unit-closure.model.js.map +1 -1
  278. package/lib/esm/namespaces/models/org-unit-membership.model.js +2 -0
  279. package/lib/esm/namespaces/models/org-unit-membership.model.js.map +1 -1
  280. package/lib/esm/namespaces/models/org-unit-profile.model.js +2 -0
  281. package/lib/esm/namespaces/models/org-unit-profile.model.js.map +1 -1
  282. package/lib/esm/namespaces/models/org-unit.model.js +2 -0
  283. package/lib/esm/namespaces/models/org-unit.model.js.map +1 -1
  284. package/lib/esm/namespaces/models/permission.model.js +2 -0
  285. package/lib/esm/namespaces/models/permission.model.js.map +1 -1
  286. package/lib/esm/namespaces/models/principal.model.js +2 -0
  287. package/lib/esm/namespaces/models/principal.model.js.map +1 -1
  288. package/lib/esm/namespaces/models/protected-resource.model.js +2 -0
  289. package/lib/esm/namespaces/models/protected-resource.model.js.map +1 -1
  290. package/lib/esm/namespaces/models/resource-grant.model.js +2 -0
  291. package/lib/esm/namespaces/models/resource-grant.model.js.map +1 -1
  292. package/lib/esm/namespaces/models/role-assignment.model.js +2 -0
  293. package/lib/esm/namespaces/models/role-assignment.model.js.map +1 -1
  294. package/lib/esm/namespaces/models/role-permission.model.js +2 -0
  295. package/lib/esm/namespaces/models/role-permission.model.js.map +1 -1
  296. package/lib/esm/namespaces/models/role.model.js +2 -0
  297. package/lib/esm/namespaces/models/role.model.js.map +1 -1
  298. package/lib/esm/namespaces/models/storage-binding.model.js +2 -0
  299. package/lib/esm/namespaces/models/storage-binding.model.js.map +1 -1
  300. package/lib/esm/namespaces/models/tenant-membership.model.js +2 -0
  301. package/lib/esm/namespaces/models/tenant-membership.model.js.map +1 -1
  302. package/lib/esm/namespaces/models/tenant-profile.model.js +2 -0
  303. package/lib/esm/namespaces/models/tenant-profile.model.js.map +1 -1
  304. package/lib/esm/namespaces/models/tenant.model.js +2 -0
  305. package/lib/esm/namespaces/models/tenant.model.js.map +1 -1
  306. package/lib/esm/namespaces/models/user.model.js +2 -0
  307. package/lib/esm/namespaces/models/user.model.js.map +1 -1
  308. package/lib/esm/namespaces/rls/index.js +11 -0
  309. package/lib/esm/namespaces/rls/index.js.map +1 -0
  310. package/lib/esm/namespaces/rls/principal-resolver.js +61 -0
  311. package/lib/esm/namespaces/rls/principal-resolver.js.map +1 -0
  312. package/lib/esm/namespaces/rls/rls-bootstrap.service.js +261 -0
  313. package/lib/esm/namespaces/rls/rls-bootstrap.service.js.map +1 -0
  314. package/lib/esm/namespaces/rls/rls.constants.js +75 -0
  315. package/lib/esm/namespaces/rls/rls.constants.js.map +1 -0
  316. package/lib/esm/namespaces/rls/rls.template.js +711 -0
  317. package/lib/esm/namespaces/rls/rls.template.js.map +1 -0
  318. package/lib/esm/namespaces/rls/rls.types.js +9 -0
  319. package/lib/esm/namespaces/rls/rls.types.js.map +1 -0
  320. package/lib/esm/namespaces/rls/session-binding.js +65 -0
  321. package/lib/esm/namespaces/rls/session-binding.js.map +1 -0
  322. package/lib/esm/namespaces/services/credential.service.js +322 -0
  323. package/lib/esm/namespaces/services/credential.service.js.map +1 -0
  324. package/lib/esm/namespaces/services/index.js +1 -0
  325. package/lib/esm/namespaces/services/index.js.map +1 -1
  326. package/lib/esm/namespaces/types.js +6 -0
  327. package/lib/esm/namespaces/types.js.map +1 -1
  328. package/lib/esm/redis/adapter.js +7 -1
  329. package/lib/esm/redis/adapter.js.map +1 -1
  330. package/lib/esm/secrets/InfraCredentialBootstrap.js +74 -0
  331. package/lib/esm/secrets/InfraCredentialBootstrap.js.map +1 -0
  332. package/lib/esm/secrets/aws/AwsSecretService.js +3 -13
  333. package/lib/esm/secrets/aws/AwsSecretService.js.map +1 -1
  334. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +2 -13
  335. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +1 -1
  336. package/lib/esm/secrets/core/SecretReference.js +1 -0
  337. package/lib/esm/secrets/core/SecretReference.js.map +1 -1
  338. package/lib/esm/secrets/fs/FsSecretEnvironment.js +24 -0
  339. package/lib/esm/secrets/fs/FsSecretEnvironment.js.map +1 -0
  340. package/lib/esm/secrets/fs/FsSecretService.js +412 -0
  341. package/lib/esm/secrets/fs/FsSecretService.js.map +1 -0
  342. package/lib/esm/secrets/fs/FsSecretServiceConfig.js +21 -0
  343. package/lib/esm/secrets/fs/FsSecretServiceConfig.js.map +1 -0
  344. package/lib/esm/secrets/fs/index.js +10 -0
  345. package/lib/esm/secrets/fs/index.js.map +1 -0
  346. package/lib/esm/secrets/gcp/GcpSecretManagerService.js +2 -13
  347. package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +1 -1
  348. package/lib/esm/secrets/index.js +2 -0
  349. package/lib/esm/secrets/index.js.map +1 -1
  350. package/lib/esm/secrets/model/ModelSecretService.js +337 -42
  351. package/lib/esm/secrets/model/ModelSecretService.js.map +1 -1
  352. package/lib/esm/secrets/model/Secret.js +86 -7
  353. package/lib/esm/secrets/model/Secret.js.map +1 -1
  354. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +2 -13
  355. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +1 -1
  356. package/lib/esm/secrets/vault/VaultSecretService.js +2 -13
  357. package/lib/esm/secrets/vault/VaultSecretService.js.map +1 -1
  358. package/lib/esm/shared/environmentValue.js +24 -0
  359. package/lib/esm/shared/environmentValue.js.map +1 -1
  360. package/lib/esm/shared/http/HttpApiService.js +181 -0
  361. package/lib/esm/shared/http/HttpApiService.js.map +1 -0
  362. package/lib/esm/shared/http/hermeticBoot.js +146 -0
  363. package/lib/esm/shared/http/hermeticBoot.js.map +1 -0
  364. package/lib/esm/shared/http/index.js +11 -0
  365. package/lib/esm/shared/http/index.js.map +1 -0
  366. package/lib/types/blob/azure/AzureBlobStoreService.d.cts +7 -7
  367. package/lib/types/blob/azure/AzureBlobStoreService.d.mts +7 -7
  368. package/lib/types/blob/core/BlobStoreService.d.cts +28 -27
  369. package/lib/types/blob/core/BlobStoreService.d.mts +28 -27
  370. package/lib/types/blob/gcp/GcsBlobStoreService.d.cts +7 -7
  371. package/lib/types/blob/gcp/GcsBlobStoreService.d.mts +7 -7
  372. package/lib/types/blob/s3/S3BlobStoreService.d.cts +9 -1
  373. package/lib/types/blob/s3/S3BlobStoreService.d.mts +9 -1
  374. package/lib/types/blob/s3/S3CompatibleBlobStoreService.d.cts +11 -15
  375. package/lib/types/blob/s3/S3CompatibleBlobStoreService.d.mts +11 -15
  376. package/lib/types/comms/email/EmailService.d.cts +184 -0
  377. package/lib/types/comms/email/EmailService.d.mts +184 -0
  378. package/lib/types/comms/email/index.d.cts +11 -0
  379. package/lib/types/comms/email/index.d.mts +11 -0
  380. package/lib/types/comms/email/mime.d.cts +84 -0
  381. package/lib/types/comms/email/mime.d.mts +84 -0
  382. package/lib/types/comms/email/smtp.d.cts +107 -0
  383. package/lib/types/comms/email/smtp.d.mts +107 -0
  384. package/lib/types/comms/environment.d.cts +84 -0
  385. package/lib/types/comms/environment.d.mts +84 -0
  386. package/lib/types/comms/gmail/GmailService.d.cts +190 -0
  387. package/lib/types/comms/gmail/GmailService.d.mts +190 -0
  388. package/lib/types/comms/gmail/index.d.cts +6 -0
  389. package/lib/types/comms/gmail/index.d.mts +6 -0
  390. package/lib/types/comms/index.d.cts +13 -0
  391. package/lib/types/comms/index.d.mts +13 -0
  392. package/lib/types/comms/slack/SlackService.d.cts +259 -0
  393. package/lib/types/comms/slack/SlackService.d.mts +259 -0
  394. package/lib/types/comms/slack/index.d.cts +6 -0
  395. package/lib/types/comms/slack/index.d.mts +6 -0
  396. package/lib/types/comms/teams/TeamsService.d.cts +172 -0
  397. package/lib/types/comms/teams/TeamsService.d.mts +172 -0
  398. package/lib/types/comms/teams/index.d.cts +6 -0
  399. package/lib/types/comms/teams/index.d.mts +6 -0
  400. package/lib/types/comms/telegram/TelegramService.d.cts +202 -0
  401. package/lib/types/comms/telegram/TelegramService.d.mts +202 -0
  402. package/lib/types/comms/telegram/index.d.cts +6 -0
  403. package/lib/types/comms/telegram/index.d.mts +6 -0
  404. package/lib/types/devops/environment.d.cts +62 -0
  405. package/lib/types/devops/environment.d.mts +62 -0
  406. package/lib/types/devops/github/GithubService.d.cts +287 -0
  407. package/lib/types/devops/github/GithubService.d.mts +287 -0
  408. package/lib/types/devops/github/index.d.cts +6 -0
  409. package/lib/types/devops/github/index.d.mts +6 -0
  410. package/lib/types/devops/gitlab/GitlabService.d.cts +277 -0
  411. package/lib/types/devops/gitlab/GitlabService.d.mts +277 -0
  412. package/lib/types/devops/gitlab/index.d.cts +6 -0
  413. package/lib/types/devops/gitlab/index.d.mts +6 -0
  414. package/lib/types/devops/index.d.cts +10 -0
  415. package/lib/types/devops/index.d.mts +10 -0
  416. package/lib/types/index.d.cts +2 -2
  417. package/lib/types/index.d.mts +2 -2
  418. package/lib/types/io/airtable/AirtableService.d.cts +268 -0
  419. package/lib/types/io/airtable/AirtableService.d.mts +268 -0
  420. package/lib/types/io/airtable/index.d.cts +6 -0
  421. package/lib/types/io/airtable/index.d.mts +6 -0
  422. package/lib/types/io/environment.d.cts +67 -0
  423. package/lib/types/io/environment.d.mts +67 -0
  424. package/lib/types/io/google-sheets/GoogleSheetsService.d.cts +204 -0
  425. package/lib/types/io/google-sheets/GoogleSheetsService.d.mts +204 -0
  426. package/lib/types/io/google-sheets/index.d.cts +6 -0
  427. package/lib/types/io/google-sheets/index.d.mts +6 -0
  428. package/lib/types/io/graphql/GraphqlService.d.cts +173 -0
  429. package/lib/types/io/graphql/GraphqlService.d.mts +173 -0
  430. package/lib/types/io/graphql/index.d.cts +6 -0
  431. package/lib/types/io/graphql/index.d.mts +6 -0
  432. package/lib/types/io/index.d.cts +12 -0
  433. package/lib/types/io/index.d.mts +12 -0
  434. package/lib/types/io/spreadsheet/SpreadsheetService.d.cts +144 -0
  435. package/lib/types/io/spreadsheet/SpreadsheetService.d.mts +144 -0
  436. package/lib/types/io/spreadsheet/index.d.cts +7 -0
  437. package/lib/types/io/spreadsheet/index.d.mts +7 -0
  438. package/lib/types/namespaces/index.d.cts +1 -0
  439. package/lib/types/namespaces/index.d.mts +1 -0
  440. package/lib/types/namespaces/models/credential.model.d.cts +23 -0
  441. package/lib/types/namespaces/models/credential.model.d.mts +23 -0
  442. package/lib/types/namespaces/models/index.d.cts +1 -0
  443. package/lib/types/namespaces/models/index.d.mts +1 -0
  444. package/lib/types/namespaces/rls/index.d.cts +10 -0
  445. package/lib/types/namespaces/rls/index.d.mts +10 -0
  446. package/lib/types/namespaces/rls/principal-resolver.d.cts +47 -0
  447. package/lib/types/namespaces/rls/principal-resolver.d.mts +47 -0
  448. package/lib/types/namespaces/rls/rls-bootstrap.service.d.cts +157 -0
  449. package/lib/types/namespaces/rls/rls-bootstrap.service.d.mts +157 -0
  450. package/lib/types/namespaces/rls/rls.constants.d.cts +52 -0
  451. package/lib/types/namespaces/rls/rls.constants.d.mts +52 -0
  452. package/lib/types/namespaces/rls/rls.template.d.cts +42 -0
  453. package/lib/types/namespaces/rls/rls.template.d.mts +42 -0
  454. package/lib/types/namespaces/rls/rls.types.d.cts +77 -0
  455. package/lib/types/namespaces/rls/rls.types.d.mts +77 -0
  456. package/lib/types/namespaces/rls/session-binding.d.cts +87 -0
  457. package/lib/types/namespaces/rls/session-binding.d.mts +87 -0
  458. package/lib/types/namespaces/services/credential.service.d.cts +175 -0
  459. package/lib/types/namespaces/services/credential.service.d.mts +175 -0
  460. package/lib/types/namespaces/services/index.d.cts +1 -0
  461. package/lib/types/namespaces/services/index.d.mts +1 -0
  462. package/lib/types/namespaces/types.d.cts +37 -0
  463. package/lib/types/namespaces/types.d.mts +37 -0
  464. package/lib/types/redis/adapter.d.cts +2 -0
  465. package/lib/types/redis/adapter.d.mts +2 -0
  466. package/lib/types/redis/types.d.cts +27 -2
  467. package/lib/types/redis/types.d.mts +27 -2
  468. package/lib/types/secrets/InfraCredentialBootstrap.d.cts +100 -0
  469. package/lib/types/secrets/InfraCredentialBootstrap.d.mts +100 -0
  470. package/lib/types/secrets/core/SecretTypes.d.cts +15 -1
  471. package/lib/types/secrets/core/SecretTypes.d.mts +15 -1
  472. package/lib/types/secrets/fs/FsSecretEnvironment.d.cts +42 -0
  473. package/lib/types/secrets/fs/FsSecretEnvironment.d.mts +42 -0
  474. package/lib/types/secrets/fs/FsSecretService.d.cts +207 -0
  475. package/lib/types/secrets/fs/FsSecretService.d.mts +207 -0
  476. package/lib/types/secrets/fs/FsSecretServiceConfig.d.cts +37 -0
  477. package/lib/types/secrets/fs/FsSecretServiceConfig.d.mts +37 -0
  478. package/lib/types/secrets/fs/index.d.cts +9 -0
  479. package/lib/types/secrets/fs/index.d.mts +9 -0
  480. package/lib/types/secrets/index.d.cts +2 -0
  481. package/lib/types/secrets/index.d.mts +2 -0
  482. package/lib/types/secrets/model/ModelSecretService.d.cts +190 -1
  483. package/lib/types/secrets/model/ModelSecretService.d.mts +190 -1
  484. package/lib/types/secrets/model/Secret.d.cts +44 -3
  485. package/lib/types/secrets/model/Secret.d.mts +44 -3
  486. package/lib/types/shared/environmentValue.d.cts +24 -0
  487. package/lib/types/shared/environmentValue.d.mts +24 -0
  488. package/lib/types/shared/http/HttpApiService.d.cts +193 -0
  489. package/lib/types/shared/http/HttpApiService.d.mts +193 -0
  490. package/lib/types/shared/http/hermeticBoot.d.cts +84 -0
  491. package/lib/types/shared/http/hermeticBoot.d.mts +84 -0
  492. package/lib/types/shared/http/index.d.cts +10 -0
  493. package/lib/types/shared/http/index.d.mts +10 -0
  494. package/package.json +180 -3
  495. package/sql/002_rls.sql +660 -15
  496. package/sql/004_credentials.sql +46 -0
@@ -0,0 +1,230 @@
1
+ /**
2
+ * @module integrations/comms/gmail/service
3
+ * @summary Gmail API integration service for sending and listing messages.
4
+ * @description Exposes the Gmail REST API (`users.messages.send`,
5
+ * `users.messages.list`, `users.messages.get`, `users.labels.list`) as an
6
+ * undecorated client-based service built on {@link HttpApiService}.
7
+ * Message sending reuses the shared MIME builder from the email integration
8
+ * (`buildEmail`) and posts the raw MIME message as base64url. Configuration
9
+ * comes from an explicit `GmailServiceConfig` or the `comms.gmail` environment
10
+ * slice, and failures are mapped to decaf errors via {@link httpError}.
11
+ */
12
+ import { InternalError } from "@decaf-ts/db-decorators";
13
+ import { CommsEnvironment } from "./../environment.js";
14
+ import { envNumber, envString } from "./../../shared/environmentValue.js";
15
+ import { HttpApiService, httpError, } from "./../../shared/http/index.js";
16
+ import { buildEmail } from "./../email/mime.js";
17
+ /**
18
+ * @description Gmail API integration service
19
+ * @summary An undecorated HTTP service for sending MIME-built
20
+ * emails, listing messages with Gmail query syntax and page tokens, fetching
21
+ * a single message in a chosen format, and listing labels. All operations
22
+ * require an OAuth token (`requireToken()`) and operate on the configured
23
+ * `userId` mailbox (default `"me"`); transport failures are mapped to decaf
24
+ * errors via {@link httpError}.
25
+ * @class GmailService
26
+ * @category Comms
27
+ * @example
28
+ * ```ts
29
+ * import { GmailService } from "@decaf-ts/integrations/comms/gmail";
30
+ *
31
+ * const gmail = new GmailService();
32
+ * await gmail.initialize({
33
+ * token: process.env.GRAPH_CREDENTIAL_GMAIL_TOKEN,
34
+ * });
35
+ * await gmail.send({
36
+ * from: "bot@example.com",
37
+ * to: "ops@example.com",
38
+ * subject: "Deploy",
39
+ * text: "Release 1.2.0 is live",
40
+ * });
41
+ * ```
42
+ * @memberOf module:integrations/comms/gmail/service
43
+ */
44
+ export class GmailService extends HttpApiService {
45
+ constructor() {
46
+ super(...arguments);
47
+ /**
48
+ * @description The provider name used in error messages
49
+ */
50
+ this.serviceName = "Gmail";
51
+ }
52
+ /**
53
+ * @description The Gmail REST API base URL
54
+ * @summary Used when the resolved config carries no `baseUrl`.
55
+ * @returns {string} `"https://gmail.googleapis.com/gmail/v1"`.
56
+ */
57
+ defaultBaseUrl() {
58
+ return "https://gmail.googleapis.com/gmail/v1";
59
+ }
60
+ /**
61
+ * @description Builds the Gmail OAuth bearer authorization headers
62
+ * @summary Returns the `Authorization: Bearer <token>` header when the
63
+ * config carries a token, and no headers otherwise.
64
+ * @param {GmailServiceConfig} config - The resolved service configuration.
65
+ * @returns {Record<string, string>} The authorization headers (empty without a token).
66
+ */
67
+ authHeaders(config) {
68
+ return config.token ? { Authorization: `Bearer ${config.token}` } : {};
69
+ }
70
+ /**
71
+ * @description Reads the Gmail credentials and defaults from the environment
72
+ * @summary Reads the `comms.gmail` environment slice and returns a partial
73
+ * config when a token is configured, `undefined` otherwise. Values pass
74
+ * through `envString`/`envNumber` to reject unset-leaf proxies.
75
+ * @returns {Partial<GmailServiceConfig> | undefined} A partial config, or `undefined` when no Gmail token is configured.
76
+ */
77
+ configFromEnvironment() {
78
+ const env = CommsEnvironment.comms.gmail;
79
+ const token = envString(env?.token);
80
+ if (!token)
81
+ return undefined;
82
+ return {
83
+ token,
84
+ userId: envString(env.userId),
85
+ baseUrl: envString(env.baseUrl),
86
+ timeout: envNumber(env.timeout),
87
+ };
88
+ }
89
+ /**
90
+ * @description Builds the mailbox-scoped API path
91
+ * @summary Returns `/users/<userId>` with the configured `userId` (or
92
+ * `"me"` when unset) URL-encoded; all message and label operations are
93
+ * relative to this path.
94
+ * @returns {string} The URL-encoded mailbox path.
95
+ */
96
+ userPath() {
97
+ return `/users/${encodeURIComponent(this.config.userId ?? "me")}`;
98
+ }
99
+ /**
100
+ * @description Sends an email through the Gmail API
101
+ * @summary Builds a raw MIME message from the input with the shared email
102
+ * MIME builder (`buildEmail`), base64url-encodes it, and `POST`s it to
103
+ * `users.messages.send`. Requires a token and a `from` sender address.
104
+ * @param {EmailMessageInput} input - The message envelope and body (`from`, `to`, `subject`, and optional `cc`/`bcc`/`text`/`html`/`replyTo`/`attachments`).
105
+ * @returns {Promise<GmailSendResult>} Gmail's identifiers for the sent message.
106
+ * @throws {InternalError} When no token is configured or the sender address is missing.
107
+ * @throws {NotFoundError} When the endpoint answers with HTTP 404.
108
+ * @throws {ConflictError} When Gmail answers with HTTP 409.
109
+ * @throws {BadRequestError} When Gmail answers with any other HTTP error status (e.g. invalid recipients).
110
+ */
111
+ async send(input) {
112
+ this.requireToken();
113
+ if (!input.from) {
114
+ throw new InternalError("Gmail send requires a sender address");
115
+ }
116
+ const built = buildEmail(input);
117
+ try {
118
+ const response = await this.client.post(`${this.userPath()}/messages/send`, {
119
+ raw: Buffer.from(built.raw, "utf8").toString("base64url"),
120
+ });
121
+ return {
122
+ id: String(response.data.id ?? built.messageId),
123
+ threadId: response.data.threadId,
124
+ labelIds: response.data.labelIds,
125
+ };
126
+ }
127
+ catch (error) {
128
+ throw httpError("Gmail", "send message", error);
129
+ }
130
+ }
131
+ /**
132
+ * @description Lists mailbox messages with Gmail query paging
133
+ * @summary `GET`s `users.messages.list` with an optional Gmail `query`
134
+ * (`q` parameter, e.g. `"from:user@example.com is:unread"`), a page size
135
+ * (default `25`), a `pageToken` from the previous page, and `labelIds`
136
+ * filtering. Returns the message references and the `nextPageToken` to pass
137
+ * back as `pageToken` for the next page.
138
+ * @param {object} [options] - Query and paging options.
139
+ * @param {string} [options.query] - Gmail search query (`q` parameter).
140
+ * @param {number} [options.maxResults] - Page size; defaults to `25`.
141
+ * @param {string} [options.pageToken] - The `nextPageToken` from the previous page.
142
+ * @param {string[]} [options.labelIds] - Label IDs the messages must carry.
143
+ * @returns {Promise<GmailListResult>} One page of message references with the next page token when more pages exist.
144
+ * @throws {InternalError} When no token is configured.
145
+ * @throws {NotFoundError} When the endpoint answers with HTTP 404.
146
+ * @throws {ConflictError} When Gmail answers with HTTP 409.
147
+ * @throws {BadRequestError} When Gmail answers with any other HTTP error status (e.g. invalid query).
148
+ * @example
149
+ * ```ts
150
+ * let pageToken: string | undefined;
151
+ * do {
152
+ * const page = await gmail.listMessages({
153
+ * query: "is:unread",
154
+ * maxResults: 100,
155
+ * pageToken,
156
+ * });
157
+ * console.log(page.messages);
158
+ * pageToken = page.nextPageToken;
159
+ * } while (pageToken);
160
+ * ```
161
+ */
162
+ async listMessages(options = {}) {
163
+ this.requireToken();
164
+ try {
165
+ const response = await this.client.get(`${this.userPath()}/messages`, {
166
+ params: {
167
+ q: options.query,
168
+ maxResults: options.maxResults ?? 25,
169
+ pageToken: options.pageToken,
170
+ labelIds: options.labelIds,
171
+ },
172
+ });
173
+ return {
174
+ messages: response.data.messages ?? [],
175
+ nextPageToken: response.data.nextPageToken,
176
+ resultSizeEstimate: response.data.resultSizeEstimate,
177
+ };
178
+ }
179
+ catch (error) {
180
+ throw httpError("Gmail", "list messages", error);
181
+ }
182
+ }
183
+ /**
184
+ * @description Fetches a single Gmail message
185
+ * @summary `GET`s `users.messages.get` for the given message ID with the
186
+ * requested `format`. With `"full"` (the default) the payload includes the
187
+ * parsed body parts; `"metadata"` limits it to headers and labels,
188
+ * `"minimal"` to identifiers only, and `"raw"` returns the raw MIME string.
189
+ * @param {string} id - The Gmail message ID.
190
+ * @param {"full" | "metadata" | "minimal" | "raw"} [format] - The message format to request; defaults to `"full"`.
191
+ * @returns {Promise<Record<string, unknown>>} The raw Gmail message payload in the requested format.
192
+ * @throws {InternalError} When no token is configured or the message ID is empty.
193
+ * @throws {NotFoundError} When the message does not exist (HTTP 404).
194
+ * @throws {ConflictError} When Gmail answers with HTTP 409.
195
+ * @throws {BadRequestError} When Gmail answers with any other HTTP error status.
196
+ */
197
+ async getMessage(id, format = "full") {
198
+ this.requireToken();
199
+ if (!id)
200
+ throw new InternalError("Gmail getMessage requires a message ID");
201
+ try {
202
+ const response = await this.client.get(`${this.userPath()}/messages/${encodeURIComponent(id)}`, { params: { format } });
203
+ return response.data;
204
+ }
205
+ catch (error) {
206
+ throw httpError("Gmail", "get message", error);
207
+ }
208
+ }
209
+ /**
210
+ * @description Lists the mailbox's Gmail labels
211
+ * @summary `GET`s `users.labels.list` and returns the raw label payloads
212
+ * (including `id`, `name`, and `type`).
213
+ * @returns {Promise<Array<Record<string, unknown>>>} The raw Gmail label payloads.
214
+ * @throws {InternalError} When no token is configured.
215
+ * @throws {NotFoundError} When the endpoint answers with HTTP 404.
216
+ * @throws {ConflictError} When Gmail answers with HTTP 409.
217
+ * @throws {BadRequestError} When Gmail answers with any other HTTP error status.
218
+ */
219
+ async listLabels() {
220
+ this.requireToken();
221
+ try {
222
+ const response = await this.client.get(`${this.userPath()}/labels`);
223
+ return response.data.labels ?? [];
224
+ }
225
+ catch (error) {
226
+ throw httpError("Gmail", "list labels", error);
227
+ }
228
+ }
229
+ }
230
+ //# sourceMappingURL=GmailService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GmailService.js","sourceRoot":"","sources":["../../../../src/comms/gmail/GmailService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,4BAAuB;AAClD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,2CAAsC;AACrE,OAAO,EACL,cAAc,EAEd,SAAS,GACV,qCAA0B;AAC3B,OAAO,EAAE,UAAU,EAA0B,2BAAsB;AAmDnE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,OAAO,YAAa,SAAQ,cAAkC;IAApE;;QACE;;WAEG;QACgB,gBAAW,GAAG,OAAO,CAAC;IA2M3C,CAAC;IAzMC;;;;OAIG;IACO,cAAc;QACtB,OAAO,uCAAuC,CAAC;IACjD,CAAC;IAED;;;;;;OAMG;IACO,WAAW,CAAC,MAA0B;QAC9C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,CAAC;IAED;;;;;;OAMG;IACO,qBAAqB;QAC7B,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC;QACzC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,OAAO;YACL,KAAK;YACL,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;YAC7B,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;YAC/B,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;SAChC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACO,QAAQ;QAChB,OAAO,UAAU,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC;IACpE,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,IAAI,CAAC,KAAwB;QACjC,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,IAAI,aAAa,CAAC,sCAAsC,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAIpC,GAAG,IAAI,CAAC,QAAQ,EAAE,gBAAgB,EAAE;gBACrC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;aAC1D,CAAC,CAAC;YACH,OAAO;gBACL,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC;gBAC/C,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ;gBAChC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ;aACjC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,KAAK,CAAC,YAAY,CAChB,UAKI,EAAE;QAEN,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAInC,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE;gBAChC,MAAM,EAAE;oBACN,CAAC,EAAE,OAAO,CAAC,KAAK;oBAChB,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;oBACpC,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;iBAC3B;aACF,CAAC,CAAC;YACH,OAAO;gBACL,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE;gBACtC,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,aAAa;gBAC1C,kBAAkB,EAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB;aACrD,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,SAAS,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,UAAU,CACd,EAAU,EACV,SAAkD,MAAM;QAExD,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,aAAa,CAAC,wCAAwC,CAAC,CAAC;QAC3E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CACpC,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,kBAAkB,CAAC,EAAE,CAAC,EAAE,EACvD,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,CACvB,CAAC;YACF,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,SAAS,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAEnC,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAChC,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,SAAS,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @module integrations/comms/gmail
3
+ * @summary Gmail service (REST v1 message send/list/get and label listing).
4
+ * @description Re-exports the Gmail client-based service and its types.
5
+ */
6
+ export * from "./GmailService.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/comms/gmail/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,kCAA+B"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @module integrations/comms
3
+ * @summary Comms integration services (Slack, Telegram, Teams, Gmail, Email).
4
+ * @description Re-exports the messaging/email services, their per-service
5
+ * modules, and the shared `comms` environment slice. Each sub-module is also
6
+ * available through its own package subpath export.
7
+ */
8
+ export * from "./email/index.js";
9
+ export * from "./gmail/index.js";
10
+ export * from "./slack/index.js";
11
+ export * from "./teams/index.js";
12
+ export * from "./telegram/index.js";
13
+ export * from "./environment.js";
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/comms/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,iCAAwB;AACxB,iCAAwB;AACxB,iCAAwB;AACxB,iCAAwB;AACxB,oCAA2B;AAC3B,iCAA8B"}
@@ -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"}