@decaf-ts/integrations 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/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 +63 -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 +31 -0
- package/lib/cjs/comms/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/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/environment.cjs +46 -0
- package/lib/cjs/io/environment.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 +30 -0
- package/lib/cjs/io/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/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 +59 -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 +14 -0
- package/lib/esm/comms/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/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/environment.js +42 -0
- package/lib/esm/io/environment.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 +13 -0
- package/lib/esm/io/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/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 +84 -0
- package/lib/types/comms/environment.d.mts +84 -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 +13 -0
- package/lib/types/comms/index.d.mts +13 -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/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/environment.d.cts +67 -0
- package/lib/types/io/environment.d.mts +67 -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 +12 -0
- package/lib/types/io/index.d.mts +12 -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 +180 -3
- package/sql/002_rls.sql +660 -15
- package/sql/004_credentials.sql +46 -0
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { HttpApiService, type HttpApiServiceConfig } from "../../shared/http/index.d.cts";
|
|
2
|
+
/**
|
|
3
|
+
* @description Configuration for the Telegram service
|
|
4
|
+
* @summary Extends {@link HttpApiServiceConfig} with the Telegram bot token
|
|
5
|
+
* used to build the `/bot<token>` request path. When omitted, the
|
|
6
|
+
* `comms.telegram` environment slice supplies the token (and optional
|
|
7
|
+
* `baseUrl`/`timeout`).
|
|
8
|
+
* @category Comms
|
|
9
|
+
* @memberOf module:integrations/comms/telegram/service
|
|
10
|
+
*/
|
|
11
|
+
export interface TelegramServiceConfig extends HttpApiServiceConfig {
|
|
12
|
+
/**
|
|
13
|
+
* @description Telegram bot token
|
|
14
|
+
* @summary Issued by BotFather; embedded in the request path for every call.
|
|
15
|
+
*/
|
|
16
|
+
token?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @description Input for sending a Telegram message
|
|
20
|
+
* @summary Carries the destination `chatId`, the message `text`, the optional
|
|
21
|
+
* parse mode (`Markdown`, `MarkdownV2`, or `HTML`), and the notification,
|
|
22
|
+
* preview, reply, and forum-thread options.
|
|
23
|
+
* @category Comms
|
|
24
|
+
* @memberOf module:integrations/comms/telegram/service
|
|
25
|
+
*/
|
|
26
|
+
export interface TelegramSendMessageInput {
|
|
27
|
+
/**
|
|
28
|
+
* @description Destination chat ID or `@channelusername`
|
|
29
|
+
*/
|
|
30
|
+
chatId: string | number;
|
|
31
|
+
/**
|
|
32
|
+
* @description Message text (up to 4096 characters)
|
|
33
|
+
*/
|
|
34
|
+
text: string;
|
|
35
|
+
/**
|
|
36
|
+
* @description Parse mode for entity recognition in `text`
|
|
37
|
+
*/
|
|
38
|
+
parseMode?: "Markdown" | "MarkdownV2" | "HTML";
|
|
39
|
+
/**
|
|
40
|
+
* @description Whether the message is sent silently
|
|
41
|
+
*/
|
|
42
|
+
disableNotification?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* @description Whether link previews are disabled
|
|
45
|
+
*/
|
|
46
|
+
disablePreview?: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* @description Message to reply to
|
|
49
|
+
*/
|
|
50
|
+
replyToMessageId?: number;
|
|
51
|
+
/**
|
|
52
|
+
* @description Forum thread to post into
|
|
53
|
+
*/
|
|
54
|
+
messageThreadId?: number;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* @description Normalized Telegram message descriptor
|
|
58
|
+
* @summary The relevant subset of the Telegram `Message` object: identifiers
|
|
59
|
+
* (`message_id`, `date`), the sending `chat`, and the message `text`.
|
|
60
|
+
* @category Comms
|
|
61
|
+
* @memberOf module:integrations/comms/telegram/service
|
|
62
|
+
*/
|
|
63
|
+
export interface TelegramMessage {
|
|
64
|
+
message_id: number;
|
|
65
|
+
date: number;
|
|
66
|
+
chat: {
|
|
67
|
+
id: number;
|
|
68
|
+
type?: string;
|
|
69
|
+
title?: string;
|
|
70
|
+
username?: string;
|
|
71
|
+
};
|
|
72
|
+
text?: string;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* @description Telegram Bot API integration service
|
|
76
|
+
* @summary An undecorated HTTP service for verifying the bot
|
|
77
|
+
* identity, sending messages with parse modes and reply/thread options, long
|
|
78
|
+
* or short polling `getUpdates`, and posting chat actions. The bot token is
|
|
79
|
+
* required (`requireToken()`) and embedded in the request path; non-`ok` Bot
|
|
80
|
+
* API responses raise `InternalError`, and transport failures are mapped to
|
|
81
|
+
* decaf errors via {@link httpError}.
|
|
82
|
+
* @class TelegramService
|
|
83
|
+
* @category Comms
|
|
84
|
+
* @example
|
|
85
|
+
* ```ts
|
|
86
|
+
* import { TelegramService } from "@decaf-ts/integrations/comms/telegram";
|
|
87
|
+
*
|
|
88
|
+
* const telegram = new TelegramService();
|
|
89
|
+
* await telegram.initialize({
|
|
90
|
+
* token: process.env.GRAPH_CREDENTIAL_TELEGRAM_TOKEN,
|
|
91
|
+
* });
|
|
92
|
+
* await telegram.sendMessage({
|
|
93
|
+
* chatId: "@mychannel",
|
|
94
|
+
* text: "Release 1.2.0 is live",
|
|
95
|
+
* parseMode: "HTML",
|
|
96
|
+
* });
|
|
97
|
+
* ```
|
|
98
|
+
* @memberOf module:integrations/comms/telegram/service
|
|
99
|
+
*/
|
|
100
|
+
export declare class TelegramService extends HttpApiService<TelegramServiceConfig> {
|
|
101
|
+
/**
|
|
102
|
+
* @description The provider name used in error messages
|
|
103
|
+
*/
|
|
104
|
+
protected readonly serviceName = "Telegram";
|
|
105
|
+
/**
|
|
106
|
+
* @description The Telegram Bot API base URL
|
|
107
|
+
* @summary Used when the resolved config carries no `baseUrl`.
|
|
108
|
+
* @returns {string} `"https://api.telegram.org"`.
|
|
109
|
+
*/
|
|
110
|
+
protected defaultBaseUrl(): string;
|
|
111
|
+
/**
|
|
112
|
+
* @description Reads the Telegram credentials and defaults from the environment
|
|
113
|
+
* @summary Reads the `comms.telegram` environment slice and returns a
|
|
114
|
+
* partial config when a token is configured, `undefined` otherwise. Values
|
|
115
|
+
* pass through `envString`/`envNumber` to reject unset-leaf proxies.
|
|
116
|
+
* @returns {Partial<TelegramServiceConfig> | undefined} A partial config, or `undefined` when no Telegram token is configured.
|
|
117
|
+
*/
|
|
118
|
+
protected configFromEnvironment(): Partial<TelegramServiceConfig> | undefined;
|
|
119
|
+
/**
|
|
120
|
+
* @description Calls a Telegram Bot API method with the configured bot token
|
|
121
|
+
* @summary Shared request path for all Telegram operations: resolves the
|
|
122
|
+
* token (`requireToken()`), `POST`s the payload to
|
|
123
|
+
* `/bot<token>/<method>`, rejects non-`ok` Bot API responses with an
|
|
124
|
+
* `InternalError`, and maps transport failures through {@link httpError}.
|
|
125
|
+
* @template T - The expected `result` payload type of the Bot API response.
|
|
126
|
+
* @param {string} method - The Bot API method name (e.g. `"sendMessage"`).
|
|
127
|
+
* @param {Record<string, unknown>} [payload] - The JSON body for the method; defaults to an empty object.
|
|
128
|
+
* @returns {Promise<T>} The `result` payload of the Bot API response.
|
|
129
|
+
* @throws {InternalError} When no token is configured or the Bot API answers with `ok: false`.
|
|
130
|
+
* @throws {NotFoundError} When the endpoint answers with HTTP 404.
|
|
131
|
+
* @throws {ConflictError} When the endpoint answers with HTTP 409.
|
|
132
|
+
* @throws {BadRequestError} When the endpoint answers with any other HTTP error status.
|
|
133
|
+
*/
|
|
134
|
+
protected call<T>(method: string, payload?: Record<string, unknown>): Promise<T>;
|
|
135
|
+
/**
|
|
136
|
+
* @description Fetches the authenticated bot's identity
|
|
137
|
+
* @summary Calls the `getMe` method and returns the raw bot descriptor
|
|
138
|
+
* (including `id`, `username`, and `can_join_groups` flags).
|
|
139
|
+
* @returns {Promise<Record<string, unknown>>} The raw `User` payload describing the bot.
|
|
140
|
+
* @throws {InternalError} When no token is configured or the Bot API rejects the call.
|
|
141
|
+
* @throws {NotFoundError} When the endpoint answers with HTTP 404.
|
|
142
|
+
* @throws {ConflictError} When the endpoint answers with HTTP 409.
|
|
143
|
+
* @throws {BadRequestError} When the endpoint answers with any other HTTP error status.
|
|
144
|
+
*/
|
|
145
|
+
getMe(): Promise<Record<string, unknown>>;
|
|
146
|
+
/**
|
|
147
|
+
* @description Sends a message to a Telegram chat
|
|
148
|
+
* @summary Calls the `sendMessage` method with the destination chat, text,
|
|
149
|
+
* and the requested parse/notification/reply/thread options, returning the
|
|
150
|
+
* sent message descriptor.
|
|
151
|
+
* @param {TelegramSendMessageInput} input - The message destination, content, and options.
|
|
152
|
+
* @returns {Promise<TelegramMessage>} The sent message descriptor.
|
|
153
|
+
* @throws {InternalError} When no token is configured or the Bot API rejects the message.
|
|
154
|
+
* @throws {NotFoundError} When the endpoint answers with HTTP 404.
|
|
155
|
+
* @throws {ConflictError} When the endpoint answers with HTTP 409.
|
|
156
|
+
* @throws {BadRequestError} When the endpoint answers with any other HTTP error status.
|
|
157
|
+
* @example
|
|
158
|
+
* ```ts
|
|
159
|
+
* await telegram.sendMessage({
|
|
160
|
+
* chatId: "-1001234567890",
|
|
161
|
+
* text: "*Release* 1.2.0 is live",
|
|
162
|
+
* parseMode: "MarkdownV2",
|
|
163
|
+
* disableNotification: true,
|
|
164
|
+
* });
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
sendMessage(input: TelegramSendMessageInput): Promise<TelegramMessage>;
|
|
168
|
+
/**
|
|
169
|
+
* @description Polls pending bot updates
|
|
170
|
+
* @summary Calls the `getUpdates` method, optionally with an `offset`
|
|
171
|
+
* (confirmation of processed updates), a `limit` on returned updates, and a
|
|
172
|
+
* long-polling `timeoutSeconds`. Advance `offset` past each handled
|
|
173
|
+
* update's `update_id` to avoid re-reading them.
|
|
174
|
+
* @param {object} [options] - Polling options.
|
|
175
|
+
* @param {number} [options.offset] - The first update ID to return (previous ID + 1).
|
|
176
|
+
* @param {number} [options.limit] - Maximum number of updates to return (1-100).
|
|
177
|
+
* @param {number} [options.timeoutSeconds] - Long-polling timeout in seconds.
|
|
178
|
+
* @returns {Promise<Array<Record<string, unknown>>>} The raw `Update` payloads.
|
|
179
|
+
* @throws {InternalError} When no token is configured or the Bot API rejects the call.
|
|
180
|
+
* @throws {NotFoundError} When the endpoint answers with HTTP 404.
|
|
181
|
+
* @throws {ConflictError} When the endpoint answers with HTTP 409 (e.g. another `getUpdates` call is in flight).
|
|
182
|
+
* @throws {BadRequestError} When the endpoint answers with any other HTTP error status.
|
|
183
|
+
*/
|
|
184
|
+
getUpdates(options?: {
|
|
185
|
+
offset?: number;
|
|
186
|
+
limit?: number;
|
|
187
|
+
timeoutSeconds?: number;
|
|
188
|
+
}): Promise<Array<Record<string, unknown>>>;
|
|
189
|
+
/**
|
|
190
|
+
* @description Posts a chat action (typing indicator)
|
|
191
|
+
* @summary Calls the `sendChatAction` method so clients display the given
|
|
192
|
+
* action (e.g. `"typing"`) for up to five seconds.
|
|
193
|
+
* @param {string | number} chatId - The destination chat ID or `@channelusername`.
|
|
194
|
+
* @param {string} [action] - The action to display; defaults to `"typing"`.
|
|
195
|
+
* @returns {Promise<boolean>} Whether the action was accepted.
|
|
196
|
+
* @throws {InternalError} When no token is configured or the Bot API rejects the call.
|
|
197
|
+
* @throws {NotFoundError} When the endpoint answers with HTTP 404.
|
|
198
|
+
* @throws {ConflictError} When the endpoint answers with HTTP 409.
|
|
199
|
+
* @throws {BadRequestError} When the endpoint answers with any other HTTP error status.
|
|
200
|
+
*/
|
|
201
|
+
sendChatAction(chatId: string | number, action?: string): Promise<boolean>;
|
|
202
|
+
}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { HttpApiService, type HttpApiServiceConfig } from "../../shared/http/index.d.mts";
|
|
2
|
+
/**
|
|
3
|
+
* @description Configuration for the Telegram service
|
|
4
|
+
* @summary Extends {@link HttpApiServiceConfig} with the Telegram bot token
|
|
5
|
+
* used to build the `/bot<token>` request path. When omitted, the
|
|
6
|
+
* `comms.telegram` environment slice supplies the token (and optional
|
|
7
|
+
* `baseUrl`/`timeout`).
|
|
8
|
+
* @category Comms
|
|
9
|
+
* @memberOf module:integrations/comms/telegram/service
|
|
10
|
+
*/
|
|
11
|
+
export interface TelegramServiceConfig extends HttpApiServiceConfig {
|
|
12
|
+
/**
|
|
13
|
+
* @description Telegram bot token
|
|
14
|
+
* @summary Issued by BotFather; embedded in the request path for every call.
|
|
15
|
+
*/
|
|
16
|
+
token?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @description Input for sending a Telegram message
|
|
20
|
+
* @summary Carries the destination `chatId`, the message `text`, the optional
|
|
21
|
+
* parse mode (`Markdown`, `MarkdownV2`, or `HTML`), and the notification,
|
|
22
|
+
* preview, reply, and forum-thread options.
|
|
23
|
+
* @category Comms
|
|
24
|
+
* @memberOf module:integrations/comms/telegram/service
|
|
25
|
+
*/
|
|
26
|
+
export interface TelegramSendMessageInput {
|
|
27
|
+
/**
|
|
28
|
+
* @description Destination chat ID or `@channelusername`
|
|
29
|
+
*/
|
|
30
|
+
chatId: string | number;
|
|
31
|
+
/**
|
|
32
|
+
* @description Message text (up to 4096 characters)
|
|
33
|
+
*/
|
|
34
|
+
text: string;
|
|
35
|
+
/**
|
|
36
|
+
* @description Parse mode for entity recognition in `text`
|
|
37
|
+
*/
|
|
38
|
+
parseMode?: "Markdown" | "MarkdownV2" | "HTML";
|
|
39
|
+
/**
|
|
40
|
+
* @description Whether the message is sent silently
|
|
41
|
+
*/
|
|
42
|
+
disableNotification?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* @description Whether link previews are disabled
|
|
45
|
+
*/
|
|
46
|
+
disablePreview?: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* @description Message to reply to
|
|
49
|
+
*/
|
|
50
|
+
replyToMessageId?: number;
|
|
51
|
+
/**
|
|
52
|
+
* @description Forum thread to post into
|
|
53
|
+
*/
|
|
54
|
+
messageThreadId?: number;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* @description Normalized Telegram message descriptor
|
|
58
|
+
* @summary The relevant subset of the Telegram `Message` object: identifiers
|
|
59
|
+
* (`message_id`, `date`), the sending `chat`, and the message `text`.
|
|
60
|
+
* @category Comms
|
|
61
|
+
* @memberOf module:integrations/comms/telegram/service
|
|
62
|
+
*/
|
|
63
|
+
export interface TelegramMessage {
|
|
64
|
+
message_id: number;
|
|
65
|
+
date: number;
|
|
66
|
+
chat: {
|
|
67
|
+
id: number;
|
|
68
|
+
type?: string;
|
|
69
|
+
title?: string;
|
|
70
|
+
username?: string;
|
|
71
|
+
};
|
|
72
|
+
text?: string;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* @description Telegram Bot API integration service
|
|
76
|
+
* @summary An undecorated HTTP service for verifying the bot
|
|
77
|
+
* identity, sending messages with parse modes and reply/thread options, long
|
|
78
|
+
* or short polling `getUpdates`, and posting chat actions. The bot token is
|
|
79
|
+
* required (`requireToken()`) and embedded in the request path; non-`ok` Bot
|
|
80
|
+
* API responses raise `InternalError`, and transport failures are mapped to
|
|
81
|
+
* decaf errors via {@link httpError}.
|
|
82
|
+
* @class TelegramService
|
|
83
|
+
* @category Comms
|
|
84
|
+
* @example
|
|
85
|
+
* ```ts
|
|
86
|
+
* import { TelegramService } from "@decaf-ts/integrations/comms/telegram";
|
|
87
|
+
*
|
|
88
|
+
* const telegram = new TelegramService();
|
|
89
|
+
* await telegram.initialize({
|
|
90
|
+
* token: process.env.GRAPH_CREDENTIAL_TELEGRAM_TOKEN,
|
|
91
|
+
* });
|
|
92
|
+
* await telegram.sendMessage({
|
|
93
|
+
* chatId: "@mychannel",
|
|
94
|
+
* text: "Release 1.2.0 is live",
|
|
95
|
+
* parseMode: "HTML",
|
|
96
|
+
* });
|
|
97
|
+
* ```
|
|
98
|
+
* @memberOf module:integrations/comms/telegram/service
|
|
99
|
+
*/
|
|
100
|
+
export declare class TelegramService extends HttpApiService<TelegramServiceConfig> {
|
|
101
|
+
/**
|
|
102
|
+
* @description The provider name used in error messages
|
|
103
|
+
*/
|
|
104
|
+
protected readonly serviceName = "Telegram";
|
|
105
|
+
/**
|
|
106
|
+
* @description The Telegram Bot API base URL
|
|
107
|
+
* @summary Used when the resolved config carries no `baseUrl`.
|
|
108
|
+
* @returns {string} `"https://api.telegram.org"`.
|
|
109
|
+
*/
|
|
110
|
+
protected defaultBaseUrl(): string;
|
|
111
|
+
/**
|
|
112
|
+
* @description Reads the Telegram credentials and defaults from the environment
|
|
113
|
+
* @summary Reads the `comms.telegram` environment slice and returns a
|
|
114
|
+
* partial config when a token is configured, `undefined` otherwise. Values
|
|
115
|
+
* pass through `envString`/`envNumber` to reject unset-leaf proxies.
|
|
116
|
+
* @returns {Partial<TelegramServiceConfig> | undefined} A partial config, or `undefined` when no Telegram token is configured.
|
|
117
|
+
*/
|
|
118
|
+
protected configFromEnvironment(): Partial<TelegramServiceConfig> | undefined;
|
|
119
|
+
/**
|
|
120
|
+
* @description Calls a Telegram Bot API method with the configured bot token
|
|
121
|
+
* @summary Shared request path for all Telegram operations: resolves the
|
|
122
|
+
* token (`requireToken()`), `POST`s the payload to
|
|
123
|
+
* `/bot<token>/<method>`, rejects non-`ok` Bot API responses with an
|
|
124
|
+
* `InternalError`, and maps transport failures through {@link httpError}.
|
|
125
|
+
* @template T - The expected `result` payload type of the Bot API response.
|
|
126
|
+
* @param {string} method - The Bot API method name (e.g. `"sendMessage"`).
|
|
127
|
+
* @param {Record<string, unknown>} [payload] - The JSON body for the method; defaults to an empty object.
|
|
128
|
+
* @returns {Promise<T>} The `result` payload of the Bot API response.
|
|
129
|
+
* @throws {InternalError} When no token is configured or the Bot API answers with `ok: false`.
|
|
130
|
+
* @throws {NotFoundError} When the endpoint answers with HTTP 404.
|
|
131
|
+
* @throws {ConflictError} When the endpoint answers with HTTP 409.
|
|
132
|
+
* @throws {BadRequestError} When the endpoint answers with any other HTTP error status.
|
|
133
|
+
*/
|
|
134
|
+
protected call<T>(method: string, payload?: Record<string, unknown>): Promise<T>;
|
|
135
|
+
/**
|
|
136
|
+
* @description Fetches the authenticated bot's identity
|
|
137
|
+
* @summary Calls the `getMe` method and returns the raw bot descriptor
|
|
138
|
+
* (including `id`, `username`, and `can_join_groups` flags).
|
|
139
|
+
* @returns {Promise<Record<string, unknown>>} The raw `User` payload describing the bot.
|
|
140
|
+
* @throws {InternalError} When no token is configured or the Bot API rejects the call.
|
|
141
|
+
* @throws {NotFoundError} When the endpoint answers with HTTP 404.
|
|
142
|
+
* @throws {ConflictError} When the endpoint answers with HTTP 409.
|
|
143
|
+
* @throws {BadRequestError} When the endpoint answers with any other HTTP error status.
|
|
144
|
+
*/
|
|
145
|
+
getMe(): Promise<Record<string, unknown>>;
|
|
146
|
+
/**
|
|
147
|
+
* @description Sends a message to a Telegram chat
|
|
148
|
+
* @summary Calls the `sendMessage` method with the destination chat, text,
|
|
149
|
+
* and the requested parse/notification/reply/thread options, returning the
|
|
150
|
+
* sent message descriptor.
|
|
151
|
+
* @param {TelegramSendMessageInput} input - The message destination, content, and options.
|
|
152
|
+
* @returns {Promise<TelegramMessage>} The sent message descriptor.
|
|
153
|
+
* @throws {InternalError} When no token is configured or the Bot API rejects the message.
|
|
154
|
+
* @throws {NotFoundError} When the endpoint answers with HTTP 404.
|
|
155
|
+
* @throws {ConflictError} When the endpoint answers with HTTP 409.
|
|
156
|
+
* @throws {BadRequestError} When the endpoint answers with any other HTTP error status.
|
|
157
|
+
* @example
|
|
158
|
+
* ```ts
|
|
159
|
+
* await telegram.sendMessage({
|
|
160
|
+
* chatId: "-1001234567890",
|
|
161
|
+
* text: "*Release* 1.2.0 is live",
|
|
162
|
+
* parseMode: "MarkdownV2",
|
|
163
|
+
* disableNotification: true,
|
|
164
|
+
* });
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
sendMessage(input: TelegramSendMessageInput): Promise<TelegramMessage>;
|
|
168
|
+
/**
|
|
169
|
+
* @description Polls pending bot updates
|
|
170
|
+
* @summary Calls the `getUpdates` method, optionally with an `offset`
|
|
171
|
+
* (confirmation of processed updates), a `limit` on returned updates, and a
|
|
172
|
+
* long-polling `timeoutSeconds`. Advance `offset` past each handled
|
|
173
|
+
* update's `update_id` to avoid re-reading them.
|
|
174
|
+
* @param {object} [options] - Polling options.
|
|
175
|
+
* @param {number} [options.offset] - The first update ID to return (previous ID + 1).
|
|
176
|
+
* @param {number} [options.limit] - Maximum number of updates to return (1-100).
|
|
177
|
+
* @param {number} [options.timeoutSeconds] - Long-polling timeout in seconds.
|
|
178
|
+
* @returns {Promise<Array<Record<string, unknown>>>} The raw `Update` payloads.
|
|
179
|
+
* @throws {InternalError} When no token is configured or the Bot API rejects the call.
|
|
180
|
+
* @throws {NotFoundError} When the endpoint answers with HTTP 404.
|
|
181
|
+
* @throws {ConflictError} When the endpoint answers with HTTP 409 (e.g. another `getUpdates` call is in flight).
|
|
182
|
+
* @throws {BadRequestError} When the endpoint answers with any other HTTP error status.
|
|
183
|
+
*/
|
|
184
|
+
getUpdates(options?: {
|
|
185
|
+
offset?: number;
|
|
186
|
+
limit?: number;
|
|
187
|
+
timeoutSeconds?: number;
|
|
188
|
+
}): Promise<Array<Record<string, unknown>>>;
|
|
189
|
+
/**
|
|
190
|
+
* @description Posts a chat action (typing indicator)
|
|
191
|
+
* @summary Calls the `sendChatAction` method so clients display the given
|
|
192
|
+
* action (e.g. `"typing"`) for up to five seconds.
|
|
193
|
+
* @param {string | number} chatId - The destination chat ID or `@channelusername`.
|
|
194
|
+
* @param {string} [action] - The action to display; defaults to `"typing"`.
|
|
195
|
+
* @returns {Promise<boolean>} Whether the action was accepted.
|
|
196
|
+
* @throws {InternalError} When no token is configured or the Bot API rejects the call.
|
|
197
|
+
* @throws {NotFoundError} When the endpoint answers with HTTP 404.
|
|
198
|
+
* @throws {ConflictError} When the endpoint answers with HTTP 409.
|
|
199
|
+
* @throws {BadRequestError} When the endpoint answers with any other HTTP error status.
|
|
200
|
+
*/
|
|
201
|
+
sendChatAction(chatId: string | number, action?: string): Promise<boolean>;
|
|
202
|
+
}
|
|
@@ -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>;
|