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