@parmana/shared 0.0.0-stage → 2.0.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/LICENSE +202 -0
- package/NOTICE +8 -0
- package/README.md +16 -2
- package/dist/.tsbuildinfo +1 -0
- package/dist/config/ApiKeyEntry.d.ts +97 -0
- package/dist/config/ApiKeyEntry.d.ts.map +1 -0
- package/dist/config/ApiKeyEntry.js +2 -0
- package/dist/config/ApiKeyEntry.js.map +1 -0
- package/dist/config/Config.d.ts +227 -0
- package/dist/config/Config.d.ts.map +1 -0
- package/dist/config/Config.js +172 -0
- package/dist/config/Config.js.map +1 -0
- package/dist/config/ConfigLoader.d.ts +5 -0
- package/dist/config/ConfigLoader.d.ts.map +1 -0
- package/dist/config/ConfigLoader.js +8 -0
- package/dist/config/ConfigLoader.js.map +1 -0
- package/dist/config/ConfigUtils.d.ts +6 -0
- package/dist/config/ConfigUtils.d.ts.map +1 -0
- package/dist/config/ConfigUtils.js +8 -0
- package/dist/config/ConfigUtils.js.map +1 -0
- package/dist/config/ConfigValidation.d.ts +30 -0
- package/dist/config/ConfigValidation.d.ts.map +1 -0
- package/dist/config/ConfigValidation.js +191 -0
- package/dist/config/ConfigValidation.js.map +1 -0
- package/dist/config/CryptoAlgorithms.d.ts +38 -0
- package/dist/config/CryptoAlgorithms.d.ts.map +1 -0
- package/dist/config/CryptoAlgorithms.js +38 -0
- package/dist/config/CryptoAlgorithms.js.map +1 -0
- package/dist/config/Doctor.d.ts +46 -0
- package/dist/config/Doctor.d.ts.map +1 -0
- package/dist/config/Doctor.js +781 -0
- package/dist/config/Doctor.js.map +1 -0
- package/dist/config/KeyProviders.d.ts +9 -0
- package/dist/config/KeyProviders.d.ts.map +1 -0
- package/dist/config/KeyProviders.js +8 -0
- package/dist/config/KeyProviders.js.map +1 -0
- package/dist/config/SecretsProviders.d.ts +6 -0
- package/dist/config/SecretsProviders.d.ts.map +1 -0
- package/dist/config/SecretsProviders.js +5 -0
- package/dist/config/SecretsProviders.js.map +1 -0
- package/dist/config/StorageProviders.d.ts +18 -0
- package/dist/config/StorageProviders.d.ts.map +1 -0
- package/dist/config/StorageProviders.js +20 -0
- package/dist/config/StorageProviders.js.map +1 -0
- package/dist/config/TrustProfiles.d.ts +5 -0
- package/dist/config/TrustProfiles.d.ts.map +1 -0
- package/dist/config/TrustProfiles.js +4 -0
- package/dist/config/TrustProfiles.js.map +1 -0
- package/dist/config/index.d.ts +12 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +12 -0
- package/dist/config/index.js.map +1 -0
- package/dist/domain/approval-artifact.d.ts +136 -0
- package/dist/domain/approval-artifact.d.ts.map +1 -0
- package/dist/domain/approval-artifact.js +2 -0
- package/dist/domain/approval-artifact.js.map +1 -0
- package/dist/domain/approval-issuer.d.ts +52 -0
- package/dist/domain/approval-issuer.d.ts.map +1 -0
- package/dist/domain/approval-issuer.js +2 -0
- package/dist/domain/approval-issuer.js.map +1 -0
- package/dist/domain/authority-grant.d.ts +54 -0
- package/dist/domain/authority-grant.d.ts.map +1 -0
- package/dist/domain/authority-grant.js +2 -0
- package/dist/domain/authority-grant.js.map +1 -0
- package/dist/domain/authority.d.ts +42 -0
- package/dist/domain/authority.d.ts.map +1 -0
- package/dist/domain/authority.js +11 -0
- package/dist/domain/authority.js.map +1 -0
- package/dist/domain/authorization.d.ts +54 -0
- package/dist/domain/authorization.d.ts.map +1 -0
- package/dist/domain/authorization.js +2 -0
- package/dist/domain/authorization.js.map +1 -0
- package/dist/domain/business-signal-source.d.ts +52 -0
- package/dist/domain/business-signal-source.d.ts.map +1 -0
- package/dist/domain/business-signal-source.js +2 -0
- package/dist/domain/business-signal-source.js.map +1 -0
- package/dist/domain/business-transaction.d.ts +99 -0
- package/dist/domain/business-transaction.d.ts.map +1 -0
- package/dist/domain/business-transaction.js +16 -0
- package/dist/domain/business-transaction.js.map +1 -0
- package/dist/domain/business-validation.d.ts +177 -0
- package/dist/domain/business-validation.d.ts.map +1 -0
- package/dist/domain/business-validation.js +60 -0
- package/dist/domain/business-validation.js.map +1 -0
- package/dist/domain/challenge-record.d.ts +181 -0
- package/dist/domain/challenge-record.d.ts.map +1 -0
- package/dist/domain/challenge-record.js +2 -0
- package/dist/domain/challenge-record.js.map +1 -0
- package/dist/domain/decision.d.ts +97 -0
- package/dist/domain/decision.d.ts.map +1 -0
- package/dist/domain/decision.js +9 -0
- package/dist/domain/decision.js.map +1 -0
- package/dist/domain/evidence-anchor.d.ts +54 -0
- package/dist/domain/evidence-anchor.d.ts.map +1 -0
- package/dist/domain/evidence-anchor.js +2 -0
- package/dist/domain/evidence-anchor.js.map +1 -0
- package/dist/domain/executable-content.d.ts +45 -0
- package/dist/domain/executable-content.d.ts.map +1 -0
- package/dist/domain/executable-content.js +39 -0
- package/dist/domain/executable-content.js.map +1 -0
- package/dist/domain/execution-audit-event.d.ts +65 -0
- package/dist/domain/execution-audit-event.d.ts.map +1 -0
- package/dist/domain/execution-audit-event.js +2 -0
- package/dist/domain/execution-audit-event.js.map +1 -0
- package/dist/domain/execution-authorization.d.ts +224 -0
- package/dist/domain/execution-authorization.d.ts.map +1 -0
- package/dist/domain/execution-authorization.js +2 -0
- package/dist/domain/execution-authorization.js.map +1 -0
- package/dist/domain/execution-evidence.d.ts +38 -0
- package/dist/domain/execution-evidence.d.ts.map +1 -0
- package/dist/domain/execution-evidence.js +2 -0
- package/dist/domain/execution-evidence.js.map +1 -0
- package/dist/domain/execution-intent.d.ts +92 -0
- package/dist/domain/execution-intent.d.ts.map +1 -0
- package/dist/domain/execution-intent.js +2 -0
- package/dist/domain/execution-intent.js.map +1 -0
- package/dist/domain/execution-metadata.d.ts +8 -0
- package/dist/domain/execution-metadata.d.ts.map +1 -0
- package/dist/domain/execution-metadata.js +2 -0
- package/dist/domain/execution-metadata.js.map +1 -0
- package/dist/domain/execution-outcome-store.d.ts +49 -0
- package/dist/domain/execution-outcome-store.d.ts.map +1 -0
- package/dist/domain/execution-outcome-store.js +10 -0
- package/dist/domain/execution-outcome-store.js.map +1 -0
- package/dist/domain/execution-result.d.ts +49 -0
- package/dist/domain/execution-result.d.ts.map +1 -0
- package/dist/domain/execution-result.js +2 -0
- package/dist/domain/execution-result.js.map +1 -0
- package/dist/domain/execution-trust-record.d.ts +142 -0
- package/dist/domain/execution-trust-record.d.ts.map +1 -0
- package/dist/domain/execution-trust-record.js +2 -0
- package/dist/domain/execution-trust-record.js.map +1 -0
- package/dist/domain/execution.d.ts +108 -0
- package/dist/domain/execution.d.ts.map +1 -0
- package/dist/domain/execution.js +18 -0
- package/dist/domain/execution.js.map +1 -0
- package/dist/domain/external-connector.d.ts +68 -0
- package/dist/domain/external-connector.d.ts.map +1 -0
- package/dist/domain/external-connector.js +2 -0
- package/dist/domain/external-connector.js.map +1 -0
- package/dist/domain/index.d.ts +37 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +37 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/intent.d.ts +66 -0
- package/dist/domain/intent.d.ts.map +1 -0
- package/dist/domain/intent.js +2 -0
- package/dist/domain/intent.js.map +1 -0
- package/dist/domain/metadata.d.ts +53 -0
- package/dist/domain/metadata.d.ts.map +1 -0
- package/dist/domain/metadata.js +11 -0
- package/dist/domain/metadata.js.map +1 -0
- package/dist/domain/override.d.ts +39 -0
- package/dist/domain/override.d.ts.map +1 -0
- package/dist/domain/override.js +2 -0
- package/dist/domain/override.js.map +1 -0
- package/dist/domain/pending-policy-change.d.ts +109 -0
- package/dist/domain/pending-policy-change.d.ts.map +1 -0
- package/dist/domain/pending-policy-change.js +12 -0
- package/dist/domain/pending-policy-change.js.map +1 -0
- package/dist/domain/policy-change-approval-record.d.ts +81 -0
- package/dist/domain/policy-change-approval-record.d.ts.map +1 -0
- package/dist/domain/policy-change-approval-record.js +2 -0
- package/dist/domain/policy-change-approval-record.js.map +1 -0
- package/dist/domain/policy-change-step-up-authorization.d.ts +97 -0
- package/dist/domain/policy-change-step-up-authorization.d.ts.map +1 -0
- package/dist/domain/policy-change-step-up-authorization.js +2 -0
- package/dist/domain/policy-change-step-up-authorization.js.map +1 -0
- package/dist/domain/policy-reference.d.ts +58 -0
- package/dist/domain/policy-reference.d.ts.map +1 -0
- package/dist/domain/policy-reference.js +2 -0
- package/dist/domain/policy-reference.js.map +1 -0
- package/dist/domain/receipt.d.ts +72 -0
- package/dist/domain/receipt.d.ts.map +1 -0
- package/dist/domain/receipt.js +2 -0
- package/dist/domain/receipt.js.map +1 -0
- package/dist/domain/refusal-record.d.ts +110 -0
- package/dist/domain/refusal-record.d.ts.map +1 -0
- package/dist/domain/refusal-record.js +2 -0
- package/dist/domain/refusal-record.js.map +1 -0
- package/dist/domain/release-approval.d.ts +14 -0
- package/dist/domain/release-approval.d.ts.map +1 -0
- package/dist/domain/release-approval.js +2 -0
- package/dist/domain/release-approval.js.map +1 -0
- package/dist/domain/signals.d.ts +10 -0
- package/dist/domain/signals.d.ts.map +1 -0
- package/dist/domain/signals.js +2 -0
- package/dist/domain/signals.js.map +1 -0
- package/dist/domain/signature-entry.d.ts +23 -0
- package/dist/domain/signature-entry.d.ts.map +1 -0
- package/dist/domain/signature-entry.js +2 -0
- package/dist/domain/signature-entry.js.map +1 -0
- package/dist/domain/signature.d.ts +26 -0
- package/dist/domain/signature.d.ts.map +1 -0
- package/dist/domain/signature.js +2 -0
- package/dist/domain/signature.js.map +1 -0
- package/dist/domain/unsigned-execution-trust-record.d.ts +7 -0
- package/dist/domain/unsigned-execution-trust-record.d.ts.map +1 -0
- package/dist/domain/unsigned-execution-trust-record.js +2 -0
- package/dist/domain/unsigned-execution-trust-record.js.map +1 -0
- package/dist/domain/verification.d.ts +48 -0
- package/dist/domain/verification.d.ts.map +1 -0
- package/dist/domain/verification.js +9 -0
- package/dist/domain/verification.js.map +1 -0
- package/dist/errors/approval-issuer-change-not-found-error.d.ts +9 -0
- package/dist/errors/approval-issuer-change-not-found-error.d.ts.map +1 -0
- package/dist/errors/approval-issuer-change-not-found-error.js +11 -0
- package/dist/errors/approval-issuer-change-not-found-error.js.map +1 -0
- package/dist/errors/authority-grant-change-not-found-error.d.ts +9 -0
- package/dist/errors/authority-grant-change-not-found-error.d.ts.map +1 -0
- package/dist/errors/authority-grant-change-not-found-error.js +11 -0
- package/dist/errors/authority-grant-change-not-found-error.js.map +1 -0
- package/dist/errors/authority-required-error.d.ts +5 -0
- package/dist/errors/authority-required-error.d.ts.map +1 -0
- package/dist/errors/authority-required-error.js +7 -0
- package/dist/errors/authority-required-error.js.map +1 -0
- package/dist/errors/authorization-no-longer-valid-error.d.ts +19 -0
- package/dist/errors/authorization-no-longer-valid-error.d.ts.map +1 -0
- package/dist/errors/authorization-no-longer-valid-error.js +23 -0
- package/dist/errors/authorization-no-longer-valid-error.js.map +1 -0
- package/dist/errors/authorization-required-error.d.ts +5 -0
- package/dist/errors/authorization-required-error.d.ts.map +1 -0
- package/dist/errors/authorization-required-error.js +7 -0
- package/dist/errors/authorization-required-error.js.map +1 -0
- package/dist/errors/business-signal-source-change-not-found-error.d.ts +9 -0
- package/dist/errors/business-signal-source-change-not-found-error.d.ts.map +1 -0
- package/dist/errors/business-signal-source-change-not-found-error.js +11 -0
- package/dist/errors/business-signal-source-change-not-found-error.js.map +1 -0
- package/dist/errors/business-transaction-not-found-error.d.ts +5 -0
- package/dist/errors/business-transaction-not-found-error.d.ts.map +1 -0
- package/dist/errors/business-transaction-not-found-error.js +7 -0
- package/dist/errors/business-transaction-not-found-error.js.map +1 -0
- package/dist/errors/challenge-record-not-found-error.d.ts +9 -0
- package/dist/errors/challenge-record-not-found-error.d.ts.map +1 -0
- package/dist/errors/challenge-record-not-found-error.js +11 -0
- package/dist/errors/challenge-record-not-found-error.js.map +1 -0
- package/dist/errors/conflict-error.d.ts +5 -0
- package/dist/errors/conflict-error.d.ts.map +1 -0
- package/dist/errors/conflict-error.js +7 -0
- package/dist/errors/conflict-error.js.map +1 -0
- package/dist/errors/connector-not-registered-error.d.ts +21 -0
- package/dist/errors/connector-not-registered-error.d.ts.map +1 -0
- package/dist/errors/connector-not-registered-error.js +24 -0
- package/dist/errors/connector-not-registered-error.js.map +1 -0
- package/dist/errors/decision-not-approved-error.d.ts +5 -0
- package/dist/errors/decision-not-approved-error.d.ts.map +1 -0
- package/dist/errors/decision-not-approved-error.js +7 -0
- package/dist/errors/decision-not-approved-error.js.map +1 -0
- package/dist/errors/duplicate-business-transaction-error.d.ts +26 -0
- package/dist/errors/duplicate-business-transaction-error.d.ts.map +1 -0
- package/dist/errors/duplicate-business-transaction-error.js +28 -0
- package/dist/errors/duplicate-business-transaction-error.js.map +1 -0
- package/dist/errors/external-connector-change-not-found-error.d.ts +9 -0
- package/dist/errors/external-connector-change-not-found-error.d.ts.map +1 -0
- package/dist/errors/external-connector-change-not-found-error.js +11 -0
- package/dist/errors/external-connector-change-not-found-error.js.map +1 -0
- package/dist/errors/forbidden-error.d.ts +5 -0
- package/dist/errors/forbidden-error.d.ts.map +1 -0
- package/dist/errors/forbidden-error.js +7 -0
- package/dist/errors/forbidden-error.js.map +1 -0
- package/dist/errors/index.d.ts +30 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +30 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/intent-required-error.d.ts +5 -0
- package/dist/errors/intent-required-error.d.ts.map +1 -0
- package/dist/errors/intent-required-error.js +7 -0
- package/dist/errors/intent-required-error.js.map +1 -0
- package/dist/errors/non-human-caller-denied-error.d.ts +10 -0
- package/dist/errors/non-human-caller-denied-error.d.ts.map +1 -0
- package/dist/errors/non-human-caller-denied-error.js +12 -0
- package/dist/errors/non-human-caller-denied-error.js.map +1 -0
- package/dist/errors/nonce-already-consumed-error.d.ts +26 -0
- package/dist/errors/nonce-already-consumed-error.d.ts.map +1 -0
- package/dist/errors/nonce-already-consumed-error.js +29 -0
- package/dist/errors/nonce-already-consumed-error.js.map +1 -0
- package/dist/errors/outcome-unknown-error.d.ts +15 -0
- package/dist/errors/outcome-unknown-error.d.ts.map +1 -0
- package/dist/errors/outcome-unknown-error.js +19 -0
- package/dist/errors/outcome-unknown-error.js.map +1 -0
- package/dist/errors/override-not-allowed-error.d.ts +5 -0
- package/dist/errors/override-not-allowed-error.d.ts.map +1 -0
- package/dist/errors/override-not-allowed-error.js +7 -0
- package/dist/errors/override-not-allowed-error.js.map +1 -0
- package/dist/errors/parmana-error.d.ts +15 -0
- package/dist/errors/parmana-error.d.ts.map +1 -0
- package/dist/errors/parmana-error.js +21 -0
- package/dist/errors/parmana-error.js.map +1 -0
- package/dist/errors/pending-policy-change-not-found-error.d.ts +9 -0
- package/dist/errors/pending-policy-change-not-found-error.d.ts.map +1 -0
- package/dist/errors/pending-policy-change-not-found-error.js +11 -0
- package/dist/errors/pending-policy-change-not-found-error.js.map +1 -0
- package/dist/errors/policy-not-found-error.d.ts +5 -0
- package/dist/errors/policy-not-found-error.d.ts.map +1 -0
- package/dist/errors/policy-not-found-error.js +7 -0
- package/dist/errors/policy-not-found-error.js.map +1 -0
- package/dist/errors/receipt-generation-error.d.ts +5 -0
- package/dist/errors/receipt-generation-error.d.ts.map +1 -0
- package/dist/errors/receipt-generation-error.js +7 -0
- package/dist/errors/receipt-generation-error.js.map +1 -0
- package/dist/errors/same-actor-cannot-approve-own-change-error.d.ts +12 -0
- package/dist/errors/same-actor-cannot-approve-own-change-error.d.ts.map +1 -0
- package/dist/errors/same-actor-cannot-approve-own-change-error.js +15 -0
- package/dist/errors/same-actor-cannot-approve-own-change-error.js.map +1 -0
- package/dist/errors/step-up-authorization-invalid-error.d.ts +25 -0
- package/dist/errors/step-up-authorization-invalid-error.d.ts.map +1 -0
- package/dist/errors/step-up-authorization-invalid-error.js +28 -0
- package/dist/errors/step-up-authorization-invalid-error.js.map +1 -0
- package/dist/errors/trust-chain-validation-error.d.ts +5 -0
- package/dist/errors/trust-chain-validation-error.d.ts.map +1 -0
- package/dist/errors/trust-chain-validation-error.js +7 -0
- package/dist/errors/trust-chain-validation-error.js.map +1 -0
- package/dist/errors/unauthorized-error.d.ts +5 -0
- package/dist/errors/unauthorized-error.d.ts.map +1 -0
- package/dist/errors/unauthorized-error.js +7 -0
- package/dist/errors/unauthorized-error.js.map +1 -0
- package/dist/errors/validation-error.d.ts +5 -0
- package/dist/errors/validation-error.d.ts.map +1 -0
- package/dist/errors/validation-error.js +7 -0
- package/dist/errors/validation-error.js.map +1 -0
- package/dist/errors/verification-failed-error.d.ts +5 -0
- package/dist/errors/verification-failed-error.d.ts.map +1 -0
- package/dist/errors/verification-failed-error.js +7 -0
- package/dist/errors/verification-failed-error.js.map +1 -0
- package/dist/gateway/GatewayAuthentication.d.ts +8 -0
- package/dist/gateway/GatewayAuthentication.d.ts.map +1 -0
- package/dist/gateway/GatewayAuthentication.js +2 -0
- package/dist/gateway/GatewayAuthentication.js.map +1 -0
- package/dist/gateway/GatewayAuthenticationClaims.d.ts +10 -0
- package/dist/gateway/GatewayAuthenticationClaims.d.ts.map +1 -0
- package/dist/gateway/GatewayAuthenticationClaims.js +2 -0
- package/dist/gateway/GatewayAuthenticationClaims.js.map +1 -0
- package/dist/gateway/GatewayAuthenticationPayload.d.ts +15 -0
- package/dist/gateway/GatewayAuthenticationPayload.d.ts.map +1 -0
- package/dist/gateway/GatewayAuthenticationPayload.js +2 -0
- package/dist/gateway/GatewayAuthenticationPayload.js.map +1 -0
- package/dist/gateway/SignedGatewayAuthentication.d.ts +9 -0
- package/dist/gateway/SignedGatewayAuthentication.d.ts.map +1 -0
- package/dist/gateway/SignedGatewayAuthentication.js +2 -0
- package/dist/gateway/SignedGatewayAuthentication.js.map +1 -0
- package/dist/gateway/index.d.ts +4 -0
- package/dist/gateway/index.d.ts.map +1 -0
- package/dist/gateway/index.js +4 -0
- package/dist/gateway/index.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/logging/Logger.d.ts +65 -0
- package/dist/logging/Logger.d.ts.map +1 -0
- package/dist/logging/Logger.js +97 -0
- package/dist/logging/Logger.js.map +1 -0
- package/dist/network/externalEndpointAddress.d.ts +48 -0
- package/dist/network/externalEndpointAddress.d.ts.map +1 -0
- package/dist/network/externalEndpointAddress.js +147 -0
- package/dist/network/externalEndpointAddress.js.map +1 -0
- package/dist/repositories/approval-issuer-repository.d.ts +31 -0
- package/dist/repositories/approval-issuer-repository.d.ts.map +1 -0
- package/dist/repositories/approval-issuer-repository.js +2 -0
- package/dist/repositories/approval-issuer-repository.js.map +1 -0
- package/dist/repositories/authority-grant-repository.d.ts +22 -0
- package/dist/repositories/authority-grant-repository.d.ts.map +1 -0
- package/dist/repositories/authority-grant-repository.js +2 -0
- package/dist/repositories/authority-grant-repository.js.map +1 -0
- package/dist/repositories/business-signal-source-repository.d.ts +17 -0
- package/dist/repositories/business-signal-source-repository.d.ts.map +1 -0
- package/dist/repositories/business-signal-source-repository.js +2 -0
- package/dist/repositories/business-signal-source-repository.js.map +1 -0
- package/dist/repositories/business-transaction-repository.d.ts +34 -0
- package/dist/repositories/business-transaction-repository.d.ts.map +1 -0
- package/dist/repositories/business-transaction-repository.js +2 -0
- package/dist/repositories/business-transaction-repository.js.map +1 -0
- package/dist/repositories/caller-key-revocation-repository.d.ts +26 -0
- package/dist/repositories/caller-key-revocation-repository.d.ts.map +1 -0
- package/dist/repositories/caller-key-revocation-repository.js +2 -0
- package/dist/repositories/caller-key-revocation-repository.js.map +1 -0
- package/dist/repositories/challenge-record-repository.d.ts +67 -0
- package/dist/repositories/challenge-record-repository.d.ts.map +1 -0
- package/dist/repositories/challenge-record-repository.js +76 -0
- package/dist/repositories/challenge-record-repository.js.map +1 -0
- package/dist/repositories/execution-intent-repository.d.ts +38 -0
- package/dist/repositories/execution-intent-repository.d.ts.map +1 -0
- package/dist/repositories/execution-intent-repository.js +2 -0
- package/dist/repositories/execution-intent-repository.js.map +1 -0
- package/dist/repositories/execution-trust-record-repository.d.ts +62 -0
- package/dist/repositories/execution-trust-record-repository.d.ts.map +1 -0
- package/dist/repositories/execution-trust-record-repository.js +2 -0
- package/dist/repositories/execution-trust-record-repository.js.map +1 -0
- package/dist/repositories/external-connector-repository.d.ts +37 -0
- package/dist/repositories/external-connector-repository.d.ts.map +1 -0
- package/dist/repositories/external-connector-repository.js +2 -0
- package/dist/repositories/external-connector-repository.js.map +1 -0
- package/dist/repositories/handbook-download-lead-repository.d.ts +18 -0
- package/dist/repositories/handbook-download-lead-repository.d.ts.map +1 -0
- package/dist/repositories/handbook-download-lead-repository.js +2 -0
- package/dist/repositories/handbook-download-lead-repository.js.map +1 -0
- package/dist/repositories/inbound-decision-repository.d.ts +72 -0
- package/dist/repositories/inbound-decision-repository.d.ts.map +1 -0
- package/dist/repositories/inbound-decision-repository.js +10 -0
- package/dist/repositories/inbound-decision-repository.js.map +1 -0
- package/dist/repositories/inbound-outcome-repository.d.ts +23 -0
- package/dist/repositories/inbound-outcome-repository.d.ts.map +1 -0
- package/dist/repositories/inbound-outcome-repository.js +2 -0
- package/dist/repositories/inbound-outcome-repository.js.map +1 -0
- package/dist/repositories/index.d.ts +17 -0
- package/dist/repositories/index.d.ts.map +1 -0
- package/dist/repositories/index.js +17 -0
- package/dist/repositories/index.js.map +1 -0
- package/dist/repositories/pending-policy-change-repository.d.ts +72 -0
- package/dist/repositories/pending-policy-change-repository.d.ts.map +1 -0
- package/dist/repositories/pending-policy-change-repository.js +46 -0
- package/dist/repositories/pending-policy-change-repository.js.map +1 -0
- package/dist/repositories/policy-change-approval-record-repository.d.ts +39 -0
- package/dist/repositories/policy-change-approval-record-repository.d.ts.map +1 -0
- package/dist/repositories/policy-change-approval-record-repository.js +2 -0
- package/dist/repositories/policy-change-approval-record-repository.js.map +1 -0
- package/dist/repositories/policy-repository.d.ts +15 -0
- package/dist/repositories/policy-repository.d.ts.map +1 -0
- package/dist/repositories/policy-repository.js +2 -0
- package/dist/repositories/policy-repository.js.map +1 -0
- package/dist/repositories/refusal-record-repository.d.ts +13 -0
- package/dist/repositories/refusal-record-repository.d.ts.map +1 -0
- package/dist/repositories/refusal-record-repository.js +2 -0
- package/dist/repositories/refusal-record-repository.js.map +1 -0
- package/dist/types/Json.d.ts +7 -0
- package/dist/types/Json.d.ts.map +1 -0
- package/dist/types/Json.js +2 -0
- package/dist/types/Json.js.map +1 -0
- package/dist/utils/normalize-policy.d.ts +16 -0
- package/dist/utils/normalize-policy.d.ts.map +1 -0
- package/dist/utils/normalize-policy.js +10 -0
- package/dist/utils/normalize-policy.js.map +1 -0
- package/package.json +39 -4
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import type { CryptoMode, HashAlgorithm, SignatureAlgorithm } from "./CryptoAlgorithms.js";
|
|
2
|
+
import type { StorageProvider } from "./StorageProviders.js";
|
|
3
|
+
import type { KeyProvider } from "./KeyProviders.js";
|
|
4
|
+
import type { SecretsProvider } from "./SecretsProviders.js";
|
|
5
|
+
import type { TrustProfile } from "./TrustProfiles.js";
|
|
6
|
+
import type { ApiKeyEntry } from "./ApiKeyEntry.js";
|
|
7
|
+
/**
|
|
8
|
+
* Fail-closed by design, same discipline as caller authentication
|
|
9
|
+
* (see createCallerAuthenticator.ts): refuses to start rather than let
|
|
10
|
+
* an unset policy directory surface later as a raw filesystem error
|
|
11
|
+
* (ERR_INVALID_ARG_TYPE from path.join(undefined, ...)) inside
|
|
12
|
+
* FilePolicyRepository.load at request time.
|
|
13
|
+
*/
|
|
14
|
+
export declare function requirePolicyDirectory(): string;
|
|
15
|
+
/**
|
|
16
|
+
* Parmana Configuration.
|
|
17
|
+
*
|
|
18
|
+
* Centralized immutable configuration.
|
|
19
|
+
*
|
|
20
|
+
* This is the only configuration model used by
|
|
21
|
+
* Parmana. Environment variables are converted
|
|
22
|
+
* into strongly typed values through the
|
|
23
|
+
* ConfigValidation module.
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* Root configuration.
|
|
27
|
+
*/
|
|
28
|
+
export interface Config {
|
|
29
|
+
readonly environment: EnvironmentConfig;
|
|
30
|
+
readonly storage: StorageConfig;
|
|
31
|
+
readonly crypto: CryptoConfig;
|
|
32
|
+
readonly keys: KeyConfig;
|
|
33
|
+
readonly secrets: SecretsConfig;
|
|
34
|
+
readonly authorization: AuthorizationConfig;
|
|
35
|
+
readonly policy: PolicyConfig;
|
|
36
|
+
readonly trust: TrustConfig;
|
|
37
|
+
readonly api: ApiConfig;
|
|
38
|
+
readonly auth: ApiAuthConfig;
|
|
39
|
+
readonly rateLimit: RateLimitConfig;
|
|
40
|
+
readonly logging: LoggingConfig;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Runtime environment.
|
|
44
|
+
*/
|
|
45
|
+
export interface EnvironmentConfig {
|
|
46
|
+
readonly nodeEnv: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Storage configuration.
|
|
50
|
+
*/
|
|
51
|
+
export interface StorageConfig {
|
|
52
|
+
readonly provider: StorageProvider;
|
|
53
|
+
readonly databaseUrl?: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Cryptographic configuration.
|
|
57
|
+
*/
|
|
58
|
+
export interface CryptoConfig {
|
|
59
|
+
/**
|
|
60
|
+
* Crypto operating mode.
|
|
61
|
+
*/
|
|
62
|
+
readonly mode: CryptoMode;
|
|
63
|
+
/**
|
|
64
|
+
* Hash algorithm.
|
|
65
|
+
*/
|
|
66
|
+
readonly hashProvider: HashAlgorithm;
|
|
67
|
+
/**
|
|
68
|
+
* Primary signature algorithm.
|
|
69
|
+
*/
|
|
70
|
+
readonly primarySignatureProvider: SignatureAlgorithm;
|
|
71
|
+
/**
|
|
72
|
+
* Secondary signature algorithm.
|
|
73
|
+
*
|
|
74
|
+
* Required only in hybrid mode.
|
|
75
|
+
*/
|
|
76
|
+
readonly secondarySignatureProvider?: SignatureAlgorithm;
|
|
77
|
+
/**
|
|
78
|
+
* When true, verification of a hybrid-schema-capable artifact
|
|
79
|
+
* (an ExecutionTrustRecord) MUST find a valid `signatures` array
|
|
80
|
+
* covering every configured algorithm -- a record with `signatures`
|
|
81
|
+
* absent, empty, or partial is rejected outright, never silently
|
|
82
|
+
* verified via the legacy single signature alone.
|
|
83
|
+
*
|
|
84
|
+
* Off by default so no already-issued record (hybrid or not) is
|
|
85
|
+
* affected by turning CRYPTO_MODE=hybrid on: a deployment opts into
|
|
86
|
+
* this once it is confident every record going forward is genuinely
|
|
87
|
+
* hybrid-signed. See VerificationCrypto.verifySignature()'s own
|
|
88
|
+
* comment for the exact downgrade this closes.
|
|
89
|
+
*/
|
|
90
|
+
readonly requireHybridSignature: boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Cutover (ADR-0016, option 2): a record created at or after this ISO-8601
|
|
93
|
+
* UTC instant must carry a valid hybrid envelope. Unset means no cutover.
|
|
94
|
+
* The same instant belongs in the offline verifier's trust file.
|
|
95
|
+
*/
|
|
96
|
+
readonly hybridRequiredFrom?: string;
|
|
97
|
+
/**
|
|
98
|
+
* Schema version that hybrid signatures are made under (ADR-0016).
|
|
99
|
+
*
|
|
100
|
+
* 2 (default) signs the canonical fields plus schemaVersion. 3 signs
|
|
101
|
+
* every top-level field except the signature envelope and the
|
|
102
|
+
* post-signing fields (verifications, receipts). Records made under 3
|
|
103
|
+
* are not readable by verifiers that implement only version 2, so
|
|
104
|
+
* switch to 3 only once those consumers are updated.
|
|
105
|
+
*/
|
|
106
|
+
readonly hybridSchemaVersion: 2 | 3;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Key management.
|
|
110
|
+
*/
|
|
111
|
+
export interface KeyConfig {
|
|
112
|
+
readonly provider: KeyProvider;
|
|
113
|
+
/**
|
|
114
|
+
* Root directory containing all Parmana keys.
|
|
115
|
+
*/
|
|
116
|
+
readonly keyDirectory: string;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Secrets backend configuration (ADR-0009). Selects where connector
|
|
120
|
+
* credentials that are opaque bearer values -- not signing keys, see
|
|
121
|
+
* KeyConfig/Signer for those -- are resolved from at request time.
|
|
122
|
+
* "env" (default) is an identity pass-through: the value each
|
|
123
|
+
* connector's own env var already holds IS the secret. In
|
|
124
|
+
* "aws-secrets-manager" mode, that same env var's value is instead
|
|
125
|
+
* treated as the Secrets Manager secret's name/ARN to fetch.
|
|
126
|
+
*/
|
|
127
|
+
export interface SecretsConfig {
|
|
128
|
+
readonly provider: SecretsProvider;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Execution authorization configuration.
|
|
132
|
+
*/
|
|
133
|
+
export interface AuthorizationConfig {
|
|
134
|
+
/**
|
|
135
|
+
* Default TTL, in seconds, applied to a signed
|
|
136
|
+
* Execution Authorization when the caller does
|
|
137
|
+
* not specify one.
|
|
138
|
+
*/
|
|
139
|
+
readonly ttlSeconds: number;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Policy configuration.
|
|
143
|
+
*/
|
|
144
|
+
export interface PolicyConfig {
|
|
145
|
+
/**
|
|
146
|
+
* Root directory containing policy files.
|
|
147
|
+
*/
|
|
148
|
+
readonly directory: string;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Trust profile configuration.
|
|
152
|
+
*/
|
|
153
|
+
export interface TrustConfig {
|
|
154
|
+
readonly profile: TrustProfile;
|
|
155
|
+
readonly receiptVersion: string;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* API configuration.
|
|
159
|
+
*/
|
|
160
|
+
export interface ApiConfig {
|
|
161
|
+
readonly port: number;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* API caller authentication.
|
|
165
|
+
*
|
|
166
|
+
* Fail-closed by design: an empty `keys` array means the
|
|
167
|
+
* caller-authenticator bootstrap refuses to start the
|
|
168
|
+
* server unless `disabled` is explicitly true (local
|
|
169
|
+
* development and tutorials only).
|
|
170
|
+
*/
|
|
171
|
+
export interface ApiAuthConfig {
|
|
172
|
+
readonly keys: readonly ApiKeyEntry[];
|
|
173
|
+
readonly disabled: boolean;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Rate limiting configuration.
|
|
177
|
+
*
|
|
178
|
+
* Both are per-caller/per-IP-per-minute ceilings applied by
|
|
179
|
+
* packages/api/src/middleware/rate-limit.ts; see that file for exactly
|
|
180
|
+
* where and how each is keyed.
|
|
181
|
+
*/
|
|
182
|
+
export interface RateLimitConfig {
|
|
183
|
+
/**
|
|
184
|
+
* POST /execute, keyed by authenticated caller identity.
|
|
185
|
+
*/
|
|
186
|
+
readonly executePerMinute: number;
|
|
187
|
+
/**
|
|
188
|
+
* GET /health and GET /ready, keyed by IP.
|
|
189
|
+
*/
|
|
190
|
+
readonly healthPerMinute: number;
|
|
191
|
+
/**
|
|
192
|
+
* The unauthenticated verify routes, /handbook and key discovery,
|
|
193
|
+
* keyed by IP (G-78).
|
|
194
|
+
*/
|
|
195
|
+
readonly publicPerMinute: number;
|
|
196
|
+
/**
|
|
197
|
+
* Failed caller authentications (401) on every authenticated route,
|
|
198
|
+
* keyed by IP. Each one writes a signed audit event, so an unlimited
|
|
199
|
+
* stream of bad keys would spend signing capacity real requests need.
|
|
200
|
+
*/
|
|
201
|
+
readonly authFailurePerMinute: number;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Logging configuration.
|
|
205
|
+
*/
|
|
206
|
+
export interface LoggingConfig {
|
|
207
|
+
readonly level: string;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Loads the immutable Parmana configuration.
|
|
211
|
+
*
|
|
212
|
+
* This is the only location where process.env
|
|
213
|
+
* should be accessed.
|
|
214
|
+
*/
|
|
215
|
+
/**
|
|
216
|
+
* HYBRID_SCHEMA_VERSION: unset means 2. Any other value must be exactly
|
|
217
|
+
* 2 or 3, and anything else throws, so a typo cannot pick a schema
|
|
218
|
+
* version silently.
|
|
219
|
+
*/
|
|
220
|
+
export declare function parseHybridSchemaVersion(value: string | undefined, acknowledged: string | undefined): 2 | 3;
|
|
221
|
+
/**
|
|
222
|
+
* HYBRID_REQUIRED_FROM: unset or blank means no cutover. Otherwise it must be
|
|
223
|
+
* an ISO-8601 UTC timestamp ending in "Z", so it means the same time everywhere.
|
|
224
|
+
*/
|
|
225
|
+
export declare function parseHybridRequiredFrom(value: string | undefined): string | undefined;
|
|
226
|
+
export declare function loadConfig(): Readonly<Config>;
|
|
227
|
+
//# sourceMappingURL=Config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/config/Config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import dotenv from "dotenv";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import { optionalProperty } from "./ConfigUtils.js";
|
|
6
|
+
import { parseStorageProvider, parseCryptoMode, parseHashAlgorithm, parseSignatureAlgorithm, parseKeyProvider, parseSecretsProvider, parseTrustProfile, parseApiKeys, } from "./ConfigValidation.js";
|
|
7
|
+
/**
|
|
8
|
+
* Resolve the repository .env file.
|
|
9
|
+
*
|
|
10
|
+
* This implementation is independent of the
|
|
11
|
+
* current working directory, allowing every
|
|
12
|
+
* Parmana package to share the same
|
|
13
|
+
* configuration.
|
|
14
|
+
*/
|
|
15
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
16
|
+
const __dirname = dirname(__filename);
|
|
17
|
+
function findEnvFile() {
|
|
18
|
+
let current = __dirname;
|
|
19
|
+
while (true) {
|
|
20
|
+
const candidate = join(current, ".env");
|
|
21
|
+
if (existsSync(candidate)) {
|
|
22
|
+
return candidate;
|
|
23
|
+
}
|
|
24
|
+
const parent = dirname(current);
|
|
25
|
+
if (parent === current) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
current = parent;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//
|
|
32
|
+
// The .env file is read on first use of loadConfig(), not when this module
|
|
33
|
+
// is imported. Importing a package (for example the offline verifier) then
|
|
34
|
+
// reads no file from the working tree.
|
|
35
|
+
//
|
|
36
|
+
let dotEnvLoaded = false;
|
|
37
|
+
function loadDotEnvOnce() {
|
|
38
|
+
// Test runs set PARMANA_SKIP_DOTENV so a local .env cannot leak into them.
|
|
39
|
+
if (dotEnvLoaded || process.env.PARMANA_SKIP_DOTENV === "1") {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
dotEnvLoaded = true;
|
|
43
|
+
const envFile = findEnvFile();
|
|
44
|
+
if (envFile) {
|
|
45
|
+
dotenv.config({
|
|
46
|
+
path: envFile,
|
|
47
|
+
quiet: true,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
dotenv.config({ quiet: true });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Fail-closed by design, same discipline as caller authentication
|
|
56
|
+
* (see createCallerAuthenticator.ts): refuses to start rather than let
|
|
57
|
+
* an unset policy directory surface later as a raw filesystem error
|
|
58
|
+
* (ERR_INVALID_ARG_TYPE from path.join(undefined, ...)) inside
|
|
59
|
+
* FilePolicyRepository.load at request time.
|
|
60
|
+
*/
|
|
61
|
+
export function requirePolicyDirectory() {
|
|
62
|
+
const directory = process.env.PARMANA_POLICY_DIR;
|
|
63
|
+
if (directory === undefined || directory.trim() === "") {
|
|
64
|
+
throw new Error("PARMANA_POLICY_DIR is not set. Refusing to start without a " +
|
|
65
|
+
"configured policy directory; the server cannot load or evaluate " +
|
|
66
|
+
"policies without it. Set PARMANA_POLICY_DIR to the directory " +
|
|
67
|
+
"containing policy files (e.g. ./policies).");
|
|
68
|
+
}
|
|
69
|
+
return directory;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Loads the immutable Parmana configuration.
|
|
73
|
+
*
|
|
74
|
+
* This is the only location where process.env
|
|
75
|
+
* should be accessed.
|
|
76
|
+
*/
|
|
77
|
+
/**
|
|
78
|
+
* HYBRID_SCHEMA_VERSION: unset means 2. Any other value must be exactly
|
|
79
|
+
* 2 or 3, and anything else throws, so a typo cannot pick a schema
|
|
80
|
+
* version silently.
|
|
81
|
+
*/
|
|
82
|
+
export function parseHybridSchemaVersion(value, acknowledged) {
|
|
83
|
+
if (value === undefined || value.trim() === "") {
|
|
84
|
+
return 2;
|
|
85
|
+
}
|
|
86
|
+
if (value === "2") {
|
|
87
|
+
return 2;
|
|
88
|
+
}
|
|
89
|
+
if (value === "3") {
|
|
90
|
+
//
|
|
91
|
+
// Schema version 3 records are not readable by the SDKs and by
|
|
92
|
+
// the published third-party verifier until those are updated (ADR-0016 issuance gate).
|
|
93
|
+
// Refuse to start unless the operator also sets the acknowledgement,
|
|
94
|
+
// so a stray value cannot switch v3 on.
|
|
95
|
+
//
|
|
96
|
+
if (acknowledged !== "true") {
|
|
97
|
+
throw new Error("HYBRID_SCHEMA_VERSION=3 is refused unless HYBRID_SCHEMA_V3_ACKNOWLEDGED=true is also set (ADR-0016 issuance gate).");
|
|
98
|
+
}
|
|
99
|
+
return 3;
|
|
100
|
+
}
|
|
101
|
+
throw new Error(`HYBRID_SCHEMA_VERSION must be 2 or 3, got "${value}".`);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* HYBRID_REQUIRED_FROM: unset or blank means no cutover. Otherwise it must be
|
|
105
|
+
* an ISO-8601 UTC timestamp ending in "Z", so it means the same time everywhere.
|
|
106
|
+
*/
|
|
107
|
+
export function parseHybridRequiredFrom(value) {
|
|
108
|
+
if (value === undefined || value.trim() === "") {
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
if (!value.endsWith("Z") || Number.isNaN(Date.parse(value))) {
|
|
112
|
+
throw new Error(`HYBRID_REQUIRED_FROM must be an ISO-8601 UTC timestamp ending in "Z", got "${value}".`);
|
|
113
|
+
}
|
|
114
|
+
return value;
|
|
115
|
+
}
|
|
116
|
+
export function loadConfig() {
|
|
117
|
+
loadDotEnvOnce();
|
|
118
|
+
return Object.freeze({
|
|
119
|
+
environment: Object.freeze({
|
|
120
|
+
nodeEnv: process.env.NODE_ENV ?? "development",
|
|
121
|
+
}),
|
|
122
|
+
storage: Object.freeze({
|
|
123
|
+
provider: parseStorageProvider(process.env.PARMANA_STORAGE),
|
|
124
|
+
...optionalProperty("databaseUrl", process.env.DATABASE_URL),
|
|
125
|
+
}),
|
|
126
|
+
crypto: Object.freeze({
|
|
127
|
+
mode: parseCryptoMode(process.env.CRYPTO_MODE),
|
|
128
|
+
hashProvider: parseHashAlgorithm(process.env.HASH_PROVIDER),
|
|
129
|
+
primarySignatureProvider: parseSignatureAlgorithm(process.env.PRIMARY_SIGNATURE_PROVIDER),
|
|
130
|
+
...optionalProperty("secondarySignatureProvider", process.env.SECONDARY_SIGNATURE_PROVIDER
|
|
131
|
+
? parseSignatureAlgorithm(process.env.SECONDARY_SIGNATURE_PROVIDER, "SECONDARY_SIGNATURE_PROVIDER")
|
|
132
|
+
: undefined),
|
|
133
|
+
requireHybridSignature: process.env.HYBRID_SIGNATURE_REQUIRED === "true",
|
|
134
|
+
...optionalProperty("hybridRequiredFrom", parseHybridRequiredFrom(process.env.HYBRID_REQUIRED_FROM)),
|
|
135
|
+
hybridSchemaVersion: parseHybridSchemaVersion(process.env.HYBRID_SCHEMA_VERSION, process.env.HYBRID_SCHEMA_V3_ACKNOWLEDGED),
|
|
136
|
+
}),
|
|
137
|
+
keys: Object.freeze({
|
|
138
|
+
provider: parseKeyProvider(process.env.KEY_PROVIDER),
|
|
139
|
+
keyDirectory: process.env.PARMANA_KEY_DIR,
|
|
140
|
+
}),
|
|
141
|
+
secrets: Object.freeze({
|
|
142
|
+
provider: parseSecretsProvider(process.env.PARMANA_SECRETS_PROVIDER),
|
|
143
|
+
}),
|
|
144
|
+
authorization: Object.freeze({
|
|
145
|
+
ttlSeconds: Number(process.env.EXECUTION_AUTHORIZATION_TTL_SECONDS ?? 120),
|
|
146
|
+
}),
|
|
147
|
+
policy: Object.freeze({
|
|
148
|
+
directory: requirePolicyDirectory(),
|
|
149
|
+
}),
|
|
150
|
+
trust: Object.freeze({
|
|
151
|
+
profile: parseTrustProfile(process.env.TRUST_PROFILE),
|
|
152
|
+
receiptVersion: process.env.RECEIPT_VERSION ?? "1",
|
|
153
|
+
}),
|
|
154
|
+
api: Object.freeze({
|
|
155
|
+
port: Number(process.env.PORT ?? 3000),
|
|
156
|
+
}),
|
|
157
|
+
auth: Object.freeze({
|
|
158
|
+
keys: parseApiKeys(process.env.PARMANA_API_KEYS),
|
|
159
|
+
disabled: process.env.PARMANA_AUTH_DISABLED === "true",
|
|
160
|
+
}),
|
|
161
|
+
rateLimit: Object.freeze({
|
|
162
|
+
executePerMinute: Number(process.env.RATE_LIMIT_EXECUTE_PER_MINUTE ?? 30),
|
|
163
|
+
healthPerMinute: Number(process.env.RATE_LIMIT_HEALTH_PER_MINUTE ?? 300),
|
|
164
|
+
publicPerMinute: Number(process.env.RATE_LIMIT_PUBLIC_PER_MINUTE ?? 60),
|
|
165
|
+
authFailurePerMinute: Number(process.env.RATE_LIMIT_AUTH_FAILURE_PER_MINUTE ?? 30),
|
|
166
|
+
}),
|
|
167
|
+
logging: Object.freeze({
|
|
168
|
+
level: process.env.LOG_LEVEL ?? "info",
|
|
169
|
+
}),
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=Config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Config.js","sourceRoot":"","sources":["../../src/config/Config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigLoader.d.ts","sourceRoot":"","sources":["../../src/config/ConfigLoader.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,SAAS,2CAExB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigLoader.js","sourceRoot":"","sources":["../../src/config/ConfigLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,UAAU,EAAE,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigUtils.d.ts","sourceRoot":"","sources":["../../src/config/ConfigUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,GAAG,SAAS,GACnB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAEnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigUtils.js","sourceRoot":"","sources":["../../src/config/ConfigUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAW,EACX,KAAoB;IAEpB,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type CryptoMode, type HashAlgorithm, type SignatureAlgorithm } from "./CryptoAlgorithms.js";
|
|
2
|
+
import { type StorageProvider } from "./StorageProviders.js";
|
|
3
|
+
import { type KeyProvider } from "./KeyProviders.js";
|
|
4
|
+
import { type SecretsProvider } from "./SecretsProviders.js";
|
|
5
|
+
import { type TrustProfile } from "./TrustProfiles.js";
|
|
6
|
+
import type { ApiKeyEntry } from "./ApiKeyEntry.js";
|
|
7
|
+
export declare const parseStorageProvider: (value?: string) => StorageProvider;
|
|
8
|
+
export declare const parseCryptoMode: (value?: string) => CryptoMode;
|
|
9
|
+
export declare const parseHashAlgorithm: (value?: string) => HashAlgorithm;
|
|
10
|
+
export declare const parseSignatureAlgorithm: (value?: string, variable?: string) => SignatureAlgorithm;
|
|
11
|
+
export declare const parseKeyProvider: (value?: string) => KeyProvider;
|
|
12
|
+
/**
|
|
13
|
+
* Unlike the other settings, an invalid value is not echoed: a value set
|
|
14
|
+
* in the wrong variable can be a real secret (a token pasted into
|
|
15
|
+
* PARMANA_SECRETS_PROVIDER, say), and this message reaches logs. Kept
|
|
16
|
+
* separate from parse() so the value never reaches its message.
|
|
17
|
+
*/
|
|
18
|
+
export declare const parseSecretsProvider: (value?: string) => SecretsProvider;
|
|
19
|
+
export declare const parseTrustProfile: (value?: string) => TrustProfile;
|
|
20
|
+
/**
|
|
21
|
+
* Parses PARMANA_API_KEYS: a JSON array of
|
|
22
|
+
* { "callerId": string, "keyHash": string } entries.
|
|
23
|
+
*
|
|
24
|
+
* Returns an empty array when unset — callers of this
|
|
25
|
+
* function decide what an empty result means (the
|
|
26
|
+
* caller-authenticator bootstrap treats it as "refuse to
|
|
27
|
+
* start unless auth is explicitly disabled").
|
|
28
|
+
*/
|
|
29
|
+
export declare function parseApiKeys(value?: string): ApiKeyEntry[];
|
|
30
|
+
//# sourceMappingURL=ConfigValidation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigValidation.d.ts","sourceRoot":"","sources":["../../src/config/ConfigValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EAEf,KAAK,aAAa,EAElB,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAItE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AA8CpD,eAAO,MAAM,oBAAoB,WAAY,MAAM,KAAG,eAarD,CAAC;AAEF,eAAO,MAAM,eAAe,WAAY,MAAM,KAAG,UAK9C,CAAC;AAEJ,eAAO,MAAM,kBAAkB,WAAY,MAAM,KAAG,aAKjD,CAAC;AAgBJ,eAAO,MAAM,uBAAuB,WAC1B,MAAM,wBAEb,kBAYA,CAAC;AAEJ,eAAO,MAAM,gBAAgB,WAAY,MAAM,KAAG,WAK/C,CAAC;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,WAAY,MAAM,KAAG,eAerD,CAAC;AAEF,eAAO,MAAM,iBAAiB,WAAY,MAAM,KAAG,YACa,CAAC;AAIjE;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CAuJ1D"}
|