@futdevpro/nts-dynamo 1.15.140 → 1.15.141
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 +27 -0
- package/__documentations/2026-08-18-standalone-account-security-and-privacy-bedrock.md +131 -0
- package/build/_modules/account-security/_enums/account-challenge-purpose.type-enum.d.ts +6 -0
- package/build/_modules/account-security/_enums/account-challenge-purpose.type-enum.d.ts.map +1 -0
- package/build/_modules/account-security/_enums/account-challenge-purpose.type-enum.js +10 -0
- package/build/_modules/account-security/_enums/account-challenge-purpose.type-enum.js.map +1 -0
- package/build/_modules/account-security/_enums/account-refresh-token-state.type-enum.d.ts +7 -0
- package/build/_modules/account-security/_enums/account-refresh-token-state.type-enum.d.ts.map +1 -0
- package/build/_modules/account-security/_enums/account-refresh-token-state.type-enum.js +11 -0
- package/build/_modules/account-security/_enums/account-refresh-token-state.type-enum.js.map +1 -0
- package/build/_modules/account-security/_enums/account-session-state.type-enum.d.ts +7 -0
- package/build/_modules/account-security/_enums/account-session-state.type-enum.d.ts.map +1 -0
- package/build/_modules/account-security/_enums/account-session-state.type-enum.js +11 -0
- package/build/_modules/account-security/_enums/account-session-state.type-enum.js.map +1 -0
- package/build/_modules/account-security/_models/account-challenge-adapter.interface.d.ts +9 -0
- package/build/_modules/account-security/_models/account-challenge-adapter.interface.d.ts.map +1 -0
- package/build/_modules/account-security/_models/account-challenge-adapter.interface.js +3 -0
- package/build/_modules/account-security/_models/account-challenge-adapter.interface.js.map +1 -0
- package/build/_modules/account-security/_models/account-challenge-issued.interface.d.ts +7 -0
- package/build/_modules/account-security/_models/account-challenge-issued.interface.d.ts.map +1 -0
- package/build/_modules/account-security/_models/account-challenge-issued.interface.js +3 -0
- package/build/_modules/account-security/_models/account-challenge-issued.interface.js.map +1 -0
- package/build/_modules/account-security/_models/account-challenge-record.interface.d.ts +13 -0
- package/build/_modules/account-security/_models/account-challenge-record.interface.d.ts.map +1 -0
- package/build/_modules/account-security/_models/account-challenge-record.interface.js +3 -0
- package/build/_modules/account-security/_models/account-challenge-record.interface.js.map +1 -0
- package/build/_modules/account-security/_models/account-challenge-result.interface.d.ts +8 -0
- package/build/_modules/account-security/_models/account-challenge-result.interface.d.ts.map +1 -0
- package/build/_modules/account-security/_models/account-challenge-result.interface.js +3 -0
- package/build/_modules/account-security/_models/account-challenge-result.interface.js.map +1 -0
- package/build/_modules/account-security/_models/account-challenge-settings.interface.d.ts +9 -0
- package/build/_modules/account-security/_models/account-challenge-settings.interface.d.ts.map +1 -0
- package/build/_modules/account-security/_models/account-challenge-settings.interface.js +3 -0
- package/build/_modules/account-security/_models/account-challenge-settings.interface.js.map +1 -0
- package/build/_modules/account-security/_models/account-password-policy.interface.d.ts +12 -0
- package/build/_modules/account-security/_models/account-password-policy.interface.d.ts.map +1 -0
- package/build/_modules/account-security/_models/account-password-policy.interface.js +3 -0
- package/build/_modules/account-security/_models/account-password-policy.interface.js.map +1 -0
- package/build/_modules/account-security/_models/account-password-verification.interface.d.ts +6 -0
- package/build/_modules/account-security/_models/account-password-verification.interface.d.ts.map +1 -0
- package/build/_modules/account-security/_models/account-password-verification.interface.js +3 -0
- package/build/_modules/account-security/_models/account-password-verification.interface.js.map +1 -0
- package/build/_modules/account-security/_models/account-refresh-token-record.interface.d.ts +13 -0
- package/build/_modules/account-security/_models/account-refresh-token-record.interface.d.ts.map +1 -0
- package/build/_modules/account-security/_models/account-refresh-token-record.interface.js +3 -0
- package/build/_modules/account-security/_models/account-refresh-token-record.interface.js.map +1 -0
- package/build/_modules/account-security/_models/account-session-adapter.interface.d.ts +19 -0
- package/build/_modules/account-security/_models/account-session-adapter.interface.d.ts.map +1 -0
- package/build/_modules/account-security/_models/account-session-adapter.interface.js +3 -0
- package/build/_modules/account-security/_models/account-session-adapter.interface.js.map +1 -0
- package/build/_modules/account-security/_models/account-session-claims.interface.d.ts +8 -0
- package/build/_modules/account-security/_models/account-session-claims.interface.d.ts.map +1 -0
- package/build/_modules/account-security/_models/account-session-claims.interface.js +3 -0
- package/build/_modules/account-security/_models/account-session-claims.interface.js.map +1 -0
- package/build/_modules/account-security/_models/account-session-context.interface.d.ts +7 -0
- package/build/_modules/account-security/_models/account-session-context.interface.d.ts.map +1 -0
- package/build/_modules/account-security/_models/account-session-context.interface.js +3 -0
- package/build/_modules/account-security/_models/account-session-context.interface.js.map +1 -0
- package/build/_modules/account-security/_models/account-session-create.interface.d.ts +8 -0
- package/build/_modules/account-security/_models/account-session-create.interface.d.ts.map +1 -0
- package/build/_modules/account-security/_models/account-session-create.interface.js +3 -0
- package/build/_modules/account-security/_models/account-session-create.interface.js.map +1 -0
- package/build/_modules/account-security/_models/account-session-record.interface.d.ts +21 -0
- package/build/_modules/account-security/_models/account-session-record.interface.d.ts.map +1 -0
- package/build/_modules/account-security/_models/account-session-record.interface.js +3 -0
- package/build/_modules/account-security/_models/account-session-record.interface.js.map +1 -0
- package/build/_modules/account-security/_models/account-session-rotate.interface.d.ts +11 -0
- package/build/_modules/account-security/_models/account-session-rotate.interface.d.ts.map +1 -0
- package/build/_modules/account-security/_models/account-session-rotate.interface.js +3 -0
- package/build/_modules/account-security/_models/account-session-rotate.interface.js.map +1 -0
- package/build/_modules/account-security/_models/account-session-settings.interface.d.ts +11 -0
- package/build/_modules/account-security/_models/account-session-settings.interface.d.ts.map +1 -0
- package/build/_modules/account-security/_models/account-session-settings.interface.js +3 -0
- package/build/_modules/account-security/_models/account-session-settings.interface.js.map +1 -0
- package/build/_modules/account-security/_models/account-session-token-pair.interface.d.ts +9 -0
- package/build/_modules/account-security/_models/account-session-token-pair.interface.d.ts.map +1 -0
- package/build/_modules/account-security/_models/account-session-token-pair.interface.js +3 -0
- package/build/_modules/account-security/_models/account-session-token-pair.interface.js.map +1 -0
- package/build/_modules/account-security/_models/account-session-view.interface.d.ts +13 -0
- package/build/_modules/account-security/_models/account-session-view.interface.d.ts.map +1 -0
- package/build/_modules/account-security/_models/account-session-view.interface.js +3 -0
- package/build/_modules/account-security/_models/account-session-view.interface.js.map +1 -0
- package/build/_modules/account-security/account-challenge.control-service.d.ts +24 -0
- package/build/_modules/account-security/account-challenge.control-service.d.ts.map +1 -0
- package/build/_modules/account-security/account-challenge.control-service.js +117 -0
- package/build/_modules/account-security/account-challenge.control-service.js.map +1 -0
- package/build/_modules/account-security/account-password.control-service.d.ts +24 -0
- package/build/_modules/account-security/account-password.control-service.d.ts.map +1 -0
- package/build/_modules/account-security/account-password.control-service.js +214 -0
- package/build/_modules/account-security/account-password.control-service.js.map +1 -0
- package/build/_modules/account-security/account-session.control-service.d.ts +39 -0
- package/build/_modules/account-security/account-session.control-service.d.ts.map +1 -0
- package/build/_modules/account-security/account-session.control-service.js +277 -0
- package/build/_modules/account-security/account-session.control-service.js.map +1 -0
- package/build/_modules/account-security/index.d.ts +24 -0
- package/build/_modules/account-security/index.d.ts.map +1 -0
- package/build/_modules/account-security/index.js +16 -0
- package/build/_modules/account-security/index.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_enums/privacy-consent-decision.type-enum.d.ts +6 -0
- package/build/_modules/privacy-lifecycle/_enums/privacy-consent-decision.type-enum.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_enums/privacy-consent-decision.type-enum.js +10 -0
- package/build/_modules/privacy-lifecycle/_enums/privacy-consent-decision.type-enum.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_enums/privacy-contributor-action.type-enum.d.ts +11 -0
- package/build/_modules/privacy-lifecycle/_enums/privacy-contributor-action.type-enum.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_enums/privacy-contributor-action.type-enum.js +15 -0
- package/build/_modules/privacy-lifecycle/_enums/privacy-contributor-action.type-enum.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_enums/privacy-contributor-outcome.type-enum.d.ts +8 -0
- package/build/_modules/privacy-lifecycle/_enums/privacy-contributor-outcome.type-enum.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_enums/privacy-contributor-outcome.type-enum.js +12 -0
- package/build/_modules/privacy-lifecycle/_enums/privacy-contributor-outcome.type-enum.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_enums/privacy-request-state.type-enum.d.ts +16 -0
- package/build/_modules/privacy-lifecycle/_enums/privacy-request-state.type-enum.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_enums/privacy-request-state.type-enum.js +20 -0
- package/build/_modules/privacy-lifecycle/_enums/privacy-request-state.type-enum.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_enums/privacy-request.type-enum.d.ts +10 -0
- package/build/_modules/privacy-lifecycle/_enums/privacy-request.type-enum.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_enums/privacy-request.type-enum.js +14 -0
- package/build/_modules/privacy-lifecycle/_enums/privacy-request.type-enum.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-consent-input.interface.d.ts +12 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-consent-input.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-consent-input.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-consent-input.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-consent-persistence-result.interface.d.ts +7 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-consent-persistence-result.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-consent-persistence-result.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-consent-persistence-result.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-consent-record.interface.d.ts +15 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-consent-record.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-consent-record.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-consent-record.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-consent-result.interface.d.ts +7 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-consent-result.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-consent-result.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-consent-result.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-consent-view.interface.d.ts +13 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-consent-view.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-consent-view.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-consent-view.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-contributor-context.interface.d.ts +9 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-contributor-context.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-contributor-context.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-contributor-context.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-contributor-outcome.interface.d.ts +14 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-contributor-outcome.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-contributor-outcome.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-contributor-outcome.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-contributor-plan.interface.d.ts +8 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-contributor-plan.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-contributor-plan.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-contributor-plan.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-contributor.interface.d.ts +11 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-contributor.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-contributor.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-contributor.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-ledger-adapter.interface.d.ts +13 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-ledger-adapter.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-ledger-adapter.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-ledger-adapter.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-ledger-result.interface.d.ts +9 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-ledger-result.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-ledger-result.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-ledger-result.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-ledger-settings.interface.d.ts +7 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-ledger-settings.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-ledger-settings.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-ledger-settings.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-input.interface.d.ts +11 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-input.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-input.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-input.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-persistence-result.interface.d.ts +7 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-persistence-result.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-persistence-result.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-persistence-result.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-result.interface.d.ts +7 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-result.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-result.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-result.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-view.interface.d.ts +12 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-view.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-view.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-view.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance.interface.d.ts +14 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-legal-acceptance.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-lifecycle-adapter.interface.d.ts +15 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-lifecycle-adapter.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-lifecycle-adapter.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-lifecycle-adapter.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-lifecycle-settings.interface.d.ts +9 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-lifecycle-settings.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-lifecycle-settings.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-lifecycle-settings.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-create-result.interface.d.ts +7 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-create-result.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-create-result.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-create-result.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-open.interface.d.ts +10 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-open.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-open.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-open.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-persistence-create-result.interface.d.ts +7 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-persistence-create-result.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-persistence-create-result.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-persistence-create-result.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-record.interface.d.ts +21 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-record.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-record.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-record.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-result.interface.d.ts +8 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-result.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-result.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-result.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-view.interface.d.ts +20 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-view.interface.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-view.interface.js +3 -0
- package/build/_modules/privacy-lifecycle/_models/privacy-request-view.interface.js.map +1 -0
- package/build/_modules/privacy-lifecycle/index.d.ts +33 -0
- package/build/_modules/privacy-lifecycle/index.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/index.js +18 -0
- package/build/_modules/privacy-lifecycle/index.js.map +1 -0
- package/build/_modules/privacy-lifecycle/privacy-ledger.control-service.d.ts +28 -0
- package/build/_modules/privacy-lifecycle/privacy-ledger.control-service.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/privacy-ledger.control-service.js +168 -0
- package/build/_modules/privacy-lifecycle/privacy-ledger.control-service.js.map +1 -0
- package/build/_modules/privacy-lifecycle/privacy-lifecycle.control-service.d.ts +42 -0
- package/build/_modules/privacy-lifecycle/privacy-lifecycle.control-service.d.ts.map +1 -0
- package/build/_modules/privacy-lifecycle/privacy-lifecycle.control-service.js +364 -0
- package/build/_modules/privacy-lifecycle/privacy-lifecycle.control-service.js.map +1 -0
- package/package.json +19 -1
- package/src/_modules/account-security/_enums/account-challenge-purpose.type-enum.ts +5 -0
- package/src/_modules/account-security/_enums/account-refresh-token-state.type-enum.ts +6 -0
- package/src/_modules/account-security/_enums/account-session-state.type-enum.ts +6 -0
- package/src/_modules/account-security/_models/account-challenge-adapter.interface.ts +17 -0
- package/src/_modules/account-security/_models/account-challenge-issued.interface.ts +6 -0
- package/src/_modules/account-security/_models/account-challenge-record.interface.ts +13 -0
- package/src/_modules/account-security/_models/account-challenge-result.interface.ts +8 -0
- package/src/_modules/account-security/_models/account-challenge-settings.interface.ts +9 -0
- package/src/_modules/account-security/_models/account-password-policy.interface.ts +11 -0
- package/src/_modules/account-security/_models/account-password-verification.interface.ts +5 -0
- package/src/_modules/account-security/_models/account-refresh-token-record.interface.ts +13 -0
- package/src/_modules/account-security/_models/account-session-adapter.interface.ts +19 -0
- package/src/_modules/account-security/_models/account-session-claims.interface.ts +7 -0
- package/src/_modules/account-security/_models/account-session-context.interface.ts +6 -0
- package/src/_modules/account-security/_models/account-session-create.interface.ts +8 -0
- package/src/_modules/account-security/_models/account-session-record.interface.ts +21 -0
- package/src/_modules/account-security/_models/account-session-rotate.interface.ts +11 -0
- package/src/_modules/account-security/_models/account-session-settings.interface.ts +11 -0
- package/src/_modules/account-security/_models/account-session-token-pair.interface.ts +8 -0
- package/src/_modules/account-security/_models/account-session-view.interface.ts +13 -0
- package/src/_modules/account-security/account-challenge.control-service.spec.ts +195 -0
- package/src/_modules/account-security/account-challenge.control-service.ts +164 -0
- package/src/_modules/account-security/account-password.control-service.spec.ts +96 -0
- package/src/_modules/account-security/account-password.control-service.ts +288 -0
- package/src/_modules/account-security/account-session.control-service.spec.ts +294 -0
- package/src/_modules/account-security/account-session.control-service.ts +376 -0
- package/src/_modules/account-security/index.ts +31 -0
- package/src/_modules/privacy-lifecycle/_enums/privacy-consent-decision.type-enum.ts +5 -0
- package/src/_modules/privacy-lifecycle/_enums/privacy-contributor-action.type-enum.ts +10 -0
- package/src/_modules/privacy-lifecycle/_enums/privacy-contributor-outcome.type-enum.ts +7 -0
- package/src/_modules/privacy-lifecycle/_enums/privacy-request-state.type-enum.ts +15 -0
- package/src/_modules/privacy-lifecycle/_enums/privacy-request.type-enum.ts +9 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-consent-input.interface.ts +12 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-consent-persistence-result.interface.ts +7 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-consent-record.interface.ts +15 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-consent-result.interface.ts +7 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-consent-view.interface.ts +13 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-contributor-context.interface.ts +9 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-contributor-outcome.interface.ts +14 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-contributor-plan.interface.ts +8 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-contributor.interface.ts +17 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-ledger-adapter.interface.ts +21 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-ledger-result.interface.ts +9 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-ledger-settings.interface.ts +7 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-input.interface.ts +10 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-persistence-result.interface.ts +7 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-result.interface.ts +7 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-legal-acceptance-view.interface.ts +11 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-legal-acceptance.interface.ts +13 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-lifecycle-adapter.interface.ts +19 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-lifecycle-settings.interface.ts +9 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-request-create-result.interface.ts +7 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-request-open.interface.ts +10 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-request-persistence-create-result.interface.ts +7 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-request-record.interface.ts +21 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-request-result.interface.ts +8 -0
- package/src/_modules/privacy-lifecycle/_models/privacy-request-view.interface.ts +20 -0
- package/src/_modules/privacy-lifecycle/index.ts +40 -0
- package/src/_modules/privacy-lifecycle/privacy-ledger.control-service.spec.ts +206 -0
- package/src/_modules/privacy-lifecycle/privacy-ledger.control-service.ts +253 -0
- package/src/_modules/privacy-lifecycle/privacy-lifecycle.control-service.spec.ts +353 -0
- package/src/_modules/privacy-lifecycle/privacy-lifecycle.control-service.ts +586 -0
package/README.md
CHANGED
|
@@ -301,6 +301,33 @@ Dynamo-NTS provides an abstract `DyNTS_AuthService` class that you can extend to
|
|
|
301
301
|
- Session management
|
|
302
302
|
- Route-level security configuration
|
|
303
303
|
|
|
304
|
+
For product-local accounts, the optional `@futdevpro/nts-dynamo/account-security` entry point adds production
|
|
305
|
+
security primitives without coupling a product to a shared account provider:
|
|
306
|
+
|
|
307
|
+
- versioned adaptive password hashing and rehash detection;
|
|
308
|
+
- hash-only email-verification and password-reset challenges with atomic one-time consumption;
|
|
309
|
+
- opaque, hash-only access credentials backed by revocable server-side sessions;
|
|
310
|
+
- one-time refresh rotation, replay detection, session listing and subject-wide revocation.
|
|
311
|
+
|
|
312
|
+
Persistence remains application-owned through explicit atomic adapters. Transports must never put the raw
|
|
313
|
+
credentials in URLs, logs, analytics or durable client storage. A consuming application must also apply its
|
|
314
|
+
rate-limit, authorization, cookie/storage and audit-redaction policy at the API boundary.
|
|
315
|
+
|
|
316
|
+
### Privacy lifecycle
|
|
317
|
+
|
|
318
|
+
The optional `@futdevpro/nts-dynamo/privacy-lifecycle` entry point provides the shared machinery for standalone
|
|
319
|
+
GDPR-capable products:
|
|
320
|
+
|
|
321
|
+
- identity-gated, deadline-bearing data-subject requests;
|
|
322
|
+
- explicit `received → identity-verified → scoped → planned → executing → verifying` processing;
|
|
323
|
+
- deterministic product-domain contributors with resumable partial outcomes and documented retention bases;
|
|
324
|
+
- append-only, checksummed legal acceptances;
|
|
325
|
+
- versioned, purpose-specific consent grants and withdrawals.
|
|
326
|
+
|
|
327
|
+
The Bedrock module coordinates state and evidence only. Each consuming product must register every data domain,
|
|
328
|
+
implement hard-delete/anonymization/export behavior, and provide transaction-safe persistence. A request is
|
|
329
|
+
never reported complete while a registered contributor has a failed outcome.
|
|
330
|
+
|
|
304
331
|
## Modules Overview
|
|
305
332
|
|
|
306
333
|
Dynamo-NTS is organized into focused modules, each providing specific functionality:
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Standalone account security and privacy Bedrock
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-08-18
|
|
4
|
+
**Status:** implemented and verified at package-contract level
|
|
5
|
+
**Packages:** `@futdevpro/nts-dynamo/account-security`, `@futdevpro/nts-dynamo/privacy-lifecycle`
|
|
6
|
+
|
|
7
|
+
## Purpose and boundary
|
|
8
|
+
|
|
9
|
+
This capability lets a Dynamo application own its identity and GDPR lifecycle without redirecting to, or
|
|
10
|
+
depending on, a shared Fleet account. It is reusable Bedrock code, not a complete application account system.
|
|
11
|
+
The consuming product remains responsible for typed persistence models, email delivery, organization and
|
|
12
|
+
permission decisions, HTTP transport, secure browser credential handling, rate limiting, audit wiring and each
|
|
13
|
+
product data-domain contributor.
|
|
14
|
+
|
|
15
|
+
The modules deliberately expose direct Dynamo contracts. They do not add provider-swapping or replacement
|
|
16
|
+
abstractions around Dynamo.
|
|
17
|
+
|
|
18
|
+
## Account-security contract
|
|
19
|
+
|
|
20
|
+
### Passwords
|
|
21
|
+
|
|
22
|
+
`DyNTS_AccountPassword_ControlService` uses the versioned `dyn-scrypt-v1` format with a unique random salt,
|
|
23
|
+
bounded scrypt parameters and timing-safe verification. It supports a SHA-256 common-password denylist and
|
|
24
|
+
returns `needsRehash` when stored parameters differ from current policy. Malformed stored hashes and
|
|
25
|
+
attacker-controlled work factors produce a safe negative result while still performing bounded dummy work.
|
|
26
|
+
Passwords are never copied into errors.
|
|
27
|
+
|
|
28
|
+
### Email verification and password reset
|
|
29
|
+
|
|
30
|
+
`DyNTS_AccountChallenge_ControlService` issues opaque 256-bit-or-stronger credentials for two isolated purposes:
|
|
31
|
+
email verification and password reset. Only SHA-256 token hashes enter persistence. Issuing a replacement
|
|
32
|
+
atomically revokes its active predecessor for the same subject and purpose. Consumption must be a single
|
|
33
|
+
compare-and-set operation that validates purpose, active state and expiry before marking the record consumed.
|
|
34
|
+
Raw tokens are returned only once after successful persistence.
|
|
35
|
+
|
|
36
|
+
Enumeration-neutral register/reset responses are an HTTP-boundary responsibility: the service must not reveal
|
|
37
|
+
whether an email exists. The application must rate-limit issue and consume operations and deliver the raw token
|
|
38
|
+
only through an approved out-of-band channel.
|
|
39
|
+
|
|
40
|
+
### Sessions
|
|
41
|
+
|
|
42
|
+
`DyNTS_AccountSession_ControlService` uses opaque random access and refresh credentials; no self-contained JWT is
|
|
43
|
+
required. Only hashes are stored. An access credential resolves through an active server-side session, so
|
|
44
|
+
logout, password change, account restriction and incident response can revoke it immediately.
|
|
45
|
+
|
|
46
|
+
Refresh credentials are one-time ledger entries. Rotation uses an adapter-provided compare-and-set transaction.
|
|
47
|
+
Reuse of an already consumed credential, including a concurrent rotation race, revokes the entire family. The
|
|
48
|
+
user-safe session projection excludes subject, family and token hashes. The application decides authorization
|
|
49
|
+
before calling individual or subject-wide revocation methods.
|
|
50
|
+
|
|
51
|
+
The adapter contract is normative: session creation, token replacement and token-state changes must be atomic.
|
|
52
|
+
An in-memory or multi-step production adapter would invalidate replay protection.
|
|
53
|
+
|
|
54
|
+
## Privacy lifecycle contract
|
|
55
|
+
|
|
56
|
+
### Data-subject requests
|
|
57
|
+
|
|
58
|
+
`DyNTS_PrivacyLifecycle_ControlService` creates subject-, organization- and request-type-scoped idempotency
|
|
59
|
+
hashes. The raw idempotency key is never stored. Each request has an explicit policy-supplied deadline and uses
|
|
60
|
+
the following durable state family:
|
|
61
|
+
|
|
62
|
+
`received → identity-verified → scoped → planned → executing → verifying → completed`
|
|
63
|
+
|
|
64
|
+
Supported terminal/non-happy states are `partially-completed`, `rejected-with-reason`, `cancelled`,
|
|
65
|
+
`failed-retryable` and `failed-terminal`. The current orchestrator produces `completed` or
|
|
66
|
+
`partially-completed`; policy-specific rejection/cancellation/failure entry points remain consumer-owned until a
|
|
67
|
+
shared cross-product transition contract is justified.
|
|
68
|
+
|
|
69
|
+
Every registered contributor is ordered deterministically. Its durable `plan`, idempotent `execute` and
|
|
70
|
+
read-only `verify` operations return content-free structured outcomes. Planning finishes and is persisted before
|
|
71
|
+
the request enters `planned`; a planning failure becomes a resumable partial outcome without executing another
|
|
72
|
+
domain against an incomplete plan set. Successful contributors are skipped on resume and failed contributors
|
|
73
|
+
are retried. A retention result is valid only with an explicit matching basis code. Cross-subject reads return
|
|
74
|
+
the same not-found response as an absent request.
|
|
75
|
+
|
|
76
|
+
The consuming application must register contributors for identity, session, membership, pipelines/projects,
|
|
77
|
+
agent sessions, artifacts, audit, support, subscription/billing and backup where those domains exist. Export
|
|
78
|
+
contributors must generate machine-readable, checksummed, short-lived artifacts; erasure contributors must use
|
|
79
|
+
hard delete by default and anonymize only where a documented retention basis requires it.
|
|
80
|
+
|
|
81
|
+
### Legal acceptance and consent
|
|
82
|
+
|
|
83
|
+
`DyNTS_PrivacyLedger_ControlService` keeps legal acceptance separate from optional-purpose consent. Legal records
|
|
84
|
+
bind the subject to an exact document type, version and SHA-256 checksum. Consent is append-only and scoped by
|
|
85
|
+
purpose and policy version; withdrawal creates a new event instead of mutating history. The ledger projection
|
|
86
|
+
returns both full history and the latest decision per purpose.
|
|
87
|
+
|
|
88
|
+
Adapters must enforce tenant/subject scoping and idempotency uniqueness. Document and privacy-notice content is
|
|
89
|
+
not stored in these event records; the checksum binds the separately versioned canonical document.
|
|
90
|
+
|
|
91
|
+
## Data-minimization and diagnostics
|
|
92
|
+
|
|
93
|
+
- No password, bearer credential, challenge credential or raw idempotency key is persisted by these services.
|
|
94
|
+
- Stable error messages contain no email address, token, password, file content, cell content or contributor
|
|
95
|
+
exception text.
|
|
96
|
+
- Session context is intentionally pre-redacted: device label plus IP and user-agent hashes only.
|
|
97
|
+
- Contributor outcomes carry codes, counts, checksums and retention basis, not exported personal data.
|
|
98
|
+
- User-facing request, consent and legal-acceptance views omit idempotency hashes and request fingerprints;
|
|
99
|
+
those fields remain server-side persistence metadata.
|
|
100
|
+
- Consumers must preserve this boundary in logs, audits, HTTP errors and analytics snapshots.
|
|
101
|
+
|
|
102
|
+
## Required production integrations
|
|
103
|
+
|
|
104
|
+
Before a product can claim production readiness, it must provide and test:
|
|
105
|
+
|
|
106
|
+
1. transaction-safe MongoDB adapters for challenges, sessions, privacy requests and ledgers;
|
|
107
|
+
2. normalized unique identity records and verified-email privilege gates;
|
|
108
|
+
3. API rate limits for register, login, challenge issue/consume and refresh;
|
|
109
|
+
4. a reviewed browser credential transport/storage threat model;
|
|
110
|
+
5. organization membership and permission checks at every tenant-scoped route;
|
|
111
|
+
6. all applicable DSAR contributors, export delivery expiry and backup restore/re-erasure procedure;
|
|
112
|
+
7. content-redaction snapshots for logs, errors, analytics and audit events;
|
|
113
|
+
8. automated feature and cross-feature user-journey E2E coverage including cleanup.
|
|
114
|
+
|
|
115
|
+
## Verification
|
|
116
|
+
|
|
117
|
+
Measured on 2026-08-18:
|
|
118
|
+
|
|
119
|
+
- account password suite: 7 specs, 0 failures;
|
|
120
|
+
- session suite: 10 specs, 0 failures;
|
|
121
|
+
- one-time challenge suite: 5 specs, 0 failures;
|
|
122
|
+
- privacy lifecycle suite: 7 specs, 0 failures;
|
|
123
|
+
- privacy ledger suite: 5 specs, 0 failures;
|
|
124
|
+
- complete package suite: 1,687 specs, 0 failures, 146 explicitly pending specs;
|
|
125
|
+
- TypeScript build: passed;
|
|
126
|
+
- changed-module ESLint: passed with zero warnings;
|
|
127
|
+
- package import validator: existing baseline, 82 findings in 76 files;
|
|
128
|
+
- package naming validator: existing baseline, 101 findings in 68 files.
|
|
129
|
+
|
|
130
|
+
The repository-wide convention findings predate this capability and are not represented as fixed. The new
|
|
131
|
+
modules pass their direct compiler, lint and regression gates.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-challenge-purpose.type-enum.d.ts","sourceRoot":"","sources":["../../../../src/_modules/account-security/_enums/account-challenge-purpose.type-enum.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,oBAAY,kCAAkC;IAC5C,iBAAiB,uBAAuB;IACxC,aAAa,mBAAmB;CACjC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DyNTS_AccountChallengePurpose_Type = void 0;
|
|
4
|
+
/** Supported one-time account challenge purposes. */
|
|
5
|
+
var DyNTS_AccountChallengePurpose_Type;
|
|
6
|
+
(function (DyNTS_AccountChallengePurpose_Type) {
|
|
7
|
+
DyNTS_AccountChallengePurpose_Type["emailVerification"] = "email-verification";
|
|
8
|
+
DyNTS_AccountChallengePurpose_Type["passwordReset"] = "password-reset";
|
|
9
|
+
})(DyNTS_AccountChallengePurpose_Type || (exports.DyNTS_AccountChallengePurpose_Type = DyNTS_AccountChallengePurpose_Type = {}));
|
|
10
|
+
//# sourceMappingURL=account-challenge-purpose.type-enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-challenge-purpose.type-enum.js","sourceRoot":"","sources":["../../../../src/_modules/account-security/_enums/account-challenge-purpose.type-enum.ts"],"names":[],"mappings":";;;AAAA,qDAAqD;AACrD,IAAY,kCAGX;AAHD,WAAY,kCAAkC;IAC5C,8EAAwC,CAAA;IACxC,sEAAgC,CAAA;AAClC,CAAC,EAHW,kCAAkC,kDAAlC,kCAAkC,QAG7C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-refresh-token-state.type-enum.d.ts","sourceRoot":"","sources":["../../../../src/_modules/account-security/_enums/account-refresh-token-state.type-enum.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,oBAAY,mCAAmC;IAC7C,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,OAAO,YAAY;CACpB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DyNTS_AccountRefreshTokenState_Type = void 0;
|
|
4
|
+
/** One-time refresh-token ledger states. */
|
|
5
|
+
var DyNTS_AccountRefreshTokenState_Type;
|
|
6
|
+
(function (DyNTS_AccountRefreshTokenState_Type) {
|
|
7
|
+
DyNTS_AccountRefreshTokenState_Type["active"] = "active";
|
|
8
|
+
DyNTS_AccountRefreshTokenState_Type["used"] = "used";
|
|
9
|
+
DyNTS_AccountRefreshTokenState_Type["revoked"] = "revoked";
|
|
10
|
+
})(DyNTS_AccountRefreshTokenState_Type || (exports.DyNTS_AccountRefreshTokenState_Type = DyNTS_AccountRefreshTokenState_Type = {}));
|
|
11
|
+
//# sourceMappingURL=account-refresh-token-state.type-enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-refresh-token-state.type-enum.js","sourceRoot":"","sources":["../../../../src/_modules/account-security/_enums/account-refresh-token-state.type-enum.ts"],"names":[],"mappings":";;;AAAA,4CAA4C;AAC5C,IAAY,mCAIX;AAJD,WAAY,mCAAmC;IAC7C,wDAAiB,CAAA;IACjB,oDAAa,CAAA;IACb,0DAAmB,CAAA;AACrB,CAAC,EAJW,mCAAmC,mDAAnC,mCAAmC,QAI9C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-session-state.type-enum.d.ts","sourceRoot":"","sources":["../../../../src/_modules/account-security/_enums/account-session-state.type-enum.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,oBAAY,8BAA8B;IACxC,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DyNTS_AccountSessionState_Type = void 0;
|
|
4
|
+
/** Persisted standalone account-session states. */
|
|
5
|
+
var DyNTS_AccountSessionState_Type;
|
|
6
|
+
(function (DyNTS_AccountSessionState_Type) {
|
|
7
|
+
DyNTS_AccountSessionState_Type["active"] = "active";
|
|
8
|
+
DyNTS_AccountSessionState_Type["revoked"] = "revoked";
|
|
9
|
+
DyNTS_AccountSessionState_Type["expired"] = "expired";
|
|
10
|
+
})(DyNTS_AccountSessionState_Type || (exports.DyNTS_AccountSessionState_Type = DyNTS_AccountSessionState_Type = {}));
|
|
11
|
+
//# sourceMappingURL=account-session-state.type-enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-session-state.type-enum.js","sourceRoot":"","sources":["../../../../src/_modules/account-security/_enums/account-session-state.type-enum.ts"],"names":[],"mappings":";;;AAAA,mDAAmD;AACnD,IAAY,8BAIX;AAJD,WAAY,8BAA8B;IACxC,mDAAiB,CAAA;IACjB,qDAAmB,CAAA;IACnB,qDAAmB,CAAA;AACrB,CAAC,EAJW,8BAA8B,8CAA9B,8BAA8B,QAIzC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DyNTS_AccountChallengePurpose_Type } from '../_enums/account-challenge-purpose.type-enum';
|
|
2
|
+
import { DyNTS_AccountChallengeRecord_Interface } from './account-challenge-record.interface';
|
|
3
|
+
/** Atomic persistence contract for replacing and consuming one-time account challenges. */
|
|
4
|
+
export interface DyNTS_AccountChallengeAdapter_Interface {
|
|
5
|
+
replaceActiveChallenge(record: DyNTS_AccountChallengeRecord_Interface): Promise<void>;
|
|
6
|
+
consumeActiveChallenge(tokenHash: string, purpose: DyNTS_AccountChallengePurpose_Type, consumedAt: string): Promise<DyNTS_AccountChallengeRecord_Interface | null>;
|
|
7
|
+
revokeSubjectChallenges(subjectId: string, purpose: DyNTS_AccountChallengePurpose_Type, revokedAt: string): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=account-challenge-adapter.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-challenge-adapter.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-challenge-adapter.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,EAAE,MAAM,+CAA+C,CAAC;AACnG,OAAO,EAAE,sCAAsC,EAAE,MAAM,sCAAsC,CAAC;AAE9F,2FAA2F;AAC3F,MAAM,WAAW,uCAAuC;IACtD,sBAAsB,CAAC,MAAM,EAAE,sCAAsC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtF,sBAAsB,CACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kCAAkC,EAC3C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,sCAAsC,GAAG,IAAI,CAAC,CAAC;IAC1D,uBAAuB,CACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kCAAkC,EAC3C,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-challenge-adapter.interface.js","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-challenge-adapter.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-challenge-issued.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-challenge-issued.interface.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,MAAM,WAAW,sCAAsC;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-challenge-issued.interface.js","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-challenge-issued.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DyNTS_AccountChallengePurpose_Type } from '../_enums/account-challenge-purpose.type-enum';
|
|
2
|
+
/** Server-only one-time account challenge record containing a credential hash only. */
|
|
3
|
+
export interface DyNTS_AccountChallengeRecord_Interface {
|
|
4
|
+
challengeId: string;
|
|
5
|
+
subjectId: string;
|
|
6
|
+
purpose: DyNTS_AccountChallengePurpose_Type;
|
|
7
|
+
tokenHash: string;
|
|
8
|
+
createdAt: string;
|
|
9
|
+
expiresAt: string;
|
|
10
|
+
consumedAt: string;
|
|
11
|
+
revokedAt: string;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=account-challenge-record.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-challenge-record.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-challenge-record.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,EAAE,MAAM,+CAA+C,CAAC;AAEnG,uFAAuF;AACvF,MAAM,WAAW,sCAAsC;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,kCAAkC,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-challenge-record.interface.js","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-challenge-record.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DyNTS_AccountChallengePurpose_Type } from '../_enums/account-challenge-purpose.type-enum';
|
|
2
|
+
/** Trusted identity binding returned after an atomic one-time challenge consumption. */
|
|
3
|
+
export interface DyNTS_AccountChallengeResult_Interface {
|
|
4
|
+
challengeId: string;
|
|
5
|
+
subjectId: string;
|
|
6
|
+
purpose: DyNTS_AccountChallengePurpose_Type;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=account-challenge-result.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-challenge-result.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-challenge-result.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,EAAE,MAAM,+CAA+C,CAAC;AAEnG,wFAAwF;AACxF,MAAM,WAAW,sCAAsC;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,kCAAkC,CAAC;CAC7C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-challenge-result.interface.js","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-challenge-result.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DyNTS_AccountChallengeAdapter_Interface } from './account-challenge-adapter.interface';
|
|
2
|
+
/** Runtime settings for one-time account challenges. */
|
|
3
|
+
export interface DyNTS_AccountChallengeSettings_Interface {
|
|
4
|
+
adapter: DyNTS_AccountChallengeAdapter_Interface;
|
|
5
|
+
ttlMs?: number;
|
|
6
|
+
tokenBytes?: number;
|
|
7
|
+
clock?: () => Date;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=account-challenge-settings.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-challenge-settings.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-challenge-settings.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uCAAuC,EAAE,MAAM,uCAAuC,CAAC;AAEhG,wDAAwD;AACxD,MAAM,WAAW,wCAAwC;IACvD,OAAO,EAAE,uCAAuC,CAAC;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-challenge-settings.interface.js","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-challenge-settings.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Password-hashing and validation policy for the standalone Dynamo account capability. */
|
|
2
|
+
export interface DyNTS_AccountPasswordPolicy_Interface {
|
|
3
|
+
minLength: number;
|
|
4
|
+
maxLength: number;
|
|
5
|
+
scryptCost: number;
|
|
6
|
+
scryptBlockSize: number;
|
|
7
|
+
scryptParallelization: number;
|
|
8
|
+
derivedKeyLength: number;
|
|
9
|
+
saltLength: number;
|
|
10
|
+
commonPasswordSha256: string[];
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=account-password-policy.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-password-policy.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-password-policy.interface.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,WAAW,qCAAqC;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-password-policy.interface.js","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-password-policy.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Content-free password verification result; never carries the password or derived bytes. */
|
|
2
|
+
export interface DyNTS_AccountPasswordVerification_Interface {
|
|
3
|
+
isValid: boolean;
|
|
4
|
+
needsRehash: boolean;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=account-password-verification.interface.d.ts.map
|
package/build/_modules/account-security/_models/account-password-verification.interface.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-password-verification.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-password-verification.interface.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,MAAM,WAAW,2CAA2C;IAC1D,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;CACtB"}
|
package/build/_modules/account-security/_models/account-password-verification.interface.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-password-verification.interface.js","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-password-verification.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DyNTS_AccountRefreshTokenState_Type } from '../_enums/account-refresh-token-state.type-enum';
|
|
2
|
+
/** Server-only one-time refresh-token ledger record. */
|
|
3
|
+
export interface DyNTS_AccountRefreshTokenRecord_Interface {
|
|
4
|
+
tokenHash: string;
|
|
5
|
+
sessionId: string;
|
|
6
|
+
familyId: string;
|
|
7
|
+
subjectId: string;
|
|
8
|
+
generation: number;
|
|
9
|
+
state: DyNTS_AccountRefreshTokenState_Type;
|
|
10
|
+
expiresAt: string;
|
|
11
|
+
usedAt: string;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=account-refresh-token-record.interface.d.ts.map
|
package/build/_modules/account-security/_models/account-refresh-token-record.interface.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-refresh-token-record.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-refresh-token-record.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mCAAmC,EAAE,MAAM,iDAAiD,CAAC;AAEtG,wDAAwD;AACxD,MAAM,WAAW,yCAAyC;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,mCAAmC,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-refresh-token-record.interface.js","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-refresh-token-record.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { DyNTS_AccountRefreshTokenRecord_Interface } from './account-refresh-token-record.interface';
|
|
2
|
+
import { DyNTS_AccountSessionCreate_Interface } from './account-session-create.interface';
|
|
3
|
+
import { DyNTS_AccountSessionRecord_Interface } from './account-session-record.interface';
|
|
4
|
+
import { DyNTS_AccountSessionRotate_Interface } from './account-session-rotate.interface';
|
|
5
|
+
/**
|
|
6
|
+
* Persistence contract. Implementations must make create and rotate atomic and apply compare-and-set semantics.
|
|
7
|
+
*/
|
|
8
|
+
export interface DyNTS_AccountSessionAdapter_Interface {
|
|
9
|
+
createSession(set: DyNTS_AccountSessionCreate_Interface): Promise<void>;
|
|
10
|
+
findSessionById(sessionId: string): Promise<DyNTS_AccountSessionRecord_Interface | null>;
|
|
11
|
+
findSessionByAccessTokenHash(accessTokenHash: string): Promise<DyNTS_AccountSessionRecord_Interface | null>;
|
|
12
|
+
findRefreshTokenByHash(tokenHash: string): Promise<DyNTS_AccountRefreshTokenRecord_Interface | null>;
|
|
13
|
+
rotateSession(set: DyNTS_AccountSessionRotate_Interface): Promise<boolean>;
|
|
14
|
+
revokeSession(sessionId: string, revokedAt: string, reasonCode: string): Promise<void>;
|
|
15
|
+
revokeFamily(familyId: string, revokedAt: string, reasonCode: string): Promise<void>;
|
|
16
|
+
revokeSubject(subjectId: string, revokedAt: string, reasonCode: string): Promise<void>;
|
|
17
|
+
listSubjectSessions(subjectId: string): Promise<DyNTS_AccountSessionRecord_Interface[]>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=account-session-adapter.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-session-adapter.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-session-adapter.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yCAAyC,EAAE,MAAM,0CAA0C,CAAC;AACrG,OAAO,EAAE,oCAAoC,EAAE,MAAM,oCAAoC,CAAC;AAC1F,OAAO,EAAE,oCAAoC,EAAE,MAAM,oCAAoC,CAAC;AAC1F,OAAO,EAAE,oCAAoC,EAAE,MAAM,oCAAoC,CAAC;AAE1F;;GAEG;AACH,MAAM,WAAW,qCAAqC;IACpD,aAAa,CAAC,GAAG,EAAE,oCAAoC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oCAAoC,GAAG,IAAI,CAAC,CAAC;IACzF,4BAA4B,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,oCAAoC,GAAG,IAAI,CAAC,CAAC;IAC5G,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,yCAAyC,GAAG,IAAI,CAAC,CAAC;IACrG,aAAa,CAAC,GAAG,EAAE,oCAAoC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3E,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvF,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrF,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvF,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oCAAoC,EAAE,CAAC,CAAC;CACzF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-session-adapter.interface.js","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-session-adapter.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Authenticated server-side subject projection derived from an opaque access token. */
|
|
2
|
+
export interface DyNTS_AccountSessionClaims_Interface {
|
|
3
|
+
subjectId: string;
|
|
4
|
+
sessionId: string;
|
|
5
|
+
familyId: string;
|
|
6
|
+
authorizationVersion: number;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=account-session-claims.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-session-claims.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-session-claims.interface.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,MAAM,WAAW,oCAAoC;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,CAAC;CAC9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-session-claims.interface.js","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-session-claims.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Minimal, pre-redacted session context persisted for user-facing session recognition. */
|
|
2
|
+
export interface DyNTS_AccountSessionContext_Interface {
|
|
3
|
+
deviceName: string;
|
|
4
|
+
ipAddressHash: string;
|
|
5
|
+
userAgentHash: string;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=account-session-context.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-session-context.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-session-context.interface.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,WAAW,qCAAqC;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-session-context.interface.js","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-session-context.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DyNTS_AccountRefreshTokenRecord_Interface } from './account-refresh-token-record.interface';
|
|
2
|
+
import { DyNTS_AccountSessionRecord_Interface } from './account-session-record.interface';
|
|
3
|
+
/** Atomic session creation payload for a concrete Dynamo DataService adapter. */
|
|
4
|
+
export interface DyNTS_AccountSessionCreate_Interface {
|
|
5
|
+
session: DyNTS_AccountSessionRecord_Interface;
|
|
6
|
+
refreshToken: DyNTS_AccountRefreshTokenRecord_Interface;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=account-session-create.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-session-create.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-session-create.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yCAAyC,EAAE,MAAM,0CAA0C,CAAC;AACrG,OAAO,EAAE,oCAAoC,EAAE,MAAM,oCAAoC,CAAC;AAE1F,iFAAiF;AACjF,MAAM,WAAW,oCAAoC;IACnD,OAAO,EAAE,oCAAoC,CAAC;IAC9C,YAAY,EAAE,yCAAyC,CAAC;CACzD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-session-create.interface.js","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-session-create.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DyNTS_AccountSessionState_Type } from '../_enums/account-session-state.type-enum';
|
|
2
|
+
import { DyNTS_AccountSessionContext_Interface } from './account-session-context.interface';
|
|
3
|
+
/** Server-only session record. It stores token hashes, never bearer credentials. */
|
|
4
|
+
export interface DyNTS_AccountSessionRecord_Interface {
|
|
5
|
+
sessionId: string;
|
|
6
|
+
familyId: string;
|
|
7
|
+
subjectId: string;
|
|
8
|
+
accessTokenHash: string;
|
|
9
|
+
accessExpiresAt: string;
|
|
10
|
+
refreshExpiresAt: string;
|
|
11
|
+
state: DyNTS_AccountSessionState_Type;
|
|
12
|
+
generation: number;
|
|
13
|
+
revision: number;
|
|
14
|
+
authorizationVersion: number;
|
|
15
|
+
createdAt: string;
|
|
16
|
+
lastRotatedAt: string;
|
|
17
|
+
revokedAt: string;
|
|
18
|
+
revocationReason: string;
|
|
19
|
+
context: DyNTS_AccountSessionContext_Interface;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=account-session-record.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-session-record.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-session-record.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,EAAE,qCAAqC,EAAE,MAAM,qCAAqC,CAAC;AAE5F,oFAAoF;AACpF,MAAM,WAAW,oCAAoC;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,8BAA8B,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,qCAAqC,CAAC;CAChD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-session-record.interface.js","sourceRoot":"","sources":["../../../../src/_modules/account-security/_models/account-session-record.interface.ts"],"names":[],"mappings":""}
|