@de-otio/trellis 0.7.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/dist/db.js +10 -18
- package/dist/db.js.map +1 -1
- package/dist/env.d.ts +66 -6
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +89 -70
- package/dist/env.js.map +1 -1
- package/dist/extensions.js +3 -8
- package/dist/extensions.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -9
- package/dist/index.js.map +1 -1
- package/dist/lambda/cleanup-cron.d.ts.map +1 -1
- package/dist/lambda/cleanup-cron.js +20 -24
- package/dist/lambda/cleanup-cron.js.map +1 -1
- package/dist/lambda/create-auth-challenge.d.ts.map +1 -1
- package/dist/lambda/create-auth-challenge.js +17 -19
- package/dist/lambda/create-auth-challenge.js.map +1 -1
- package/dist/lambda/custom-message.js +1 -5
- package/dist/lambda/custom-message.js.map +1 -1
- package/dist/lambda/define-auth-challenge.js +1 -5
- package/dist/lambda/define-auth-challenge.js.map +1 -1
- package/dist/lambda/delete-account-worker.d.ts.map +1 -1
- package/dist/lambda/delete-account-worker.js +25 -58
- package/dist/lambda/delete-account-worker.js.map +1 -1
- package/dist/lambda/diagnostics-proxy.d.ts.map +1 -1
- package/dist/lambda/diagnostics-proxy.js +14 -49
- package/dist/lambda/diagnostics-proxy.js.map +1 -1
- package/dist/lambda/e2e-sweeper.d.ts.map +1 -1
- package/dist/lambda/e2e-sweeper.js +30 -38
- package/dist/lambda/e2e-sweeper.js.map +1 -1
- package/dist/lambda/federation-outbox-worker.d.ts.map +1 -1
- package/dist/lambda/federation-outbox-worker.js +4 -6
- package/dist/lambda/federation-outbox-worker.js.map +1 -1
- package/dist/lambda/followers-events-worker.d.ts.map +1 -1
- package/dist/lambda/followers-events-worker.js +4 -6
- package/dist/lambda/followers-events-worker.js.map +1 -1
- package/dist/lambda/hourly-cron.d.ts.map +1 -1
- package/dist/lambda/hourly-cron.js +100 -32
- package/dist/lambda/hourly-cron.js.map +1 -1
- package/dist/lambda/link-check-worker.d.ts.map +1 -1
- package/dist/lambda/link-check-worker.js +4 -6
- package/dist/lambda/link-check-worker.js.map +1 -1
- package/dist/lambda/maintenance-cron.d.ts.map +1 -1
- package/dist/lambda/maintenance-cron.js +30 -63
- package/dist/lambda/maintenance-cron.js.map +1 -1
- package/dist/lambda/media-processing-worker.d.ts.map +1 -1
- package/dist/lambda/media-processing-worker.js +11 -46
- package/dist/lambda/media-processing-worker.js.map +1 -1
- package/dist/lambda/media-reconciliation-worker.d.ts.map +1 -1
- package/dist/lambda/media-reconciliation-worker.js +4 -6
- package/dist/lambda/media-reconciliation-worker.js.map +1 -1
- package/dist/lambda/nightly-cron.d.ts.map +1 -1
- package/dist/lambda/nightly-cron.js +67 -112
- package/dist/lambda/nightly-cron.js.map +1 -1
- package/dist/lambda/post-confirmation.d.ts.map +1 -1
- package/dist/lambda/post-confirmation.js +147 -45
- package/dist/lambda/post-confirmation.js.map +1 -1
- package/dist/lambda/pre-signup.js +7 -11
- package/dist/lambda/pre-signup.js.map +1 -1
- package/dist/lambda/pre-token-generation.d.ts.map +1 -1
- package/dist/lambda/pre-token-generation.js +27 -35
- package/dist/lambda/pre-token-generation.js.map +1 -1
- package/dist/lambda/tools/check-health.js +1 -5
- package/dist/lambda/tools/check-health.js.map +1 -1
- package/dist/lambda/tools/describe-services.js +4 -8
- package/dist/lambda/tools/describe-services.js.map +1 -1
- package/dist/lambda/tools/get-cost-report.js +4 -8
- package/dist/lambda/tools/get-cost-report.js.map +1 -1
- package/dist/lambda/tools/get-errors.js +5 -9
- package/dist/lambda/tools/get-errors.js.map +1 -1
- package/dist/lambda/tools/get-feature-flags.js +4 -8
- package/dist/lambda/tools/get-feature-flags.js.map +1 -1
- package/dist/lambda/tools/get-queue-status.js +5 -9
- package/dist/lambda/tools/get-queue-status.js.map +1 -1
- package/dist/lambda/tools/search-logs.js +5 -9
- package/dist/lambda/tools/search-logs.js.map +1 -1
- package/dist/lambda/tools/send-alert.js +4 -8
- package/dist/lambda/tools/send-alert.js.map +1 -1
- package/dist/lambda/verify-auth-challenge.d.ts.map +1 -1
- package/dist/lambda/verify-auth-challenge.js +10 -12
- package/dist/lambda/verify-auth-challenge.js.map +1 -1
- package/dist/lib/abuse-metrics.d.ts.map +1 -1
- package/dist/lib/abuse-metrics.js +10 -13
- package/dist/lib/abuse-metrics.js.map +1 -1
- package/dist/lib/activitypub/activity-processor.d.ts +1 -1
- package/dist/lib/activitypub/activity-processor.d.ts.map +1 -1
- package/dist/lib/activitypub/activity-processor.js +9 -43
- package/dist/lib/activitypub/activity-processor.js.map +1 -1
- package/dist/lib/activitypub/activity-service.js +1 -5
- package/dist/lib/activitypub/activity-service.js.map +1 -1
- package/dist/lib/activitypub/actor.d.ts +1 -1
- package/dist/lib/activitypub/actor.d.ts.map +1 -1
- package/dist/lib/activitypub/actor.js +1 -5
- package/dist/lib/activitypub/actor.js.map +1 -1
- package/dist/lib/activitypub/audience-service.d.ts +2 -2
- package/dist/lib/activitypub/audience-service.d.ts.map +1 -1
- package/dist/lib/activitypub/audience-service.js +8 -12
- package/dist/lib/activitypub/audience-service.js.map +1 -1
- package/dist/lib/activitypub/crypto.d.ts +1 -1
- package/dist/lib/activitypub/crypto.d.ts.map +1 -1
- package/dist/lib/activitypub/crypto.js +3 -41
- package/dist/lib/activitypub/crypto.js.map +1 -1
- package/dist/lib/activitypub/delivery-service.d.ts +5 -5
- package/dist/lib/activitypub/delivery-service.d.ts.map +1 -1
- package/dist/lib/activitypub/delivery-service.js +10 -47
- package/dist/lib/activitypub/delivery-service.js.map +1 -1
- package/dist/lib/activitypub/dispatchers/entity-actor.d.ts +3 -2
- package/dist/lib/activitypub/dispatchers/entity-actor.d.ts.map +1 -1
- package/dist/lib/activitypub/dispatchers/entity-actor.js +19 -23
- package/dist/lib/activitypub/dispatchers/entity-actor.js.map +1 -1
- package/dist/lib/activitypub/dispatchers/group-actor.d.ts +3 -2
- package/dist/lib/activitypub/dispatchers/group-actor.d.ts.map +1 -1
- package/dist/lib/activitypub/dispatchers/group-actor.js +19 -23
- package/dist/lib/activitypub/dispatchers/group-actor.js.map +1 -1
- package/dist/lib/activitypub/dispatchers/user-actor.d.ts +3 -2
- package/dist/lib/activitypub/dispatchers/user-actor.d.ts.map +1 -1
- package/dist/lib/activitypub/dispatchers/user-actor.js +16 -20
- package/dist/lib/activitypub/dispatchers/user-actor.js.map +1 -1
- package/dist/lib/activitypub/dm-service.js +1 -5
- package/dist/lib/activitypub/dm-service.js.map +1 -1
- package/dist/lib/activitypub/entity-profile-service.d.ts +1 -1
- package/dist/lib/activitypub/entity-profile-service.d.ts.map +1 -1
- package/dist/lib/activitypub/entity-profile-service.js +6 -10
- package/dist/lib/activitypub/entity-profile-service.js.map +1 -1
- package/dist/lib/activitypub/fedify/config.d.ts +3 -3
- package/dist/lib/activitypub/fedify/config.d.ts.map +1 -1
- package/dist/lib/activitypub/fedify/config.js +5 -8
- package/dist/lib/activitypub/fedify/config.js.map +1 -1
- package/dist/lib/activitypub/fedify/context.d.ts +1 -1
- package/dist/lib/activitypub/fedify/context.d.ts.map +1 -1
- package/dist/lib/activitypub/fedify/context.js +8 -12
- package/dist/lib/activitypub/fedify/context.js.map +1 -1
- package/dist/lib/activitypub/fedify/runtime.d.ts +1 -1
- package/dist/lib/activitypub/fedify/runtime.d.ts.map +1 -1
- package/dist/lib/activitypub/fedify/runtime.js +3 -6
- package/dist/lib/activitypub/fedify/runtime.js.map +1 -1
- package/dist/lib/activitypub/friendship-service.js +1 -5
- package/dist/lib/activitypub/friendship-service.js.map +1 -1
- package/dist/lib/activitypub/group-service.d.ts +1 -1
- package/dist/lib/activitypub/group-service.d.ts.map +1 -1
- package/dist/lib/activitypub/group-service.js +9 -46
- package/dist/lib/activitypub/group-service.js.map +1 -1
- package/dist/lib/activitypub/http-signatures.js +8 -45
- package/dist/lib/activitypub/http-signatures.js.map +1 -1
- package/dist/lib/activitypub/jsonld.d.ts +1 -1
- package/dist/lib/activitypub/jsonld.d.ts.map +1 -1
- package/dist/lib/activitypub/jsonld.js +1 -5
- package/dist/lib/activitypub/jsonld.js.map +1 -1
- package/dist/lib/activitypub/listeners/friends-collection.d.ts +1 -1
- package/dist/lib/activitypub/listeners/friends-collection.d.ts.map +1 -1
- package/dist/lib/activitypub/listeners/friends-collection.js +17 -20
- package/dist/lib/activitypub/listeners/friends-collection.js.map +1 -1
- package/dist/lib/activitypub/listeners/http-signatures.d.ts +1 -1
- package/dist/lib/activitypub/listeners/http-signatures.d.ts.map +1 -1
- package/dist/lib/activitypub/listeners/http-signatures.js +9 -46
- package/dist/lib/activitypub/listeners/http-signatures.js.map +1 -1
- package/dist/lib/activitypub/listeners/inbox.d.ts +2 -2
- package/dist/lib/activitypub/listeners/inbox.d.ts.map +1 -1
- package/dist/lib/activitypub/listeners/inbox.js +31 -35
- package/dist/lib/activitypub/listeners/inbox.js.map +1 -1
- package/dist/lib/activitypub/listeners/outbox.d.ts +1 -1
- package/dist/lib/activitypub/listeners/outbox.d.ts.map +1 -1
- package/dist/lib/activitypub/listeners/outbox.js +17 -20
- package/dist/lib/activitypub/listeners/outbox.js.map +1 -1
- package/dist/lib/activitypub/remote-fetch-service.d.ts +6 -6
- package/dist/lib/activitypub/remote-fetch-service.d.ts.map +1 -1
- package/dist/lib/activitypub/remote-fetch-service.js +6 -10
- package/dist/lib/activitypub/remote-fetch-service.js.map +1 -1
- package/dist/lib/activitypub/services/abuse-prevention.d.ts +1 -1
- package/dist/lib/activitypub/services/abuse-prevention.d.ts.map +1 -1
- package/dist/lib/activitypub/services/abuse-prevention.js +11 -17
- package/dist/lib/activitypub/services/abuse-prevention.js.map +1 -1
- package/dist/lib/activitypub/services/dm-service-fedify.d.ts +4 -4
- package/dist/lib/activitypub/services/dm-service-fedify.d.ts.map +1 -1
- package/dist/lib/activitypub/services/dm-service-fedify.js +24 -59
- package/dist/lib/activitypub/services/dm-service-fedify.js.map +1 -1
- package/dist/lib/activitypub/services/fedify-converters.d.ts +2 -2
- package/dist/lib/activitypub/services/fedify-converters.d.ts.map +1 -1
- package/dist/lib/activitypub/services/fedify-converters.js +3 -8
- package/dist/lib/activitypub/services/fedify-converters.js.map +1 -1
- package/dist/lib/activitypub/services/fedify-delivery.d.ts +2 -2
- package/dist/lib/activitypub/services/fedify-delivery.d.ts.map +1 -1
- package/dist/lib/activitypub/services/fedify-delivery.js +19 -56
- package/dist/lib/activitypub/services/fedify-delivery.js.map +1 -1
- package/dist/lib/activitypub/services/follow-activity-service.d.ts +2 -2
- package/dist/lib/activitypub/services/follow-activity-service.d.ts.map +1 -1
- package/dist/lib/activitypub/services/follow-activity-service.js +8 -12
- package/dist/lib/activitypub/services/follow-activity-service.js.map +1 -1
- package/dist/lib/activitypub/services/post-service-fedify.d.ts +2 -2
- package/dist/lib/activitypub/services/post-service-fedify.d.ts.map +1 -1
- package/dist/lib/activitypub/services/post-service-fedify.js +33 -65
- package/dist/lib/activitypub/services/post-service-fedify.js.map +1 -1
- package/dist/lib/activitypub/services/remote-activity-handler.d.ts +2 -2
- package/dist/lib/activitypub/services/remote-activity-handler.d.ts.map +1 -1
- package/dist/lib/activitypub/services/remote-activity-handler.js +25 -28
- package/dist/lib/activitypub/services/remote-activity-handler.js.map +1 -1
- package/dist/lib/activitypub/standalone-mode.d.ts +1 -1
- package/dist/lib/activitypub/standalone-mode.d.ts.map +1 -1
- package/dist/lib/activitypub/standalone-mode.js +13 -50
- package/dist/lib/activitypub/standalone-mode.js.map +1 -1
- package/dist/lib/activitypub/webfinger/server.d.ts +1 -1
- package/dist/lib/activitypub/webfinger/server.d.ts.map +1 -1
- package/dist/lib/activitypub/webfinger/server.js +18 -54
- package/dist/lib/activitypub/webfinger/server.js.map +1 -1
- package/dist/lib/age-gate-middleware.d.ts +4 -4
- package/dist/lib/age-gate-middleware.d.ts.map +1 -1
- package/dist/lib/age-gate-middleware.js +3 -6
- package/dist/lib/age-gate-middleware.js.map +1 -1
- package/dist/lib/age-gate.js +3 -8
- package/dist/lib/age-gate.js.map +1 -1
- package/dist/lib/age-tier-transition.d.ts +1 -1
- package/dist/lib/age-tier-transition.d.ts.map +1 -1
- package/dist/lib/age-tier-transition.js +7 -44
- package/dist/lib/age-tier-transition.js.map +1 -1
- package/dist/lib/app.d.ts +76 -0
- package/dist/lib/app.d.ts.map +1 -0
- package/dist/lib/app.js +400 -0
- package/dist/lib/app.js.map +1 -0
- package/dist/lib/audit/csv-export.js +6 -13
- package/dist/lib/audit/csv-export.js.map +1 -1
- package/dist/lib/audit/pii-filter.d.ts +9 -0
- package/dist/lib/audit/pii-filter.d.ts.map +1 -1
- package/dist/lib/audit/pii-filter.js +57 -7
- package/dist/lib/audit/pii-filter.js.map +1 -1
- package/dist/lib/audit-actions.d.ts +94 -0
- package/dist/lib/audit-actions.d.ts.map +1 -0
- package/dist/lib/audit-actions.js +107 -0
- package/dist/lib/audit-actions.js.map +1 -0
- package/dist/lib/audit-composer.d.ts +174 -0
- package/dist/lib/audit-composer.d.ts.map +1 -0
- package/dist/lib/audit-composer.js +421 -0
- package/dist/lib/audit-composer.js.map +1 -0
- package/dist/lib/auth/auth-context.d.ts +1 -1
- package/dist/lib/auth/auth-context.js +1 -2
- package/dist/lib/auth/auth-context.js.map +1 -1
- package/dist/lib/auth/auth-middleware.d.ts +16 -2
- package/dist/lib/auth/auth-middleware.d.ts.map +1 -1
- package/dist/lib/auth/auth-middleware.js +36 -45
- package/dist/lib/auth/auth-middleware.js.map +1 -1
- package/dist/lib/auth/capabilities.js +2 -5
- package/dist/lib/auth/capabilities.js.map +1 -1
- package/dist/lib/auth/claims-cache.d.ts +2 -2
- package/dist/lib/auth/claims-cache.js +19 -24
- package/dist/lib/auth/claims-cache.js.map +1 -1
- package/dist/lib/auth/cognito-jwt.d.ts +20 -2
- package/dist/lib/auth/cognito-jwt.d.ts.map +1 -1
- package/dist/lib/auth/cognito-jwt.js +83 -23
- package/dist/lib/auth/cognito-jwt.js.map +1 -1
- package/dist/lib/auth/idp-redirect-builder.d.ts +1 -1
- package/dist/lib/auth/idp-redirect-builder.d.ts.map +1 -1
- package/dist/lib/auth/idp-redirect-builder.js +4 -10
- package/dist/lib/auth/idp-redirect-builder.js.map +1 -1
- package/dist/lib/auth/require.d.ts +4 -4
- package/dist/lib/auth/require.d.ts.map +1 -1
- package/dist/lib/auth/require.js +11 -18
- package/dist/lib/auth/require.js.map +1 -1
- package/dist/lib/auth/role-grants.d.ts +1 -1
- package/dist/lib/auth/role-grants.d.ts.map +1 -1
- package/dist/lib/auth/role-grants.js +28 -31
- package/dist/lib/auth/role-grants.js.map +1 -1
- package/dist/lib/auth-context-manager.js +1 -5
- package/dist/lib/auth-context-manager.js.map +1 -1
- package/dist/lib/auth-handler.d.ts +5 -5
- package/dist/lib/auth-handler.d.ts.map +1 -1
- package/dist/lib/auth-handler.js +5 -9
- package/dist/lib/auth-handler.js.map +1 -1
- package/dist/lib/badge-handler.d.ts +1 -1
- package/dist/lib/badge-handler.d.ts.map +1 -1
- package/dist/lib/badge-handler.js +14 -52
- package/dist/lib/badge-handler.js.map +1 -1
- package/dist/lib/circle-handler.d.ts +10 -10
- package/dist/lib/circle-handler.d.ts.map +1 -1
- package/dist/lib/circle-handler.js +10 -47
- package/dist/lib/circle-handler.js.map +1 -1
- package/dist/lib/cognito/idp-sdk.js +11 -18
- package/dist/lib/cognito/idp-sdk.js.map +1 -1
- package/dist/lib/cognito/issuer-probe.js +9 -14
- package/dist/lib/cognito/issuer-probe.js.map +1 -1
- package/dist/lib/comment-handler.d.ts +10 -10
- package/dist/lib/comment-handler.d.ts.map +1 -1
- package/dist/lib/comment-handler.js +61 -97
- package/dist/lib/comment-handler.js.map +1 -1
- package/dist/lib/compliance/baseline.d.ts +2 -2
- package/dist/lib/compliance/baseline.d.ts.map +1 -1
- package/dist/lib/compliance/baseline.js +15 -18
- package/dist/lib/compliance/baseline.js.map +1 -1
- package/dist/lib/compliance/tenant-merge.d.ts +1 -1
- package/dist/lib/compliance/tenant-merge.d.ts.map +1 -1
- package/dist/lib/compliance/tenant-merge.js +1 -4
- package/dist/lib/compliance/tenant-merge.js.map +1 -1
- package/dist/lib/compliance/types.d.ts +1 -1
- package/dist/lib/compliance/types.js +2 -3
- package/dist/lib/compliance/types.js.map +1 -1
- package/dist/lib/connection-code-handler.d.ts +7 -7
- package/dist/lib/connection-code-handler.d.ts.map +1 -1
- package/dist/lib/connection-code-handler.js +13 -50
- package/dist/lib/connection-code-handler.js.map +1 -1
- package/dist/lib/content-discovery.d.ts +1 -1
- package/dist/lib/content-discovery.d.ts.map +1 -1
- package/dist/lib/content-discovery.js +15 -52
- package/dist/lib/content-discovery.js.map +1 -1
- package/dist/lib/context-aware-data-access.d.ts +1 -1
- package/dist/lib/context-aware-data-access.d.ts.map +1 -1
- package/dist/lib/context-aware-data-access.js +1 -5
- package/dist/lib/context-aware-data-access.js.map +1 -1
- package/dist/lib/cors-handler.d.ts +1 -1
- package/dist/lib/cors-handler.d.ts.map +1 -1
- package/dist/lib/cors-handler.js +13 -17
- package/dist/lib/cors-handler.js.map +1 -1
- package/dist/lib/cost-accumulator.d.ts.map +1 -1
- package/dist/lib/cost-accumulator.js +7 -11
- package/dist/lib/cost-accumulator.js.map +1 -1
- package/dist/lib/crypto/voting/elgamal-encryption.js +1 -5
- package/dist/lib/crypto/voting/elgamal-encryption.js.map +1 -1
- package/dist/lib/crypto/voting/encryption-scheme.js +1 -2
- package/dist/lib/crypto/voting/encryption-scheme.js.map +1 -1
- package/dist/lib/crypto/voting/hash-utils.js +6 -12
- package/dist/lib/crypto/voting/hash-utils.js.map +1 -1
- package/dist/lib/crypto/voting/hybrid-encryption.js +5 -9
- package/dist/lib/crypto/voting/hybrid-encryption.js.map +1 -1
- package/dist/lib/crypto/voting/index.js +4 -14
- package/dist/lib/crypto/voting/index.js.map +1 -1
- package/dist/lib/crypto/voting/post-quantum-encryption.js +1 -5
- package/dist/lib/crypto/voting/post-quantum-encryption.js.map +1 -1
- package/dist/lib/csrf.d.ts +2 -2
- package/dist/lib/csrf.d.ts.map +1 -1
- package/dist/lib/csrf.js +1 -5
- package/dist/lib/csrf.js.map +1 -1
- package/dist/lib/data-router.d.ts +5 -4
- package/dist/lib/data-router.d.ts.map +1 -1
- package/dist/lib/data-router.js +60 -90
- package/dist/lib/data-router.js.map +1 -1
- package/dist/lib/database-circuit-breaker.d.ts +61 -34
- package/dist/lib/database-circuit-breaker.d.ts.map +1 -1
- package/dist/lib/database-circuit-breaker.js +102 -109
- package/dist/lib/database-circuit-breaker.js.map +1 -1
- package/dist/lib/database-config.js +1 -4
- package/dist/lib/database-config.js.map +1 -1
- package/dist/lib/database-connection-manager.d.ts +42 -2
- package/dist/lib/database-connection-manager.d.ts.map +1 -1
- package/dist/lib/database-connection-manager.js +178 -74
- package/dist/lib/database-connection-manager.js.map +1 -1
- package/dist/lib/database-monitor.d.ts +1 -1
- package/dist/lib/database-monitor.d.ts.map +1 -1
- package/dist/lib/database-monitor.js +5 -9
- package/dist/lib/database-monitor.js.map +1 -1
- package/dist/lib/database-rate-limiter.d.ts +1 -1
- package/dist/lib/database-rate-limiter.d.ts.map +1 -1
- package/dist/lib/database-rate-limiter.js +3 -7
- package/dist/lib/database-rate-limiter.js.map +1 -1
- package/dist/lib/database-wrapper-helper.d.ts +2 -2
- package/dist/lib/database-wrapper-helper.d.ts.map +1 -1
- package/dist/lib/database-wrapper-helper.js +7 -11
- package/dist/lib/database-wrapper-helper.js.map +1 -1
- package/dist/lib/database-wrapper.d.ts +1 -1
- package/dist/lib/database-wrapper.d.ts.map +1 -1
- package/dist/lib/database-wrapper.js +5 -9
- package/dist/lib/database-wrapper.js.map +1 -1
- package/dist/lib/db-query-helper.d.ts +3 -3
- package/dist/lib/db-query-helper.d.ts.map +1 -1
- package/dist/lib/db-query-helper.js +4 -9
- package/dist/lib/db-query-helper.js.map +1 -1
- package/dist/lib/discovery-exposure.d.ts +42 -0
- package/dist/lib/discovery-exposure.d.ts.map +1 -0
- package/dist/lib/discovery-exposure.js +89 -0
- package/dist/lib/discovery-exposure.js.map +1 -0
- package/dist/lib/discovery-handler.d.ts +6 -6
- package/dist/lib/discovery-handler.d.ts.map +1 -1
- package/dist/lib/discovery-handler.js +10 -43
- package/dist/lib/discovery-handler.js.map +1 -1
- package/dist/lib/domain-reputation-service.d.ts +1 -1
- package/dist/lib/domain-reputation-service.d.ts.map +1 -1
- package/dist/lib/domain-reputation-service.js +12 -15
- package/dist/lib/domain-reputation-service.js.map +1 -1
- package/dist/lib/email-privacy.js +4 -8
- package/dist/lib/email-privacy.js.map +1 -1
- package/dist/lib/email-provider.d.ts +2 -2
- package/dist/lib/email-provider.d.ts.map +1 -1
- package/dist/lib/email-provider.js +8 -16
- package/dist/lib/email-provider.js.map +1 -1
- package/dist/lib/entity-handler.d.ts +5 -6
- package/dist/lib/entity-handler.d.ts.map +1 -1
- package/dist/lib/entity-handler.js +45 -80
- package/dist/lib/entity-handler.js.map +1 -1
- package/dist/lib/entity-relationship-handler.d.ts +9 -9
- package/dist/lib/entity-relationship-handler.d.ts.map +1 -1
- package/dist/lib/entity-relationship-handler.js +14 -51
- package/dist/lib/entity-relationship-handler.js.map +1 -1
- package/dist/lib/entity-tagging-errors.js +4 -11
- package/dist/lib/entity-tagging-errors.js.map +1 -1
- package/dist/lib/entity-tagging-validator.d.ts +3 -3
- package/dist/lib/entity-tagging-validator.d.ts.map +1 -1
- package/dist/lib/entity-tagging-validator.js +6 -11
- package/dist/lib/entity-tagging-validator.js.map +1 -1
- package/dist/lib/exif-stripper.js +1 -4
- package/dist/lib/exif-stripper.js.map +1 -1
- package/dist/lib/extension-context.d.ts +2 -2
- package/dist/lib/extension-context.d.ts.map +1 -1
- package/dist/lib/extension-context.js +1 -4
- package/dist/lib/extension-context.js.map +1 -1
- package/dist/lib/extension-route-wrapper.d.ts +1 -1
- package/dist/lib/extension-route-wrapper.d.ts.map +1 -1
- package/dist/lib/extension-route-wrapper.js +17 -55
- package/dist/lib/extension-route-wrapper.js.map +1 -1
- package/dist/lib/extension-validator.js +3 -6
- package/dist/lib/extension-validator.js.map +1 -1
- package/dist/lib/feature-flags.d.ts +5 -2
- package/dist/lib/feature-flags.d.ts.map +1 -1
- package/dist/lib/feature-flags.js +15 -48
- package/dist/lib/feature-flags.js.map +1 -1
- package/dist/lib/feature-toggle-global-client.d.ts +6 -0
- package/dist/lib/feature-toggle-global-client.d.ts.map +1 -0
- package/dist/lib/feature-toggle-global-client.js +73 -0
- package/dist/lib/feature-toggle-global-client.js.map +1 -0
- package/dist/lib/feature-toggle-service.d.ts +137 -27
- package/dist/lib/feature-toggle-service.d.ts.map +1 -1
- package/dist/lib/feature-toggle-service.js +302 -119
- package/dist/lib/feature-toggle-service.js.map +1 -1
- package/dist/lib/feed-handler.d.ts +8 -8
- package/dist/lib/feed-handler.d.ts.map +1 -1
- package/dist/lib/feed-handler.js +33 -62
- package/dist/lib/feed-handler.js.map +1 -1
- package/dist/lib/feed-pagination.d.ts +26 -0
- package/dist/lib/feed-pagination.d.ts.map +1 -1
- package/dist/lib/feed-pagination.js +31 -11
- package/dist/lib/feed-pagination.js.map +1 -1
- package/dist/lib/feed-personalization.d.ts +1 -1
- package/dist/lib/feed-personalization.d.ts.map +1 -1
- package/dist/lib/feed-personalization.js +6 -43
- package/dist/lib/feed-personalization.js.map +1 -1
- package/dist/lib/followers-events.js +8 -13
- package/dist/lib/followers-events.js.map +1 -1
- package/dist/lib/friends-handler.d.ts +2 -2
- package/dist/lib/friends-handler.d.ts.map +1 -1
- package/dist/lib/friends-handler.js +9 -46
- package/dist/lib/friends-handler.js.map +1 -1
- package/dist/lib/geo/entity-geo-repository.d.ts +67 -0
- package/dist/lib/geo/entity-geo-repository.d.ts.map +1 -0
- package/dist/lib/geo/entity-geo-repository.js +91 -0
- package/dist/lib/geo/entity-geo-repository.js.map +1 -0
- package/dist/lib/graph/errors.d.ts.map +1 -1
- package/dist/lib/graph/errors.js +13 -18
- package/dist/lib/graph/errors.js.map +1 -1
- package/dist/lib/graph/graph-factory.d.ts +12 -53
- package/dist/lib/graph/graph-factory.d.ts.map +1 -1
- package/dist/lib/graph/graph-factory.js +67 -162
- package/dist/lib/graph/graph-factory.js.map +1 -1
- package/dist/lib/graph/graph-service.d.ts +1 -1
- package/dist/lib/graph/graph-service.d.ts.map +1 -1
- package/dist/lib/graph/graph-service.js +1 -2
- package/dist/lib/graph/graph-service.js.map +1 -1
- package/dist/lib/graph/index.d.ts +10 -14
- package/dist/lib/graph/index.d.ts.map +1 -1
- package/dist/lib/graph/index.js +12 -46
- package/dist/lib/graph/index.js.map +1 -1
- package/dist/lib/graph/postgres/_shared.d.ts +18 -0
- package/dist/lib/graph/postgres/_shared.d.ts.map +1 -0
- package/dist/lib/graph/postgres/_shared.js +24 -0
- package/dist/lib/graph/postgres/_shared.js.map +1 -0
- package/dist/lib/graph/postgres/circles.d.ts +66 -0
- package/dist/lib/graph/postgres/circles.d.ts.map +1 -0
- package/dist/lib/graph/postgres/circles.js +513 -0
- package/dist/lib/graph/postgres/circles.js.map +1 -0
- package/dist/lib/graph/postgres/discovery.d.ts +165 -0
- package/dist/lib/graph/postgres/discovery.d.ts.map +1 -0
- package/dist/lib/graph/postgres/discovery.js +579 -0
- package/dist/lib/graph/postgres/discovery.js.map +1 -0
- package/dist/lib/graph/postgres/entity-relationships.d.ts +53 -0
- package/dist/lib/graph/postgres/entity-relationships.d.ts.map +1 -0
- package/dist/lib/graph/postgres/entity-relationships.js +304 -0
- package/dist/lib/graph/postgres/entity-relationships.js.map +1 -0
- package/dist/lib/graph/postgres/interaction-events.d.ts +106 -0
- package/dist/lib/graph/postgres/interaction-events.d.ts.map +1 -0
- package/dist/lib/graph/postgres/interaction-events.js +162 -0
- package/dist/lib/graph/postgres/interaction-events.js.map +1 -0
- package/dist/lib/graph/postgres/postgres-graph-service.d.ts +74 -0
- package/dist/lib/graph/postgres/postgres-graph-service.d.ts.map +1 -0
- package/dist/lib/graph/postgres/postgres-graph-service.js +167 -0
- package/dist/lib/graph/postgres/postgres-graph-service.js.map +1 -0
- package/dist/lib/graph/postgres/relationships.d.ts +58 -0
- package/dist/lib/graph/postgres/relationships.d.ts.map +1 -0
- package/dist/lib/graph/postgres/relationships.js +314 -0
- package/dist/lib/graph/postgres/relationships.js.map +1 -0
- package/dist/lib/graph/postgres/scoring.d.ts +74 -0
- package/dist/lib/graph/postgres/scoring.d.ts.map +1 -0
- package/dist/lib/graph/postgres/scoring.js +297 -0
- package/dist/lib/graph/postgres/scoring.js.map +1 -0
- package/dist/lib/graph/postgres/sync.d.ts +149 -0
- package/dist/lib/graph/postgres/sync.d.ts.map +1 -0
- package/dist/lib/graph/postgres/sync.js +269 -0
- package/dist/lib/graph/postgres/sync.js.map +1 -0
- package/dist/lib/graph/scoring-engine.d.ts +7 -1
- package/dist/lib/graph/scoring-engine.d.ts.map +1 -1
- package/dist/lib/graph/scoring-engine.js +29 -35
- package/dist/lib/graph/scoring-engine.js.map +1 -1
- package/dist/lib/graph/types.d.ts +18 -1
- package/dist/lib/graph/types.d.ts.map +1 -1
- package/dist/lib/graph/types.js +1 -2
- package/dist/lib/graph/types.js.map +1 -1
- package/dist/lib/hook-dispatcher.d.ts +1 -1
- package/dist/lib/hook-dispatcher.d.ts.map +1 -1
- package/dist/lib/hook-dispatcher.js +8 -12
- package/dist/lib/hook-dispatcher.js.map +1 -1
- package/dist/lib/input-sanitizer.js +1 -5
- package/dist/lib/input-sanitizer.js.map +1 -1
- package/dist/lib/internal-docs-handler.d.ts +2 -2
- package/dist/lib/internal-docs-handler.d.ts.map +1 -1
- package/dist/lib/internal-docs-handler.js +20 -28
- package/dist/lib/internal-docs-handler.js.map +1 -1
- package/dist/lib/internal-docs-navigation.js +2 -6
- package/dist/lib/internal-docs-navigation.js.map +1 -1
- package/dist/lib/invitation-handler.d.ts +2 -2
- package/dist/lib/invitation-handler.d.ts.map +1 -1
- package/dist/lib/invitation-handler.js +41 -82
- package/dist/lib/invitation-handler.js.map +1 -1
- package/dist/lib/ip-scrubber.js +3 -8
- package/dist/lib/ip-scrubber.js.map +1 -1
- package/dist/lib/link-security-handler.d.ts +3 -2
- package/dist/lib/link-security-handler.d.ts.map +1 -1
- package/dist/lib/link-security-handler.js +8 -44
- package/dist/lib/link-security-handler.js.map +1 -1
- package/dist/lib/logger.d.ts +31 -82
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +43 -185
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/media-cleanup-handler.d.ts +2 -2
- package/dist/lib/media-cleanup-handler.d.ts.map +1 -1
- package/dist/lib/media-cleanup-handler.js +7 -11
- package/dist/lib/media-cleanup-handler.js.map +1 -1
- package/dist/lib/media-handler.d.ts +1 -1
- package/dist/lib/media-handler.d.ts.map +1 -1
- package/dist/lib/media-handler.js +36 -73
- package/dist/lib/media-handler.js.map +1 -1
- package/dist/lib/media-metadata-extractor.d.ts +1 -1
- package/dist/lib/media-metadata-extractor.d.ts.map +1 -1
- package/dist/lib/media-metadata-extractor.js +3 -7
- package/dist/lib/media-metadata-extractor.js.map +1 -1
- package/dist/lib/media-metrics.d.ts +2 -2
- package/dist/lib/media-metrics.d.ts.map +1 -1
- package/dist/lib/media-metrics.js +3 -7
- package/dist/lib/media-metrics.js.map +1 -1
- package/dist/lib/metadata/index.d.ts +5 -5
- package/dist/lib/metadata/index.d.ts.map +1 -1
- package/dist/lib/metadata/index.js +5 -21
- package/dist/lib/metadata/index.js.map +1 -1
- package/dist/lib/metadata/metadata-config.js +2 -5
- package/dist/lib/metadata/metadata-config.js.map +1 -1
- package/dist/lib/metadata/metadata-errors.js +2 -7
- package/dist/lib/metadata/metadata-errors.js.map +1 -1
- package/dist/lib/metadata/metadata-extractor.d.ts +1 -1
- package/dist/lib/metadata/metadata-extractor.d.ts.map +1 -1
- package/dist/lib/metadata/metadata-extractor.js +42 -82
- package/dist/lib/metadata/metadata-extractor.js.map +1 -1
- package/dist/lib/metadata/metadata-sanitizer.js +17 -24
- package/dist/lib/metadata/metadata-sanitizer.js.map +1 -1
- package/dist/lib/metadata/metadata-schemas.d.ts +16 -100
- package/dist/lib/metadata/metadata-schemas.d.ts.map +1 -1
- package/dist/lib/metadata/metadata-schemas.js +31 -34
- package/dist/lib/metadata/metadata-schemas.js.map +1 -1
- package/dist/lib/mfa/mfa-handler.d.ts +1 -1
- package/dist/lib/mfa/mfa-handler.d.ts.map +1 -1
- package/dist/lib/mfa/mfa-handler.js +13 -17
- package/dist/lib/mfa/mfa-handler.js.map +1 -1
- package/dist/lib/mfa/totp-service.js +8 -18
- package/dist/lib/mfa/totp-service.js.map +1 -1
- package/dist/lib/middleware/comment-rate-limit.d.ts +1 -1
- package/dist/lib/middleware/comment-rate-limit.d.ts.map +1 -1
- package/dist/lib/middleware/comment-rate-limit.js +7 -10
- package/dist/lib/middleware/comment-rate-limit.js.map +1 -1
- package/dist/lib/middleware/feature-toggle-rate-limit.d.ts +1 -1
- package/dist/lib/middleware/feature-toggle-rate-limit.d.ts.map +1 -1
- package/dist/lib/middleware/feature-toggle-rate-limit.js +8 -13
- package/dist/lib/middleware/feature-toggle-rate-limit.js.map +1 -1
- package/dist/lib/middleware/idempotency-store.js +20 -26
- package/dist/lib/middleware/idempotency-store.js.map +1 -1
- package/dist/lib/middleware/idempotency.d.ts +2 -2
- package/dist/lib/middleware/idempotency.d.ts.map +1 -1
- package/dist/lib/middleware/idempotency.js +12 -50
- package/dist/lib/middleware/idempotency.js.map +1 -1
- package/dist/lib/middleware.d.ts +22 -9
- package/dist/lib/middleware.d.ts.map +1 -1
- package/dist/lib/middleware.js +72 -153
- package/dist/lib/middleware.js.map +1 -1
- package/dist/lib/moderation-handler.d.ts +1 -1
- package/dist/lib/moderation-handler.d.ts.map +1 -1
- package/dist/lib/moderation-handler.js +15 -54
- package/dist/lib/moderation-handler.js.map +1 -1
- package/dist/lib/net/trusted-client-ip.d.ts +8 -30
- package/dist/lib/net/trusted-client-ip.d.ts.map +1 -1
- package/dist/lib/net/trusted-client-ip.js +13 -94
- package/dist/lib/net/trusted-client-ip.js.map +1 -1
- package/dist/lib/notification-handler.d.ts +1 -1
- package/dist/lib/notification-handler.d.ts.map +1 -1
- package/dist/lib/notification-handler.js +10 -15
- package/dist/lib/notification-handler.js.map +1 -1
- package/dist/lib/notification-preferences-handler.d.ts +1 -1
- package/dist/lib/notification-preferences-handler.d.ts.map +1 -1
- package/dist/lib/notification-preferences-handler.js +7 -11
- package/dist/lib/notification-preferences-handler.js.map +1 -1
- package/dist/lib/oauth/cognito-issuer.d.ts +1 -1
- package/dist/lib/oauth/cognito-issuer.d.ts.map +1 -1
- package/dist/lib/oauth/cognito-issuer.js +5 -10
- package/dist/lib/oauth/cognito-issuer.js.map +1 -1
- package/dist/lib/oauth/device-authorization.d.ts +1 -1
- package/dist/lib/oauth/device-authorization.d.ts.map +1 -1
- package/dist/lib/oauth/device-authorization.js +62 -77
- package/dist/lib/oauth/device-authorization.js.map +1 -1
- package/dist/lib/oauth/envelope-crypto.d.ts +2 -2
- package/dist/lib/oauth/envelope-crypto.js +22 -34
- package/dist/lib/oauth/envelope-crypto.js.map +1 -1
- package/dist/lib/oauth/refresh-detection.js +42 -52
- package/dist/lib/oauth/refresh-detection.js.map +1 -1
- package/dist/lib/openai-budget.d.ts.map +1 -1
- package/dist/lib/openai-budget.js +7 -44
- package/dist/lib/openai-budget.js.map +1 -1
- package/dist/lib/openapi/generator.d.ts +1 -1
- package/dist/lib/openapi/generator.d.ts.map +1 -1
- package/dist/lib/openapi/generator.js +2 -6
- package/dist/lib/openapi/generator.js.map +1 -1
- package/dist/lib/orphaned-media-handler.d.ts +1 -1
- package/dist/lib/orphaned-media-handler.d.ts.map +1 -1
- package/dist/lib/orphaned-media-handler.js +9 -46
- package/dist/lib/orphaned-media-handler.js.map +1 -1
- package/dist/lib/parental-control-handler.d.ts +2 -2
- package/dist/lib/parental-control-handler.d.ts.map +1 -1
- package/dist/lib/parental-control-handler.js +18 -55
- package/dist/lib/parental-control-handler.js.map +1 -1
- package/dist/lib/parental-link-handler.d.ts +8 -8
- package/dist/lib/parental-link-handler.d.ts.map +1 -1
- package/dist/lib/parental-link-handler.js +10 -14
- package/dist/lib/parental-link-handler.js.map +1 -1
- package/dist/lib/performance-metrics.d.ts +1 -1
- package/dist/lib/performance-metrics.d.ts.map +1 -1
- package/dist/lib/performance-metrics.js +3 -6
- package/dist/lib/performance-metrics.js.map +1 -1
- package/dist/lib/post-handler.d.ts +9 -9
- package/dist/lib/post-handler.d.ts.map +1 -1
- package/dist/lib/post-handler.js +67 -101
- package/dist/lib/post-handler.js.map +1 -1
- package/dist/lib/privacy-defaults.js +3 -8
- package/dist/lib/privacy-defaults.js.map +1 -1
- package/dist/lib/privacy-handler.d.ts +2 -2
- package/dist/lib/privacy-handler.d.ts.map +1 -1
- package/dist/lib/privacy-handler.js +6 -10
- package/dist/lib/privacy-handler.js.map +1 -1
- package/dist/lib/pseudonym.d.ts +56 -0
- package/dist/lib/pseudonym.d.ts.map +1 -0
- package/dist/lib/pseudonym.js +85 -0
- package/dist/lib/pseudonym.js.map +1 -0
- package/dist/lib/queue-consumers/media-reconciliation-consumer.d.ts +2 -2
- package/dist/lib/queue-consumers/media-reconciliation-consumer.d.ts.map +1 -1
- package/dist/lib/queue-consumers/media-reconciliation-consumer.js +5 -8
- package/dist/lib/queue-consumers/media-reconciliation-consumer.js.map +1 -1
- package/dist/lib/quiet-hours.js +2 -6
- package/dist/lib/quiet-hours.js.map +1 -1
- package/dist/lib/rate-limit.d.ts +58 -47
- package/dist/lib/rate-limit.d.ts.map +1 -1
- package/dist/lib/rate-limit.js +168 -157
- package/dist/lib/rate-limit.js.map +1 -1
- package/dist/lib/reaction-handler.d.ts +10 -10
- package/dist/lib/reaction-handler.d.ts.map +1 -1
- package/dist/lib/reaction-handler.js +44 -80
- package/dist/lib/reaction-handler.js.map +1 -1
- package/dist/lib/recaptcha.js +6 -9
- package/dist/lib/recaptcha.js.map +1 -1
- package/dist/lib/redirect-resolver.d.ts +2 -2
- package/dist/lib/redirect-resolver.d.ts.map +1 -1
- package/dist/lib/redirect-resolver.js +5 -9
- package/dist/lib/redirect-resolver.js.map +1 -1
- package/dist/lib/region-config.d.ts +3 -3
- package/dist/lib/region-config.d.ts.map +1 -1
- package/dist/lib/region-config.js +15 -58
- package/dist/lib/region-config.js.map +1 -1
- package/dist/lib/region-detection.d.ts +55 -24
- package/dist/lib/region-detection.d.ts.map +1 -1
- package/dist/lib/region-detection.js +140 -199
- package/dist/lib/region-detection.js.map +1 -1
- package/dist/lib/region-registry.d.ts +49 -0
- package/dist/lib/region-registry.d.ts.map +1 -0
- package/dist/lib/region-registry.js +112 -0
- package/dist/lib/region-registry.js.map +1 -0
- package/dist/lib/relationship-handler.d.ts +9 -9
- package/dist/lib/relationship-handler.d.ts.map +1 -1
- package/dist/lib/relationship-handler.js +12 -49
- package/dist/lib/relationship-handler.js.map +1 -1
- package/dist/lib/request-context.d.ts +16 -16
- package/dist/lib/request-context.d.ts.map +1 -1
- package/dist/lib/request-context.js +14 -22
- package/dist/lib/request-context.js.map +1 -1
- package/dist/lib/route-helpers.d.ts +3 -4
- package/dist/lib/route-helpers.d.ts.map +1 -1
- package/dist/lib/route-helpers.js +20 -75
- package/dist/lib/route-helpers.js.map +1 -1
- package/dist/lib/routes/activitypub/actor.d.ts +1 -1
- package/dist/lib/routes/activitypub/actor.d.ts.map +1 -1
- package/dist/lib/routes/activitypub/actor.js +20 -23
- package/dist/lib/routes/activitypub/actor.js.map +1 -1
- package/dist/lib/routes/activitypub/audiences.d.ts +1 -1
- package/dist/lib/routes/activitypub/audiences.d.ts.map +1 -1
- package/dist/lib/routes/activitypub/audiences.js +76 -80
- package/dist/lib/routes/activitypub/audiences.js.map +1 -1
- package/dist/lib/routes/activitypub/collections.d.ts +1 -1
- package/dist/lib/routes/activitypub/collections.d.ts.map +1 -1
- package/dist/lib/routes/activitypub/collections.js +24 -26
- package/dist/lib/routes/activitypub/collections.js.map +1 -1
- package/dist/lib/routes/activitypub/entity-profile.d.ts +1 -1
- package/dist/lib/routes/activitypub/entity-profile.d.ts.map +1 -1
- package/dist/lib/routes/activitypub/entity-profile.js +36 -39
- package/dist/lib/routes/activitypub/entity-profile.js.map +1 -1
- package/dist/lib/routes/activitypub/friends.d.ts +1 -1
- package/dist/lib/routes/activitypub/friends.d.ts.map +1 -1
- package/dist/lib/routes/activitypub/friends.js +9 -12
- package/dist/lib/routes/activitypub/friends.js.map +1 -1
- package/dist/lib/routes/activitypub/group.d.ts +1 -1
- package/dist/lib/routes/activitypub/group.d.ts.map +1 -1
- package/dist/lib/routes/activitypub/group.js +91 -94
- package/dist/lib/routes/activitypub/group.js.map +1 -1
- package/dist/lib/routes/activitypub/inbox.d.ts +1 -1
- package/dist/lib/routes/activitypub/inbox.d.ts.map +1 -1
- package/dist/lib/routes/activitypub/inbox.js +30 -33
- package/dist/lib/routes/activitypub/inbox.js.map +1 -1
- package/dist/lib/routes/activitypub/messages.d.ts +1 -1
- package/dist/lib/routes/activitypub/messages.d.ts.map +1 -1
- package/dist/lib/routes/activitypub/messages.js +79 -83
- package/dist/lib/routes/activitypub/messages.js.map +1 -1
- package/dist/lib/routes/activitypub/outbox.d.ts +1 -1
- package/dist/lib/routes/activitypub/outbox.d.ts.map +1 -1
- package/dist/lib/routes/activitypub/outbox.js +9 -12
- package/dist/lib/routes/activitypub/outbox.js.map +1 -1
- package/dist/lib/routes/activitypub/post.d.ts +1 -1
- package/dist/lib/routes/activitypub/post.d.ts.map +1 -1
- package/dist/lib/routes/activitypub/post.js +32 -35
- package/dist/lib/routes/activitypub/post.js.map +1 -1
- package/dist/lib/routes/activitypub/webfinger.d.ts +1 -1
- package/dist/lib/routes/activitypub/webfinger.d.ts.map +1 -1
- package/dist/lib/routes/activitypub/webfinger.js +5 -8
- package/dist/lib/routes/activitypub/webfinger.js.map +1 -1
- package/dist/lib/routes/admin-costs.d.ts +1 -1
- package/dist/lib/routes/admin-costs.d.ts.map +1 -1
- package/dist/lib/routes/admin-costs.js +22 -26
- package/dist/lib/routes/admin-costs.js.map +1 -1
- package/dist/lib/routes/admin.d.ts +1 -1
- package/dist/lib/routes/admin.d.ts.map +1 -1
- package/dist/lib/routes/admin.js +290 -269
- package/dist/lib/routes/admin.js.map +1 -1
- package/dist/lib/routes/agent-authorize.d.ts +5 -5
- package/dist/lib/routes/agent-authorize.d.ts.map +1 -1
- package/dist/lib/routes/agent-authorize.js +68 -74
- package/dist/lib/routes/agent-authorize.js.map +1 -1
- package/dist/lib/routes/agent-sessions.d.ts +4 -4
- package/dist/lib/routes/agent-sessions.d.ts.map +1 -1
- package/dist/lib/routes/agent-sessions.js +30 -35
- package/dist/lib/routes/agent-sessions.js.map +1 -1
- package/dist/lib/routes/agent-surface.d.ts +2 -2
- package/dist/lib/routes/agent-surface.d.ts.map +1 -1
- package/dist/lib/routes/agent-surface.js +20 -24
- package/dist/lib/routes/agent-surface.js.map +1 -1
- package/dist/lib/routes/auth-discover.d.ts +1 -1
- package/dist/lib/routes/auth-discover.d.ts.map +1 -1
- package/dist/lib/routes/auth-discover.js +20 -56
- package/dist/lib/routes/auth-discover.js.map +1 -1
- package/dist/lib/routes/auth.d.ts +1 -1
- package/dist/lib/routes/auth.d.ts.map +1 -1
- package/dist/lib/routes/auth.js +13 -16
- package/dist/lib/routes/auth.js.map +1 -1
- package/dist/lib/routes/badges.d.ts +1 -1
- package/dist/lib/routes/badges.d.ts.map +1 -1
- package/dist/lib/routes/badges.js +20 -23
- package/dist/lib/routes/badges.js.map +1 -1
- package/dist/lib/routes/circles.d.ts +1 -1
- package/dist/lib/routes/circles.d.ts.map +1 -1
- package/dist/lib/routes/circles.js +40 -44
- package/dist/lib/routes/circles.js.map +1 -1
- package/dist/lib/routes/comments.d.ts +1 -1
- package/dist/lib/routes/comments.d.ts.map +1 -1
- package/dist/lib/routes/comments.js +67 -71
- package/dist/lib/routes/comments.js.map +1 -1
- package/dist/lib/routes/connection-codes.d.ts +1 -1
- package/dist/lib/routes/connection-codes.d.ts.map +1 -1
- package/dist/lib/routes/connection-codes.js +30 -34
- package/dist/lib/routes/connection-codes.js.map +1 -1
- package/dist/lib/routes/content-discovery.d.ts +1 -1
- package/dist/lib/routes/content-discovery.d.ts.map +1 -1
- package/dist/lib/routes/content-discovery.js +31 -34
- package/dist/lib/routes/content-discovery.js.map +1 -1
- package/dist/lib/routes/dashboard.d.ts +1 -1
- package/dist/lib/routes/dashboard.d.ts.map +1 -1
- package/dist/lib/routes/dashboard.js +251 -288
- package/dist/lib/routes/dashboard.js.map +1 -1
- package/dist/lib/routes/deletion.d.ts +1 -1
- package/dist/lib/routes/deletion.d.ts.map +1 -1
- package/dist/lib/routes/deletion.js +37 -74
- package/dist/lib/routes/deletion.js.map +1 -1
- package/dist/lib/routes/discovery.d.ts +1 -1
- package/dist/lib/routes/discovery.d.ts.map +1 -1
- package/dist/lib/routes/discovery.js +20 -24
- package/dist/lib/routes/discovery.js.map +1 -1
- package/dist/lib/routes/employees.d.ts +1 -1
- package/dist/lib/routes/employees.d.ts.map +1 -1
- package/dist/lib/routes/employees.js +15 -52
- package/dist/lib/routes/employees.js.map +1 -1
- package/dist/lib/routes/entities.d.ts +1 -1
- package/dist/lib/routes/entities.d.ts.map +1 -1
- package/dist/lib/routes/entities.js +133 -137
- package/dist/lib/routes/entities.js.map +1 -1
- package/dist/lib/routes/entity-relationships.d.ts +1 -1
- package/dist/lib/routes/entity-relationships.d.ts.map +1 -1
- package/dist/lib/routes/entity-relationships.js +35 -39
- package/dist/lib/routes/entity-relationships.js.map +1 -1
- package/dist/lib/routes/errors.d.ts +1 -1
- package/dist/lib/routes/errors.d.ts.map +1 -1
- package/dist/lib/routes/errors.js +4 -10
- package/dist/lib/routes/errors.js.map +1 -1
- package/dist/lib/routes/export.d.ts +1 -1
- package/dist/lib/routes/export.d.ts.map +1 -1
- package/dist/lib/routes/export.js +31 -35
- package/dist/lib/routes/export.js.map +1 -1
- package/dist/lib/routes/feature-flags.d.ts +1 -1
- package/dist/lib/routes/feature-flags.d.ts.map +1 -1
- package/dist/lib/routes/feature-flags.js +20 -23
- package/dist/lib/routes/feature-flags.js.map +1 -1
- package/dist/lib/routes/feeds.d.ts +1 -1
- package/dist/lib/routes/feeds.d.ts.map +1 -1
- package/dist/lib/routes/feeds.js +42 -46
- package/dist/lib/routes/feeds.js.map +1 -1
- package/dist/lib/routes/friends.d.ts +1 -1
- package/dist/lib/routes/friends.d.ts.map +1 -1
- package/dist/lib/routes/friends.js +35 -39
- package/dist/lib/routes/friends.js.map +1 -1
- package/dist/lib/routes/health.d.ts +1 -1
- package/dist/lib/routes/health.d.ts.map +1 -1
- package/dist/lib/routes/health.js +23 -27
- package/dist/lib/routes/health.js.map +1 -1
- package/dist/lib/routes/index.d.ts +2 -7
- package/dist/lib/routes/index.d.ts.map +1 -1
- package/dist/lib/routes/index.js +137 -158
- package/dist/lib/routes/index.js.map +1 -1
- package/dist/lib/routes/internal-docs.d.ts +1 -1
- package/dist/lib/routes/internal-docs.d.ts.map +1 -1
- package/dist/lib/routes/internal-docs.js +13 -16
- package/dist/lib/routes/internal-docs.js.map +1 -1
- package/dist/lib/routes/invitations.d.ts +1 -1
- package/dist/lib/routes/invitations.d.ts.map +1 -1
- package/dist/lib/routes/invitations.js +19 -22
- package/dist/lib/routes/invitations.js.map +1 -1
- package/dist/lib/routes/link-reports.d.ts +2 -2
- package/dist/lib/routes/link-reports.d.ts.map +1 -1
- package/dist/lib/routes/link-reports.js +86 -48
- package/dist/lib/routes/link-reports.js.map +1 -1
- package/dist/lib/routes/map.d.ts +1 -1
- package/dist/lib/routes/map.d.ts.map +1 -1
- package/dist/lib/routes/map.js +5 -8
- package/dist/lib/routes/map.js.map +1 -1
- package/dist/lib/routes/media-metadata-visibility.d.ts +1 -1
- package/dist/lib/routes/media-metadata-visibility.d.ts.map +1 -1
- package/dist/lib/routes/media-metadata-visibility.js +30 -67
- package/dist/lib/routes/media-metadata-visibility.js.map +1 -1
- package/dist/lib/routes/media.d.ts +1 -1
- package/dist/lib/routes/media.d.ts.map +1 -1
- package/dist/lib/routes/media.js +156 -193
- package/dist/lib/routes/media.js.map +1 -1
- package/dist/lib/routes/mfa.d.ts +1 -1
- package/dist/lib/routes/mfa.d.ts.map +1 -1
- package/dist/lib/routes/mfa.js +60 -64
- package/dist/lib/routes/mfa.js.map +1 -1
- package/dist/lib/routes/notifications.d.ts +1 -1
- package/dist/lib/routes/notifications.d.ts.map +1 -1
- package/dist/lib/routes/notifications.js +68 -72
- package/dist/lib/routes/notifications.js.map +1 -1
- package/dist/lib/routes/oauth.d.ts +1 -1
- package/dist/lib/routes/oauth.d.ts.map +1 -1
- package/dist/lib/routes/oauth.js +20 -23
- package/dist/lib/routes/oauth.js.map +1 -1
- package/dist/lib/routes/orphaned-media-health.d.ts +1 -1
- package/dist/lib/routes/orphaned-media-health.d.ts.map +1 -1
- package/dist/lib/routes/orphaned-media-health.js +10 -13
- package/dist/lib/routes/orphaned-media-health.js.map +1 -1
- package/dist/lib/routes/orphaned-media.d.ts +1 -1
- package/dist/lib/routes/orphaned-media.d.ts.map +1 -1
- package/dist/lib/routes/orphaned-media.js +20 -57
- package/dist/lib/routes/orphaned-media.js.map +1 -1
- package/dist/lib/routes/out.d.ts +1 -1
- package/dist/lib/routes/out.d.ts.map +1 -1
- package/dist/lib/routes/out.js +21 -24
- package/dist/lib/routes/out.js.map +1 -1
- package/dist/lib/routes/parental-controls.d.ts +1 -1
- package/dist/lib/routes/parental-controls.d.ts.map +1 -1
- package/dist/lib/routes/parental-controls.js +91 -95
- package/dist/lib/routes/parental-controls.js.map +1 -1
- package/dist/lib/routes/posts.d.ts +1 -1
- package/dist/lib/routes/posts.d.ts.map +1 -1
- package/dist/lib/routes/posts.js +101 -105
- package/dist/lib/routes/posts.js.map +1 -1
- package/dist/lib/routes/privacy.d.ts +1 -1
- package/dist/lib/routes/privacy.d.ts.map +1 -1
- package/dist/lib/routes/privacy.js +21 -25
- package/dist/lib/routes/privacy.js.map +1 -1
- package/dist/lib/routes/products.d.ts +1 -1
- package/dist/lib/routes/products.d.ts.map +1 -1
- package/dist/lib/routes/products.js +44 -48
- package/dist/lib/routes/products.js.map +1 -1
- package/dist/lib/routes/relationships.d.ts +1 -1
- package/dist/lib/routes/relationships.d.ts.map +1 -1
- package/dist/lib/routes/relationships.js +35 -39
- package/dist/lib/routes/relationships.js.map +1 -1
- package/dist/lib/routes/sentiments.d.ts +1 -1
- package/dist/lib/routes/sentiments.d.ts.map +1 -1
- package/dist/lib/routes/sentiments.js +71 -75
- package/dist/lib/routes/sentiments.js.map +1 -1
- package/dist/lib/routes/setup-status.d.ts +1 -1
- package/dist/lib/routes/setup-status.d.ts.map +1 -1
- package/dist/lib/routes/setup-status.js +17 -20
- package/dist/lib/routes/setup-status.js.map +1 -1
- package/dist/lib/routes/taxonomy-analytics.d.ts +1 -1
- package/dist/lib/routes/taxonomy-analytics.d.ts.map +1 -1
- package/dist/lib/routes/taxonomy-analytics.js +29 -33
- package/dist/lib/routes/taxonomy-analytics.js.map +1 -1
- package/dist/lib/routes/taxonomy.d.ts +1 -1
- package/dist/lib/routes/taxonomy.d.ts.map +1 -1
- package/dist/lib/routes/taxonomy.js +48 -51
- package/dist/lib/routes/taxonomy.js.map +1 -1
- package/dist/lib/routes/tenant-audit.d.ts +1 -1
- package/dist/lib/routes/tenant-audit.d.ts.map +1 -1
- package/dist/lib/routes/tenant-audit.js +35 -92
- package/dist/lib/routes/tenant-audit.js.map +1 -1
- package/dist/lib/routes/tenant-compliance.d.ts +1 -1
- package/dist/lib/routes/tenant-compliance.d.ts.map +1 -1
- package/dist/lib/routes/tenant-compliance.js +16 -52
- package/dist/lib/routes/tenant-compliance.js.map +1 -1
- package/dist/lib/routes/tenant-domains.d.ts +1 -1
- package/dist/lib/routes/tenant-domains.d.ts.map +1 -1
- package/dist/lib/routes/tenant-domains.js +27 -30
- package/dist/lib/routes/tenant-domains.js.map +1 -1
- package/dist/lib/routes/tenant-idp.d.ts +1 -1
- package/dist/lib/routes/tenant-idp.d.ts.map +1 -1
- package/dist/lib/routes/tenant-idp.js +27 -30
- package/dist/lib/routes/tenant-idp.js.map +1 -1
- package/dist/lib/routes/tenant-members.d.ts +1 -1
- package/dist/lib/routes/tenant-members.d.ts.map +1 -1
- package/dist/lib/routes/tenant-members.js +21 -24
- package/dist/lib/routes/tenant-members.js.map +1 -1
- package/dist/lib/routes/tenant-role-mappings.d.ts +1 -1
- package/dist/lib/routes/tenant-role-mappings.d.ts.map +1 -1
- package/dist/lib/routes/tenant-role-mappings.js +27 -30
- package/dist/lib/routes/tenant-role-mappings.js.map +1 -1
- package/dist/lib/routes/tenants.d.ts +1 -1
- package/dist/lib/routes/tenants.d.ts.map +1 -1
- package/dist/lib/routes/tenants.js +37 -40
- package/dist/lib/routes/tenants.js.map +1 -1
- package/dist/lib/routes/types.d.ts +10 -5
- package/dist/lib/routes/types.d.ts.map +1 -1
- package/dist/lib/routes/types.js +1 -2
- package/dist/lib/routes/types.js.map +1 -1
- package/dist/lib/routes/upload-sessions.d.ts +1 -1
- package/dist/lib/routes/upload-sessions.d.ts.map +1 -1
- package/dist/lib/routes/upload-sessions.js +57 -94
- package/dist/lib/routes/upload-sessions.js.map +1 -1
- package/dist/lib/routes/user.d.ts +1 -1
- package/dist/lib/routes/user.d.ts.map +1 -1
- package/dist/lib/routes/user.js +137 -85
- package/dist/lib/routes/user.js.map +1 -1
- package/dist/lib/routes.d.ts +2 -2
- package/dist/lib/routes.d.ts.map +1 -1
- package/dist/lib/routes.js +2 -7
- package/dist/lib/routes.js.map +1 -1
- package/dist/lib/scaling-health.d.ts.map +1 -1
- package/dist/lib/scaling-health.js +6 -9
- package/dist/lib/scaling-health.js.map +1 -1
- package/dist/lib/scheduled/media-stale-cleanup.js +5 -8
- package/dist/lib/scheduled/media-stale-cleanup.js.map +1 -1
- package/dist/lib/scheduled/orphaned-media-monitor.d.ts +1 -1
- package/dist/lib/scheduled/orphaned-media-monitor.d.ts.map +1 -1
- package/dist/lib/scheduled/orphaned-media-monitor.js +5 -42
- package/dist/lib/scheduled/orphaned-media-monitor.js.map +1 -1
- package/dist/lib/schemas.d.ts +85 -204
- package/dist/lib/schemas.d.ts.map +1 -1
- package/dist/lib/schemas.js +71 -74
- package/dist/lib/schemas.js.map +1 -1
- package/dist/lib/secrets/idp-secrets.d.ts +1 -1
- package/dist/lib/secrets/idp-secrets.js +13 -19
- package/dist/lib/secrets/idp-secrets.js.map +1 -1
- package/dist/lib/security-event-cleaner.js +1 -5
- package/dist/lib/security-event-cleaner.js.map +1 -1
- package/dist/lib/security-headers.js +1 -5
- package/dist/lib/security-headers.js.map +1 -1
- package/dist/lib/security-monitor.d.ts +4 -2
- package/dist/lib/security-monitor.d.ts.map +1 -1
- package/dist/lib/security-monitor.js +16 -18
- package/dist/lib/security-monitor.js.map +1 -1
- package/dist/lib/sentiment-digest.d.ts +1 -1
- package/dist/lib/sentiment-digest.d.ts.map +1 -1
- package/dist/lib/sentiment-digest.js +5 -8
- package/dist/lib/sentiment-digest.js.map +1 -1
- package/dist/lib/sentiment-display.js +3 -7
- package/dist/lib/sentiment-display.js.map +1 -1
- package/dist/lib/services/image-normalizer.js +1 -5
- package/dist/lib/services/image-normalizer.js.map +1 -1
- package/dist/lib/services/media-reconciliation-service.d.ts +1 -1
- package/dist/lib/services/media-reconciliation-service.d.ts.map +1 -1
- package/dist/lib/services/media-reconciliation-service.js +7 -11
- package/dist/lib/services/media-reconciliation-service.js.map +1 -1
- package/dist/lib/services/media-upload-service.d.ts +1 -1
- package/dist/lib/services/media-upload-service.d.ts.map +1 -1
- package/dist/lib/services/media-upload-service.js +4 -8
- package/dist/lib/services/media-upload-service.js.map +1 -1
- package/dist/lib/services/user-data-deletion.d.ts +45 -2
- package/dist/lib/services/user-data-deletion.d.ts.map +1 -1
- package/dist/lib/services/user-data-deletion.js +87 -9
- package/dist/lib/services/user-data-deletion.js.map +1 -1
- package/dist/lib/session-awareness.js +2 -6
- package/dist/lib/session-awareness.js.map +1 -1
- package/dist/lib/session-config.js +8 -17
- package/dist/lib/session-config.js.map +1 -1
- package/dist/lib/{session-manager.d.ts → session-cookie.d.ts} +58 -15
- package/dist/lib/session-cookie.d.ts.map +1 -0
- package/dist/lib/session-cookie.js +0 -0
- package/dist/lib/session-cookie.js.map +1 -0
- package/dist/lib/signup-metadata.d.ts +129 -0
- package/dist/lib/signup-metadata.d.ts.map +1 -0
- package/dist/lib/signup-metadata.js +127 -0
- package/dist/lib/signup-metadata.js.map +1 -0
- package/dist/lib/sso-auth-handler.js +1 -5
- package/dist/lib/sso-auth-handler.js.map +1 -1
- package/dist/lib/tag-suggestions-handler.d.ts +1 -1
- package/dist/lib/tag-suggestions-handler.d.ts.map +1 -1
- package/dist/lib/tag-suggestions-handler.js +1 -5
- package/dist/lib/tag-suggestions-handler.js.map +1 -1
- package/dist/lib/taxonomy-handler-factory.d.ts +2 -2
- package/dist/lib/taxonomy-handler-factory.d.ts.map +1 -1
- package/dist/lib/taxonomy-handler-factory.js +7 -10
- package/dist/lib/taxonomy-handler-factory.js.map +1 -1
- package/dist/lib/taxonomy-handler.d.ts +2 -2
- package/dist/lib/taxonomy-handler.d.ts.map +1 -1
- package/dist/lib/taxonomy-handler.js +8 -8
- package/dist/lib/taxonomy-handler.js.map +1 -1
- package/dist/lib/taxonomy-metrics.js +5 -9
- package/dist/lib/taxonomy-metrics.js.map +1 -1
- package/dist/lib/taxonomy-search-metrics.d.ts +2 -2
- package/dist/lib/taxonomy-search-metrics.d.ts.map +1 -1
- package/dist/lib/taxonomy-search-metrics.js +3 -7
- package/dist/lib/taxonomy-search-metrics.js.map +1 -1
- package/dist/lib/tenant/audit-emit.d.ts +18 -8
- package/dist/lib/tenant/audit-emit.d.ts.map +1 -1
- package/dist/lib/tenant/audit-emit.js +50 -11
- package/dist/lib/tenant/audit-emit.js.map +1 -1
- package/dist/lib/tenant/derive-domain.js +1 -4
- package/dist/lib/tenant/derive-domain.js.map +1 -1
- package/dist/lib/tenant/domain-handler.d.ts +2 -2
- package/dist/lib/tenant/domain-handler.d.ts.map +1 -1
- package/dist/lib/tenant/domain-handler.js +50 -62
- package/dist/lib/tenant/domain-handler.js.map +1 -1
- package/dist/lib/tenant/domain-validator.d.ts +1 -1
- package/dist/lib/tenant/domain-validator.js +10 -13
- package/dist/lib/tenant/domain-validator.js.map +1 -1
- package/dist/lib/tenant/domain-verifier.d.ts +3 -3
- package/dist/lib/tenant/domain-verifier.js +8 -11
- package/dist/lib/tenant/domain-verifier.js.map +1 -1
- package/dist/lib/tenant/idp-handler.d.ts +4 -4
- package/dist/lib/tenant/idp-handler.d.ts.map +1 -1
- package/dist/lib/tenant/idp-handler.js +45 -82
- package/dist/lib/tenant/idp-handler.js.map +1 -1
- package/dist/lib/tenant/idp-name.js +1 -4
- package/dist/lib/tenant/idp-name.js.map +1 -1
- package/dist/lib/tenant/member-handler.d.ts +2 -2
- package/dist/lib/tenant/member-handler.d.ts.map +1 -1
- package/dist/lib/tenant/member-handler.js +30 -67
- package/dist/lib/tenant/member-handler.js.map +1 -1
- package/dist/lib/tenant/reserved-slugs.d.ts +1 -1
- package/dist/lib/tenant/reserved-slugs.d.ts.map +1 -1
- package/dist/lib/tenant/reserved-slugs.js +8 -14
- package/dist/lib/tenant/reserved-slugs.js.map +1 -1
- package/dist/lib/tenant/resolve-role.js +1 -4
- package/dist/lib/tenant/resolve-role.js.map +1 -1
- package/dist/lib/tenant/role-mapping-handler.d.ts +2 -2
- package/dist/lib/tenant/role-mapping-handler.d.ts.map +1 -1
- package/dist/lib/tenant/role-mapping-handler.js +24 -61
- package/dist/lib/tenant/role-mapping-handler.js.map +1 -1
- package/dist/lib/tenant/setup-status.d.ts +1 -1
- package/dist/lib/tenant/setup-status.d.ts.map +1 -1
- package/dist/lib/tenant/setup-status.js +3 -40
- package/dist/lib/tenant/setup-status.js.map +1 -1
- package/dist/lib/tenant/slug-validator.js +3 -6
- package/dist/lib/tenant/slug-validator.js.map +1 -1
- package/dist/lib/tenant/tenant-handler.d.ts +2 -2
- package/dist/lib/tenant/tenant-handler.d.ts.map +1 -1
- package/dist/lib/tenant/tenant-handler.js +31 -68
- package/dist/lib/tenant/tenant-handler.js.map +1 -1
- package/dist/lib/tenant/transfer-ownership.js +2 -6
- package/dist/lib/tenant/transfer-ownership.js.map +1 -1
- package/dist/lib/tenant-scope.d.ts +97 -0
- package/dist/lib/tenant-scope.d.ts.map +1 -0
- package/dist/lib/tenant-scope.js +270 -0
- package/dist/lib/tenant-scope.js.map +1 -0
- package/dist/lib/terminology.d.ts.map +1 -1
- package/dist/lib/terminology.js +7 -9
- package/dist/lib/terminology.js.map +1 -1
- package/dist/lib/theme.js +2 -6
- package/dist/lib/theme.js.map +1 -1
- package/dist/lib/threat-intel-service.d.ts +2 -2
- package/dist/lib/threat-intel-service.d.ts.map +1 -1
- package/dist/lib/threat-intel-service.js +3 -7
- package/dist/lib/threat-intel-service.js.map +1 -1
- package/dist/lib/types/media-reconciliation.js +1 -2
- package/dist/lib/types/media-reconciliation.js.map +1 -1
- package/dist/lib/upload-session-handler.d.ts +1 -1
- package/dist/lib/upload-session-handler.d.ts.map +1 -1
- package/dist/lib/upload-session-handler.js +13 -50
- package/dist/lib/upload-session-handler.js.map +1 -1
- package/dist/lib/user/derive-handle.js +2 -6
- package/dist/lib/user/derive-handle.js.map +1 -1
- package/dist/lib/user-badge.js +6 -14
- package/dist/lib/user-badge.js.map +1 -1
- package/dist/lib/user-deletion-handler-enhanced.d.ts +2 -2
- package/dist/lib/user-deletion-handler-enhanced.d.ts.map +1 -1
- package/dist/lib/user-deletion-handler-enhanced.js +16 -53
- package/dist/lib/user-deletion-handler-enhanced.js.map +1 -1
- package/dist/lib/user-deprovisioning.d.ts +1 -1
- package/dist/lib/user-deprovisioning.d.ts.map +1 -1
- package/dist/lib/user-deprovisioning.js +16 -20
- package/dist/lib/user-deprovisioning.js.map +1 -1
- package/dist/lib/user-export-handler.d.ts +4 -4
- package/dist/lib/user-export-handler.d.ts.map +1 -1
- package/dist/lib/user-export-handler.js +11 -15
- package/dist/lib/user-export-handler.js.map +1 -1
- package/dist/lib/validate-request.js +8 -13
- package/dist/lib/validate-request.js.map +1 -1
- package/dist/lib/validation/feature-toggle-schemas.d.ts +130 -249
- package/dist/lib/validation/feature-toggle-schemas.d.ts.map +1 -1
- package/dist/lib/validation/feature-toggle-schemas.js +50 -59
- package/dist/lib/validation/feature-toggle-schemas.js.map +1 -1
- package/dist/lib/validation/validate-request.d.ts.map +1 -1
- package/dist/lib/validation/validate-request.js +12 -23
- package/dist/lib/validation/validate-request.js.map +1 -1
- package/dist/lib/validation.js +1 -5
- package/dist/lib/validation.js.map +1 -1
- package/dist/lib/version.js +3 -8
- package/dist/lib/version.js.map +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +29 -69
- package/dist/server.js.map +1 -1
- package/dist/types/cloudflare-compat.d.ts +3 -93
- package/dist/types/cloudflare-compat.d.ts.map +1 -1
- package/dist/types/cloudflare-compat.js +1 -2
- package/dist/types/cloudflare-compat.js.map +1 -1
- package/dist/worker.d.ts +6 -6
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +6 -13
- package/dist/worker.js.map +1 -1
- package/package.json +30 -17
- package/prisma/migrations/20260602054730_add_entity_geo_and_pending_schema/migration.sql +113 -0
- package/prisma/migrations/20260602162901_research_foundations/migration.sql +65 -0
- package/prisma/migrations/20260604130000_surveillance_phase0_enablers/migration.sql +107 -0
- package/prisma/migrations/20260604140000_fold_link_reports_into_reports/migration.sql +23 -0
- package/prisma/migrations/20260604140000_fold_link_reports_into_reports/rollback.reference.sql +31 -0
- package/prisma/schema.prisma +419 -68
- package/src/lambda/cleanup-cron.ts +10 -7
- package/src/lambda/create-auth-challenge.ts +6 -3
- package/src/lambda/delete-account-worker.ts +17 -12
- package/src/lambda/diagnostics-proxy.ts +9 -6
- package/src/lambda/e2e-sweeper.ts +17 -23
- package/src/lambda/federation-outbox-worker.ts +4 -1
- package/src/lambda/followers-events-worker.ts +4 -1
- package/src/lambda/hourly-cron.ts +112 -20
- package/src/lambda/link-check-worker.ts +4 -1
- package/src/lambda/maintenance-cron.ts +24 -13
- package/src/lambda/media-processing-worker.ts +5 -2
- package/src/lambda/media-reconciliation-worker.ts +4 -1
- package/src/lambda/nightly-cron.ts +53 -54
- package/src/lambda/post-confirmation.ts +188 -62
- package/src/lambda/pre-token-generation.ts +39 -44
- package/src/lambda/verify-auth-challenge.ts +4 -1
- package/dist/lib/audit/emit.d.ts +0 -56
- package/dist/lib/audit/emit.d.ts.map +0 -1
- package/dist/lib/audit/emit.js +0 -124
- package/dist/lib/audit/emit.js.map +0 -1
- package/dist/lib/audit/event-types.d.ts +0 -36
- package/dist/lib/audit/event-types.d.ts.map +0 -1
- package/dist/lib/audit/event-types.js +0 -69
- package/dist/lib/audit/event-types.js.map +0 -1
- package/dist/lib/audit-logger.d.ts +0 -142
- package/dist/lib/audit-logger.d.ts.map +0 -1
- package/dist/lib/audit-logger.js +0 -326
- package/dist/lib/audit-logger.js.map +0 -1
- package/dist/lib/circuit-breaker.d.ts +0 -27
- package/dist/lib/circuit-breaker.d.ts.map +0 -1
- package/dist/lib/circuit-breaker.js +0 -63
- package/dist/lib/circuit-breaker.js.map +0 -1
- package/dist/lib/graph/dual-write-service.d.ts +0 -116
- package/dist/lib/graph/dual-write-service.d.ts.map +0 -1
- package/dist/lib/graph/dual-write-service.js +0 -332
- package/dist/lib/graph/dual-write-service.js.map +0 -1
- package/dist/lib/graph/dual-write.d.ts +0 -396
- package/dist/lib/graph/dual-write.d.ts.map +0 -1
- package/dist/lib/graph/dual-write.js +0 -53
- package/dist/lib/graph/dual-write.js.map +0 -1
- package/dist/lib/graph/graph-schema-init.d.ts +0 -31
- package/dist/lib/graph/graph-schema-init.d.ts.map +0 -1
- package/dist/lib/graph/graph-schema-init.js +0 -105
- package/dist/lib/graph/graph-schema-init.js.map +0 -1
- package/dist/lib/graph/neo4j-graph-service.d.ts +0 -186
- package/dist/lib/graph/neo4j-graph-service.d.ts.map +0 -1
- package/dist/lib/graph/neo4j-graph-service.js +0 -1625
- package/dist/lib/graph/neo4j-graph-service.js.map +0 -1
- package/dist/lib/graph/reconciliation-service.d.ts +0 -113
- package/dist/lib/graph/reconciliation-service.d.ts.map +0 -1
- package/dist/lib/graph/reconciliation-service.js +0 -533
- package/dist/lib/graph/reconciliation-service.js.map +0 -1
- package/dist/lib/id-generator.d.ts +0 -29
- package/dist/lib/id-generator.d.ts.map +0 -1
- package/dist/lib/id-generator.js +0 -51
- package/dist/lib/id-generator.js.map +0 -1
- package/dist/lib/kv/dynamodb-kv.d.ts +0 -39
- package/dist/lib/kv/dynamodb-kv.d.ts.map +0 -1
- package/dist/lib/kv/dynamodb-kv.js +0 -239
- package/dist/lib/kv/dynamodb-kv.js.map +0 -1
- package/dist/lib/queue/sqs-queue.d.ts +0 -16
- package/dist/lib/queue/sqs-queue.d.ts.map +0 -1
- package/dist/lib/queue/sqs-queue.js +0 -39
- package/dist/lib/queue/sqs-queue.js.map +0 -1
- package/dist/lib/route-matcher.d.ts +0 -24
- package/dist/lib/route-matcher.d.ts.map +0 -1
- package/dist/lib/route-matcher.js +0 -96
- package/dist/lib/route-matcher.js.map +0 -1
- package/dist/lib/router.d.ts +0 -26
- package/dist/lib/router.d.ts.map +0 -1
- package/dist/lib/router.js +0 -90
- package/dist/lib/router.js.map +0 -1
- package/dist/lib/routes-all.d.ts +0 -9
- package/dist/lib/routes-all.d.ts.map +0 -1
- package/dist/lib/routes-all.js +0 -170
- package/dist/lib/routes-all.js.map +0 -1
- package/dist/lib/secret-resolver.d.ts +0 -88
- package/dist/lib/secret-resolver.d.ts.map +0 -1
- package/dist/lib/secret-resolver.js +0 -183
- package/dist/lib/secret-resolver.js.map +0 -1
- package/dist/lib/session-manager.d.ts.map +0 -1
- package/dist/lib/session-manager.js +0 -492
- package/dist/lib/session-manager.js.map +0 -1
- package/dist/lib/storage/s3-storage.d.ts +0 -29
- package/dist/lib/storage/s3-storage.d.ts.map +0 -1
- package/dist/lib/storage/s3-storage.js +0 -135
- package/dist/lib/storage/s3-storage.js.map +0 -1
- package/dist/lib/tenant-context.d.ts +0 -35
- package/dist/lib/tenant-context.d.ts.map +0 -1
- package/dist/lib/tenant-context.js +0 -54
- package/dist/lib/tenant-context.js.map +0 -1
package/prisma/schema.prisma
CHANGED
|
@@ -4,11 +4,10 @@ generator client {
|
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
datasource db {
|
|
7
|
-
provider
|
|
8
|
-
url
|
|
9
|
-
|
|
10
|
-
//
|
|
11
|
-
// This schema is correct for Prisma 5.x
|
|
7
|
+
provider = "postgresql"
|
|
8
|
+
// Prisma 7: url/directUrl moved out of the datasource block. The migration
|
|
9
|
+
// connection lives in apps/api/prisma.config.ts; the runtime connection is
|
|
10
|
+
// supplied via the PrismaPg driver adapter (lib/database-connection-manager.ts).
|
|
12
11
|
}
|
|
13
12
|
|
|
14
13
|
// Generic Entity model (replaces Dog model)
|
|
@@ -32,7 +31,7 @@ model Entity {
|
|
|
32
31
|
lifeStageCalculatedAt DateTime? @map("life_stage_calculated_at")
|
|
33
32
|
|
|
34
33
|
// ActivityPub federation fields
|
|
35
|
-
actorUri String? @unique @map("actor_uri") // e.g. https://
|
|
34
|
+
actorUri String? @unique @map("actor_uri") // e.g. https://example.com/ap/entities/{id}
|
|
36
35
|
inboxUrl String? @map("inbox_url")
|
|
37
36
|
outboxUrl String? @map("outbox_url")
|
|
38
37
|
followersUrl String? @map("followers_url")
|
|
@@ -69,6 +68,9 @@ enum EntityStatus {
|
|
|
69
68
|
|
|
70
69
|
model PostGeoIndex {
|
|
71
70
|
postUri String @id @map("post_uri")
|
|
71
|
+
// Multi-tenancy — denormalized from the owning post; location data is
|
|
72
|
+
// sensitive, so geo rows carry their own tenant_id for direct RLS.
|
|
73
|
+
tenantId String @map("tenant_id")
|
|
72
74
|
entityRef String? @map("entity_ref") // Generic entity reference
|
|
73
75
|
geohash String
|
|
74
76
|
lat Float
|
|
@@ -82,12 +84,37 @@ model PostGeoIndex {
|
|
|
82
84
|
sensitivityLevel String @default("benign") @map("sensitivity_level")
|
|
83
85
|
// Values: 'benign', 'sensitive', 'decoy'
|
|
84
86
|
|
|
87
|
+
tenant Tenant @relation(fields: [tenantId], references: [id], onDelete: Cascade)
|
|
88
|
+
|
|
89
|
+
@@index([tenantId])
|
|
85
90
|
@@index([entityRef])
|
|
86
91
|
@@index([geohash])
|
|
87
92
|
@@index([sensitivityLevel]) // Index for sensitivity level queries
|
|
88
93
|
@@map("post_geo_index")
|
|
89
94
|
}
|
|
90
95
|
|
|
96
|
+
/// Entity geo-location for proximity discovery (C7). Neptune (the graph DB) has
|
|
97
|
+
/// no spatial type, so geo-proximity lives here and is queried with PostGIS
|
|
98
|
+
/// (ST_DWithin / KNN over a GiST index) via $queryRaw. Populated from the
|
|
99
|
+
/// dual-write (syncEntity). Location is sensitive → own tenant_id for direct RLS
|
|
100
|
+
/// (mirrors post_geo_index). See plans/redesign/entity-location-subsystem.md.
|
|
101
|
+
model EntityLocation {
|
|
102
|
+
entityId String @id @map("entity_id")
|
|
103
|
+
tenantId String @map("tenant_id")
|
|
104
|
+
// PostGIS geography(Point,4326). Prisma Client cannot filter/order on it —
|
|
105
|
+
// spatial reads/writes go through $queryRaw. The geography column type, GiST
|
|
106
|
+
// index, and RLS are added in the migration SQL (not derivable from Prisma).
|
|
107
|
+
location Unsupported("geography(Point, 4326)")
|
|
108
|
+
lat Float
|
|
109
|
+
lng Float
|
|
110
|
+
updatedAt DateTime @default(now()) @updatedAt @map("updated_at")
|
|
111
|
+
|
|
112
|
+
tenant Tenant @relation(fields: [tenantId], references: [id], onDelete: Cascade)
|
|
113
|
+
|
|
114
|
+
@@index([tenantId])
|
|
115
|
+
@@map("entity_location")
|
|
116
|
+
}
|
|
117
|
+
|
|
91
118
|
model IngestState {
|
|
92
119
|
id String @id @default(cuid())
|
|
93
120
|
cursor String? @unique
|
|
@@ -104,9 +131,27 @@ enum UserRole {
|
|
|
104
131
|
PARTNER_ADMIN
|
|
105
132
|
INTERNAL
|
|
106
133
|
CONTENT_CREATOR
|
|
134
|
+
MODERATOR // Surveillance-hardening Phase 0 (E5): moderation-queue access; routes are Phase 1
|
|
107
135
|
SUPER_ADMIN
|
|
108
136
|
}
|
|
109
137
|
|
|
138
|
+
// Surveillance-hardening Phase 0 (E2): how an account was created. Nullable on
|
|
139
|
+
// User — existing accounts predate capture and stay NULL (unknown), never
|
|
140
|
+
// backfilled. See doc/02-technical/surveillance-threat-model/03-signup-...
|
|
141
|
+
enum SignupMethod {
|
|
142
|
+
COGNITO
|
|
143
|
+
INVITE
|
|
144
|
+
MAGIC_LINK
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Surveillance-hardening Phase 0 (E3): discriminator for the generalized Report
|
|
148
|
+
// model. LINK reports exist today (folded in from LinkReport, P4); ACCOUNT
|
|
149
|
+
// reports are Phase 1 (just a new reportType, not a new subsystem).
|
|
150
|
+
enum ReportType {
|
|
151
|
+
LINK
|
|
152
|
+
ACCOUNT
|
|
153
|
+
}
|
|
154
|
+
|
|
110
155
|
// Role metadata for UI display and documentation
|
|
111
156
|
model RoleMetadata {
|
|
112
157
|
role UserRole @id // Maps to enum value
|
|
@@ -128,8 +173,8 @@ model User {
|
|
|
128
173
|
id String @id @default(cuid())
|
|
129
174
|
email String @unique
|
|
130
175
|
role UserRole @default(END_USER)
|
|
131
|
-
actorUri String? @unique @map("actor_uri") // ActivityPub actor URI (e.g., "https://
|
|
132
|
-
handle String? // ActivityPub handle (e.g., "@user@
|
|
176
|
+
actorUri String? @unique @map("actor_uri") // ActivityPub actor URI (e.g., "https://example.com/users/{username}")
|
|
177
|
+
handle String? // ActivityPub handle (e.g., "@user@example.com")
|
|
133
178
|
createdAt DateTime @default(now()) @map("created_at")
|
|
134
179
|
|
|
135
180
|
// Cognito Auth integration
|
|
@@ -179,6 +224,14 @@ model User {
|
|
|
179
224
|
// FUTURE USE: Respect user preference when sending analytics events
|
|
180
225
|
analyticsOptOut Boolean @default(false) @map("analytics_opt_out")
|
|
181
226
|
|
|
227
|
+
// Surveillance-hardening Phase 0 (E2): signup-metadata capture (P3 wires it).
|
|
228
|
+
// signupMethod records how the account was created; invitationId links the
|
|
229
|
+
// redeemed invitation. Client signals (IP/UA) go to SecurityEvent (retention-
|
|
230
|
+
// bound), NEVER as columns here — see 07-data-minimization.md. Both nullable:
|
|
231
|
+
// existing accounts stay NULL (unknown), no fabricated backfill.
|
|
232
|
+
signupMethod SignupMethod? @map("signup_method")
|
|
233
|
+
invitationId String? @map("invitation_id")
|
|
234
|
+
|
|
182
235
|
// Verification Status (synced from Cognito)
|
|
183
236
|
emailVerified Boolean @default(false) @map("email_verified")
|
|
184
237
|
emailVerifiedAt DateTime? @map("email_verified_at")
|
|
@@ -194,19 +247,19 @@ model User {
|
|
|
194
247
|
identityVerificationProvider String? @map("identity_verification_provider") // 'jumio', 'onfido', 'veriff', 'manual'
|
|
195
248
|
showIdentityVerifiedBadge Boolean @default(true) @map("show_identity_verified_badge")
|
|
196
249
|
|
|
197
|
-
// PREPARATORY CHANGE: Region tracking for
|
|
250
|
+
// PREPARATORY CHANGE: Region tracking for multi-region support
|
|
198
251
|
// region: User's detected region (where they're located)
|
|
199
252
|
// dataRegion: Where user's data is stored (for compliance)
|
|
200
|
-
// FUTURE USE: When
|
|
253
|
+
// FUTURE USE: When CN-region support is enabled, dataRegion will be used
|
|
201
254
|
// to route data to the correct regional database
|
|
202
255
|
region String @default("EU") @map("region") // User's region (US, EU, CN)
|
|
203
256
|
dataRegion String? @map("data_region") // Where data is stored (for compliance)
|
|
204
257
|
|
|
205
|
-
posts
|
|
206
|
-
securityEvents
|
|
207
|
-
createdInvitations
|
|
208
|
-
usedInvitations
|
|
209
|
-
|
|
258
|
+
posts Post[]
|
|
259
|
+
securityEvents SecurityEvent[]
|
|
260
|
+
createdInvitations Invitation[] @relation("CreatedInvitations")
|
|
261
|
+
usedInvitations Invitation[] @relation("UsedInvitations")
|
|
262
|
+
consents Consent[]
|
|
210
263
|
|
|
211
264
|
// Circle configuration and read state
|
|
212
265
|
circleConfig CircleConfig?
|
|
@@ -226,8 +279,14 @@ model User {
|
|
|
226
279
|
createdAudiences CustomAudience[] @relation("AudienceCreator")
|
|
227
280
|
audienceMemberships CustomAudienceMember[] @relation("AudienceMembers")
|
|
228
281
|
|
|
229
|
-
//
|
|
230
|
-
|
|
282
|
+
// Surveillance-hardening Phase 0: behavioral-event actor side (E1, P2) and
|
|
283
|
+
// generalized reports filed BY this user (E3, P4). Both cascade on delete.
|
|
284
|
+
interactionEvents InteractionEvent[] @relation("InteractionActor")
|
|
285
|
+
filedReports Report[] @relation("ReportReporter")
|
|
286
|
+
|
|
287
|
+
// Surveillance-hardening Phase 0 (E2): the invitation this user redeemed at
|
|
288
|
+
// signup, if any. Distinct from createdInvitations / usedInvitations.
|
|
289
|
+
signupInvitation Invitation? @relation("SignupInvitation", fields: [invitationId], references: [id])
|
|
231
290
|
|
|
232
291
|
// ActivityPub protocol fields
|
|
233
292
|
inboxUrl String? @map("inbox_url") // ActivityPub inbox endpoint
|
|
@@ -270,6 +329,14 @@ model User {
|
|
|
270
329
|
dateOfBirth DateTime? @map("date_of_birth")
|
|
271
330
|
ageTier AgeTier @default(ADULT) @map("age_tier")
|
|
272
331
|
|
|
332
|
+
// Fail-CLOSED age signal for research/cohort inclusion. Distinct from
|
|
333
|
+
// `ageTier` (which fails OPEN at ADULT — a deliberate, accepted product-side
|
|
334
|
+
// minor-safety choice, see PSEUDONYM.md / RESEARCH-AGE-SIGNAL note). Any
|
|
335
|
+
// future research or cohort query MUST gate on `ageVerified = true`. `ageTier`
|
|
336
|
+
// is NEVER an includability signal: an unverified user defaults to ADULT and
|
|
337
|
+
// would otherwise leak into adult cohorts.
|
|
338
|
+
ageVerified Boolean @default(false) @map("age_verified")
|
|
339
|
+
|
|
273
340
|
// Parental links
|
|
274
341
|
parentalLinks ParentalLink[] @relation("ChildParentalLinks")
|
|
275
342
|
guardianLinks ParentalLink[] @relation("GuardianParentalLinks")
|
|
@@ -313,6 +380,7 @@ model User {
|
|
|
313
380
|
@@index([anonymousId]) // Index for anonymous ID lookups
|
|
314
381
|
@@index([cognitoSub]) // Index for Cognito sub lookups
|
|
315
382
|
@@index([personalTenantId])
|
|
383
|
+
@@index([invitationId]) // Phase 0 (E2): invitation-chain traversal, Phase 2 detection only
|
|
316
384
|
@@map("users")
|
|
317
385
|
}
|
|
318
386
|
|
|
@@ -361,28 +429,70 @@ model UserEncryptionKey {
|
|
|
361
429
|
@@map("user_encryption_keys")
|
|
362
430
|
}
|
|
363
431
|
|
|
364
|
-
//
|
|
365
|
-
//
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
432
|
+
// Purpose discriminator for the unified Consent model.
|
|
433
|
+
// CROSS_REGION — GDPR cross-region data-access consent (sets
|
|
434
|
+
// dataRegion/accessRegion; studyId is NULL).
|
|
435
|
+
// RESEARCH_OBSERVATION — opt-in to observational research (no per-study
|
|
436
|
+
// intervention; studyId set).
|
|
437
|
+
// RESEARCH_PARTICIPATION — opt-in to active study participation (studyId set).
|
|
438
|
+
enum ConsentPurpose {
|
|
439
|
+
CROSS_REGION
|
|
440
|
+
RESEARCH_OBSERVATION
|
|
441
|
+
RESEARCH_PARTICIPATION
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
// Purpose-tagged consent (generalised from the old CrossRegionConsent).
|
|
445
|
+
//
|
|
446
|
+
// CONSENT-HISTORY DESIGN — APPEND-ONLY (GDPR Art.7(1)/(3), IRB audit):
|
|
447
|
+
// Each grant or withdrawal is a NEW row. A grant/withdraw never mutates an
|
|
448
|
+
// earlier row, so the original `consentedAt` of every grant is preserved
|
|
449
|
+
// forever and the full lifecycle is reconstructable. The CURRENT state for a
|
|
450
|
+
// (user, purpose, key) is the single row with `active = true`; superseding a
|
|
451
|
+
// row sets `active = false` + `supersededAt = now()`. `withdrawnAt` records
|
|
452
|
+
// when consent was withdrawn ON the row that recorded it (a withdrawal row
|
|
453
|
+
// carries consented=false + withdrawnAt set and PRESERVES the grant's
|
|
454
|
+
// consentedAt if it descends from one — never null it).
|
|
455
|
+
//
|
|
456
|
+
// Uniqueness is therefore keyed on ACTIVE rows only:
|
|
457
|
+
// - research rows (studyId non-null): @@unique([userId, purpose, studyId]).
|
|
458
|
+
// NOTE Postgres treats NULLs as DISTINCT, so this composite does NOT
|
|
459
|
+
// constrain CROSS_REGION rows (studyId is NULL there) — by design.
|
|
460
|
+
// - CROSS_REGION rows: a RAW partial unique index in the migration:
|
|
461
|
+
// CREATE UNIQUE INDEX consent_cross_region_key
|
|
462
|
+
// ON consent (user_id, data_region, access_region)
|
|
463
|
+
// WHERE purpose = 'CROSS_REGION' AND active;
|
|
464
|
+
// This preserves the pre-existing @@unique([userId, dataRegion,
|
|
465
|
+
// accessRegion]) guarantee for the active cross-region row.
|
|
466
|
+
model Consent {
|
|
467
|
+
id String @id @default(cuid())
|
|
468
|
+
userId String @map("user_id")
|
|
469
|
+
purpose ConsentPurpose @default(CROSS_REGION)
|
|
470
|
+
// Research consents only. NULL for CROSS_REGION rows.
|
|
471
|
+
studyId String? @map("study_id")
|
|
472
|
+
// Cross-region consents only. NULL for research rows.
|
|
473
|
+
dataRegion String? @map("data_region") // Where data is stored (e.g., "EU")
|
|
474
|
+
accessRegion String? @map("access_region") // Region user is accessing from (e.g., "US")
|
|
475
|
+
consented Boolean @default(false)
|
|
476
|
+
consentedAt DateTime? @map("consented_at")
|
|
477
|
+
withdrawnAt DateTime? @map("withdrawn_at")
|
|
478
|
+
ipAddress String? @map("ip_address")
|
|
479
|
+
userAgent String? @map("user_agent")
|
|
480
|
+
// Append-only history discriminators.
|
|
481
|
+
active Boolean @default(true)
|
|
482
|
+
supersededAt DateTime? @map("superseded_at")
|
|
483
|
+
createdAt DateTime @default(now()) @map("created_at")
|
|
484
|
+
updatedAt DateTime @updatedAt @map("updated_at")
|
|
378
485
|
|
|
379
486
|
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
380
487
|
|
|
381
|
-
|
|
488
|
+
// Research-row uniqueness (studyId non-null). Does NOT cover CROSS_REGION
|
|
489
|
+
// rows — those are constrained by the raw partial index in the migration.
|
|
490
|
+
@@unique([userId, purpose, studyId])
|
|
382
491
|
@@index([userId])
|
|
383
492
|
@@index([consented])
|
|
384
493
|
@@index([dataRegion, accessRegion])
|
|
385
|
-
@@
|
|
494
|
+
@@index([userId, purpose, active])
|
|
495
|
+
@@map("consent")
|
|
386
496
|
}
|
|
387
497
|
|
|
388
498
|
// Posting radius — how far content radiates on the author's social graph
|
|
@@ -430,15 +540,15 @@ model Post {
|
|
|
430
540
|
taxonomyTags PostTaxonomyTag[]
|
|
431
541
|
linkChecks LinkCheck[]
|
|
432
542
|
|
|
433
|
-
// PREPARATORY CHANGE: Region tracking for
|
|
543
|
+
// PREPARATORY CHANGE: Region tracking for multi-region support
|
|
434
544
|
// dataRegion: Where post data is stored (for compliance)
|
|
435
|
-
// FUTURE USE: When
|
|
545
|
+
// FUTURE USE: When CN-region support is enabled, dataRegion will be used
|
|
436
546
|
// to route data to the correct regional database
|
|
437
547
|
dataRegion String? @map("data_region") // Where post data is stored (for compliance)
|
|
438
548
|
|
|
439
549
|
// ActivityPub fields (nullable for backward compatibility)
|
|
440
|
-
activityId String? @unique @map("activity_id") // Activity URI (e.g., "https://
|
|
441
|
-
objectId String? @unique @map("object_id") // Note object URI (e.g., "https://
|
|
550
|
+
activityId String? @unique @map("activity_id") // Activity URI (e.g., "https://example.com/posts/{id}/activity")
|
|
551
|
+
objectId String? @unique @map("object_id") // Note object URI (e.g., "https://example.com/posts/{id}")
|
|
442
552
|
to Json? // Audience targeting (array of URIs)
|
|
443
553
|
cc Json? // Additional audience
|
|
444
554
|
bto Json? // Blind recipients (for private posts)
|
|
@@ -574,16 +684,20 @@ model UploadSession {
|
|
|
574
684
|
|
|
575
685
|
// Post media
|
|
576
686
|
model PostMedia {
|
|
577
|
-
id
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
687
|
+
id String @id @default(cuid())
|
|
688
|
+
// Multi-tenancy — denormalized from the owning post; same scope.
|
|
689
|
+
tenantId String @map("tenant_id")
|
|
690
|
+
postId String @map("post_id")
|
|
691
|
+
mediaId String @map("media_id")
|
|
692
|
+
alt String?
|
|
693
|
+
order Int @default(0)
|
|
694
|
+
|
|
695
|
+
post Post @relation(fields: [postId], references: [id], onDelete: Cascade)
|
|
696
|
+
media MediaFile @relation(fields: [mediaId], references: [id], onDelete: Restrict)
|
|
697
|
+
tenant Tenant @relation(fields: [tenantId], references: [id], onDelete: Cascade)
|
|
585
698
|
|
|
586
699
|
@@unique([postId, mediaId])
|
|
700
|
+
@@index([tenantId])
|
|
587
701
|
@@index([postId])
|
|
588
702
|
@@index([mediaId])
|
|
589
703
|
@@map("post_media")
|
|
@@ -592,13 +706,16 @@ model PostMedia {
|
|
|
592
706
|
// Post sentiment reactions
|
|
593
707
|
model PostSentiment {
|
|
594
708
|
id String @id @default(cuid())
|
|
709
|
+
// Multi-tenancy — denormalized from the owning post; same scope.
|
|
710
|
+
tenantId String @map("tenant_id")
|
|
595
711
|
postId String @map("post_id")
|
|
596
712
|
postUri String? @map("post_uri")
|
|
597
713
|
authorId String @map("author_id")
|
|
598
714
|
sentiment String
|
|
599
715
|
createdAt DateTime @default(now()) @map("created_at")
|
|
600
716
|
|
|
601
|
-
post
|
|
717
|
+
post Post @relation(fields: [postId], references: [id], onDelete: Cascade)
|
|
718
|
+
tenant Tenant @relation(fields: [tenantId], references: [id], onDelete: Cascade)
|
|
602
719
|
|
|
603
720
|
@@unique([postId, authorId])
|
|
604
721
|
@@unique([postUri, authorId])
|
|
@@ -609,6 +726,7 @@ model PostSentiment {
|
|
|
609
726
|
@@index([postId, createdAt]) // For time-based sentiment queries
|
|
610
727
|
@@index([postId, sentiment, createdAt(sort: Desc)], name: "idx_post_sentiment_summary") // For window function query (top 3 users per sentiment)
|
|
611
728
|
@@index([postId, sentiment, createdAt(sort: Desc), id(sort: Desc)], name: "idx_post_sentiment_pagination") // For cursor-based pagination
|
|
729
|
+
@@index([tenantId])
|
|
612
730
|
@@map("post_sentiments")
|
|
613
731
|
}
|
|
614
732
|
|
|
@@ -747,11 +865,13 @@ model SecurityEvent {
|
|
|
747
865
|
details String // JSON string
|
|
748
866
|
timestamp DateTime @default(now())
|
|
749
867
|
|
|
750
|
-
//
|
|
751
|
-
//
|
|
752
|
-
//
|
|
753
|
-
//
|
|
754
|
-
|
|
868
|
+
// Retention bound — NON-NULLABLE (Surveillance-hardening Phase 0, P1). A NULL
|
|
869
|
+
// row escapes the hourly-cron pruning forever: exactly the unbounded client-
|
|
870
|
+
// metadata log the threat model forbids (07-data-minimization.md), and P3
|
|
871
|
+
// writes IP/UA `signup` rows into this table. The hourly cron deletes events
|
|
872
|
+
// where retention_until < NOW(). Retention by severity: critical=365d,
|
|
873
|
+
// high=90d, medium=30d, low=7d (see security-monitor.calculateRetentionUntil).
|
|
874
|
+
retentionUntil DateTime @map("retention_until")
|
|
755
875
|
|
|
756
876
|
user User? @relation(fields: [userId], references: [id])
|
|
757
877
|
|
|
@@ -765,18 +885,68 @@ model SecurityEvent {
|
|
|
765
885
|
@@map("security_events")
|
|
766
886
|
}
|
|
767
887
|
|
|
768
|
-
//
|
|
888
|
+
// AuditEvent model (phase 1.C.2)
|
|
889
|
+
//
|
|
890
|
+
// Backing store for `@de-otio/saas-foundation/audit` via
|
|
891
|
+
// `PostgresAuditStore` (the `auditEvent.create` shape). Column names
|
|
892
|
+
// and nullability mirror foundation's `PrismaAuditClient` contract
|
|
893
|
+
// EXACTLY — see foundation `src/audit/prisma.ts`. The frozen
|
|
894
|
+
// `AuditEvent` type owns this shape; changes require the frozen-type
|
|
895
|
+
// RFC process.
|
|
896
|
+
//
|
|
897
|
+
// Append-only posture: foundation's PostgresAuditStore performs INSERT
|
|
898
|
+
// only. A separate sweeper deletes rows where `retention_until < now()`.
|
|
899
|
+
// `id` is a foundation-minted ulid (NOT a Prisma cuid default).
|
|
900
|
+
model AuditEvent {
|
|
901
|
+
id String @id
|
|
902
|
+
timestamp DateTime
|
|
903
|
+
tenantId String? @map("tenant_id")
|
|
904
|
+
actorKind String @map("actor_kind")
|
|
905
|
+
actorId String @map("actor_id")
|
|
906
|
+
action String
|
|
907
|
+
resourceKind String? @map("resource_kind")
|
|
908
|
+
resourceId String? @map("resource_id")
|
|
909
|
+
outcome String
|
|
910
|
+
failureReason String? @map("failure_reason")
|
|
911
|
+
severity String
|
|
912
|
+
requestId String? @map("request_id")
|
|
913
|
+
traceId String? @map("trace_id")
|
|
914
|
+
ipAddress String? @map("ip_address")
|
|
915
|
+
userAgent String? @map("user_agent")
|
|
916
|
+
metadata Json?
|
|
917
|
+
retentionUntil DateTime @map("retention_until")
|
|
918
|
+
|
|
919
|
+
@@index([tenantId])
|
|
920
|
+
@@index([timestamp])
|
|
921
|
+
@@index([action])
|
|
922
|
+
@@index([retentionUntil]) // sweeper: DELETE WHERE retention_until < now()
|
|
923
|
+
@@map("audit_event")
|
|
924
|
+
}
|
|
925
|
+
|
|
926
|
+
// Feature Toggle model — global or per-tenant (Surveillance-hardening Phase 0,
|
|
927
|
+
// E4). tenantId NULL = global row; a non-NULL row overrides the global for that
|
|
928
|
+
// tenant. Resolution (tenant → global → coded default) is P5.
|
|
929
|
+
//
|
|
930
|
+
// Uniqueness: `@@unique([key, tenantId])` lets each tenant hold one row per key.
|
|
931
|
+
// Postgres treats NULLs as DISTINCT, so that constraint alone would permit
|
|
932
|
+
// DUPLICATE global rows for the same key — the migration adds a PARTIAL unique
|
|
933
|
+
// index `feature_toggles_key_global ON (key) WHERE tenant_id IS NULL` to forbid
|
|
934
|
+
// it. That partial index is NOT expressible in schema.prisma; it lives only in
|
|
935
|
+
// the migration SQL. Do not let a later `prisma migrate dev` treat it as drift.
|
|
769
936
|
model FeatureToggle {
|
|
770
937
|
id String @id @default(cuid())
|
|
771
|
-
key String
|
|
938
|
+
key String // e.g., "global_public_posting_enabled"
|
|
772
939
|
enabled Boolean @default(false)
|
|
773
940
|
description String? // Human-readable description
|
|
941
|
+
tenantId String? @map("tenant_id") // NULL = global; non-NULL = per-tenant override
|
|
774
942
|
changedBy String? @map("changed_by") // Email of user who last changed it
|
|
775
|
-
|
|
943
|
+
changedAt DateTime @default(now()) @updatedAt @map("last_changed")
|
|
776
944
|
createdAt DateTime @default(now()) @map("created_at")
|
|
777
945
|
|
|
946
|
+
@@unique([key, tenantId])
|
|
778
947
|
@@index([key])
|
|
779
948
|
@@index([enabled])
|
|
949
|
+
@@index([tenantId])
|
|
780
950
|
@@map("feature_toggles")
|
|
781
951
|
}
|
|
782
952
|
|
|
@@ -797,6 +967,9 @@ model Invitation {
|
|
|
797
967
|
creator User? @relation("CreatedInvitations", fields: [createdBy], references: [id])
|
|
798
968
|
user User? @relation("UsedInvitations", fields: [usedBy], references: [id])
|
|
799
969
|
|
|
970
|
+
// Phase 0 (E2): accounts that recorded this invitation as their signup origin.
|
|
971
|
+
signupUsers User[] @relation("SignupInvitation")
|
|
972
|
+
|
|
800
973
|
@@index([code])
|
|
801
974
|
@@index([createdBy])
|
|
802
975
|
@@index([createdBy, createdAt]) // Composite index for efficient listing queries (filter by createdBy, order by createdAt)
|
|
@@ -930,15 +1103,23 @@ model EntityTaxonomyTag {
|
|
|
930
1103
|
}
|
|
931
1104
|
|
|
932
1105
|
// Junction table for product-taxonomy tag relationships
|
|
1106
|
+
// Tags a tenant's Shopify product (an external `productId` string — there is
|
|
1107
|
+
// no local `Product` table) with internal taxonomy taxa. This is tenant-owned
|
|
1108
|
+
// data, so it carries its own tenant_id for direct RLS. (Without it,
|
|
1109
|
+
// `findMany({ where: { productId } })` leaks tags across tenants that happen to
|
|
1110
|
+
// reference the same Shopify product id.)
|
|
933
1111
|
model ProductTaxonomyTag {
|
|
934
1112
|
id String @id @default(cuid())
|
|
1113
|
+
tenantId String @map("tenant_id")
|
|
935
1114
|
productId String @map("product_id")
|
|
936
1115
|
taxonId String @map("taxon_id")
|
|
937
1116
|
createdAt DateTime @default(now()) @map("created_at")
|
|
938
1117
|
|
|
939
|
-
taxon
|
|
1118
|
+
taxon TaxonomyTaxon @relation(fields: [taxonId], references: [id], onDelete: Cascade)
|
|
1119
|
+
tenant Tenant @relation(fields: [tenantId], references: [id], onDelete: Cascade)
|
|
940
1120
|
|
|
941
1121
|
@@unique([productId, taxonId])
|
|
1122
|
+
@@index([tenantId])
|
|
942
1123
|
@@index([productId])
|
|
943
1124
|
@@index([taxonId])
|
|
944
1125
|
@@map("product_taxonomy_tags")
|
|
@@ -1167,7 +1348,7 @@ model CustomAudience {
|
|
|
1167
1348
|
id String @id @default(cuid())
|
|
1168
1349
|
name String
|
|
1169
1350
|
creatorId String @map("creator_id") // Creator's user ID
|
|
1170
|
-
collectionId String @unique @map("collection_id") // Collection URI (e.g., "https://
|
|
1351
|
+
collectionId String @unique @map("collection_id") // Collection URI (e.g., "https://example.com/audiences/{id}")
|
|
1171
1352
|
createdAt DateTime @default(now()) @map("created_at")
|
|
1172
1353
|
updatedAt DateTime @updatedAt @map("updated_at")
|
|
1173
1354
|
|
|
@@ -1220,6 +1401,9 @@ model DomainReputation {
|
|
|
1220
1401
|
// Link check results (for posts/comments)
|
|
1221
1402
|
model LinkCheck {
|
|
1222
1403
|
id String @id @default(cuid())
|
|
1404
|
+
// Multi-tenancy — denormalized from the owning post/comment (both are
|
|
1405
|
+
// tenant-scoped); required so geo/link rows are directly RLS-able.
|
|
1406
|
+
tenantId String @map("tenant_id")
|
|
1223
1407
|
postId String? @map("post_id") // Nullable for comments
|
|
1224
1408
|
commentId String? @map("comment_id") // Nullable for posts
|
|
1225
1409
|
originalUrl String @map("original_url")
|
|
@@ -1236,7 +1420,9 @@ model LinkCheck {
|
|
|
1236
1420
|
post Post? @relation(fields: [postId], references: [id], onDelete: Cascade)
|
|
1237
1421
|
comment PostComment? @relation(fields: [commentId], references: [id], onDelete: Cascade)
|
|
1238
1422
|
domainReputation DomainReputation @relation(fields: [domain], references: [domain])
|
|
1423
|
+
tenant Tenant @relation(fields: [tenantId], references: [id], onDelete: Cascade)
|
|
1239
1424
|
|
|
1425
|
+
@@index([tenantId])
|
|
1240
1426
|
@@index([postId])
|
|
1241
1427
|
@@index([commentId])
|
|
1242
1428
|
@@index([domain])
|
|
@@ -1244,22 +1430,94 @@ model LinkCheck {
|
|
|
1244
1430
|
@@map("link_checks")
|
|
1245
1431
|
}
|
|
1246
1432
|
|
|
1247
|
-
//
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1433
|
+
// LinkReport was folded into the generalized `Report` model (Surveillance-
|
|
1434
|
+
// hardening Phase 0, P4): reportType=LINK, resourceType="url", resourceId=url,
|
|
1435
|
+
// reporterUserId=userId, plus the indexed `domain` column. The link_reports
|
|
1436
|
+
// table is dropped in the P4 migration.
|
|
1437
|
+
|
|
1438
|
+
// ============================================================================
|
|
1439
|
+
// Surveillance-hardening Phase 0 (doc/02-technical/surveillance-threat-model/)
|
|
1440
|
+
// ============================================================================
|
|
1441
|
+
|
|
1442
|
+
// E1 — Append-only behavioral event log. Preserves the TEMPORAL signal that
|
|
1443
|
+
// `Relationship.signals` aggregate counters destroy, bounded to a rolling
|
|
1444
|
+
// retention window. P2 writes the rows (dual-write alongside aggregation);
|
|
1445
|
+
// Phase 0 ships ZERO read paths — any future read is restricted to the Phase 2
|
|
1446
|
+
// detection path + moderator surfaces (MODERATOR/SUPER_ADMIN, audited).
|
|
1447
|
+
//
|
|
1448
|
+
// Data-minimization invariants (security review blocks on these):
|
|
1449
|
+
// - NO free-text/content column — event type + references only. The table
|
|
1450
|
+
// must be useless as a content archive.
|
|
1451
|
+
// - `expiresAt` is NON-NULLABLE: no schema path to an unbounded behavioral
|
|
1452
|
+
// log. P2 sets it to createdAt + retentionDays (config).
|
|
1453
|
+
// - `targetId` has no FK (polymorphic; the target may be a deleted user) —
|
|
1454
|
+
// so cascade can't reach rows ABOUT a deleted user. P2 adds the explicit
|
|
1455
|
+
// deleteMany to user-data-deletion.ts (GDPR Art. 17).
|
|
1456
|
+
model InteractionEvent {
|
|
1457
|
+
id String @id @default(cuid())
|
|
1458
|
+
actorUserId String @map("actor_user_id")
|
|
1459
|
+
|
|
1460
|
+
// Polymorphic target, no FK (matches Relationship's convention). Vocabulary:
|
|
1461
|
+
// "user" | "entity" | "post" — the GraphNodeType strings P2 dual-writes from.
|
|
1462
|
+
targetType String @map("target_type")
|
|
1463
|
+
targetId String @map("target_id")
|
|
1464
|
+
|
|
1465
|
+
// Interaction vocabulary — exactly InteractionCounts in graph/postgres/
|
|
1466
|
+
// scoring.ts: view | react | comment | share | depth_mode | profile_visit |
|
|
1467
|
+
// content_creation. A string, not an enum, to track that vocabulary cheaply.
|
|
1468
|
+
interactionType String @map("interaction_type")
|
|
1469
|
+
|
|
1470
|
+
tenantId String? @map("tenant_id")
|
|
1255
1471
|
createdAt DateTime @default(now()) @map("created_at")
|
|
1256
1472
|
|
|
1257
|
-
|
|
1473
|
+
// Retention bound — NON-NULLABLE. Append-only: no updatedAt, no update path.
|
|
1474
|
+
expiresAt DateTime @map("expires_at")
|
|
1258
1475
|
|
|
1476
|
+
actor User @relation("InteractionActor", fields: [actorUserId], references: [id], onDelete: Cascade)
|
|
1477
|
+
|
|
1478
|
+
@@index([actorUserId, createdAt])
|
|
1479
|
+
@@index([targetType, targetId, createdAt])
|
|
1480
|
+
@@index([expiresAt]) // pruning: DELETE WHERE expires_at < now()
|
|
1481
|
+
@@map("interaction_events")
|
|
1482
|
+
}
|
|
1483
|
+
|
|
1484
|
+
// E3 — Generalized report model. Folds in LinkReport (P4) and makes Phase 1
|
|
1485
|
+
// account reporting "add a reportType", not a new subsystem. Queue fields
|
|
1486
|
+
// (assignee/resolution) exist now but are unused until Phase 1.
|
|
1487
|
+
//
|
|
1488
|
+
// Erasure:
|
|
1489
|
+
// - `reporterUserId` cascades (a deleted reporter's reports go with them —
|
|
1490
|
+
// matches the old LinkReport behavior).
|
|
1491
|
+
// - `resourceId` is an OPAQUE string, no FK: an ACCOUNT report's reported
|
|
1492
|
+
// user may be deleted. P4 pseudonymizes resourceId on erasure of the
|
|
1493
|
+
// reported user (aggregate pattern analysis survives; plaintext ID does
|
|
1494
|
+
// not — "pattern analysis" is not an Art. 17(3) exemption).
|
|
1495
|
+
// - `assigneeUserId` is a plain string (no FK): a deleted moderator must not
|
|
1496
|
+
// cascade-delete the reports they were assigned.
|
|
1497
|
+
model Report {
|
|
1498
|
+
id String @id @default(cuid())
|
|
1499
|
+
reportType ReportType @map("report_type")
|
|
1500
|
+
resourceType String @map("resource_type") // "url" (LINK) | "user" (ACCOUNT)
|
|
1501
|
+
resourceId String @map("resource_id") // opaque; no FK by design
|
|
1502
|
+
reporterUserId String @map("reporter_user_id")
|
|
1503
|
+
reason String? // free-text; P4 enforces a 1000-char Zod bound at the boundary
|
|
1504
|
+
status String @default("pending") // pending | reviewed | resolved
|
|
1505
|
+
// LINK-report registrable domain (P4 fold-in of LinkReport). Indexed +
|
|
1506
|
+
// queried hot by DomainReputationService (auto-block threshold counts by
|
|
1507
|
+
// domain). Nullable: ACCOUNT reports have no domain.
|
|
1508
|
+
domain String?
|
|
1509
|
+
assigneeUserId String? @map("assignee_user_id") // Phase 1 moderator queue
|
|
1510
|
+
resolvedAt DateTime? @map("resolved_at")
|
|
1511
|
+
resolution String? // Phase 1 moderator queue
|
|
1512
|
+
createdAt DateTime @default(now()) @map("created_at")
|
|
1513
|
+
|
|
1514
|
+
reporter User @relation("ReportReporter", fields: [reporterUserId], references: [id], onDelete: Cascade)
|
|
1515
|
+
|
|
1516
|
+
@@index([reportType, status])
|
|
1517
|
+
@@index([resourceType, resourceId])
|
|
1518
|
+
@@index([reporterUserId])
|
|
1259
1519
|
@@index([domain])
|
|
1260
|
-
@@
|
|
1261
|
-
@@index([userId])
|
|
1262
|
-
@@map("link_reports")
|
|
1520
|
+
@@map("reports")
|
|
1263
1521
|
}
|
|
1264
1522
|
|
|
1265
1523
|
// ============================================================================
|
|
@@ -1485,6 +1743,14 @@ model Tenant {
|
|
|
1485
1743
|
connectionCodeRedemptions ConnectionCodeRedemption[]
|
|
1486
1744
|
notifications Notification[]
|
|
1487
1745
|
|
|
1746
|
+
// Denormalized tenant_id on by-relation children (P1 — for direct RLS).
|
|
1747
|
+
postMedia PostMedia[]
|
|
1748
|
+
postSentiments PostSentiment[]
|
|
1749
|
+
linkChecks LinkCheck[]
|
|
1750
|
+
postGeoIndexes PostGeoIndex[]
|
|
1751
|
+
productTaxonomyTags ProductTaxonomyTag[]
|
|
1752
|
+
entityLocations EntityLocation[]
|
|
1753
|
+
|
|
1488
1754
|
// Personal-tenant owner back-relation (uses @relation name to disambiguate)
|
|
1489
1755
|
personalOwner User? @relation("PersonalTenantOwner", fields: [personalOwnerUserId], references: [id])
|
|
1490
1756
|
|
|
@@ -1656,3 +1922,88 @@ model TenantInvitation {
|
|
|
1656
1922
|
@@index([expiresAt])
|
|
1657
1923
|
@@map("tenant_invitations")
|
|
1658
1924
|
}
|
|
1925
|
+
|
|
1926
|
+
// ============================================================================
|
|
1927
|
+
// Graph edges in Postgres (graph-db revisit 2026-06: see
|
|
1928
|
+
// plans/redesign/graph-backend-contract.md)
|
|
1929
|
+
//
|
|
1930
|
+
// These two tables hold the edges that previously lived only in the graph DB
|
|
1931
|
+
// (RELATES_TO and typed entity-to-entity edges). OWNS (entity_ownerships) and
|
|
1932
|
+
// ABOUT (post_subjects) already existed in Postgres. Modeled as standalone
|
|
1933
|
+
// tables (no Prisma @relation) so the migration is self-contained and
|
|
1934
|
+
// non-breaking; targetId is polymorphic (user|entity) so it cannot carry a
|
|
1935
|
+
// single FK. Cascade-on-delete is enforced in app code by the GraphService
|
|
1936
|
+
// remove* methods, exactly as the graph layer did. Read by the Postgres
|
|
1937
|
+
// GraphService adapter (apps/api/src/lib/graph/postgres/).
|
|
1938
|
+
// ============================================================================
|
|
1939
|
+
|
|
1940
|
+
// RELATES_TO — a scored relationship from a user to a target (user or entity).
|
|
1941
|
+
model Relationship {
|
|
1942
|
+
id String @id @default(cuid())
|
|
1943
|
+
tenantId String @map("tenant_id") // denormalized scope, like entity_ownerships
|
|
1944
|
+
userId String @map("user_id")
|
|
1945
|
+
|
|
1946
|
+
// Polymorphic target: "user" | "entity" (matches GraphNodeType). No FK.
|
|
1947
|
+
targetType String @map("target_type")
|
|
1948
|
+
targetId String @map("target_id")
|
|
1949
|
+
|
|
1950
|
+
computedScore Float @default(0) @map("computed_score")
|
|
1951
|
+
manualScore Float? @map("manual_score") // null = no override
|
|
1952
|
+
tier Int @default(3) // CircleTier 0..3
|
|
1953
|
+
interactionCount Int @default(0) @map("interaction_count")
|
|
1954
|
+
lastInteractionAt DateTime? @map("last_interaction_at")
|
|
1955
|
+
connectionMethod String @map("connection_method") // code|import|suggestion|discovery
|
|
1956
|
+
reciprocated Boolean @default(false)
|
|
1957
|
+
// Per-interaction-type signal breakdown used by scoring-engine.ts.
|
|
1958
|
+
// Shape finalized in Phase 1 (B5) against the scoring engine; JSON keeps the
|
|
1959
|
+
// migration stable while that lands.
|
|
1960
|
+
signals Json?
|
|
1961
|
+
|
|
1962
|
+
createdAt DateTime @default(now()) @map("created_at")
|
|
1963
|
+
updatedAt DateTime @updatedAt @map("updated_at")
|
|
1964
|
+
|
|
1965
|
+
@@unique([userId, targetType, targetId])
|
|
1966
|
+
@@index([userId]) // forward: a user's relationships
|
|
1967
|
+
@@index([targetType, targetId]) // reverse: who relates to X (FoF, recompute)
|
|
1968
|
+
@@index([targetId])
|
|
1969
|
+
@@index([userId, tier]) // circle-tier membership
|
|
1970
|
+
@@index([tenantId])
|
|
1971
|
+
@@map("relationships")
|
|
1972
|
+
}
|
|
1973
|
+
|
|
1974
|
+
// Typed, unscored entity-to-entity edge (PACK_MATE, SIBLING, …), confirmable.
|
|
1975
|
+
model EntityRelationship {
|
|
1976
|
+
id String @id @default(cuid())
|
|
1977
|
+
tenantId String @map("tenant_id")
|
|
1978
|
+
|
|
1979
|
+
entityId String @map("entity_id")
|
|
1980
|
+
relatedEntityId String @map("related_entity_id")
|
|
1981
|
+
type EntityRelationshipType
|
|
1982
|
+
status EntityRelationshipStatus @default(PENDING)
|
|
1983
|
+
proposedByUserId String @map("proposed_by_user_id")
|
|
1984
|
+
|
|
1985
|
+
since DateTime @default(now())
|
|
1986
|
+
createdAt DateTime @default(now()) @map("created_at")
|
|
1987
|
+
updatedAt DateTime @updatedAt @map("updated_at")
|
|
1988
|
+
|
|
1989
|
+
@@unique([entityId, relatedEntityId, type])
|
|
1990
|
+
@@index([entityId, type, status]) // discovery / list-by-entity
|
|
1991
|
+
@@index([relatedEntityId, type, status]) // reverse / pending-by-owner
|
|
1992
|
+
@@index([tenantId])
|
|
1993
|
+
@@map("entity_relationships")
|
|
1994
|
+
}
|
|
1995
|
+
|
|
1996
|
+
enum EntityRelationshipType {
|
|
1997
|
+
PACK_MATE
|
|
1998
|
+
SIBLING
|
|
1999
|
+
PLAYMATE
|
|
2000
|
+
PARENT
|
|
2001
|
+
OFFSPRING
|
|
2002
|
+
WALK_BUDDY
|
|
2003
|
+
}
|
|
2004
|
+
|
|
2005
|
+
enum EntityRelationshipStatus {
|
|
2006
|
+
PENDING
|
|
2007
|
+
CONFIRMED
|
|
2008
|
+
REJECTED
|
|
2009
|
+
}
|