@learncard/network-brain-service 3.18.0 → 3.19.1
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/.env.example +38 -2
- package/CHANGELOG.md +118 -0
- package/README.md +42 -0
- package/compose.inbox.yml +7 -0
- package/dist/accesslayer/auth-grant/read.d.ts +1 -0
- package/dist/accesslayer/auth-grant/read.d.ts.map +1 -1
- package/dist/accesslayer/consentflowcontract/relationships/create.d.ts.map +1 -1
- package/dist/accesslayer/consentflowcontract/relationships/update.d.ts.map +1 -1
- package/dist/accesslayer/credential-activity/create.d.ts.map +1 -1
- package/dist/accesslayer/credential-refresh/email-delivery.d.ts +18 -0
- package/dist/accesslayer/credential-refresh/email-delivery.d.ts.map +1 -0
- package/dist/accesslayer/credential-refresh/index.d.ts +1 -0
- package/dist/accesslayer/credential-refresh/index.d.ts.map +1 -1
- package/dist/accesslayer/credential-refresh/read.d.ts.map +1 -1
- package/dist/accesslayer/credential-refresh/update.d.ts.map +1 -1
- package/dist/accesslayer/inbox-batch/store.d.ts +33 -0
- package/dist/accesslayer/inbox-batch/store.d.ts.map +1 -0
- package/dist/accesslayer/inbox-credential/create.d.ts +5 -0
- package/dist/accesslayer/inbox-credential/create.d.ts.map +1 -1
- package/dist/accesslayer/inbox-credential/refresh.d.ts +71 -0
- package/dist/accesslayer/inbox-credential/refresh.d.ts.map +1 -0
- package/dist/accesslayer/inbox-credential/update.d.ts +1 -1
- package/dist/accesslayer/inbox-credential/update.d.ts.map +1 -1
- package/dist/accesslayer/presentation/read.d.ts.map +1 -1
- package/dist/accesslayer/presentation/relationships/create.d.ts +2 -2
- package/dist/accesslayer/presentation/relationships/create.d.ts.map +1 -1
- package/dist/accesslayer/presentation/relationships/read.d.ts.map +1 -1
- package/dist/accesslayer/share-link/abandon.d.ts +3 -0
- package/dist/accesslayer/share-link/abandon.d.ts.map +1 -0
- package/dist/accesslayer/share-link/cleanup.d.ts +6 -0
- package/dist/accesslayer/share-link/cleanup.d.ts.map +1 -0
- package/dist/accesslayer/share-link/errors.d.ts +8 -0
- package/dist/accesslayer/share-link/errors.d.ts.map +1 -0
- package/dist/accesslayer/share-link/finalize.d.ts +3 -0
- package/dist/accesslayer/share-link/finalize.d.ts.map +1 -0
- package/dist/accesslayer/share-link/helpers.d.ts +56 -0
- package/dist/accesslayer/share-link/helpers.d.ts.map +1 -0
- package/dist/accesslayer/share-link/index.d.ts +12 -0
- package/dist/accesslayer/share-link/index.d.ts.map +1 -0
- package/dist/accesslayer/share-link/list.d.ts +5 -0
- package/dist/accesslayer/share-link/list.d.ts.map +1 -0
- package/dist/accesslayer/share-link/read.d.ts +5 -0
- package/dist/accesslayer/share-link/read.d.ts.map +1 -0
- package/dist/accesslayer/share-link/receipt.d.ts +11 -0
- package/dist/accesslayer/share-link/receipt.d.ts.map +1 -0
- package/dist/accesslayer/share-link/recovery.d.ts +6 -0
- package/dist/accesslayer/share-link/recovery.d.ts.map +1 -0
- package/dist/accesslayer/share-link/reserve.d.ts +4 -0
- package/dist/accesslayer/share-link/reserve.d.ts.map +1 -0
- package/dist/accesslayer/share-link/revoke.d.ts +3 -0
- package/dist/accesslayer/share-link/revoke.d.ts.map +1 -0
- package/dist/accesslayer/share-link/transaction-execution.d.ts +18 -0
- package/dist/accesslayer/share-link/transaction-execution.d.ts.map +1 -0
- package/dist/accesslayer/share-link/transaction.d.ts +15 -0
- package/dist/accesslayer/share-link/transaction.d.ts.map +1 -0
- package/dist/accesslayer/share-link/types.d.ts +370 -0
- package/dist/accesslayer/share-link/types.d.ts.map +1 -0
- package/dist/app.d.ts +4 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/cache/atomic-counter.test-helpers.d.ts +3 -0
- package/dist/cache/atomic-counter.test-helpers.d.ts.map +1 -0
- package/dist/cache/atomic-counter.test.d.ts +2 -0
- package/dist/cache/atomic-counter.test.d.ts.map +1 -0
- package/dist/cache/index.d.ts +1 -1
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/config/environment.d.ts +55 -0
- package/dist/config/environment.d.ts.map +1 -1
- package/dist/constants/auth-grant.d.ts +2 -0
- package/dist/constants/auth-grant.d.ts.map +1 -1
- package/dist/credential-refresh.d.ts.map +1 -1
- package/dist/helpers/activity.helpers.d.ts +4 -0
- package/dist/helpers/activity.helpers.d.ts.map +1 -1
- package/dist/helpers/boost.helpers.d.ts.map +1 -1
- package/dist/helpers/contact-method.helpers.d.ts.map +1 -1
- package/dist/helpers/contact-method.helpers.test.d.ts +2 -0
- package/dist/helpers/contact-method.helpers.test.d.ts.map +1 -0
- package/dist/helpers/credential-refresh-email-content.helpers.d.ts +44 -0
- package/dist/helpers/credential-refresh-email-content.helpers.d.ts.map +1 -0
- package/dist/helpers/credential-refresh-email-content.helpers.test.d.ts +2 -0
- package/dist/helpers/credential-refresh-email-content.helpers.test.d.ts.map +1 -0
- package/dist/helpers/credential-refresh-email.helpers.d.ts +17 -0
- package/dist/helpers/credential-refresh-email.helpers.d.ts.map +1 -0
- package/dist/helpers/credential-refresh-proof.helpers.d.ts +4 -0
- package/dist/helpers/credential-refresh-proof.helpers.d.ts.map +1 -0
- package/dist/helpers/credential-refresh-proof.helpers.test.d.ts +2 -0
- package/dist/helpers/credential-refresh-proof.helpers.test.d.ts.map +1 -0
- package/dist/helpers/credential-refresh.helpers.d.ts +45 -2
- package/dist/helpers/credential-refresh.helpers.d.ts.map +1 -1
- package/dist/helpers/credential.helpers.d.ts +2 -1
- package/dist/helpers/credential.helpers.d.ts.map +1 -1
- package/dist/helpers/credentialSubject.helpers.d.ts +3 -0
- package/dist/helpers/credentialSubject.helpers.d.ts.map +1 -0
- package/dist/helpers/credentialSubject.helpers.test.d.ts +2 -0
- package/dist/helpers/credentialSubject.helpers.test.d.ts.map +1 -0
- package/dist/helpers/finalize-inbox.helpers.d.ts.map +1 -1
- package/dist/helpers/inbox-batch-http.helpers.d.ts +15 -0
- package/dist/helpers/inbox-batch-http.helpers.d.ts.map +1 -0
- package/dist/helpers/inbox-batch-http.helpers.test.d.ts +2 -0
- package/dist/helpers/inbox-batch-http.helpers.test.d.ts.map +1 -0
- package/dist/helpers/inbox-batch-status.helpers.d.ts +3 -0
- package/dist/helpers/inbox-batch-status.helpers.d.ts.map +1 -0
- package/dist/helpers/inbox-batch.helpers.d.ts +10 -0
- package/dist/helpers/inbox-batch.helpers.d.ts.map +1 -0
- package/dist/helpers/inbox-batch.helpers.test.d.ts +2 -0
- package/dist/helpers/inbox-batch.helpers.test.d.ts.map +1 -0
- package/dist/helpers/inbox-issuance-error.helpers.d.ts +13 -0
- package/dist/helpers/inbox-issuance-error.helpers.d.ts.map +1 -0
- package/dist/helpers/inbox-queue.helpers.d.ts +11 -0
- package/dist/helpers/inbox-queue.helpers.d.ts.map +1 -0
- package/dist/helpers/inbox-queue.helpers.test.d.ts +2 -0
- package/dist/helpers/inbox-queue.helpers.test.d.ts.map +1 -0
- package/dist/helpers/inbox-refresh.helpers.d.ts +186 -0
- package/dist/helpers/inbox-refresh.helpers.d.ts.map +1 -0
- package/dist/helpers/inbox.helpers.d.ts +9 -1
- package/dist/helpers/inbox.helpers.d.ts.map +1 -1
- package/dist/helpers/notificationMessages.d.ts +1 -1
- package/dist/helpers/notificationMessages.d.ts.map +1 -1
- package/dist/helpers/notifications.helpers.d.ts.map +1 -1
- package/dist/helpers/presentation-metadata.d.ts +4 -0
- package/dist/helpers/presentation-metadata.d.ts.map +1 -0
- package/dist/helpers/presentation.helpers.d.ts +1 -1
- package/dist/helpers/presentation.helpers.d.ts.map +1 -1
- package/dist/helpers/profile.helpers.d.ts +1 -0
- package/dist/helpers/profile.helpers.d.ts.map +1 -1
- package/dist/helpers/rateLimit.helpers.d.ts.map +1 -1
- package/dist/helpers/refresh-send-intent.helpers.d.ts +51 -0
- package/dist/helpers/refresh-send-intent.helpers.d.ts.map +1 -0
- package/dist/helpers/share-content-client/adapters.d.ts +10 -0
- package/dist/helpers/share-content-client/adapters.d.ts.map +1 -0
- package/dist/helpers/share-content-client/canonical.d.ts +7 -0
- package/dist/helpers/share-content-client/canonical.d.ts.map +1 -0
- package/dist/helpers/share-content-client/client.d.ts +5 -0
- package/dist/helpers/share-content-client/client.d.ts.map +1 -0
- package/dist/helpers/share-content-client/config.d.ts +11 -0
- package/dist/helpers/share-content-client/config.d.ts.map +1 -0
- package/dist/helpers/share-content-client/index.d.ts +6 -0
- package/dist/helpers/share-content-client/index.d.ts.map +1 -0
- package/dist/helpers/share-content-client/responses.d.ts +16 -0
- package/dist/helpers/share-content-client/responses.d.ts.map +1 -0
- package/dist/helpers/share-content-client/types.d.ts +145 -0
- package/dist/helpers/share-content-client/types.d.ts.map +1 -0
- package/dist/helpers/share-link-coordinator/budget-helpers.d.ts +5 -0
- package/dist/helpers/share-link-coordinator/budget-helpers.d.ts.map +1 -0
- package/dist/helpers/share-link-coordinator/cleanup-runner.d.ts +3 -0
- package/dist/helpers/share-link-coordinator/cleanup-runner.d.ts.map +1 -0
- package/dist/helpers/share-link-coordinator/coordinator.d.ts +4 -0
- package/dist/helpers/share-link-coordinator/coordinator.d.ts.map +1 -0
- package/dist/helpers/share-link-coordinator/index.d.ts +5 -0
- package/dist/helpers/share-link-coordinator/index.d.ts.map +1 -0
- package/dist/helpers/share-link-coordinator/recovery-runner.d.ts +9 -0
- package/dist/helpers/share-link-coordinator/recovery-runner.d.ts.map +1 -0
- package/dist/helpers/share-link-coordinator/runtime.d.ts +11 -0
- package/dist/helpers/share-link-coordinator/runtime.d.ts.map +1 -0
- package/dist/helpers/share-link-coordinator/stat.d.ts +4 -0
- package/dist/helpers/share-link-coordinator/stat.d.ts.map +1 -0
- package/dist/helpers/share-link-coordinator/types.d.ts +160 -0
- package/dist/helpers/share-link-coordinator/types.d.ts.map +1 -0
- package/dist/helpers/share-link-lifecycle/index.d.ts +5 -0
- package/dist/helpers/share-link-lifecycle/index.d.ts.map +1 -0
- package/dist/helpers/share-link-lifecycle/lease.helpers.d.ts +4 -0
- package/dist/helpers/share-link-lifecycle/lease.helpers.d.ts.map +1 -0
- package/dist/helpers/share-link-lifecycle/recovery.helpers.d.ts +21 -0
- package/dist/helpers/share-link-lifecycle/recovery.helpers.d.ts.map +1 -0
- package/dist/helpers/share-link-lifecycle/request-hash.helpers.d.ts +9 -0
- package/dist/helpers/share-link-lifecycle/request-hash.helpers.d.ts.map +1 -0
- package/dist/helpers/share-link-lifecycle/types.d.ts +14 -0
- package/dist/helpers/share-link-lifecycle/types.d.ts.map +1 -0
- package/dist/helpers/share-link-maintenance/budget.d.ts +12 -0
- package/dist/helpers/share-link-maintenance/budget.d.ts.map +1 -0
- package/dist/helpers/share-link-maintenance/config.d.ts +48 -0
- package/dist/helpers/share-link-maintenance/config.d.ts.map +1 -0
- package/dist/helpers/share-link-maintenance/index.d.ts +8 -0
- package/dist/helpers/share-link-maintenance/index.d.ts.map +1 -0
- package/dist/helpers/share-link-maintenance/runner.d.ts +19 -0
- package/dist/helpers/share-link-maintenance/runner.d.ts.map +1 -0
- package/dist/helpers/share-link-maintenance/runtime.d.ts +36 -0
- package/dist/helpers/share-link-maintenance/runtime.d.ts.map +1 -0
- package/dist/helpers/share-link-maintenance/scheduler.d.ts +18 -0
- package/dist/helpers/share-link-maintenance/scheduler.d.ts.map +1 -0
- package/dist/helpers/share-link-maintenance/telemetry.d.ts +5 -0
- package/dist/helpers/share-link-maintenance/telemetry.d.ts.map +1 -0
- package/dist/helpers/share-link-maintenance/types.d.ts +53 -0
- package/dist/helpers/share-link-maintenance/types.d.ts.map +1 -0
- package/dist/helpers/share-link-owner/config.d.ts +16 -0
- package/dist/helpers/share-link-owner/config.d.ts.map +1 -0
- package/dist/helpers/share-link-owner/diagnostics.d.ts +26 -0
- package/dist/helpers/share-link-owner/diagnostics.d.ts.map +1 -0
- package/dist/helpers/share-link-owner/lazy-initializer.d.ts +2 -0
- package/dist/helpers/share-link-owner/lazy-initializer.d.ts.map +1 -0
- package/dist/helpers/share-link-owner-projection.d.ts +4 -0
- package/dist/helpers/share-link-owner-projection.d.ts.map +1 -0
- package/dist/helpers/share-link-passcode-abuse.d.ts +2 -0
- package/dist/helpers/share-link-passcode-abuse.d.ts.map +1 -0
- package/dist/helpers/share-link-passcode.d.ts +6 -0
- package/dist/helpers/share-link-passcode.d.ts.map +1 -0
- package/dist/helpers/share-link-policy/index.d.ts +4 -0
- package/dist/helpers/share-link-policy/index.d.ts.map +1 -0
- package/dist/helpers/share-link-policy/production.d.ts +13 -0
- package/dist/helpers/share-link-policy/production.d.ts.map +1 -0
- package/dist/helpers/share-link-policy/resolver.d.ts +6 -0
- package/dist/helpers/share-link-policy/resolver.d.ts.map +1 -0
- package/dist/helpers/share-link-policy/types.d.ts +16 -0
- package/dist/helpers/share-link-policy/types.d.ts.map +1 -0
- package/dist/helpers/share-link-public/config.d.ts +13 -0
- package/dist/helpers/share-link-public/config.d.ts.map +1 -0
- package/dist/helpers/share-link-view-notification.d.ts +2 -0
- package/dist/helpers/share-link-view-notification.d.ts.map +1 -0
- package/dist/helpers/shim.d.ts +1 -1
- package/dist/helpers/shim.d.ts.map +1 -1
- package/dist/inbox-queue-local.d.ts +2 -0
- package/dist/inbox-queue-local.d.ts.map +1 -0
- package/dist/index.js +2 -2
- package/dist/models/AuthGrant.d.ts.map +1 -1
- package/dist/models/CredentialActivity.d.ts +1 -0
- package/dist/models/CredentialActivity.d.ts.map +1 -1
- package/dist/models/CredentialRefresh.d.ts +5 -2
- package/dist/models/CredentialRefresh.d.ts.map +1 -1
- package/dist/models/InboxCredential.d.ts +1 -0
- package/dist/models/InboxCredential.d.ts.map +1 -1
- package/dist/models/Presentation.d.ts +2 -0
- package/dist/models/Presentation.d.ts.map +1 -1
- package/dist/models/Profile.d.ts +2 -0
- package/dist/models/Profile.d.ts.map +1 -1
- package/dist/models/ShareLink.d.ts +44 -0
- package/dist/models/ShareLink.d.ts.map +1 -0
- package/dist/models/ShareViewReceipt.d.ts +22 -0
- package/dist/models/ShareViewReceipt.d.ts.map +1 -0
- package/dist/models/credential-refresh-constraints.d.ts.map +1 -1
- package/dist/models/index.d.ts +1 -0
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/share-link-constraints.d.ts +3 -0
- package/dist/models/share-link-constraints.d.ts.map +1 -0
- package/dist/openapi.d.ts.map +1 -1
- package/dist/public-share-link-http.d.ts +4 -0
- package/dist/public-share-link-http.d.ts.map +1 -0
- package/dist/routes/act-as.test.d.ts +2 -0
- package/dist/routes/act-as.test.d.ts.map +1 -0
- package/dist/routes/activity.d.ts +3 -0
- package/dist/routes/activity.d.ts.map +1 -1
- package/dist/routes/app-store.d.ts.map +1 -1
- package/dist/routes/auth-grants.d.ts +10 -0
- package/dist/routes/auth-grants.d.ts.map +1 -1
- package/dist/routes/boosts.d.ts +494 -0
- package/dist/routes/boosts.d.ts.map +1 -1
- package/dist/routes/contracts.d.ts +2 -2
- package/dist/routes/contracts.d.ts.map +1 -1
- package/dist/routes/credential-refreshes.d.ts.map +1 -1
- package/dist/routes/credentials.d.ts +1 -1
- package/dist/routes/credentials.d.ts.map +1 -1
- package/dist/routes/inbox.d.ts +953 -11
- package/dist/routes/inbox.d.ts.map +1 -1
- package/dist/routes/index.d.ts +154 -85
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/presentations.d.ts +1 -0
- package/dist/routes/presentations.d.ts.map +1 -1
- package/dist/routes/profile-manager.d.ts.map +1 -1
- package/dist/routes/profiles.d.ts.map +1 -1
- package/dist/routes/public-share-links.d.ts +230 -0
- package/dist/routes/public-share-links.d.ts.map +1 -0
- package/dist/routes/share-links.d.ts +844 -0
- package/dist/routes/share-links.d.ts.map +1 -0
- package/dist/routes/workflows.d.ts.map +1 -1
- package/dist/services/delivery/adapters/postmark.adapter.d.ts.map +1 -1
- package/dist/services/delivery/adapters/postmark.adapter.test.d.ts +2 -0
- package/dist/services/delivery/adapters/postmark.adapter.test.d.ts.map +1 -0
- package/dist/services/registry/registry.factory.d.ts.map +1 -1
- package/dist/types/activity.d.ts +4 -0
- package/dist/types/activity.d.ts.map +1 -1
- package/dist/types/consentflowcontract.d.ts +1 -1
- package/dist/types/credential-refresh.d.ts +10 -1
- package/dist/types/credential-refresh.d.ts.map +1 -1
- package/dist/types/inbox-batch.d.ts +38 -0
- package/dist/types/inbox-batch.d.ts.map +1 -0
- package/inbox-e2e-setup.ts +53 -1
- package/inbox-elasticmq.conf +10 -0
- package/lambda.ts +64 -16
- package/package.json +24 -16
- package/scripts/seed-demo-persona.ts +425 -0
- package/scripts/setup-inbox-queues.ts +60 -0
- package/serverless-local.yml +2 -0
- package/serverless.yml +111 -0
- package/shareLinkMaintenanceLambda.ts +49 -0
- package/src/accesslayer/auth-grant/read.ts +2 -1
- package/src/accesslayer/consentflowcontract/relationships/create.ts +9 -16
- package/src/accesslayer/consentflowcontract/relationships/update.ts +15 -28
- package/src/accesslayer/credential-activity/create.ts +1 -0
- package/src/accesslayer/credential-refresh/email-delivery.ts +116 -0
- package/src/accesslayer/credential-refresh/index.ts +1 -0
- package/src/accesslayer/credential-refresh/read.ts +8 -2
- package/src/accesslayer/credential-refresh/update.ts +4 -0
- package/src/accesslayer/inbox-batch/store.ts +469 -0
- package/src/accesslayer/inbox-credential/create.ts +51 -19
- package/src/accesslayer/inbox-credential/refresh.ts +221 -0
- package/src/accesslayer/inbox-credential/update.ts +1 -1
- package/src/accesslayer/presentation/read.ts +57 -25
- package/src/accesslayer/presentation/relationships/create.ts +54 -11
- package/src/accesslayer/presentation/relationships/read.ts +21 -6
- package/src/accesslayer/share-link/abandon.ts +100 -0
- package/src/accesslayer/share-link/cleanup.ts +271 -0
- package/src/accesslayer/share-link/errors.ts +32 -0
- package/src/accesslayer/share-link/finalize.ts +265 -0
- package/src/accesslayer/share-link/helpers.ts +419 -0
- package/src/accesslayer/share-link/index.ts +11 -0
- package/src/accesslayer/share-link/list.ts +162 -0
- package/src/accesslayer/share-link/read.ts +107 -0
- package/src/accesslayer/share-link/receipt.ts +548 -0
- package/src/accesslayer/share-link/recovery.ts +545 -0
- package/src/accesslayer/share-link/reserve.ts +684 -0
- package/src/accesslayer/share-link/revoke.ts +197 -0
- package/src/accesslayer/share-link/transaction-execution.ts +72 -0
- package/src/accesslayer/share-link/transaction.ts +126 -0
- package/src/accesslayer/share-link/types.ts +601 -0
- package/src/app.ts +6 -0
- package/src/cache/atomic-counter.test-helpers.ts +27 -0
- package/src/cache/atomic-counter.test.ts +6 -0
- package/src/cache/index.ts +25 -13
- package/src/config/environment.ts +40 -0
- package/src/constants/auth-grant.ts +5 -0
- package/src/credential-refresh.ts +5 -1
- package/src/docker-entry.ts +65 -0
- package/src/helpers/activity.helpers.ts +4 -0
- package/src/helpers/app-counter.helpers.ts +1 -1
- package/src/helpers/boost.helpers.ts +4 -31
- package/src/helpers/contact-method.helpers.test.ts +43 -0
- package/src/helpers/contact-method.helpers.ts +3 -4
- package/src/helpers/credential-refresh-email-content.helpers.test.ts +222 -0
- package/src/helpers/credential-refresh-email-content.helpers.ts +155 -0
- package/src/helpers/credential-refresh-email.helpers.ts +201 -0
- package/src/helpers/credential-refresh-proof.helpers.test.ts +103 -0
- package/src/helpers/credential-refresh-proof.helpers.ts +43 -0
- package/src/helpers/credential-refresh.helpers.ts +375 -99
- package/src/helpers/credential.helpers.ts +4 -1
- package/src/helpers/credentialSubject.helpers.test.ts +114 -0
- package/src/helpers/credentialSubject.helpers.ts +40 -0
- package/src/helpers/finalize-inbox.helpers.ts +29 -14
- package/src/helpers/inbox-batch-http.helpers.test.ts +188 -0
- package/src/helpers/inbox-batch-http.helpers.ts +150 -0
- package/src/helpers/inbox-batch-status.helpers.ts +11 -0
- package/src/helpers/inbox-batch.helpers.test.ts +668 -0
- package/src/helpers/inbox-batch.helpers.ts +374 -0
- package/src/helpers/inbox-issuance-error.helpers.ts +25 -0
- package/src/helpers/inbox-queue.helpers.test.ts +253 -0
- package/src/helpers/inbox-queue.helpers.ts +372 -0
- package/src/helpers/inbox-refresh.helpers.ts +432 -0
- package/src/helpers/inbox.helpers.ts +275 -36
- package/src/helpers/notificationMessages.ts +18 -1
- package/src/helpers/notifications.helpers.ts +4 -2
- package/src/helpers/presentation-metadata.ts +41 -0
- package/src/helpers/presentation.helpers.ts +27 -20
- package/src/helpers/profile.helpers.ts +7 -0
- package/src/helpers/rateLimit.helpers.ts +2 -5
- package/src/helpers/refresh-send-intent.helpers.ts +273 -0
- package/src/helpers/share-content-client/adapters.ts +55 -0
- package/src/helpers/share-content-client/canonical.ts +25 -0
- package/src/helpers/share-content-client/client.ts +440 -0
- package/src/helpers/share-content-client/config.ts +189 -0
- package/src/helpers/share-content-client/index.ts +27 -0
- package/src/helpers/share-content-client/responses.ts +273 -0
- package/src/helpers/share-content-client/types.ts +253 -0
- package/src/helpers/share-link-coordinator/budget-helpers.ts +53 -0
- package/src/helpers/share-link-coordinator/cleanup-runner.ts +286 -0
- package/src/helpers/share-link-coordinator/coordinator.ts +714 -0
- package/src/helpers/share-link-coordinator/index.ts +8 -0
- package/src/helpers/share-link-coordinator/recovery-runner.ts +428 -0
- package/src/helpers/share-link-coordinator/runtime.ts +88 -0
- package/src/helpers/share-link-coordinator/stat.ts +30 -0
- package/src/helpers/share-link-coordinator/types.ts +353 -0
- package/src/helpers/share-link-lifecycle/index.ts +4 -0
- package/src/helpers/share-link-lifecycle/lease.helpers.ts +35 -0
- package/src/helpers/share-link-lifecycle/recovery.helpers.ts +173 -0
- package/src/helpers/share-link-lifecycle/request-hash.helpers.ts +130 -0
- package/src/helpers/share-link-lifecycle/types.ts +58 -0
- package/src/helpers/share-link-maintenance/budget.ts +63 -0
- package/src/helpers/share-link-maintenance/config.ts +312 -0
- package/src/helpers/share-link-maintenance/index.ts +24 -0
- package/src/helpers/share-link-maintenance/runner.ts +223 -0
- package/src/helpers/share-link-maintenance/runtime.ts +334 -0
- package/src/helpers/share-link-maintenance/scheduler.ts +126 -0
- package/src/helpers/share-link-maintenance/telemetry.ts +70 -0
- package/src/helpers/share-link-maintenance/types.ts +89 -0
- package/src/helpers/share-link-owner/config.ts +48 -0
- package/src/helpers/share-link-owner/diagnostics.ts +89 -0
- package/src/helpers/share-link-owner/lazy-initializer.ts +29 -0
- package/src/helpers/share-link-owner-projection.ts +52 -0
- package/src/helpers/share-link-passcode-abuse.ts +36 -0
- package/src/helpers/share-link-passcode.ts +47 -0
- package/src/helpers/share-link-policy/index.ts +7 -0
- package/src/helpers/share-link-policy/production.ts +88 -0
- package/src/helpers/share-link-policy/resolver.ts +108 -0
- package/src/helpers/share-link-policy/types.ts +48 -0
- package/src/helpers/share-link-public/config.ts +41 -0
- package/src/helpers/share-link-view-notification.ts +18 -0
- package/src/helpers/shim.ts +32 -31
- package/src/inbox-queue-local.ts +28 -0
- package/src/models/AuthGrant.ts +1 -0
- package/src/models/CredentialActivity.ts +3 -5
- package/src/models/CredentialRefresh.ts +4 -2
- package/src/models/InboxCredential.ts +2 -0
- package/src/models/Presentation.ts +2 -2
- package/src/models/Profile.ts +3 -2
- package/src/models/ShareLink.ts +130 -0
- package/src/models/ShareViewReceipt.ts +69 -0
- package/src/models/credential-refresh-constraints.test.ts +8 -3
- package/src/models/credential-refresh-constraints.ts +5 -0
- package/src/models/index.ts +2 -0
- package/src/models/share-link-constraints.ts +93 -0
- package/src/openapi.ts +8 -0
- package/src/public-share-link-http.ts +49 -0
- package/src/routes/act-as.test.ts +239 -0
- package/src/routes/app-store.ts +4 -13
- package/src/routes/auth-grants.ts +13 -11
- package/src/routes/boosts.ts +916 -103
- package/src/routes/contracts.ts +2 -11
- package/src/routes/credential-refreshes.test.ts +8 -2
- package/src/routes/credential-refreshes.ts +4 -1
- package/src/routes/credentials.ts +2 -1
- package/src/routes/inbox.ts +95 -49
- package/src/routes/index.ts +216 -46
- package/src/routes/presentations.ts +19 -3
- package/src/routes/profile-manager.ts +10 -2
- package/src/routes/profiles.ts +17 -6
- package/src/routes/public-share-links.ts +814 -0
- package/src/routes/share-links.ts +640 -0
- package/src/routes/skills.ts +1 -1
- package/src/routes/workflows.ts +43 -24
- package/src/services/delivery/adapters/postmark.adapter.test.ts +54 -0
- package/src/services/delivery/adapters/postmark.adapter.ts +16 -1
- package/src/services/registry/registry.factory.ts +2 -1
- package/src/types/activity.ts +2 -0
- package/src/types/credential-refresh.ts +21 -2
- package/src/types/inbox-batch.ts +46 -0
- package/test/atomic-counter.e2e.ts +12 -0
- package/test/auth-grant.spec.ts +21 -21
- package/test/credential-refresh-email.spec.ts +663 -0
- package/test/credential-refresh-publication.spec.ts +2 -0
- package/test/dids.spec.ts +10 -1
- package/test/guardian-gated-routes.spec.ts +13 -0
- package/test/helpers/inbox-e2e-environment.ts +6 -0
- package/test/helpers/share-link-fixtures.ts +94 -0
- package/test/inbox-batch.spec.ts +1338 -0
- package/test/inbox-refresh.spec.ts +534 -0
- package/test/managed-recipient-inbox.spec.ts +130 -0
- package/test/notificationMessages.spec.ts +13 -0
- package/test/openapi.spec.ts +61 -1
- package/test/presentations.spec.ts +54 -6
- package/test/profiles.spec.ts +67 -1
- package/test/refresh-send.spec.ts +1799 -0
- package/test/registry.spec.ts +56 -11
- package/test/share-content-client.contract.spec.ts +365 -0
- package/test/share-content-client.unit.spec.ts +462 -0
- package/test/share-link-abuse.unit.spec.ts +65 -0
- package/test/share-link-coordinator.neo4j.spec.ts +684 -0
- package/test/share-link-coordinator.unit.spec.ts +990 -0
- package/test/share-link-dependency-diagnostics.unit.spec.ts +127 -0
- package/test/share-link-lifecycle.neo4j.spec.ts +1268 -0
- package/test/share-link-lifecycle.unit.spec.ts +205 -0
- package/test/share-link-list-cursor.unit.spec.ts +86 -0
- package/test/share-link-list.neo4j.spec.ts +324 -0
- package/test/share-link-maintenance.neo4j.spec.ts +355 -0
- package/test/share-link-maintenance.unit.spec.ts +1113 -0
- package/test/share-link-owner-policy.unit.spec.ts +210 -0
- package/test/share-link-owner-route.unit.spec.ts +752 -0
- package/test/share-link-owner-runtime.unit.spec.ts +102 -0
- package/test/share-link-passcode.unit.spec.ts +29 -0
- package/test/share-link-policy.unit.spec.ts +135 -0
- package/test/share-link-presentation-metadata.unit.spec.ts +49 -0
- package/test/share-link-production-policy.unit.spec.ts +77 -0
- package/test/share-link-public-config.unit.spec.ts +64 -0
- package/test/share-link-public-http-adapter.unit.spec.ts +315 -0
- package/test/share-link-public-route.unit.spec.ts +800 -0
- package/test/share-link-receipt.neo4j.spec.ts +943 -0
- package/test/share-link-recovery.neo4j.spec.ts +935 -0
- package/test/share-link-recovery.unit.spec.ts +726 -0
- package/vitest.config.ts +10 -0
- package/vitest.inbox-e2e.config.ts +5 -1
- package/vitest.integration.config.ts +2 -0
- package/vitest.share-links-neo4j.config.ts +19 -0
- package/vitest.share-links-unit.config.ts +28 -0
package/.env.example
CHANGED
|
@@ -6,8 +6,13 @@ PORT=3000
|
|
|
6
6
|
SEED=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
|
7
7
|
NEO4J_URI=bolt://localhost:7687
|
|
8
8
|
NEO4J_USERNAME=neo4j
|
|
9
|
-
NEO4J_PASSWORD=password
|
|
10
|
-
DOMAIN_NAME=
|
|
9
|
+
NEO4J_PASSWORD=this-is-the-password
|
|
10
|
+
DOMAIN_NAME=localhost%3A4000
|
|
11
|
+
MONGO_URI=mongodb://localhost:27017/?replicaSet=rs0
|
|
12
|
+
MONGO_DB_NAME=lca-api
|
|
13
|
+
# Required by the sample-persona seeder. Use a disposable seed only for local development.
|
|
14
|
+
DEMO_PERSONA_SIGNING_AUTHORITY_ENDPOINT=http://localhost:5100/api
|
|
15
|
+
DEMO_PERSONA_SA_SEED=
|
|
11
16
|
CLIENT_APP_DOMAIN_NAME=
|
|
12
17
|
CLIENT_APP_PORT=3000
|
|
13
18
|
LOGIN_PROVIDER_DID=
|
|
@@ -22,6 +27,10 @@ OIDC_EXPECTED_AUDIENCE=
|
|
|
22
27
|
|
|
23
28
|
AWS_REGION=
|
|
24
29
|
NOTIFICATIONS_QUEUE_URL=
|
|
30
|
+
INBOX_QUEUE_URL=
|
|
31
|
+
INBOX_DEAD_LETTER_QUEUE_URL=
|
|
32
|
+
# Set only for a local SQS emulator; production uses the AWS endpoint and IAM role.
|
|
33
|
+
INBOX_QUEUE_ENDPOINT=
|
|
25
34
|
NOTIFICATIONS_QUEUE_POLL_URL=
|
|
26
35
|
NOTIFICATIONS_SERVICE_WEBHOOK_URL=
|
|
27
36
|
NOTIFICATIONS_SERVICE_PORT=5100
|
|
@@ -88,3 +97,30 @@ CREDENTIAL_REFRESH_ENABLED=false
|
|
|
88
97
|
CREDENTIAL_REFRESH_DIGEST_SECRET=
|
|
89
98
|
# Hours during which repeat refresh notifications collapse into one unread record.
|
|
90
99
|
CREDENTIAL_REFRESH_NOTIFICATION_WINDOW_HOURS=24
|
|
100
|
+
|
|
101
|
+
# LC-2187 service wiring and automatic recovery/cleanup maintenance.
|
|
102
|
+
# Supply an explicit namespace, trusted LearnCloud origin and audience;
|
|
103
|
+
# malformed values fail closed without graph/remote/signing work.
|
|
104
|
+
SHARE_LINK_MAINTENANCE_NAMESPACE=
|
|
105
|
+
SHARE_LINK_MAINTENANCE_ORIGIN=
|
|
106
|
+
SHARE_LINK_MAINTENANCE_AUDIENCE=
|
|
107
|
+
SHARE_LINK_MAINTENANCE_ALLOW_INSECURE_LOOPBACK=false
|
|
108
|
+
SHARE_LINK_MAINTENANCE_CLAIMANT=brain-share-link-maintenance
|
|
109
|
+
SHARE_LINK_MAINTENANCE_RECOVERY_LIMIT=25
|
|
110
|
+
SHARE_LINK_MAINTENANCE_CLEANUP_LIMIT=25
|
|
111
|
+
SHARE_LINK_MAINTENANCE_LEASE_MS=120000
|
|
112
|
+
SHARE_LINK_MAINTENANCE_CLAIM_MS=300000
|
|
113
|
+
SHARE_LINK_MAINTENANCE_BUDGET_MS=60000
|
|
114
|
+
SHARE_LINK_MAINTENANCE_INTERVAL_MS=300000
|
|
115
|
+
SHARE_LINK_MAINTENANCE_REQUEST_TIMEOUT_MS=10000
|
|
116
|
+
SHARE_LINK_MAINTENANCE_FINALIZE_RESERVE_MS=5000
|
|
117
|
+
SHARE_LINK_MAINTENANCE_GRAPH_TIMEOUT_MS=15000
|
|
118
|
+
|
|
119
|
+
# Owner/public APIs and maintenance are available once the service wiring above
|
|
120
|
+
# is valid. UI rollout is controlled only by LaunchDarkly share-links-enabled.
|
|
121
|
+
# Optional owner namespace override must match SHARE_LINK_MAINTENANCE_NAMESPACE.
|
|
122
|
+
SHARE_LINK_OWNER_API_NAMESPACE=
|
|
123
|
+
# Independent 32+ byte secret, identical on all Brain instances and stable across
|
|
124
|
+
# deployments. Required when the owner API is enabled; test runs use a test-only key.
|
|
125
|
+
SHARE_LINK_REQUEST_HASH_SECRET=
|
|
126
|
+
# Production unknown-age policy defaults to 30 days and does not count views.
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,123 @@
|
|
|
1
1
|
# @learncard/network-brain-service
|
|
2
2
|
|
|
3
|
+
## 3.19.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#1607](https://github.com/learningeconomy/LearnCard/pull/1607) [`b184f5552abf37a11468d435e5cea07fc35e1993`](https://github.com/learningeconomy/LearnCard/commit/b184f5552abf37a11468d435e5cea07fc35e1993) Thanks [@goblincore](https://github.com/goblincore)! - Make `acceptPresentation` idempotent so retries of a saved collection do not create duplicate relationships. New or replacement share-link passcodes require at least eight characters; existing shorter passcodes remain valid for recipients. Public share resolution can now return `try_later` when passcode verification is unavailable or throttled.
|
|
8
|
+
|
|
9
|
+
- [#1624](https://github.com/learningeconomy/LearnCard/pull/1624) [`7e5c2b9ce9fabbd5635cf17a2c6eea5c3ce692fa`](https://github.com/learningeconomy/LearnCard/commit/7e5c2b9ce9fabbd5635cf17a2c6eea5c3ce692fa) Thanks [@Custard7](https://github.com/Custard7)! - fix: Stop treating service profiles as child accounts and fix managed-child claim email template
|
|
10
|
+
|
|
11
|
+
- [#1529](https://github.com/learningeconomy/LearnCard/pull/1529) [`0e262737aafb8248e88e05039c83a3f30be6750f`](https://github.com/learningeconomy/LearnCard/commit/0e262737aafb8248e88e05039c83a3f30be6750f) Thanks [@Custard7](https://github.com/Custard7)! - SSS prod hardening: confirmed recovery enrollment, lost-login identity rebind, and an isolated email relay.
|
|
12
|
+
|
|
13
|
+
- Recovery methods now carry `confirmedAt` and must be proven before they count (email confirmation code, phrase challenge words, backup re-decrypt, passkey round trip). New SSS accounts are `active` immediately; web3auth migrations stay `provisional` until a method is confirmed.
|
|
14
|
+
- New recovery-session flow lets a user whose sign-in identity is gone recover via a verified personal email and bind a new sign-in.
|
|
15
|
+
- Email recovery shares are encrypted on the client to an isolated relay's public key; `lca-api` never sees plaintext. Provider tokens move from query strings to the `X-Auth-Token` header.
|
|
16
|
+
- Sensitive key routes require a single-use DID challenge; key records are keyed by immutable provider ID.
|
|
17
|
+
- `recovery-key` email template now requires `confirmationCode`.
|
|
18
|
+
- Auth-share initialization requires the provider uniqueness index before inserting, preventing competing first writes from creating duplicate accounts. Existing records with missing or BSON-null auth material retain atomic update protection.
|
|
19
|
+
- Automatic stale-key cleanup preserves unresolved pending shares for delayed commits; explicit device forgetting still removes them. Custom SSS storage adapters now implement `deleteDeviceShare(id?)` to remove only the selected share and its version.
|
|
20
|
+
|
|
21
|
+
- [#1614](https://github.com/learningeconomy/LearnCard/pull/1614) [`ae10525fbd0ef284aabe1b03d12db147a1922f2c`](https://github.com/learningeconomy/LearnCard/commit/ae10525fbd0ef284aabe1b03d12db147a1922f2c) Thanks [@smurflo2](https://github.com/smurflo2)! - feat: [LC-2191] Replace Demo School with standards-pure sample personas, including plain OBv3 ConsentFlow issuance without proprietary `boostId` fields.
|
|
22
|
+
|
|
23
|
+
- Updated dependencies [[`4b83aa9ee802f0d7a54adc5f053a7376fa103cdd`](https://github.com/learningeconomy/LearnCard/commit/4b83aa9ee802f0d7a54adc5f053a7376fa103cdd), [`2ebda517e9468476f22d3ae3b4ebddf67e8aca78`](https://github.com/learningeconomy/LearnCard/commit/2ebda517e9468476f22d3ae3b4ebddf67e8aca78), [`0e9dd47f4451d776ad1787d0a35dbd54141b9fe3`](https://github.com/learningeconomy/LearnCard/commit/0e9dd47f4451d776ad1787d0a35dbd54141b9fe3), [`b184f5552abf37a11468d435e5cea07fc35e1993`](https://github.com/learningeconomy/LearnCard/commit/b184f5552abf37a11468d435e5cea07fc35e1993), [`0e262737aafb8248e88e05039c83a3f30be6750f`](https://github.com/learningeconomy/LearnCard/commit/0e262737aafb8248e88e05039c83a3f30be6750f), [`ae10525fbd0ef284aabe1b03d12db147a1922f2c`](https://github.com/learningeconomy/LearnCard/commit/ae10525fbd0ef284aabe1b03d12db147a1922f2c), [`d436c39e00994e6d8c77e7b94985a51fe1f42adb`](https://github.com/learningeconomy/LearnCard/commit/d436c39e00994e6d8c77e7b94985a51fe1f42adb)]:
|
|
24
|
+
- @learncard/types@5.22.0
|
|
25
|
+
- @learncard/credential-library@2.0.5
|
|
26
|
+
- @learncard/email-templates@1.2.0
|
|
27
|
+
- @learncard/helpers@1.6.1
|
|
28
|
+
- @learncard/core@9.4.37
|
|
29
|
+
- @learncard/did-web-plugin@1.1.37
|
|
30
|
+
- @learncard/didkey-plugin@1.1.37
|
|
31
|
+
- @learncard/didkit-plugin@1.10.2
|
|
32
|
+
- @learncard/didkit-plugin-node@0.3.2
|
|
33
|
+
- @learncard/encryption-plugin@1.1.37
|
|
34
|
+
- @learncard/learn-card-plugin@1.2.37
|
|
35
|
+
- @learncard/vc-plugin@1.6.3
|
|
36
|
+
- @learncard/vc-templates-plugin@1.1.37
|
|
37
|
+
- @learncard/crypto-plugin@1.1.37
|
|
38
|
+
- @learncard/dynamic-loader-plugin@1.1.37
|
|
39
|
+
- @learncard/expiration-plugin@1.2.37
|
|
40
|
+
|
|
41
|
+
## 3.19.0
|
|
42
|
+
|
|
43
|
+
### Minor Changes
|
|
44
|
+
|
|
45
|
+
- [#1585](https://github.com/learningeconomy/LearnCard/pull/1585) [`0c1bf9a8a33e6392d5fd279479d9ab4fb0449b5e`](https://github.com/learningeconomy/LearnCard/commit/0c1bf9a8a33e6392d5fd279479d9ab4fb0449b5e) Thanks [@goblincore](https://github.com/goblincore)! - Send managed credential update emails to a bound holder's verified email (or a verified manager for managed accounts). Include the issuer display name and a bounded credential title, with a translated link to app notifications; exclude grades, subject data, and update summaries. Keep email failures independent of publication and in-app notifications, and persist a single delivery attempt per publication notification window so retries cannot send duplicate email.
|
|
46
|
+
|
|
47
|
+
Email delivery is best effort: a failed or ambiguous provider attempt is recorded and not retried within that window. A later material update in a new window can send another email. There is no background email retry worker.
|
|
48
|
+
|
|
49
|
+
Existing verified Universal Inbox recipients also receive an initial email pointing to their app notifications when delivery is not suppressed. Local claim and update links use the frontend address.
|
|
50
|
+
|
|
51
|
+
Preserve recipient profile identities when local webhook delivery normalizes notification DIDs, so the subsequent update-email lookup can still find verified contacts.
|
|
52
|
+
|
|
53
|
+
- [#1591](https://github.com/learningeconomy/LearnCard/pull/1591) [`928e587378b3674766cf58a8bbe1cbd4d66d3a9f`](https://github.com/learningeconomy/LearnCard/commit/928e587378b3674766cf58a8bbe1cbd4d66d3a9f) Thanks [@gerardopar](https://github.com/gerardopar)! - Add Universal Inbox batch issuance through `sendCredentialsViaInbox`, tRPC
|
|
54
|
+
`inbox.issueBatch`, and `POST /inbox/issue-batch`, with public batch input and result
|
|
55
|
+
validators/types, shared configuration defaults, ordered per-item outcomes, and
|
|
56
|
+
24-hour issuer-scoped idempotency keys. Later duplicate keys in one batch conflict
|
|
57
|
+
deterministically. Completed issuances include reconciliation IDs if replay storage
|
|
58
|
+
cannot be confirmed; side-effect-free preflight failures release their keys.
|
|
59
|
+
|
|
60
|
+
Enforce a 4 MiB JSON payload budget and atomic batch quota admission without
|
|
61
|
+
charging rejected batches. Batch submission returns HTTP 202 with a durable
|
|
62
|
+
receipt. Poll `GET /inbox/batches/{batchId}` or
|
|
63
|
+
`getInboxCredentialBatch` for ordered progress and outcomes. Batch-level request IDs
|
|
64
|
+
make submission retries safe. Jobs, quota admission, dispatch records, and encrypted
|
|
65
|
+
results are stored in Neo4j; a dedicated SQS queue processes items independently of
|
|
66
|
+
notifications. Submission retries report the current batch state. Transient preparation
|
|
67
|
+
and signing failures retry before delivery. Terminal batches release their original
|
|
68
|
+
payload and remain available for 30 days, including uncertain outcomes; unresolved
|
|
69
|
+
client-keyed replay reservations stay blocked for reconciliation after job expiry.
|
|
70
|
+
Orphaned internal reservations for unkeyed items are collected after job pruning.
|
|
71
|
+
Container-backed tests exercise Neo4j, Redis, and an SQS emulator, including worker
|
|
72
|
+
recovery, duplicate delivery, polling authorization, and submission replay.
|
|
73
|
+
|
|
74
|
+
The existing single-issue route now accepts `configuration.guardianEmail`, exposing
|
|
75
|
+
guardian approval to single-issue clients. Both routes reject guardian self-approval
|
|
76
|
+
case-insensitively. Rate-limit errors use `TOO_MANY_REQUESTS` (HTTP 429); remove stale
|
|
77
|
+
TypeScript casts to `BAD_REQUEST` from existing callers. Those casts did not change
|
|
78
|
+
the runtime status code.
|
|
79
|
+
|
|
80
|
+
### Patch Changes
|
|
81
|
+
|
|
82
|
+
- [#1585](https://github.com/learningeconomy/LearnCard/pull/1585) [`0c1bf9a8a33e6392d5fd279479d9ab4fb0449b5e`](https://github.com/learningeconomy/LearnCard/commit/0c1bf9a8a33e6392d5fd279479d9ab4fb0449b5e) Thanks [@goblincore](https://github.com/goblincore)! - Managed refreshable sends through the standard send paths (LC-2198). `send({ type: 'boost', refresh: true })` now issues refreshable credentials for profile/DID recipients: with local signing the SDK asks the server to run every managed-send guard, create or reuse the boost and allocate the managed refresh service in one step, injects the service (with its inline JSON-LD context) before signing, and hands the signed credential to the server's unified send so activity/contract behavior and the canonical receipt are preserved; without local signing the request is served by the signing-authority path. Email/phone recipients now use Universal Inbox deferred issuance: allocate a stable refresh service at issue, queue unsigned updates in encrypted inbox escrow, and bind/sign the latest content at verified claim. The deferred receipt is returned at `inbox.refresh`; direct `inbox/issue` returns it at `refresh`.
|
|
83
|
+
|
|
84
|
+
`sendBoost` with literal `{ enableRefresh: true }` now returns `{ credentialUri, refresh }` instead of a plain URI string, where `refresh` is the metadata-only issuance receipt (refreshId, refreshService, credentialId, issuerDid, holderDid, credentialStatus) needed to publish future versions via `publishCredentialRefresh`. Legacy callers — boolean options, omitted options, or object options without `enableRefresh` — still receive the credential URI string; a dynamically typed `enableRefresh` degrades the result to `string | { credentialUri, refresh }`. Delivered managed credentials remain holder-encrypted even when `encrypt: false`. Pending Inbox content uses the existing service-readable encrypted escrow until claim, when it is wiped.
|
|
85
|
+
|
|
86
|
+
`@learncard/types` adds the `ManagedCredentialRefreshReceipt` validator plus optional `refresh` on the unified send input/response validators; `@learncard/helpers` adds the shared managed context preparation helpers (`prepareManagedRefreshContext`, `injectManagedRefreshService`) now also used by SDK `issueCredential` signing.
|
|
87
|
+
|
|
88
|
+
Refreshable `send` accepts an optional `idempotencyKey` so a whole call can be retried without duplicating the boost, refresh allocation or delivery.
|
|
89
|
+
|
|
90
|
+
Completed-send comparisons canonicalize nested result keys so equivalent receipts remain idempotent regardless of property insertion order. Keyed sends reuse the recipient validation already performed in the request.
|
|
91
|
+
|
|
92
|
+
Keyed pre-signed retries now recover the original result when delivery bound successfully but its intent result was not recorded, matching preparation and signing-authority retries. Pending receipt fallbacks use the holder's network profile DID consistently.
|
|
93
|
+
|
|
94
|
+
Signing a credential with a managed refresh service now rejects conflicting inline JSON-LD term definitions (including `authorization`) instead of producing a credential whose refresh terms are not correctly signed. Credentials without a managed service are unaffected.
|
|
95
|
+
|
|
96
|
+
Managed send and refresh publication recover from a stale local issuer DID document after signing-authority registration: if proof verification fails, the server refreshes the authenticated issuer's document and verifies once more without relaxing signature checks.
|
|
97
|
+
|
|
98
|
+
Universal Inbox accepts `refresh: true` and an issuance `idempotencyKey`; both claim paths bind the latest revision atomically. Publication keys survive claim, and issuer `getInboxCredential` exposes the metadata-only receipt with its bound holder DID.
|
|
99
|
+
|
|
100
|
+
- [#1585](https://github.com/learningeconomy/LearnCard/pull/1585) [`0c1bf9a8a33e6392d5fd279479d9ab4fb0449b5e`](https://github.com/learningeconomy/LearnCard/commit/0c1bf9a8a33e6392d5fd279479d9ab4fb0449b5e) Thanks [@goblincore](https://github.com/goblincore)! - Honor delegated boost issuance permissions for managed refresh delivery. Expire saved post-login destinations after 30 minutes, discard legacy untimed destinations, and clear superseded claim redirects during sign-in.
|
|
101
|
+
|
|
102
|
+
- [#1591](https://github.com/learningeconomy/LearnCard/pull/1591) [`928e587378b3674766cf58a8bbe1cbd4d66d3a9f`](https://github.com/learningeconomy/LearnCard/commit/928e587378b3674766cf58a8bbe1cbd4d66d3a9f) Thanks [@gerardopar](https://github.com/gerardopar)! - Support managed refresh through batch and item configuration, with item overrides including explicit false. Forward refresh options and template anchors to issuance, preserve caller permissions for background processing, and return refresh receipts in item results and replays.
|
|
103
|
+
|
|
104
|
+
- Updated dependencies [[`2991bd32b03e26736239dd8e586e2f720d9bcd45`](https://github.com/learningeconomy/LearnCard/commit/2991bd32b03e26736239dd8e586e2f720d9bcd45), [`0c1bf9a8a33e6392d5fd279479d9ab4fb0449b5e`](https://github.com/learningeconomy/LearnCard/commit/0c1bf9a8a33e6392d5fd279479d9ab4fb0449b5e), [`0c1bf9a8a33e6392d5fd279479d9ab4fb0449b5e`](https://github.com/learningeconomy/LearnCard/commit/0c1bf9a8a33e6392d5fd279479d9ab4fb0449b5e), [`3174c09b97fde6f7b5251390245038cf6b7ea9ba`](https://github.com/learningeconomy/LearnCard/commit/3174c09b97fde6f7b5251390245038cf6b7ea9ba), [`928e587378b3674766cf58a8bbe1cbd4d66d3a9f`](https://github.com/learningeconomy/LearnCard/commit/928e587378b3674766cf58a8bbe1cbd4d66d3a9f), [`928e587378b3674766cf58a8bbe1cbd4d66d3a9f`](https://github.com/learningeconomy/LearnCard/commit/928e587378b3674766cf58a8bbe1cbd4d66d3a9f)]:
|
|
105
|
+
- @learncard/types@5.21.0
|
|
106
|
+
- @learncard/helpers@1.6.0
|
|
107
|
+
- @learncard/vc-plugin@1.6.2
|
|
108
|
+
- @learncard/email-templates@1.1.0
|
|
109
|
+
- @learncard/core@9.4.36
|
|
110
|
+
- @learncard/did-web-plugin@1.1.36
|
|
111
|
+
- @learncard/didkey-plugin@1.1.36
|
|
112
|
+
- @learncard/didkit-plugin@1.10.1
|
|
113
|
+
- @learncard/didkit-plugin-node@0.3.1
|
|
114
|
+
- @learncard/encryption-plugin@1.1.36
|
|
115
|
+
- @learncard/learn-card-plugin@1.2.36
|
|
116
|
+
- @learncard/vc-templates-plugin@1.1.36
|
|
117
|
+
- @learncard/crypto-plugin@1.1.36
|
|
118
|
+
- @learncard/dynamic-loader-plugin@1.1.36
|
|
119
|
+
- @learncard/expiration-plugin@1.2.36
|
|
120
|
+
|
|
3
121
|
## 3.18.0
|
|
4
122
|
|
|
5
123
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -29,6 +29,48 @@ Deploy this producer before an AI Passport consumer that requires the new guardi
|
|
|
29
29
|
- **Default environment**: if you omit the stage, the command defaults to `local` and prints a note.
|
|
30
30
|
- **Production safety**: the manual seed command still refuses to run in production unless `--force` is provided.
|
|
31
31
|
|
|
32
|
+
## Sample persona seeding
|
|
33
|
+
|
|
34
|
+
Sample personas are ordered credential-library bundles published as idempotent
|
|
35
|
+
consent-flow contracts. The seeder uses every target value from
|
|
36
|
+
`services/learn-card-network/brain-service/.env`; verify them before running it.
|
|
37
|
+
Do not overwrite an existing `.env` or assume it points to local services.
|
|
38
|
+
|
|
39
|
+
For the local LearnCard App Compose stack, use explicit host-side values:
|
|
40
|
+
|
|
41
|
+
```dotenv
|
|
42
|
+
NEO4J_URI=bolt://localhost:7687
|
|
43
|
+
NEO4J_USERNAME=neo4j
|
|
44
|
+
NEO4J_PASSWORD=this-is-the-password
|
|
45
|
+
MONGO_URI=mongodb://localhost:27017/?replicaSet=rs0
|
|
46
|
+
MONGO_DB_NAME=lca-api
|
|
47
|
+
REDIS_HOST=localhost
|
|
48
|
+
REDIS_PORT=6379
|
|
49
|
+
DOMAIN_NAME=localhost%3A4000
|
|
50
|
+
DEMO_PERSONA_SIGNING_AUTHORITY_ENDPOINT=http://localhost:5100/api
|
|
51
|
+
# Disposable local-only seed. Never reuse this value in a shared environment.
|
|
52
|
+
DEMO_PERSONA_SA_SEED=dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Start the stack, then publish the bundle from `apps/learn-card-app`:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
bun run seed:demo-persona student
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Staging and production require their own secret 64-character hexadecimal
|
|
62
|
+
`DEMO_PERSONA_SA_SEED`, the matching LCA API endpoint, and explicit Neo4j, MongoDB,
|
|
63
|
+
Redis, and domain settings. Deploy the brain service first, run the seeder against
|
|
64
|
+
the intended environment, verify the printed contract URI, and only then deploy app
|
|
65
|
+
configuration that references it.
|
|
66
|
+
|
|
67
|
+
The root seed deterministically derives a distinct signing identity for every
|
|
68
|
+
configured sample issuer. The command updates issuer profiles, unsigned credential
|
|
69
|
+
templates, and auto-boost relationships in place, then prints the stable contract URI
|
|
70
|
+
to record in that tenant's `features.samplePersonas`. Running it again publishes
|
|
71
|
+
credential-library content changes without duplicating profiles, Boosts, signing
|
|
72
|
+
authorities, or contracts.
|
|
73
|
+
|
|
32
74
|
## Notes
|
|
33
75
|
|
|
34
76
|
- The default fixture is idempotent by framework and skill ID, so running the seed command multiple times does not duplicate data.
|
|
@@ -12,5 +12,6 @@ export declare const isAuthGrantAssociatedWithProfile: (authGrantId: string, pro
|
|
|
12
12
|
export declare const isAuthGrantChallengeValidForDID: (challenge: string, did: string) => Promise<{
|
|
13
13
|
isChallengeValid: boolean;
|
|
14
14
|
scope: string;
|
|
15
|
+
actAs?: string;
|
|
15
16
|
}>;
|
|
16
17
|
//# sourceMappingURL=read.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/auth-grant/read.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,aAAa,EAA4B,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAU5C,eAAO,MAAM,gBAAgB,GAAU,IAAI,MAAM,KAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAgB/E,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAChC,SAAS,WAAW,EACpB,uCAIG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,cAAc,CAAA;CAAE,KAC9D,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAiCpD,CAAC;AAEF,eAAO,MAAM,gCAAgC,GACzC,aAAa,MAAM,EACnB,WAAW,MAAM,KAClB,OAAO,CAAC,OAAO,CAmBjB,CAAC;AAEF,eAAO,MAAM,+BAA+B,GACxC,WAAW,MAAM,EACjB,KAAK,MAAM,KACZ,OAAO,CAAC;IAAE,gBAAgB,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/auth-grant/read.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,aAAa,EAA4B,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAU5C,eAAO,MAAM,gBAAgB,GAAU,IAAI,MAAM,KAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAgB/E,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAChC,SAAS,WAAW,EACpB,uCAIG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,cAAc,CAAA;CAAE,KAC9D,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAiCpD,CAAC;AAEF,eAAO,MAAM,gCAAgC,GACzC,aAAa,MAAM,EACnB,WAAW,MAAM,KAClB,OAAO,CAAC,OAAO,CAmBjB,CAAC;AAEF,eAAO,MAAM,+BAA+B,GACxC,WAAW,MAAM,EACjB,KAAK,MAAM,KACZ,OAAO,CAAC;IAAE,gBAAgB,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CA8BtE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/accesslayer/consentflowcontract/relationships/create.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,IAAI,oBAAoB,EAExC,2BAA2B,EAE3B,UAAU,EAGb,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EAAE,cAAc,EAAmB,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAiBxC,eAAO,MAAM,qBAAqB,GAAU,UAAU,cAAc,EAAE,SAAS,UAAU,oBAQxF,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAChC,UAAU,cAAc,EACxB,OAAO,SAAS,EAChB,kBAAkB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACpD,SAAS,MAAM,oBAWlB,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACnC,UAAU,cAAc,EACxB,OAAO,SAAS,KACjB,OAAO,CAAC,IAAI,CAKd,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC1B,WAAW,UAAU,EACrB,6BAA6B;IAAE,QAAQ,EAAE,cAAc,CAAC;IAAC,aAAa,EAAE,UAAU,CAAA;CAAE,EACpF,0DAKG;IACC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;CAClD,EACD,QAAQ,MAAM,
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/accesslayer/consentflowcontract/relationships/create.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,IAAI,oBAAoB,EAExC,2BAA2B,EAE3B,UAAU,EAGb,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EAAE,cAAc,EAAmB,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAiBxC,eAAO,MAAM,qBAAqB,GAAU,UAAU,cAAc,EAAE,SAAS,UAAU,oBAQxF,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAChC,UAAU,cAAc,EACxB,OAAO,SAAS,EAChB,kBAAkB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACpD,SAAS,MAAM,oBAWlB,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACnC,UAAU,cAAc,EACxB,OAAO,SAAS,KACjB,OAAO,CAAC,IAAI,CAKd,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC1B,WAAW,UAAU,EACrB,6BAA6B;IAAE,QAAQ,EAAE,cAAc,CAAC;IAAC,aAAa,EAAE,UAAU,CAAA;CAAE,EACpF,0DAKG;IACC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;CAClD,EACD,QAAQ,MAAM,qBAyQjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/accesslayer/consentflowcontract/relationships/update.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,gBAAgB,IAAI,oBAAoB,EAExC,2BAA2B,EAE3B,UAAU,EAGb,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/accesslayer/consentflowcontract/relationships/update.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,gBAAgB,IAAI,oBAAoB,EAExC,2BAA2B,EAE3B,UAAU,EAGb,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAUxE,eAAO,MAAM,cAAc,GACvB,cAAc;IACV,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,UAAU,CAAC;IACtB,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,UAAU,CAAC;CAC7B,EACD,kDAKG;IACC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;CAClD,EACD,QAAQ,MAAM,KACf,OAAO,CAAC,OAAO,CAuMjB,CAAC;AAEF,eAAO,MAAM,WAAW,GACpB,cAAc;IACV,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,UAAU,CAAC;IACtB,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,UAAU,CAAC;CAC7B,EACD,kDAKG;IACC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;CAClD,EACD,QAAQ,MAAM,KACf,OAAO,CAAC,OAAO,CA0MjB,CAAC;AAEF,eAAO,MAAM,aAAa,GAAU,cAAc;IAC9C,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,UAAU,CAAC;IACtB,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,UAAU,CAAC;CAC7B,KAAG,OAAO,CAAC,OAAO,CAqDlB,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAClC,cAAc;IACV,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,UAAU,CAAC;IACtB,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,UAAU,CAAC;CAC7B,EACD,YAAY,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,KACrC,OAAO,CAAC,OAAO,CAoHjB,CAAC;AAEF,eAAO,MAAM,gCAAgC,GACzC,OAAO,WAAW,EAClB,aAAa,MAAM,EAAE,KACtB,OAAO,CAAC,MAAM,CAkEhB,CAAC;AAEF,eAAO,MAAM,gCAAgC,GACzC,IAAI,MAAM,EACV,WAAW,MAAM,EACjB,QAAQ,SAAS,GAAG,UAAU,GAAG,QAAQ,KAC1C,OAAO,CAAC,IAAI,CAOd,CAAC;AAEF,eAAO,MAAM,8BAA8B,GACvC,IAAI,MAAM,EACV,WAAW,MAAM,EACjB,SAAS,SAAS,GAAG,UAAU,GAAG,QAAQ,EAC1C,aAAa,MAAM,GAAG,QAAQ,GAAG,IAAI,kBAgBxC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/credential-activity/create.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAQ7D,eAAO,MAAM,wBAAwB,GACjC,QAAQ,2BAA2B,KACpC,OAAO,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/credential-activity/create.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAQ7D,eAAO,MAAM,wBAAwB,GACjC,QAAQ,2BAA2B,KACpC,OAAO,CAAC,MAAM,CAqDhB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type CredentialRefreshEmailDeliveryState = 'claimed' | 'delivered' | 'failed';
|
|
2
|
+
export declare const claimCredentialRefreshEmailDelivery: (params: {
|
|
3
|
+
refreshId: string;
|
|
4
|
+
windowKey: string;
|
|
5
|
+
}) => Promise<"claimed" | "duplicate">;
|
|
6
|
+
export declare const finalizeCredentialRefreshEmailDelivery: (params: {
|
|
7
|
+
refreshId: string;
|
|
8
|
+
windowKey: string;
|
|
9
|
+
state: Extract<CredentialRefreshEmailDeliveryState, "delivered" | "failed">;
|
|
10
|
+
}) => Promise<void>;
|
|
11
|
+
export declare const getCredentialRefreshEmailDelivery: (refreshId: string, windowKey: string) => Promise<{
|
|
12
|
+
deliveryKey: string;
|
|
13
|
+
refreshId: string;
|
|
14
|
+
windowKey: string;
|
|
15
|
+
state: CredentialRefreshEmailDeliveryState;
|
|
16
|
+
attempts: number;
|
|
17
|
+
} | null>;
|
|
18
|
+
//# sourceMappingURL=email-delivery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-delivery.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/credential-refresh/email-delivery.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,mCAAmC,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAkBrF,eAAO,MAAM,mCAAmC,GAAU,QAAQ;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB,KAAG,OAAO,CAAC,SAAS,GAAG,WAAW,CA6BlC,CAAC;AAGF,eAAO,MAAM,sCAAsC,GAAU,QAAQ;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC,mCAAmC,EAAE,WAAW,GAAG,QAAQ,CAAC,CAAC;CAC/E,KAAG,OAAO,CAAC,IAAI,CASf,CAAC;AAGF,eAAO,MAAM,iCAAiC,GAC1C,WAAW,MAAM,EACjB,WAAW,MAAM,KAClB,OAAO,CAAC;IACP,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,mCAAmC,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CACpB,GAAG,IAAI,CAmBP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/credential-refresh/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/credential-refresh/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/credential-refresh/read.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,uBAAuB,EAEvB,4BAA4B,EAE5B,8BAA8B,EAEjC,MAAM,0BAA0B,CAAC;AAgBlC,eAAO,MAAM,oBAAoB,GAC7B,WAAW,MAAM,KAClB,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAWxC,CAAC;AAGF,eAAO,MAAM,wBAAwB,GACjC,WAAW,MAAM,KAClB,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAY7C,CAAC;AAGF,eAAO,MAAM,2BAA2B,GACpC,WAAW,MAAM,EACjB,SAAS,MAAM,KAChB,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAY7C,CAAC;AAGF,eAAO,MAAM,2CAA2C,GACpD,WAAW,MAAM,EACjB,gBAAgB,MAAM,KACvB,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAW7C,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAE9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC7C,OAAO,EAAE,8BAA8B,EAAE,CAAC;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iCAAiC,CAAC,CAAC,IAC3C;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC;AAkBxF,eAAO,MAAM,iCAAiC,GAC1C,WAAW,MAAM,KAClB,OAAO,CAAC,iCAAiC,CAAC,4BAA4B,CAAC,CAqBzE,CAAC;AAGF,eAAO,MAAM,oCAAoC,GAC7C,WAAW,MAAM,EACjB,SAAS,MAAM,KAChB,OAAO,CAAC,iCAAiC,CAAC,4BAA4B,CAAC,CAqBzE,CAAC;AAGF,eAAO,MAAM,qCAAqC,GAC9C,WAAW,MAAM,EACjB,UAAS,mCAAwC,KAClD,OAAO,CAAC,iCAAiC,CAAC,kCAAkC,CAAC,CA6D/E,CAAC;AAMF,eAAO,MAAM,4BAA4B,GACrC,WAAW,MAAM,EACjB,UAAS,mCAAwC,KAClD,OAAO,CAAC,kCAAkC,
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/credential-refresh/read.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,uBAAuB,EAEvB,4BAA4B,EAE5B,8BAA8B,EAEjC,MAAM,0BAA0B,CAAC;AAgBlC,eAAO,MAAM,oBAAoB,GAC7B,WAAW,MAAM,KAClB,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAWxC,CAAC;AAGF,eAAO,MAAM,wBAAwB,GACjC,WAAW,MAAM,KAClB,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAY7C,CAAC;AAGF,eAAO,MAAM,2BAA2B,GACpC,WAAW,MAAM,EACjB,SAAS,MAAM,KAChB,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAY7C,CAAC;AAGF,eAAO,MAAM,2CAA2C,GACpD,WAAW,MAAM,EACjB,gBAAgB,MAAM,KACvB,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAW7C,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAE9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC7C,OAAO,EAAE,8BAA8B,EAAE,CAAC;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iCAAiC,CAAC,CAAC,IAC3C;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC;AAkBxF,eAAO,MAAM,iCAAiC,GAC1C,WAAW,MAAM,KAClB,OAAO,CAAC,iCAAiC,CAAC,4BAA4B,CAAC,CAqBzE,CAAC;AAGF,eAAO,MAAM,oCAAoC,GAC7C,WAAW,MAAM,EACjB,SAAS,MAAM,KAChB,OAAO,CAAC,iCAAiC,CAAC,4BAA4B,CAAC,CAqBzE,CAAC;AAGF,eAAO,MAAM,qCAAqC,GAC9C,WAAW,MAAM,EACjB,UAAS,mCAAwC,KAClD,OAAO,CAAC,iCAAiC,CAAC,kCAAkC,CAAC,CA6D/E,CAAC;AAMF,eAAO,MAAM,4BAA4B,GACrC,WAAW,MAAM,EACjB,UAAS,mCAAwC,KAClD,OAAO,CAAC,kCAAkC,CA0D5C,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAE9C,QAAQ,EAAE,OAAO,CAAC;IAElB,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;AAUF,eAAO,MAAM,sCAAsC,GAC/C,WAAW,MAAM,KAClB,OAAO,CAAC,mCAAmC,GAAG,IAAI,CAoBpD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/credential-refresh/update.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,kCAAkC,EAElC,kCAAkC,EAClC,uBAAuB,EAEvB,sBAAsB,EACzB,MAAM,0BAA0B,CAAC;AAuDlC,eAAO,MAAM,4BAA4B,GACrC,QAAQ,kCAAkC,KAC3C,OAAO,CAAC,kCAAkC,
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/credential-refresh/update.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,kCAAkC,EAElC,kCAAkC,EAClC,uBAAuB,EAEvB,sBAAsB,EACzB,MAAM,0BAA0B,CAAC;AAuDlC,eAAO,MAAM,4BAA4B,GACrC,QAAQ,kCAAkC,KAC3C,OAAO,CAAC,kCAAkC,CA2K5C,CAAC;AASF,eAAO,MAAM,mCAAmC,GAAU,QAAQ;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAEhB,cAAc,EAAE,MAAM,CAAC;IAEvB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACtB,KAAG,OAAO,CAAC,IAAI,CAyBf,CAAC;AAGF,eAAO,MAAM,yBAAyB,GAClC,WAAW,MAAM,EACjB,OAAO,sBAAsB,EAC7B,gBAAgB,sBAAsB,KACvC,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAgBxC,CAAC;AAWF,eAAO,MAAM,8CAA8C,GACvD,kBAAkB,MAAM,EACxB,iBAAiB,MAAM,KACxB,OAAO,CAAC,OAAO,CAYjB,CAAC;AAOF,eAAO,MAAM,oCAAoC,GAC7C,kBAAkB,MAAM,KACzB,OAAO,CAAC,OAAO,CAYjB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { InboxBatchReceipt, IssueInboxCredentialBatchItemResult } from '@learncard/types';
|
|
2
|
+
import type { BatchItem, BatchJob, BatchReplayStore, InboxDispatchLease } from '../../types/inbox-batch';
|
|
3
|
+
export declare const DAY = 86400000;
|
|
4
|
+
export declare const LEASE_MS = 360000;
|
|
5
|
+
export declare const ensureInboxBatchConstraints: () => Promise<void>;
|
|
6
|
+
export declare const createBatchJob: (input: {
|
|
7
|
+
issuer: string;
|
|
8
|
+
requestId?: string;
|
|
9
|
+
requestHash: string;
|
|
10
|
+
payload: string;
|
|
11
|
+
items: {
|
|
12
|
+
replayKey: string;
|
|
13
|
+
duplicate: boolean;
|
|
14
|
+
correlation?: string;
|
|
15
|
+
}[];
|
|
16
|
+
limit: number;
|
|
17
|
+
}) => Promise<InboxBatchReceipt>;
|
|
18
|
+
export declare const readBatchJob: (id: string, issuer: string) => Promise<{
|
|
19
|
+
job: BatchJob;
|
|
20
|
+
items: BatchItem[];
|
|
21
|
+
}>;
|
|
22
|
+
export declare const claimBatchItem: (id: string, owner: string) => Promise<{
|
|
23
|
+
job: BatchJob;
|
|
24
|
+
item: BatchItem;
|
|
25
|
+
} | undefined>;
|
|
26
|
+
export declare const markBatchIssuanceStarted: (id: string, owner: string) => Promise<void>;
|
|
27
|
+
export declare const batchReplayStore: (itemId: string, owner: string, replayKey: string) => BatchReplayStore;
|
|
28
|
+
export declare const finishBatchItem: (id: string, owner: string, result: IssueInboxCredentialBatchItemResult) => Promise<void>;
|
|
29
|
+
export declare const takeInboxDispatches: () => Promise<InboxDispatchLease[]>;
|
|
30
|
+
export declare const acknowledgeInboxDispatches: (leases: InboxDispatchLease[]) => Promise<void>;
|
|
31
|
+
export declare const deadLetterBatchItem: (id: string) => Promise<void>;
|
|
32
|
+
export declare const recoverInboxJobs: (deadline?: number) => Promise<void>;
|
|
33
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/inbox-batch/store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mCAAmC,EAAE,MAAM,kBAAkB,CAAC;AAG/F,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGnG,eAAO,MAAM,GAAG,WAAa,CAAC;AAC9B,eAAO,MAAM,QAAQ,SAAU,CAAC;AAIhC,eAAO,MAAM,2BAA2B,QAAO,OAAO,CAAC,IAAI,CAoC1D,CAAC;AAaF,eAAO,MAAM,cAAc,GAAU,OAAO;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzE,KAAK,EAAE,MAAM,CAAC;CACjB,KAAG,OAAO,CAAC,iBAAiB,CAkE5B,CAAC;AAEF,eAAO,MAAM,YAAY,GACrB,IAAI,MAAM,EACV,QAAQ,MAAM,KACf,OAAO,CAAC;IAAE,GAAG,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,SAAS,EAAE,CAAA;CAAE,CAW/C,CAAC;AAGF,eAAO,MAAM,cAAc,GACvB,IAAI,MAAM,EACV,OAAO,MAAM,KACd,OAAO,CAAC;IAAE,GAAG,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG,SAAS,CAgBnD,CAAC;AAsBP,eAAO,MAAM,wBAAwB,GAAU,IAAI,MAAM,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,IAAI,CAIjF,CAAC;AAMP,eAAO,MAAM,gBAAgB,GACzB,QAAQ,MAAM,EACd,OAAO,MAAM,EACb,WAAW,MAAM,KAClB,gBA2DD,CAAC;AAgBH,eAAO,MAAM,eAAe,GACxB,IAAI,MAAM,EACV,OAAO,MAAM,EACb,QAAQ,mCAAmC,KAC5C,OAAO,CAAC,IAAI,CA+Bd,CAAC;AAGF,eAAO,MAAM,mBAAmB,QAAa,OAAO,CAAC,kBAAkB,EAAE,CAanE,CAAC;AAEP,eAAO,MAAM,0BAA0B,GAAU,QAAQ,kBAAkB,EAAE,KAAG,OAAO,CAAC,IAAI,CAQ3F,CAAC;AAGF,eAAO,MAAM,mBAAmB,GAAU,IAAI,MAAM,KAAG,OAAO,CAAC,IAAI,CA8B7D,CAAC;AAGP,eAAO,MAAM,gBAAgB,GAAU,iBAA8B,KAAG,OAAO,CAAC,IAAI,CAsFnF,CAAC"}
|
|
@@ -3,6 +3,11 @@ import { ProfileType } from '../../types/profile';
|
|
|
3
3
|
export declare const DEFAULT_INBOX_EXPIRY_DAYS = 30;
|
|
4
4
|
export declare const createInboxCredential: (input: {
|
|
5
5
|
credential: string;
|
|
6
|
+
refresh?: {
|
|
7
|
+
aggregate: Record<string, unknown>;
|
|
8
|
+
issueKey: string;
|
|
9
|
+
requestDigest: string;
|
|
10
|
+
};
|
|
6
11
|
delivered?: boolean;
|
|
7
12
|
isSigned: boolean;
|
|
8
13
|
isAccepted?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/inbox-credential/create.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAK/E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/inbox-credential/create.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAK/E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK5C,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,eAAO,MAAM,qBAAqB,GAAU,OAAO;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAE1F,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,sBAAsB,CAAC;IAClC,aAAa,EAAE,WAAW,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,mBAAmB,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;CACpF,KAAG,OAAO,CAAC,mBAAmB,CAoI9B,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { InboxCredentialType, PublishCredentialRefreshResult } from '@learncard/types';
|
|
2
|
+
export declare const getInboxRefreshIssue: (issueKey: string) => Promise<{
|
|
3
|
+
inbox: InboxCredentialType;
|
|
4
|
+
requestDigest: string;
|
|
5
|
+
claimUrl?: string;
|
|
6
|
+
} | null>;
|
|
7
|
+
export declare const createPendingInboxRefresh: (params: {
|
|
8
|
+
inbox: Record<string, unknown>;
|
|
9
|
+
aggregate: Record<string, unknown>;
|
|
10
|
+
issueKey: string;
|
|
11
|
+
requestDigest: string;
|
|
12
|
+
}) => Promise<InboxCredentialType>;
|
|
13
|
+
export declare const getPendingInboxPublication: (refreshId: string, idempotencyKey?: string) => Promise<PublishCredentialRefreshResult | null>;
|
|
14
|
+
export declare const advancePendingInboxRefresh: (params: {
|
|
15
|
+
refreshId: string;
|
|
16
|
+
expectedVersion: number;
|
|
17
|
+
credential: string;
|
|
18
|
+
credentialName?: string;
|
|
19
|
+
materialDigest: string;
|
|
20
|
+
idempotencyKey?: string;
|
|
21
|
+
updateSummary?: string;
|
|
22
|
+
}) => Promise<PublishCredentialRefreshResult | null>;
|
|
23
|
+
export declare const bindPendingInboxRefresh: (params: {
|
|
24
|
+
inboxId: string;
|
|
25
|
+
refreshId: string;
|
|
26
|
+
expectedVersion: number;
|
|
27
|
+
holderDid: string;
|
|
28
|
+
holderProfileId?: string;
|
|
29
|
+
issuerProfileId: string;
|
|
30
|
+
root: Record<string, unknown>;
|
|
31
|
+
aggregate: Record<string, unknown>;
|
|
32
|
+
deliveryCredential: string;
|
|
33
|
+
deliveryExpiresAt: string;
|
|
34
|
+
accepted: boolean;
|
|
35
|
+
boostId?: string;
|
|
36
|
+
}) => Promise<boolean>;
|
|
37
|
+
export declare const getInboxRefreshSnapshot: (inboxId: string) => Promise<{
|
|
38
|
+
inbox: any;
|
|
39
|
+
aggregate: {
|
|
40
|
+
refreshId: string;
|
|
41
|
+
issuerProfileId: string;
|
|
42
|
+
issuerDid: string;
|
|
43
|
+
credentialId: string;
|
|
44
|
+
state: "active" | "revoked" | "pending_holder" | "awaiting_claim";
|
|
45
|
+
currentVersion: number;
|
|
46
|
+
createdAt: string;
|
|
47
|
+
updatedAt: string;
|
|
48
|
+
inboxCredentialId?: string | undefined;
|
|
49
|
+
inboxCredentialStatus?: string | undefined;
|
|
50
|
+
holderProfileId?: string | undefined;
|
|
51
|
+
holderDid?: string | undefined;
|
|
52
|
+
etag?: string | undefined;
|
|
53
|
+
materialDigest?: string | undefined;
|
|
54
|
+
rootMaterialDigest?: string | undefined;
|
|
55
|
+
credentialStatusDigest?: string | undefined;
|
|
56
|
+
credentialSubjectDigest?: string | undefined;
|
|
57
|
+
boostId?: string | undefined;
|
|
58
|
+
signingMode?: "issuer-signed" | "signing-authority" | undefined;
|
|
59
|
+
idempotencyKey?: string | undefined;
|
|
60
|
+
updateSummary?: string | undefined;
|
|
61
|
+
credentialDisplayName?: string | undefined;
|
|
62
|
+
lastPublishedAt?: string | undefined;
|
|
63
|
+
notificationWindowKey?: string | undefined;
|
|
64
|
+
lastNotificationId?: string | undefined;
|
|
65
|
+
lastNotificationAt?: string | undefined;
|
|
66
|
+
initialNotificationSentAt?: string | undefined;
|
|
67
|
+
initialNotificationSuppressed?: boolean | undefined;
|
|
68
|
+
};
|
|
69
|
+
} | null>;
|
|
70
|
+
export declare const recordInboxRefreshClaimUrl: (id: string, claimUrl: string) => Promise<string>;
|
|
71
|
+
//# sourceMappingURL=refresh.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/inbox-credential/refresh.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAG5F,eAAO,MAAM,oBAAoB,GAC7B,UAAU,MAAM,KACjB,OAAO,CAAC;IACP,KAAK,EAAE,mBAAmB,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,IAAI,CAaP,CAAC;AAGF,eAAO,MAAM,yBAAyB,GAAU,QAAQ;IACpD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACzB,KAAG,OAAO,CAAC,mBAAmB,CAuB9B,CAAC;AAGF,eAAO,MAAM,0BAA0B,GACnC,WAAW,MAAM,EACjB,iBAAiB,MAAM,KACxB,OAAO,CAAC,8BAA8B,GAAG,IAAI,CAe/C,CAAC;AAGF,eAAO,MAAM,0BAA0B,GAAU,QAAQ;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,KAAG,OAAO,CAAC,8BAA8B,GAAG,IAAI,CA6ChD,CAAC;AAGF,eAAO,MAAM,uBAAuB,GAAU,QAAQ;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,KAAG,OAAO,CAAC,OAAO,CAwClB,CAAC;AAGF,eAAO,MAAM,uBAAuB,GAAU,SAAS,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAiB5D,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAU,IAAI,MAAM,EAAE,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,CAQ7F,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { InboxCredentialType } from '@learncard/types';
|
|
2
2
|
import { InboxDelivery } from '../../types/inbox-delivery';
|
|
3
|
-
export declare const updateInboxCredential: (id: string, updates: Partial<Omit<InboxCredentialType, "id" | "createdAt" | "credential">>) => Promise<InboxCredentialType | null>;
|
|
3
|
+
export declare const updateInboxCredential: (id: string, updates: Partial<Omit<InboxCredentialType, "id" | "createdAt" | "credential" | "refresh">>) => Promise<InboxCredentialType | null>;
|
|
4
4
|
export declare const finalizeAndWipeInboxCredential: (id: string, delivery: InboxDelivery, { isAccepted }?: {
|
|
5
5
|
isAccepted?: boolean;
|
|
6
6
|
}) => Promise<InboxCredentialType | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/inbox-credential/update.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EACH,aAAa,EAGhB,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,qBAAqB,GAC9B,IAAI,MAAM,EACV,SAAS,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,GAAG,WAAW,GAAG,YAAY,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/inbox-credential/update.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EACH,aAAa,EAGhB,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,qBAAqB,GAC9B,IAAI,MAAM,EACV,SAAS,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,GAAG,WAAW,GAAG,YAAY,GAAG,SAAS,CAAC,CAAC,KAC3F,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAcpC,CAAC;AAGF,eAAO,MAAM,8BAA8B,GACvC,IAAI,MAAM,EACV,UAAU,aAAa,EACvB,iBAAuB;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,KACrD,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAsCpC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAC/B,cAAoC,KACrC,OAAO,CAAC,MAAM,CAyBhB,CAAC;AAKF,eAAO,MAAM,0BAA0B,GACnC,cAAoC,KACrC,OAAO,CAAC,MAAM,CAWhB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/presentation/read.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,oBAAoB,EAIvB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAKtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/presentation/read.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,oBAAoB,EAIvB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAKtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAU5C,eAAO,MAAM,mBAAmB,GAAU,IAAI,MAAM,KAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAEzF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAI3F,CAAC;AAEF,eAAO,MAAM,kCAAkC,GAC3C,QAAQ,MAAM,EACd,SAAS,WAAW,EACpB,kBAGG;IACC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,KACF,OAAO,CAAC,kBAAkB,EAAE,CA+C9B,CAAC;AAEF,eAAO,MAAM,8BAA8B,GACvC,QAAQ,MAAM,EACd,SAAS,WAAW,EACpB,gBAGG;IACC,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,KACF,OAAO,CAAC,kBAAkB,EAAE,CAuD9B,CAAC;AAEF,eAAO,MAAM,kCAAkC,GAC3C,QAAQ,MAAM,EACd,SAAS,WAAW,EACpB,kBAGG;IACC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,KACF,OAAO,CAAC,kBAAkB,EAAE,CA+C9B,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PresentationInstance } from '../../.././models/index';
|
|
2
2
|
import { ProfileType } from '../../../types/profile';
|
|
3
|
-
export declare const createSentPresentationRelationship: (from: ProfileType, to: ProfileType, presentation: PresentationInstance) => Promise<void>;
|
|
4
|
-
export declare const createReceivedPresentationRelationship: (to: ProfileType, from: ProfileType, presentation: PresentationInstance) => Promise<void>;
|
|
3
|
+
export declare const createSentPresentationRelationship: (from: ProfileType, to: ProfileType, presentation: PresentationInstance, metadata?: Record<string, unknown>) => Promise<void>;
|
|
4
|
+
export declare const createReceivedPresentationRelationship: (to: ProfileType, from: ProfileType, presentation: PresentationInstance, metadata?: Record<string, unknown>) => Promise<void>;
|
|
5
5
|
//# sourceMappingURL=create.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/accesslayer/presentation/relationships/create.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/accesslayer/presentation/relationships/create.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,oBAAoB,EAAW,MAAM,SAAS,CAAC;AAEtE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,eAAO,MAAM,kCAAkC,GAC3C,MAAM,WAAW,EACjB,IAAI,WAAW,EACf,cAAc,oBAAoB,EAClC,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACnC,OAAO,CAAC,IAAI,CAyBd,CAAC;AAEF,eAAO,MAAM,sCAAsC,GAC/C,IAAI,WAAW,EACf,MAAM,WAAW,EACjB,cAAc,oBAAoB,EAClC,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACnC,OAAO,CAAC,IAAI,CAyBd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../../src/accesslayer/presentation/relationships/read.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,oBAAoB,EAAW,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../../src/accesslayer/presentation/relationships/read.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,oBAAoB,EAAW,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAa5C,eAAO,MAAM,4BAA4B,GACrC,IAAI,MAAM,EACV,IAAI,WAAW,KAChB,OAAO,CACJ;IACI,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,wBAAwB,CAAC,CAAC;IACjF,MAAM,EAAE,oBAAoB,CAAC;CAChC,GACD,SAAS,CAgBd,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC7B,cAAc,oBAAoB,KACnC,OAAO,CAAC,WAAW,GAAG,SAAS,CAajC,CAAC;AAEF,eAAO,MAAM,gCAAgC,GACzC,gBAAgB,MAAM,EACtB,SAAS,WAAW,KACrB,OAAO,CAAC,OAAO,CAUjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abandon.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/share-link/abandon.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAcjF,eAAO,MAAM,kBAAkB,GAC3B,OAAO,uBAAuB,KAC/B,OAAO,CAAC,wBAAwB,CAuElC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ClaimCleanupJobsInput, ClaimCleanupJobsResult, CompleteCleanupJobInput, CompleteCleanupJobResult, ShareContentCleanupJobRecord } from './types';
|
|
2
|
+
export declare const claimCleanupJobs: (input: ClaimCleanupJobsInput) => Promise<ClaimCleanupJobsResult>;
|
|
3
|
+
export declare const completeCleanupJob: (input: CompleteCleanupJobInput) => Promise<CompleteCleanupJobResult>;
|
|
4
|
+
export declare const getCleanupJob: (objectRef: string) => Promise<ShareContentCleanupJobRecord | null>;
|
|
5
|
+
export declare const listCleanupJobsForShare: (shareId: string) => Promise<ShareContentCleanupJobRecord[]>;
|
|
6
|
+
//# sourceMappingURL=cleanup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/share-link/cleanup.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACR,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC/B,MAAM,SAAS,CAAC;AA2DjB,eAAO,MAAM,gBAAgB,GACzB,OAAO,qBAAqB,KAC7B,OAAO,CAAC,sBAAsB,CAkEhC,CAAC;AAOF,eAAO,MAAM,kBAAkB,GAC3B,OAAO,uBAAuB,KAC/B,OAAO,CAAC,wBAAwB,CAgFlC,CAAC;AAGF,eAAO,MAAM,aAAa,GACtB,WAAW,MAAM,KAClB,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAQ7C,CAAC;AAGF,eAAO,MAAM,uBAAuB,GAChC,SAAS,MAAM,KAChB,OAAO,CAAC,4BAA4B,EAAE,CAaxC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type ShareLinkRepositoryErrorCode = 'NOT_FOUND' | 'CONFLICT' | 'OPERATION_IN_FLIGHT' | 'LEASE_EXPIRED' | 'STALE_GENERATION' | 'PRECONDITION_FAILED' | 'INVALID_INPUT';
|
|
2
|
+
export declare class ShareLinkRepositoryError extends Error {
|
|
3
|
+
readonly code: ShareLinkRepositoryErrorCode;
|
|
4
|
+
constructor(code: ShareLinkRepositoryErrorCode, message: string);
|
|
5
|
+
}
|
|
6
|
+
export declare const isShareLinkRepositoryError: (error: unknown) => error is ShareLinkRepositoryError;
|
|
7
|
+
export declare function failShareLink(code: ShareLinkRepositoryErrorCode, message: string): never;
|
|
8
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/share-link/errors.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,4BAA4B,GAClC,WAAW,GACX,UAAU,GACV,qBAAqB,GACrB,eAAe,GACf,kBAAkB,GAClB,qBAAqB,GACrB,eAAe,CAAC;AAEtB,qBAAa,wBAAyB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,EAAE,4BAA4B,CAAC;gBAEhC,IAAI,EAAE,4BAA4B,EAAE,OAAO,EAAE,MAAM;CAKlE;AAED,eAAO,MAAM,0BAA0B,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,wBACxB,CAAC;AAE9C,wBAAgB,aAAa,CAAC,IAAI,EAAE,4BAA4B,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAExF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finalize.d.ts","sourceRoot":"","sources":["../../../src/accesslayer/share-link/finalize.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAqBnF,eAAO,MAAM,mBAAmB,GAC5B,OAAO,wBAAwB,KAChC,OAAO,CAAC,yBAAyB,CA6NnC,CAAC"}
|