@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,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/comms/gmail/service
|
|
3
|
+
* @summary Gmail API integration service for sending and listing messages.
|
|
4
|
+
* @description Exposes the Gmail REST API (`users.messages.send`,
|
|
5
|
+
* `users.messages.list`, `users.messages.get`, `users.labels.list`) as an
|
|
6
|
+
* undecorated client-based service built on {@link HttpApiService}.
|
|
7
|
+
* Message sending reuses the shared MIME builder from the email integration
|
|
8
|
+
* (`buildEmail`) and posts the raw MIME message as base64url. Configuration
|
|
9
|
+
* comes from an explicit `GmailServiceConfig` or the `comms.gmail` environment
|
|
10
|
+
* slice, and failures are mapped to decaf errors via {@link httpError}.
|
|
11
|
+
*/
|
|
12
|
+
import { InternalError } from "@decaf-ts/db-decorators";
|
|
13
|
+
import { CommsEnvironment } from "./../environment.js";
|
|
14
|
+
import { envNumber, envString } from "./../../shared/environmentValue.js";
|
|
15
|
+
import { HttpApiService, httpError, } from "./../../shared/http/index.js";
|
|
16
|
+
import { buildEmail } from "./../email/mime.js";
|
|
17
|
+
/**
|
|
18
|
+
* @description Gmail API integration service
|
|
19
|
+
* @summary An undecorated HTTP service for sending MIME-built
|
|
20
|
+
* emails, listing messages with Gmail query syntax and page tokens, fetching
|
|
21
|
+
* a single message in a chosen format, and listing labels. All operations
|
|
22
|
+
* require an OAuth token (`requireToken()`) and operate on the configured
|
|
23
|
+
* `userId` mailbox (default `"me"`); transport failures are mapped to decaf
|
|
24
|
+
* errors via {@link httpError}.
|
|
25
|
+
* @class GmailService
|
|
26
|
+
* @category Comms
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* import { GmailService } from "@decaf-ts/integrations/comms/gmail";
|
|
30
|
+
*
|
|
31
|
+
* const gmail = new GmailService();
|
|
32
|
+
* await gmail.initialize({
|
|
33
|
+
* token: process.env.GRAPH_CREDENTIAL_GMAIL_TOKEN,
|
|
34
|
+
* });
|
|
35
|
+
* await gmail.send({
|
|
36
|
+
* from: "bot@example.com",
|
|
37
|
+
* to: "ops@example.com",
|
|
38
|
+
* subject: "Deploy",
|
|
39
|
+
* text: "Release 1.2.0 is live",
|
|
40
|
+
* });
|
|
41
|
+
* ```
|
|
42
|
+
* @memberOf module:integrations/comms/gmail/service
|
|
43
|
+
*/
|
|
44
|
+
export class GmailService extends HttpApiService {
|
|
45
|
+
constructor() {
|
|
46
|
+
super(...arguments);
|
|
47
|
+
/**
|
|
48
|
+
* @description The provider name used in error messages
|
|
49
|
+
*/
|
|
50
|
+
this.serviceName = "Gmail";
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* @description The Gmail REST API base URL
|
|
54
|
+
* @summary Used when the resolved config carries no `baseUrl`.
|
|
55
|
+
* @returns {string} `"https://gmail.googleapis.com/gmail/v1"`.
|
|
56
|
+
*/
|
|
57
|
+
defaultBaseUrl() {
|
|
58
|
+
return "https://gmail.googleapis.com/gmail/v1";
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* @description Builds the Gmail OAuth bearer authorization headers
|
|
62
|
+
* @summary Returns the `Authorization: Bearer <token>` header when the
|
|
63
|
+
* config carries a token, and no headers otherwise.
|
|
64
|
+
* @param {GmailServiceConfig} config - The resolved service configuration.
|
|
65
|
+
* @returns {Record<string, string>} The authorization headers (empty without a token).
|
|
66
|
+
*/
|
|
67
|
+
authHeaders(config) {
|
|
68
|
+
return config.token ? { Authorization: `Bearer ${config.token}` } : {};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* @description Reads the Gmail credentials and defaults from the environment
|
|
72
|
+
* @summary Reads the `comms.gmail` environment slice and returns a partial
|
|
73
|
+
* config when a token is configured, `undefined` otherwise. Values pass
|
|
74
|
+
* through `envString`/`envNumber` to reject unset-leaf proxies.
|
|
75
|
+
* @returns {Partial<GmailServiceConfig> | undefined} A partial config, or `undefined` when no Gmail token is configured.
|
|
76
|
+
*/
|
|
77
|
+
configFromEnvironment() {
|
|
78
|
+
const env = CommsEnvironment.comms.gmail;
|
|
79
|
+
const token = envString(env?.token);
|
|
80
|
+
if (!token)
|
|
81
|
+
return undefined;
|
|
82
|
+
return {
|
|
83
|
+
token,
|
|
84
|
+
userId: envString(env.userId),
|
|
85
|
+
baseUrl: envString(env.baseUrl),
|
|
86
|
+
timeout: envNumber(env.timeout),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* @description Builds the mailbox-scoped API path
|
|
91
|
+
* @summary Returns `/users/<userId>` with the configured `userId` (or
|
|
92
|
+
* `"me"` when unset) URL-encoded; all message and label operations are
|
|
93
|
+
* relative to this path.
|
|
94
|
+
* @returns {string} The URL-encoded mailbox path.
|
|
95
|
+
*/
|
|
96
|
+
userPath() {
|
|
97
|
+
return `/users/${encodeURIComponent(this.config.userId ?? "me")}`;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* @description Sends an email through the Gmail API
|
|
101
|
+
* @summary Builds a raw MIME message from the input with the shared email
|
|
102
|
+
* MIME builder (`buildEmail`), base64url-encodes it, and `POST`s it to
|
|
103
|
+
* `users.messages.send`. Requires a token and a `from` sender address.
|
|
104
|
+
* @param {EmailMessageInput} input - The message envelope and body (`from`, `to`, `subject`, and optional `cc`/`bcc`/`text`/`html`/`replyTo`/`attachments`).
|
|
105
|
+
* @returns {Promise<GmailSendResult>} Gmail's identifiers for the sent message.
|
|
106
|
+
* @throws {InternalError} When no token is configured or the sender address is missing.
|
|
107
|
+
* @throws {NotFoundError} When the endpoint answers with HTTP 404.
|
|
108
|
+
* @throws {ConflictError} When Gmail answers with HTTP 409.
|
|
109
|
+
* @throws {BadRequestError} When Gmail answers with any other HTTP error status (e.g. invalid recipients).
|
|
110
|
+
*/
|
|
111
|
+
async send(input) {
|
|
112
|
+
this.requireToken();
|
|
113
|
+
if (!input.from) {
|
|
114
|
+
throw new InternalError("Gmail send requires a sender address");
|
|
115
|
+
}
|
|
116
|
+
const built = buildEmail(input);
|
|
117
|
+
try {
|
|
118
|
+
const response = await this.client.post(`${this.userPath()}/messages/send`, {
|
|
119
|
+
raw: Buffer.from(built.raw, "utf8").toString("base64url"),
|
|
120
|
+
});
|
|
121
|
+
return {
|
|
122
|
+
id: String(response.data.id ?? built.messageId),
|
|
123
|
+
threadId: response.data.threadId,
|
|
124
|
+
labelIds: response.data.labelIds,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
throw httpError("Gmail", "send message", error);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* @description Lists mailbox messages with Gmail query paging
|
|
133
|
+
* @summary `GET`s `users.messages.list` with an optional Gmail `query`
|
|
134
|
+
* (`q` parameter, e.g. `"from:user@example.com is:unread"`), a page size
|
|
135
|
+
* (default `25`), a `pageToken` from the previous page, and `labelIds`
|
|
136
|
+
* filtering. Returns the message references and the `nextPageToken` to pass
|
|
137
|
+
* back as `pageToken` for the next page.
|
|
138
|
+
* @param {object} [options] - Query and paging options.
|
|
139
|
+
* @param {string} [options.query] - Gmail search query (`q` parameter).
|
|
140
|
+
* @param {number} [options.maxResults] - Page size; defaults to `25`.
|
|
141
|
+
* @param {string} [options.pageToken] - The `nextPageToken` from the previous page.
|
|
142
|
+
* @param {string[]} [options.labelIds] - Label IDs the messages must carry.
|
|
143
|
+
* @returns {Promise<GmailListResult>} One page of message references with the next page token when more pages exist.
|
|
144
|
+
* @throws {InternalError} When no token is configured.
|
|
145
|
+
* @throws {NotFoundError} When the endpoint answers with HTTP 404.
|
|
146
|
+
* @throws {ConflictError} When Gmail answers with HTTP 409.
|
|
147
|
+
* @throws {BadRequestError} When Gmail answers with any other HTTP error status (e.g. invalid query).
|
|
148
|
+
* @example
|
|
149
|
+
* ```ts
|
|
150
|
+
* let pageToken: string | undefined;
|
|
151
|
+
* do {
|
|
152
|
+
* const page = await gmail.listMessages({
|
|
153
|
+
* query: "is:unread",
|
|
154
|
+
* maxResults: 100,
|
|
155
|
+
* pageToken,
|
|
156
|
+
* });
|
|
157
|
+
* console.log(page.messages);
|
|
158
|
+
* pageToken = page.nextPageToken;
|
|
159
|
+
* } while (pageToken);
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
async listMessages(options = {}) {
|
|
163
|
+
this.requireToken();
|
|
164
|
+
try {
|
|
165
|
+
const response = await this.client.get(`${this.userPath()}/messages`, {
|
|
166
|
+
params: {
|
|
167
|
+
q: options.query,
|
|
168
|
+
maxResults: options.maxResults ?? 25,
|
|
169
|
+
pageToken: options.pageToken,
|
|
170
|
+
labelIds: options.labelIds,
|
|
171
|
+
},
|
|
172
|
+
});
|
|
173
|
+
return {
|
|
174
|
+
messages: response.data.messages ?? [],
|
|
175
|
+
nextPageToken: response.data.nextPageToken,
|
|
176
|
+
resultSizeEstimate: response.data.resultSizeEstimate,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
throw httpError("Gmail", "list messages", error);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* @description Fetches a single Gmail message
|
|
185
|
+
* @summary `GET`s `users.messages.get` for the given message ID with the
|
|
186
|
+
* requested `format`. With `"full"` (the default) the payload includes the
|
|
187
|
+
* parsed body parts; `"metadata"` limits it to headers and labels,
|
|
188
|
+
* `"minimal"` to identifiers only, and `"raw"` returns the raw MIME string.
|
|
189
|
+
* @param {string} id - The Gmail message ID.
|
|
190
|
+
* @param {"full" | "metadata" | "minimal" | "raw"} [format] - The message format to request; defaults to `"full"`.
|
|
191
|
+
* @returns {Promise<Record<string, unknown>>} The raw Gmail message payload in the requested format.
|
|
192
|
+
* @throws {InternalError} When no token is configured or the message ID is empty.
|
|
193
|
+
* @throws {NotFoundError} When the message does not exist (HTTP 404).
|
|
194
|
+
* @throws {ConflictError} When Gmail answers with HTTP 409.
|
|
195
|
+
* @throws {BadRequestError} When Gmail answers with any other HTTP error status.
|
|
196
|
+
*/
|
|
197
|
+
async getMessage(id, format = "full") {
|
|
198
|
+
this.requireToken();
|
|
199
|
+
if (!id)
|
|
200
|
+
throw new InternalError("Gmail getMessage requires a message ID");
|
|
201
|
+
try {
|
|
202
|
+
const response = await this.client.get(`${this.userPath()}/messages/${encodeURIComponent(id)}`, { params: { format } });
|
|
203
|
+
return response.data;
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
throw httpError("Gmail", "get message", error);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* @description Lists the mailbox's Gmail labels
|
|
211
|
+
* @summary `GET`s `users.labels.list` and returns the raw label payloads
|
|
212
|
+
* (including `id`, `name`, and `type`).
|
|
213
|
+
* @returns {Promise<Array<Record<string, unknown>>>} The raw Gmail label payloads.
|
|
214
|
+
* @throws {InternalError} When no token is configured.
|
|
215
|
+
* @throws {NotFoundError} When the endpoint answers with HTTP 404.
|
|
216
|
+
* @throws {ConflictError} When Gmail answers with HTTP 409.
|
|
217
|
+
* @throws {BadRequestError} When Gmail answers with any other HTTP error status.
|
|
218
|
+
*/
|
|
219
|
+
async listLabels() {
|
|
220
|
+
this.requireToken();
|
|
221
|
+
try {
|
|
222
|
+
const response = await this.client.get(`${this.userPath()}/labels`);
|
|
223
|
+
return response.data.labels ?? [];
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
throw httpError("Gmail", "list labels", error);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=GmailService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GmailService.js","sourceRoot":"","sources":["../../../../src/comms/gmail/GmailService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/comms/gmail
|
|
3
|
+
* @summary Gmail service (REST v1 message send/list/get and label listing).
|
|
4
|
+
* @description Re-exports the Gmail client-based service and its types.
|
|
5
|
+
*/
|
|
6
|
+
export * from "./GmailService.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/comms/gmail/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,kCAA+B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/comms
|
|
3
|
+
* @summary Comms integration services (Slack, Telegram, Teams, Gmail, Email).
|
|
4
|
+
* @description Re-exports the messaging/email services, their per-service
|
|
5
|
+
* modules, and the shared `comms` environment slice. Each sub-module is also
|
|
6
|
+
* available through its own package subpath export.
|
|
7
|
+
*/
|
|
8
|
+
export * from "./email/index.js";
|
|
9
|
+
export * from "./gmail/index.js";
|
|
10
|
+
export * from "./slack/index.js";
|
|
11
|
+
export * from "./teams/index.js";
|
|
12
|
+
export * from "./telegram/index.js";
|
|
13
|
+
export * from "./discord/index.js";
|
|
14
|
+
export * from "./whatsapp/index.js";
|
|
15
|
+
export * from "./outlook/index.js";
|
|
16
|
+
export * from "./environment.js";
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/comms/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,iCAAwB;AACxB,iCAAwB;AACxB,iCAAwB;AACxB,iCAAwB;AACxB,oCAA2B;AAC3B,mCAA0B;AAC1B,oCAA2B;AAC3B,mCAA0B;AAC1B,iCAA8B"}
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/comms/outlook/service
|
|
3
|
+
* @summary Microsoft Outlook mail and calendar integration service (Microsoft Graph).
|
|
4
|
+
* @description Exposes Outlook mail (`sendMail`, `listMessages`, `getMessage`)
|
|
5
|
+
* and calendar (`listEvents`, `createEvent`, `deleteEvent`) operations through
|
|
6
|
+
* Microsoft Graph `v1.0` as an undecorated client-based service built on
|
|
7
|
+
* {@link HttpApiService}. Configuration comes from an explicit
|
|
8
|
+
* `OutlookServiceConfig` or the `comms.outlook` environment slice; the access
|
|
9
|
+
* token is sent as `Authorization: Bearer <token>`. Credentials are referenced
|
|
10
|
+
* from configuration (and, from as-graph nodes, from the resolved
|
|
11
|
+
* `microsoft-outlook` credential secret) and are never embedded in source.
|
|
12
|
+
* Failures are mapped to decaf errors via {@link httpError}.
|
|
13
|
+
*/
|
|
14
|
+
import { InternalError } from "@decaf-ts/db-decorators";
|
|
15
|
+
import { CommsEnvironment } from "./../environment.js";
|
|
16
|
+
import { envNumber, envString } from "./../../shared/environmentValue.js";
|
|
17
|
+
import { HttpApiService, httpError, } from "./../../shared/http/index.js";
|
|
18
|
+
/**
|
|
19
|
+
* @description Normalizes Outlook recipient addresses into Graph recipients
|
|
20
|
+
* @summary Accepts a single address, an array, or a comma/semicolon-separated
|
|
21
|
+
* string, trims entries, drops blanks, and maps each address to the Graph
|
|
22
|
+
* `{ emailAddress: { address } }` envelope.
|
|
23
|
+
* @param {string | string[] | undefined} value - The raw recipient value.
|
|
24
|
+
* @returns {Array<{ emailAddress: { address: string } }>} The Graph recipient envelopes.
|
|
25
|
+
*/
|
|
26
|
+
function recipientList(value) {
|
|
27
|
+
if (!value)
|
|
28
|
+
return [];
|
|
29
|
+
const values = Array.isArray(value)
|
|
30
|
+
? value
|
|
31
|
+
: value.split(/[,;]/).map((entry) => entry.trim());
|
|
32
|
+
return values
|
|
33
|
+
.map((entry) => entry.trim())
|
|
34
|
+
.filter((entry) => entry.length > 0)
|
|
35
|
+
.map((address) => ({ emailAddress: { address } }));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* @description Microsoft Outlook (Graph) mail and calendar integration service
|
|
39
|
+
* @summary An undecorated HTTP service for sending and reading mail and for
|
|
40
|
+
* listing, creating, and deleting calendar events on the signed-in user
|
|
41
|
+
* (`/me`). Every operation requires a Graph access token; missing credentials
|
|
42
|
+
* or identifiers raise `InternalError`, and transport failures are mapped to
|
|
43
|
+
* decaf errors via {@link httpError}.
|
|
44
|
+
* @class MicrosoftOutlookService
|
|
45
|
+
* @extends HttpApiService
|
|
46
|
+
* @category Comms
|
|
47
|
+
* @example
|
|
48
|
+
* ```ts
|
|
49
|
+
* import { MicrosoftOutlookService } from "@decaf-ts/integrations/comms/outlook";
|
|
50
|
+
*
|
|
51
|
+
* const outlook = new MicrosoftOutlookService();
|
|
52
|
+
* await outlook.initialize({
|
|
53
|
+
* token: process.env.GRAPH_CREDENTIAL_MICROSOFT_OUTLOOK_TOKEN,
|
|
54
|
+
* });
|
|
55
|
+
* await outlook.sendMail({
|
|
56
|
+
* to: "team@example.com",
|
|
57
|
+
* subject: "Deployment finished",
|
|
58
|
+
* body: "Release 1.2.0 is live",
|
|
59
|
+
* });
|
|
60
|
+
* ```
|
|
61
|
+
* @mermaid
|
|
62
|
+
* sequenceDiagram
|
|
63
|
+
* autonumber
|
|
64
|
+
* participant Caller
|
|
65
|
+
* participant Service as MicrosoftOutlookService
|
|
66
|
+
* participant Graph as Microsoft Graph
|
|
67
|
+
* Caller->>Service: sendMail(input)
|
|
68
|
+
* activate Service
|
|
69
|
+
* Service->>Service: requireAccessToken()
|
|
70
|
+
* Service->>Graph: POST /me/sendMail
|
|
71
|
+
* activate Graph
|
|
72
|
+
* Graph-->>Service: 202 Accepted
|
|
73
|
+
* deactivate Graph
|
|
74
|
+
* Service-->>Caller: { sent, to, subject }
|
|
75
|
+
* deactivate Service
|
|
76
|
+
* @memberOf module:integrations/comms/outlook/service
|
|
77
|
+
*/
|
|
78
|
+
export class MicrosoftOutlookService extends HttpApiService {
|
|
79
|
+
constructor() {
|
|
80
|
+
super(...arguments);
|
|
81
|
+
/**
|
|
82
|
+
* @description The provider name used in error messages
|
|
83
|
+
*/
|
|
84
|
+
this.serviceName = "Microsoft Outlook";
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* @description The Microsoft Graph base URL
|
|
88
|
+
* @summary Used when the resolved config carries no `baseUrl`.
|
|
89
|
+
* @returns {string} `"https://graph.microsoft.com/v1.0"`.
|
|
90
|
+
*/
|
|
91
|
+
defaultBaseUrl() {
|
|
92
|
+
return "https://graph.microsoft.com/v1.0";
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* @description Builds the Microsoft Graph bearer authorization headers
|
|
96
|
+
* @summary Returns `Authorization: Bearer <token>` when configured, and no
|
|
97
|
+
* headers otherwise.
|
|
98
|
+
* @param {OutlookServiceConfig} config - The resolved service configuration.
|
|
99
|
+
* @returns {Record<string, string>} The authorization headers (empty without a token).
|
|
100
|
+
*/
|
|
101
|
+
authHeaders(config) {
|
|
102
|
+
return config.token ? { Authorization: `Bearer ${config.token}` } : {};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* @description Reads the Outlook credentials and defaults from the environment
|
|
106
|
+
* @summary Reads the `comms.outlook` slice and returns a partial config when
|
|
107
|
+
* an access token is configured, `undefined` otherwise. Values pass through
|
|
108
|
+
* `envString`/`envNumber` to reject unset-leaf proxies.
|
|
109
|
+
* @returns {Partial<OutlookServiceConfig> | undefined} A partial config, or `undefined` when no Outlook token is configured.
|
|
110
|
+
*/
|
|
111
|
+
configFromEnvironment() {
|
|
112
|
+
const env = CommsEnvironment.comms.outlook;
|
|
113
|
+
const token = envString(env?.token);
|
|
114
|
+
if (!token)
|
|
115
|
+
return undefined;
|
|
116
|
+
return {
|
|
117
|
+
token,
|
|
118
|
+
baseUrl: envString(env.baseUrl),
|
|
119
|
+
timeout: envNumber(env.timeout),
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* @description Asserts that a Microsoft Graph access token is configured
|
|
124
|
+
* @summary Delegates to the shared `requireToken()` guard used by every
|
|
125
|
+
* operation.
|
|
126
|
+
* @returns {void}
|
|
127
|
+
* @throws {InternalError} When the resolved config has no `token`.
|
|
128
|
+
*/
|
|
129
|
+
requireAccessToken() {
|
|
130
|
+
this.requireToken();
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* @description Sends a mail message through Outlook
|
|
134
|
+
* @summary `POST`s the message to `/me/sendMail`; recipients are normalized
|
|
135
|
+
* to Graph envelopes and `saveToSentItems` defaults to `true`.
|
|
136
|
+
* @param {OutlookMailInput} input - The recipients, subject, body, and content options.
|
|
137
|
+
* @returns {Promise<unknown>} `{ sent: true, to, subject }` on success.
|
|
138
|
+
* @throws {InternalError} When no token is configured, or recipients or subject are missing.
|
|
139
|
+
* @throws {BadRequestError} When Graph rejects the request.
|
|
140
|
+
* @example
|
|
141
|
+
* ```ts
|
|
142
|
+
* await outlook.sendMail({
|
|
143
|
+
* to: ["a@example.com", "b@example.com"],
|
|
144
|
+
* subject: "Status",
|
|
145
|
+
* body: "All systems operational",
|
|
146
|
+
* contentType: "Text",
|
|
147
|
+
* });
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
150
|
+
async sendMail(input) {
|
|
151
|
+
this.requireAccessToken();
|
|
152
|
+
if (!input.to || !input.subject) {
|
|
153
|
+
throw new InternalError("Microsoft Outlook sendMail requires recipients and a subject");
|
|
154
|
+
}
|
|
155
|
+
try {
|
|
156
|
+
await this.client.post("/me/sendMail", {
|
|
157
|
+
message: {
|
|
158
|
+
subject: input.subject,
|
|
159
|
+
body: {
|
|
160
|
+
contentType: input.contentType ?? "Text",
|
|
161
|
+
content: input.body ?? "",
|
|
162
|
+
},
|
|
163
|
+
toRecipients: recipientList(input.to),
|
|
164
|
+
...(input.cc ? { ccRecipients: recipientList(input.cc) } : {}),
|
|
165
|
+
...(input.bcc ? { bccRecipients: recipientList(input.bcc) } : {}),
|
|
166
|
+
},
|
|
167
|
+
saveToSentItems: input.saveToSentItems ?? true,
|
|
168
|
+
});
|
|
169
|
+
return { sent: true, to: input.to, subject: input.subject };
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
throw httpError("Microsoft Outlook", "send mail", error);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* @description Lists messages in an Outlook mail folder
|
|
177
|
+
* @summary `GET`s `/me/mailFolders/<folder>/messages` (default `inbox`)
|
|
178
|
+
* applying the optional `$top`, `$filter`, and `$search` parameters.
|
|
179
|
+
* @param {OutlookListInput} [input] - The folder and OData query options.
|
|
180
|
+
* @returns {Promise<unknown>} The Graph message collection.
|
|
181
|
+
* @throws {InternalError} When no token is configured.
|
|
182
|
+
* @throws {NotFoundError} When the folder does not exist (HTTP 404).
|
|
183
|
+
* @throws {BadRequestError} When Graph rejects the query.
|
|
184
|
+
*/
|
|
185
|
+
async listMessages(input = {}) {
|
|
186
|
+
this.requireAccessToken();
|
|
187
|
+
const folder = input.folderId ?? "inbox";
|
|
188
|
+
try {
|
|
189
|
+
const response = await this.client.get(`/me/mailFolders/${encodeURIComponent(folder)}/messages`, {
|
|
190
|
+
params: {
|
|
191
|
+
...(input.top !== undefined ? { $top: input.top } : {}),
|
|
192
|
+
...(input.filter ? { $filter: input.filter } : {}),
|
|
193
|
+
...(input.search ? { $search: input.search } : {}),
|
|
194
|
+
},
|
|
195
|
+
});
|
|
196
|
+
return response.data;
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
throw httpError("Microsoft Outlook", "list messages", error);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* @description Fetches a single Outlook message
|
|
204
|
+
* @summary `GET`s `/me/messages/<id>` and returns the message payload.
|
|
205
|
+
* @param {string} messageId - The Graph message ID.
|
|
206
|
+
* @returns {Promise<unknown>} The message payload.
|
|
207
|
+
* @throws {InternalError} When no token is configured or the message ID is empty.
|
|
208
|
+
* @throws {NotFoundError} When the message does not exist (HTTP 404).
|
|
209
|
+
* @throws {BadRequestError} When Graph rejects the request.
|
|
210
|
+
*/
|
|
211
|
+
async getMessage(messageId) {
|
|
212
|
+
this.requireAccessToken();
|
|
213
|
+
if (!messageId) {
|
|
214
|
+
throw new InternalError("Microsoft Outlook requires a message id");
|
|
215
|
+
}
|
|
216
|
+
try {
|
|
217
|
+
const response = await this.client.get(`/me/messages/${encodeURIComponent(messageId)}`);
|
|
218
|
+
return response.data;
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
throw httpError("Microsoft Outlook", "get message", error);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* @description Lists Outlook calendar events
|
|
226
|
+
* @summary `GET`s `/me/events` applying the optional `$top`, `$filter`, and
|
|
227
|
+
* `$search` parameters; the mail `folderId` is not used.
|
|
228
|
+
* @param {OutlookListInput} [input] - The OData query options.
|
|
229
|
+
* @returns {Promise<unknown>} The Graph event collection.
|
|
230
|
+
* @throws {InternalError} When no token is configured.
|
|
231
|
+
* @throws {BadRequestError} When Graph rejects the query.
|
|
232
|
+
*/
|
|
233
|
+
async listEvents(input = {}) {
|
|
234
|
+
this.requireAccessToken();
|
|
235
|
+
try {
|
|
236
|
+
const response = await this.client.get("/me/events", {
|
|
237
|
+
params: {
|
|
238
|
+
...(input.top !== undefined ? { $top: input.top } : {}),
|
|
239
|
+
...(input.filter ? { $filter: input.filter } : {}),
|
|
240
|
+
...(input.search ? { $search: input.search } : {}),
|
|
241
|
+
},
|
|
242
|
+
});
|
|
243
|
+
return response.data;
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
throw httpError("Microsoft Outlook", "list events", error);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* @description Creates an Outlook calendar event
|
|
251
|
+
* @summary `POST`s the event to `/me/events`; `start`/`end` are sent with the
|
|
252
|
+
* configured or default (`UTC`) time zone and attendees as required.
|
|
253
|
+
* @param {OutlookEventInput} input - The event definition.
|
|
254
|
+
* @returns {Promise<unknown>} The created Graph event.
|
|
255
|
+
* @throws {InternalError} When no token is configured, or subject, start, or end is missing.
|
|
256
|
+
* @throws {BadRequestError} When Graph rejects the event.
|
|
257
|
+
* @example
|
|
258
|
+
* ```ts
|
|
259
|
+
* await outlook.createEvent({
|
|
260
|
+
* subject: "Release review",
|
|
261
|
+
* start: "2026-11-01T09:00:00",
|
|
262
|
+
* end: "2026-11-01T10:00:00",
|
|
263
|
+
* timeZone: "Europe/Lisbon",
|
|
264
|
+
* });
|
|
265
|
+
* ```
|
|
266
|
+
*/
|
|
267
|
+
async createEvent(input) {
|
|
268
|
+
this.requireAccessToken();
|
|
269
|
+
if (!input.subject || !input.start || !input.end) {
|
|
270
|
+
throw new InternalError("Microsoft Outlook createEvent requires subject, start, and end");
|
|
271
|
+
}
|
|
272
|
+
const timeZone = input.timeZone ?? "UTC";
|
|
273
|
+
try {
|
|
274
|
+
const response = await this.client.post("/me/events", {
|
|
275
|
+
subject: input.subject,
|
|
276
|
+
...(input.body
|
|
277
|
+
? { body: { contentType: "Text", content: input.body } }
|
|
278
|
+
: {}),
|
|
279
|
+
start: { dateTime: input.start, timeZone },
|
|
280
|
+
end: { dateTime: input.end, timeZone },
|
|
281
|
+
...(input.location ? { location: { displayName: input.location } } : {}),
|
|
282
|
+
...(input.attendees
|
|
283
|
+
? {
|
|
284
|
+
attendees: recipientList(input.attendees).map((entry) => ({
|
|
285
|
+
emailAddress: entry.emailAddress,
|
|
286
|
+
type: "required",
|
|
287
|
+
})),
|
|
288
|
+
}
|
|
289
|
+
: {}),
|
|
290
|
+
});
|
|
291
|
+
return response.data;
|
|
292
|
+
}
|
|
293
|
+
catch (error) {
|
|
294
|
+
throw httpError("Microsoft Outlook", "create event", error);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* @description Deletes an Outlook calendar event
|
|
299
|
+
* @summary `DELETE`s `/me/events/<id>` and returns `{ deleted: true, eventId }`.
|
|
300
|
+
* @param {string} eventId - The Graph event ID.
|
|
301
|
+
* @returns {Promise<unknown>} `{ deleted: true, eventId }` on success.
|
|
302
|
+
* @throws {InternalError} When no token is configured or the event ID is empty.
|
|
303
|
+
* @throws {NotFoundError} When the event does not exist (HTTP 404).
|
|
304
|
+
* @throws {BadRequestError} When Graph rejects the request.
|
|
305
|
+
*/
|
|
306
|
+
async deleteEvent(eventId) {
|
|
307
|
+
this.requireAccessToken();
|
|
308
|
+
if (!eventId) {
|
|
309
|
+
throw new InternalError("Microsoft Outlook requires an event id");
|
|
310
|
+
}
|
|
311
|
+
try {
|
|
312
|
+
await this.client.delete(`/me/events/${encodeURIComponent(eventId)}`);
|
|
313
|
+
return { deleted: true, eventId };
|
|
314
|
+
}
|
|
315
|
+
catch (error) {
|
|
316
|
+
throw httpError("Microsoft Outlook", "delete event", error);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=MicrosoftOutlookService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MicrosoftOutlookService.js","sourceRoot":"","sources":["../../../../src/comms/outlook/MicrosoftOutlookService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/comms/outlook/index.ts"],"names":[],"mappings":"AAAA,6CAA0C"}
|