@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,107 @@
1
+ /**
2
+ * @description SMTP connection configuration
3
+ * @summary Carries the server address, optional implicit-TLS/STARTTLS
4
+ * selection, credentials, and timeouts.
5
+ *
6
+ * `secure` selects implicit TLS: `true` opens a TLS socket from the first byte
7
+ * (default port 465). `false` connects in plaintext and upgrades with STARTTLS
8
+ * when the server advertises it (default port 587). When credentials are
9
+ * configured, `connect()` refuses to authenticate unless the session is
10
+ * encrypted; `allowPlaintextAuth` is the explicit, documented opt-out for
11
+ * servers that cannot offer TLS.
12
+ * @category Comms
13
+ * @memberOf module:integrations/comms/email/smtp
14
+ */
15
+ export interface SmtpConfig {
16
+ /** @description SMTP server hostname (required) */
17
+ host: string;
18
+ /** @description Server port; defaults to `465` when `secure` is `true`, `587` otherwise */
19
+ port?: number;
20
+ /** @description `true` opens an implicit-TLS socket from the first byte; `false` (default) connects in plaintext and upgrades via STARTTLS */
21
+ secure?: boolean;
22
+ /** @description Username for `AUTH LOGIN`; when set with `password`, enables the fail-closed plaintext-AUTH check */
23
+ username?: string;
24
+ /** @description Password for `AUTH LOGIN` */
25
+ password?: string;
26
+ /** @description Connection, greeting, and socket timeout in milliseconds (default `30000`) */
27
+ timeout?: number;
28
+ /** @description Explicitly permit `AUTH LOGIN` over a plaintext session (default `false`) */
29
+ allowPlaintextAuth?: boolean;
30
+ /** @description Explicitly accept an otherwise-invalid TLS certificate (default `false`) */
31
+ allowUnauthorizedCerts?: boolean;
32
+ /** @description Client hostname announced in `EHLO` (default `as-graph`) */
33
+ clientHostname?: string;
34
+ }
35
+ /**
36
+ * @description SMTP client for raw MIME delivery
37
+ * @summary Connects and authenticates through a nodemailer SMTP transport
38
+ * (implicit TLS on `secure`, STARTTLS otherwise), then delivers a pre-built
39
+ * message with the envelope sender/recipients and the raw RFC 5322 source.
40
+ * Credentials are never sent over a plaintext session unless
41
+ * `allowPlaintextAuth` is set, and every envelope address is validated before
42
+ * it reaches the transport.
43
+ * @category Comms
44
+ * @memberOf module:integrations/comms/email/smtp
45
+ * @example
46
+ * ```ts
47
+ * import { SmtpClient, buildEmail } from "@decaf-ts/integrations/comms/email";
48
+ *
49
+ * const client = new SmtpClient({
50
+ * host: "smtp.example.com",
51
+ * port: 587,
52
+ * username: "noreply@example.com",
53
+ * password: process.env.SMTP_PASSWORD,
54
+ * });
55
+ * await client.connect();
56
+ * const mail = buildEmail({
57
+ * from: "noreply@example.com",
58
+ * to: ["ops@example.com"],
59
+ * subject: "Nightly report",
60
+ * text: "All systems nominal.",
61
+ * });
62
+ * await client.send(mail.from, mail.recipients, mail.raw);
63
+ * await client.close();
64
+ * ```
65
+ */
66
+ export declare class SmtpClient {
67
+ private config;
68
+ private transporter?;
69
+ /**
70
+ * @description Creates an SMTP client
71
+ * @summary Stores the config; the nodemailer transport is only created and
72
+ * verified by {@link SmtpClient.connect}.
73
+ * @param config - Server address, optional credentials, and TLS/timeout options
74
+ */
75
+ constructor(config: SmtpConfig);
76
+ private transportOptions;
77
+ private transportError;
78
+ /**
79
+ * @description Opens the SMTP session
80
+ * @summary Lazily loads the optional `nodemailer` peer, builds the SMTP
81
+ * transport for the configured host/credentials, and verifies it
82
+ * (`EHLO` + TLS upgrade + `AUTH LOGIN` when credentials are configured).
83
+ * Authentication fails closed: with credentials configured and no encrypted
84
+ * session, the transport requires STARTTLS and verification fails unless
85
+ * `allowPlaintextAuth` was set on the config.
86
+ * @throws {InternalError} when `nodemailer` is not installed, or on
87
+ * connection, TLS, or auth failures
88
+ */
89
+ connect(): Promise<void>;
90
+ /**
91
+ * @description Delivers a raw message over the established session
92
+ * @summary Validates the envelope, then hands the sender, recipients, and
93
+ * raw RFC 5322 source to nodemailer's `sendMail` (the transport performs
94
+ * queueing, dot-stuffing, and CRLF normalization).
95
+ * @param from - Envelope sender address
96
+ * @param recipients - Envelope recipient addresses
97
+ * @param raw - Raw RFC 5322 message text
98
+ * @throws {InternalError} when not connected or the server rejects delivery
99
+ * @throws {BadRequestError} when the envelope sender or a recipient is not an allowlisted mailbox
100
+ */
101
+ send(from: string, recipients: string[], raw: string): Promise<void>;
102
+ /**
103
+ * @description Closes the session gracefully
104
+ * @summary Closes the nodemailer transport, ignoring shutdown failures.
105
+ */
106
+ close(): Promise<void>;
107
+ }
@@ -0,0 +1,107 @@
1
+ /**
2
+ * @description SMTP connection configuration
3
+ * @summary Carries the server address, optional implicit-TLS/STARTTLS
4
+ * selection, credentials, and timeouts.
5
+ *
6
+ * `secure` selects implicit TLS: `true` opens a TLS socket from the first byte
7
+ * (default port 465). `false` connects in plaintext and upgrades with STARTTLS
8
+ * when the server advertises it (default port 587). When credentials are
9
+ * configured, `connect()` refuses to authenticate unless the session is
10
+ * encrypted; `allowPlaintextAuth` is the explicit, documented opt-out for
11
+ * servers that cannot offer TLS.
12
+ * @category Comms
13
+ * @memberOf module:integrations/comms/email/smtp
14
+ */
15
+ export interface SmtpConfig {
16
+ /** @description SMTP server hostname (required) */
17
+ host: string;
18
+ /** @description Server port; defaults to `465` when `secure` is `true`, `587` otherwise */
19
+ port?: number;
20
+ /** @description `true` opens an implicit-TLS socket from the first byte; `false` (default) connects in plaintext and upgrades via STARTTLS */
21
+ secure?: boolean;
22
+ /** @description Username for `AUTH LOGIN`; when set with `password`, enables the fail-closed plaintext-AUTH check */
23
+ username?: string;
24
+ /** @description Password for `AUTH LOGIN` */
25
+ password?: string;
26
+ /** @description Connection, greeting, and socket timeout in milliseconds (default `30000`) */
27
+ timeout?: number;
28
+ /** @description Explicitly permit `AUTH LOGIN` over a plaintext session (default `false`) */
29
+ allowPlaintextAuth?: boolean;
30
+ /** @description Explicitly accept an otherwise-invalid TLS certificate (default `false`) */
31
+ allowUnauthorizedCerts?: boolean;
32
+ /** @description Client hostname announced in `EHLO` (default `as-graph`) */
33
+ clientHostname?: string;
34
+ }
35
+ /**
36
+ * @description SMTP client for raw MIME delivery
37
+ * @summary Connects and authenticates through a nodemailer SMTP transport
38
+ * (implicit TLS on `secure`, STARTTLS otherwise), then delivers a pre-built
39
+ * message with the envelope sender/recipients and the raw RFC 5322 source.
40
+ * Credentials are never sent over a plaintext session unless
41
+ * `allowPlaintextAuth` is set, and every envelope address is validated before
42
+ * it reaches the transport.
43
+ * @category Comms
44
+ * @memberOf module:integrations/comms/email/smtp
45
+ * @example
46
+ * ```ts
47
+ * import { SmtpClient, buildEmail } from "@decaf-ts/integrations/comms/email";
48
+ *
49
+ * const client = new SmtpClient({
50
+ * host: "smtp.example.com",
51
+ * port: 587,
52
+ * username: "noreply@example.com",
53
+ * password: process.env.SMTP_PASSWORD,
54
+ * });
55
+ * await client.connect();
56
+ * const mail = buildEmail({
57
+ * from: "noreply@example.com",
58
+ * to: ["ops@example.com"],
59
+ * subject: "Nightly report",
60
+ * text: "All systems nominal.",
61
+ * });
62
+ * await client.send(mail.from, mail.recipients, mail.raw);
63
+ * await client.close();
64
+ * ```
65
+ */
66
+ export declare class SmtpClient {
67
+ private config;
68
+ private transporter?;
69
+ /**
70
+ * @description Creates an SMTP client
71
+ * @summary Stores the config; the nodemailer transport is only created and
72
+ * verified by {@link SmtpClient.connect}.
73
+ * @param config - Server address, optional credentials, and TLS/timeout options
74
+ */
75
+ constructor(config: SmtpConfig);
76
+ private transportOptions;
77
+ private transportError;
78
+ /**
79
+ * @description Opens the SMTP session
80
+ * @summary Lazily loads the optional `nodemailer` peer, builds the SMTP
81
+ * transport for the configured host/credentials, and verifies it
82
+ * (`EHLO` + TLS upgrade + `AUTH LOGIN` when credentials are configured).
83
+ * Authentication fails closed: with credentials configured and no encrypted
84
+ * session, the transport requires STARTTLS and verification fails unless
85
+ * `allowPlaintextAuth` was set on the config.
86
+ * @throws {InternalError} when `nodemailer` is not installed, or on
87
+ * connection, TLS, or auth failures
88
+ */
89
+ connect(): Promise<void>;
90
+ /**
91
+ * @description Delivers a raw message over the established session
92
+ * @summary Validates the envelope, then hands the sender, recipients, and
93
+ * raw RFC 5322 source to nodemailer's `sendMail` (the transport performs
94
+ * queueing, dot-stuffing, and CRLF normalization).
95
+ * @param from - Envelope sender address
96
+ * @param recipients - Envelope recipient addresses
97
+ * @param raw - Raw RFC 5322 message text
98
+ * @throws {InternalError} when not connected or the server rejects delivery
99
+ * @throws {BadRequestError} when the envelope sender or a recipient is not an allowlisted mailbox
100
+ */
101
+ send(from: string, recipients: string[], raw: string): Promise<void>;
102
+ /**
103
+ * @description Closes the session gracefully
104
+ * @summary Closes the nodemailer transport, ignoring shutdown failures.
105
+ */
106
+ close(): Promise<void>;
107
+ }
@@ -0,0 +1,84 @@
1
+ /**
2
+ * @module integrations/comms/environment
3
+ * @summary Environment contract and accumulated environment for the comms integration services.
4
+ * @description Declares the `CommsEnvironmentShape` consumed by the Slack,
5
+ * Telegram, Teams, and Gmail services' `configFromEnvironment()` implementations and the
6
+ * `CommsEnvironment` singleton created via `LoggedEnvironment.accumulate`.
7
+ * Services read their credentials and defaults from the matching
8
+ * `comms.<provider>` slice, using the `envString`/`envNumber` helpers from
9
+ * `shared/environmentValue` to reject unset-leaf proxies.
10
+ */
11
+ /**
12
+ * @description Environment shape for the comms integration services
13
+ * @summary Defines the `comms` root with one slice per provider (`slack`,
14
+ * `telegram`, `teams`, `email`, `gmail`). Each slice carries the provider's
15
+ * required credentials (e.g. `token`, `webhookUrl`) plus optional `baseUrl`
16
+ * override and `timeout`. Fields are typed as required here so
17
+ * `LoggedEnvironment.accumulate` registers them; absent values resolve to
18
+ * proxy placeholders at runtime and must pass through `envString`/`envNumber`.
19
+ * @memberOf module:integrations/comms/environment
20
+ */
21
+ export interface CommsEnvironmentShape {
22
+ comms: {
23
+ slack: {
24
+ token: string;
25
+ baseUrl: string;
26
+ timeout?: number;
27
+ };
28
+ telegram: {
29
+ token: string;
30
+ baseUrl: string;
31
+ timeout?: number;
32
+ };
33
+ teams: {
34
+ token: string;
35
+ webhookUrl: string;
36
+ baseUrl: string;
37
+ timeout?: number;
38
+ };
39
+ email: {
40
+ provider: string;
41
+ host: string;
42
+ port?: number;
43
+ secure?: boolean;
44
+ username: string;
45
+ password: string;
46
+ from: string;
47
+ token: string;
48
+ graphBaseUrl: string;
49
+ /** Explicit opt-in for SMTP AUTH over a plaintext session (default false). */
50
+ allowPlaintextAuth?: boolean;
51
+ timeout?: number;
52
+ };
53
+ gmail: {
54
+ token: string;
55
+ userId: string;
56
+ baseUrl: string;
57
+ timeout?: number;
58
+ };
59
+ };
60
+ }
61
+ /**
62
+ * @description Accumulated comms environment singleton
63
+ * @summary The `LoggedEnvironment.accumulate`-registered instance backing the
64
+ * `CommsEnvironmentShape` contract. Comms services read their provider slice
65
+ * (e.g. `CommsEnvironment.comms.slack`) inside `configFromEnvironment()` and
66
+ * translate it into an `HttpApiServiceConfig`-derived config. Credentials come
67
+ * from environment variables; for as-graph node usage those are provided as
68
+ * `GRAPH_CREDENTIAL_*` values (placeholders in this example).
69
+ * @example
70
+ * ```ts
71
+ * import { SlackService } from "@decaf-ts/integrations/comms/slack";
72
+ *
73
+ * // with comms.slack.token / comms.slack.baseUrl configured in the environment
74
+ * const slack = new SlackService();
75
+ * await slack.initialize();
76
+ * ```
77
+ * @constant {LoggedEnvironment} CommsEnvironment
78
+ * @memberOf module:integrations/comms/environment
79
+ */
80
+ export declare const CommsEnvironment: import("@decaf-ts/logging").AccumulatedEnvironment<{
81
+ app: string | undefined;
82
+ } & import("@decaf-ts/logging").LoggingConfig<object> & {
83
+ env: any;
84
+ } & CommsEnvironmentShape>;
@@ -0,0 +1,84 @@
1
+ /**
2
+ * @module integrations/comms/environment
3
+ * @summary Environment contract and accumulated environment for the comms integration services.
4
+ * @description Declares the `CommsEnvironmentShape` consumed by the Slack,
5
+ * Telegram, Teams, and Gmail services' `configFromEnvironment()` implementations and the
6
+ * `CommsEnvironment` singleton created via `LoggedEnvironment.accumulate`.
7
+ * Services read their credentials and defaults from the matching
8
+ * `comms.<provider>` slice, using the `envString`/`envNumber` helpers from
9
+ * `shared/environmentValue` to reject unset-leaf proxies.
10
+ */
11
+ /**
12
+ * @description Environment shape for the comms integration services
13
+ * @summary Defines the `comms` root with one slice per provider (`slack`,
14
+ * `telegram`, `teams`, `email`, `gmail`). Each slice carries the provider's
15
+ * required credentials (e.g. `token`, `webhookUrl`) plus optional `baseUrl`
16
+ * override and `timeout`. Fields are typed as required here so
17
+ * `LoggedEnvironment.accumulate` registers them; absent values resolve to
18
+ * proxy placeholders at runtime and must pass through `envString`/`envNumber`.
19
+ * @memberOf module:integrations/comms/environment
20
+ */
21
+ export interface CommsEnvironmentShape {
22
+ comms: {
23
+ slack: {
24
+ token: string;
25
+ baseUrl: string;
26
+ timeout?: number;
27
+ };
28
+ telegram: {
29
+ token: string;
30
+ baseUrl: string;
31
+ timeout?: number;
32
+ };
33
+ teams: {
34
+ token: string;
35
+ webhookUrl: string;
36
+ baseUrl: string;
37
+ timeout?: number;
38
+ };
39
+ email: {
40
+ provider: string;
41
+ host: string;
42
+ port?: number;
43
+ secure?: boolean;
44
+ username: string;
45
+ password: string;
46
+ from: string;
47
+ token: string;
48
+ graphBaseUrl: string;
49
+ /** Explicit opt-in for SMTP AUTH over a plaintext session (default false). */
50
+ allowPlaintextAuth?: boolean;
51
+ timeout?: number;
52
+ };
53
+ gmail: {
54
+ token: string;
55
+ userId: string;
56
+ baseUrl: string;
57
+ timeout?: number;
58
+ };
59
+ };
60
+ }
61
+ /**
62
+ * @description Accumulated comms environment singleton
63
+ * @summary The `LoggedEnvironment.accumulate`-registered instance backing the
64
+ * `CommsEnvironmentShape` contract. Comms services read their provider slice
65
+ * (e.g. `CommsEnvironment.comms.slack`) inside `configFromEnvironment()` and
66
+ * translate it into an `HttpApiServiceConfig`-derived config. Credentials come
67
+ * from environment variables; for as-graph node usage those are provided as
68
+ * `GRAPH_CREDENTIAL_*` values (placeholders in this example).
69
+ * @example
70
+ * ```ts
71
+ * import { SlackService } from "@decaf-ts/integrations/comms/slack";
72
+ *
73
+ * // with comms.slack.token / comms.slack.baseUrl configured in the environment
74
+ * const slack = new SlackService();
75
+ * await slack.initialize();
76
+ * ```
77
+ * @constant {LoggedEnvironment} CommsEnvironment
78
+ * @memberOf module:integrations/comms/environment
79
+ */
80
+ export declare const CommsEnvironment: import("@decaf-ts/logging").AccumulatedEnvironment<{
81
+ app: string | undefined;
82
+ } & import("@decaf-ts/logging").LoggingConfig<object> & {
83
+ env: any;
84
+ } & CommsEnvironmentShape>;
@@ -0,0 +1,190 @@
1
+ import { HttpApiService, type HttpApiServiceConfig } from "../../shared/http/index.d.cts";
2
+ import { type EmailMessageInput } from "../email/mime.d.cts";
3
+ /**
4
+ * @description Configuration for the Gmail service
5
+ * @summary Extends {@link HttpApiServiceConfig} with the OAuth access token
6
+ * (sent as a bearer token) and the mailbox `userId` used in the API path
7
+ * (defaults to `"me"`). When omitted, the `comms.gmail` environment slice
8
+ * supplies the token (and optional `userId`, `baseUrl`, `timeout`).
9
+ * @category Comms
10
+ * @memberOf module:integrations/comms/gmail/service
11
+ */
12
+ export interface GmailServiceConfig extends HttpApiServiceConfig {
13
+ /**
14
+ * @description Gmail API OAuth access token
15
+ * @summary Sent as `Authorization: Bearer <token>` with every API call.
16
+ */
17
+ token?: string;
18
+ /**
19
+ * @description Mailbox user identifier
20
+ * @summary The special value `"me"` (the default) refers to the authenticated user.
21
+ */
22
+ userId?: string;
23
+ }
24
+ /**
25
+ * @description Result of a sent Gmail message
26
+ * @summary Echoes Gmail's identifiers for the sent message: the message `id`,
27
+ * its `threadId` when Gmail assigned one, and the applied `labelIds`.
28
+ * @category Comms
29
+ * @memberOf module:integrations/comms/gmail/service
30
+ */
31
+ export interface GmailSendResult {
32
+ id: string;
33
+ threadId?: string;
34
+ labelIds?: string[];
35
+ }
36
+ /**
37
+ * @description Result of a Gmail message list call
38
+ * @summary Carries one page of message references (`messages` with `id` and
39
+ * optional `threadId`), the `nextPageToken` to pass back as `pageToken` for
40
+ * the next page, and Gmail's `resultSizeEstimate`.
41
+ * @category Comms
42
+ * @memberOf module:integrations/comms/gmail/service
43
+ */
44
+ export interface GmailListResult {
45
+ messages: Array<{
46
+ id: string;
47
+ threadId?: string;
48
+ }>;
49
+ nextPageToken?: string;
50
+ resultSizeEstimate?: number;
51
+ }
52
+ /**
53
+ * @description Gmail API integration service
54
+ * @summary An undecorated HTTP service for sending MIME-built
55
+ * emails, listing messages with Gmail query syntax and page tokens, fetching
56
+ * a single message in a chosen format, and listing labels. All operations
57
+ * require an OAuth token (`requireToken()`) and operate on the configured
58
+ * `userId` mailbox (default `"me"`); transport failures are mapped to decaf
59
+ * errors via {@link httpError}.
60
+ * @class GmailService
61
+ * @category Comms
62
+ * @example
63
+ * ```ts
64
+ * import { GmailService } from "@decaf-ts/integrations/comms/gmail";
65
+ *
66
+ * const gmail = new GmailService();
67
+ * await gmail.initialize({
68
+ * token: process.env.GRAPH_CREDENTIAL_GMAIL_TOKEN,
69
+ * });
70
+ * await gmail.send({
71
+ * from: "bot@example.com",
72
+ * to: "ops@example.com",
73
+ * subject: "Deploy",
74
+ * text: "Release 1.2.0 is live",
75
+ * });
76
+ * ```
77
+ * @memberOf module:integrations/comms/gmail/service
78
+ */
79
+ export declare class GmailService extends HttpApiService<GmailServiceConfig> {
80
+ /**
81
+ * @description The provider name used in error messages
82
+ */
83
+ protected readonly serviceName = "Gmail";
84
+ /**
85
+ * @description The Gmail REST API base URL
86
+ * @summary Used when the resolved config carries no `baseUrl`.
87
+ * @returns {string} `"https://gmail.googleapis.com/gmail/v1"`.
88
+ */
89
+ protected defaultBaseUrl(): string;
90
+ /**
91
+ * @description Builds the Gmail OAuth bearer authorization headers
92
+ * @summary Returns the `Authorization: Bearer <token>` header when the
93
+ * config carries a token, and no headers otherwise.
94
+ * @param {GmailServiceConfig} config - The resolved service configuration.
95
+ * @returns {Record<string, string>} The authorization headers (empty without a token).
96
+ */
97
+ protected authHeaders(config: GmailServiceConfig): Record<string, string>;
98
+ /**
99
+ * @description Reads the Gmail credentials and defaults from the environment
100
+ * @summary Reads the `comms.gmail` environment slice and returns a partial
101
+ * config when a token is configured, `undefined` otherwise. Values pass
102
+ * through `envString`/`envNumber` to reject unset-leaf proxies.
103
+ * @returns {Partial<GmailServiceConfig> | undefined} A partial config, or `undefined` when no Gmail token is configured.
104
+ */
105
+ protected configFromEnvironment(): Partial<GmailServiceConfig> | undefined;
106
+ /**
107
+ * @description Builds the mailbox-scoped API path
108
+ * @summary Returns `/users/<userId>` with the configured `userId` (or
109
+ * `"me"` when unset) URL-encoded; all message and label operations are
110
+ * relative to this path.
111
+ * @returns {string} The URL-encoded mailbox path.
112
+ */
113
+ protected userPath(): string;
114
+ /**
115
+ * @description Sends an email through the Gmail API
116
+ * @summary Builds a raw MIME message from the input with the shared email
117
+ * MIME builder (`buildEmail`), base64url-encodes it, and `POST`s it to
118
+ * `users.messages.send`. Requires a token and a `from` sender address.
119
+ * @param {EmailMessageInput} input - The message envelope and body (`from`, `to`, `subject`, and optional `cc`/`bcc`/`text`/`html`/`replyTo`/`attachments`).
120
+ * @returns {Promise<GmailSendResult>} Gmail's identifiers for the sent message.
121
+ * @throws {InternalError} When no token is configured or the sender address is missing.
122
+ * @throws {NotFoundError} When the endpoint answers with HTTP 404.
123
+ * @throws {ConflictError} When Gmail answers with HTTP 409.
124
+ * @throws {BadRequestError} When Gmail answers with any other HTTP error status (e.g. invalid recipients).
125
+ */
126
+ send(input: EmailMessageInput): Promise<GmailSendResult>;
127
+ /**
128
+ * @description Lists mailbox messages with Gmail query paging
129
+ * @summary `GET`s `users.messages.list` with an optional Gmail `query`
130
+ * (`q` parameter, e.g. `"from:user@example.com is:unread"`), a page size
131
+ * (default `25`), a `pageToken` from the previous page, and `labelIds`
132
+ * filtering. Returns the message references and the `nextPageToken` to pass
133
+ * back as `pageToken` for the next page.
134
+ * @param {object} [options] - Query and paging options.
135
+ * @param {string} [options.query] - Gmail search query (`q` parameter).
136
+ * @param {number} [options.maxResults] - Page size; defaults to `25`.
137
+ * @param {string} [options.pageToken] - The `nextPageToken` from the previous page.
138
+ * @param {string[]} [options.labelIds] - Label IDs the messages must carry.
139
+ * @returns {Promise<GmailListResult>} One page of message references with the next page token when more pages exist.
140
+ * @throws {InternalError} When no token is configured.
141
+ * @throws {NotFoundError} When the endpoint answers with HTTP 404.
142
+ * @throws {ConflictError} When Gmail answers with HTTP 409.
143
+ * @throws {BadRequestError} When Gmail answers with any other HTTP error status (e.g. invalid query).
144
+ * @example
145
+ * ```ts
146
+ * let pageToken: string | undefined;
147
+ * do {
148
+ * const page = await gmail.listMessages({
149
+ * query: "is:unread",
150
+ * maxResults: 100,
151
+ * pageToken,
152
+ * });
153
+ * console.log(page.messages);
154
+ * pageToken = page.nextPageToken;
155
+ * } while (pageToken);
156
+ * ```
157
+ */
158
+ listMessages(options?: {
159
+ query?: string;
160
+ maxResults?: number;
161
+ pageToken?: string;
162
+ labelIds?: string[];
163
+ }): Promise<GmailListResult>;
164
+ /**
165
+ * @description Fetches a single Gmail message
166
+ * @summary `GET`s `users.messages.get` for the given message ID with the
167
+ * requested `format`. With `"full"` (the default) the payload includes the
168
+ * parsed body parts; `"metadata"` limits it to headers and labels,
169
+ * `"minimal"` to identifiers only, and `"raw"` returns the raw MIME string.
170
+ * @param {string} id - The Gmail message ID.
171
+ * @param {"full" | "metadata" | "minimal" | "raw"} [format] - The message format to request; defaults to `"full"`.
172
+ * @returns {Promise<Record<string, unknown>>} The raw Gmail message payload in the requested format.
173
+ * @throws {InternalError} When no token is configured or the message ID is empty.
174
+ * @throws {NotFoundError} When the message does not exist (HTTP 404).
175
+ * @throws {ConflictError} When Gmail answers with HTTP 409.
176
+ * @throws {BadRequestError} When Gmail answers with any other HTTP error status.
177
+ */
178
+ getMessage(id: string, format?: "full" | "metadata" | "minimal" | "raw"): Promise<Record<string, unknown>>;
179
+ /**
180
+ * @description Lists the mailbox's Gmail labels
181
+ * @summary `GET`s `users.labels.list` and returns the raw label payloads
182
+ * (including `id`, `name`, and `type`).
183
+ * @returns {Promise<Array<Record<string, unknown>>>} The raw Gmail label payloads.
184
+ * @throws {InternalError} When no token is configured.
185
+ * @throws {NotFoundError} When the endpoint answers with HTTP 404.
186
+ * @throws {ConflictError} When Gmail answers with HTTP 409.
187
+ * @throws {BadRequestError} When Gmail answers with any other HTTP error status.
188
+ */
189
+ listLabels(): Promise<Array<Record<string, unknown>>>;
190
+ }