@decaf-ts/integrations 0.11.0 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +164 -0
- package/dist/integrations.cjs +1 -1
- package/dist/integrations.cjs.map +1 -1
- package/dist/integrations.js +1 -1
- package/dist/integrations.js.map +1 -1
- package/docker/mailpit-compose.yml +17 -0
- package/docker/postgres-compose.yml +26 -0
- package/lib/cjs/blob/azure/AzureBlobStoreService.cjs +12 -23
- package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +1 -1
- package/lib/cjs/blob/core/BlobStoreService.cjs +26 -25
- package/lib/cjs/blob/core/BlobStoreService.cjs.map +1 -1
- package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs +12 -23
- package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +1 -1
- package/lib/cjs/blob/s3/S3BlobStoreService.cjs +11 -16
- package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +1 -1
- package/lib/cjs/blob/s3/S3CompatibleBlobStoreService.cjs +14 -16
- package/lib/cjs/blob/s3/S3CompatibleBlobStoreService.cjs.map +1 -1
- package/lib/cjs/calendar/environment.cjs +48 -0
- package/lib/cjs/calendar/environment.cjs.map +1 -0
- package/lib/cjs/calendar/google-calendar/GoogleCalendarService.cjs +338 -0
- package/lib/cjs/calendar/google-calendar/GoogleCalendarService.cjs.map +1 -0
- package/lib/cjs/calendar/google-calendar/index.cjs +20 -0
- package/lib/cjs/calendar/google-calendar/index.cjs.map +1 -0
- package/lib/cjs/comms/discord/DiscordService.cjs +318 -0
- package/lib/cjs/comms/discord/DiscordService.cjs.map +1 -0
- package/lib/cjs/comms/discord/index.cjs +19 -0
- package/lib/cjs/comms/discord/index.cjs.map +1 -0
- package/lib/cjs/comms/email/EmailService.cjs +376 -0
- package/lib/cjs/comms/email/EmailService.cjs.map +1 -0
- package/lib/cjs/comms/email/index.cjs +29 -0
- package/lib/cjs/comms/email/index.cjs.map +1 -0
- package/lib/cjs/comms/email/mime.cjs +225 -0
- package/lib/cjs/comms/email/mime.cjs.map +1 -0
- package/lib/cjs/comms/email/smtp.cjs +204 -0
- package/lib/cjs/comms/email/smtp.cjs.map +1 -0
- package/lib/cjs/comms/environment.cjs +79 -0
- package/lib/cjs/comms/environment.cjs.map +1 -0
- package/lib/cjs/comms/gmail/GmailService.cjs +235 -0
- package/lib/cjs/comms/gmail/GmailService.cjs.map +1 -0
- package/lib/cjs/comms/gmail/index.cjs +24 -0
- package/lib/cjs/comms/gmail/index.cjs.map +1 -0
- package/lib/cjs/comms/index.cjs +34 -0
- package/lib/cjs/comms/index.cjs.map +1 -0
- package/lib/cjs/comms/outlook/MicrosoftOutlookService.cjs +325 -0
- package/lib/cjs/comms/outlook/MicrosoftOutlookService.cjs.map +1 -0
- package/lib/cjs/comms/outlook/index.cjs +19 -0
- package/lib/cjs/comms/outlook/index.cjs.map +1 -0
- package/lib/cjs/comms/slack/SlackService.cjs +264 -0
- package/lib/cjs/comms/slack/SlackService.cjs.map +1 -0
- package/lib/cjs/comms/slack/index.cjs +24 -0
- package/lib/cjs/comms/slack/index.cjs.map +1 -0
- package/lib/cjs/comms/teams/TeamsService.cjs +212 -0
- package/lib/cjs/comms/teams/TeamsService.cjs.map +1 -0
- package/lib/cjs/comms/teams/index.cjs +24 -0
- package/lib/cjs/comms/teams/index.cjs.map +1 -0
- package/lib/cjs/comms/telegram/TelegramService.cjs +196 -0
- package/lib/cjs/comms/telegram/TelegramService.cjs.map +1 -0
- package/lib/cjs/comms/telegram/index.cjs +24 -0
- package/lib/cjs/comms/telegram/index.cjs.map +1 -0
- package/lib/cjs/comms/whatsapp/WhatsAppService.cjs +274 -0
- package/lib/cjs/comms/whatsapp/WhatsAppService.cjs.map +1 -0
- package/lib/cjs/comms/whatsapp/index.cjs +19 -0
- package/lib/cjs/comms/whatsapp/index.cjs.map +1 -0
- package/lib/cjs/devops/environment.cjs +43 -0
- package/lib/cjs/devops/environment.cjs.map +1 -0
- package/lib/cjs/devops/github/GithubService.cjs +302 -0
- package/lib/cjs/devops/github/GithubService.cjs.map +1 -0
- package/lib/cjs/devops/github/index.cjs +24 -0
- package/lib/cjs/devops/github/index.cjs.map +1 -0
- package/lib/cjs/devops/gitlab/GitlabService.cjs +282 -0
- package/lib/cjs/devops/gitlab/GitlabService.cjs.map +1 -0
- package/lib/cjs/devops/gitlab/index.cjs +24 -0
- package/lib/cjs/devops/gitlab/index.cjs.map +1 -0
- package/lib/cjs/devops/index.cjs +28 -0
- package/lib/cjs/devops/index.cjs.map +1 -0
- package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs +2 -0
- package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs.map +1 -1
- package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs +2 -0
- package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs.map +1 -1
- package/lib/cjs/index.cjs +3 -3
- package/lib/cjs/io/airtable/AirtableService.cjs +266 -0
- package/lib/cjs/io/airtable/AirtableService.cjs.map +1 -0
- package/lib/cjs/io/airtable/index.cjs +24 -0
- package/lib/cjs/io/airtable/index.cjs.map +1 -0
- package/lib/cjs/io/confluence/ConfluenceService.cjs +317 -0
- package/lib/cjs/io/confluence/ConfluenceService.cjs.map +1 -0
- package/lib/cjs/io/confluence/index.cjs +19 -0
- package/lib/cjs/io/confluence/index.cjs.map +1 -0
- package/lib/cjs/io/environment.cjs +74 -0
- package/lib/cjs/io/environment.cjs.map +1 -0
- package/lib/cjs/io/google-docs/GoogleDocsService.cjs +275 -0
- package/lib/cjs/io/google-docs/GoogleDocsService.cjs.map +1 -0
- package/lib/cjs/io/google-docs/index.cjs +19 -0
- package/lib/cjs/io/google-docs/index.cjs.map +1 -0
- package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs +288 -0
- package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs.map +1 -0
- package/lib/cjs/io/google-sheets/index.cjs +24 -0
- package/lib/cjs/io/google-sheets/index.cjs.map +1 -0
- package/lib/cjs/io/graphql/GraphqlService.cjs +143 -0
- package/lib/cjs/io/graphql/GraphqlService.cjs.map +1 -0
- package/lib/cjs/io/graphql/index.cjs +24 -0
- package/lib/cjs/io/graphql/index.cjs.map +1 -0
- package/lib/cjs/io/index.cjs +35 -0
- package/lib/cjs/io/index.cjs.map +1 -0
- package/lib/cjs/io/jira/JiraService.cjs +354 -0
- package/lib/cjs/io/jira/JiraService.cjs.map +1 -0
- package/lib/cjs/io/jira/index.cjs +19 -0
- package/lib/cjs/io/jira/index.cjs.map +1 -0
- package/lib/cjs/io/microsoft-excel/MicrosoftExcelService.cjs +253 -0
- package/lib/cjs/io/microsoft-excel/MicrosoftExcelService.cjs.map +1 -0
- package/lib/cjs/io/microsoft-excel/index.cjs +19 -0
- package/lib/cjs/io/microsoft-excel/index.cjs.map +1 -0
- package/lib/cjs/io/microsoft-sharepoint/MicrosoftSharePointService.cjs +261 -0
- package/lib/cjs/io/microsoft-sharepoint/MicrosoftSharePointService.cjs.map +1 -0
- package/lib/cjs/io/microsoft-sharepoint/index.cjs +19 -0
- package/lib/cjs/io/microsoft-sharepoint/index.cjs.map +1 -0
- package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs +205 -0
- package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs.map +1 -0
- package/lib/cjs/io/spreadsheet/index.cjs +25 -0
- package/lib/cjs/io/spreadsheet/index.cjs.map +1 -0
- package/lib/cjs/namespaces/index.cjs +1 -0
- package/lib/cjs/namespaces/index.cjs.map +1 -1
- package/lib/cjs/namespaces/models/credential.model.cjs +115 -0
- package/lib/cjs/namespaces/models/credential.model.cjs.map +1 -0
- package/lib/cjs/namespaces/models/effective-permission.model.cjs +2 -0
- package/lib/cjs/namespaces/models/effective-permission.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/group-membership.model.cjs +2 -0
- package/lib/cjs/namespaces/models/group-membership.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/group.model.cjs +2 -0
- package/lib/cjs/namespaces/models/group.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/index.cjs +1 -0
- package/lib/cjs/namespaces/models/index.cjs.map +1 -1
- package/lib/cjs/namespaces/models/inheritance-block.model.cjs +2 -0
- package/lib/cjs/namespaces/models/inheritance-block.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +2 -0
- package/lib/cjs/namespaces/models/org-unit-closure.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +2 -0
- package/lib/cjs/namespaces/models/org-unit-membership.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +2 -0
- package/lib/cjs/namespaces/models/org-unit-profile.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/org-unit.model.cjs +2 -0
- package/lib/cjs/namespaces/models/org-unit.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/permission.model.cjs +2 -0
- package/lib/cjs/namespaces/models/permission.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/principal.model.cjs +2 -0
- package/lib/cjs/namespaces/models/principal.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/protected-resource.model.cjs +2 -0
- package/lib/cjs/namespaces/models/protected-resource.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/resource-grant.model.cjs +2 -0
- package/lib/cjs/namespaces/models/resource-grant.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/role-assignment.model.cjs +2 -0
- package/lib/cjs/namespaces/models/role-assignment.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/role-permission.model.cjs +2 -0
- package/lib/cjs/namespaces/models/role-permission.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/role.model.cjs +2 -0
- package/lib/cjs/namespaces/models/role.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/storage-binding.model.cjs +2 -0
- package/lib/cjs/namespaces/models/storage-binding.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/tenant-membership.model.cjs +2 -0
- package/lib/cjs/namespaces/models/tenant-membership.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/tenant-profile.model.cjs +2 -0
- package/lib/cjs/namespaces/models/tenant-profile.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/tenant.model.cjs +2 -0
- package/lib/cjs/namespaces/models/tenant.model.cjs.map +1 -1
- package/lib/cjs/namespaces/models/user.model.cjs +2 -0
- package/lib/cjs/namespaces/models/user.model.cjs.map +1 -1
- package/lib/cjs/namespaces/rls/index.cjs +28 -0
- package/lib/cjs/namespaces/rls/index.cjs.map +1 -0
- package/lib/cjs/namespaces/rls/principal-resolver.cjs +66 -0
- package/lib/cjs/namespaces/rls/principal-resolver.cjs.map +1 -0
- package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs +269 -0
- package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs.map +1 -0
- package/lib/cjs/namespaces/rls/rls.constants.cjs +79 -0
- package/lib/cjs/namespaces/rls/rls.constants.cjs.map +1 -0
- package/lib/cjs/namespaces/rls/rls.template.cjs +719 -0
- package/lib/cjs/namespaces/rls/rls.template.cjs.map +1 -0
- package/lib/cjs/namespaces/rls/rls.types.cjs +4 -0
- package/lib/cjs/namespaces/rls/rls.types.cjs.map +1 -0
- package/lib/cjs/namespaces/rls/session-binding.cjs +70 -0
- package/lib/cjs/namespaces/rls/session-binding.cjs.map +1 -0
- package/lib/cjs/namespaces/services/credential.service.cjs +327 -0
- package/lib/cjs/namespaces/services/credential.service.cjs.map +1 -0
- package/lib/cjs/namespaces/services/index.cjs +1 -0
- package/lib/cjs/namespaces/services/index.cjs.map +1 -1
- package/lib/cjs/namespaces/types.cjs +6 -1
- package/lib/cjs/namespaces/types.cjs.map +1 -1
- package/lib/cjs/redis/adapter.cjs +7 -1
- package/lib/cjs/redis/adapter.cjs.map +1 -1
- package/lib/cjs/secrets/InfraCredentialBootstrap.cjs +80 -0
- package/lib/cjs/secrets/InfraCredentialBootstrap.cjs.map +1 -0
- package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -15
- package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +1 -1
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -16
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +1 -1
- package/lib/cjs/secrets/core/SecretReference.cjs +1 -0
- package/lib/cjs/secrets/core/SecretReference.cjs.map +1 -1
- package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs +28 -0
- package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs.map +1 -0
- package/lib/cjs/secrets/fs/FsSecretService.cjs +420 -0
- package/lib/cjs/secrets/fs/FsSecretService.cjs.map +1 -0
- package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs +25 -0
- package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs.map +1 -0
- package/lib/cjs/secrets/fs/index.cjs +27 -0
- package/lib/cjs/secrets/fs/index.cjs.map +1 -0
- package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -16
- package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +1 -1
- package/lib/cjs/secrets/index.cjs +2 -0
- package/lib/cjs/secrets/index.cjs.map +1 -1
- package/lib/cjs/secrets/model/ModelSecretService.cjs +335 -43
- package/lib/cjs/secrets/model/ModelSecretService.cjs.map +1 -1
- package/lib/cjs/secrets/model/Secret.cjs +83 -5
- package/lib/cjs/secrets/model/Secret.cjs.map +1 -1
- package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -16
- package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +1 -1
- package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -16
- package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +1 -1
- package/lib/cjs/shared/environmentValue.cjs +24 -0
- package/lib/cjs/shared/environmentValue.cjs.map +1 -1
- package/lib/cjs/shared/http/HttpApiService.cjs +190 -0
- package/lib/cjs/shared/http/HttpApiService.cjs.map +1 -0
- package/lib/cjs/shared/http/hermeticBoot.cjs +150 -0
- package/lib/cjs/shared/http/hermeticBoot.cjs.map +1 -0
- package/lib/cjs/shared/http/index.cjs +28 -0
- package/lib/cjs/shared/http/index.cjs.map +1 -0
- package/lib/esm/blob/azure/AzureBlobStoreService.js +13 -21
- package/lib/esm/blob/azure/AzureBlobStoreService.js.map +1 -1
- package/lib/esm/blob/core/BlobStoreService.js +26 -25
- package/lib/esm/blob/core/BlobStoreService.js.map +1 -1
- package/lib/esm/blob/gcp/GcsBlobStoreService.js +13 -21
- package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +1 -1
- package/lib/esm/blob/s3/S3BlobStoreService.js +12 -14
- package/lib/esm/blob/s3/S3BlobStoreService.js.map +1 -1
- package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js +14 -16
- package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js.map +1 -1
- package/lib/esm/calendar/environment.js +44 -0
- package/lib/esm/calendar/environment.js.map +1 -0
- package/lib/esm/calendar/google-calendar/GoogleCalendarService.js +333 -0
- package/lib/esm/calendar/google-calendar/GoogleCalendarService.js.map +1 -0
- package/lib/esm/calendar/google-calendar/index.js +3 -0
- package/lib/esm/calendar/google-calendar/index.js.map +1 -0
- package/lib/esm/comms/discord/DiscordService.js +313 -0
- package/lib/esm/comms/discord/DiscordService.js.map +1 -0
- package/lib/esm/comms/discord/index.js +2 -0
- package/lib/esm/comms/discord/index.js.map +1 -0
- package/lib/esm/comms/email/EmailService.js +338 -0
- package/lib/esm/comms/email/EmailService.js.map +1 -0
- package/lib/esm/comms/email/index.js +12 -0
- package/lib/esm/comms/email/index.js.map +1 -0
- package/lib/esm/comms/email/mime.js +218 -0
- package/lib/esm/comms/email/mime.js.map +1 -0
- package/lib/esm/comms/email/smtp.js +166 -0
- package/lib/esm/comms/email/smtp.js.map +1 -0
- package/lib/esm/comms/environment.js +75 -0
- package/lib/esm/comms/environment.js.map +1 -0
- package/lib/esm/comms/gmail/GmailService.js +230 -0
- package/lib/esm/comms/gmail/GmailService.js.map +1 -0
- package/lib/esm/comms/gmail/index.js +7 -0
- package/lib/esm/comms/gmail/index.js.map +1 -0
- package/lib/esm/comms/index.js +17 -0
- package/lib/esm/comms/index.js.map +1 -0
- package/lib/esm/comms/outlook/MicrosoftOutlookService.js +320 -0
- package/lib/esm/comms/outlook/MicrosoftOutlookService.js.map +1 -0
- package/lib/esm/comms/outlook/index.js +2 -0
- package/lib/esm/comms/outlook/index.js.map +1 -0
- package/lib/esm/comms/slack/SlackService.js +259 -0
- package/lib/esm/comms/slack/SlackService.js.map +1 -0
- package/lib/esm/comms/slack/index.js +7 -0
- package/lib/esm/comms/slack/index.js.map +1 -0
- package/lib/esm/comms/teams/TeamsService.js +204 -0
- package/lib/esm/comms/teams/TeamsService.js.map +1 -0
- package/lib/esm/comms/teams/index.js +7 -0
- package/lib/esm/comms/teams/index.js.map +1 -0
- package/lib/esm/comms/telegram/TelegramService.js +191 -0
- package/lib/esm/comms/telegram/TelegramService.js.map +1 -0
- package/lib/esm/comms/telegram/index.js +7 -0
- package/lib/esm/comms/telegram/index.js.map +1 -0
- package/lib/esm/comms/whatsapp/WhatsAppService.js +269 -0
- package/lib/esm/comms/whatsapp/WhatsAppService.js.map +1 -0
- package/lib/esm/comms/whatsapp/index.js +2 -0
- package/lib/esm/comms/whatsapp/index.js.map +1 -0
- package/lib/esm/devops/environment.js +39 -0
- package/lib/esm/devops/environment.js.map +1 -0
- package/lib/esm/devops/github/GithubService.js +297 -0
- package/lib/esm/devops/github/GithubService.js.map +1 -0
- package/lib/esm/devops/github/index.js +7 -0
- package/lib/esm/devops/github/index.js.map +1 -0
- package/lib/esm/devops/gitlab/GitlabService.js +277 -0
- package/lib/esm/devops/gitlab/GitlabService.js.map +1 -0
- package/lib/esm/devops/gitlab/index.js +7 -0
- package/lib/esm/devops/gitlab/index.js.map +1 -0
- package/lib/esm/devops/index.js +11 -0
- package/lib/esm/devops/index.js.map +1 -0
- package/lib/esm/feature-flags/models/FeatureFlag.model.js +2 -0
- package/lib/esm/feature-flags/models/FeatureFlag.model.js.map +1 -1
- package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js +2 -0
- package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js.map +1 -1
- package/lib/esm/index.js +3 -3
- package/lib/esm/io/airtable/AirtableService.js +261 -0
- package/lib/esm/io/airtable/AirtableService.js.map +1 -0
- package/lib/esm/io/airtable/index.js +7 -0
- package/lib/esm/io/airtable/index.js.map +1 -0
- package/lib/esm/io/confluence/ConfluenceService.js +312 -0
- package/lib/esm/io/confluence/ConfluenceService.js.map +1 -0
- package/lib/esm/io/confluence/index.js +2 -0
- package/lib/esm/io/confluence/index.js.map +1 -0
- package/lib/esm/io/environment.js +70 -0
- package/lib/esm/io/environment.js.map +1 -0
- package/lib/esm/io/google-docs/GoogleDocsService.js +270 -0
- package/lib/esm/io/google-docs/GoogleDocsService.js.map +1 -0
- package/lib/esm/io/google-docs/index.js +2 -0
- package/lib/esm/io/google-docs/index.js.map +1 -0
- package/lib/esm/io/google-sheets/GoogleSheetsService.js +283 -0
- package/lib/esm/io/google-sheets/GoogleSheetsService.js.map +1 -0
- package/lib/esm/io/google-sheets/index.js +7 -0
- package/lib/esm/io/google-sheets/index.js.map +1 -0
- package/lib/esm/io/graphql/GraphqlService.js +138 -0
- package/lib/esm/io/graphql/GraphqlService.js.map +1 -0
- package/lib/esm/io/graphql/index.js +7 -0
- package/lib/esm/io/graphql/index.js.map +1 -0
- package/lib/esm/io/index.js +18 -0
- package/lib/esm/io/index.js.map +1 -0
- package/lib/esm/io/jira/JiraService.js +349 -0
- package/lib/esm/io/jira/JiraService.js.map +1 -0
- package/lib/esm/io/jira/index.js +2 -0
- package/lib/esm/io/jira/index.js.map +1 -0
- package/lib/esm/io/microsoft-excel/MicrosoftExcelService.js +248 -0
- package/lib/esm/io/microsoft-excel/MicrosoftExcelService.js.map +1 -0
- package/lib/esm/io/microsoft-excel/index.js +2 -0
- package/lib/esm/io/microsoft-excel/index.js.map +1 -0
- package/lib/esm/io/microsoft-sharepoint/MicrosoftSharePointService.js +256 -0
- package/lib/esm/io/microsoft-sharepoint/MicrosoftSharePointService.js.map +1 -0
- package/lib/esm/io/microsoft-sharepoint/index.js +2 -0
- package/lib/esm/io/microsoft-sharepoint/index.js.map +1 -0
- package/lib/esm/io/spreadsheet/SpreadsheetService.js +200 -0
- package/lib/esm/io/spreadsheet/SpreadsheetService.js.map +1 -0
- package/lib/esm/io/spreadsheet/index.js +8 -0
- package/lib/esm/io/spreadsheet/index.js.map +1 -0
- package/lib/esm/namespaces/index.js +1 -0
- package/lib/esm/namespaces/index.js.map +1 -1
- package/lib/esm/namespaces/models/credential.model.js +106 -0
- package/lib/esm/namespaces/models/credential.model.js.map +1 -0
- package/lib/esm/namespaces/models/effective-permission.model.js +2 -0
- package/lib/esm/namespaces/models/effective-permission.model.js.map +1 -1
- package/lib/esm/namespaces/models/group-membership.model.js +2 -0
- package/lib/esm/namespaces/models/group-membership.model.js.map +1 -1
- package/lib/esm/namespaces/models/group.model.js +2 -0
- package/lib/esm/namespaces/models/group.model.js.map +1 -1
- package/lib/esm/namespaces/models/index.js +1 -0
- package/lib/esm/namespaces/models/index.js.map +1 -1
- package/lib/esm/namespaces/models/inheritance-block.model.js +2 -0
- package/lib/esm/namespaces/models/inheritance-block.model.js.map +1 -1
- package/lib/esm/namespaces/models/org-unit-closure.model.js +2 -0
- package/lib/esm/namespaces/models/org-unit-closure.model.js.map +1 -1
- package/lib/esm/namespaces/models/org-unit-membership.model.js +2 -0
- package/lib/esm/namespaces/models/org-unit-membership.model.js.map +1 -1
- package/lib/esm/namespaces/models/org-unit-profile.model.js +2 -0
- package/lib/esm/namespaces/models/org-unit-profile.model.js.map +1 -1
- package/lib/esm/namespaces/models/org-unit.model.js +2 -0
- package/lib/esm/namespaces/models/org-unit.model.js.map +1 -1
- package/lib/esm/namespaces/models/permission.model.js +2 -0
- package/lib/esm/namespaces/models/permission.model.js.map +1 -1
- package/lib/esm/namespaces/models/principal.model.js +2 -0
- package/lib/esm/namespaces/models/principal.model.js.map +1 -1
- package/lib/esm/namespaces/models/protected-resource.model.js +2 -0
- package/lib/esm/namespaces/models/protected-resource.model.js.map +1 -1
- package/lib/esm/namespaces/models/resource-grant.model.js +2 -0
- package/lib/esm/namespaces/models/resource-grant.model.js.map +1 -1
- package/lib/esm/namespaces/models/role-assignment.model.js +2 -0
- package/lib/esm/namespaces/models/role-assignment.model.js.map +1 -1
- package/lib/esm/namespaces/models/role-permission.model.js +2 -0
- package/lib/esm/namespaces/models/role-permission.model.js.map +1 -1
- package/lib/esm/namespaces/models/role.model.js +2 -0
- package/lib/esm/namespaces/models/role.model.js.map +1 -1
- package/lib/esm/namespaces/models/storage-binding.model.js +2 -0
- package/lib/esm/namespaces/models/storage-binding.model.js.map +1 -1
- package/lib/esm/namespaces/models/tenant-membership.model.js +2 -0
- package/lib/esm/namespaces/models/tenant-membership.model.js.map +1 -1
- package/lib/esm/namespaces/models/tenant-profile.model.js +2 -0
- package/lib/esm/namespaces/models/tenant-profile.model.js.map +1 -1
- package/lib/esm/namespaces/models/tenant.model.js +2 -0
- package/lib/esm/namespaces/models/tenant.model.js.map +1 -1
- package/lib/esm/namespaces/models/user.model.js +2 -0
- package/lib/esm/namespaces/models/user.model.js.map +1 -1
- package/lib/esm/namespaces/rls/index.js +11 -0
- package/lib/esm/namespaces/rls/index.js.map +1 -0
- package/lib/esm/namespaces/rls/principal-resolver.js +61 -0
- package/lib/esm/namespaces/rls/principal-resolver.js.map +1 -0
- package/lib/esm/namespaces/rls/rls-bootstrap.service.js +261 -0
- package/lib/esm/namespaces/rls/rls-bootstrap.service.js.map +1 -0
- package/lib/esm/namespaces/rls/rls.constants.js +75 -0
- package/lib/esm/namespaces/rls/rls.constants.js.map +1 -0
- package/lib/esm/namespaces/rls/rls.template.js +711 -0
- package/lib/esm/namespaces/rls/rls.template.js.map +1 -0
- package/lib/esm/namespaces/rls/rls.types.js +9 -0
- package/lib/esm/namespaces/rls/rls.types.js.map +1 -0
- package/lib/esm/namespaces/rls/session-binding.js +65 -0
- package/lib/esm/namespaces/rls/session-binding.js.map +1 -0
- package/lib/esm/namespaces/services/credential.service.js +322 -0
- package/lib/esm/namespaces/services/credential.service.js.map +1 -0
- package/lib/esm/namespaces/services/index.js +1 -0
- package/lib/esm/namespaces/services/index.js.map +1 -1
- package/lib/esm/namespaces/types.js +6 -0
- package/lib/esm/namespaces/types.js.map +1 -1
- package/lib/esm/redis/adapter.js +7 -1
- package/lib/esm/redis/adapter.js.map +1 -1
- package/lib/esm/secrets/InfraCredentialBootstrap.js +74 -0
- package/lib/esm/secrets/InfraCredentialBootstrap.js.map +1 -0
- package/lib/esm/secrets/aws/AwsSecretService.js +3 -13
- package/lib/esm/secrets/aws/AwsSecretService.js.map +1 -1
- package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +2 -13
- package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +1 -1
- package/lib/esm/secrets/core/SecretReference.js +1 -0
- package/lib/esm/secrets/core/SecretReference.js.map +1 -1
- package/lib/esm/secrets/fs/FsSecretEnvironment.js +24 -0
- package/lib/esm/secrets/fs/FsSecretEnvironment.js.map +1 -0
- package/lib/esm/secrets/fs/FsSecretService.js +412 -0
- package/lib/esm/secrets/fs/FsSecretService.js.map +1 -0
- package/lib/esm/secrets/fs/FsSecretServiceConfig.js +21 -0
- package/lib/esm/secrets/fs/FsSecretServiceConfig.js.map +1 -0
- package/lib/esm/secrets/fs/index.js +10 -0
- package/lib/esm/secrets/fs/index.js.map +1 -0
- package/lib/esm/secrets/gcp/GcpSecretManagerService.js +2 -13
- package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +1 -1
- package/lib/esm/secrets/index.js +2 -0
- package/lib/esm/secrets/index.js.map +1 -1
- package/lib/esm/secrets/model/ModelSecretService.js +337 -42
- package/lib/esm/secrets/model/ModelSecretService.js.map +1 -1
- package/lib/esm/secrets/model/Secret.js +86 -7
- package/lib/esm/secrets/model/Secret.js.map +1 -1
- package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +2 -13
- package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +1 -1
- package/lib/esm/secrets/vault/VaultSecretService.js +2 -13
- package/lib/esm/secrets/vault/VaultSecretService.js.map +1 -1
- package/lib/esm/shared/environmentValue.js +24 -0
- package/lib/esm/shared/environmentValue.js.map +1 -1
- package/lib/esm/shared/http/HttpApiService.js +181 -0
- package/lib/esm/shared/http/HttpApiService.js.map +1 -0
- package/lib/esm/shared/http/hermeticBoot.js +146 -0
- package/lib/esm/shared/http/hermeticBoot.js.map +1 -0
- package/lib/esm/shared/http/index.js +11 -0
- package/lib/esm/shared/http/index.js.map +1 -0
- package/lib/types/blob/azure/AzureBlobStoreService.d.cts +7 -7
- package/lib/types/blob/azure/AzureBlobStoreService.d.mts +7 -7
- package/lib/types/blob/core/BlobStoreService.d.cts +28 -27
- package/lib/types/blob/core/BlobStoreService.d.mts +28 -27
- package/lib/types/blob/gcp/GcsBlobStoreService.d.cts +7 -7
- package/lib/types/blob/gcp/GcsBlobStoreService.d.mts +7 -7
- package/lib/types/blob/s3/S3BlobStoreService.d.cts +9 -1
- package/lib/types/blob/s3/S3BlobStoreService.d.mts +9 -1
- package/lib/types/blob/s3/S3CompatibleBlobStoreService.d.cts +11 -15
- package/lib/types/blob/s3/S3CompatibleBlobStoreService.d.mts +11 -15
- package/lib/types/calendar/environment.d.cts +48 -0
- package/lib/types/calendar/environment.d.mts +48 -0
- package/lib/types/calendar/google-calendar/GoogleCalendarService.d.cts +316 -0
- package/lib/types/calendar/google-calendar/GoogleCalendarService.d.mts +316 -0
- package/lib/types/calendar/google-calendar/index.d.cts +2 -0
- package/lib/types/calendar/google-calendar/index.d.mts +2 -0
- package/lib/types/comms/discord/DiscordService.d.cts +285 -0
- package/lib/types/comms/discord/DiscordService.d.mts +285 -0
- package/lib/types/comms/discord/index.d.cts +1 -0
- package/lib/types/comms/discord/index.d.mts +1 -0
- package/lib/types/comms/email/EmailService.d.cts +184 -0
- package/lib/types/comms/email/EmailService.d.mts +184 -0
- package/lib/types/comms/email/index.d.cts +11 -0
- package/lib/types/comms/email/index.d.mts +11 -0
- package/lib/types/comms/email/mime.d.cts +84 -0
- package/lib/types/comms/email/mime.d.mts +84 -0
- package/lib/types/comms/email/smtp.d.cts +107 -0
- package/lib/types/comms/email/smtp.d.mts +107 -0
- package/lib/types/comms/environment.d.cts +110 -0
- package/lib/types/comms/environment.d.mts +110 -0
- package/lib/types/comms/gmail/GmailService.d.cts +190 -0
- package/lib/types/comms/gmail/GmailService.d.mts +190 -0
- package/lib/types/comms/gmail/index.d.cts +6 -0
- package/lib/types/comms/gmail/index.d.mts +6 -0
- package/lib/types/comms/index.d.cts +16 -0
- package/lib/types/comms/index.d.mts +16 -0
- package/lib/types/comms/outlook/MicrosoftOutlookService.d.cts +282 -0
- package/lib/types/comms/outlook/MicrosoftOutlookService.d.mts +282 -0
- package/lib/types/comms/outlook/index.d.cts +1 -0
- package/lib/types/comms/outlook/index.d.mts +1 -0
- package/lib/types/comms/slack/SlackService.d.cts +259 -0
- package/lib/types/comms/slack/SlackService.d.mts +259 -0
- package/lib/types/comms/slack/index.d.cts +6 -0
- package/lib/types/comms/slack/index.d.mts +6 -0
- package/lib/types/comms/teams/TeamsService.d.cts +172 -0
- package/lib/types/comms/teams/TeamsService.d.mts +172 -0
- package/lib/types/comms/teams/index.d.cts +6 -0
- package/lib/types/comms/teams/index.d.mts +6 -0
- package/lib/types/comms/telegram/TelegramService.d.cts +202 -0
- package/lib/types/comms/telegram/TelegramService.d.mts +202 -0
- package/lib/types/comms/telegram/index.d.cts +6 -0
- package/lib/types/comms/telegram/index.d.mts +6 -0
- package/lib/types/comms/whatsapp/WhatsAppService.d.cts +258 -0
- package/lib/types/comms/whatsapp/WhatsAppService.d.mts +258 -0
- package/lib/types/comms/whatsapp/index.d.cts +1 -0
- package/lib/types/comms/whatsapp/index.d.mts +1 -0
- package/lib/types/devops/environment.d.cts +62 -0
- package/lib/types/devops/environment.d.mts +62 -0
- package/lib/types/devops/github/GithubService.d.cts +287 -0
- package/lib/types/devops/github/GithubService.d.mts +287 -0
- package/lib/types/devops/github/index.d.cts +6 -0
- package/lib/types/devops/github/index.d.mts +6 -0
- package/lib/types/devops/gitlab/GitlabService.d.cts +277 -0
- package/lib/types/devops/gitlab/GitlabService.d.mts +277 -0
- package/lib/types/devops/gitlab/index.d.cts +6 -0
- package/lib/types/devops/gitlab/index.d.mts +6 -0
- package/lib/types/devops/index.d.cts +10 -0
- package/lib/types/devops/index.d.mts +10 -0
- package/lib/types/index.d.cts +2 -2
- package/lib/types/index.d.mts +2 -2
- package/lib/types/io/airtable/AirtableService.d.cts +268 -0
- package/lib/types/io/airtable/AirtableService.d.mts +268 -0
- package/lib/types/io/airtable/index.d.cts +6 -0
- package/lib/types/io/airtable/index.d.mts +6 -0
- package/lib/types/io/confluence/ConfluenceService.d.cts +250 -0
- package/lib/types/io/confluence/ConfluenceService.d.mts +250 -0
- package/lib/types/io/confluence/index.d.cts +1 -0
- package/lib/types/io/confluence/index.d.mts +1 -0
- package/lib/types/io/environment.d.cts +107 -0
- package/lib/types/io/environment.d.mts +107 -0
- package/lib/types/io/google-docs/GoogleDocsService.d.cts +188 -0
- package/lib/types/io/google-docs/GoogleDocsService.d.mts +188 -0
- package/lib/types/io/google-docs/index.d.cts +1 -0
- package/lib/types/io/google-docs/index.d.mts +1 -0
- package/lib/types/io/google-sheets/GoogleSheetsService.d.cts +204 -0
- package/lib/types/io/google-sheets/GoogleSheetsService.d.mts +204 -0
- package/lib/types/io/google-sheets/index.d.cts +6 -0
- package/lib/types/io/google-sheets/index.d.mts +6 -0
- package/lib/types/io/graphql/GraphqlService.d.cts +173 -0
- package/lib/types/io/graphql/GraphqlService.d.mts +173 -0
- package/lib/types/io/graphql/index.d.cts +6 -0
- package/lib/types/io/graphql/index.d.mts +6 -0
- package/lib/types/io/index.d.cts +17 -0
- package/lib/types/io/index.d.mts +17 -0
- package/lib/types/io/jira/JiraService.d.cts +300 -0
- package/lib/types/io/jira/JiraService.d.mts +300 -0
- package/lib/types/io/jira/index.d.cts +1 -0
- package/lib/types/io/jira/index.d.mts +1 -0
- package/lib/types/io/microsoft-excel/MicrosoftExcelService.d.cts +230 -0
- package/lib/types/io/microsoft-excel/MicrosoftExcelService.d.mts +230 -0
- package/lib/types/io/microsoft-excel/index.d.cts +1 -0
- package/lib/types/io/microsoft-excel/index.d.mts +1 -0
- package/lib/types/io/microsoft-sharepoint/MicrosoftSharePointService.d.cts +226 -0
- package/lib/types/io/microsoft-sharepoint/MicrosoftSharePointService.d.mts +226 -0
- package/lib/types/io/microsoft-sharepoint/index.d.cts +1 -0
- package/lib/types/io/microsoft-sharepoint/index.d.mts +1 -0
- package/lib/types/io/spreadsheet/SpreadsheetService.d.cts +144 -0
- package/lib/types/io/spreadsheet/SpreadsheetService.d.mts +144 -0
- package/lib/types/io/spreadsheet/index.d.cts +7 -0
- package/lib/types/io/spreadsheet/index.d.mts +7 -0
- package/lib/types/namespaces/index.d.cts +1 -0
- package/lib/types/namespaces/index.d.mts +1 -0
- package/lib/types/namespaces/models/credential.model.d.cts +23 -0
- package/lib/types/namespaces/models/credential.model.d.mts +23 -0
- package/lib/types/namespaces/models/index.d.cts +1 -0
- package/lib/types/namespaces/models/index.d.mts +1 -0
- package/lib/types/namespaces/rls/index.d.cts +10 -0
- package/lib/types/namespaces/rls/index.d.mts +10 -0
- package/lib/types/namespaces/rls/principal-resolver.d.cts +47 -0
- package/lib/types/namespaces/rls/principal-resolver.d.mts +47 -0
- package/lib/types/namespaces/rls/rls-bootstrap.service.d.cts +157 -0
- package/lib/types/namespaces/rls/rls-bootstrap.service.d.mts +157 -0
- package/lib/types/namespaces/rls/rls.constants.d.cts +52 -0
- package/lib/types/namespaces/rls/rls.constants.d.mts +52 -0
- package/lib/types/namespaces/rls/rls.template.d.cts +42 -0
- package/lib/types/namespaces/rls/rls.template.d.mts +42 -0
- package/lib/types/namespaces/rls/rls.types.d.cts +77 -0
- package/lib/types/namespaces/rls/rls.types.d.mts +77 -0
- package/lib/types/namespaces/rls/session-binding.d.cts +87 -0
- package/lib/types/namespaces/rls/session-binding.d.mts +87 -0
- package/lib/types/namespaces/services/credential.service.d.cts +175 -0
- package/lib/types/namespaces/services/credential.service.d.mts +175 -0
- package/lib/types/namespaces/services/index.d.cts +1 -0
- package/lib/types/namespaces/services/index.d.mts +1 -0
- package/lib/types/namespaces/types.d.cts +37 -0
- package/lib/types/namespaces/types.d.mts +37 -0
- package/lib/types/redis/adapter.d.cts +2 -0
- package/lib/types/redis/adapter.d.mts +2 -0
- package/lib/types/redis/types.d.cts +27 -2
- package/lib/types/redis/types.d.mts +27 -2
- package/lib/types/secrets/InfraCredentialBootstrap.d.cts +100 -0
- package/lib/types/secrets/InfraCredentialBootstrap.d.mts +100 -0
- package/lib/types/secrets/core/SecretTypes.d.cts +15 -1
- package/lib/types/secrets/core/SecretTypes.d.mts +15 -1
- package/lib/types/secrets/fs/FsSecretEnvironment.d.cts +42 -0
- package/lib/types/secrets/fs/FsSecretEnvironment.d.mts +42 -0
- package/lib/types/secrets/fs/FsSecretService.d.cts +207 -0
- package/lib/types/secrets/fs/FsSecretService.d.mts +207 -0
- package/lib/types/secrets/fs/FsSecretServiceConfig.d.cts +37 -0
- package/lib/types/secrets/fs/FsSecretServiceConfig.d.mts +37 -0
- package/lib/types/secrets/fs/index.d.cts +9 -0
- package/lib/types/secrets/fs/index.d.mts +9 -0
- package/lib/types/secrets/index.d.cts +2 -0
- package/lib/types/secrets/index.d.mts +2 -0
- package/lib/types/secrets/model/ModelSecretService.d.cts +190 -1
- package/lib/types/secrets/model/ModelSecretService.d.mts +190 -1
- package/lib/types/secrets/model/Secret.d.cts +44 -3
- package/lib/types/secrets/model/Secret.d.mts +44 -3
- package/lib/types/shared/environmentValue.d.cts +24 -0
- package/lib/types/shared/environmentValue.d.mts +24 -0
- package/lib/types/shared/http/HttpApiService.d.cts +193 -0
- package/lib/types/shared/http/HttpApiService.d.mts +193 -0
- package/lib/types/shared/http/hermeticBoot.d.cts +84 -0
- package/lib/types/shared/http/hermeticBoot.d.mts +84 -0
- package/lib/types/shared/http/index.d.cts +10 -0
- package/lib/types/shared/http/index.d.mts +10 -0
- package/package.json +279 -6
- package/sql/002_rls.sql +660 -15
- package/sql/004_credentials.sql +46 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/comms/email
|
|
3
|
+
* @summary Email service (SMTP + Microsoft Graph send, Graph/IMAP inbox reads).
|
|
4
|
+
* @description Re-exports the {@link EmailService} and its config/result
|
|
5
|
+
* types, the raw MIME builder, and the nodemailer-backed {@link SmtpClient}
|
|
6
|
+
* with its {@link SmtpConfig}
|
|
7
|
+
* (also available directly from the `./smtp` subpath).
|
|
8
|
+
*/
|
|
9
|
+
export * from "./EmailService.d.mts";
|
|
10
|
+
export * from "./mime.d.mts";
|
|
11
|
+
export * from "./smtp.d.mts";
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description A message attachment
|
|
3
|
+
* @summary Content is base64 text by default; with `encoding: "utf8"` the
|
|
4
|
+
* builder base64-encodes the UTF-8 content itself.
|
|
5
|
+
* @category Comms
|
|
6
|
+
* @memberOf module:integrations/comms/email/mime
|
|
7
|
+
*/
|
|
8
|
+
export interface EmailAttachment {
|
|
9
|
+
filename: string;
|
|
10
|
+
content: string;
|
|
11
|
+
encoding?: "base64" | "utf8";
|
|
12
|
+
contentType?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* @description Input for building a raw MIME message
|
|
16
|
+
* @summary Carries the sender, recipients (single address, comma-separated
|
|
17
|
+
* string, or array), subject, optional text and HTML bodies, `Reply-To`, and
|
|
18
|
+
* attachments.
|
|
19
|
+
* @category Comms
|
|
20
|
+
* @memberOf module:integrations/comms/email/mime
|
|
21
|
+
*/
|
|
22
|
+
export interface EmailMessageInput {
|
|
23
|
+
from: string;
|
|
24
|
+
to: string | string[];
|
|
25
|
+
cc?: string | string[];
|
|
26
|
+
bcc?: string | string[];
|
|
27
|
+
subject: string;
|
|
28
|
+
text?: string;
|
|
29
|
+
html?: string;
|
|
30
|
+
replyTo?: string;
|
|
31
|
+
attachments?: EmailAttachment[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* @description The built MIME message ready for delivery
|
|
35
|
+
* @summary Carries the raw RFC 5322 text, the resolved sender, the flattened
|
|
36
|
+
* recipient list (To/Cc/Bcc), and the generated `Message-ID`.
|
|
37
|
+
* @category Comms
|
|
38
|
+
* @memberOf module:integrations/comms/email/mime
|
|
39
|
+
*/
|
|
40
|
+
export interface BuiltEmail {
|
|
41
|
+
raw: string;
|
|
42
|
+
from: string;
|
|
43
|
+
recipients: string[];
|
|
44
|
+
messageId: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Validates a mailbox address against the allowlist and returns it trimmed.
|
|
48
|
+
*
|
|
49
|
+
* @param value - Candidate address.
|
|
50
|
+
* @param field - Human-readable field name used in the error message.
|
|
51
|
+
* @returns The trimmed, validated mailbox address.
|
|
52
|
+
* @throws {BadRequestError} when the address contains control characters or is not a bare mailbox.
|
|
53
|
+
*/
|
|
54
|
+
export declare function assertEmailAddress(value: string, field?: string): string;
|
|
55
|
+
/**
|
|
56
|
+
* @description Encodes a MIME header value safely
|
|
57
|
+
* @summary Pure-ASCII values pass through; anything else becomes an RFC 2047
|
|
58
|
+
* `=?UTF-8?B?...?=` encoded word.
|
|
59
|
+
* @param value - Raw header value
|
|
60
|
+
* @returns The header value safe for raw message transport
|
|
61
|
+
*/
|
|
62
|
+
export declare function encodeHeader(value: string): string;
|
|
63
|
+
/**
|
|
64
|
+
* @description Normalizes a recipient input into an allowlisted address list
|
|
65
|
+
* @summary Splits comma-separated strings, trims entries, drops empties, and
|
|
66
|
+
* validates every remaining entry as a bare mailbox address. Values carrying
|
|
67
|
+
* CR/LF, NUL, or other control characters are rejected outright so workflow
|
|
68
|
+
* input can never inject MIME headers or SMTP envelope commands.
|
|
69
|
+
* @param value - Single address, comma-separated string, array, or `undefined`
|
|
70
|
+
* @returns The trimmed, validated list of addresses
|
|
71
|
+
* @throws {BadRequestError} when an entry is not a valid mailbox address
|
|
72
|
+
*/
|
|
73
|
+
export declare function parseAddressList(value: string | string[] | undefined): string[];
|
|
74
|
+
/**
|
|
75
|
+
* @description Builds the complete raw MIME message
|
|
76
|
+
* @summary Generates the `Message-ID`, resolves recipients (throwing when
|
|
77
|
+
* none remain), emits the standard headers, and assembles the body entity
|
|
78
|
+
* (alternative text/HTML parts, plus attachments when present).
|
|
79
|
+
* @param input - Message input
|
|
80
|
+
* @returns The built message with raw text, sender, recipients, and `Message-ID`
|
|
81
|
+
* @throws {BadRequestError} when the message has no recipient or any address,
|
|
82
|
+
* attachment filename, or content type fails validation
|
|
83
|
+
*/
|
|
84
|
+
export declare function buildEmail(input: EmailMessageInput): BuiltEmail;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description A message attachment
|
|
3
|
+
* @summary Content is base64 text by default; with `encoding: "utf8"` the
|
|
4
|
+
* builder base64-encodes the UTF-8 content itself.
|
|
5
|
+
* @category Comms
|
|
6
|
+
* @memberOf module:integrations/comms/email/mime
|
|
7
|
+
*/
|
|
8
|
+
export interface EmailAttachment {
|
|
9
|
+
filename: string;
|
|
10
|
+
content: string;
|
|
11
|
+
encoding?: "base64" | "utf8";
|
|
12
|
+
contentType?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* @description Input for building a raw MIME message
|
|
16
|
+
* @summary Carries the sender, recipients (single address, comma-separated
|
|
17
|
+
* string, or array), subject, optional text and HTML bodies, `Reply-To`, and
|
|
18
|
+
* attachments.
|
|
19
|
+
* @category Comms
|
|
20
|
+
* @memberOf module:integrations/comms/email/mime
|
|
21
|
+
*/
|
|
22
|
+
export interface EmailMessageInput {
|
|
23
|
+
from: string;
|
|
24
|
+
to: string | string[];
|
|
25
|
+
cc?: string | string[];
|
|
26
|
+
bcc?: string | string[];
|
|
27
|
+
subject: string;
|
|
28
|
+
text?: string;
|
|
29
|
+
html?: string;
|
|
30
|
+
replyTo?: string;
|
|
31
|
+
attachments?: EmailAttachment[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* @description The built MIME message ready for delivery
|
|
35
|
+
* @summary Carries the raw RFC 5322 text, the resolved sender, the flattened
|
|
36
|
+
* recipient list (To/Cc/Bcc), and the generated `Message-ID`.
|
|
37
|
+
* @category Comms
|
|
38
|
+
* @memberOf module:integrations/comms/email/mime
|
|
39
|
+
*/
|
|
40
|
+
export interface BuiltEmail {
|
|
41
|
+
raw: string;
|
|
42
|
+
from: string;
|
|
43
|
+
recipients: string[];
|
|
44
|
+
messageId: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Validates a mailbox address against the allowlist and returns it trimmed.
|
|
48
|
+
*
|
|
49
|
+
* @param value - Candidate address.
|
|
50
|
+
* @param field - Human-readable field name used in the error message.
|
|
51
|
+
* @returns The trimmed, validated mailbox address.
|
|
52
|
+
* @throws {BadRequestError} when the address contains control characters or is not a bare mailbox.
|
|
53
|
+
*/
|
|
54
|
+
export declare function assertEmailAddress(value: string, field?: string): string;
|
|
55
|
+
/**
|
|
56
|
+
* @description Encodes a MIME header value safely
|
|
57
|
+
* @summary Pure-ASCII values pass through; anything else becomes an RFC 2047
|
|
58
|
+
* `=?UTF-8?B?...?=` encoded word.
|
|
59
|
+
* @param value - Raw header value
|
|
60
|
+
* @returns The header value safe for raw message transport
|
|
61
|
+
*/
|
|
62
|
+
export declare function encodeHeader(value: string): string;
|
|
63
|
+
/**
|
|
64
|
+
* @description Normalizes a recipient input into an allowlisted address list
|
|
65
|
+
* @summary Splits comma-separated strings, trims entries, drops empties, and
|
|
66
|
+
* validates every remaining entry as a bare mailbox address. Values carrying
|
|
67
|
+
* CR/LF, NUL, or other control characters are rejected outright so workflow
|
|
68
|
+
* input can never inject MIME headers or SMTP envelope commands.
|
|
69
|
+
* @param value - Single address, comma-separated string, array, or `undefined`
|
|
70
|
+
* @returns The trimmed, validated list of addresses
|
|
71
|
+
* @throws {BadRequestError} when an entry is not a valid mailbox address
|
|
72
|
+
*/
|
|
73
|
+
export declare function parseAddressList(value: string | string[] | undefined): string[];
|
|
74
|
+
/**
|
|
75
|
+
* @description Builds the complete raw MIME message
|
|
76
|
+
* @summary Generates the `Message-ID`, resolves recipients (throwing when
|
|
77
|
+
* none remain), emits the standard headers, and assembles the body entity
|
|
78
|
+
* (alternative text/HTML parts, plus attachments when present).
|
|
79
|
+
* @param input - Message input
|
|
80
|
+
* @returns The built message with raw text, sender, recipients, and `Message-ID`
|
|
81
|
+
* @throws {BadRequestError} when the message has no recipient or any address,
|
|
82
|
+
* attachment filename, or content type fails validation
|
|
83
|
+
*/
|
|
84
|
+
export declare function buildEmail(input: EmailMessageInput): BuiltEmail;
|
|
@@ -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,110 @@
|
|
|
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, Gmail, Discord, WhatsApp, and Outlook services'
|
|
6
|
+
* `configFromEnvironment()` implementations and the `CommsEnvironment`
|
|
7
|
+
* singleton created via `LoggedEnvironment.accumulate`. Services read their
|
|
8
|
+
* credentials and defaults from the matching `comms.<provider>` slice, using
|
|
9
|
+
* the `envString`/`envNumber` helpers from `shared/environmentValue` to reject
|
|
10
|
+
* unset-leaf proxies. The matching public subpath exports are
|
|
11
|
+
* `@decaf-ts/integrations/comms/discord`,
|
|
12
|
+
* `@decaf-ts/integrations/comms/whatsapp`, and
|
|
13
|
+
* `@decaf-ts/integrations/comms/outlook`.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* @description Environment shape for the comms integration services
|
|
17
|
+
* @summary Defines the `comms` root with one slice per provider (`slack`,
|
|
18
|
+
* `telegram`, `teams`, `email`, `gmail`, `discord`, `whatsApp`, `outlook`).
|
|
19
|
+
* Each slice carries the provider's required credentials (e.g. `token`,
|
|
20
|
+
* `webhookUrl`, `phoneNumberId`) plus optional `baseUrl` override and
|
|
21
|
+
* `timeout`. Fields are typed as required here so
|
|
22
|
+
* `LoggedEnvironment.accumulate` registers them; absent values resolve to
|
|
23
|
+
* proxy placeholders at runtime and must pass through `envString`/`envNumber`.
|
|
24
|
+
* Values are credential references supplied by the environment, never literals
|
|
25
|
+
* embedded in source.
|
|
26
|
+
* @memberOf module:integrations/comms/environment
|
|
27
|
+
*/
|
|
28
|
+
export interface CommsEnvironmentShape {
|
|
29
|
+
comms: {
|
|
30
|
+
slack: {
|
|
31
|
+
token: string;
|
|
32
|
+
baseUrl: string;
|
|
33
|
+
timeout?: number;
|
|
34
|
+
};
|
|
35
|
+
telegram: {
|
|
36
|
+
token: string;
|
|
37
|
+
baseUrl: string;
|
|
38
|
+
timeout?: number;
|
|
39
|
+
};
|
|
40
|
+
teams: {
|
|
41
|
+
token: string;
|
|
42
|
+
webhookUrl: string;
|
|
43
|
+
baseUrl: string;
|
|
44
|
+
timeout?: number;
|
|
45
|
+
};
|
|
46
|
+
email: {
|
|
47
|
+
provider: string;
|
|
48
|
+
host: string;
|
|
49
|
+
port?: number;
|
|
50
|
+
secure?: boolean;
|
|
51
|
+
username: string;
|
|
52
|
+
password: string;
|
|
53
|
+
from: string;
|
|
54
|
+
token: string;
|
|
55
|
+
graphBaseUrl: string;
|
|
56
|
+
/** Explicit opt-in for SMTP AUTH over a plaintext session (default false). */
|
|
57
|
+
allowPlaintextAuth?: boolean;
|
|
58
|
+
timeout?: number;
|
|
59
|
+
};
|
|
60
|
+
gmail: {
|
|
61
|
+
token: string;
|
|
62
|
+
userId: string;
|
|
63
|
+
baseUrl: string;
|
|
64
|
+
timeout?: number;
|
|
65
|
+
};
|
|
66
|
+
/** Discord bot token and optional API overrides (`comms/discord`). */
|
|
67
|
+
discord: {
|
|
68
|
+
token: string;
|
|
69
|
+
baseUrl: string;
|
|
70
|
+
timeout?: number;
|
|
71
|
+
};
|
|
72
|
+
/** WhatsApp Cloud API token and sender phone number ID (`comms/whatsapp`). */
|
|
73
|
+
whatsApp: {
|
|
74
|
+
token: string;
|
|
75
|
+
phoneNumberId: string;
|
|
76
|
+
baseUrl: string;
|
|
77
|
+
timeout?: number;
|
|
78
|
+
};
|
|
79
|
+
/** Microsoft Graph access token for Outlook mail/calendar (`comms/outlook`). */
|
|
80
|
+
outlook: {
|
|
81
|
+
token: string;
|
|
82
|
+
baseUrl: string;
|
|
83
|
+
timeout?: number;
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* @description Accumulated comms environment singleton
|
|
89
|
+
* @summary The `LoggedEnvironment.accumulate`-registered instance backing the
|
|
90
|
+
* `CommsEnvironmentShape` contract. Comms services read their provider slice
|
|
91
|
+
* (e.g. `CommsEnvironment.comms.slack`) inside `configFromEnvironment()` and
|
|
92
|
+
* translate it into an `HttpApiServiceConfig`-derived config. Credentials come
|
|
93
|
+
* from environment variables; for as-graph node usage those are provided as
|
|
94
|
+
* `GRAPH_CREDENTIAL_*` values (placeholders in this example).
|
|
95
|
+
* @example
|
|
96
|
+
* ```ts
|
|
97
|
+
* import { SlackService } from "@decaf-ts/integrations/comms/slack";
|
|
98
|
+
*
|
|
99
|
+
* // with comms.slack.token / comms.slack.baseUrl configured in the environment
|
|
100
|
+
* const slack = new SlackService();
|
|
101
|
+
* await slack.initialize();
|
|
102
|
+
* ```
|
|
103
|
+
* @constant {LoggedEnvironment} CommsEnvironment
|
|
104
|
+
* @memberOf module:integrations/comms/environment
|
|
105
|
+
*/
|
|
106
|
+
export declare const CommsEnvironment: import("@decaf-ts/logging").AccumulatedEnvironment<{
|
|
107
|
+
app: string | undefined;
|
|
108
|
+
} & import("@decaf-ts/logging").LoggingConfig<object> & {
|
|
109
|
+
env: any;
|
|
110
|
+
} & CommsEnvironmentShape>;
|
|
@@ -0,0 +1,110 @@
|
|
|
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, Gmail, Discord, WhatsApp, and Outlook services'
|
|
6
|
+
* `configFromEnvironment()` implementations and the `CommsEnvironment`
|
|
7
|
+
* singleton created via `LoggedEnvironment.accumulate`. Services read their
|
|
8
|
+
* credentials and defaults from the matching `comms.<provider>` slice, using
|
|
9
|
+
* the `envString`/`envNumber` helpers from `shared/environmentValue` to reject
|
|
10
|
+
* unset-leaf proxies. The matching public subpath exports are
|
|
11
|
+
* `@decaf-ts/integrations/comms/discord`,
|
|
12
|
+
* `@decaf-ts/integrations/comms/whatsapp`, and
|
|
13
|
+
* `@decaf-ts/integrations/comms/outlook`.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* @description Environment shape for the comms integration services
|
|
17
|
+
* @summary Defines the `comms` root with one slice per provider (`slack`,
|
|
18
|
+
* `telegram`, `teams`, `email`, `gmail`, `discord`, `whatsApp`, `outlook`).
|
|
19
|
+
* Each slice carries the provider's required credentials (e.g. `token`,
|
|
20
|
+
* `webhookUrl`, `phoneNumberId`) plus optional `baseUrl` override and
|
|
21
|
+
* `timeout`. Fields are typed as required here so
|
|
22
|
+
* `LoggedEnvironment.accumulate` registers them; absent values resolve to
|
|
23
|
+
* proxy placeholders at runtime and must pass through `envString`/`envNumber`.
|
|
24
|
+
* Values are credential references supplied by the environment, never literals
|
|
25
|
+
* embedded in source.
|
|
26
|
+
* @memberOf module:integrations/comms/environment
|
|
27
|
+
*/
|
|
28
|
+
export interface CommsEnvironmentShape {
|
|
29
|
+
comms: {
|
|
30
|
+
slack: {
|
|
31
|
+
token: string;
|
|
32
|
+
baseUrl: string;
|
|
33
|
+
timeout?: number;
|
|
34
|
+
};
|
|
35
|
+
telegram: {
|
|
36
|
+
token: string;
|
|
37
|
+
baseUrl: string;
|
|
38
|
+
timeout?: number;
|
|
39
|
+
};
|
|
40
|
+
teams: {
|
|
41
|
+
token: string;
|
|
42
|
+
webhookUrl: string;
|
|
43
|
+
baseUrl: string;
|
|
44
|
+
timeout?: number;
|
|
45
|
+
};
|
|
46
|
+
email: {
|
|
47
|
+
provider: string;
|
|
48
|
+
host: string;
|
|
49
|
+
port?: number;
|
|
50
|
+
secure?: boolean;
|
|
51
|
+
username: string;
|
|
52
|
+
password: string;
|
|
53
|
+
from: string;
|
|
54
|
+
token: string;
|
|
55
|
+
graphBaseUrl: string;
|
|
56
|
+
/** Explicit opt-in for SMTP AUTH over a plaintext session (default false). */
|
|
57
|
+
allowPlaintextAuth?: boolean;
|
|
58
|
+
timeout?: number;
|
|
59
|
+
};
|
|
60
|
+
gmail: {
|
|
61
|
+
token: string;
|
|
62
|
+
userId: string;
|
|
63
|
+
baseUrl: string;
|
|
64
|
+
timeout?: number;
|
|
65
|
+
};
|
|
66
|
+
/** Discord bot token and optional API overrides (`comms/discord`). */
|
|
67
|
+
discord: {
|
|
68
|
+
token: string;
|
|
69
|
+
baseUrl: string;
|
|
70
|
+
timeout?: number;
|
|
71
|
+
};
|
|
72
|
+
/** WhatsApp Cloud API token and sender phone number ID (`comms/whatsapp`). */
|
|
73
|
+
whatsApp: {
|
|
74
|
+
token: string;
|
|
75
|
+
phoneNumberId: string;
|
|
76
|
+
baseUrl: string;
|
|
77
|
+
timeout?: number;
|
|
78
|
+
};
|
|
79
|
+
/** Microsoft Graph access token for Outlook mail/calendar (`comms/outlook`). */
|
|
80
|
+
outlook: {
|
|
81
|
+
token: string;
|
|
82
|
+
baseUrl: string;
|
|
83
|
+
timeout?: number;
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* @description Accumulated comms environment singleton
|
|
89
|
+
* @summary The `LoggedEnvironment.accumulate`-registered instance backing the
|
|
90
|
+
* `CommsEnvironmentShape` contract. Comms services read their provider slice
|
|
91
|
+
* (e.g. `CommsEnvironment.comms.slack`) inside `configFromEnvironment()` and
|
|
92
|
+
* translate it into an `HttpApiServiceConfig`-derived config. Credentials come
|
|
93
|
+
* from environment variables; for as-graph node usage those are provided as
|
|
94
|
+
* `GRAPH_CREDENTIAL_*` values (placeholders in this example).
|
|
95
|
+
* @example
|
|
96
|
+
* ```ts
|
|
97
|
+
* import { SlackService } from "@decaf-ts/integrations/comms/slack";
|
|
98
|
+
*
|
|
99
|
+
* // with comms.slack.token / comms.slack.baseUrl configured in the environment
|
|
100
|
+
* const slack = new SlackService();
|
|
101
|
+
* await slack.initialize();
|
|
102
|
+
* ```
|
|
103
|
+
* @constant {LoggedEnvironment} CommsEnvironment
|
|
104
|
+
* @memberOf module:integrations/comms/environment
|
|
105
|
+
*/
|
|
106
|
+
export declare const CommsEnvironment: import("@decaf-ts/logging").AccumulatedEnvironment<{
|
|
107
|
+
app: string | undefined;
|
|
108
|
+
} & import("@decaf-ts/logging").LoggingConfig<object> & {
|
|
109
|
+
env: any;
|
|
110
|
+
} & CommsEnvironmentShape>;
|