@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,258 @@
|
|
|
1
|
+
import { HttpApiService, type HttpApiServiceConfig } from "../../shared/http/index.d.mts";
|
|
2
|
+
/**
|
|
3
|
+
* @description Configuration for the WhatsApp service
|
|
4
|
+
* @summary Extends {@link HttpApiServiceConfig} with the Meta access token
|
|
5
|
+
* (sent as a bearer token) and the sender `phoneNumberId` used in the
|
|
6
|
+
* `/messages` path. When omitted, the `comms.whatsApp` environment slice
|
|
7
|
+
* supplies both (plus optional `baseUrl`/`timeout`). Both values are
|
|
8
|
+
* credential references, never literals in source.
|
|
9
|
+
* @category Comms
|
|
10
|
+
* @memberOf module:integrations/comms/whatsapp/service
|
|
11
|
+
*/
|
|
12
|
+
export interface WhatsAppServiceConfig extends HttpApiServiceConfig {
|
|
13
|
+
/**
|
|
14
|
+
* @description Meta WhatsApp Cloud API access token
|
|
15
|
+
* @summary Sent as `Authorization: Bearer <token>` with every API call.
|
|
16
|
+
*/
|
|
17
|
+
token?: string;
|
|
18
|
+
/**
|
|
19
|
+
* @description Sender phone number ID used in the messages path
|
|
20
|
+
*/
|
|
21
|
+
phoneNumberId?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* @description Input for sending a WhatsApp text message
|
|
25
|
+
* @summary Carries the recipient (`to`, E.164 digits without `+`), the text
|
|
26
|
+
* body, and whether link previews are generated.
|
|
27
|
+
* @category Comms
|
|
28
|
+
* @memberOf module:integrations/comms/whatsapp/service
|
|
29
|
+
*/
|
|
30
|
+
export interface WhatsAppTextInput {
|
|
31
|
+
/**
|
|
32
|
+
* @description Recipient phone number in international format
|
|
33
|
+
*/
|
|
34
|
+
to: string;
|
|
35
|
+
/**
|
|
36
|
+
* @description Text message body
|
|
37
|
+
*/
|
|
38
|
+
text: string;
|
|
39
|
+
/**
|
|
40
|
+
* @description Whether WhatsApp generates a link preview
|
|
41
|
+
*/
|
|
42
|
+
previewUrl?: boolean;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* @description Input for sending a WhatsApp template message
|
|
46
|
+
* @summary Carries the recipient, the approved `templateName`, its
|
|
47
|
+
* `languageCode`, and optional template `components`.
|
|
48
|
+
* @category Comms
|
|
49
|
+
* @memberOf module:integrations/comms/whatsapp/service
|
|
50
|
+
*/
|
|
51
|
+
export interface WhatsAppTemplateInput {
|
|
52
|
+
/**
|
|
53
|
+
* @description Recipient phone number in international format
|
|
54
|
+
*/
|
|
55
|
+
to: string;
|
|
56
|
+
/**
|
|
57
|
+
* @description Name of the approved message template
|
|
58
|
+
*/
|
|
59
|
+
templateName: string;
|
|
60
|
+
/**
|
|
61
|
+
* @description Template language code (e.g. `"en_US"`)
|
|
62
|
+
*/
|
|
63
|
+
languageCode: string;
|
|
64
|
+
/**
|
|
65
|
+
* @description Optional template components (header/body/button parameters)
|
|
66
|
+
*/
|
|
67
|
+
components?: unknown[];
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* @description Supported WhatsApp media message types
|
|
71
|
+
* @summary The media kinds the Cloud API accepts in the message `type` field.
|
|
72
|
+
* @category Comms
|
|
73
|
+
* @memberOf module:integrations/comms/whatsapp/service
|
|
74
|
+
*/
|
|
75
|
+
export type WhatsAppMediaType = "image" | "audio" | "video" | "document";
|
|
76
|
+
/**
|
|
77
|
+
* @description Input for sending a WhatsApp media message
|
|
78
|
+
* @summary Carries the recipient, the media `type`, and either a previously
|
|
79
|
+
* uploaded `mediaId` or a public `link` (one is required), plus an optional
|
|
80
|
+
* `caption` and `filename`.
|
|
81
|
+
* @category Comms
|
|
82
|
+
* @memberOf module:integrations/comms/whatsapp/service
|
|
83
|
+
*/
|
|
84
|
+
export interface WhatsAppMediaInput {
|
|
85
|
+
/**
|
|
86
|
+
* @description Recipient phone number in international format
|
|
87
|
+
*/
|
|
88
|
+
to: string;
|
|
89
|
+
/**
|
|
90
|
+
* @description Media kind sent in the message `type` field
|
|
91
|
+
*/
|
|
92
|
+
type: WhatsAppMediaType;
|
|
93
|
+
/**
|
|
94
|
+
* @description ID of previously uploaded WhatsApp media
|
|
95
|
+
*/
|
|
96
|
+
mediaId?: string;
|
|
97
|
+
/**
|
|
98
|
+
* @description Public URL of the media (alternative to `mediaId`)
|
|
99
|
+
*/
|
|
100
|
+
link?: string;
|
|
101
|
+
/**
|
|
102
|
+
* @description Optional caption (images, videos, documents)
|
|
103
|
+
*/
|
|
104
|
+
caption?: string;
|
|
105
|
+
/**
|
|
106
|
+
* @description Optional filename (documents)
|
|
107
|
+
*/
|
|
108
|
+
filename?: string;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* @description Input for marking a WhatsApp message as read
|
|
112
|
+
* @summary Carries the inbound `messageId` to acknowledge.
|
|
113
|
+
* @category Comms
|
|
114
|
+
* @memberOf module:integrations/comms/whatsapp/service
|
|
115
|
+
*/
|
|
116
|
+
export interface WhatsAppReadInput {
|
|
117
|
+
/**
|
|
118
|
+
* @description ID of the inbound message to mark read
|
|
119
|
+
*/
|
|
120
|
+
messageId: string;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* @description WhatsApp Cloud API integration service
|
|
124
|
+
* @summary An undecorated HTTP service for text, template, and media
|
|
125
|
+
* messages, read receipts, and media metadata. Every message operation needs
|
|
126
|
+
* both the access token and the sender phone number ID; missing credentials or
|
|
127
|
+
* identifiers raise `InternalError`, and transport failures are mapped to decaf
|
|
128
|
+
* errors via {@link httpError}.
|
|
129
|
+
* @class WhatsAppService
|
|
130
|
+
* @extends HttpApiService
|
|
131
|
+
* @category Comms
|
|
132
|
+
* @example
|
|
133
|
+
* ```ts
|
|
134
|
+
* import { WhatsAppService } from "@decaf-ts/integrations/comms/whatsapp";
|
|
135
|
+
*
|
|
136
|
+
* const whatsapp = new WhatsAppService();
|
|
137
|
+
* await whatsapp.initialize({
|
|
138
|
+
* token: process.env.GRAPH_CREDENTIAL_WHATSAPP_TOKEN,
|
|
139
|
+
* phoneNumberId: process.env.WHATSAPP_PHONE_NUMBER_ID,
|
|
140
|
+
* });
|
|
141
|
+
* await whatsapp.sendText({ to: "15551234567", text: "Hello" });
|
|
142
|
+
* ```
|
|
143
|
+
* @mermaid
|
|
144
|
+
* sequenceDiagram
|
|
145
|
+
* autonumber
|
|
146
|
+
* participant Caller
|
|
147
|
+
* participant Service as WhatsAppService
|
|
148
|
+
* participant Graph as WhatsApp Cloud API
|
|
149
|
+
* Caller->>Service: sendText(input)
|
|
150
|
+
* activate Service
|
|
151
|
+
* Service->>Service: requireTokenAndPhone()
|
|
152
|
+
* Service->>Graph: POST /{phoneNumberId}/messages
|
|
153
|
+
* activate Graph
|
|
154
|
+
* Graph-->>Service: message payload
|
|
155
|
+
* deactivate Graph
|
|
156
|
+
* Service-->>Caller: message payload
|
|
157
|
+
* deactivate Service
|
|
158
|
+
* @memberOf module:integrations/comms/whatsapp/service
|
|
159
|
+
*/
|
|
160
|
+
export declare class WhatsAppService extends HttpApiService<WhatsAppServiceConfig> {
|
|
161
|
+
/**
|
|
162
|
+
* @description The provider name used in error messages
|
|
163
|
+
*/
|
|
164
|
+
protected readonly serviceName = "WhatsApp";
|
|
165
|
+
/**
|
|
166
|
+
* @description The WhatsApp Cloud API base URL
|
|
167
|
+
* @summary Used when the resolved config carries no `baseUrl`.
|
|
168
|
+
* @returns {string} `"https://graph.facebook.com/v19.0"`.
|
|
169
|
+
*/
|
|
170
|
+
protected defaultBaseUrl(): string;
|
|
171
|
+
/**
|
|
172
|
+
* @description Builds the WhatsApp bearer authorization headers
|
|
173
|
+
* @summary Returns `Authorization: Bearer <token>` when configured, and no
|
|
174
|
+
* headers otherwise.
|
|
175
|
+
* @param {WhatsAppServiceConfig} config - The resolved service configuration.
|
|
176
|
+
* @returns {Record<string, string>} The authorization headers (empty without a token).
|
|
177
|
+
*/
|
|
178
|
+
protected authHeaders(config: WhatsAppServiceConfig): Record<string, string>;
|
|
179
|
+
/**
|
|
180
|
+
* @description Reads the WhatsApp credentials and defaults from the environment
|
|
181
|
+
* @summary Reads the `comms.whatsApp` slice and returns a partial config
|
|
182
|
+
* when a token or phone number ID is configured, `undefined` otherwise.
|
|
183
|
+
* Values pass through `envString`/`envNumber` to reject unset-leaf proxies.
|
|
184
|
+
* @returns {Partial<WhatsAppServiceConfig> | undefined} A partial config, or `undefined` when neither credential is configured.
|
|
185
|
+
*/
|
|
186
|
+
protected configFromEnvironment(): Partial<WhatsAppServiceConfig> | undefined;
|
|
187
|
+
/**
|
|
188
|
+
* @description Asserts the access token and sender phone number ID
|
|
189
|
+
* @summary Calls `requireToken()` and returns the configured
|
|
190
|
+
* `phoneNumberId` used to build the messages path.
|
|
191
|
+
* @returns {string} The configured sender phone number ID.
|
|
192
|
+
* @throws {InternalError} When no token or phone number ID is configured.
|
|
193
|
+
*/
|
|
194
|
+
protected requireTokenAndPhone(): string;
|
|
195
|
+
/**
|
|
196
|
+
* @description Builds the encoded messages path for a sender
|
|
197
|
+
* @summary Encodes the phone number ID into `/<id>/messages`.
|
|
198
|
+
* @param {string} phoneNumberId - The sender phone number ID.
|
|
199
|
+
* @returns {string} The messages API path.
|
|
200
|
+
*/
|
|
201
|
+
private messagesPath;
|
|
202
|
+
/**
|
|
203
|
+
* @description Sends a WhatsApp text message
|
|
204
|
+
* @summary `POST`s a `text` message to the sender's `/messages` endpoint
|
|
205
|
+
* and returns the WhatsApp message payload.
|
|
206
|
+
* @param {WhatsAppTextInput} input - The recipient, text, and preview flag.
|
|
207
|
+
* @returns {Promise<unknown>} The WhatsApp message payload.
|
|
208
|
+
* @throws {InternalError} When credentials or the phone number ID are missing.
|
|
209
|
+
* @throws {BadRequestError} When WhatsApp rejects the message.
|
|
210
|
+
* @example
|
|
211
|
+
* ```ts
|
|
212
|
+
* await whatsapp.sendText({ to: "15551234567", text: "Deployment finished" });
|
|
213
|
+
* ```
|
|
214
|
+
*/
|
|
215
|
+
sendText(input: WhatsAppTextInput): Promise<unknown>;
|
|
216
|
+
/**
|
|
217
|
+
* @description Sends a WhatsApp template message
|
|
218
|
+
* @summary `POST`s a `template` message referencing an approved template
|
|
219
|
+
* name and language, with optional components.
|
|
220
|
+
* @param {WhatsAppTemplateInput} input - The recipient and template definition.
|
|
221
|
+
* @returns {Promise<unknown>} The WhatsApp message payload.
|
|
222
|
+
* @throws {InternalError} When credentials or the phone number ID are missing.
|
|
223
|
+
* @throws {BadRequestError} When WhatsApp rejects the template message.
|
|
224
|
+
*/
|
|
225
|
+
sendTemplate(input: WhatsAppTemplateInput): Promise<unknown>;
|
|
226
|
+
/**
|
|
227
|
+
* @description Sends a WhatsApp media message
|
|
228
|
+
* @summary `POST`s an `image`/`audio`/`video`/`document` message using
|
|
229
|
+
* either an uploaded `mediaId` or a public `link`, with optional caption and
|
|
230
|
+
* filename.
|
|
231
|
+
* @param {WhatsAppMediaInput} input - The recipient and media reference.
|
|
232
|
+
* @returns {Promise<unknown>} The WhatsApp message payload.
|
|
233
|
+
* @throws {InternalError} When credentials or the phone number ID are missing, or neither `mediaId` nor `link` is provided.
|
|
234
|
+
* @throws {BadRequestError} When WhatsApp rejects the media message.
|
|
235
|
+
*/
|
|
236
|
+
sendMedia(input: WhatsAppMediaInput): Promise<unknown>;
|
|
237
|
+
/**
|
|
238
|
+
* @description Marks an inbound WhatsApp message as read
|
|
239
|
+
* @summary `POST`s a `read` status for the message to the sender's
|
|
240
|
+
* `/messages` endpoint.
|
|
241
|
+
* @param {WhatsAppReadInput} input - The inbound message ID to acknowledge.
|
|
242
|
+
* @returns {Promise<unknown>} The WhatsApp status payload.
|
|
243
|
+
* @throws {InternalError} When credentials, the phone number ID, or the message ID are missing.
|
|
244
|
+
* @throws {BadRequestError} When WhatsApp rejects the request.
|
|
245
|
+
*/
|
|
246
|
+
markAsRead(input: WhatsAppReadInput): Promise<unknown>;
|
|
247
|
+
/**
|
|
248
|
+
* @description Fetches WhatsApp media metadata
|
|
249
|
+
* @summary `GET`s the media descriptor (URL, MIME type, size) by media ID;
|
|
250
|
+
* the descriptor's URL is then used to download the binary.
|
|
251
|
+
* @param {string} mediaId - The WhatsApp media ID.
|
|
252
|
+
* @returns {Promise<unknown>} The media metadata payload.
|
|
253
|
+
* @throws {InternalError} When no token is configured or the media ID is empty.
|
|
254
|
+
* @throws {NotFoundError} When the media does not exist (HTTP 404).
|
|
255
|
+
* @throws {BadRequestError} When WhatsApp rejects the request.
|
|
256
|
+
*/
|
|
257
|
+
getMedia(mediaId: string): Promise<unknown>;
|
|
258
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./WhatsAppService.d.cts";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./WhatsAppService.d.mts";
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/devops/environment
|
|
3
|
+
* @summary Environment contract and accumulated environment for the devops integration services.
|
|
4
|
+
* @description Declares the `DevopsEnvironmentShape` consumed by the GitHub and
|
|
5
|
+
* GitLab services' `configFromEnvironment()` implementations and the
|
|
6
|
+
* `DevopsEnvironment` singleton created via `LoggedEnvironment.accumulate`.
|
|
7
|
+
* Services read their credentials and defaults from the matching
|
|
8
|
+
* `devops.<provider>` slice, using the `envString`/`envNumber` helpers from
|
|
9
|
+
* `shared/environmentValue` to reject unset-leaf proxies.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* @description Environment shape for the devops integration services
|
|
13
|
+
* @summary Defines the `devops` root with one slice per provider (`github`,
|
|
14
|
+
* `gitlab`). Each slice carries the provider's required `token` and defaults
|
|
15
|
+
* (`owner`/`repo` for GitHub, `projectId` for GitLab) plus an optional
|
|
16
|
+
* `baseUrl` override and `timeout`. Fields are typed as required here so
|
|
17
|
+
* `LoggedEnvironment.accumulate` registers them; absent values resolve to
|
|
18
|
+
* proxy placeholders at runtime and must pass through `envString`/`envNumber`.
|
|
19
|
+
* @memberOf module:integrations/devops/environment
|
|
20
|
+
*/
|
|
21
|
+
export interface DevopsEnvironmentShape {
|
|
22
|
+
devops: {
|
|
23
|
+
github: {
|
|
24
|
+
token: string;
|
|
25
|
+
baseUrl: string;
|
|
26
|
+
owner: string;
|
|
27
|
+
repo: string;
|
|
28
|
+
timeout?: number;
|
|
29
|
+
};
|
|
30
|
+
gitlab: {
|
|
31
|
+
token: string;
|
|
32
|
+
baseUrl: string;
|
|
33
|
+
projectId: string;
|
|
34
|
+
timeout?: number;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* @description Accumulated devops environment singleton
|
|
40
|
+
* @summary The `LoggedEnvironment.accumulate`-registered instance backing the
|
|
41
|
+
* `DevopsEnvironmentShape` contract. Devops services read their provider
|
|
42
|
+
* slice (e.g. `DevopsEnvironment.devops.github`) inside
|
|
43
|
+
* `configFromEnvironment()` and translate it into an
|
|
44
|
+
* `HttpApiServiceConfig`-derived config. Credentials come from environment
|
|
45
|
+
* variables; for as-graph node usage those are provided as
|
|
46
|
+
* `GRAPH_CREDENTIAL_*` values (placeholders in this example).
|
|
47
|
+
* @example
|
|
48
|
+
* ```ts
|
|
49
|
+
* import { GithubService } from "@decaf-ts/integrations/devops/github";
|
|
50
|
+
*
|
|
51
|
+
* // with devops.github.token / devops.github.owner / devops.github.repo configured
|
|
52
|
+
* const github = new GithubService();
|
|
53
|
+
* await github.initialize();
|
|
54
|
+
* ```
|
|
55
|
+
* @constant {LoggedEnvironment} DevopsEnvironment
|
|
56
|
+
* @memberOf module:integrations/devops/environment
|
|
57
|
+
*/
|
|
58
|
+
export declare const DevopsEnvironment: import("@decaf-ts/logging").AccumulatedEnvironment<{
|
|
59
|
+
app: string | undefined;
|
|
60
|
+
} & import("@decaf-ts/logging").LoggingConfig<object> & {
|
|
61
|
+
env: any;
|
|
62
|
+
} & DevopsEnvironmentShape>;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/devops/environment
|
|
3
|
+
* @summary Environment contract and accumulated environment for the devops integration services.
|
|
4
|
+
* @description Declares the `DevopsEnvironmentShape` consumed by the GitHub and
|
|
5
|
+
* GitLab services' `configFromEnvironment()` implementations and the
|
|
6
|
+
* `DevopsEnvironment` singleton created via `LoggedEnvironment.accumulate`.
|
|
7
|
+
* Services read their credentials and defaults from the matching
|
|
8
|
+
* `devops.<provider>` slice, using the `envString`/`envNumber` helpers from
|
|
9
|
+
* `shared/environmentValue` to reject unset-leaf proxies.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* @description Environment shape for the devops integration services
|
|
13
|
+
* @summary Defines the `devops` root with one slice per provider (`github`,
|
|
14
|
+
* `gitlab`). Each slice carries the provider's required `token` and defaults
|
|
15
|
+
* (`owner`/`repo` for GitHub, `projectId` for GitLab) plus an optional
|
|
16
|
+
* `baseUrl` override and `timeout`. Fields are typed as required here so
|
|
17
|
+
* `LoggedEnvironment.accumulate` registers them; absent values resolve to
|
|
18
|
+
* proxy placeholders at runtime and must pass through `envString`/`envNumber`.
|
|
19
|
+
* @memberOf module:integrations/devops/environment
|
|
20
|
+
*/
|
|
21
|
+
export interface DevopsEnvironmentShape {
|
|
22
|
+
devops: {
|
|
23
|
+
github: {
|
|
24
|
+
token: string;
|
|
25
|
+
baseUrl: string;
|
|
26
|
+
owner: string;
|
|
27
|
+
repo: string;
|
|
28
|
+
timeout?: number;
|
|
29
|
+
};
|
|
30
|
+
gitlab: {
|
|
31
|
+
token: string;
|
|
32
|
+
baseUrl: string;
|
|
33
|
+
projectId: string;
|
|
34
|
+
timeout?: number;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* @description Accumulated devops environment singleton
|
|
40
|
+
* @summary The `LoggedEnvironment.accumulate`-registered instance backing the
|
|
41
|
+
* `DevopsEnvironmentShape` contract. Devops services read their provider
|
|
42
|
+
* slice (e.g. `DevopsEnvironment.devops.github`) inside
|
|
43
|
+
* `configFromEnvironment()` and translate it into an
|
|
44
|
+
* `HttpApiServiceConfig`-derived config. Credentials come from environment
|
|
45
|
+
* variables; for as-graph node usage those are provided as
|
|
46
|
+
* `GRAPH_CREDENTIAL_*` values (placeholders in this example).
|
|
47
|
+
* @example
|
|
48
|
+
* ```ts
|
|
49
|
+
* import { GithubService } from "@decaf-ts/integrations/devops/github";
|
|
50
|
+
*
|
|
51
|
+
* // with devops.github.token / devops.github.owner / devops.github.repo configured
|
|
52
|
+
* const github = new GithubService();
|
|
53
|
+
* await github.initialize();
|
|
54
|
+
* ```
|
|
55
|
+
* @constant {LoggedEnvironment} DevopsEnvironment
|
|
56
|
+
* @memberOf module:integrations/devops/environment
|
|
57
|
+
*/
|
|
58
|
+
export declare const DevopsEnvironment: import("@decaf-ts/logging").AccumulatedEnvironment<{
|
|
59
|
+
app: string | undefined;
|
|
60
|
+
} & import("@decaf-ts/logging").LoggingConfig<object> & {
|
|
61
|
+
env: any;
|
|
62
|
+
} & DevopsEnvironmentShape>;
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
import { HttpApiService, type HttpApiServiceConfig } from "../../shared/http/index.d.cts";
|
|
2
|
+
/**
|
|
3
|
+
* @description Configuration for the GitHub service
|
|
4
|
+
* @summary Extends {@link HttpApiServiceConfig} with the GitHub personal
|
|
5
|
+
* access token (sent as a bearer token with the GitHub API version headers)
|
|
6
|
+
* and the default `owner`/`repo` used when a call does not override them.
|
|
7
|
+
* When omitted, the `devops.github` environment slice supplies the token
|
|
8
|
+
* (and optional `owner`, `repo`, `baseUrl`, `timeout`).
|
|
9
|
+
* @category DevOps
|
|
10
|
+
* @memberOf module:integrations/devops/github/service
|
|
11
|
+
*/
|
|
12
|
+
export interface GithubServiceConfig extends HttpApiServiceConfig {
|
|
13
|
+
/**
|
|
14
|
+
* @description GitHub personal access token
|
|
15
|
+
* @summary Sent as `Authorization: Bearer <token>` with every API call.
|
|
16
|
+
*/
|
|
17
|
+
token?: string;
|
|
18
|
+
/**
|
|
19
|
+
* @description Default repository owner used when a call does not override it
|
|
20
|
+
*/
|
|
21
|
+
owner?: string;
|
|
22
|
+
/**
|
|
23
|
+
* @description Default repository name used when a call does not override it
|
|
24
|
+
*/
|
|
25
|
+
repo?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* @description Repository targeting reference
|
|
29
|
+
* @summary Carries the optional `owner`/`repo` override for a single call;
|
|
30
|
+
* when either field is omitted the service falls back to the configured
|
|
31
|
+
* `GithubServiceConfig.owner`/`repo`. Operations that cannot resolve both
|
|
32
|
+
* values throw `InternalError`.
|
|
33
|
+
* @category DevOps
|
|
34
|
+
* @memberOf module:integrations/devops/github/service
|
|
35
|
+
*/
|
|
36
|
+
export interface GithubRepositoryRef {
|
|
37
|
+
/**
|
|
38
|
+
* @description Repository owner for this call
|
|
39
|
+
*/
|
|
40
|
+
owner?: string;
|
|
41
|
+
/**
|
|
42
|
+
* @description Repository name for this call
|
|
43
|
+
*/
|
|
44
|
+
repo?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* @description Input for creating a GitHub issue
|
|
48
|
+
* @summary Extends {@link GithubRepositoryRef} with the required issue
|
|
49
|
+
* `title` and the optional body, labels, assignees, and milestone number.
|
|
50
|
+
* @category DevOps
|
|
51
|
+
* @memberOf module:integrations/devops/github/service
|
|
52
|
+
*/
|
|
53
|
+
export interface GithubIssueInput extends GithubRepositoryRef {
|
|
54
|
+
/**
|
|
55
|
+
* @description Issue title (required by the GitHub API)
|
|
56
|
+
*/
|
|
57
|
+
title: string;
|
|
58
|
+
/**
|
|
59
|
+
* @description Issue body in markdown
|
|
60
|
+
*/
|
|
61
|
+
body?: string;
|
|
62
|
+
/**
|
|
63
|
+
* @description Label names to apply
|
|
64
|
+
*/
|
|
65
|
+
labels?: string[];
|
|
66
|
+
/**
|
|
67
|
+
* @description Usernames to assign
|
|
68
|
+
*/
|
|
69
|
+
assignees?: string[];
|
|
70
|
+
/**
|
|
71
|
+
* @description Milestone number to associate
|
|
72
|
+
*/
|
|
73
|
+
milestone?: number;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* @description Normalized GitHub issue descriptor
|
|
77
|
+
* @summary Maps the raw GitHub issue payload onto camelCase fields: identity
|
|
78
|
+
* (`number`, `title`, `state`), `htmlUrl`, body and author, `labels` (label
|
|
79
|
+
* names only), `comments` count, and `createdAt`/`updatedAt` timestamps.
|
|
80
|
+
* Pull requests returned by the issues endpoint are filtered out.
|
|
81
|
+
* @category DevOps
|
|
82
|
+
* @memberOf module:integrations/devops/github/service
|
|
83
|
+
*/
|
|
84
|
+
export interface GithubIssue extends GithubRepositoryRef {
|
|
85
|
+
number: number;
|
|
86
|
+
title: string;
|
|
87
|
+
state?: string;
|
|
88
|
+
htmlUrl?: string;
|
|
89
|
+
body?: string;
|
|
90
|
+
user?: string;
|
|
91
|
+
labels?: string[];
|
|
92
|
+
comments?: number;
|
|
93
|
+
createdAt?: string;
|
|
94
|
+
updatedAt?: string;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* @description Options for listing GitHub issues or pull requests
|
|
98
|
+
* @summary Extends {@link GithubRepositoryRef} with the issue/PR `state`
|
|
99
|
+
* filter, a page size (`limit`) and `page` number for paging, and a
|
|
100
|
+
* comma-separated `labels` filter applied to issue listings.
|
|
101
|
+
* @category DevOps
|
|
102
|
+
* @memberOf module:integrations/devops/github/service
|
|
103
|
+
*/
|
|
104
|
+
export interface GithubListOptions extends GithubRepositoryRef {
|
|
105
|
+
/**
|
|
106
|
+
* @description Issue/PR state filter
|
|
107
|
+
*/
|
|
108
|
+
state?: "open" | "closed" | "all";
|
|
109
|
+
/**
|
|
110
|
+
* @description Page size (GitHub's `per_page`); defaults to `30`
|
|
111
|
+
*/
|
|
112
|
+
limit?: number;
|
|
113
|
+
/**
|
|
114
|
+
* @description Page number to request
|
|
115
|
+
*/
|
|
116
|
+
page?: number;
|
|
117
|
+
/**
|
|
118
|
+
* @description Comma-separated label names to filter issues by
|
|
119
|
+
*/
|
|
120
|
+
labels?: string;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* @description GitHub REST API integration service
|
|
124
|
+
* @summary An undecorated HTTP service for looking up
|
|
125
|
+
* repositories, listing issues (excluding pull requests), creating issues,
|
|
126
|
+
* commenting on issues, and listing pull requests. Repository targets resolve
|
|
127
|
+
* per call from the input's `owner`/`repo`, falling back to the configured
|
|
128
|
+
* config values, and throw `InternalError` when unresolved. The token is sent
|
|
129
|
+
* as a bearer token with the GitHub `Accept` and API-version headers, and
|
|
130
|
+
* transport failures are mapped to decaf errors via {@link httpError}.
|
|
131
|
+
* @class GithubService
|
|
132
|
+
* @category DevOps
|
|
133
|
+
* @example
|
|
134
|
+
* ```ts
|
|
135
|
+
* import { GithubService } from "@decaf-ts/integrations/devops/github";
|
|
136
|
+
*
|
|
137
|
+
* const github = new GithubService();
|
|
138
|
+
* await github.initialize({
|
|
139
|
+
* token: process.env.GRAPH_CREDENTIAL_GITHUB_TOKEN,
|
|
140
|
+
* owner: "example-org",
|
|
141
|
+
* repo: "example-repo",
|
|
142
|
+
* });
|
|
143
|
+
* const issue = await github.createIssue({
|
|
144
|
+
* title: "Bug report",
|
|
145
|
+
* body: "Something is broken",
|
|
146
|
+
* labels: ["bug"],
|
|
147
|
+
* });
|
|
148
|
+
* ```
|
|
149
|
+
* @memberOf module:integrations/devops/github/service
|
|
150
|
+
*/
|
|
151
|
+
export declare class GithubService extends HttpApiService<GithubServiceConfig> {
|
|
152
|
+
/**
|
|
153
|
+
* @description The provider name used in error messages
|
|
154
|
+
*/
|
|
155
|
+
protected readonly serviceName = "GitHub";
|
|
156
|
+
/**
|
|
157
|
+
* @description The GitHub REST API base URL
|
|
158
|
+
* @summary Used when the resolved config carries no `baseUrl`.
|
|
159
|
+
* @returns {string} `"https://api.github.com"`.
|
|
160
|
+
*/
|
|
161
|
+
protected defaultBaseUrl(): string;
|
|
162
|
+
/**
|
|
163
|
+
* @description Builds the GitHub authentication and API version headers
|
|
164
|
+
* @summary Returns `Authorization: Bearer <token>`, the GitHub JSON
|
|
165
|
+
* `Accept` header, and the `X-GitHub-Api-Version` header when the config
|
|
166
|
+
* carries a token; without a token only the `Accept` headers are sent.
|
|
167
|
+
* @param {GithubServiceConfig} config - The resolved service configuration.
|
|
168
|
+
* @returns {Record<string, string>} The authorization and version headers.
|
|
169
|
+
*/
|
|
170
|
+
protected authHeaders(config: GithubServiceConfig): Record<string, string>;
|
|
171
|
+
/**
|
|
172
|
+
* @description Reads the GitHub credentials and defaults from the environment
|
|
173
|
+
* @summary Reads the `devops.github` environment slice and returns a
|
|
174
|
+
* partial config when a token is configured, `undefined` otherwise. Values
|
|
175
|
+
* pass through `envString`/`envNumber` to reject unset-leaf proxies.
|
|
176
|
+
* @returns {Partial<GithubServiceConfig> | undefined} A partial config, or `undefined` when no GitHub token is configured.
|
|
177
|
+
*/
|
|
178
|
+
protected configFromEnvironment(): Partial<GithubServiceConfig> | undefined;
|
|
179
|
+
/**
|
|
180
|
+
* @description Resolves the URL-encoded repository path for a call
|
|
181
|
+
* @summary Builds `/repos/<owner>/<repo>` from the input's `owner`/`repo`,
|
|
182
|
+
* falling back to the configured config values, and throws when either
|
|
183
|
+
* value is missing.
|
|
184
|
+
* @param {GithubRepositoryRef} [input] - The per-call repository override.
|
|
185
|
+
* @returns {string} The URL-encoded repository API path.
|
|
186
|
+
* @throws {InternalError} When neither the input nor the config yields an owner and repository.
|
|
187
|
+
*/
|
|
188
|
+
protected repoPath(input?: GithubRepositoryRef): string;
|
|
189
|
+
/**
|
|
190
|
+
* @description Normalizes a raw GitHub issue payload
|
|
191
|
+
* @summary Maps the raw issue JSON onto a {@link GithubIssue}: label objects
|
|
192
|
+
* are reduced to names, the author to its `login`, and numeric/string
|
|
193
|
+
* fields are coerced. The repository reference is echoed from the input,
|
|
194
|
+
* falling back to the configured `owner`/`repo`.
|
|
195
|
+
* @param {Record<string, unknown>} raw - The raw GitHub issue payload.
|
|
196
|
+
* @param {GithubRepositoryRef} ref - The repository reference the issue belongs to.
|
|
197
|
+
* @returns {GithubIssue} The normalized issue descriptor.
|
|
198
|
+
*/
|
|
199
|
+
protected mapIssue(raw: Record<string, unknown>, ref: GithubRepositoryRef): GithubIssue;
|
|
200
|
+
/**
|
|
201
|
+
* @description Fetches a GitHub repository
|
|
202
|
+
* @summary `GET`s `/repos/<owner>/<repo>` for the given reference (falling
|
|
203
|
+
* back to the configured `owner`/`repo`) and returns the raw repository
|
|
204
|
+
* payload.
|
|
205
|
+
* @param {GithubRepositoryRef} [ref] - The repository to look up; defaults to the configured `owner`/`repo`.
|
|
206
|
+
* @returns {Promise<unknown>} The raw GitHub repository payload.
|
|
207
|
+
* @throws {InternalError} When the repository reference cannot be resolved.
|
|
208
|
+
* @throws {NotFoundError} When the repository does not exist (HTTP 404).
|
|
209
|
+
* @throws {ConflictError} When GitHub answers with HTTP 409.
|
|
210
|
+
* @throws {BadRequestError} When GitHub answers with any other HTTP error status.
|
|
211
|
+
*/
|
|
212
|
+
getRepository(ref?: GithubRepositoryRef): Promise<unknown>;
|
|
213
|
+
/**
|
|
214
|
+
* @description Lists GitHub issues with state, label, and page filtering
|
|
215
|
+
* @summary `GET`s `/repos/<owner>/<repo>/issues` with a `state` filter
|
|
216
|
+
* (default `"open"`), a page size (`per_page`, default `30`), a page
|
|
217
|
+
* number, and a comma-separated `labels` filter. Entries carrying a
|
|
218
|
+
* `pull_request` key are filtered out so only true issues are returned.
|
|
219
|
+
* @param {GithubListOptions} [options] - Repository override, state, paging, and label options.
|
|
220
|
+
* @returns {Promise<GithubIssue[]>} The normalized issues for the requested page.
|
|
221
|
+
* @throws {InternalError} When the repository reference cannot be resolved.
|
|
222
|
+
* @throws {NotFoundError} When the repository does not exist (HTTP 404).
|
|
223
|
+
* @throws {ConflictError} When GitHub answers with HTTP 409.
|
|
224
|
+
* @throws {BadRequestError} When GitHub answers with any other HTTP error status.
|
|
225
|
+
* @example
|
|
226
|
+
* ```ts
|
|
227
|
+
* let page = 1;
|
|
228
|
+
* for (;;) {
|
|
229
|
+
* const issues = await github.listIssues({
|
|
230
|
+
* state: "open",
|
|
231
|
+
* labels: "bug,priority:high",
|
|
232
|
+
* limit: 50,
|
|
233
|
+
* page,
|
|
234
|
+
* });
|
|
235
|
+
* if (issues.length === 0) break;
|
|
236
|
+
* page += 1;
|
|
237
|
+
* }
|
|
238
|
+
* ```
|
|
239
|
+
*/
|
|
240
|
+
listIssues(options?: GithubListOptions): Promise<GithubIssue[]>;
|
|
241
|
+
/**
|
|
242
|
+
* @description Creates a GitHub issue
|
|
243
|
+
* @summary `POST`s the title, body, labels, assignees, and milestone to
|
|
244
|
+
* `/repos/<owner>/<repo>/issues` and returns the normalized issue
|
|
245
|
+
* descriptor. Requires a non-empty `title` and a resolvable repository
|
|
246
|
+
* reference.
|
|
247
|
+
* @param {GithubIssueInput} input - The issue content and repository targeting.
|
|
248
|
+
* @returns {Promise<GithubIssue>} The normalized created issue.
|
|
249
|
+
* @throws {InternalError} When the title is empty or the repository reference cannot be resolved.
|
|
250
|
+
* @throws {NotFoundError} When the repository does not exist (HTTP 404).
|
|
251
|
+
* @throws {ConflictError} When GitHub answers with HTTP 409.
|
|
252
|
+
* @throws {BadRequestError} When GitHub answers with any other HTTP error status (e.g. invalid labels or assignees).
|
|
253
|
+
*/
|
|
254
|
+
createIssue(input: GithubIssueInput): Promise<GithubIssue>;
|
|
255
|
+
/**
|
|
256
|
+
* @description Comments on a GitHub issue
|
|
257
|
+
* @summary `POST`s the comment body to
|
|
258
|
+
* `/repos/<owner>/<repo>/issues/<number>/comments` and returns the comment
|
|
259
|
+
* identifier and its HTML URL. Requires a non-empty issue number and body.
|
|
260
|
+
* @param {GithubRepositoryRef & {number: number, body: string}} input - The repository targeting, issue number, and comment body.
|
|
261
|
+
* @returns {Promise<{id: number, htmlUrl?: string}>} The created comment's ID and HTML URL.
|
|
262
|
+
* @throws {InternalError} When the issue number or body is empty, or the repository reference cannot be resolved.
|
|
263
|
+
* @throws {NotFoundError} When the issue does not exist (HTTP 404).
|
|
264
|
+
* @throws {ConflictError} When GitHub answers with HTTP 409.
|
|
265
|
+
* @throws {BadRequestError} When GitHub answers with any other HTTP error status.
|
|
266
|
+
*/
|
|
267
|
+
commentOnIssue(input: GithubRepositoryRef & {
|
|
268
|
+
number: number;
|
|
269
|
+
body: string;
|
|
270
|
+
}): Promise<{
|
|
271
|
+
id: number;
|
|
272
|
+
htmlUrl?: string;
|
|
273
|
+
}>;
|
|
274
|
+
/**
|
|
275
|
+
* @description Lists GitHub pull requests with state and page filtering
|
|
276
|
+
* @summary `GET`s `/repos/<owner>/<repo>/pulls` with a `state` filter
|
|
277
|
+
* (default `"open"`), a page size (`per_page`, default `30`), and a page
|
|
278
|
+
* number. Pull requests are returned as raw GitHub payloads.
|
|
279
|
+
* @param {GithubListOptions} [options] - Repository override, state, and paging options.
|
|
280
|
+
* @returns {Promise<unknown[]>} The raw GitHub pull-request payloads.
|
|
281
|
+
* @throws {InternalError} When the repository reference cannot be resolved.
|
|
282
|
+
* @throws {NotFoundError} When the repository does not exist (HTTP 404).
|
|
283
|
+
* @throws {ConflictError} When GitHub answers with HTTP 409.
|
|
284
|
+
* @throws {BadRequestError} When GitHub answers with any other HTTP error status.
|
|
285
|
+
*/
|
|
286
|
+
listPullRequests(options?: GithubListOptions): Promise<unknown[]>;
|
|
287
|
+
}
|