@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,138 @@
|
|
|
1
|
+
import { InternalError } from "@decaf-ts/db-decorators";
|
|
2
|
+
import { IoEnvironment } from "./../environment.js";
|
|
3
|
+
import { envNumber, envString } from "./../../shared/environmentValue.js";
|
|
4
|
+
import { HttpApiService, httpError, } from "./../../shared/http/index.js";
|
|
5
|
+
/**
|
|
6
|
+
* @description Generic GraphQL endpoint integration service
|
|
7
|
+
* @summary An undecorated HTTP service that `POST`s GraphQL
|
|
8
|
+
* documents to any endpoint. Unlike the other integration services there is
|
|
9
|
+
* no default base URL — the endpoint must come from the config (`endpoint` or
|
|
10
|
+
* `baseUrl`) or the `io.graphql` environment slice. Initialization normalizes
|
|
11
|
+
* the `endpoint` alias to `baseUrl` before delegating to the shared
|
|
12
|
+
* {@link HttpApiService.initialize}; the optional token is sent as a bearer
|
|
13
|
+
* header and per-request headers extend it. Transport failures are mapped to
|
|
14
|
+
* decaf errors via {@link httpError}, while GraphQL field-level `errors` are
|
|
15
|
+
* returned in the response for the caller to interpret.
|
|
16
|
+
* @class GraphqlService
|
|
17
|
+
* @category IO
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* import { GraphqlService } from "@decaf-ts/integrations/io/graphql";
|
|
21
|
+
*
|
|
22
|
+
* const graphql = new GraphqlService();
|
|
23
|
+
* await graphql.initialize({
|
|
24
|
+
* endpoint: "https://api.example.com/graphql",
|
|
25
|
+
* token: process.env.GRAPH_CREDENTIAL_GRAPHQL_TOKEN,
|
|
26
|
+
* });
|
|
27
|
+
* const response = await graphql.request<{ user: { name: string } }>({
|
|
28
|
+
* query: `query GetUser($id: ID!) {
|
|
29
|
+
* user(id: $id) { name }
|
|
30
|
+
* }`,
|
|
31
|
+
* variables: { id: "123" },
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
* @memberOf module:integrations/io/graphql/service
|
|
35
|
+
*/
|
|
36
|
+
export class GraphqlService extends HttpApiService {
|
|
37
|
+
constructor() {
|
|
38
|
+
super(...arguments);
|
|
39
|
+
/**
|
|
40
|
+
* @description The provider name used in error messages
|
|
41
|
+
*/
|
|
42
|
+
this.serviceName = "GraphQL";
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* @description The absence of a default GraphQL endpoint
|
|
46
|
+
* @summary Returns an empty string because GraphQL endpoints are
|
|
47
|
+
* provider-specific; {@link GraphqlService.request} rejects execution when
|
|
48
|
+
* no endpoint was configured.
|
|
49
|
+
* @returns {string} An empty string.
|
|
50
|
+
*/
|
|
51
|
+
defaultBaseUrl() {
|
|
52
|
+
return "";
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* @description Normalizes the `endpoint` alias before shared initialization
|
|
56
|
+
* @summary When the provided config carries no `baseUrl` but an `endpoint`,
|
|
57
|
+
* copies `endpoint` into `baseUrl` and delegates to
|
|
58
|
+
* {@link HttpApiService.initialize}, which merges the environment slice and
|
|
59
|
+
* builds the Axios client.
|
|
60
|
+
* @param {...MaybeContextualArg<any>} args - An optional `Partial<GraphqlServiceConfig>`, optionally followed by a decaf `Context`.
|
|
61
|
+
* @returns {Promise<{config: GraphqlServiceConfig, client: AxiosInstance}>} The merged configuration and the configured Axios instance.
|
|
62
|
+
* @throws {InternalError} When no base URL can be resolved from the config or environment.
|
|
63
|
+
*/
|
|
64
|
+
async initialize(...args) {
|
|
65
|
+
const provided = (args[0] ?? {});
|
|
66
|
+
if (!provided.baseUrl && provided.endpoint) {
|
|
67
|
+
args[0] = { ...provided, baseUrl: provided.endpoint };
|
|
68
|
+
}
|
|
69
|
+
return super.initialize(...args);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* @description Builds the GraphQL bearer authorization headers
|
|
73
|
+
* @summary Returns the `Authorization: Bearer <token>` header when the
|
|
74
|
+
* config carries a token, and no headers otherwise.
|
|
75
|
+
* @param {GraphqlServiceConfig} config - The resolved service configuration.
|
|
76
|
+
* @returns {Record<string, string>} The authorization headers (empty without a token).
|
|
77
|
+
*/
|
|
78
|
+
authHeaders(config) {
|
|
79
|
+
return config.token ? { Authorization: `Bearer ${config.token}` } : {};
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* @description Reads the GraphQL endpoint and token from the environment
|
|
83
|
+
* @summary Reads the `io.graphql` environment slice and returns a partial
|
|
84
|
+
* config (with `endpoint` also mirrored to `baseUrl`) when an endpoint is
|
|
85
|
+
* configured, `undefined` otherwise. Values pass through
|
|
86
|
+
* `envString`/`envNumber` to reject unset-leaf proxies.
|
|
87
|
+
* @returns {Partial<GraphqlServiceConfig> | undefined} A partial config, or `undefined` when no GraphQL endpoint is configured.
|
|
88
|
+
*/
|
|
89
|
+
configFromEnvironment() {
|
|
90
|
+
const env = IoEnvironment.io.graphql;
|
|
91
|
+
const endpoint = envString(env?.endpoint);
|
|
92
|
+
if (!endpoint)
|
|
93
|
+
return undefined;
|
|
94
|
+
return {
|
|
95
|
+
endpoint,
|
|
96
|
+
baseUrl: endpoint,
|
|
97
|
+
token: envString(env.token),
|
|
98
|
+
timeout: envNumber(env.timeout),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* @description Executes a GraphQL query or mutation against the configured endpoint
|
|
103
|
+
* @summary `POST`s the standard GraphQL request body (`query`,
|
|
104
|
+
* `variables`, `operationName`) to the resolved endpoint with the optional
|
|
105
|
+
* per-request headers merged over the client defaults. Requires a
|
|
106
|
+
* non-empty query and a configured endpoint. Returns the raw execution
|
|
107
|
+
* envelope: field-level `errors` are reported in `GraphqlResponse.errors`
|
|
108
|
+
* rather than thrown, so callers must inspect them for partial failures.
|
|
109
|
+
* @template T - The expected type of the `data` payload.
|
|
110
|
+
* @param {GraphqlRequest} input - The query document, variables, operation name, and per-request headers.
|
|
111
|
+
* @returns {Promise<GraphqlResponse<T>>} The execution envelope with `data`, `errors`, and `extensions`.
|
|
112
|
+
* @throws {InternalError} When the query is empty or no endpoint is configured.
|
|
113
|
+
* @throws {NotFoundError} When the endpoint answers with HTTP 404.
|
|
114
|
+
* @throws {ConflictError} When the endpoint answers with HTTP 409.
|
|
115
|
+
* @throws {BadRequestError} When the endpoint answers with any other HTTP error status.
|
|
116
|
+
*/
|
|
117
|
+
async request(input) {
|
|
118
|
+
if (!input.query || input.query.trim().length === 0) {
|
|
119
|
+
throw new InternalError("GraphQL request requires a query");
|
|
120
|
+
}
|
|
121
|
+
const endpoint = this.config.endpoint ?? this.config.baseUrl;
|
|
122
|
+
if (!endpoint) {
|
|
123
|
+
throw new InternalError("GraphQL requires an endpoint");
|
|
124
|
+
}
|
|
125
|
+
try {
|
|
126
|
+
const response = await this.client.post(endpoint, {
|
|
127
|
+
query: input.query,
|
|
128
|
+
variables: input.variables,
|
|
129
|
+
operationName: input.operationName,
|
|
130
|
+
}, { headers: input.headers });
|
|
131
|
+
return response.data;
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
throw httpError("GraphQL", "request", error);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=GraphqlService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GraphqlService.js","sourceRoot":"","sources":["../../../../src/io/graphql/GraphqlService.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,4BAAuB;AAC/C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,2CAAsC;AACrE,OAAO,EACL,cAAc,EAEd,SAAS,GACV,qCAA0B;AAmE3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,OAAO,cAAe,SAAQ,cAAoC;IAAxE;;QACE;;WAEG;QACgB,gBAAW,GAAG,SAAS,CAAC;IAyG7C,CAAC;IAvGC;;;;;;OAMG;IACO,cAAc;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,UAAU,CACd,GAAG,IAA6B;QAEhC,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAkC,CAAC;QAClE,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC3C,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACxD,CAAC;QACD,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;OAMG;IACO,WAAW,CAAC,MAA4B;QAChD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,CAAC;IAED;;;;;;;OAOG;IACO,qBAAqB;QAC7B,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC;QACrC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAC;QAChC,OAAO;YACL,QAAQ;YACR,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;YAC3B,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;SAChC,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,OAAO,CACX,KAAqB;QAErB,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,aAAa,CAAC,kCAAkC,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAC7D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,aAAa,CAAC,8BAA8B,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACrC,QAAQ,EACR;gBACE,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,aAAa,EAAE,KAAK,CAAC,aAAa;aACnC,EACD,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAC3B,CAAC;YACF,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/io/graphql/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,oCAAiC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/io
|
|
3
|
+
* @summary IO integration services (Google Sheets, Airtable, GraphQL, Spreadsheet).
|
|
4
|
+
* @description Re-exports the data-source services, their per-service modules,
|
|
5
|
+
* and the shared `io` environment slice. Each sub-module is also available
|
|
6
|
+
* through its own package subpath export.
|
|
7
|
+
*/
|
|
8
|
+
export * from "./airtable/index.js";
|
|
9
|
+
export * from "./google-sheets/index.js";
|
|
10
|
+
export * from "./graphql/index.js";
|
|
11
|
+
export * from "./spreadsheet/index.js";
|
|
12
|
+
export * from "./microsoft-excel/index.js";
|
|
13
|
+
export * from "./confluence/index.js";
|
|
14
|
+
export * from "./jira/index.js";
|
|
15
|
+
export * from "./google-docs/index.js";
|
|
16
|
+
export * from "./microsoft-sharepoint/index.js";
|
|
17
|
+
export * from "./environment.js";
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/io/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,oCAA2B;AAC3B,yCAAgC;AAChC,mCAA0B;AAC1B,uCAA8B;AAC9B,2CAAkC;AAClC,sCAA6B;AAC7B,gCAAuB;AACvB,uCAA8B;AAC9B,gDAAuC;AACvC,iCAA8B"}
|
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/io/jira/service
|
|
3
|
+
* @summary Jira REST API integration service for issues, comments, and workflows.
|
|
4
|
+
* @description Exposes Jira issue operations (create, read, update, delete,
|
|
5
|
+
* comment, transition, and JQL search) through the Jira REST `api/2` surface as
|
|
6
|
+
* an undecorated client-based service built on {@link HttpApiService}.
|
|
7
|
+
* Configuration comes from an explicit `JiraServiceConfig` or the `io.jira`
|
|
8
|
+
* environment slice. When both `username` and `token` are configured the
|
|
9
|
+
* service sends HTTP Basic authentication (API token as the password);
|
|
10
|
+
* otherwise the token is sent as a bearer token. The site `baseUrl` is
|
|
11
|
+
* required. Credentials are referenced from configuration (and, from as-graph
|
|
12
|
+
* nodes, from the resolved `jira` credential secret) and are never embedded in
|
|
13
|
+
* source. Failures are mapped to decaf errors via {@link httpError}.
|
|
14
|
+
*/
|
|
15
|
+
import { InternalError } from "@decaf-ts/db-decorators";
|
|
16
|
+
import { IoEnvironment } from "./../environment.js";
|
|
17
|
+
import { envNumber, envString } from "./../../shared/environmentValue.js";
|
|
18
|
+
import { HttpApiService, httpError, } from "./../../shared/http/index.js";
|
|
19
|
+
/** Default issue type written when a create does not specify one (`"Task"`). */
|
|
20
|
+
const DEFAULT_ISSUE_TYPE = "Task";
|
|
21
|
+
/**
|
|
22
|
+
* @description Jira REST API integration service
|
|
23
|
+
* @summary An undecorated HTTP service for issue CRUD, comments, workflow
|
|
24
|
+
* transitions, and JQL search. The site base URL and API token are required;
|
|
25
|
+
* supplying a `username` switches authentication to Basic, and transport
|
|
26
|
+
* failures are mapped to decaf errors via {@link httpError}.
|
|
27
|
+
* @class JiraService
|
|
28
|
+
* @extends HttpApiService
|
|
29
|
+
* @category IO
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* import { JiraService } from "@decaf-ts/integrations/io/jira";
|
|
33
|
+
*
|
|
34
|
+
* const jira = new JiraService();
|
|
35
|
+
* await jira.initialize({
|
|
36
|
+
* baseUrl: "https://example.atlassian.net",
|
|
37
|
+
* username: process.env.JIRA_USERNAME,
|
|
38
|
+
* token: process.env.GRAPH_CREDENTIAL_JIRA_TOKEN,
|
|
39
|
+
* });
|
|
40
|
+
* const issue = await jira.createIssue({
|
|
41
|
+
* projectKey: "OPS",
|
|
42
|
+
* summary: "Deployment failed",
|
|
43
|
+
* });
|
|
44
|
+
* ```
|
|
45
|
+
* @mermaid
|
|
46
|
+
* sequenceDiagram
|
|
47
|
+
* autonumber
|
|
48
|
+
* participant Caller
|
|
49
|
+
* participant Service as JiraService
|
|
50
|
+
* participant API as Jira REST API
|
|
51
|
+
* Caller->>Service: createIssue(input)
|
|
52
|
+
* activate Service
|
|
53
|
+
* Service->>Service: requireCredentials()
|
|
54
|
+
* Service->>API: POST /rest/api/2/issue
|
|
55
|
+
* activate API
|
|
56
|
+
* API-->>Service: { id, key }
|
|
57
|
+
* deactivate API
|
|
58
|
+
* Service-->>Caller: created issue
|
|
59
|
+
* deactivate Service
|
|
60
|
+
* @memberOf module:integrations/io/jira/service
|
|
61
|
+
*/
|
|
62
|
+
export class JiraService extends HttpApiService {
|
|
63
|
+
constructor() {
|
|
64
|
+
super(...arguments);
|
|
65
|
+
/**
|
|
66
|
+
* @description The provider name used in error messages
|
|
67
|
+
*/
|
|
68
|
+
this.serviceName = "Jira";
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* @description The default base URL for Jira
|
|
72
|
+
* @summary Returns an empty string; Jira is site-hosted, so the resolved
|
|
73
|
+
* `baseUrl` (from config or `io.jira.baseUrl`) is required.
|
|
74
|
+
* @returns {string} An empty string.
|
|
75
|
+
*/
|
|
76
|
+
defaultBaseUrl() {
|
|
77
|
+
return "";
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* @description Builds the Jira authentication headers
|
|
81
|
+
* @summary Uses HTTP Basic (`username:token`) when both values are present,
|
|
82
|
+
* otherwise a bearer token when only `token` is present. Always requests
|
|
83
|
+
* JSON responses.
|
|
84
|
+
* @param {JiraServiceConfig} config - The resolved service configuration.
|
|
85
|
+
* @returns {Record<string, string>} The authorization and accept headers.
|
|
86
|
+
*/
|
|
87
|
+
authHeaders(config) {
|
|
88
|
+
if (config.username && config.token) {
|
|
89
|
+
const encoded = Buffer.from(`${config.username}:${config.token}`, "utf8").toString("base64");
|
|
90
|
+
return {
|
|
91
|
+
Authorization: `Basic ${encoded}`,
|
|
92
|
+
Accept: "application/json",
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
return config.token
|
|
96
|
+
? { Authorization: `Bearer ${config.token}`, Accept: "application/json" }
|
|
97
|
+
: { Accept: "application/json" };
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* @description Reads the Jira credentials and defaults from the environment
|
|
101
|
+
* @summary Reads the `io.jira` slice and returns a partial config when an
|
|
102
|
+
* API token is configured, `undefined` otherwise. Values pass through
|
|
103
|
+
* `envString`/`envNumber` to reject unset-leaf proxies.
|
|
104
|
+
* @returns {Partial<JiraServiceConfig> | undefined} A partial config, or `undefined` when no Jira token is configured.
|
|
105
|
+
*/
|
|
106
|
+
configFromEnvironment() {
|
|
107
|
+
const env = IoEnvironment.io.jira;
|
|
108
|
+
const token = envString(env?.token);
|
|
109
|
+
if (!token)
|
|
110
|
+
return undefined;
|
|
111
|
+
return {
|
|
112
|
+
token,
|
|
113
|
+
username: envString(env.username),
|
|
114
|
+
baseUrl: envString(env.baseUrl),
|
|
115
|
+
timeout: envNumber(env.timeout),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* @description Asserts that the Jira token and site base URL are configured
|
|
120
|
+
* @summary Called by every operation before it touches the network.
|
|
121
|
+
* @returns {void}
|
|
122
|
+
* @throws {InternalError} When no API token or base URL is configured.
|
|
123
|
+
*/
|
|
124
|
+
requireCredentials() {
|
|
125
|
+
if (!this.config.token) {
|
|
126
|
+
throw new InternalError("Jira requires an API token");
|
|
127
|
+
}
|
|
128
|
+
if (!this.config.baseUrl) {
|
|
129
|
+
throw new InternalError("Jira requires a base URL");
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* @description Builds the encoded issue path
|
|
134
|
+
* @summary Validates the issue key and URL-encodes it into
|
|
135
|
+
* `/rest/api/2/issue/<key>`.
|
|
136
|
+
* @param {string} issueKey - The Jira issue key.
|
|
137
|
+
* @returns {string} The issue API path.
|
|
138
|
+
* @throws {InternalError} When `issueKey` is empty.
|
|
139
|
+
*/
|
|
140
|
+
issuePath(issueKey) {
|
|
141
|
+
if (!issueKey) {
|
|
142
|
+
throw new InternalError("Jira requires an issue key");
|
|
143
|
+
}
|
|
144
|
+
return `/rest/api/2/issue/${encodeURIComponent(issueKey)}`;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* @description Creates a Jira issue
|
|
148
|
+
* @summary `POST`s the project, summary, issue type (default `Task`),
|
|
149
|
+
* optional description, and extra fields to `/rest/api/2/issue`.
|
|
150
|
+
* @param {JiraIssueInput} input - The issue definition.
|
|
151
|
+
* @returns {Promise<unknown>} The created issue payload (including `id` and `key`).
|
|
152
|
+
* @throws {InternalError} When credentials are missing, or the project key or summary is empty.
|
|
153
|
+
* @throws {BadRequestError} When Jira rejects the issue.
|
|
154
|
+
*/
|
|
155
|
+
async createIssue(input) {
|
|
156
|
+
this.requireCredentials();
|
|
157
|
+
if (!input.projectKey || !input.summary) {
|
|
158
|
+
throw new InternalError("Jira createIssue requires a project key and summary");
|
|
159
|
+
}
|
|
160
|
+
try {
|
|
161
|
+
const response = await this.client.post("/rest/api/2/issue", {
|
|
162
|
+
fields: {
|
|
163
|
+
project: { key: input.projectKey },
|
|
164
|
+
summary: input.summary,
|
|
165
|
+
issuetype: { name: input.issueType ?? DEFAULT_ISSUE_TYPE },
|
|
166
|
+
...(input.description ? { description: input.description } : {}),
|
|
167
|
+
...(input.fields ?? {}),
|
|
168
|
+
},
|
|
169
|
+
});
|
|
170
|
+
return response.data;
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
throw httpError("Jira", "create issue", error);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* @description Fetches a Jira issue
|
|
178
|
+
* @summary `GET`s the issue by key, optionally projecting the given field
|
|
179
|
+
* names.
|
|
180
|
+
* @param {string} issueKey - The issue key to fetch.
|
|
181
|
+
* @param {string[]} [fields] - Field names to include in the response.
|
|
182
|
+
* @returns {Promise<unknown>} The issue payload.
|
|
183
|
+
* @throws {InternalError} When credentials are missing or the issue key is empty.
|
|
184
|
+
* @throws {NotFoundError} When the issue does not exist (HTTP 404).
|
|
185
|
+
* @throws {BadRequestError} When Jira rejects the request.
|
|
186
|
+
*/
|
|
187
|
+
async getIssue(issueKey, fields) {
|
|
188
|
+
this.requireCredentials();
|
|
189
|
+
try {
|
|
190
|
+
const response = await this.client.get(this.issuePath(issueKey), {
|
|
191
|
+
params: fields?.length ? { fields: fields.join(",") } : {},
|
|
192
|
+
});
|
|
193
|
+
return response.data;
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
throw httpError("Jira", "get issue", error);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* @description Updates fields on a Jira issue
|
|
201
|
+
* @summary `PUT`s the `fields` map to the issue and returns
|
|
202
|
+
* `{ updated: true, issueKey }`.
|
|
203
|
+
* @param {JiraIssueUpdate} input - The issue key and fields to update.
|
|
204
|
+
* @returns {Promise<unknown>} `{ updated: true, issueKey }` on success.
|
|
205
|
+
* @throws {InternalError} When credentials are missing, or the issue key or fields are empty.
|
|
206
|
+
* @throws {NotFoundError} When the issue does not exist (HTTP 404).
|
|
207
|
+
* @throws {BadRequestError} When Jira rejects the update.
|
|
208
|
+
*/
|
|
209
|
+
async updateIssue(input) {
|
|
210
|
+
this.requireCredentials();
|
|
211
|
+
if (!input.fields) {
|
|
212
|
+
throw new InternalError("Jira updateIssue requires fields");
|
|
213
|
+
}
|
|
214
|
+
try {
|
|
215
|
+
await this.client.put(this.issuePath(input.issueKey), {
|
|
216
|
+
fields: input.fields,
|
|
217
|
+
});
|
|
218
|
+
return { updated: true, issueKey: input.issueKey };
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
throw httpError("Jira", "update issue", error);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* @description Deletes a Jira issue
|
|
226
|
+
* @summary `DELETE`s the issue and returns `{ deleted: true, issueKey }`.
|
|
227
|
+
* @param {string} issueKey - The issue key to delete.
|
|
228
|
+
* @returns {Promise<unknown>} `{ deleted: true, issueKey }` on success.
|
|
229
|
+
* @throws {InternalError} When credentials are missing or the issue key is empty.
|
|
230
|
+
* @throws {NotFoundError} When the issue does not exist (HTTP 404).
|
|
231
|
+
* @throws {BadRequestError} When Jira rejects the deletion.
|
|
232
|
+
*/
|
|
233
|
+
async deleteIssue(issueKey) {
|
|
234
|
+
this.requireCredentials();
|
|
235
|
+
try {
|
|
236
|
+
await this.client.delete(this.issuePath(issueKey));
|
|
237
|
+
return { deleted: true, issueKey };
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
throw httpError("Jira", "delete issue", error);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* @description Adds a comment to a Jira issue
|
|
245
|
+
* @summary `POST`s the comment body to the issue's `/comment` endpoint.
|
|
246
|
+
* @param {JiraCommentInput} input - The issue key and comment body.
|
|
247
|
+
* @returns {Promise<unknown>} The created comment payload.
|
|
248
|
+
* @throws {InternalError} When credentials are missing, or the issue key or body is empty.
|
|
249
|
+
* @throws {NotFoundError} When the issue does not exist (HTTP 404).
|
|
250
|
+
* @throws {BadRequestError} When Jira rejects the comment.
|
|
251
|
+
*/
|
|
252
|
+
async addComment(input) {
|
|
253
|
+
this.requireCredentials();
|
|
254
|
+
if (!input.body) {
|
|
255
|
+
throw new InternalError("Jira addComment requires a body");
|
|
256
|
+
}
|
|
257
|
+
try {
|
|
258
|
+
const response = await this.client.post(`${this.issuePath(input.issueKey)}/comment`, { body: input.body });
|
|
259
|
+
return response.data;
|
|
260
|
+
}
|
|
261
|
+
catch (error) {
|
|
262
|
+
throw httpError("Jira", "add comment", error);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* @description Lists the available workflow transitions for a Jira issue
|
|
267
|
+
* @summary `GET`s the issue's `/transitions` collection, whose IDs feed
|
|
268
|
+
* {@link JiraService.transitionIssue}.
|
|
269
|
+
* @param {string} issueKey - The issue key.
|
|
270
|
+
* @returns {Promise<unknown>} The available transitions payload.
|
|
271
|
+
* @throws {InternalError} When credentials are missing or the issue key is empty.
|
|
272
|
+
* @throws {NotFoundError} When the issue does not exist (HTTP 404).
|
|
273
|
+
* @throws {BadRequestError} When Jira rejects the request.
|
|
274
|
+
*/
|
|
275
|
+
async getTransitions(issueKey) {
|
|
276
|
+
this.requireCredentials();
|
|
277
|
+
try {
|
|
278
|
+
const response = await this.client.get(`${this.issuePath(issueKey)}/transitions`);
|
|
279
|
+
return response.data;
|
|
280
|
+
}
|
|
281
|
+
catch (error) {
|
|
282
|
+
throw httpError("Jira", "get transitions", error);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* @description Transitions a Jira issue through its workflow
|
|
287
|
+
* @summary `POST`s the transition ID to the issue's `/transitions` endpoint
|
|
288
|
+
* and returns the applied transition identifiers.
|
|
289
|
+
* @param {JiraTransitionInput} input - The issue key and transition ID.
|
|
290
|
+
* @returns {Promise<unknown>} `{ transitioned: true, issueKey, transitionId }` on success.
|
|
291
|
+
* @throws {InternalError} When credentials are missing, or the issue key or transition ID is empty.
|
|
292
|
+
* @throws {NotFoundError} When the issue does not exist (HTTP 404).
|
|
293
|
+
* @throws {BadRequestError} When Jira rejects the transition.
|
|
294
|
+
*/
|
|
295
|
+
async transitionIssue(input) {
|
|
296
|
+
this.requireCredentials();
|
|
297
|
+
if (!input.transitionId) {
|
|
298
|
+
throw new InternalError("Jira transitionIssue requires a transition id");
|
|
299
|
+
}
|
|
300
|
+
try {
|
|
301
|
+
await this.client.post(`${this.issuePath(input.issueKey)}/transitions`, {
|
|
302
|
+
transition: { id: input.transitionId },
|
|
303
|
+
});
|
|
304
|
+
return {
|
|
305
|
+
transitioned: true,
|
|
306
|
+
issueKey: input.issueKey,
|
|
307
|
+
transitionId: input.transitionId,
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
catch (error) {
|
|
311
|
+
throw httpError("Jira", "transition issue", error);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* @description Searches Jira issues with JQL
|
|
316
|
+
* @summary `POST`s the JQL query to `/rest/api/2/search` with a result cap
|
|
317
|
+
* (default `50`) and optional field projection.
|
|
318
|
+
* @param {JiraSearchInput} input - The JQL query and search options.
|
|
319
|
+
* @returns {Promise<unknown>} The search result payload.
|
|
320
|
+
* @throws {InternalError} When credentials are missing or the JQL query is empty.
|
|
321
|
+
* @throws {BadRequestError} When the JQL query is invalid.
|
|
322
|
+
* @example
|
|
323
|
+
* ```ts
|
|
324
|
+
* const results = await jira.search({
|
|
325
|
+
* jql: 'project = "OPS" AND status = "Open"',
|
|
326
|
+
* maxResults: 100,
|
|
327
|
+
* fields: ["summary", "status"],
|
|
328
|
+
* });
|
|
329
|
+
* ```
|
|
330
|
+
*/
|
|
331
|
+
async search(input) {
|
|
332
|
+
this.requireCredentials();
|
|
333
|
+
if (!input.jql) {
|
|
334
|
+
throw new InternalError("Jira search requires a JQL query");
|
|
335
|
+
}
|
|
336
|
+
try {
|
|
337
|
+
const response = await this.client.post("/rest/api/2/search", {
|
|
338
|
+
jql: input.jql,
|
|
339
|
+
maxResults: input.maxResults ?? 50,
|
|
340
|
+
...(input.fields ? { fields: input.fields } : {}),
|
|
341
|
+
});
|
|
342
|
+
return response.data;
|
|
343
|
+
}
|
|
344
|
+
catch (error) {
|
|
345
|
+
throw httpError("Jira", "search issues", error);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
//# sourceMappingURL=JiraService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JiraService.js","sourceRoot":"","sources":["../../../../src/io/jira/JiraService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/io/jira/index.ts"],"names":[],"mappings":"AAAA,iCAA8B"}
|