@revealui/core 0.2.1 → 0.5.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/dist/api/compression.d.ts.map +1 -1
- package/dist/api/payload-optimization.d.ts.map +1 -1
- package/dist/api/rate-limit.d.ts +29 -28
- package/dist/api/rate-limit.d.ts.map +1 -1
- package/dist/api/rate-limit.js +63 -3
- package/dist/api/response-cache.d.ts.map +1 -1
- package/dist/api/response-cache.js +1 -1
- package/dist/api/rest.d.ts.map +1 -1
- package/dist/api/rest.js +3 -2
- package/dist/auth/access.d.ts.map +1 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/cache/query-cache.d.ts +12 -10
- package/dist/cache/query-cache.d.ts.map +1 -1
- package/dist/cache/query-cache.js +38 -42
- package/dist/caching/index.d.ts +6 -0
- package/dist/caching/index.d.ts.map +1 -0
- package/dist/caching/index.js +5 -0
- package/dist/client/admin/RichText.d.ts +1 -1
- package/dist/client/admin/RichText.d.ts.map +1 -1
- package/dist/client/admin/components/AdminDashboard.d.ts.map +1 -1
- package/dist/client/admin/components/AdminDashboard.js +195 -205
- package/dist/client/admin/components/CollectionList.d.ts.map +1 -1
- package/dist/client/admin/components/DocumentForm.d.ts.map +1 -1
- package/dist/client/admin/components/DocumentForm.js +130 -6
- package/dist/client/admin/components/GlobalForm.d.ts.map +1 -1
- package/dist/client/admin/context/ServerFunctionContext.d.ts +8 -0
- package/dist/client/admin/context/ServerFunctionContext.d.ts.map +1 -0
- package/dist/client/admin/context/ServerFunctionContext.js +15 -0
- package/dist/client/admin/i18n/en.d.ts.map +1 -1
- package/dist/client/admin/index.d.ts +1 -0
- package/dist/client/admin/index.d.ts.map +1 -1
- package/dist/client/admin/index.js +1 -0
- package/dist/client/admin/layout.d.ts +1 -1
- package/dist/client/admin/layout.d.ts.map +1 -1
- package/dist/client/admin/layout.js +3 -2
- package/dist/client/admin/page.d.ts.map +1 -1
- package/dist/client/admin/utils/apiClient.d.ts.map +1 -1
- package/dist/client/admin/utils/apiClient.js +0 -4
- package/dist/client/admin/utils/index.d.ts +0 -1
- package/dist/client/admin/utils/index.d.ts.map +1 -1
- package/dist/client/admin/utils/index.js +0 -1
- package/dist/client/admin/utils/serializeConfig.d.ts.map +1 -1
- package/dist/client/hooks.d.ts.map +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/richtext/RichTextEditor.d.ts.map +1 -1
- package/dist/client/richtext/components/ImageNodeComponent.d.ts.map +1 -1
- package/dist/client/richtext/components/ImageNodeComponent.js +0 -1
- package/dist/client/richtext/components/ImageUploadButton.d.ts +2 -0
- package/dist/client/richtext/components/ImageUploadButton.d.ts.map +1 -1
- package/dist/client/richtext/components/ImageUploadButton.js +30 -15
- package/dist/client/richtext/index.d.ts.map +1 -1
- package/dist/client/richtext/nodes/DecoratorBlockNode.d.ts.map +1 -1
- package/dist/client/richtext/nodes/ImageNode.d.ts.map +1 -1
- package/dist/client/richtext/plugins/CollaborationPlugin.d.ts.map +1 -1
- package/dist/client/richtext/plugins/CursorsOverlayPlugin.d.ts.map +1 -1
- package/dist/client/richtext/plugins/FloatingToolbarPlugin.d.ts.map +1 -1
- package/dist/client/richtext/plugins/FloatingToolbarPlugin.js +1 -3
- package/dist/client/richtext/plugins/ImagePlugin.d.ts.map +1 -1
- package/dist/client/richtext/plugins/ToolbarPlugin.d.ts.map +1 -1
- package/dist/client/ui/index.d.ts.map +1 -1
- package/dist/client/ui/index.js +1 -1
- package/dist/collections/CollectionOperations.d.ts +7 -7
- package/dist/collections/CollectionOperations.d.ts.map +1 -1
- package/dist/collections/CollectionOperations.js +15 -1
- package/dist/collections/hooks.d.ts.map +1 -1
- package/dist/collections/index.d.ts.map +1 -1
- package/dist/collections/operations/create.d.ts +4 -5
- package/dist/collections/operations/create.d.ts.map +1 -1
- package/dist/collections/operations/create.js +35 -6
- package/dist/collections/operations/createMany.d.ts +12 -0
- package/dist/collections/operations/createMany.d.ts.map +1 -0
- package/dist/collections/operations/createMany.js +43 -0
- package/dist/collections/operations/delete.d.ts +1 -1
- package/dist/collections/operations/delete.d.ts.map +1 -1
- package/dist/collections/operations/delete.js +31 -2
- package/dist/collections/operations/deleteMany.d.ts +11 -0
- package/dist/collections/operations/deleteMany.d.ts.map +1 -0
- package/dist/collections/operations/deleteMany.js +50 -0
- package/dist/collections/operations/fieldHooks.d.ts +2 -2
- package/dist/collections/operations/fieldHooks.d.ts.map +1 -1
- package/dist/collections/operations/fieldHooks.js +4 -4
- package/dist/collections/operations/find.d.ts +2 -4
- package/dist/collections/operations/find.d.ts.map +1 -1
- package/dist/collections/operations/find.js +115 -8
- package/dist/collections/operations/findById.d.ts +3 -4
- package/dist/collections/operations/findById.d.ts.map +1 -1
- package/dist/collections/operations/findById.js +53 -1
- package/dist/collections/operations/sqlAdapter.d.ts +23 -0
- package/dist/collections/operations/sqlAdapter.d.ts.map +1 -0
- package/dist/collections/operations/sqlAdapter.js +76 -0
- package/dist/collections/operations/update.d.ts +3 -5
- package/dist/collections/operations/update.d.ts.map +1 -1
- package/dist/collections/operations/update.js +103 -11
- package/dist/collections/operations/updateMany.d.ts +11 -0
- package/dist/collections/operations/updateMany.d.ts.map +1 -0
- package/dist/collections/operations/updateMany.js +52 -0
- package/dist/collections/registry.d.ts +12 -0
- package/dist/collections/registry.d.ts.map +1 -0
- package/dist/collections/registry.js +38 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/runtime.d.ts.map +1 -1
- package/dist/config/utils.d.ts +0 -10
- package/dist/config/utils.d.ts.map +1 -1
- package/dist/config/utils.js +0 -13
- package/dist/database/index.d.ts +3 -0
- package/dist/database/index.d.ts.map +1 -1
- package/dist/database/index.js +1 -5
- package/dist/database/safe-parse.d.ts.map +1 -1
- package/dist/database/ssl-config.d.ts.map +1 -1
- package/dist/database/type-adapter.d.ts.map +1 -1
- package/dist/database/universal-postgres.d.ts.map +1 -1
- package/dist/database/universal-postgres.js +6 -1
- package/dist/dataloader.d.ts.map +1 -1
- package/dist/error-handling/error-boundary.d.ts.map +1 -1
- package/dist/error-handling/error-reporter.d.ts +1 -1
- package/dist/error-handling/error-reporter.d.ts.map +1 -1
- package/dist/error-handling/error-reporter.js +19 -5
- package/dist/error-handling/fallback-components.d.ts.map +1 -1
- package/dist/error-handling/fallback-components.js +1 -1
- package/dist/error-handling/index.d.ts +2 -4
- package/dist/error-handling/index.d.ts.map +1 -1
- package/dist/error-handling/index.js +1 -4
- package/dist/factories/builders.d.ts.map +1 -1
- package/dist/factories/index.d.ts.map +1 -1
- package/dist/features.d.ts +7 -7
- package/dist/features.d.ts.map +1 -1
- package/dist/features.js +2 -2
- package/dist/fieldTraversal.d.ts.map +1 -1
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/getDefaultValue.d.ts.map +1 -1
- package/dist/fields/getFieldPaths.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/index.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
- package/dist/generated/types/cms.d.ts.map +1 -1
- package/dist/generated/types/cms.js +0 -1
- package/dist/generated/types/neon.d.ts.map +1 -1
- package/dist/generated/types/neon.js +4 -2
- package/dist/globals/GlobalOperations.d.ts.map +1 -1
- package/dist/globals/GlobalOperations.js +16 -4
- package/dist/globals/index.d.ts.map +1 -1
- package/dist/index.d.ts +15 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -5
- package/dist/instance/RevealUIInstance.d.ts.map +1 -1
- package/dist/instance/RevealUIInstance.js +6 -19
- package/dist/instance/index.d.ts.map +1 -1
- package/dist/instance/logger.d.ts.map +1 -1
- package/dist/instance/methods/create.d.ts.map +1 -1
- package/dist/instance/methods/create.js +0 -3
- package/dist/instance/methods/delete.d.ts.map +1 -1
- package/dist/instance/methods/delete.js +1 -4
- package/dist/instance/methods/find.d.ts.map +1 -1
- package/dist/instance/methods/find.js +0 -3
- package/dist/instance/methods/findById.d.ts.map +1 -1
- package/dist/instance/methods/findById.js +0 -3
- package/dist/instance/methods/hooks.d.ts.map +1 -1
- package/dist/instance/methods/update.d.ts.map +1 -1
- package/dist/instance/methods/update.js +0 -3
- package/dist/jobs/index.d.ts +16 -0
- package/dist/jobs/index.d.ts.map +1 -0
- package/dist/jobs/index.js +14 -0
- package/dist/jobs/queue.d.ts +57 -0
- package/dist/jobs/queue.d.ts.map +1 -0
- package/dist/jobs/queue.js +134 -0
- package/dist/license-encryption.d.ts +21 -0
- package/dist/license-encryption.d.ts.map +1 -0
- package/dist/license-encryption.js +74 -0
- package/dist/license.d.ts +26 -3
- package/dist/license.d.ts.map +1 -1
- package/dist/license.js +87 -7
- package/dist/monitoring/alerts.d.ts +4 -4
- package/dist/monitoring/alerts.d.ts.map +1 -1
- package/dist/monitoring/cleanup-manager.d.ts.map +1 -1
- package/dist/monitoring/health-monitor.d.ts.map +1 -1
- package/dist/monitoring/index.d.ts.map +1 -1
- package/dist/monitoring/process-registry.d.ts.map +1 -1
- package/dist/monitoring/query-monitor.d.ts.map +1 -1
- package/dist/monitoring/types.d.ts.map +1 -1
- package/dist/monitoring/zombie-detector.d.ts.map +1 -1
- package/dist/monitoring/zombie-detector.js +5 -0
- package/dist/nextjs/index.d.ts.map +1 -1
- package/dist/nextjs/utilities.d.ts.map +1 -1
- package/dist/nextjs/withRevealUI.d.ts.map +1 -1
- package/dist/observability/alerts.d.ts.map +1 -1
- package/dist/observability/alerts.js +1 -2
- package/dist/observability/health-check.d.ts +0 -4
- package/dist/observability/health-check.d.ts.map +1 -1
- package/dist/observability/health-check.js +0 -36
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/logger.d.ts.map +1 -1
- package/dist/observability/logger.js +1 -1
- package/dist/observability/metrics.d.ts.map +1 -1
- package/dist/observability/tracing.d.ts.map +1 -1
- package/dist/observability/tracing.js +0 -1
- package/dist/plugins/form-builder.d.ts.map +1 -1
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/nested-docs.d.ts +4 -0
- package/dist/plugins/nested-docs.d.ts.map +1 -1
- package/dist/plugins/nested-docs.js +50 -6
- package/dist/plugins/redirects.d.ts.map +1 -1
- package/dist/queries/index.d.ts.map +1 -1
- package/dist/queries/queryBuilder.d.ts.map +1 -1
- package/dist/queries/queryBuilder.js +13 -5
- package/dist/relationships/analyzer.d.ts.map +1 -1
- package/dist/relationships/analyzer.js +8 -0
- package/dist/relationships/index.d.ts.map +1 -1
- package/dist/relationships/populate-core.d.ts +57 -0
- package/dist/relationships/populate-core.d.ts.map +1 -0
- package/dist/relationships/populate-core.js +116 -0
- package/dist/relationships/populate-helpers.d.ts +5 -51
- package/dist/relationships/populate-helpers.d.ts.map +1 -1
- package/dist/relationships/populate-helpers.js +4 -109
- package/dist/relationships/population.d.ts +1 -9
- package/dist/relationships/population.d.ts.map +1 -1
- package/dist/relationships/population.js +8 -3
- package/dist/revealui.d.ts.map +1 -1
- package/dist/richtext/exports/client/rcc.d.ts.map +1 -1
- package/dist/richtext/exports/client/rcc.js +1 -1
- package/dist/richtext/exports/server/rsc.d.ts +17 -0
- package/dist/richtext/exports/server/rsc.d.ts.map +1 -1
- package/dist/richtext/exports/server/rsc.js +61 -5
- package/dist/richtext/index.d.ts.map +1 -1
- package/dist/richtext/lexical.d.ts.map +1 -1
- package/dist/security/index.d.ts +3 -16
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +3 -16
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/renderPage.d.ts.map +1 -1
- package/dist/storage/index.d.ts +1 -0
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +2 -4
- package/dist/storage/vercel-blob.d.ts.map +1 -1
- package/dist/storage/vercel-blob.js +3 -0
- package/dist/translations/index.d.ts.map +1 -1
- package/dist/types/access.d.ts.map +1 -1
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/cms.d.ts.map +1 -1
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/core.d.ts +1 -1
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/extensions.d.ts.map +1 -1
- package/dist/types/frontend.d.ts.map +1 -1
- package/dist/types/generated.d.ts.map +1 -1
- package/dist/types/hooks.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/interfaces/app.d.ts.map +1 -1
- package/dist/types/jobs.d.ts.map +1 -1
- package/dist/types/legacy.d.ts.map +1 -1
- package/dist/types/plugins.d.ts.map +1 -1
- package/dist/types/query.d.ts.map +1 -1
- package/dist/types/request.d.ts.map +1 -1
- package/dist/types/richtext.d.ts.map +1 -1
- package/dist/types/runtime.d.ts +60 -1
- package/dist/types/runtime.d.ts.map +1 -1
- package/dist/types/schema.d.ts.map +1 -1
- package/dist/types/user.d.ts.map +1 -1
- package/dist/utils/access-conversion.d.ts.map +1 -1
- package/dist/utils/api-wrapper.d.ts.map +1 -1
- package/dist/utils/api-wrapper.js +1 -1
- package/dist/utils/block-conversion.d.ts.map +1 -1
- package/dist/utils/cache.d.ts.map +1 -1
- package/dist/utils/deep-clone.js +0 -1
- package/dist/utils/error-responses.d.ts.map +1 -1
- package/dist/utils/error-responses.js +2 -3
- package/dist/utils/errors.d.ts +36 -0
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +103 -0
- package/dist/utils/field-conversion.d.ts +1 -1
- package/dist/utils/field-conversion.d.ts.map +1 -1
- package/dist/utils/flattenResult.d.ts.map +1 -1
- package/dist/utils/flattenResult.js +0 -1
- package/dist/utils/getBlockSelect.d.ts.map +1 -1
- package/dist/utils/getSelectMode.d.ts.map +1 -1
- package/dist/utils/isValidID.d.ts.map +1 -1
- package/dist/utils/json-parsing.d.ts.map +1 -1
- package/dist/utils/logger-client.d.ts.map +1 -1
- package/dist/utils/logger-server.d.ts.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/request-context.d.ts.map +1 -1
- package/dist/utils/stripUnselectedFields.d.ts.map +1 -1
- package/dist/utils/type-guards.d.ts.map +1 -1
- package/package.json +58 -26
- package/dist/caching/app-cache.d.ts +0 -237
- package/dist/caching/app-cache.d.ts.map +0 -1
- package/dist/caching/app-cache.js +0 -430
- package/dist/caching/cdn-config.d.ts +0 -155
- package/dist/caching/cdn-config.d.ts.map +0 -1
- package/dist/caching/cdn-config.js +0 -411
- package/dist/caching/edge-cache.d.ts +0 -177
- package/dist/caching/edge-cache.d.ts.map +0 -1
- package/dist/caching/edge-cache.js +0 -385
- package/dist/caching/service-worker.d.ts +0 -154
- package/dist/caching/service-worker.d.ts.map +0 -1
- package/dist/caching/service-worker.js +0 -437
- package/dist/client/admin/utils/auth.d.ts +0 -23
- package/dist/client/admin/utils/auth.d.ts.map +0 -1
- package/dist/client/admin/utils/auth.js +0 -52
- package/dist/client/http/client.d.ts +0 -15
- package/dist/client/http/client.d.ts.map +0 -1
- package/dist/client/http/client.js +0 -49
- package/dist/client/http/fetchBanner.d.ts +0 -18
- package/dist/client/http/fetchBanner.d.ts.map +0 -1
- package/dist/client/http/fetchBanner.js +0 -44
- package/dist/client/http/fetchCard.d.ts +0 -18
- package/dist/client/http/fetchCard.d.ts.map +0 -1
- package/dist/client/http/fetchCard.js +0 -46
- package/dist/client/http/fetchEvents.d.ts +0 -18
- package/dist/client/http/fetchEvents.d.ts.map +0 -1
- package/dist/client/http/fetchEvents.js +0 -44
- package/dist/client/http/fetchHero.d.ts +0 -17
- package/dist/client/http/fetchHero.d.ts.map +0 -1
- package/dist/client/http/fetchHero.js +0 -55
- package/dist/client/http/fetchMainInfos.d.ts +0 -17
- package/dist/client/http/fetchMainInfos.d.ts.map +0 -1
- package/dist/client/http/fetchMainInfos.js +0 -44
- package/dist/client/http/fetchVideos.d.ts +0 -13
- package/dist/client/http/fetchVideos.d.ts.map +0 -1
- package/dist/client/http/fetchVideos.js +0 -36
- package/dist/client/http/index.d.ts +0 -19
- package/dist/client/http/index.d.ts.map +0 -1
- package/dist/client/http/index.js +0 -11
- package/dist/error-handling/circuit-breaker.d.ts +0 -262
- package/dist/error-handling/circuit-breaker.d.ts.map +0 -1
- package/dist/error-handling/circuit-breaker.js +0 -542
- package/dist/error-handling/retry.d.ts +0 -194
- package/dist/error-handling/retry.d.ts.map +0 -1
- package/dist/error-handling/retry.js +0 -450
- package/dist/errors/index.d.ts +0 -23
- package/dist/errors/index.d.ts.map +0 -1
- package/dist/errors/index.js +0 -40
- package/dist/generated/agents/index.d.ts +0 -8
- package/dist/generated/agents/index.d.ts.map +0 -1
- package/dist/generated/agents/index.js +0 -7
- package/dist/generated/components/index.d.ts +0 -8
- package/dist/generated/components/index.d.ts.map +0 -1
- package/dist/generated/components/index.js +0 -7
- package/dist/generated/functions/index.d.ts +0 -8
- package/dist/generated/functions/index.d.ts.map +0 -1
- package/dist/generated/functions/index.js +0 -7
- package/dist/generated/hooks/index.d.ts +0 -8
- package/dist/generated/hooks/index.d.ts.map +0 -1
- package/dist/generated/hooks/index.js +0 -7
- package/dist/generated/plans/index.d.ts +0 -8
- package/dist/generated/plans/index.d.ts.map +0 -1
- package/dist/generated/plans/index.js +0 -7
- package/dist/generated/prompts/index.d.ts +0 -8
- package/dist/generated/prompts/index.d.ts.map +0 -1
- package/dist/generated/prompts/index.js +0 -7
- package/dist/generated/tools/index.d.ts +0 -8
- package/dist/generated/tools/index.d.ts.map +0 -1
- package/dist/generated/tools/index.js +0 -7
- package/dist/generated/types/supabase.d.ts +0 -193
- package/dist/generated/types/supabase.d.ts.map +0 -1
- package/dist/generated/types/supabase.js +0 -5
- package/dist/optimization/asset-optimizer.d.ts +0 -202
- package/dist/optimization/asset-optimizer.d.ts.map +0 -1
- package/dist/optimization/asset-optimizer.js +0 -312
- package/dist/optimization/build-optimizer.d.ts +0 -202
- package/dist/optimization/build-optimizer.d.ts.map +0 -1
- package/dist/optimization/build-optimizer.js +0 -271
- package/dist/optimization/bundle-analyzer.d.ts +0 -98
- package/dist/optimization/bundle-analyzer.d.ts.map +0 -1
- package/dist/optimization/bundle-analyzer.js +0 -322
- package/dist/optimization/code-splitting.d.ts +0 -131
- package/dist/optimization/code-splitting.d.ts.map +0 -1
- package/dist/optimization/code-splitting.js +0 -277
- package/dist/plugin/index.d.ts +0 -12
- package/dist/plugin/index.d.ts.map +0 -1
- package/dist/plugin/index.js +0 -4
- package/dist/security/audit.d.ts +0 -188
- package/dist/security/audit.d.ts.map +0 -1
- package/dist/security/audit.js +0 -431
- package/dist/security/auth.d.ts +0 -241
- package/dist/security/auth.d.ts.map +0 -1
- package/dist/security/auth.js +0 -476
- package/dist/security/authorization.d.ts +0 -235
- package/dist/security/authorization.d.ts.map +0 -1
- package/dist/security/authorization.js +0 -434
- package/dist/security/encryption.d.ts +0 -214
- package/dist/security/encryption.d.ts.map +0 -1
- package/dist/security/encryption.js +0 -517
- package/dist/security/gdpr.d.ts +0 -300
- package/dist/security/gdpr.d.ts.map +0 -1
- package/dist/security/gdpr.js +0 -465
- package/dist/security/headers.d.ts +0 -182
- package/dist/security/headers.d.ts.map +0 -1
- package/dist/security/headers.js +0 -402
- package/dist/utils/jwt-validation.d.ts +0 -14
- package/dist/utils/jwt-validation.d.ts.map +0 -1
- package/dist/utils/jwt-validation.js +0 -36
- package/dist/utils/request-headers.d.ts +0 -15
- package/dist/utils/request-headers.d.ts.map +0 -1
- package/dist/utils/request-headers.js +0 -31
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Population Core — Pure Types & Utilities
|
|
3
|
+
*
|
|
4
|
+
* This module contains types and pure utility functions for relationship
|
|
5
|
+
* population that have NO imports from the afterRead chain, breaking the
|
|
6
|
+
* circular dependency: population → populate-helpers → afterRead → population.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Extract relationship information from field and data
|
|
10
|
+
*
|
|
11
|
+
* Handles polymorphic relationships, join tables, and direct FK relationships.
|
|
12
|
+
*/
|
|
13
|
+
export function extractRelationInfo(field, data, req) {
|
|
14
|
+
const dataRecord = data;
|
|
15
|
+
// Determine relation name based on field type
|
|
16
|
+
let relationName;
|
|
17
|
+
if (field.type === 'join') {
|
|
18
|
+
relationName = Array.isArray(field.collection)
|
|
19
|
+
? dataRecord.relationTo
|
|
20
|
+
: field.collection;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
relationName = Array.isArray(field.relationTo)
|
|
24
|
+
? dataRecord.relationTo
|
|
25
|
+
: field.relationTo;
|
|
26
|
+
}
|
|
27
|
+
// Get related collection config
|
|
28
|
+
const relatedCollection = relationName && req.revealui?.collections ? req.revealui.collections[relationName] : undefined;
|
|
29
|
+
// Extract ID based on field configuration
|
|
30
|
+
let id;
|
|
31
|
+
if (field.type === 'join' && Array.isArray(field.collection)) {
|
|
32
|
+
id = dataRecord.value;
|
|
33
|
+
}
|
|
34
|
+
else if (field.type !== 'join' && Array.isArray(field.relationTo)) {
|
|
35
|
+
id = dataRecord.value;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
id = data;
|
|
39
|
+
}
|
|
40
|
+
// Normalize ID to string or number
|
|
41
|
+
if (typeof id !== 'string' &&
|
|
42
|
+
typeof id !== 'number' &&
|
|
43
|
+
typeof id?.toString === 'function' &&
|
|
44
|
+
typeof id !== 'object') {
|
|
45
|
+
id = id.toString();
|
|
46
|
+
}
|
|
47
|
+
return { relationName, id, relatedCollection };
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Check if a relationship should be populated based on depth
|
|
51
|
+
*/
|
|
52
|
+
export function shouldPopulateRelationship(currentDepth, depth) {
|
|
53
|
+
return depth > 0 && currentDepth <= depth;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Update document with populated relationship value
|
|
57
|
+
*
|
|
58
|
+
* Handles various field configurations: arrays, localized fields, join tables, etc.
|
|
59
|
+
*/
|
|
60
|
+
export function updateDocumentWithPopulatedValue(args) {
|
|
61
|
+
const { dataReference, field, relationshipValue, location } = args;
|
|
62
|
+
const { index, key } = location;
|
|
63
|
+
// Case 1: Localized array field (has both index and key)
|
|
64
|
+
if (typeof index === 'number' && typeof key === 'string') {
|
|
65
|
+
const fieldRecord = dataReference[field.name];
|
|
66
|
+
const localeRecords = fieldRecord[key];
|
|
67
|
+
const localeEntry = localeRecords[index];
|
|
68
|
+
if (field.type !== 'join' && Array.isArray(field.relationTo)) {
|
|
69
|
+
localeEntry.value = relationshipValue;
|
|
70
|
+
}
|
|
71
|
+
else if (field.type === 'join' && Array.isArray(field.collection)) {
|
|
72
|
+
localeEntry.value = relationshipValue;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
localeRecords[index] = relationshipValue;
|
|
76
|
+
}
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
// Case 2: Array field or localized field (has index or key, but not both)
|
|
80
|
+
if (typeof index === 'number' || typeof key === 'string') {
|
|
81
|
+
const fieldRecord = dataReference[field.name];
|
|
82
|
+
const target = (index ?? key);
|
|
83
|
+
if (field.type === 'join') {
|
|
84
|
+
if (!Array.isArray(field.collection)) {
|
|
85
|
+
const docs = fieldRecord.docs;
|
|
86
|
+
docs[target] = relationshipValue;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
const docs = fieldRecord.docs;
|
|
90
|
+
const docEntry = docs[target];
|
|
91
|
+
docEntry.value = relationshipValue;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else if (Array.isArray(field.relationTo)) {
|
|
95
|
+
const entries = fieldRecord;
|
|
96
|
+
const entry = entries[target];
|
|
97
|
+
entry.value = relationshipValue;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
fieldRecord[target] = relationshipValue;
|
|
101
|
+
}
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
// Case 3: Single value (no index or key)
|
|
105
|
+
if (field.type !== 'join' && Array.isArray(field.relationTo)) {
|
|
106
|
+
const fieldRecord = dataReference[field.name];
|
|
107
|
+
fieldRecord.value = relationshipValue;
|
|
108
|
+
}
|
|
109
|
+
else if (field.type === 'join' && Array.isArray(field.collection)) {
|
|
110
|
+
const fieldRecord = dataReference[field.name];
|
|
111
|
+
fieldRecord.value = relationshipValue;
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
dataReference[field.name] = relationshipValue;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
@@ -3,41 +3,13 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Extracted from the monolithic populate() function to improve
|
|
5
5
|
* maintainability, testability, and clarity.
|
|
6
|
-
*/
|
|
7
|
-
import type { RevealRequest, TypedFallbackLocale } from '../types/index.js';
|
|
8
|
-
/** Relationship field types supported by population */
|
|
9
|
-
export interface PopulateRelationshipField {
|
|
10
|
-
type: 'relationship' | 'upload' | 'join';
|
|
11
|
-
name: string;
|
|
12
|
-
relationTo?: string | string[];
|
|
13
|
-
collection?: string | string[];
|
|
14
|
-
hasMany?: boolean;
|
|
15
|
-
maxDepth?: number;
|
|
16
|
-
localized?: boolean;
|
|
17
|
-
}
|
|
18
|
-
/** Information extracted about a relationship */
|
|
19
|
-
export interface RelationInfo {
|
|
20
|
-
/** The collection slug this relationship points to */
|
|
21
|
-
relationName: string | undefined;
|
|
22
|
-
/** The ID(s) to populate */
|
|
23
|
-
id: unknown;
|
|
24
|
-
/** The related collection config if available */
|
|
25
|
-
relatedCollection: unknown;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Extract relationship information from field and data
|
|
29
6
|
*
|
|
30
|
-
*
|
|
31
|
-
|
|
32
|
-
export declare function extractRelationInfo(field: PopulateRelationshipField, data: unknown, req: {
|
|
33
|
-
revealui?: {
|
|
34
|
-
collections?: Record<string, unknown>;
|
|
35
|
-
};
|
|
36
|
-
}): RelationInfo;
|
|
37
|
-
/**
|
|
38
|
-
* Check if a relationship should be populated based on depth
|
|
7
|
+
* Pure types and utilities live in populate-core.ts (no afterRead imports).
|
|
8
|
+
* This module re-exports them and adds helpers that depend on afterRead.
|
|
39
9
|
*/
|
|
40
|
-
|
|
10
|
+
import type { RevealRequest, TypedFallbackLocale } from '../types/index.js';
|
|
11
|
+
export type { PopulateRelationshipField, RelationInfo, UpdateLocation } from './populate-core.js';
|
|
12
|
+
export { extractRelationInfo, shouldPopulateRelationship, updateDocumentWithPopulatedValue, } from './populate-core.js';
|
|
41
13
|
/**
|
|
42
14
|
* Load a related document using the dataLoader
|
|
43
15
|
*
|
|
@@ -83,22 +55,4 @@ export declare function applyNestedPopulation(args: {
|
|
|
83
55
|
showHiddenFields: boolean;
|
|
84
56
|
req: RevealRequest;
|
|
85
57
|
}): Promise<unknown>;
|
|
86
|
-
/**
|
|
87
|
-
* Location information for updating a document with populated values
|
|
88
|
-
*/
|
|
89
|
-
export interface UpdateLocation {
|
|
90
|
-
index?: number;
|
|
91
|
-
key?: string;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Update document with populated relationship value
|
|
95
|
-
*
|
|
96
|
-
* Handles various field configurations: arrays, localized fields, join tables, etc.
|
|
97
|
-
*/
|
|
98
|
-
export declare function updateDocumentWithPopulatedValue(args: {
|
|
99
|
-
dataReference: Record<string, unknown>;
|
|
100
|
-
field: PopulateRelationshipField;
|
|
101
|
-
relationshipValue: unknown;
|
|
102
|
-
location: UpdateLocation;
|
|
103
|
-
}): void;
|
|
104
58
|
//# sourceMappingURL=populate-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"populate-helpers.d.ts","sourceRoot":"","sources":["../../src/relationships/populate-helpers.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"populate-helpers.d.ts","sourceRoot":"","sources":["../../src/relationships/populate-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAIV,aAAa,EAGb,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EAAE,yBAAyB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,gCAAgC,GACjC,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,EAAE,EAAE,OAAO,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,mBAAmB,CAAC;IACpC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,GAAG,EAAE;QACH,UAAU,CAAC,EAAE;YACX,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;SAC1C,CAAC;KACH,CAAC;CACH,GAAG,OAAO,CAAC,OAAO,CAAC,CA8DnB;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,GAAG,EAAE,OAAO,CAAC;IACb,gBAAgB,EAAE;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;QACnB,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;IACF,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,mBAAmB,CAAC;IACpC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,GAAG,EAAE,aAAa,CAAC;CACpB,GAAG,OAAO,CAAC,OAAO,CAAC,CA+CnB"}
|
|
@@ -3,56 +3,13 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Extracted from the monolithic populate() function to improve
|
|
5
5
|
* maintainability, testability, and clarity.
|
|
6
|
+
*
|
|
7
|
+
* Pure types and utilities live in populate-core.ts (no afterRead imports).
|
|
8
|
+
* This module re-exports them and adds helpers that depend on afterRead.
|
|
6
9
|
*/
|
|
7
10
|
import { createDataloaderCacheKey } from '../dataloader.js';
|
|
8
11
|
import { afterRead } from '../fields/hooks/afterRead/index.js';
|
|
9
|
-
|
|
10
|
-
* Extract relationship information from field and data
|
|
11
|
-
*
|
|
12
|
-
* Handles polymorphic relationships, join tables, and direct FK relationships.
|
|
13
|
-
*/
|
|
14
|
-
export function extractRelationInfo(field, data, req) {
|
|
15
|
-
const dataRecord = data;
|
|
16
|
-
// Determine relation name based on field type
|
|
17
|
-
let relationName;
|
|
18
|
-
if (field.type === 'join') {
|
|
19
|
-
relationName = Array.isArray(field.collection)
|
|
20
|
-
? dataRecord.relationTo
|
|
21
|
-
: field.collection;
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
relationName = Array.isArray(field.relationTo)
|
|
25
|
-
? dataRecord.relationTo
|
|
26
|
-
: field.relationTo;
|
|
27
|
-
}
|
|
28
|
-
// Get related collection config
|
|
29
|
-
const relatedCollection = relationName && req.revealui?.collections ? req.revealui.collections[relationName] : undefined;
|
|
30
|
-
// Extract ID based on field configuration
|
|
31
|
-
let id;
|
|
32
|
-
if (field.type === 'join' && Array.isArray(field.collection)) {
|
|
33
|
-
id = dataRecord.value;
|
|
34
|
-
}
|
|
35
|
-
else if (field.type !== 'join' && Array.isArray(field.relationTo)) {
|
|
36
|
-
id = dataRecord.value;
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
id = data;
|
|
40
|
-
}
|
|
41
|
-
// Normalize ID to string or number
|
|
42
|
-
if (typeof id !== 'string' &&
|
|
43
|
-
typeof id !== 'number' &&
|
|
44
|
-
typeof id?.toString === 'function' &&
|
|
45
|
-
typeof id !== 'object') {
|
|
46
|
-
id = id.toString();
|
|
47
|
-
}
|
|
48
|
-
return { relationName, id, relatedCollection };
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Check if a relationship should be populated based on depth
|
|
52
|
-
*/
|
|
53
|
-
export function shouldPopulateRelationship(currentDepth, depth) {
|
|
54
|
-
return depth > 0 && currentDepth <= depth;
|
|
55
|
-
}
|
|
12
|
+
export { extractRelationInfo, shouldPopulateRelationship, updateDocumentWithPopulatedValue, } from './populate-core.js';
|
|
56
13
|
/**
|
|
57
14
|
* Load a related document using the dataLoader
|
|
58
15
|
*
|
|
@@ -123,65 +80,3 @@ export async function applyNestedPopulation(args) {
|
|
|
123
80
|
showHiddenFields,
|
|
124
81
|
});
|
|
125
82
|
}
|
|
126
|
-
/**
|
|
127
|
-
* Update document with populated relationship value
|
|
128
|
-
*
|
|
129
|
-
* Handles various field configurations: arrays, localized fields, join tables, etc.
|
|
130
|
-
*/
|
|
131
|
-
export function updateDocumentWithPopulatedValue(args) {
|
|
132
|
-
const { dataReference, field, relationshipValue, location } = args;
|
|
133
|
-
const { index, key } = location;
|
|
134
|
-
// Case 1: Localized array field (has both index and key)
|
|
135
|
-
if (typeof index === 'number' && typeof key === 'string') {
|
|
136
|
-
const fieldRecord = dataReference[field.name];
|
|
137
|
-
const localeRecords = fieldRecord[key];
|
|
138
|
-
const localeEntry = localeRecords[index];
|
|
139
|
-
if (field.type !== 'join' && Array.isArray(field.relationTo)) {
|
|
140
|
-
localeEntry.value = relationshipValue;
|
|
141
|
-
}
|
|
142
|
-
else if (field.type === 'join' && Array.isArray(field.collection)) {
|
|
143
|
-
localeEntry.value = relationshipValue;
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
localeRecords[index] = relationshipValue;
|
|
147
|
-
}
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
// Case 2: Array field or localized field (has index or key, but not both)
|
|
151
|
-
if (typeof index === 'number' || typeof key === 'string') {
|
|
152
|
-
const fieldRecord = dataReference[field.name];
|
|
153
|
-
const target = (index ?? key);
|
|
154
|
-
if (field.type === 'join') {
|
|
155
|
-
if (!Array.isArray(field.collection)) {
|
|
156
|
-
const docs = fieldRecord.docs;
|
|
157
|
-
docs[target] = relationshipValue;
|
|
158
|
-
}
|
|
159
|
-
else {
|
|
160
|
-
const docs = fieldRecord.docs;
|
|
161
|
-
const docEntry = docs[target];
|
|
162
|
-
docEntry.value = relationshipValue;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
else if (Array.isArray(field.relationTo)) {
|
|
166
|
-
const entries = fieldRecord;
|
|
167
|
-
const entry = entries[target];
|
|
168
|
-
entry.value = relationshipValue;
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
fieldRecord[target] = relationshipValue;
|
|
172
|
-
}
|
|
173
|
-
return;
|
|
174
|
-
}
|
|
175
|
-
// Case 3: Single value (no index or key)
|
|
176
|
-
if (field.type !== 'join' && Array.isArray(field.relationTo)) {
|
|
177
|
-
const fieldRecord = dataReference[field.name];
|
|
178
|
-
fieldRecord.value = relationshipValue;
|
|
179
|
-
}
|
|
180
|
-
else if (field.type === 'join' && Array.isArray(field.collection)) {
|
|
181
|
-
const fieldRecord = dataReference[field.name];
|
|
182
|
-
fieldRecord.value = relationshipValue;
|
|
183
|
-
}
|
|
184
|
-
else {
|
|
185
|
-
dataReference[field.name] = relationshipValue;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { PopulateType, TypedFallbackLocale } from '../types/index.js';
|
|
2
|
+
import type { PopulateRelationshipField } from './populate-core.js';
|
|
2
3
|
interface PopulateRequest {
|
|
3
4
|
revealui?: {
|
|
4
5
|
collections?: Record<string, {
|
|
@@ -15,15 +16,6 @@ interface PopulateRequest {
|
|
|
15
16
|
find?: (options: unknown) => Promise<unknown>;
|
|
16
17
|
};
|
|
17
18
|
}
|
|
18
|
-
interface PopulateRelationshipField {
|
|
19
|
-
type: 'relationship' | 'upload' | 'join';
|
|
20
|
-
name: string;
|
|
21
|
-
relationTo?: string | string[];
|
|
22
|
-
collection?: string | string[];
|
|
23
|
-
hasMany?: boolean;
|
|
24
|
-
maxDepth?: number;
|
|
25
|
-
localized?: boolean;
|
|
26
|
-
}
|
|
27
19
|
type PromiseArgs = {
|
|
28
20
|
currentDepth: number;
|
|
29
21
|
depth: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"population.d.ts","sourceRoot":"","sources":["../../src/relationships/population.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"population.d.ts","sourceRoot":"","sources":["../../src/relationships/population.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAiB,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC1F,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAapE,UAAU,eAAe;IACvB,QAAQ,CAAC,EAAE;QACT,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,MAAM,CAAC,EAAE;gBAAE,eAAe,CAAC,EAAE,OAAO,CAAA;aAAE,CAAA;SAAE,CAAC,CAAC;QACzE,MAAM,CAAC,EAAE;YAAE,WAAW,CAAC,EAAE,OAAO,EAAE,CAAA;SAAE,CAAC;KACtC,CAAC;IACF,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KAC/C,CAAC;CACH;AAkHD,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,mBAAmB,CAAC;IACpC,KAAK,EAAE,yBAAyB,CAAC;IACjC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,GAAG,EAAE,eAAe,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC,CAAC;AAEF,eAAO,MAAM,6BAA6B,GAAU,0IAYjD,WAAW,KAAG,OAAO,CAAC,IAAI,CAoI5B,CAAC"}
|
|
@@ -1,13 +1,18 @@
|
|
|
1
|
+
// External type imports
|
|
1
2
|
import { fieldHasMaxDepth, fieldShouldBeLocalized, fieldSupportsMany, } from '../fields/config/types.js';
|
|
3
|
+
// Pure utilities from populate-core (no circular dependency)
|
|
4
|
+
import { extractRelationInfo, shouldPopulateRelationship, updateDocumentWithPopulatedValue, } from './populate-core.js';
|
|
5
|
+
// Helpers that depend on afterRead (static import — safe because populate-core
|
|
6
|
+
// broke the cycle: population no longer imports from populate-helpers for the
|
|
7
|
+
// functions that afterRead/promise.ts needs)
|
|
8
|
+
import { applyNestedPopulation, loadRelatedDocument } from './populate-helpers.js';
|
|
2
9
|
/**
|
|
3
10
|
* Populate a single relationship field
|
|
4
11
|
*
|
|
5
12
|
* Refactored from the original monolithic function for better maintainability.
|
|
6
|
-
* Uses helper functions from populate-
|
|
13
|
+
* Uses helper functions from populate-core.ts and populate-helpers.ts.
|
|
7
14
|
*/
|
|
8
15
|
const populate = async ({ currentDepth, data, dataReference, depth, draft, fallbackLocale, field, index, key, locale, overrideAccess, populateArg, req, showHiddenFields, }) => {
|
|
9
|
-
// Import helpers (dynamic to avoid circular dependencies)
|
|
10
|
-
const { extractRelationInfo, shouldPopulateRelationship, loadRelatedDocument, applyNestedPopulation, updateDocumentWithPopulatedValue, } = await import('./populate-helpers.js');
|
|
11
16
|
// Step 1: Extract relationship information
|
|
12
17
|
const { relationName, id, relatedCollection } = extractRelationInfo(field, data, req);
|
|
13
18
|
if (!relatedCollection) {
|
package/dist/revealui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revealui.d.ts","sourceRoot":"","sources":["../src/revealui.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,
|
|
1
|
+
{"version":3,"file":"revealui.d.ts","sourceRoot":"","sources":["../src/revealui.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EACL,YAAY,EACZ,aAAa,EACb,MAAM,EACN,KAAK,cAAc,GACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAExE,OAAO,EACL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAG9E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAIzD,OAAO,KAAK,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAEjG,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,4BAA4B,CAAC,CAIvC;AAED,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,4BAA4B,CAAC,CAIvC;AAED,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,4BAA4B,CAAC,CAIvC;AAED,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,4BAA4B,CAAC,CAIvC;AAGD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAEpE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CA+C5E;AAKD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/D,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GACjB,CAAC,CAGH;AAED,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,uBAAuB,EACxB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC9E,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AACjC,MAAM,MAAM,eAAe,GAAG,aAAa,CAAC;AAC5C,MAAM,MAAM,eAAe,GAAG,uBAAuB,CAAC;AACtD,MAAM,MAAM,aAAa,GAAG,qBAAqB,CAAC;AAGlD,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAGhD,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAG/E,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7E,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AACvE,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3E,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3D,MAAM,MAAM,WAAW,GAAG,aAAa,CAAC;AAGxC,MAAM,MAAM,KAAK,GAAG,aAAa,CAAC;AAClC,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC;AAC1C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAG/B,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,mBAAmB,EAC7B,UAAU,EAAE,OAAO,GAClB,mBAAmB,GAAG,mBAAmB,EAAE,GAAG,SAAS,CAGzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rcc.d.ts","sourceRoot":"","sources":["../../../../src/richtext/exports/client/rcc.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAA0B,kBAAkB,EAAE,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"rcc.d.ts","sourceRoot":"","sources":["../../../../src/richtext/exports/client/rcc.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAA0B,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAIhF,OAAO,EAQL,KAAK,qBAAqB,EAE1B,KAAK,qBAAqB,EAE3B,MAAM,SAAS,CAAC;AACjB,OAAO,EAAY,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AA2B3C,UAAU,mBAAoB,SAAQ,qBAAqB;IACzD,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;IAC/E,UAAU,CAAC,EAAE,CACX,IAAI,EAAE,kBAAkB,EACxB,QAAQ,EAAE,GAAG,CAAC,OAAO,GAAG,IAAI,EAC5B,KAAK,EAAE,MAAM,KACV,GAAG,CAAC,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,CACZ,IAAI,EAAE;QACJ,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,EACD,KAAK,EAAE,MAAM,KACV,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;CACzB;AA0PD;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,EAC9C,OAAO,CAAC,EAAE,sBAAsB,GAC/B,GAAG,CAAC,OAAO,GAAG,IAAI,CAMpB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,SAAS,EACT,GAAG,OAAO,EACX,EAAE;IACD,IAAI,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,sBAAsB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAO9C"}
|
|
@@ -43,7 +43,7 @@ function serializeTextNode(node, index) {
|
|
|
43
43
|
function serializeChildren(children, options) {
|
|
44
44
|
if (!children || children.length === 0)
|
|
45
45
|
return null;
|
|
46
|
-
return _jsx(Fragment, { children: children.map((child, index) => serializeNode(child, index, options)) });
|
|
46
|
+
return (_jsx(Fragment, { children: children.map((child, index) => serializeNode(child, index, options)) }));
|
|
47
47
|
}
|
|
48
48
|
function serializeNode(node, index, options) {
|
|
49
49
|
if (!node)
|
|
@@ -7,6 +7,23 @@
|
|
|
7
7
|
import type { SerializedEditorState, SerializedLexicalNode } from 'lexical';
|
|
8
8
|
import { type JSX } from 'react';
|
|
9
9
|
export type { SerializedEditorState };
|
|
10
|
+
/**
|
|
11
|
+
* Check whether a URL is safe to render in an href attribute.
|
|
12
|
+
*
|
|
13
|
+
* Blocks javascript:, vbscript:, data: (except data:image/ for images),
|
|
14
|
+
* and other dangerous protocols. Handles case-insensitive matching and
|
|
15
|
+
* leading whitespace tricks.
|
|
16
|
+
*
|
|
17
|
+
* @param url - The URL to validate
|
|
18
|
+
* @param context - Whether this URL is for a link href or image src
|
|
19
|
+
* @returns true if the URL is safe to render
|
|
20
|
+
*/
|
|
21
|
+
export declare function isSafeUrl(url: string, context?: 'link' | 'image'): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Sanitize a URL for use in an href or src attribute.
|
|
24
|
+
* Returns '#' if the URL is not safe.
|
|
25
|
+
*/
|
|
26
|
+
export declare function sanitizeUrl(url: string, context?: 'link' | 'image'): string;
|
|
10
27
|
interface SerializedElementNode extends SerializedLexicalNode {
|
|
11
28
|
type: string;
|
|
12
29
|
children?: SerializedLexicalNode[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsc.d.ts","sourceRoot":"","sources":["../../../../src/richtext/exports/server/rsc.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"rsc.d.ts","sourceRoot":"","sources":["../../../../src/richtext/exports/server/rsc.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,62 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Fragment } from 'react';
|
|
3
3
|
// ============================================
|
|
4
|
+
// URL SANITIZATION
|
|
5
|
+
// ============================================
|
|
6
|
+
/**
|
|
7
|
+
* Protocols that are safe to render in href/src attributes.
|
|
8
|
+
* Anything not matching these will be replaced with '#'.
|
|
9
|
+
*/
|
|
10
|
+
const SAFE_LINK_PROTOCOLS = /^(?:https?:|mailto:|tel:|#|\/)/i;
|
|
11
|
+
/**
|
|
12
|
+
* Data URIs that are safe for image src attributes (base64 images only).
|
|
13
|
+
* data:text/html and similar are blocked.
|
|
14
|
+
*/
|
|
15
|
+
const SAFE_IMAGE_DATA_URI = /^data:image\//i;
|
|
16
|
+
/**
|
|
17
|
+
* Check whether a URL is safe to render in an href attribute.
|
|
18
|
+
*
|
|
19
|
+
* Blocks javascript:, vbscript:, data: (except data:image/ for images),
|
|
20
|
+
* and other dangerous protocols. Handles case-insensitive matching and
|
|
21
|
+
* leading whitespace tricks.
|
|
22
|
+
*
|
|
23
|
+
* @param url - The URL to validate
|
|
24
|
+
* @param context - Whether this URL is for a link href or image src
|
|
25
|
+
* @returns true if the URL is safe to render
|
|
26
|
+
*/
|
|
27
|
+
export function isSafeUrl(url, context = 'link') {
|
|
28
|
+
// Trim whitespace (catches " javascript:" trick)
|
|
29
|
+
const trimmed = url.trim();
|
|
30
|
+
if (trimmed === '' || trimmed === '#') {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
// For image context, allow data:image/ URIs (base64 images)
|
|
34
|
+
if (context === 'image' && SAFE_IMAGE_DATA_URI.test(trimmed)) {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
// Block all data: URIs for links (and non-image data: for images)
|
|
38
|
+
if (/^data:/i.test(trimmed)) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
// Block javascript: and vbscript: protocols (case-insensitive)
|
|
42
|
+
if (/^(?:javascript|vbscript):/i.test(trimmed)) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
// Relative paths, anchors, and safe protocols are allowed
|
|
46
|
+
if (SAFE_LINK_PROTOCOLS.test(trimmed) || !trimmed.includes(':')) {
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
// Unknown protocol — block it
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Sanitize a URL for use in an href or src attribute.
|
|
54
|
+
* Returns '#' if the URL is not safe.
|
|
55
|
+
*/
|
|
56
|
+
export function sanitizeUrl(url, context = 'link') {
|
|
57
|
+
return isSafeUrl(url, context) ? url.trim() : '#';
|
|
58
|
+
}
|
|
59
|
+
// ============================================
|
|
4
60
|
// TEXT FORMAT CONSTANTS
|
|
5
61
|
// ============================================
|
|
6
62
|
const IS_BOLD = 1;
|
|
@@ -45,7 +101,7 @@ function serializeTextNode(node, index) {
|
|
|
45
101
|
function serializeChildren(children, options) {
|
|
46
102
|
if (!children || children.length === 0)
|
|
47
103
|
return null;
|
|
48
|
-
return _jsx(Fragment, { children: children.map((child, index) => serializeNode(child, index, options)) });
|
|
104
|
+
return (_jsx(Fragment, { children: children.map((child, index) => serializeNode(child, index, options)) }));
|
|
49
105
|
}
|
|
50
106
|
/**
|
|
51
107
|
* Serialize a single Lexical node to React elements
|
|
@@ -105,8 +161,8 @@ function serializeNode(node, index, options) {
|
|
|
105
161
|
if (options?.renderLink) {
|
|
106
162
|
return options.renderLink(linkNode, children, index);
|
|
107
163
|
}
|
|
108
|
-
// Default link rendering
|
|
109
|
-
const href = linkNode.fields?.url || '#';
|
|
164
|
+
// Default link rendering with URL sanitization
|
|
165
|
+
const href = sanitizeUrl(linkNode.fields?.url || '#', 'link');
|
|
110
166
|
const target = linkNode.fields?.newTab ? '_blank' : undefined;
|
|
111
167
|
const rel = linkNode.fields?.newTab ? 'noopener noreferrer' : undefined;
|
|
112
168
|
return (_jsx("a", { href: href, target: target, rel: rel, children: children }, index));
|
|
@@ -115,12 +171,12 @@ function serializeNode(node, index, options) {
|
|
|
115
171
|
if (node.type === 'autolink') {
|
|
116
172
|
const children = serializeChildren(n.children, options);
|
|
117
173
|
const autoLinkNode = node;
|
|
118
|
-
return (_jsx("a", { href: autoLinkNode.url || '#', children: children }, index));
|
|
174
|
+
return (_jsx("a", { href: sanitizeUrl(autoLinkNode.url || '#', 'link'), children: children }, index));
|
|
119
175
|
}
|
|
120
176
|
// Image (from upload feature)
|
|
121
177
|
if (node.type === 'image') {
|
|
122
178
|
const imageNode = node;
|
|
123
|
-
const src = imageNode.fields?.src || '';
|
|
179
|
+
const src = sanitizeUrl(imageNode.fields?.src || '', 'image');
|
|
124
180
|
const alt = imageNode.fields?.alt || '';
|
|
125
181
|
const width = imageNode.fields?.width;
|
|
126
182
|
const height = imageNode.fields?.height;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/richtext/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/richtext/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lexical.d.ts","sourceRoot":"","sources":["../../src/richtext/lexical.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,YAAY,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"lexical.d.ts","sourceRoot":"","sources":["../../src/richtext/lexical.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,YAAY,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,aAAa,EAEb,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EAEX,mBAAmB,EAEnB,mBAAmB,EACnB,sBAAsB,EAEtB,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EAEb,WAAW,EACX,WAAW,EAEX,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAElB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,GACd,MAAM,YAAY,CAAC"}
|
package/dist/security/index.d.ts
CHANGED
|
@@ -1,19 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Security & Compliance
|
|
3
|
-
*
|
|
4
|
-
* Comprehensive security infrastructure for authentication, authorization,
|
|
5
|
-
* encryption, audit logging, GDPR compliance, and secure headers
|
|
2
|
+
* Security & Compliance — re-exported from @revealui/security
|
|
3
|
+
* New code should import directly from '@revealui/security'.
|
|
6
4
|
*/
|
|
7
|
-
export
|
|
8
|
-
export { AuditReportGenerator, AuditSystem, AuditTrail, audit, createAuditMiddleware, InMemoryAuditStorage, } from './audit';
|
|
9
|
-
export type { AuthConfig, AuthSession, AuthToken, JWTPayload, OAuthConfig, User, } from './auth';
|
|
10
|
-
export { AuthSystem, OAuthClient, OAuthProviders, PasswordHasher, TwoFactorAuth, } from './auth';
|
|
11
|
-
export type { AuthorizationContext, Permission, Policy, PolicyCondition, Role, } from './authorization';
|
|
12
|
-
export { AuthorizationSystem, authorization, CommonRoles, canAccessResource, checkAttributeAccess, createAuthorizationMiddleware, PermissionBuilder, PermissionCache, PolicyBuilder, permissionCache, RequirePermission, RequireRole, } from './authorization';
|
|
13
|
-
export type { EncryptedData, EncryptionConfig, } from './encryption';
|
|
14
|
-
export { DataMasking, EncryptionSystem, EnvelopeEncryption, encryption, FieldEncryption, KeyRotationManager, TokenGenerator, } from './encryption';
|
|
15
|
-
export type { ConsentRecord, ConsentType, CookieConsentConfig, DataBreach, DataCategory, DataDeletionRequest, DataProcessingPurpose, PersonalDataExport, } from './gdpr';
|
|
16
|
-
export { ConsentManager, CookieConsentManager, consentManager, cookieConsentManager, DataAnonymization, DataBreachManager, DataDeletionSystem, DataExportSystem, dataBreachManager, dataDeletionSystem, dataExportSystem, PrivacyPolicyManager, privacyPolicyManager, } from './gdpr';
|
|
17
|
-
export type { CORSConfig, ContentSecurityPolicyConfig, HSTSConfig, PermissionsPolicyConfig, ReferrerPolicyValue, SecurityHeadersConfig, } from './headers';
|
|
18
|
-
export { CORSManager, CORSPresets, createSecurityMiddleware, SecurityHeaders, SecurityPresets, setRateLimitHeaders, } from './headers';
|
|
5
|
+
export * from '@revealui/security';
|
|
19
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,oBAAoB,CAAC"}
|