@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
|
@@ -1,25 +1,69 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/secrets/model/service
|
|
3
|
+
* @summary Model-backed encrypted secret service.
|
|
4
|
+
* @description Implements the `{@link ModelSecretService}`, an undecorated
|
|
5
|
+
* `ClientBasedSecretService` that
|
|
6
|
+
* persists AES-encrypted payloads as `{@link Secret}` rows through a
|
|
7
|
+
* decaf `Repository` (tenant/org-unit/owner scoping included). Encryption
|
|
8
|
+
* keys derive from a master `keySecret` via `CryptoService`; configuration
|
|
9
|
+
* comes from the `secrets.model` Environment slice or an explicit boot
|
|
10
|
+
* config (see `ModelSecretServiceConfig`).
|
|
11
|
+
*/
|
|
7
12
|
import { ClientBasedSecretService, SecretError } from "./../core/index.js";
|
|
8
13
|
import { validateSecretName, normalizeSecretName } from "./../core/index.js";
|
|
9
14
|
import { serializeSecretPayload, deserializeSecretPayload, } from "./../core/index.js";
|
|
10
15
|
import { Secret } from "./Secret.js";
|
|
11
|
-
import { Repository,
|
|
16
|
+
import { Repository, resolveTransactionLock, } from "@decaf-ts/core";
|
|
12
17
|
import { ModelSecretEnvironment } from "./ModelSecretEnvironment.js";
|
|
13
18
|
import { envString } from "./../../shared/environmentValue.js";
|
|
14
|
-
import { Condition } from "@decaf-ts/core";
|
|
19
|
+
import { Condition, OrderDirection } from "@decaf-ts/core";
|
|
15
20
|
import { CryptoService } from "@decaf-ts/crypto/integration/services/crypto";
|
|
16
21
|
import { InternalError, NotFoundError } from "@decaf-ts/db-decorators";
|
|
17
22
|
const DEFAULT_KEY_ID = "default-key";
|
|
18
|
-
|
|
23
|
+
/**
|
|
24
|
+
* @description Model-backed encrypted secret service
|
|
25
|
+
* @summary Stores each secret as a `{@link Secret}` row (encrypted payload,
|
|
26
|
+
* key id/iv/salt metadata, version, enablement flag, and optional
|
|
27
|
+
* tenant/org-unit/owner scope) through the repository booted as the service
|
|
28
|
+
* client. Names are validated and normalized before persistence;
|
|
29
|
+
* `(name, version)` is unique (enforced by a `SECRET_ALREADY_EXISTS`
|
|
30
|
+
* conflict in `store`/`rotate` and backed by the `uq_secrets_name_version`
|
|
31
|
+
* database index); retrieval only considers enabled rows, supports version
|
|
32
|
+
* pinning, and resolves multiple matches deterministically by `updatedAt
|
|
33
|
+
* DESC`. Delete is soft by default (sets `enabled: false`) unless
|
|
34
|
+
* `options.force` is set. Errors from the repository are translated into
|
|
35
|
+
* typed {@link SecretError}s by `parseError`.
|
|
36
|
+
*
|
|
37
|
+
* Undecorated and Environment-configurable
|
|
38
|
+
* through the `secrets.model` slice; the credential service
|
|
39
|
+
* (`CredentialService`) delegates user/runtime credential storage to this
|
|
40
|
+
* service.
|
|
41
|
+
* @class ModelSecretService
|
|
42
|
+
* @category Secrets
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts
|
|
45
|
+
* import { ModelSecretService } from "@decaf-ts/integrations/secrets";
|
|
46
|
+
*
|
|
47
|
+
* const modelSecrets = await new ModelSecretService().boot({
|
|
48
|
+
* keySecret: "model-master-key",
|
|
49
|
+
* });
|
|
50
|
+
* await modelSecrets.store("my-secret", { value: "s3cr3t" });
|
|
51
|
+
* const payload = await modelSecrets.retrieve<{ value: string }>("my-secret");
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export class ModelSecretService extends ClientBasedSecretService {
|
|
19
55
|
constructor() {
|
|
20
|
-
super(
|
|
56
|
+
super();
|
|
21
57
|
this.provider = "model";
|
|
22
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* @description Builds the model secret configuration from the Environment
|
|
61
|
+
* @summary Reads the `secrets.model` Environment slice and returns a
|
|
62
|
+
* `ModelSecretServiceConfig` when a `keySecret` is configured; returns
|
|
63
|
+
* `undefined` otherwise, letting boot fall back to explicit arguments.
|
|
64
|
+
* @returns {ModelSecretServiceConfig | undefined} The Environment-derived configuration, or `undefined`.
|
|
65
|
+
* @override
|
|
66
|
+
*/
|
|
23
67
|
configFromEnvironment() {
|
|
24
68
|
const env = ModelSecretEnvironment.secrets.model;
|
|
25
69
|
const keySecret = envString(env?.keySecret);
|
|
@@ -31,16 +75,43 @@ let ModelSecretService = class ModelSecretService extends ClientBasedSecretServi
|
|
|
31
75
|
keyId: envString(env.keyId),
|
|
32
76
|
};
|
|
33
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* @description Boots the crypto service and resolves the backing repository
|
|
80
|
+
* @summary Accepts the configuration (explicit args, merged with the
|
|
81
|
+
* Environment slice by the base) and an optional `Repository<Secret>` as the
|
|
82
|
+
* second argument; when absent, creates one via `Repository.forModel(Secret)`.
|
|
83
|
+
* Returns the config and repository as the service client.
|
|
84
|
+
* @param {ContextualArgs} args - Configuration and optional `Repository`/`Context` arguments.
|
|
85
|
+
* @returns {Promise<{config: ModelSecretServiceConfig, client: Repository<Secret, any>}>} The resolved config and repository client.
|
|
86
|
+
*/
|
|
34
87
|
async initialize(...args) {
|
|
35
88
|
const config = this.getConfigFromArgs(...args);
|
|
36
89
|
const repository = args[1] ||
|
|
37
|
-
|
|
90
|
+
Repository.forModel(Secret);
|
|
38
91
|
this.cryptoService = new CryptoService();
|
|
39
|
-
await this.cryptoService.
|
|
92
|
+
await this.cryptoService.boot({});
|
|
40
93
|
return { config, client: repository };
|
|
41
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* @description Encrypts and persists a secret row
|
|
97
|
+
* @summary Validates and normalizes the name, serializes the payload, and
|
|
98
|
+
* encrypts it with a key derived from the master `keySecret`, embedding the
|
|
99
|
+
* key id/iv/salt in the row's `encryption` metadata. The row carries the
|
|
100
|
+
* optional tenant/org-unit/owner scoping and version. `(name, version)` is
|
|
101
|
+
* unique: an application-level pre-check rejects a duplicate combination
|
|
102
|
+
* with a `SECRET_ALREADY_EXISTS` {@link SecretError} before the insert, and
|
|
103
|
+
* the `uq_secrets_name_version` database index (which treats `NULL`
|
|
104
|
+
* versions as `''`) backstops the same rule against concurrent writers.
|
|
105
|
+
* @template T - The secret payload type.
|
|
106
|
+
* @param {SecretName} name - The secret name (validated and normalized).
|
|
107
|
+
* @param {T} value - The payload to encrypt and store.
|
|
108
|
+
* @param {StoreSecretOptions} [options] - Optional content type, tags, version, and tenant/org/owner scoping.
|
|
109
|
+
* @param {MaybeContextualArg} args - Optional trailing decaf `Context` forwarded to the repository.
|
|
110
|
+
* @returns {Promise<SecretReference>} A reference to the persisted secret.
|
|
111
|
+
* @throws {SecretError} `SECRET_ALREADY_EXISTS` when a row with the same normalized name and version already exists, or `SECRET_NOT_FOUND`/`SECRET_PROVIDER_CONFLICT` when the name is invalid or the repository insert fails.
|
|
112
|
+
*/
|
|
42
113
|
async store(name, value, options = {}, ...args) {
|
|
43
|
-
const { log } = (await this.logCtx(args, "store", true)).for(this.store);
|
|
114
|
+
const { log, ctxArgs } = (await this.logCtx(args, "store", true)).for(this.store);
|
|
44
115
|
log.verbose(`Storing secret ${name}`);
|
|
45
116
|
try {
|
|
46
117
|
validateSecretName(name);
|
|
@@ -51,7 +122,8 @@ let ModelSecretService = class ModelSecretService extends ClientBasedSecretServi
|
|
|
51
122
|
const normalizedName = normalizeSecretName(name);
|
|
52
123
|
const serialized = serializeSecretPayload(value);
|
|
53
124
|
const derivedKey = await this.cryptoService.deriveKeyFromSecret(this.config.keySecret);
|
|
54
|
-
const
|
|
125
|
+
const extracted = this.cryptoService.extractKeyFromDerivedKey(derivedKey);
|
|
126
|
+
const { encryptedData, metadata } = await this.cryptoService.encryptPayload(JSON.stringify(serialized), this.config.keyId || DEFAULT_KEY_ID, extracted.key);
|
|
55
127
|
const now = new Date();
|
|
56
128
|
const secret = new Secret({
|
|
57
129
|
name: normalizedName,
|
|
@@ -60,20 +132,29 @@ let ModelSecretService = class ModelSecretService extends ClientBasedSecretServi
|
|
|
60
132
|
encryption: {
|
|
61
133
|
keyId: metadata.keyId,
|
|
62
134
|
iv: metadata.iv,
|
|
135
|
+
salt: extracted.salt,
|
|
63
136
|
},
|
|
64
137
|
contentType: options.contentType,
|
|
65
138
|
tags: options.tags,
|
|
66
139
|
enabled: true,
|
|
67
140
|
version: options.version,
|
|
141
|
+
tenantId: options.tenantId,
|
|
142
|
+
orgUnitId: options.orgUnitId,
|
|
143
|
+
ownerPrincipalId: options.ownerPrincipalId,
|
|
68
144
|
});
|
|
145
|
+
const targetVersion = options.version ?? "";
|
|
146
|
+
const existing = await this.client
|
|
147
|
+
.select()
|
|
148
|
+
.where(Condition.attr("name").eq(normalizedName))
|
|
149
|
+
.execute(...ctxArgs);
|
|
150
|
+
const duplicate = existing.some((row) => (row.version ?? "") === targetVersion);
|
|
151
|
+
if (duplicate) {
|
|
152
|
+
throw new SecretError("SECRET_ALREADY_EXISTS", `Secret ${JSON.stringify(normalizedName)}${targetVersion ? ` version ${JSON.stringify(targetVersion)}` : ""} already exists`);
|
|
153
|
+
}
|
|
69
154
|
try {
|
|
70
|
-
await this.client.create(secret);
|
|
155
|
+
await this.client.create(secret, ...ctxArgs);
|
|
71
156
|
}
|
|
72
157
|
catch (error) {
|
|
73
|
-
if (error?.message?.toLowerCase()?.includes?.("already") ||
|
|
74
|
-
error?.name === "ConflictError") {
|
|
75
|
-
throw this.parseError(error);
|
|
76
|
-
}
|
|
77
158
|
throw this.parseError(error);
|
|
78
159
|
}
|
|
79
160
|
return {
|
|
@@ -85,8 +166,28 @@ let ModelSecretService = class ModelSecretService extends ClientBasedSecretServi
|
|
|
85
166
|
},
|
|
86
167
|
};
|
|
87
168
|
}
|
|
169
|
+
/**
|
|
170
|
+
* @description Reads, decrypts, and deserializes an enabled secret row
|
|
171
|
+
* @summary Queries the newest matching enabled row (by normalized name and,
|
|
172
|
+
* optionally, version), re-derives the key using the row's salt, and decrypts
|
|
173
|
+
* the payload. Rows are ordered by `updatedAt DESC`, so when several rows
|
|
174
|
+
* share a name the most recently updated enabled row is resolved
|
|
175
|
+
* deterministically. The repository SELECT runs inside a principal-bound
|
|
176
|
+
* transaction (see {@link ModelSecretService.withinPrincipalTransaction}):
|
|
177
|
+
* it joins an in-flight `transactionLock` on the context or begins one,
|
|
178
|
+
* binding the context's principal to `app.principal_id` on TypeORM adapters
|
|
179
|
+
* so namespace RLS applies to the read. Missing rows throw
|
|
180
|
+
* {@link NotFoundError}; decryption and JSON parse failures throw
|
|
181
|
+
* `InternalError`.
|
|
182
|
+
* @template T - The secret payload type.
|
|
183
|
+
* @param {SecretName | SecretReference} nameOrRef - The secret name or reference.
|
|
184
|
+
* @param {RetrieveSecretOptions} [options] - Optional version filter.
|
|
185
|
+
* @param {MaybeContextualArg} args - Optional trailing decaf `Context` forwarded to the repository.
|
|
186
|
+
* @returns {Promise<T>} The decrypted payload.
|
|
187
|
+
* @throws {NotFoundError} When no enabled secret matches the name/version.
|
|
188
|
+
*/
|
|
88
189
|
async retrieve(nameOrRef, options = {}, ...args) {
|
|
89
|
-
const { log } = (await this.logCtx(args, "retrieve", true)).for(this.retrieve);
|
|
190
|
+
const { log, ctx, ctxArgs } = (await this.logCtx(args, "retrieve", true)).for(this.retrieve);
|
|
90
191
|
const nameStr = typeof nameOrRef === "string" ? nameOrRef : nameOrRef.name;
|
|
91
192
|
log.verbose(`Retrieving secret ${nameStr}`);
|
|
92
193
|
let name;
|
|
@@ -111,12 +212,17 @@ let ModelSecretService = class ModelSecretService extends ClientBasedSecretServi
|
|
|
111
212
|
condition = condition.and(Condition.attr("version").eq(version));
|
|
112
213
|
}
|
|
113
214
|
condition = condition.and(Condition.attr("enabled").eq(true));
|
|
114
|
-
const results = await this.
|
|
215
|
+
const results = await this.withinPrincipalTransaction(ctx, (lock) => this.client
|
|
216
|
+
.override({ transactionLock: lock })
|
|
217
|
+
.select()
|
|
218
|
+
.where(condition)
|
|
219
|
+
.orderBy(["updatedAt", OrderDirection.DSC])
|
|
220
|
+
.execute(...ctxArgs));
|
|
115
221
|
const existing = results[0];
|
|
116
222
|
if (!existing) {
|
|
117
223
|
throw new NotFoundError(`Secret "${normalizedName}" not found`);
|
|
118
224
|
}
|
|
119
|
-
const derivedKey = await this.cryptoService.deriveKeyFromSecret(this.config.keySecret);
|
|
225
|
+
const derivedKey = await this.cryptoService.deriveKeyFromSecret(this.config.keySecret, existing.encryption?.salt);
|
|
120
226
|
let decryptedValue;
|
|
121
227
|
try {
|
|
122
228
|
decryptedValue = await this.cryptoService.decryptPayload(existing.encryptedPayload, this.cryptoService.extractKeyFromDerivedKey(derivedKey).key);
|
|
@@ -124,14 +230,82 @@ let ModelSecretService = class ModelSecretService extends ClientBasedSecretServi
|
|
|
124
230
|
catch (error) {
|
|
125
231
|
throw new InternalError(`Failed to decrypt secret "${normalizedName}": ${error.message}`);
|
|
126
232
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
}
|
|
233
|
+
let payload;
|
|
234
|
+
try {
|
|
235
|
+
payload = JSON.parse(decryptedValue);
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
throw new InternalError(`Failed to deserialize secret "${normalizedName}": ${error.message}`);
|
|
239
|
+
}
|
|
131
240
|
return deserializeSecretPayload(payload);
|
|
132
241
|
}
|
|
242
|
+
/**
|
|
243
|
+
* @description Runs a repository operation inside a principal-bound transaction
|
|
244
|
+
* @summary Mirrors core's `@transactional()` proxy for single reads: reuses
|
|
245
|
+
* the `transactionLock` already cached on the context (nested call), or
|
|
246
|
+
* resolves a fresh lock for the service client via `resolveTransactionLock`
|
|
247
|
+
* and calls `begin(context)` - which, on a TypeORM adapter, binds the
|
|
248
|
+
* context's principal to `app.principal_id` for the new transaction.
|
|
249
|
+
* Increments the lock depth for the duration of the operation; on failure,
|
|
250
|
+
* rolls back and zeroes the depth (skipping a redundant rollback when an
|
|
251
|
+
* inner frame already ended the transaction) and rethrows the original
|
|
252
|
+
* error; on success, commits when the outermost frame completes.
|
|
253
|
+
* @template R - The operation result type.
|
|
254
|
+
* @param {Context} context - The request context, carrying any in-flight transaction lock.
|
|
255
|
+
* @param {function(ContextLock): Promise<R>} operation - The repository operation to run, receiving the active lock.
|
|
256
|
+
* @returns {Promise<R>} The operation result.
|
|
257
|
+
* @throws {InternalError} When the final commit fails; operation errors are rethrown after rollback.
|
|
258
|
+
*/
|
|
259
|
+
async withinPrincipalTransaction(context, operation) {
|
|
260
|
+
const existing = context.getOrUndefined("transactionLock");
|
|
261
|
+
const lock = existing ?? resolveTransactionLock(this.client);
|
|
262
|
+
lock.depth++;
|
|
263
|
+
if (!existing) {
|
|
264
|
+
await lock.begin(context);
|
|
265
|
+
context.cache.put("transactionLock", lock);
|
|
266
|
+
}
|
|
267
|
+
let result;
|
|
268
|
+
try {
|
|
269
|
+
result = await operation(lock);
|
|
270
|
+
}
|
|
271
|
+
catch (error) {
|
|
272
|
+
const alreadyEnded = lock.depth === 0;
|
|
273
|
+
lock.depth = 0;
|
|
274
|
+
if (!alreadyEnded) {
|
|
275
|
+
try {
|
|
276
|
+
await lock.rollback(error, context);
|
|
277
|
+
}
|
|
278
|
+
catch (rollbackError) {
|
|
279
|
+
void rollbackError;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
throw error;
|
|
283
|
+
}
|
|
284
|
+
lock.depth--;
|
|
285
|
+
if (lock.depth === 0) {
|
|
286
|
+
try {
|
|
287
|
+
await lock.commit(context);
|
|
288
|
+
}
|
|
289
|
+
catch (error) {
|
|
290
|
+
throw new InternalError(`Failed to commit transaction: ${error}`);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return result;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* @description Deletes (or disables) a secret row
|
|
297
|
+
* @summary Soft-deletes by default: the row is disabled and stamped with a
|
|
298
|
+
* new `updatedAt`. With `options.force`, the row is hard-deleted from the
|
|
299
|
+
* repository. Rows are ordered by `updatedAt DESC`, so the most recently
|
|
300
|
+
* updated matching row is resolved deterministically. A missing secret
|
|
301
|
+
* resolves silently.
|
|
302
|
+
* @param {SecretName | SecretReference} nameOrRef - The secret name or reference.
|
|
303
|
+
* @param {DeleteSecretOptions} [options] - Optional version filter and `force` hard-delete flag.
|
|
304
|
+
* @param {MaybeContextualArg} args - Optional trailing decaf `Context` forwarded to the repository.
|
|
305
|
+
* @returns {Promise<void>} Resolves once the row is deleted or disabled.
|
|
306
|
+
*/
|
|
133
307
|
async delete(nameOrRef, options = {}, ...args) {
|
|
134
|
-
const { log } = (await this.logCtx(args, "delete", true)).for(this.delete);
|
|
308
|
+
const { log, ctxArgs } = (await this.logCtx(args, "delete", true)).for(this.delete);
|
|
135
309
|
const nameStr = typeof nameOrRef === "string" ? nameOrRef : nameOrRef.name;
|
|
136
310
|
log.verbose(`Deleting secret ${nameStr}`);
|
|
137
311
|
let name;
|
|
@@ -153,22 +327,35 @@ let ModelSecretService = class ModelSecretService extends ClientBasedSecretServi
|
|
|
153
327
|
if (version) {
|
|
154
328
|
filter = filter.and(Condition.attr("version").eq(version));
|
|
155
329
|
}
|
|
156
|
-
const results = await this.client
|
|
330
|
+
const results = await this.client
|
|
331
|
+
.select()
|
|
332
|
+
.where(filter)
|
|
333
|
+
.orderBy(["updatedAt", OrderDirection.DSC])
|
|
334
|
+
.execute(...ctxArgs);
|
|
157
335
|
const existing = results[0];
|
|
158
336
|
if (!existing) {
|
|
159
337
|
return;
|
|
160
338
|
}
|
|
161
339
|
if (options.force) {
|
|
162
|
-
await this.client.delete(
|
|
340
|
+
await this.client.delete(existing.id, ...ctxArgs);
|
|
163
341
|
}
|
|
164
342
|
else {
|
|
165
343
|
existing.enabled = false;
|
|
166
344
|
existing.updatedAt = new Date();
|
|
167
|
-
await this.client.update(existing);
|
|
345
|
+
await this.client.update(existing, ...ctxArgs);
|
|
168
346
|
}
|
|
169
347
|
}
|
|
348
|
+
/**
|
|
349
|
+
* @description Checks whether an enabled secret exists (optionally at a version)
|
|
350
|
+
* @summary Counts enabled rows matching the normalized name (plus any
|
|
351
|
+
* requested version) and returns whether the count is positive.
|
|
352
|
+
* @param {SecretName | SecretReference} nameOrRef - The secret name or reference.
|
|
353
|
+
* @param {ExistsSecretOptions} [options] - Optional version filter.
|
|
354
|
+
* @param {MaybeContextualArg} args - Optional trailing decaf `Context` forwarded to the repository.
|
|
355
|
+
* @returns {Promise<boolean>} `true` when at least one enabled row matches.
|
|
356
|
+
*/
|
|
170
357
|
async exists(nameOrRef, options = {}, ...args) {
|
|
171
|
-
const { log } = (await this.logCtx(args, "exists", true)).for(this.exists);
|
|
358
|
+
const { log, ctxArgs } = (await this.logCtx(args, "exists", true)).for(this.exists);
|
|
172
359
|
const nameStr = typeof nameOrRef === "string" ? nameOrRef : nameOrRef.name;
|
|
173
360
|
log.verbose(`Checking if secret ${nameStr} exists`);
|
|
174
361
|
let name;
|
|
@@ -192,11 +379,19 @@ let ModelSecretService = class ModelSecretService extends ClientBasedSecretServi
|
|
|
192
379
|
if (version) {
|
|
193
380
|
filter = filter.and(Condition.attr("version").eq(version));
|
|
194
381
|
}
|
|
195
|
-
const count = await this.client.count().where(filter).execute();
|
|
382
|
+
const count = await this.client.count().where(filter).execute(...ctxArgs);
|
|
196
383
|
return count > 0;
|
|
197
384
|
}
|
|
385
|
+
/**
|
|
386
|
+
* @description Lists secret metadata across stored rows
|
|
387
|
+
* @summary Selects rows filtered by the `enabled` flag (when supplied) and
|
|
388
|
+
* maps them to `SecretMetadata` records (no payloads).
|
|
389
|
+
* @param {ListSecretsOptions} [options] - Optional `enabled` filter.
|
|
390
|
+
* @param {MaybeContextualArg} args - Optional trailing decaf `Context` forwarded to the repository.
|
|
391
|
+
* @returns {Promise<SecretMetadata[]>} Metadata for every matching secret.
|
|
392
|
+
*/
|
|
198
393
|
async list(options = {}, ...args) {
|
|
199
|
-
const { log } = (await this.logCtx(args, "list", true)).for(this.list);
|
|
394
|
+
const { log, ctxArgs } = (await this.logCtx(args, "list", true)).for(this.list);
|
|
200
395
|
log.verbose("Listing secrets");
|
|
201
396
|
let condition = null;
|
|
202
397
|
if (options.enabled !== undefined) {
|
|
@@ -205,7 +400,7 @@ let ModelSecretService = class ModelSecretService extends ClientBasedSecretServi
|
|
|
205
400
|
const secrets = await this.client
|
|
206
401
|
.select()
|
|
207
402
|
.where(condition || Condition.attr("name").dif(null))
|
|
208
|
-
.execute();
|
|
403
|
+
.execute(...ctxArgs);
|
|
209
404
|
return secrets.map((secret) => ({
|
|
210
405
|
provider: secret.provider,
|
|
211
406
|
name: secret.name,
|
|
@@ -217,8 +412,20 @@ let ModelSecretService = class ModelSecretService extends ClientBasedSecretServi
|
|
|
217
412
|
tags: secret.tags,
|
|
218
413
|
}));
|
|
219
414
|
}
|
|
415
|
+
/**
|
|
416
|
+
* @description Reads one secret's metadata without its payload
|
|
417
|
+
* @summary Selects the row matching the normalized name (and optional
|
|
418
|
+
* version) and maps it to `SecretMetadata`; tags are included only when
|
|
419
|
+
* `options.includeTags` is set. Rows are ordered by `updatedAt DESC`, so
|
|
420
|
+
* the most recently updated matching row is resolved deterministically.
|
|
421
|
+
* Returns `undefined` when no row matches.
|
|
422
|
+
* @param {SecretName | SecretReference} nameOrRef - The secret name or reference.
|
|
423
|
+
* @param {SecretMetadataOptions} [options] - Optional version filter and `includeTags` flag.
|
|
424
|
+
* @param {MaybeContextualArg} args - Optional trailing decaf `Context` forwarded to the repository.
|
|
425
|
+
* @returns {Promise<SecretMetadata | undefined>} The metadata, or `undefined` when absent.
|
|
426
|
+
*/
|
|
220
427
|
async metadata(nameOrRef, options = {}, ...args) {
|
|
221
|
-
const { log } = (await this.logCtx(args, "metadata", true)).for(this.metadata);
|
|
428
|
+
const { log, ctxArgs } = (await this.logCtx(args, "metadata", true)).for(this.metadata);
|
|
222
429
|
const nameStr = typeof nameOrRef === "string" ? nameOrRef : nameOrRef.name;
|
|
223
430
|
log.verbose(`Getting metadata for secret ${nameStr}`);
|
|
224
431
|
let name;
|
|
@@ -244,7 +451,8 @@ let ModelSecretService = class ModelSecretService extends ClientBasedSecretServi
|
|
|
244
451
|
const results = await this.client
|
|
245
452
|
.select()
|
|
246
453
|
.where(filter)
|
|
247
|
-
.
|
|
454
|
+
.orderBy(["updatedAt", OrderDirection.DSC])
|
|
455
|
+
.execute(...ctxArgs);
|
|
248
456
|
const secret = results[0];
|
|
249
457
|
if (!secret) {
|
|
250
458
|
return undefined;
|
|
@@ -263,6 +471,94 @@ let ModelSecretService = class ModelSecretService extends ClientBasedSecretServi
|
|
|
263
471
|
}
|
|
264
472
|
return meta;
|
|
265
473
|
}
|
|
474
|
+
/**
|
|
475
|
+
* @description Re-encrypts an enabled secret row with a new payload
|
|
476
|
+
* @summary Locates the enabled row (optionally pinned to
|
|
477
|
+
* `options.oldVersion`), encrypts the new payload with a freshly derived
|
|
478
|
+
* key (optionally tagged with `options.keyId`), and updates the row's
|
|
479
|
+
* payload, encryption metadata, version (`options.newVersion`), and
|
|
480
|
+
* `updatedAt`. When `options.newVersion` differs from the row's current
|
|
481
|
+
* version, a `(name, version)` duplicate check rejects the rotation with a
|
|
482
|
+
* `SECRET_ALREADY_EXISTS` {@link SecretError}; otherwise the target version
|
|
483
|
+
* is reused and the row is updated in place. Matching rows are ordered by
|
|
484
|
+
* `updatedAt DESC`, so the most recently updated enabled row is resolved
|
|
485
|
+
* deterministically.
|
|
486
|
+
* @template T - The secret payload type.
|
|
487
|
+
* @param {SecretName | SecretReference} nameOrRef - The secret name or reference.
|
|
488
|
+
* @param {T} value - The new payload.
|
|
489
|
+
* @param {RotateSecretOptions} [options] - Optional `newVersion`, `oldVersion`, and `keyId`.
|
|
490
|
+
* @param {MaybeContextualArg} args - Optional trailing decaf `Context` forwarded to the repository.
|
|
491
|
+
* @returns {Promise<SecretReference>} A reference reflecting the updated row.
|
|
492
|
+
* @throws {NotFoundError} When no enabled secret matches the name/version.
|
|
493
|
+
* @throws {SecretError} `SECRET_ALREADY_EXISTS` when the target `newVersion` is already held by another row with the same normalized name, or `SECRET_PROVIDER_CONFLICT` when the repository update fails.
|
|
494
|
+
*/
|
|
495
|
+
async rotate(nameOrRef, value, options = {}, ...args) {
|
|
496
|
+
const { log, ctxArgs } = (await this.logCtx(args, "rotate", true)).for(this.rotate);
|
|
497
|
+
const nameStr = typeof nameOrRef === "string" ? nameOrRef : nameOrRef.name;
|
|
498
|
+
log.verbose(`Rotating secret ${nameStr}`);
|
|
499
|
+
const normalizedName = normalizeSecretName(nameStr);
|
|
500
|
+
let condition = Condition.attr("name").eq(normalizedName);
|
|
501
|
+
condition = condition.and(Condition.attr("enabled").eq(true));
|
|
502
|
+
const version = options.oldVersion ??
|
|
503
|
+
(typeof nameOrRef === "object" ? nameOrRef.version : undefined);
|
|
504
|
+
if (version) {
|
|
505
|
+
condition = condition.and(Condition.attr("version").eq(version));
|
|
506
|
+
}
|
|
507
|
+
const results = await this.client
|
|
508
|
+
.select()
|
|
509
|
+
.where(condition)
|
|
510
|
+
.orderBy(["updatedAt", OrderDirection.DSC])
|
|
511
|
+
.execute(...ctxArgs);
|
|
512
|
+
const existing = results[0];
|
|
513
|
+
if (!existing) {
|
|
514
|
+
throw new NotFoundError(`Secret "${normalizedName}" not found`);
|
|
515
|
+
}
|
|
516
|
+
const nextVersion = options.newVersion ?? existing.version;
|
|
517
|
+
const targetVersion = nextVersion ?? "";
|
|
518
|
+
if (targetVersion !== (existing.version ?? "")) {
|
|
519
|
+
const rows = await this.client
|
|
520
|
+
.select()
|
|
521
|
+
.where(Condition.attr("name").eq(normalizedName))
|
|
522
|
+
.execute(...ctxArgs);
|
|
523
|
+
const duplicate = rows.some((row) => row.id !== existing.id && (row.version ?? "") === targetVersion);
|
|
524
|
+
if (duplicate) {
|
|
525
|
+
throw new SecretError("SECRET_ALREADY_EXISTS", `Secret ${JSON.stringify(normalizedName)}${targetVersion ? ` version ${JSON.stringify(targetVersion)}` : ""} already exists`);
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
const serialized = serializeSecretPayload(value);
|
|
529
|
+
const derivedKey = await this.cryptoService.deriveKeyFromSecret(this.config.keySecret);
|
|
530
|
+
const extracted = this.cryptoService.extractKeyFromDerivedKey(derivedKey);
|
|
531
|
+
const { encryptedData, metadata } = await this.cryptoService.encryptPayload(JSON.stringify(serialized), options.keyId || this.config.keyId || DEFAULT_KEY_ID, extracted.key);
|
|
532
|
+
existing.encryptedPayload = encryptedData;
|
|
533
|
+
existing.encryption = {
|
|
534
|
+
keyId: metadata.keyId,
|
|
535
|
+
iv: metadata.iv,
|
|
536
|
+
salt: extracted.salt,
|
|
537
|
+
};
|
|
538
|
+
existing.version = nextVersion;
|
|
539
|
+
existing.updatedAt = new Date();
|
|
540
|
+
try {
|
|
541
|
+
await this.client.update(existing, ...ctxArgs);
|
|
542
|
+
}
|
|
543
|
+
catch (error) {
|
|
544
|
+
throw this.parseError(error);
|
|
545
|
+
}
|
|
546
|
+
return {
|
|
547
|
+
provider: this.provider,
|
|
548
|
+
name: normalizedName,
|
|
549
|
+
version: existing.version,
|
|
550
|
+
};
|
|
551
|
+
}
|
|
552
|
+
/**
|
|
553
|
+
* @description Translates repository errors into typed secret errors
|
|
554
|
+
* @summary Inspects the error message for "not found"/404, "already
|
|
555
|
+
* exists"/conflict/409, and decryption-related markers and maps them to
|
|
556
|
+
* `SECRET_NOT_FOUND`, `SECRET_ALREADY_EXISTS`,
|
|
557
|
+
* `SECRET_DECRYPTION_FAILED`, or a generic `SECRET_PROVIDER_CONFLICT`
|
|
558
|
+
* {@link SecretError}.
|
|
559
|
+
* @param {unknown} error - The raw error thrown by the repository.
|
|
560
|
+
* @returns {SecretError} The typed secret error.
|
|
561
|
+
*/
|
|
266
562
|
parseError(error) {
|
|
267
563
|
const err = error;
|
|
268
564
|
const message = err.message || err.name || "Unknown error";
|
|
@@ -272,7 +568,10 @@ let ModelSecretService = class ModelSecretService extends ClientBasedSecretServi
|
|
|
272
568
|
}
|
|
273
569
|
if (lowerMessage.includes("already exists") ||
|
|
274
570
|
lowerMessage.includes("conflict") ||
|
|
275
|
-
lowerMessage.includes("409")
|
|
571
|
+
lowerMessage.includes("409") ||
|
|
572
|
+
lowerMessage.includes("duplicate key") ||
|
|
573
|
+
lowerMessage.includes("unique constraint") ||
|
|
574
|
+
err.code === "23505") {
|
|
276
575
|
return new SecretError("SECRET_ALREADY_EXISTS", `Secret already exists: ${message}`, err);
|
|
277
576
|
}
|
|
278
577
|
if (lowerMessage.includes("decryption") ||
|
|
@@ -281,9 +580,5 @@ let ModelSecretService = class ModelSecretService extends ClientBasedSecretServi
|
|
|
281
580
|
}
|
|
282
581
|
return new SecretError("SECRET_PROVIDER_CONFLICT", `Provider error: ${message}`, err);
|
|
283
582
|
}
|
|
284
|
-
}
|
|
285
|
-
ModelSecretService = __decorate([
|
|
286
|
-
service("secret-model")
|
|
287
|
-
], ModelSecretService);
|
|
288
|
-
export { ModelSecretService };
|
|
583
|
+
}
|
|
289
584
|
//# sourceMappingURL=ModelSecretService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelSecretService.js","sourceRoot":"","sources":["../../../../src/secrets/model/ModelSecretService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ModelSecretService.js","sourceRoot":"","sources":["../../../../src/secrets/model/ModelSecretService.ts"],"names":[],"mappings":"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"}
|