@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,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/shared/http/hermetic-boot
|
|
3
|
+
* @summary Environment-hermetic boot path for undecorated services used from graph nodes.
|
|
4
|
+
* @description Restores the Environment-hermeticity guarantee that was lost when
|
|
5
|
+
* the `nonEnvironmentService` wrappers were removed (SAA-1293 / DECAF-809): node
|
|
6
|
+
* execution must never inherit configuration from a service's Environment slice
|
|
7
|
+
* (SAA-1305 finding F1). {@link bootWithoutEnvironment} boots a service with an
|
|
8
|
+
* explicit config while temporarily shadowing the service's own
|
|
9
|
+
* `configFromEnvironment()` hook, so keys absent from the explicit config stay
|
|
10
|
+
* unset instead of silently picking up Environment-derived values (e.g. a
|
|
11
|
+
* `comms.email.allowPlaintextAuth` opt-in or an Environment `timeout` reaching an
|
|
12
|
+
* {@link HttpApiService} node boot).
|
|
13
|
+
*/
|
|
14
|
+
import { ValidationError } from "@decaf-ts/db-decorators";
|
|
15
|
+
/**
|
|
16
|
+
* @description Name of the instance property shadowed for the hermetic boot
|
|
17
|
+
* @summary Matches the `configFromEnvironment()` hook base services use to read
|
|
18
|
+
* their Environment slice.
|
|
19
|
+
*/
|
|
20
|
+
const CONFIG_FROM_ENVIRONMENT = "configFromEnvironment";
|
|
21
|
+
/**
|
|
22
|
+
* @description Per-instance scope registry for the hermetic boot shadow
|
|
23
|
+
* @summary WeakMap keyed by the service instance. Each entry records the
|
|
24
|
+
* service's original own `configFromEnvironment` property descriptor (`own`)
|
|
25
|
+
* together with a call depth (`depth`) counting the in-flight
|
|
26
|
+
* `bootWithoutEnvironment` calls on that instance. The first call on an
|
|
27
|
+
* instance creates the entry and installs the shadow; nested calls on the
|
|
28
|
+
* same instance only increment `depth` and never restore early; the entry is
|
|
29
|
+
* deleted and the original descriptor restored (or removed) when the outermost
|
|
30
|
+
* call completes, so overlapping calls on the same instance share a single
|
|
31
|
+
* shadow while the prototype is never touched.
|
|
32
|
+
*/
|
|
33
|
+
const shadowScopes = new WeakMap();
|
|
34
|
+
/**
|
|
35
|
+
* @description Boots a service with Environment-derived configuration disabled
|
|
36
|
+
* @summary Node-side replacement for the removed `nonEnvironmentService`
|
|
37
|
+
* wrappers (SAA-1293): the service's own `configFromEnvironment()` property
|
|
38
|
+
* descriptor is shadowed with `() => undefined` for the duration of the
|
|
39
|
+
* `boot()` call and restored (or removed, when the service had no own
|
|
40
|
+
* descriptor) in `finally`, so configuration keys absent from
|
|
41
|
+
* the explicit config cannot inherit the service's Environment slice. The
|
|
42
|
+
* shadowing is per-instance (the prototype is never touched): a module-level
|
|
43
|
+
* `WeakMap` (`shadowScopes`) tracks each service's original
|
|
44
|
+
* `configFromEnvironment` descriptor together with a call depth, so
|
|
45
|
+
* overlapping or nested `bootWithoutEnvironment` calls on the same instance
|
|
46
|
+
* share a single shadow; a nested call only increments that depth and never
|
|
47
|
+
* restores the descriptor early, and the original descriptor is restored (or
|
|
48
|
+
* deleted) only when the outermost call completes. The helper fails closed:
|
|
49
|
+
* an explicit config object is mandatory, so a node boot can never silently
|
|
50
|
+
* fall back to Environment configuration. The SAA-1293 undecorated-service
|
|
51
|
+
* contract stands — no decoration, no wrapper classes, no `Injectables`
|
|
52
|
+
* registration.
|
|
53
|
+
* @template CONF The explicit configuration object type passed to `boot()`.
|
|
54
|
+
* @template S The undecorated service type being booted.
|
|
55
|
+
* @param {S} service - The undecorated service instance to boot.
|
|
56
|
+
* @param {CONF} config - Explicit configuration object for the boot; Environment-derived config is disabled for this call.
|
|
57
|
+
* @param {...unknown} rest - Remaining `boot()` arguments (e.g. a decaf `Context`), forwarded unchanged.
|
|
58
|
+
* @returns {Promise<S>} The same service instance, booted with only the explicit configuration.
|
|
59
|
+
* @throws {ValidationError} When `config` is missing or not an object.
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* import { EmailService } from "@decaf-ts/integrations/comms/email";
|
|
63
|
+
* import { bootWithoutEnvironment } from "@decaf-ts/integrations/shared/http";
|
|
64
|
+
*
|
|
65
|
+
* const service = new EmailService();
|
|
66
|
+
* // The comms.email environment slice is ignored even when configured:
|
|
67
|
+
* // allowPlaintextAuth stays false unless the explicit config sets it.
|
|
68
|
+
* await bootWithoutEnvironment(service, {
|
|
69
|
+
* provider: "smtp",
|
|
70
|
+
* host: "smtp.example",
|
|
71
|
+
* port: 587,
|
|
72
|
+
* username: "user@example.com",
|
|
73
|
+
* password: "secret",
|
|
74
|
+
* });
|
|
75
|
+
* ```
|
|
76
|
+
* @category Shared
|
|
77
|
+
* @memberOf module:integrations/shared/http/hermetic-boot
|
|
78
|
+
* @mermaid
|
|
79
|
+
* sequenceDiagram
|
|
80
|
+
* autonumber
|
|
81
|
+
* participant Caller
|
|
82
|
+
* participant Helper as bootWithoutEnvironment
|
|
83
|
+
* participant Service as service
|
|
84
|
+
* Caller->>Helper: bootWithoutEnvironment(service, config, ...rest)
|
|
85
|
+
* activate Helper
|
|
86
|
+
* alt config missing or not an object
|
|
87
|
+
* Helper-->>Caller: ValidationError
|
|
88
|
+
* else explicit config present
|
|
89
|
+
* alt instance not yet shadowed
|
|
90
|
+
* Helper->>Service: capture own configFromEnvironment descriptor
|
|
91
|
+
* Helper->>Service: shadow own configFromEnvironment with () => undefined
|
|
92
|
+
* else re-entrant call on the same instance
|
|
93
|
+
* Helper->>Helper: increment shared scope depth
|
|
94
|
+
* end
|
|
95
|
+
* Helper->>Service: boot(config, ...rest)
|
|
96
|
+
* activate Service
|
|
97
|
+
* Service-->>Helper: boot completes
|
|
98
|
+
* deactivate Service
|
|
99
|
+
* alt outermost call (depth reaches 0)
|
|
100
|
+
* Helper->>Service: restore or remove own configFromEnvironment descriptor
|
|
101
|
+
* else nested call
|
|
102
|
+
* Note over Helper,Service: shared shadow stays in place
|
|
103
|
+
* end
|
|
104
|
+
* Helper-->>Caller: service
|
|
105
|
+
* end
|
|
106
|
+
* deactivate Helper
|
|
107
|
+
*/
|
|
108
|
+
export async function bootWithoutEnvironment(service, config, ...rest) {
|
|
109
|
+
if (!config || typeof config !== "object") {
|
|
110
|
+
throw new ValidationError("Node service boot requires an explicit configuration object; Environment configuration is disabled for node services");
|
|
111
|
+
}
|
|
112
|
+
const target = service;
|
|
113
|
+
let scope = shadowScopes.get(target);
|
|
114
|
+
if (scope) {
|
|
115
|
+
scope.depth += 1;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
scope = {
|
|
119
|
+
own: Object.getOwnPropertyDescriptor(target, CONFIG_FROM_ENVIRONMENT),
|
|
120
|
+
depth: 1,
|
|
121
|
+
};
|
|
122
|
+
Object.defineProperty(target, CONFIG_FROM_ENVIRONMENT, {
|
|
123
|
+
configurable: true,
|
|
124
|
+
writable: true,
|
|
125
|
+
value: () => undefined,
|
|
126
|
+
});
|
|
127
|
+
shadowScopes.set(target, scope);
|
|
128
|
+
}
|
|
129
|
+
try {
|
|
130
|
+
await target.boot(config, ...rest);
|
|
131
|
+
}
|
|
132
|
+
finally {
|
|
133
|
+
scope.depth -= 1;
|
|
134
|
+
if (scope.depth === 0) {
|
|
135
|
+
shadowScopes.delete(target);
|
|
136
|
+
if (scope.own) {
|
|
137
|
+
Object.defineProperty(target, CONFIG_FROM_ENVIRONMENT, scope.own);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
delete target[CONFIG_FROM_ENVIRONMENT];
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return service;
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=hermeticBoot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hermeticBoot.js","sourceRoot":"","sources":["../../../../src/shared/http/hermeticBoot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAW1D;;;;GAIG;AACH,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AAExD;;;;;;;;;;;GAWG;AACH,MAAM,YAAY,GAAG,IAAI,OAAO,EAG7B,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAG1C,OAAU,EAAE,MAAY,EAAE,GAAG,IAAe;IAC5C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,IAAI,eAAe,CACvB,sHAAsH,CACvH,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,OAAsC,CAAC;IACtD,IAAI,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IACnB,CAAC;SAAM,CAAC;QACN,KAAK,GAAG;YACN,GAAG,EAAE,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,uBAAuB,CAAC;YACrE,KAAK,EAAE,CAAC;SACT,CAAC;QACF,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,uBAAuB,EAAE;YACrD,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;SACvB,CAAC,CAAC;QACH,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IACrC,CAAC;YAAS,CAAC;QACT,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QACjB,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACtB,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5B,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;gBACd,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,uBAAuB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,OAAO,MAAM,CAAC,uBAAuB,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/shared/http
|
|
3
|
+
* @summary Shared HTTP plumbing for client-based API services.
|
|
4
|
+
* @description Re-exports {@link HttpApiService} (Axios-backed base class with
|
|
5
|
+
* environment-driven config), {@link httpError} (the failure-to-decaf-error
|
|
6
|
+
* mapper used by every API service), and {@link bootWithoutEnvironment} (the
|
|
7
|
+
* Environment-hermetic boot path used by as-graph node consumers).
|
|
8
|
+
*/
|
|
9
|
+
export * from "./HttpApiService.js";
|
|
10
|
+
export * from "./hermeticBoot.js";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared/http/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,oCAAiC;AACjC,kCAA+B"}
|
|
@@ -8,7 +8,7 @@ import { type ContextualArgs, type MaybeContextualArg } from "@decaf-ts/core";
|
|
|
8
8
|
import { BlobStoreService } from "../core/BlobStoreService.d.cts";
|
|
9
9
|
import type { AzureBlobStoreServiceConfig, BlobGetOptions, BlobGetResult, BlobKey, BlobListOptions, BlobListResult, BlobMetadata, BlobPutOptions, BlobPutResult, BlobUrlOptions, BlobUrlResult, BlobValue } from "../core/BlobTypes.d.cts";
|
|
10
10
|
/**
|
|
11
|
-
* @description Azure Blob storage service
|
|
11
|
+
* @description Undecorated Azure Blob storage service
|
|
12
12
|
* @summary Stores blobs in an Azure Blob Storage container via
|
|
13
13
|
* `@azure/storage-blob`, authenticating either with a connection string or
|
|
14
14
|
* `DefaultAzureCredential`, and signing URLs with SAS tokens.
|
|
@@ -27,18 +27,18 @@ export declare class AzureBlobStoreService extends BlobStoreService<ContainerCli
|
|
|
27
27
|
/**
|
|
28
28
|
* @description Builds the Azure blob config from the environment
|
|
29
29
|
* @summary Reads the `blobs.azure` environment slice; considered
|
|
30
|
-
* unconfigured when no `container` is set, which
|
|
31
|
-
*
|
|
30
|
+
* unconfigured when no `container` is set, in which case this returns
|
|
31
|
+
* `undefined` (see `getConfigFromArgs`).
|
|
32
32
|
* @return {AzureBlobStoreServiceConfig | undefined} The environment-derived config, or `undefined` when unconfigured
|
|
33
33
|
*/
|
|
34
34
|
protected configFromEnvironment(): AzureBlobStoreServiceConfig | undefined;
|
|
35
35
|
/**
|
|
36
36
|
* @description Initializes the Azure Blob container client
|
|
37
37
|
* @summary Resolves the config via `getConfigFromArgs` (explicit config,
|
|
38
|
-
* then the `blobs.azure` environment slice). When no config resolves
|
|
39
|
-
*
|
|
40
|
-
* `skipInitialization()` so
|
|
41
|
-
* `initialize()` with no resolvable config still throws a
|
|
38
|
+
* then the `blobs.azure` environment slice). When no config resolves and
|
|
39
|
+
* the arguments carry a decaf `Context`, returns
|
|
40
|
+
* `skipInitialization()` so the context-bearing boot does not throw; an
|
|
41
|
+
* explicit `initialize()` with no resolvable config still throws a
|
|
42
42
|
* `ValidationError`. Requires a `container`, builds the
|
|
43
43
|
* `BlobServiceClient` from the connection string when present or from the
|
|
44
44
|
* endpoint (defaulting to `https://<accountName>.blob.core.windows.net`)
|
|
@@ -8,7 +8,7 @@ import { type ContextualArgs, type MaybeContextualArg } from "@decaf-ts/core";
|
|
|
8
8
|
import { BlobStoreService } from "../core/BlobStoreService.d.mts";
|
|
9
9
|
import type { AzureBlobStoreServiceConfig, BlobGetOptions, BlobGetResult, BlobKey, BlobListOptions, BlobListResult, BlobMetadata, BlobPutOptions, BlobPutResult, BlobUrlOptions, BlobUrlResult, BlobValue } from "../core/BlobTypes.d.mts";
|
|
10
10
|
/**
|
|
11
|
-
* @description Azure Blob storage service
|
|
11
|
+
* @description Undecorated Azure Blob storage service
|
|
12
12
|
* @summary Stores blobs in an Azure Blob Storage container via
|
|
13
13
|
* `@azure/storage-blob`, authenticating either with a connection string or
|
|
14
14
|
* `DefaultAzureCredential`, and signing URLs with SAS tokens.
|
|
@@ -27,18 +27,18 @@ export declare class AzureBlobStoreService extends BlobStoreService<ContainerCli
|
|
|
27
27
|
/**
|
|
28
28
|
* @description Builds the Azure blob config from the environment
|
|
29
29
|
* @summary Reads the `blobs.azure` environment slice; considered
|
|
30
|
-
* unconfigured when no `container` is set, which
|
|
31
|
-
*
|
|
30
|
+
* unconfigured when no `container` is set, in which case this returns
|
|
31
|
+
* `undefined` (see `getConfigFromArgs`).
|
|
32
32
|
* @return {AzureBlobStoreServiceConfig | undefined} The environment-derived config, or `undefined` when unconfigured
|
|
33
33
|
*/
|
|
34
34
|
protected configFromEnvironment(): AzureBlobStoreServiceConfig | undefined;
|
|
35
35
|
/**
|
|
36
36
|
* @description Initializes the Azure Blob container client
|
|
37
37
|
* @summary Resolves the config via `getConfigFromArgs` (explicit config,
|
|
38
|
-
* then the `blobs.azure` environment slice). When no config resolves
|
|
39
|
-
*
|
|
40
|
-
* `skipInitialization()` so
|
|
41
|
-
* `initialize()` with no resolvable config still throws a
|
|
38
|
+
* then the `blobs.azure` environment slice). When no config resolves and
|
|
39
|
+
* the arguments carry a decaf `Context`, returns
|
|
40
|
+
* `skipInitialization()` so the context-bearing boot does not throw; an
|
|
41
|
+
* explicit `initialize()` with no resolvable config still throws a
|
|
42
42
|
* `ValidationError`. Requires a `container`, builds the
|
|
43
43
|
* `BlobServiceClient` from the connection string when present or from the
|
|
44
44
|
* endpoint (defaulting to `https://<accountName>.blob.core.windows.net`)
|
|
@@ -8,20 +8,21 @@ import type { BlobGetOptions, BlobGetResult, BlobKey, BlobListOptions, BlobListR
|
|
|
8
8
|
/**
|
|
9
9
|
* @description Base abstraction for blob store client services
|
|
10
10
|
* @summary Provides the shared key handling, URI composition, and
|
|
11
|
-
*
|
|
11
|
+
* boot-aware config resolution used by every provider backend
|
|
12
12
|
* (memory, local filesystem, S3-compatible, Azure Blob, GCS, IPFS).
|
|
13
13
|
*
|
|
14
|
-
* Extends {@link ClientBasedService}
|
|
15
|
-
* injectable services and auto-booted by `Service.boot
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* config
|
|
19
|
-
*
|
|
20
|
-
*
|
|
14
|
+
* Extends {@link ClientBasedService}. Decorated providers are registered as
|
|
15
|
+
* injectable services and auto-booted by `Service.boot`; undecorated providers
|
|
16
|
+
* are plain classes that consumers construct and boot explicitly. In a
|
|
17
|
+
* context-bearing boot the framework passes a decaf `Context` instead of a
|
|
18
|
+
* blob config, so {@link BlobStoreService.getConfigFromArgs} must distinguish
|
|
19
|
+
* the two: a real config always carries a non-empty string `provider`, while a
|
|
20
|
+
* `Context` does not. When neither an explicit config nor the provider's
|
|
21
|
+
* environment slice resolves a config, a context-bearing boot is skipped via
|
|
21
22
|
* {@link BlobStoreService.skipInitialization} instead of throwing, so optional
|
|
22
|
-
* providers (e.g. `blob-minio`/`blob-r2`
|
|
23
|
-
* block the rest of the service graph. An explicit `initialize()` call
|
|
24
|
-
* resolvable config still fails loudly with a {@link ValidationError}.
|
|
23
|
+
* providers (e.g. an unconfigured `blob-minio`/`blob-r2` next to `blob-s3`) do
|
|
24
|
+
* not block the rest of the service graph. An explicit `initialize()` call
|
|
25
|
+
* with no resolvable config still fails loudly with a {@link ValidationError}.
|
|
25
26
|
*
|
|
26
27
|
* @template TClient - The provider-specific client type created by `initialize`
|
|
27
28
|
* @template TConfig - The provider-specific config extending {@link BlobStoreServiceConfig}
|
|
@@ -32,7 +33,7 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
|
|
|
32
33
|
/**
|
|
33
34
|
* @description Initializes the base service
|
|
34
35
|
* @summary Delegates to {@link ClientBasedService}; config and client are
|
|
35
|
-
* only set by a successful `initialize()` (or skipped on
|
|
36
|
+
* only set by a successful `initialize()` (or skipped on a context-bearing boot).
|
|
36
37
|
*/
|
|
37
38
|
constructor();
|
|
38
39
|
/**
|
|
@@ -54,9 +55,9 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
|
|
|
54
55
|
* @summary Concrete providers resolve their config via
|
|
55
56
|
* {@link BlobStoreService.getConfigFromArgs}, build the provider client, and
|
|
56
57
|
* store both on `_config`/`_client`. When no config can be resolved during a
|
|
57
|
-
* context-bearing
|
|
58
|
+
* context-bearing boot, providers return
|
|
58
59
|
* {@link BlobStoreService.skipInitialization} instead of throwing.
|
|
59
|
-
* @param {...ContextualArg<any>} args - An optional blob config, optionally followed by a decaf `Context` (
|
|
60
|
+
* @param {...ContextualArg<any>} args - An optional blob config, optionally followed by a decaf `Context` (a context-bearing boot appends a `Context`)
|
|
60
61
|
* @return {Promise<{config: TConfig, client: TClient}>} The resolved config and constructed client
|
|
61
62
|
*/
|
|
62
63
|
abstract initialize(...args: ContextualArgs<any>): Promise<{
|
|
@@ -154,25 +155,25 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
|
|
|
154
155
|
protected cleanKey(key: BlobKey): string;
|
|
155
156
|
/**
|
|
156
157
|
* @description Resolves the provider config from the initialize arguments or the provider's environment slice
|
|
157
|
-
* @summary
|
|
158
|
-
*
|
|
158
|
+
* @summary A context-bearing boot passes a decaf `Context` (not a blob
|
|
159
|
+
* config) to the service, so an object-shaped argument must
|
|
159
160
|
* not blindly be treated as config. A real blob config always carries a
|
|
160
161
|
* non-empty string `provider` (see {@link BlobStoreService.isConfigLike}).
|
|
161
162
|
* Resolution order: explicit config argument, then the provider's
|
|
162
163
|
* `configFromEnvironment()` slice. When neither resolves, `undefined` is
|
|
163
|
-
* returned only for a context-bearing
|
|
164
|
-
* (e.g. an optional `blob-minio`/`blob-r2`
|
|
164
|
+
* returned only for a context-bearing boot so an unconfigured provider
|
|
165
|
+
* (e.g. an optional unconfigured `blob-minio`/`blob-r2` next to `blob-s3`)
|
|
165
166
|
* does not block the whole service graph from booting; an explicit
|
|
166
167
|
* `initialize()` with neither config nor environment still throws.
|
|
167
168
|
*
|
|
168
169
|
* @template TExpected - The provider-specific config type expected by the caller
|
|
169
170
|
* @param {...MaybeContextualArg<any>} args - Initialize arguments: an optional blob config and/or a decaf `Context`
|
|
170
|
-
* @return {TExpected | undefined} The resolved config, or `undefined` when a context-bearing
|
|
171
|
+
* @return {TExpected | undefined} The resolved config, or `undefined` when a context-bearing boot has no resolvable config
|
|
171
172
|
* @throws {ValidationError} When called explicitly (no `Context` in `args`) and no config argument or environment config is available
|
|
172
173
|
*
|
|
173
174
|
* @mermaid
|
|
174
175
|
* sequenceDiagram
|
|
175
|
-
* participant Caller as
|
|
176
|
+
* participant Caller as boot() / initialize()
|
|
176
177
|
* participant Service as BlobStoreService
|
|
177
178
|
* participant Env as configFromEnvironment()
|
|
178
179
|
*
|
|
@@ -190,7 +191,7 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
|
|
|
190
191
|
* Service-->>Caller: config
|
|
191
192
|
* else no env config
|
|
192
193
|
* Service->>Service: hasContext(args)
|
|
193
|
-
* alt Context present (
|
|
194
|
+
* alt Context present (context-bearing boot)
|
|
194
195
|
* Service-->>Caller: undefined (skip initialization)
|
|
195
196
|
* else explicit initialize()
|
|
196
197
|
* Service--xCaller: ValidationError
|
|
@@ -204,7 +205,7 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
|
|
|
204
205
|
* @description Determines whether a value is a blob config object
|
|
205
206
|
* @summary True only for an object that carries a non-empty string
|
|
206
207
|
* `provider` and is not a decaf `Context`. Avoids mistaking a contextual
|
|
207
|
-
* argument (e.g. the `Context`
|
|
208
|
+
* argument (e.g. the `Context` a context-bearing boot passes) for the config.
|
|
208
209
|
* @param {unknown} value - The value to test
|
|
209
210
|
* @return {boolean} `true` when the value is config-like
|
|
210
211
|
*/
|
|
@@ -221,8 +222,8 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
|
|
|
221
222
|
protected isContextLike(value: unknown): boolean;
|
|
222
223
|
/**
|
|
223
224
|
* @description Determines whether the initialize arguments carry a decaf `Context`
|
|
224
|
-
* @summary A `Context` in the arguments marks a
|
|
225
|
-
* unconfigured provider (resolved to a skip by
|
|
225
|
+
* @summary A `Context` in the arguments marks a context-bearing background
|
|
226
|
+
* boot of an unconfigured provider (resolved to a skip by
|
|
226
227
|
* {@link BlobStoreService.getConfigFromArgs}), as opposed to an explicit
|
|
227
228
|
* `initialize()` that must fail loudly when no config is available.
|
|
228
229
|
* @param {MaybeContextualArg<any>[]} args - The initialize arguments to inspect
|
|
@@ -230,17 +231,17 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
|
|
|
230
231
|
*/
|
|
231
232
|
protected hasContext(args: MaybeContextualArg<any>): boolean;
|
|
232
233
|
/**
|
|
233
|
-
* @description Skips initialization for an unconfigured provider during
|
|
234
|
+
* @description Skips initialization for an unconfigured provider during a context-bearing boot
|
|
234
235
|
* @summary Clears `_config`/`_client` and returns a `{ config, client }`
|
|
235
236
|
* result compatible with the `ClientBasedService.initialize` signature so
|
|
236
|
-
*
|
|
237
|
+
* the boot completes without throwing. Leaves the service
|
|
237
238
|
* deterministic: the `config`/`client` getters still throw if accessed until
|
|
238
239
|
* the service is explicitly initialized with a resolvable config, and the
|
|
239
240
|
* rest of the service graph is not blocked by this provider's absence.
|
|
240
241
|
* Concrete providers invoke this from `initialize()` when
|
|
241
242
|
* `getConfigFromArgs` resolves no config and cast the result to the
|
|
242
243
|
* declared return type.
|
|
243
|
-
* @return {{config: undefined, client: undefined}} An unset config/client pair for the
|
|
244
|
+
* @return {{config: undefined, client: undefined}} An unset config/client pair for the skip path
|
|
244
245
|
*/
|
|
245
246
|
protected skipInitialization(): {
|
|
246
247
|
config: undefined;
|
|
@@ -8,20 +8,21 @@ import type { BlobGetOptions, BlobGetResult, BlobKey, BlobListOptions, BlobListR
|
|
|
8
8
|
/**
|
|
9
9
|
* @description Base abstraction for blob store client services
|
|
10
10
|
* @summary Provides the shared key handling, URI composition, and
|
|
11
|
-
*
|
|
11
|
+
* boot-aware config resolution used by every provider backend
|
|
12
12
|
* (memory, local filesystem, S3-compatible, Azure Blob, GCS, IPFS).
|
|
13
13
|
*
|
|
14
|
-
* Extends {@link ClientBasedService}
|
|
15
|
-
* injectable services and auto-booted by `Service.boot
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* config
|
|
19
|
-
*
|
|
20
|
-
*
|
|
14
|
+
* Extends {@link ClientBasedService}. Decorated providers are registered as
|
|
15
|
+
* injectable services and auto-booted by `Service.boot`; undecorated providers
|
|
16
|
+
* are plain classes that consumers construct and boot explicitly. In a
|
|
17
|
+
* context-bearing boot the framework passes a decaf `Context` instead of a
|
|
18
|
+
* blob config, so {@link BlobStoreService.getConfigFromArgs} must distinguish
|
|
19
|
+
* the two: a real config always carries a non-empty string `provider`, while a
|
|
20
|
+
* `Context` does not. When neither an explicit config nor the provider's
|
|
21
|
+
* environment slice resolves a config, a context-bearing boot is skipped via
|
|
21
22
|
* {@link BlobStoreService.skipInitialization} instead of throwing, so optional
|
|
22
|
-
* providers (e.g. `blob-minio`/`blob-r2`
|
|
23
|
-
* block the rest of the service graph. An explicit `initialize()` call
|
|
24
|
-
* resolvable config still fails loudly with a {@link ValidationError}.
|
|
23
|
+
* providers (e.g. an unconfigured `blob-minio`/`blob-r2` next to `blob-s3`) do
|
|
24
|
+
* not block the rest of the service graph. An explicit `initialize()` call
|
|
25
|
+
* with no resolvable config still fails loudly with a {@link ValidationError}.
|
|
25
26
|
*
|
|
26
27
|
* @template TClient - The provider-specific client type created by `initialize`
|
|
27
28
|
* @template TConfig - The provider-specific config extending {@link BlobStoreServiceConfig}
|
|
@@ -32,7 +33,7 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
|
|
|
32
33
|
/**
|
|
33
34
|
* @description Initializes the base service
|
|
34
35
|
* @summary Delegates to {@link ClientBasedService}; config and client are
|
|
35
|
-
* only set by a successful `initialize()` (or skipped on
|
|
36
|
+
* only set by a successful `initialize()` (or skipped on a context-bearing boot).
|
|
36
37
|
*/
|
|
37
38
|
constructor();
|
|
38
39
|
/**
|
|
@@ -54,9 +55,9 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
|
|
|
54
55
|
* @summary Concrete providers resolve their config via
|
|
55
56
|
* {@link BlobStoreService.getConfigFromArgs}, build the provider client, and
|
|
56
57
|
* store both on `_config`/`_client`. When no config can be resolved during a
|
|
57
|
-
* context-bearing
|
|
58
|
+
* context-bearing boot, providers return
|
|
58
59
|
* {@link BlobStoreService.skipInitialization} instead of throwing.
|
|
59
|
-
* @param {...ContextualArg<any>} args - An optional blob config, optionally followed by a decaf `Context` (
|
|
60
|
+
* @param {...ContextualArg<any>} args - An optional blob config, optionally followed by a decaf `Context` (a context-bearing boot appends a `Context`)
|
|
60
61
|
* @return {Promise<{config: TConfig, client: TClient}>} The resolved config and constructed client
|
|
61
62
|
*/
|
|
62
63
|
abstract initialize(...args: ContextualArgs<any>): Promise<{
|
|
@@ -154,25 +155,25 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
|
|
|
154
155
|
protected cleanKey(key: BlobKey): string;
|
|
155
156
|
/**
|
|
156
157
|
* @description Resolves the provider config from the initialize arguments or the provider's environment slice
|
|
157
|
-
* @summary
|
|
158
|
-
*
|
|
158
|
+
* @summary A context-bearing boot passes a decaf `Context` (not a blob
|
|
159
|
+
* config) to the service, so an object-shaped argument must
|
|
159
160
|
* not blindly be treated as config. A real blob config always carries a
|
|
160
161
|
* non-empty string `provider` (see {@link BlobStoreService.isConfigLike}).
|
|
161
162
|
* Resolution order: explicit config argument, then the provider's
|
|
162
163
|
* `configFromEnvironment()` slice. When neither resolves, `undefined` is
|
|
163
|
-
* returned only for a context-bearing
|
|
164
|
-
* (e.g. an optional `blob-minio`/`blob-r2`
|
|
164
|
+
* returned only for a context-bearing boot so an unconfigured provider
|
|
165
|
+
* (e.g. an optional unconfigured `blob-minio`/`blob-r2` next to `blob-s3`)
|
|
165
166
|
* does not block the whole service graph from booting; an explicit
|
|
166
167
|
* `initialize()` with neither config nor environment still throws.
|
|
167
168
|
*
|
|
168
169
|
* @template TExpected - The provider-specific config type expected by the caller
|
|
169
170
|
* @param {...MaybeContextualArg<any>} args - Initialize arguments: an optional blob config and/or a decaf `Context`
|
|
170
|
-
* @return {TExpected | undefined} The resolved config, or `undefined` when a context-bearing
|
|
171
|
+
* @return {TExpected | undefined} The resolved config, or `undefined` when a context-bearing boot has no resolvable config
|
|
171
172
|
* @throws {ValidationError} When called explicitly (no `Context` in `args`) and no config argument or environment config is available
|
|
172
173
|
*
|
|
173
174
|
* @mermaid
|
|
174
175
|
* sequenceDiagram
|
|
175
|
-
* participant Caller as
|
|
176
|
+
* participant Caller as boot() / initialize()
|
|
176
177
|
* participant Service as BlobStoreService
|
|
177
178
|
* participant Env as configFromEnvironment()
|
|
178
179
|
*
|
|
@@ -190,7 +191,7 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
|
|
|
190
191
|
* Service-->>Caller: config
|
|
191
192
|
* else no env config
|
|
192
193
|
* Service->>Service: hasContext(args)
|
|
193
|
-
* alt Context present (
|
|
194
|
+
* alt Context present (context-bearing boot)
|
|
194
195
|
* Service-->>Caller: undefined (skip initialization)
|
|
195
196
|
* else explicit initialize()
|
|
196
197
|
* Service--xCaller: ValidationError
|
|
@@ -204,7 +205,7 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
|
|
|
204
205
|
* @description Determines whether a value is a blob config object
|
|
205
206
|
* @summary True only for an object that carries a non-empty string
|
|
206
207
|
* `provider` and is not a decaf `Context`. Avoids mistaking a contextual
|
|
207
|
-
* argument (e.g. the `Context`
|
|
208
|
+
* argument (e.g. the `Context` a context-bearing boot passes) for the config.
|
|
208
209
|
* @param {unknown} value - The value to test
|
|
209
210
|
* @return {boolean} `true` when the value is config-like
|
|
210
211
|
*/
|
|
@@ -221,8 +222,8 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
|
|
|
221
222
|
protected isContextLike(value: unknown): boolean;
|
|
222
223
|
/**
|
|
223
224
|
* @description Determines whether the initialize arguments carry a decaf `Context`
|
|
224
|
-
* @summary A `Context` in the arguments marks a
|
|
225
|
-
* unconfigured provider (resolved to a skip by
|
|
225
|
+
* @summary A `Context` in the arguments marks a context-bearing background
|
|
226
|
+
* boot of an unconfigured provider (resolved to a skip by
|
|
226
227
|
* {@link BlobStoreService.getConfigFromArgs}), as opposed to an explicit
|
|
227
228
|
* `initialize()` that must fail loudly when no config is available.
|
|
228
229
|
* @param {MaybeContextualArg<any>[]} args - The initialize arguments to inspect
|
|
@@ -230,17 +231,17 @@ export declare abstract class BlobStoreService<TClient = unknown, TConfig extend
|
|
|
230
231
|
*/
|
|
231
232
|
protected hasContext(args: MaybeContextualArg<any>): boolean;
|
|
232
233
|
/**
|
|
233
|
-
* @description Skips initialization for an unconfigured provider during
|
|
234
|
+
* @description Skips initialization for an unconfigured provider during a context-bearing boot
|
|
234
235
|
* @summary Clears `_config`/`_client` and returns a `{ config, client }`
|
|
235
236
|
* result compatible with the `ClientBasedService.initialize` signature so
|
|
236
|
-
*
|
|
237
|
+
* the boot completes without throwing. Leaves the service
|
|
237
238
|
* deterministic: the `config`/`client` getters still throw if accessed until
|
|
238
239
|
* the service is explicitly initialized with a resolvable config, and the
|
|
239
240
|
* rest of the service graph is not blocked by this provider's absence.
|
|
240
241
|
* Concrete providers invoke this from `initialize()` when
|
|
241
242
|
* `getConfigFromArgs` resolves no config and cast the result to the
|
|
242
243
|
* declared return type.
|
|
243
|
-
* @return {{config: undefined, client: undefined}} An unset config/client pair for the
|
|
244
|
+
* @return {{config: undefined, client: undefined}} An unset config/client pair for the skip path
|
|
244
245
|
*/
|
|
245
246
|
protected skipInitialization(): {
|
|
246
247
|
config: undefined;
|
|
@@ -8,7 +8,7 @@ import { type ContextualArgs, type MaybeContextualArg } from "@decaf-ts/core";
|
|
|
8
8
|
import { BlobStoreService } from "../core/BlobStoreService.d.cts";
|
|
9
9
|
import type { BlobGetOptions, BlobGetResult, BlobKey, BlobListOptions, BlobListResult, BlobMetadata, BlobPutOptions, BlobPutResult, BlobUrlOptions, BlobUrlResult, BlobValue, GcsBlobStoreServiceConfig } from "../core/BlobTypes.d.cts";
|
|
10
10
|
/**
|
|
11
|
-
* @description Google Cloud Storage blob store service
|
|
11
|
+
* @description Undecorated Google Cloud Storage blob store service
|
|
12
12
|
* @summary Stores blobs in a GCS bucket via `@google-cloud/storage`,
|
|
13
13
|
* authenticating with optional explicit credentials or the environment's
|
|
14
14
|
* application default credentials.
|
|
@@ -26,18 +26,18 @@ export declare class GcsBlobStoreService extends BlobStoreService<Bucket, GcsBlo
|
|
|
26
26
|
/**
|
|
27
27
|
* @description Builds the GCS blob config from the environment
|
|
28
28
|
* @summary Reads the `blobs.gcs` environment slice; considered
|
|
29
|
-
* unconfigured when no `bucket` is set, which
|
|
30
|
-
*
|
|
29
|
+
* unconfigured when no `bucket` is set, in which case this returns
|
|
30
|
+
* `undefined` (see `getConfigFromArgs`).
|
|
31
31
|
* @return {GcsBlobStoreServiceConfig | undefined} The environment-derived config, or `undefined` when unconfigured
|
|
32
32
|
*/
|
|
33
33
|
protected configFromEnvironment(): GcsBlobStoreServiceConfig | undefined;
|
|
34
34
|
/**
|
|
35
35
|
* @description Initializes the GCS bucket client
|
|
36
36
|
* @summary Resolves the config via `getConfigFromArgs` (explicit config,
|
|
37
|
-
* then the `blobs.gcs` environment slice). When no config resolves
|
|
38
|
-
*
|
|
39
|
-
* `skipInitialization()` so
|
|
40
|
-
* `initialize()` with no resolvable config still throws a
|
|
37
|
+
* then the `blobs.gcs` environment slice). When no config resolves and the
|
|
38
|
+
* arguments carry a decaf `Context`, returns
|
|
39
|
+
* `skipInitialization()` so the context-bearing boot does not throw; an
|
|
40
|
+
* explicit `initialize()` with no resolvable config still throws a
|
|
41
41
|
* `ValidationError`. Requires a `bucket`, builds the `Storage` client with
|
|
42
42
|
* the configured project ID, credentials, and API endpoint, and stores the
|
|
43
43
|
* bucket client.
|
|
@@ -8,7 +8,7 @@ import { type ContextualArgs, type MaybeContextualArg } from "@decaf-ts/core";
|
|
|
8
8
|
import { BlobStoreService } from "../core/BlobStoreService.d.mts";
|
|
9
9
|
import type { BlobGetOptions, BlobGetResult, BlobKey, BlobListOptions, BlobListResult, BlobMetadata, BlobPutOptions, BlobPutResult, BlobUrlOptions, BlobUrlResult, BlobValue, GcsBlobStoreServiceConfig } from "../core/BlobTypes.d.mts";
|
|
10
10
|
/**
|
|
11
|
-
* @description Google Cloud Storage blob store service
|
|
11
|
+
* @description Undecorated Google Cloud Storage blob store service
|
|
12
12
|
* @summary Stores blobs in a GCS bucket via `@google-cloud/storage`,
|
|
13
13
|
* authenticating with optional explicit credentials or the environment's
|
|
14
14
|
* application default credentials.
|
|
@@ -26,18 +26,18 @@ export declare class GcsBlobStoreService extends BlobStoreService<Bucket, GcsBlo
|
|
|
26
26
|
/**
|
|
27
27
|
* @description Builds the GCS blob config from the environment
|
|
28
28
|
* @summary Reads the `blobs.gcs` environment slice; considered
|
|
29
|
-
* unconfigured when no `bucket` is set, which
|
|
30
|
-
*
|
|
29
|
+
* unconfigured when no `bucket` is set, in which case this returns
|
|
30
|
+
* `undefined` (see `getConfigFromArgs`).
|
|
31
31
|
* @return {GcsBlobStoreServiceConfig | undefined} The environment-derived config, or `undefined` when unconfigured
|
|
32
32
|
*/
|
|
33
33
|
protected configFromEnvironment(): GcsBlobStoreServiceConfig | undefined;
|
|
34
34
|
/**
|
|
35
35
|
* @description Initializes the GCS bucket client
|
|
36
36
|
* @summary Resolves the config via `getConfigFromArgs` (explicit config,
|
|
37
|
-
* then the `blobs.gcs` environment slice). When no config resolves
|
|
38
|
-
*
|
|
39
|
-
* `skipInitialization()` so
|
|
40
|
-
* `initialize()` with no resolvable config still throws a
|
|
37
|
+
* then the `blobs.gcs` environment slice). When no config resolves and the
|
|
38
|
+
* arguments carry a decaf `Context`, returns
|
|
39
|
+
* `skipInitialization()` so the context-bearing boot does not throw; an
|
|
40
|
+
* explicit `initialize()` with no resolvable config still throws a
|
|
41
41
|
* `ValidationError`. Requires a `bucket`, builds the `Storage` client with
|
|
42
42
|
* the configured project ID, credentials, and API endpoint, and stores the
|
|
43
43
|
* bucket client.
|
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module integrations/blob/s3/service
|
|
3
3
|
* @summary AWS S3 blob store service.
|
|
4
|
-
* @description Thin
|
|
4
|
+
* @description Thin undecorated AWS S3 provider service on top of {@link S3CompatibleBlobStoreService}.
|
|
5
5
|
*/
|
|
6
6
|
import { ContextualArgs } from "@decaf-ts/core";
|
|
7
7
|
import { S3CompatibleBlobStoreService } from "./S3CompatibleBlobStoreService.d.cts";
|
|
8
8
|
import type { S3BlobStoreServiceConfig } from "../core/BlobTypes.d.cts";
|
|
9
9
|
import { S3Client } from "@aws-sdk/client-s3";
|
|
10
|
+
/**
|
|
11
|
+
* @description AWS S3 blob store service
|
|
12
|
+
* @summary Undecorated provider service storing blobs in an AWS S3 bucket
|
|
13
|
+
* through {@link S3CompatibleBlobStoreService}. Falls back to the `blobs.s3`
|
|
14
|
+
* environment slice when `initialize()` is called without an explicit config.
|
|
15
|
+
* @class S3BlobStoreService
|
|
16
|
+
* @memberOf module:integrations/blob/s3/service
|
|
17
|
+
*/
|
|
10
18
|
export declare class S3BlobStoreService extends S3CompatibleBlobStoreService {
|
|
11
19
|
protected configFromEnvironment(): S3BlobStoreServiceConfig | undefined;
|
|
12
20
|
initialize(...args: ContextualArgs<any>): Promise<{
|
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module integrations/blob/s3/service
|
|
3
3
|
* @summary AWS S3 blob store service.
|
|
4
|
-
* @description Thin
|
|
4
|
+
* @description Thin undecorated AWS S3 provider service on top of {@link S3CompatibleBlobStoreService}.
|
|
5
5
|
*/
|
|
6
6
|
import { ContextualArgs } from "@decaf-ts/core";
|
|
7
7
|
import { S3CompatibleBlobStoreService } from "./S3CompatibleBlobStoreService.d.mts";
|
|
8
8
|
import type { S3BlobStoreServiceConfig } from "../core/BlobTypes.d.mts";
|
|
9
9
|
import { S3Client } from "@aws-sdk/client-s3";
|
|
10
|
+
/**
|
|
11
|
+
* @description AWS S3 blob store service
|
|
12
|
+
* @summary Undecorated provider service storing blobs in an AWS S3 bucket
|
|
13
|
+
* through {@link S3CompatibleBlobStoreService}. Falls back to the `blobs.s3`
|
|
14
|
+
* environment slice when `initialize()` is called without an explicit config.
|
|
15
|
+
* @class S3BlobStoreService
|
|
16
|
+
* @memberOf module:integrations/blob/s3/service
|
|
17
|
+
*/
|
|
10
18
|
export declare class S3BlobStoreService extends S3CompatibleBlobStoreService {
|
|
11
19
|
protected configFromEnvironment(): S3BlobStoreServiceConfig | undefined;
|
|
12
20
|
initialize(...args: ContextualArgs<any>): Promise<{
|