@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
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostgresGraphService — the graph serving path backed by Postgres
|
|
3
|
+
* (joins + recursive CTEs on the existing RDS). No separate graph DB,
|
|
4
|
+
* no dual-write. See the graph-backend contract in
|
|
5
|
+
* plans/redesign/graph-backend-contract.md.
|
|
6
|
+
*
|
|
7
|
+
* The implementation is split into per-method-group modules (relationships,
|
|
8
|
+
* circles, entity-relationships, discovery, scoring, sync) so Phase 1 can be
|
|
9
|
+
* filled in concurrently without merge conflicts. This service file is the
|
|
10
|
+
* stable composition + connection/health layer written in Phase 0; it should
|
|
11
|
+
* not need editing as the groups land.
|
|
12
|
+
*/
|
|
13
|
+
import type { PrismaClient } from "@prisma/client";
|
|
14
|
+
import type { GraphConnection, GraphService } from "../graph-service.js";
|
|
15
|
+
import type { EntityGeoLookup } from "../../geo/entity-geo-repository.js";
|
|
16
|
+
import type { CircleTier, CreateEntityRelationshipInput, CreateRelationshipInput, DiscoveryFilters, EntityRelationshipStatus, GraphConnectionConfig, GraphHealthStatus, GraphNodeType, NearbyFilters, PaginationInput, RecordInteractionInput, SyncEntityInput, SyncOwnershipInput, SyncPostInput, SyncPostSubjectsInput, SyncUserInput, UpdateRelationshipScoreInput } from "../types.js";
|
|
17
|
+
import type { InteractionEventConfig } from "./interaction-events.js";
|
|
18
|
+
export declare class PostgresGraphService implements GraphService, GraphConnection {
|
|
19
|
+
private readonly prisma;
|
|
20
|
+
private connected;
|
|
21
|
+
private readonly relationships;
|
|
22
|
+
private readonly circles;
|
|
23
|
+
private readonly entityRelationships;
|
|
24
|
+
private readonly discovery;
|
|
25
|
+
private readonly scoring;
|
|
26
|
+
private readonly sync;
|
|
27
|
+
constructor(prisma: PrismaClient, geoLookup?: EntityGeoLookup, eventConfig?: InteractionEventConfig);
|
|
28
|
+
connect(_config: GraphConnectionConfig): Promise<void>;
|
|
29
|
+
close(): Promise<void>;
|
|
30
|
+
isConnected(): boolean;
|
|
31
|
+
healthCheck(): Promise<GraphHealthStatus>;
|
|
32
|
+
createRelationship(input: CreateRelationshipInput): Promise<import("../types.js").Relationship>;
|
|
33
|
+
removeRelationship(userId: string, targetType: GraphNodeType, targetId: string): Promise<void>;
|
|
34
|
+
updateRelationshipScore(input: UpdateRelationshipScoreInput): Promise<import("../types.js").Relationship>;
|
|
35
|
+
getRelationship(userId: string, targetType: GraphNodeType, targetId: string): Promise<import("../types.js").Relationship | null>;
|
|
36
|
+
getRelationships(userId: string, options?: {
|
|
37
|
+
tier?: CircleTier;
|
|
38
|
+
targetType?: GraphNodeType;
|
|
39
|
+
pagination?: PaginationInput;
|
|
40
|
+
}): Promise<import("../types.js").PaginatedResult<import("../types.js").Relationship>>;
|
|
41
|
+
getRelationshipGraph(userId: string): Promise<import("../types.js").GraphData>;
|
|
42
|
+
getCircleMembers(userId: string, tier: CircleTier): Promise<import("../types.js").CircleMember[]>;
|
|
43
|
+
getVisiblePostIds(userId: string, tier: CircleTier, since: Date, pagination: PaginationInput): Promise<import("../types.js").PaginatedResult<import("../types.js").VisiblePostResult>>;
|
|
44
|
+
getGlanceItems(userId: string, tier: CircleTier, limit: number): Promise<import("../types.js").GlanceItem[]>;
|
|
45
|
+
getDepthPostIds(userId: string, targetType: GraphNodeType, targetId: string, since: Date, limit: number): Promise<string[]>;
|
|
46
|
+
getCircleStatus(userId: string): Promise<import("../types.js").CircleTierStatus[]>;
|
|
47
|
+
getCircleEntityStatus(userId: string, tier: CircleTier): Promise<import("../types.js").CircleEntityStatus[]>;
|
|
48
|
+
markCircleRead(userId: string, tier: CircleTier, readAt?: Date): Promise<void>;
|
|
49
|
+
createEntityRelationship(input: CreateEntityRelationshipInput): Promise<import("../types.js").EntityRelationship>;
|
|
50
|
+
confirmEntityRelationship(entityId: string, relatedEntityId: string, confirmingUserId: string): Promise<import("../types.js").EntityRelationship>;
|
|
51
|
+
rejectEntityRelationship(entityId: string, relatedEntityId: string, rejectingUserId: string): Promise<void>;
|
|
52
|
+
removeEntityRelationship(entityId: string, relatedEntityId: string, removingUserId: string): Promise<void>;
|
|
53
|
+
getEntityRelationships(entityId: string, options?: {
|
|
54
|
+
type?: string;
|
|
55
|
+
status?: EntityRelationshipStatus;
|
|
56
|
+
}): Promise<import("../types.js").EntityRelationship[]>;
|
|
57
|
+
getPendingEntityRelationships(userId: string): Promise<import("../types.js").EntityRelationship[]>;
|
|
58
|
+
discoverByGraph(userId: string, hops: number, filters?: DiscoveryFilters): Promise<import("../types.js").DiscoveryResult[]>;
|
|
59
|
+
discoverNearby(userId: string, lat: number, lng: number, radiusMeters: number, filters?: NearbyFilters): Promise<import("../types.js").DiscoveryResult[]>;
|
|
60
|
+
getRecommendations(userId: string, limit: number): Promise<import("../types.js").Recommendation[]>;
|
|
61
|
+
recordInteraction(input: RecordInteractionInput): Promise<void>;
|
|
62
|
+
recomputeScores(userId: string): Promise<import("../types.js").ScoreUpdate[]>;
|
|
63
|
+
applyDecay(userId: string): Promise<import("../types.js").ScoreUpdate[]>;
|
|
64
|
+
syncUser(input: SyncUserInput): Promise<void>;
|
|
65
|
+
removeUser(userId: string): Promise<void>;
|
|
66
|
+
syncEntity(input: SyncEntityInput): Promise<void>;
|
|
67
|
+
removeEntity(entityId: string): Promise<void>;
|
|
68
|
+
syncPost(input: SyncPostInput): Promise<void>;
|
|
69
|
+
removePost(postId: string): Promise<void>;
|
|
70
|
+
syncPostSubjects(input: SyncPostSubjectsInput): Promise<void>;
|
|
71
|
+
syncOwnership(input: SyncOwnershipInput): Promise<void>;
|
|
72
|
+
removeOwnership(entityId: string, userId: string): Promise<void>;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=postgres-graph-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-graph-service.d.ts","sourceRoot":"","sources":["../../../../src/lib/graph/postgres/postgres-graph-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { CircleOps } from "./circles.js";
|
|
2
|
+
import { DiscoveryOps } from "./discovery.js";
|
|
3
|
+
import { EntityRelationshipOps } from "./entity-relationships.js";
|
|
4
|
+
import { RelationshipOps } from "./relationships.js";
|
|
5
|
+
import { ScoringOps } from "./scoring.js";
|
|
6
|
+
import { SyncOps } from "./sync.js";
|
|
7
|
+
export class PostgresGraphService {
|
|
8
|
+
prisma;
|
|
9
|
+
connected = false;
|
|
10
|
+
relationships;
|
|
11
|
+
circles;
|
|
12
|
+
entityRelationships;
|
|
13
|
+
discovery;
|
|
14
|
+
scoring;
|
|
15
|
+
sync;
|
|
16
|
+
constructor(prisma, geoLookup,
|
|
17
|
+
// Surveillance-hardening Phase 0 (P2): InteractionEvent dual-write config,
|
|
18
|
+
// threaded from env by graph-factory. Optional — existing call sites
|
|
19
|
+
// (tests) keep the conservative defaults.
|
|
20
|
+
eventConfig) {
|
|
21
|
+
this.prisma = prisma;
|
|
22
|
+
this.relationships = new RelationshipOps(prisma);
|
|
23
|
+
this.circles = new CircleOps(prisma);
|
|
24
|
+
this.entityRelationships = new EntityRelationshipOps(prisma);
|
|
25
|
+
this.discovery = new DiscoveryOps(prisma, geoLookup);
|
|
26
|
+
this.scoring = new ScoringOps(prisma, eventConfig);
|
|
27
|
+
this.sync = new SyncOps(prisma, geoLookup);
|
|
28
|
+
}
|
|
29
|
+
// ---- Connection & health -------------------------------------------------
|
|
30
|
+
async connect(_config) {
|
|
31
|
+
await this.prisma.$queryRaw `SELECT 1`;
|
|
32
|
+
this.connected = true;
|
|
33
|
+
}
|
|
34
|
+
async close() {
|
|
35
|
+
// The Prisma client lifecycle is owned by the factory/caller (it may be
|
|
36
|
+
// shared with other repositories); closing the graph service just marks
|
|
37
|
+
// it disconnected rather than disconnecting a possibly-shared client.
|
|
38
|
+
this.connected = false;
|
|
39
|
+
}
|
|
40
|
+
isConnected() {
|
|
41
|
+
return this.connected;
|
|
42
|
+
}
|
|
43
|
+
async healthCheck() {
|
|
44
|
+
const start = Date.now();
|
|
45
|
+
try {
|
|
46
|
+
await this.prisma.$queryRaw `SELECT 1`;
|
|
47
|
+
return { healthy: true, latencyMs: Date.now() - start, backend: "postgres" };
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
return {
|
|
51
|
+
healthy: false,
|
|
52
|
+
latencyMs: Date.now() - start,
|
|
53
|
+
backend: "postgres",
|
|
54
|
+
error: error instanceof Error ? error.message : String(error),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// ---- Relationships (B1) --------------------------------------------------
|
|
59
|
+
createRelationship(input) {
|
|
60
|
+
return this.relationships.createRelationship(input);
|
|
61
|
+
}
|
|
62
|
+
removeRelationship(userId, targetType, targetId) {
|
|
63
|
+
return this.relationships.removeRelationship(userId, targetType, targetId);
|
|
64
|
+
}
|
|
65
|
+
updateRelationshipScore(input) {
|
|
66
|
+
return this.relationships.updateRelationshipScore(input);
|
|
67
|
+
}
|
|
68
|
+
getRelationship(userId, targetType, targetId) {
|
|
69
|
+
return this.relationships.getRelationship(userId, targetType, targetId);
|
|
70
|
+
}
|
|
71
|
+
getRelationships(userId, options) {
|
|
72
|
+
return this.relationships.getRelationships(userId, options);
|
|
73
|
+
}
|
|
74
|
+
getRelationshipGraph(userId) {
|
|
75
|
+
return this.relationships.getRelationshipGraph(userId);
|
|
76
|
+
}
|
|
77
|
+
// ---- Circles (B2) --------------------------------------------------------
|
|
78
|
+
getCircleMembers(userId, tier) {
|
|
79
|
+
return this.circles.getCircleMembers(userId, tier);
|
|
80
|
+
}
|
|
81
|
+
getVisiblePostIds(userId, tier, since, pagination) {
|
|
82
|
+
return this.circles.getVisiblePostIds(userId, tier, since, pagination);
|
|
83
|
+
}
|
|
84
|
+
getGlanceItems(userId, tier, limit) {
|
|
85
|
+
return this.circles.getGlanceItems(userId, tier, limit);
|
|
86
|
+
}
|
|
87
|
+
getDepthPostIds(userId, targetType, targetId, since, limit) {
|
|
88
|
+
return this.circles.getDepthPostIds(userId, targetType, targetId, since, limit);
|
|
89
|
+
}
|
|
90
|
+
getCircleStatus(userId) {
|
|
91
|
+
return this.circles.getCircleStatus(userId);
|
|
92
|
+
}
|
|
93
|
+
getCircleEntityStatus(userId, tier) {
|
|
94
|
+
return this.circles.getCircleEntityStatus(userId, tier);
|
|
95
|
+
}
|
|
96
|
+
markCircleRead(userId, tier, readAt) {
|
|
97
|
+
return this.circles.markCircleRead(userId, tier, readAt);
|
|
98
|
+
}
|
|
99
|
+
// ---- Entity relationships (B3) ------------------------------------------
|
|
100
|
+
createEntityRelationship(input) {
|
|
101
|
+
return this.entityRelationships.createEntityRelationship(input);
|
|
102
|
+
}
|
|
103
|
+
confirmEntityRelationship(entityId, relatedEntityId, confirmingUserId) {
|
|
104
|
+
return this.entityRelationships.confirmEntityRelationship(entityId, relatedEntityId, confirmingUserId);
|
|
105
|
+
}
|
|
106
|
+
rejectEntityRelationship(entityId, relatedEntityId, rejectingUserId) {
|
|
107
|
+
return this.entityRelationships.rejectEntityRelationship(entityId, relatedEntityId, rejectingUserId);
|
|
108
|
+
}
|
|
109
|
+
removeEntityRelationship(entityId, relatedEntityId, removingUserId) {
|
|
110
|
+
return this.entityRelationships.removeEntityRelationship(entityId, relatedEntityId, removingUserId);
|
|
111
|
+
}
|
|
112
|
+
getEntityRelationships(entityId, options) {
|
|
113
|
+
return this.entityRelationships.getEntityRelationships(entityId, options);
|
|
114
|
+
}
|
|
115
|
+
getPendingEntityRelationships(userId) {
|
|
116
|
+
return this.entityRelationships.getPendingEntityRelationships(userId);
|
|
117
|
+
}
|
|
118
|
+
// ---- Discovery (B4) ------------------------------------------------------
|
|
119
|
+
discoverByGraph(userId, hops, filters) {
|
|
120
|
+
return this.discovery.discoverByGraph(userId, hops, filters);
|
|
121
|
+
}
|
|
122
|
+
discoverNearby(userId, lat, lng, radiusMeters, filters) {
|
|
123
|
+
return this.discovery.discoverNearby(userId, lat, lng, radiusMeters, filters);
|
|
124
|
+
}
|
|
125
|
+
getRecommendations(userId, limit) {
|
|
126
|
+
return this.discovery.getRecommendations(userId, limit);
|
|
127
|
+
}
|
|
128
|
+
// ---- Scoring (B5) --------------------------------------------------------
|
|
129
|
+
recordInteraction(input) {
|
|
130
|
+
return this.scoring.recordInteraction(input);
|
|
131
|
+
}
|
|
132
|
+
recomputeScores(userId) {
|
|
133
|
+
return this.scoring.recomputeScores(userId);
|
|
134
|
+
}
|
|
135
|
+
applyDecay(userId) {
|
|
136
|
+
return this.scoring.applyDecay(userId);
|
|
137
|
+
}
|
|
138
|
+
// ---- Sync (B6) -----------------------------------------------------------
|
|
139
|
+
syncUser(input) {
|
|
140
|
+
return this.sync.syncUser(input);
|
|
141
|
+
}
|
|
142
|
+
removeUser(userId) {
|
|
143
|
+
return this.sync.removeUser(userId);
|
|
144
|
+
}
|
|
145
|
+
syncEntity(input) {
|
|
146
|
+
return this.sync.syncEntity(input);
|
|
147
|
+
}
|
|
148
|
+
removeEntity(entityId) {
|
|
149
|
+
return this.sync.removeEntity(entityId);
|
|
150
|
+
}
|
|
151
|
+
syncPost(input) {
|
|
152
|
+
return this.sync.syncPost(input);
|
|
153
|
+
}
|
|
154
|
+
removePost(postId) {
|
|
155
|
+
return this.sync.removePost(postId);
|
|
156
|
+
}
|
|
157
|
+
syncPostSubjects(input) {
|
|
158
|
+
return this.sync.syncPostSubjects(input);
|
|
159
|
+
}
|
|
160
|
+
syncOwnership(input) {
|
|
161
|
+
return this.sync.syncOwnership(input);
|
|
162
|
+
}
|
|
163
|
+
removeOwnership(entityId, userId) {
|
|
164
|
+
return this.sync.removeOwnership(entityId, userId);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=postgres-graph-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-graph-service.js","sourceRoot":"","sources":["../../../../src/lib/graph/postgres/postgres-graph-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RELATES_TO edge operations on Postgres (`relationships` table).
|
|
3
|
+
*
|
|
4
|
+
* Phase 1 · B1. PORT from neo4j-graph-service.ts (relationship methods).
|
|
5
|
+
* Single-hop edge CRUD + per-user edge list + the visualization aggregation.
|
|
6
|
+
*/
|
|
7
|
+
import type { PrismaClient } from "@prisma/client";
|
|
8
|
+
import type { CircleTier, CreateRelationshipInput, GraphData, GraphNodeType, PaginatedResult, PaginationInput, Relationship, UpdateRelationshipScoreInput } from "../types.js";
|
|
9
|
+
export declare class RelationshipOps {
|
|
10
|
+
private readonly prisma;
|
|
11
|
+
constructor(prisma: PrismaClient);
|
|
12
|
+
/**
|
|
13
|
+
* Create a scored relationship from a user to a target (user or entity).
|
|
14
|
+
*
|
|
15
|
+
* Initial score comes from the connection method (CONNECTION_BONUSES, default
|
|
16
|
+
* 0.3 for `discovery`). For user→user targets, if the reverse edge already
|
|
17
|
+
* exists both edges are marked `reciprocated`. Idempotent like the Neo4j
|
|
18
|
+
* MERGE: a pre-existing edge is returned unchanged rather than throwing.
|
|
19
|
+
*/
|
|
20
|
+
createRelationship(input: CreateRelationshipInput): Promise<Relationship>;
|
|
21
|
+
/**
|
|
22
|
+
* Remove a relationship. If a reciprocated user→user edge is removed, the
|
|
23
|
+
* reverse edge's `reciprocated` flag is cleared. Throws GraphNotFoundError
|
|
24
|
+
* when no edge exists.
|
|
25
|
+
*/
|
|
26
|
+
removeRelationship(userId: string, targetType: GraphNodeType, targetId: string): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Set or clear the manual score override. When `manualScore` is null the
|
|
29
|
+
* computed score takes over again. The effective score / tier are derived
|
|
30
|
+
* in {@link rowToRelationship}.
|
|
31
|
+
*/
|
|
32
|
+
updateRelationshipScore(input: UpdateRelationshipScoreInput): Promise<Relationship>;
|
|
33
|
+
/** Get a specific relationship, or null if it does not exist. */
|
|
34
|
+
getRelationship(userId: string, targetType: GraphNodeType, targetId: string): Promise<Relationship | null>;
|
|
35
|
+
/**
|
|
36
|
+
* List a user's relationships, ordered by effective score descending, with
|
|
37
|
+
* optional tier / target-type filters and score-cursor pagination.
|
|
38
|
+
*
|
|
39
|
+
* Ordering and the cursor are over the EFFECTIVE score (manual override wins
|
|
40
|
+
* over computed). There is no stored effective-score column, so the ordering
|
|
41
|
+
* key is computed as `COALESCE(manual_score, computed_score)` in SQL.
|
|
42
|
+
*/
|
|
43
|
+
getRelationships(userId: string, options?: {
|
|
44
|
+
tier?: CircleTier;
|
|
45
|
+
targetType?: GraphNodeType;
|
|
46
|
+
pagination?: PaginationInput;
|
|
47
|
+
}): Promise<PaginatedResult<Relationship>>;
|
|
48
|
+
/**
|
|
49
|
+
* Build the relationship-graph visualization payload.
|
|
50
|
+
*
|
|
51
|
+
* SECURITY: raw scores are NEVER returned. Each node exposes only `tier` and
|
|
52
|
+
* a coarse `closeness` value bucketed to the nearest 10 in [0, 100]
|
|
53
|
+
* (`round(score * 10) * 10`). Recent-auth, rate-limiting, and audit-logging
|
|
54
|
+
* are enforced by the caller; the score coarsening is applied here.
|
|
55
|
+
*/
|
|
56
|
+
getRelationshipGraph(userId: string): Promise<GraphData>;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=relationships.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relationships.d.ts","sourceRoot":"","sources":["../../../../src/lib/graph/postgres/relationships.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AASnD,OAAO,KAAK,EACV,UAAU,EAEV,uBAAuB,EACvB,SAAS,EAET,aAAa,EACb,eAAe,EACf,eAAe,EACf,YAAY,EAEZ,4BAA4B,EAC7B,MAAM,aAAa,CAAC;AA0ErB,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAEjD;;;;;;;OAOG;IACG,kBAAkB,CACtB,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,YAAY,CAAC;IAoExB;;;;OAIG;IACG,kBAAkB,CACtB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAgChB;;;;OAIG;IACG,uBAAuB,CAC3B,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,YAAY,CAAC;IA8BxB,iEAAiE;IAC3D,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAQ/B;;;;;;;OAOG;IACG,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,UAAU,CAAC;QAClB,UAAU,CAAC,EAAE,aAAa,CAAC;QAC3B,UAAU,CAAC,EAAE,eAAe,CAAC;KAC9B,GACA,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IA6CzC;;;;;;;OAOG;IACG,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;CA2F/D"}
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
import { getCurrentTenantId } from "@de-otio/saas-foundation/tenant";
|
|
2
|
+
import { GraphNotFoundError } from "../errors.js";
|
|
3
|
+
import { CONNECTION_BONUSES, effectiveScore, scoreToTier, TIER_THRESHOLDS, } from "../scoring-engine.js";
|
|
4
|
+
/**
|
|
5
|
+
* Map a `relationships` row to the Relationship DTO.
|
|
6
|
+
*
|
|
7
|
+
* Mirrors neo4j-graph-service.ts `recordToRelationship`: the effective `score`
|
|
8
|
+
* is `effectiveScore(manualScore, computedScore)` and `tier` is derived from
|
|
9
|
+
* that effective score (never read from a stored column — the persisted `tier`
|
|
10
|
+
* column is advisory/denormalized only).
|
|
11
|
+
*/
|
|
12
|
+
function rowToRelationship(row) {
|
|
13
|
+
const score = effectiveScore(row.manualScore, row.computedScore);
|
|
14
|
+
return {
|
|
15
|
+
userId: row.userId,
|
|
16
|
+
targetType: row.targetType,
|
|
17
|
+
targetId: row.targetId,
|
|
18
|
+
score,
|
|
19
|
+
computedScore: row.computedScore,
|
|
20
|
+
manualScore: row.manualScore,
|
|
21
|
+
tier: scoreToTier(score),
|
|
22
|
+
interactionCount: row.interactionCount,
|
|
23
|
+
lastInteractionAt: row.lastInteractionAt,
|
|
24
|
+
connectionMethod: (row.connectionMethod ?? "discovery"),
|
|
25
|
+
reciprocated: row.reciprocated === true,
|
|
26
|
+
createdAt: row.createdAt,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const TIER_NAMES = {
|
|
30
|
+
0: "inner",
|
|
31
|
+
1: "closeFriends",
|
|
32
|
+
2: "community",
|
|
33
|
+
3: "ambient",
|
|
34
|
+
};
|
|
35
|
+
/** Encode a score-based pagination cursor (base64 JSON, matches neo4j). */
|
|
36
|
+
function encodeCursor(score) {
|
|
37
|
+
return Buffer.from(JSON.stringify({ score })).toString("base64");
|
|
38
|
+
}
|
|
39
|
+
/** Decode a score-based pagination cursor. Returns null if invalid. */
|
|
40
|
+
function decodeCursor(cursor) {
|
|
41
|
+
try {
|
|
42
|
+
const parsed = JSON.parse(Buffer.from(cursor, "base64").toString("utf8"));
|
|
43
|
+
if (parsed && typeof parsed === "object" && "score" in parsed) {
|
|
44
|
+
const score = parsed.score;
|
|
45
|
+
if (typeof score === "number")
|
|
46
|
+
return score;
|
|
47
|
+
}
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export class RelationshipOps {
|
|
55
|
+
prisma;
|
|
56
|
+
constructor(prisma) {
|
|
57
|
+
this.prisma = prisma;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Create a scored relationship from a user to a target (user or entity).
|
|
61
|
+
*
|
|
62
|
+
* Initial score comes from the connection method (CONNECTION_BONUSES, default
|
|
63
|
+
* 0.3 for `discovery`). For user→user targets, if the reverse edge already
|
|
64
|
+
* exists both edges are marked `reciprocated`. Idempotent like the Neo4j
|
|
65
|
+
* MERGE: a pre-existing edge is returned unchanged rather than throwing.
|
|
66
|
+
*/
|
|
67
|
+
async createRelationship(input) {
|
|
68
|
+
const { userId, targetType, targetId, connectionMethod = "discovery" } = input;
|
|
69
|
+
const tenantId = getCurrentTenantId();
|
|
70
|
+
if (!tenantId) {
|
|
71
|
+
throw new GraphNotFoundError(`No tenant context for relationship from user ${userId} to ${targetType} ${targetId}`);
|
|
72
|
+
}
|
|
73
|
+
// Initial score by connection method (from scoring engine constants).
|
|
74
|
+
const initialScore = CONNECTION_BONUSES[connectionMethod] ?? 0.3;
|
|
75
|
+
const created = await this.prisma.$transaction(async (tx) => {
|
|
76
|
+
// Idempotent on (userId, targetType, targetId): if the edge already
|
|
77
|
+
// exists, return it (mirrors the Neo4j MERGE ON MATCH behavior).
|
|
78
|
+
const existing = await tx.relationship.findUnique({
|
|
79
|
+
where: {
|
|
80
|
+
userId_targetType_targetId: { userId, targetType, targetId },
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
if (existing) {
|
|
84
|
+
return existing;
|
|
85
|
+
}
|
|
86
|
+
// For user→user targets, reciprocity is determined by the presence of the
|
|
87
|
+
// reverse edge (target → source).
|
|
88
|
+
let reciprocated = false;
|
|
89
|
+
if (targetType === "user") {
|
|
90
|
+
const reverse = await tx.relationship.findUnique({
|
|
91
|
+
where: {
|
|
92
|
+
userId_targetType_targetId: {
|
|
93
|
+
userId: targetId,
|
|
94
|
+
targetType: "user",
|
|
95
|
+
targetId: userId,
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
if (reverse) {
|
|
100
|
+
reciprocated = true;
|
|
101
|
+
// Mark the reverse edge reciprocated too (both edges flip).
|
|
102
|
+
await tx.relationship.update({
|
|
103
|
+
where: { id: reverse.id },
|
|
104
|
+
data: { reciprocated: true },
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return tx.relationship.create({
|
|
109
|
+
data: {
|
|
110
|
+
tenantId,
|
|
111
|
+
userId,
|
|
112
|
+
targetType,
|
|
113
|
+
targetId,
|
|
114
|
+
computedScore: initialScore,
|
|
115
|
+
manualScore: null,
|
|
116
|
+
tier: scoreToTier(initialScore),
|
|
117
|
+
interactionCount: 0,
|
|
118
|
+
lastInteractionAt: null,
|
|
119
|
+
connectionMethod,
|
|
120
|
+
reciprocated,
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
return rowToRelationship(created);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Remove a relationship. If a reciprocated user→user edge is removed, the
|
|
128
|
+
* reverse edge's `reciprocated` flag is cleared. Throws GraphNotFoundError
|
|
129
|
+
* when no edge exists.
|
|
130
|
+
*/
|
|
131
|
+
async removeRelationship(userId, targetType, targetId) {
|
|
132
|
+
const tenantId = getCurrentTenantId();
|
|
133
|
+
await this.prisma.$transaction(async (tx) => {
|
|
134
|
+
const existing = await tx.relationship.findFirst({
|
|
135
|
+
where: { userId, targetType, targetId, tenantId },
|
|
136
|
+
});
|
|
137
|
+
if (!existing) {
|
|
138
|
+
throw new GraphNotFoundError(`Relationship from user ${userId} to ${targetType} ${targetId} not found`, "relationship", `${userId}->${targetId}`);
|
|
139
|
+
}
|
|
140
|
+
// Clear the reverse reciprocated flag for user→user edges.
|
|
141
|
+
if (targetType === "user") {
|
|
142
|
+
await tx.relationship.updateMany({
|
|
143
|
+
where: {
|
|
144
|
+
userId: targetId,
|
|
145
|
+
targetType: "user",
|
|
146
|
+
targetId: userId,
|
|
147
|
+
tenantId,
|
|
148
|
+
},
|
|
149
|
+
data: { reciprocated: false },
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
await tx.relationship.delete({ where: { id: existing.id } });
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Set or clear the manual score override. When `manualScore` is null the
|
|
157
|
+
* computed score takes over again. The effective score / tier are derived
|
|
158
|
+
* in {@link rowToRelationship}.
|
|
159
|
+
*/
|
|
160
|
+
async updateRelationshipScore(input) {
|
|
161
|
+
const { userId, targetType, targetId, manualScore } = input;
|
|
162
|
+
const tenantId = getCurrentTenantId();
|
|
163
|
+
const existing = await this.prisma.relationship.findFirst({
|
|
164
|
+
where: { userId, targetType, targetId, tenantId },
|
|
165
|
+
});
|
|
166
|
+
if (!existing) {
|
|
167
|
+
throw new GraphNotFoundError(`Relationship from user ${userId} to ${targetType} ${targetId} not found`, "relationship", `${userId}->${targetId}`);
|
|
168
|
+
}
|
|
169
|
+
const newScore = effectiveScore(manualScore ?? null, existing.computedScore);
|
|
170
|
+
const updated = await this.prisma.relationship.update({
|
|
171
|
+
where: { id: existing.id },
|
|
172
|
+
data: {
|
|
173
|
+
manualScore: manualScore ?? null,
|
|
174
|
+
tier: scoreToTier(newScore),
|
|
175
|
+
},
|
|
176
|
+
});
|
|
177
|
+
return rowToRelationship(updated);
|
|
178
|
+
}
|
|
179
|
+
/** Get a specific relationship, or null if it does not exist. */
|
|
180
|
+
async getRelationship(userId, targetType, targetId) {
|
|
181
|
+
const tenantId = getCurrentTenantId();
|
|
182
|
+
const row = await this.prisma.relationship.findFirst({
|
|
183
|
+
where: { userId, targetType, targetId, tenantId },
|
|
184
|
+
});
|
|
185
|
+
return row ? rowToRelationship(row) : null;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* List a user's relationships, ordered by effective score descending, with
|
|
189
|
+
* optional tier / target-type filters and score-cursor pagination.
|
|
190
|
+
*
|
|
191
|
+
* Ordering and the cursor are over the EFFECTIVE score (manual override wins
|
|
192
|
+
* over computed). There is no stored effective-score column, so the ordering
|
|
193
|
+
* key is computed as `COALESCE(manual_score, computed_score)` in SQL.
|
|
194
|
+
*/
|
|
195
|
+
async getRelationships(userId, options) {
|
|
196
|
+
const limit = options?.pagination?.limit ?? 50;
|
|
197
|
+
const cursor = options?.pagination?.cursor ?? null;
|
|
198
|
+
const cursorScore = cursor !== null ? decodeCursor(cursor) : null;
|
|
199
|
+
const tenantId = getCurrentTenantId();
|
|
200
|
+
const where = { userId };
|
|
201
|
+
if (tenantId !== undefined)
|
|
202
|
+
where.tenantId = tenantId;
|
|
203
|
+
if (options?.targetType !== undefined)
|
|
204
|
+
where.targetType = options.targetType;
|
|
205
|
+
// The persisted `tier` column is kept in sync on writes, so a tier filter
|
|
206
|
+
// can use it directly (matches the Neo4j `r.tier = $tier` predicate).
|
|
207
|
+
if (options?.tier !== undefined)
|
|
208
|
+
where.tier = options.tier;
|
|
209
|
+
// Fetch a page ordered by effective score. Prisma cannot order/filter by a
|
|
210
|
+
// COALESCE expression, so order by (manualScore desc nulls last, computed
|
|
211
|
+
// desc) is not equivalent — instead fetch the user's edges (filtered) and
|
|
212
|
+
// sort/paginate on the computed effective score in-app. Edge counts per
|
|
213
|
+
// user are bounded (a user's circle), so this is acceptable and exact.
|
|
214
|
+
const rows = await this.prisma.relationship.findMany({ where });
|
|
215
|
+
const mapped = rows
|
|
216
|
+
.map(rowToRelationship)
|
|
217
|
+
.sort((a, b) => b.score - a.score);
|
|
218
|
+
// Score-cursor pagination: take items strictly below the cursor score.
|
|
219
|
+
const afterCursor = cursorScore !== null
|
|
220
|
+
? mapped.filter((r) => r.score < cursorScore)
|
|
221
|
+
: mapped;
|
|
222
|
+
const hasMore = afterCursor.length > limit;
|
|
223
|
+
const items = hasMore ? afterCursor.slice(0, limit) : afterCursor;
|
|
224
|
+
const lastItem = items[items.length - 1];
|
|
225
|
+
const nextCursor = hasMore && lastItem ? encodeCursor(lastItem.score) : null;
|
|
226
|
+
return { items, cursor: nextCursor, hasMore };
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Build the relationship-graph visualization payload.
|
|
230
|
+
*
|
|
231
|
+
* SECURITY: raw scores are NEVER returned. Each node exposes only `tier` and
|
|
232
|
+
* a coarse `closeness` value bucketed to the nearest 10 in [0, 100]
|
|
233
|
+
* (`round(score * 10) * 10`). Recent-auth, rate-limiting, and audit-logging
|
|
234
|
+
* are enforced by the caller; the score coarsening is applied here.
|
|
235
|
+
*/
|
|
236
|
+
async getRelationshipGraph(userId) {
|
|
237
|
+
const tenantId = getCurrentTenantId();
|
|
238
|
+
const rows = await this.prisma.relationship.findMany({
|
|
239
|
+
where: tenantId !== undefined ? { userId, tenantId } : { userId },
|
|
240
|
+
});
|
|
241
|
+
// Resolve node display names from the user/entity tables by id+type.
|
|
242
|
+
// targetId is polymorphic with no FK, so look each set up separately.
|
|
243
|
+
const userIds = rows
|
|
244
|
+
.filter((r) => r.targetType === "user")
|
|
245
|
+
.map((r) => r.targetId);
|
|
246
|
+
const entityIds = rows
|
|
247
|
+
.filter((r) => r.targetType === "entity")
|
|
248
|
+
.map((r) => r.targetId);
|
|
249
|
+
const [users, entities] = await Promise.all([
|
|
250
|
+
userIds.length > 0
|
|
251
|
+
? this.prisma.user.findMany({
|
|
252
|
+
where: { id: { in: userIds } },
|
|
253
|
+
select: { id: true, handle: true, username: true },
|
|
254
|
+
})
|
|
255
|
+
: Promise.resolve([]),
|
|
256
|
+
entityIds.length > 0
|
|
257
|
+
? this.prisma.entity.findMany({
|
|
258
|
+
where: { id: { in: entityIds } },
|
|
259
|
+
select: { id: true, name: true },
|
|
260
|
+
})
|
|
261
|
+
: Promise.resolve([]),
|
|
262
|
+
]);
|
|
263
|
+
// Users carry no PII in the graph; fall back to handle/username (both
|
|
264
|
+
// optional) and finally empty string — matches the Neo4j `tgt.name ?? ""`.
|
|
265
|
+
const userNameById = new Map(users.map((u) => [u.id, u.handle ?? u.username ?? ""]));
|
|
266
|
+
const entityNameById = new Map(entities.map((e) => [e.id, e.name ?? ""]));
|
|
267
|
+
const nodes = rows
|
|
268
|
+
.map((row) => {
|
|
269
|
+
const score = effectiveScore(row.manualScore, row.computedScore);
|
|
270
|
+
const targetType = row.targetType;
|
|
271
|
+
const name = targetType === "user"
|
|
272
|
+
? (userNameById.get(row.targetId) ?? "")
|
|
273
|
+
: (entityNameById.get(row.targetId) ?? "");
|
|
274
|
+
return {
|
|
275
|
+
score,
|
|
276
|
+
node: {
|
|
277
|
+
id: row.targetId,
|
|
278
|
+
type: targetType,
|
|
279
|
+
name,
|
|
280
|
+
// Coarsen to nearest 10 (0-100); never expose the raw score.
|
|
281
|
+
closeness: Math.round(score * 10) * 10,
|
|
282
|
+
tier: scoreToTier(score),
|
|
283
|
+
},
|
|
284
|
+
};
|
|
285
|
+
})
|
|
286
|
+
// Order by score descending (matches Neo4j ORDER BY r.score DESC).
|
|
287
|
+
.sort((a, b) => b.score - a.score)
|
|
288
|
+
.map((x) => x.node);
|
|
289
|
+
// Tier summary counts.
|
|
290
|
+
const counts = {
|
|
291
|
+
inner: 0,
|
|
292
|
+
closeFriends: 0,
|
|
293
|
+
community: 0,
|
|
294
|
+
ambient: 0,
|
|
295
|
+
};
|
|
296
|
+
for (const node of nodes) {
|
|
297
|
+
counts[TIER_NAMES[node.tier]]++;
|
|
298
|
+
}
|
|
299
|
+
const thresholdFor = (tier) => TIER_THRESHOLDS.find((t) => t.tier === tier)?.minScore ?? 0;
|
|
300
|
+
return {
|
|
301
|
+
nodes,
|
|
302
|
+
tiers: {
|
|
303
|
+
inner: { threshold: thresholdFor(0), count: counts.inner },
|
|
304
|
+
closeFriends: {
|
|
305
|
+
threshold: thresholdFor(1),
|
|
306
|
+
count: counts.closeFriends,
|
|
307
|
+
},
|
|
308
|
+
community: { threshold: thresholdFor(2), count: counts.community },
|
|
309
|
+
ambient: { threshold: thresholdFor(3), count: counts.ambient },
|
|
310
|
+
},
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
//# sourceMappingURL=relationships.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relationships.js","sourceRoot":"","sources":["../../../../src/lib/graph/postgres/relationships.ts"],"names":[],"mappings":"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"}
|