@revealui/core 0.0.1-pre.3 → 0.2.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 +22 -202
- package/README.md +29 -180
- package/dist/api/compression.d.ts +83 -0
- package/dist/api/compression.d.ts.map +1 -0
- package/dist/api/compression.js +233 -0
- package/dist/api/payload-optimization.d.ts +138 -0
- package/dist/api/payload-optimization.d.ts.map +1 -0
- package/dist/api/payload-optimization.js +320 -0
- package/dist/api/rate-limit.d.ts +113 -0
- package/dist/api/rate-limit.d.ts.map +1 -0
- package/dist/api/rate-limit.js +301 -0
- package/dist/api/response-cache.d.ts +125 -0
- package/dist/api/response-cache.d.ts.map +1 -0
- package/dist/api/response-cache.js +335 -0
- package/dist/api/rest.d.ts +54 -0
- package/dist/api/rest.d.ts.map +1 -0
- package/dist/api/rest.js +464 -0
- package/dist/auth/access.d.ts +25 -0
- package/dist/auth/access.d.ts.map +1 -0
- package/dist/auth/access.js +20 -0
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +2 -0
- package/dist/cache/query-cache.d.ts +98 -0
- package/dist/cache/query-cache.d.ts.map +1 -0
- package/dist/cache/query-cache.js +260 -0
- package/dist/caching/app-cache.d.ts +237 -0
- package/dist/caching/app-cache.d.ts.map +1 -0
- package/dist/caching/app-cache.js +430 -0
- package/dist/caching/cdn-config.d.ts +155 -0
- package/dist/caching/cdn-config.d.ts.map +1 -0
- package/dist/caching/cdn-config.js +425 -0
- package/dist/caching/edge-cache.d.ts +177 -0
- package/dist/caching/edge-cache.d.ts.map +1 -0
- package/dist/caching/edge-cache.js +381 -0
- package/dist/caching/service-worker.d.ts +165 -0
- package/dist/caching/service-worker.d.ts.map +1 -0
- package/dist/caching/service-worker.js +437 -0
- package/dist/client/admin/RichText.d.ts +12 -0
- package/dist/client/admin/RichText.d.ts.map +1 -0
- package/dist/client/admin/RichText.js +5 -0
- package/dist/client/admin/components/AdminDashboard.d.ts +7 -0
- package/dist/client/admin/components/AdminDashboard.d.ts.map +1 -0
- package/dist/client/admin/components/AdminDashboard.js +318 -0
- package/dist/client/admin/components/CollectionList.d.ts +16 -0
- package/dist/client/admin/components/CollectionList.d.ts.map +1 -0
- package/dist/client/admin/components/CollectionList.js +67 -0
- package/dist/client/admin/components/DocumentForm.d.ts +11 -0
- package/dist/client/admin/components/DocumentForm.d.ts.map +1 -0
- package/dist/client/admin/components/DocumentForm.js +99 -0
- package/dist/client/admin/components/GlobalForm.d.ts +11 -0
- package/dist/client/admin/components/GlobalForm.d.ts.map +1 -0
- package/dist/client/admin/components/GlobalForm.js +74 -0
- package/dist/client/admin/i18n/en.d.ts +25 -0
- package/dist/client/admin/i18n/en.d.ts.map +1 -0
- package/dist/client/admin/i18n/en.js +25 -0
- package/dist/client/admin/index.d.ts +10 -0
- package/dist/client/admin/index.d.ts.map +1 -0
- package/dist/client/admin/index.js +10 -0
- package/dist/client/admin/layout.d.ts +10 -0
- package/dist/client/admin/layout.d.ts.map +1 -0
- package/dist/client/admin/layout.js +6 -0
- package/dist/client/admin/page.d.ts +38 -0
- package/dist/client/admin/page.d.ts.map +1 -0
- package/dist/client/admin/page.js +15 -0
- package/dist/client/admin/utils/apiClient.d.ts +110 -0
- package/dist/client/admin/utils/apiClient.d.ts.map +1 -0
- package/dist/client/admin/utils/apiClient.js +220 -0
- package/dist/client/admin/utils/auth.d.ts +27 -0
- package/dist/client/admin/utils/auth.d.ts.map +1 -0
- package/dist/client/admin/utils/auth.js +58 -0
- package/dist/client/admin/utils/index.d.ts +6 -0
- package/dist/client/admin/utils/index.d.ts.map +1 -0
- package/dist/client/admin/utils/index.js +5 -0
- package/dist/client/admin/utils/serializeConfig.d.ts +7 -0
- package/dist/client/admin/utils/serializeConfig.d.ts.map +1 -0
- package/dist/client/admin/utils/serializeConfig.js +35 -0
- package/dist/client/hooks.d.ts +18 -0
- package/dist/client/hooks.d.ts.map +1 -0
- package/dist/client/hooks.js +29 -0
- package/dist/client/http/client.d.ts +15 -0
- package/dist/client/http/client.d.ts.map +1 -0
- package/dist/client/http/client.js +49 -0
- package/dist/client/http/fetchBanner.d.ts +18 -0
- package/dist/client/http/fetchBanner.d.ts.map +1 -0
- package/dist/client/http/fetchBanner.js +44 -0
- package/dist/client/http/fetchCard.d.ts +18 -0
- package/dist/client/http/fetchCard.d.ts.map +1 -0
- package/dist/client/http/fetchCard.js +46 -0
- package/dist/client/http/fetchEvents.d.ts +18 -0
- package/dist/client/http/fetchEvents.d.ts.map +1 -0
- package/dist/client/http/fetchEvents.js +44 -0
- package/dist/client/http/fetchHero.d.ts +17 -0
- package/dist/client/http/fetchHero.d.ts.map +1 -0
- package/dist/client/http/fetchHero.js +55 -0
- package/dist/client/http/fetchMainInfos.d.ts +17 -0
- package/dist/client/http/fetchMainInfos.d.ts.map +1 -0
- package/dist/client/http/fetchMainInfos.js +44 -0
- package/dist/client/http/fetchVideos.d.ts +13 -0
- package/dist/client/http/fetchVideos.d.ts.map +1 -0
- package/dist/client/http/fetchVideos.js +36 -0
- package/dist/client/http/index.d.ts +19 -0
- package/dist/client/http/index.d.ts.map +1 -0
- package/dist/client/http/index.js +11 -0
- package/dist/client/index.d.ts +12 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +15 -0
- package/dist/client/richtext/RichTextEditor.d.ts +48 -0
- package/dist/client/richtext/RichTextEditor.d.ts.map +1 -0
- package/dist/client/richtext/RichTextEditor.js +360 -0
- package/dist/client/richtext/components/ImageNodeComponent.d.ts +9 -0
- package/dist/client/richtext/components/ImageNodeComponent.d.ts.map +1 -0
- package/dist/client/richtext/components/ImageNodeComponent.js +99 -0
- package/dist/client/richtext/components/ImageUploadButton.d.ts +11 -0
- package/dist/client/richtext/components/ImageUploadButton.d.ts.map +1 -0
- package/dist/client/richtext/components/ImageUploadButton.js +103 -0
- package/dist/client/richtext/index.d.ts +92 -0
- package/dist/client/richtext/index.d.ts.map +1 -0
- package/dist/client/richtext/index.js +74 -0
- package/dist/client/richtext/nodes/DecoratorBlockNode.d.ts +20 -0
- package/dist/client/richtext/nodes/DecoratorBlockNode.d.ts.map +1 -0
- package/dist/client/richtext/nodes/DecoratorBlockNode.js +29 -0
- package/dist/client/richtext/nodes/ImageNode.d.ts +51 -0
- package/dist/client/richtext/nodes/ImageNode.d.ts.map +1 -0
- package/dist/client/richtext/nodes/ImageNode.js +95 -0
- package/dist/client/richtext/plugins/CollaborationPlugin.d.ts +13 -0
- package/dist/client/richtext/plugins/CollaborationPlugin.d.ts.map +1 -0
- package/dist/client/richtext/plugins/CollaborationPlugin.js +8 -0
- package/dist/client/richtext/plugins/CursorsOverlayPlugin.d.ts +4 -0
- package/dist/client/richtext/plugins/CursorsOverlayPlugin.d.ts.map +1 -0
- package/dist/client/richtext/plugins/CursorsOverlayPlugin.js +50 -0
- package/dist/client/richtext/plugins/FloatingToolbarPlugin.d.ts +7 -0
- package/dist/client/richtext/plugins/FloatingToolbarPlugin.d.ts.map +1 -0
- package/dist/client/richtext/plugins/FloatingToolbarPlugin.js +248 -0
- package/dist/client/richtext/plugins/ImagePlugin.d.ts +3 -0
- package/dist/client/richtext/plugins/ImagePlugin.d.ts.map +1 -0
- package/dist/client/richtext/plugins/ImagePlugin.js +73 -0
- package/dist/client/richtext/plugins/PastePlugin.d.ts +2 -0
- package/dist/client/richtext/plugins/PastePlugin.d.ts.map +1 -0
- package/dist/client/richtext/plugins/PastePlugin.js +36 -0
- package/dist/client/richtext/plugins/ToolbarPlugin.d.ts +8 -0
- package/dist/client/richtext/plugins/ToolbarPlugin.d.ts.map +1 -0
- package/dist/client/richtext/plugins/ToolbarPlugin.js +204 -0
- package/dist/client/ui/index.d.ts +111 -0
- package/dist/client/ui/index.d.ts.map +1 -0
- package/dist/client/ui/index.js +130 -0
- package/dist/collections/CollectionOperations.d.ts +27 -0
- package/dist/collections/CollectionOperations.d.ts.map +1 -0
- package/dist/collections/CollectionOperations.js +34 -0
- package/dist/collections/hooks.d.ts +11 -0
- package/dist/collections/hooks.d.ts.map +1 -0
- package/dist/collections/hooks.js +35 -0
- package/dist/collections/index.d.ts +2 -0
- package/dist/collections/index.d.ts.map +1 -0
- package/dist/collections/index.js +1 -0
- package/dist/collections/operations/create.d.ts +10 -0
- package/dist/collections/operations/create.d.ts.map +1 -0
- package/dist/collections/operations/create.js +101 -0
- package/dist/collections/operations/delete.d.ts +10 -0
- package/dist/collections/operations/delete.d.ts.map +1 -0
- package/dist/collections/operations/delete.js +16 -0
- package/dist/collections/operations/fieldHooks.d.ts +21 -0
- package/dist/collections/operations/fieldHooks.d.ts.map +1 -0
- package/dist/collections/operations/fieldHooks.js +51 -0
- package/dist/collections/operations/find.d.ts +10 -0
- package/dist/collections/operations/find.d.ts.map +1 -0
- package/dist/collections/operations/find.js +124 -0
- package/dist/collections/operations/findById.d.ts +15 -0
- package/dist/collections/operations/findById.d.ts.map +1 -0
- package/dist/collections/operations/findById.js +59 -0
- package/dist/collections/operations/update.d.ts +10 -0
- package/dist/collections/operations/update.d.ts.map +1 -0
- package/dist/collections/operations/update.js +134 -0
- package/dist/config/index.d.ts +9 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +61 -0
- package/dist/config/runtime.d.ts +22 -0
- package/dist/config/runtime.d.ts.map +1 -0
- package/dist/config/runtime.js +32 -0
- package/dist/config/utils.d.ts +12 -0
- package/dist/config/utils.d.ts.map +1 -0
- package/dist/config/utils.js +20 -0
- package/dist/database/index.d.ts +1 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +6 -0
- package/dist/database/ssl-config.d.ts +9 -0
- package/dist/database/ssl-config.d.ts.map +1 -0
- package/dist/database/ssl-config.js +7 -0
- package/dist/database/type-adapter.d.ts +113 -0
- package/dist/database/type-adapter.d.ts.map +1 -0
- package/dist/database/type-adapter.js +97 -0
- package/dist/database/universal-postgres.d.ts +45 -0
- package/dist/database/universal-postgres.d.ts.map +1 -0
- package/dist/database/universal-postgres.js +526 -0
- package/dist/dataloader.d.ts +26 -0
- package/dist/dataloader.d.ts.map +1 -0
- package/dist/dataloader.js +162 -0
- package/dist/error-handling/circuit-breaker.d.ts +262 -0
- package/dist/error-handling/circuit-breaker.d.ts.map +1 -0
- package/dist/error-handling/circuit-breaker.js +542 -0
- package/dist/error-handling/error-boundary.d.ts +94 -0
- package/dist/error-handling/error-boundary.d.ts.map +1 -0
- package/dist/error-handling/error-boundary.js +285 -0
- package/dist/error-handling/error-reporter.d.ts +213 -0
- package/dist/error-handling/error-reporter.d.ts.map +1 -0
- package/dist/error-handling/error-reporter.js +506 -0
- package/dist/error-handling/fallback-components.d.ts +131 -0
- package/dist/error-handling/fallback-components.d.ts.map +1 -0
- package/dist/error-handling/fallback-components.js +371 -0
- package/dist/error-handling/index.d.ts +16 -0
- package/dist/error-handling/index.d.ts.map +1 -0
- package/dist/error-handling/index.js +15 -0
- package/dist/error-handling/retry.d.ts +194 -0
- package/dist/error-handling/retry.d.ts.map +1 -0
- package/dist/error-handling/retry.js +450 -0
- package/dist/errors/index.d.ts +23 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +40 -0
- package/dist/factories/builders.d.ts +50 -0
- package/dist/factories/builders.d.ts.map +1 -0
- package/dist/factories/builders.js +77 -0
- package/dist/factories/index.d.ts +2 -0
- package/dist/factories/index.d.ts.map +1 -0
- package/dist/factories/index.js +1 -0
- package/dist/features.d.ts +82 -0
- package/dist/features.d.ts.map +1 -0
- package/dist/features.js +89 -0
- package/dist/fieldTraversal.d.ts +26 -0
- package/dist/fieldTraversal.d.ts.map +1 -0
- package/dist/fieldTraversal.js +132 -0
- package/dist/fields/config/types.d.ts +48 -0
- package/dist/fields/config/types.d.ts.map +1 -0
- package/dist/fields/config/types.js +20 -0
- package/dist/fields/getDefaultValue.d.ts +16 -0
- package/dist/fields/getDefaultValue.d.ts.map +1 -0
- package/dist/fields/getDefaultValue.js +20 -0
- package/dist/fields/getFieldPaths.d.ts +25 -0
- package/dist/fields/getFieldPaths.d.ts.map +1 -0
- package/dist/fields/getFieldPaths.js +23 -0
- package/dist/fields/hooks/afterRead/index.d.ts +36 -0
- package/dist/fields/hooks/afterRead/index.d.ts.map +1 -0
- package/dist/fields/hooks/afterRead/index.js +70 -0
- package/dist/fields/hooks/afterRead/promise.d.ts +46 -0
- package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -0
- package/dist/fields/hooks/afterRead/promise.js +178 -0
- package/dist/fields/hooks/afterRead/traverseFields.d.ts +44 -0
- package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -0
- package/dist/fields/hooks/afterRead/traverseFields.js +37 -0
- package/dist/generated/agents/index.d.ts +8 -0
- package/dist/generated/agents/index.d.ts.map +1 -0
- package/dist/generated/agents/index.js +7 -0
- package/dist/generated/components/index.d.ts +8 -0
- package/dist/generated/components/index.d.ts.map +1 -0
- package/dist/generated/components/index.js +7 -0
- package/dist/generated/functions/index.d.ts +8 -0
- package/dist/generated/functions/index.d.ts.map +1 -0
- package/dist/generated/functions/index.js +7 -0
- package/dist/generated/hooks/index.d.ts +8 -0
- package/dist/generated/hooks/index.d.ts.map +1 -0
- package/dist/generated/hooks/index.js +7 -0
- package/dist/generated/index.d.ts +10 -0
- package/dist/generated/index.d.ts.map +1 -0
- package/dist/generated/index.js +9 -0
- package/dist/generated/plans/index.d.ts +8 -0
- package/dist/generated/plans/index.d.ts.map +1 -0
- package/dist/generated/plans/index.js +7 -0
- package/dist/generated/prompts/index.d.ts +8 -0
- package/dist/generated/prompts/index.d.ts.map +1 -0
- package/dist/generated/prompts/index.js +7 -0
- package/dist/generated/tools/index.d.ts +8 -0
- package/dist/generated/tools/index.d.ts.map +1 -0
- package/dist/generated/tools/index.js +7 -0
- package/dist/generated/types/cms.d.ts +1766 -0
- package/dist/generated/types/cms.d.ts.map +1 -0
- package/dist/generated/types/cms.js +12 -0
- package/dist/generated/types/index.d.ts +19 -0
- package/dist/generated/types/index.d.ts.map +1 -0
- package/dist/generated/types/index.js +28 -0
- package/dist/generated/types/neon.d.ts +11 -0
- package/dist/generated/types/neon.d.ts.map +1 -0
- package/dist/generated/types/neon.js +11 -0
- package/dist/generated/types/supabase.d.ts +193 -0
- package/dist/generated/types/supabase.d.ts.map +1 -0
- package/dist/generated/types/supabase.js +5 -0
- package/dist/globals/GlobalOperations.d.ts +24 -0
- package/dist/globals/GlobalOperations.d.ts.map +1 -0
- package/dist/globals/GlobalOperations.js +149 -0
- package/dist/globals/index.d.ts +2 -0
- package/dist/globals/index.d.ts.map +1 -0
- package/dist/globals/index.js +1 -0
- package/dist/index.d.ts +64 -1
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +128 -33
- package/dist/instance/RevealUIInstance.d.ts +6 -0
- package/dist/instance/RevealUIInstance.d.ts.map +1 -0
- package/dist/instance/RevealUIInstance.js +312 -0
- package/dist/instance/index.d.ts +3 -0
- package/dist/instance/index.d.ts.map +1 -0
- package/dist/instance/index.js +2 -0
- package/dist/instance/logger.d.ts +31 -0
- package/dist/instance/logger.d.ts.map +1 -0
- package/dist/instance/logger.js +42 -0
- package/dist/instance/methods/create.d.ts +10 -0
- package/dist/instance/methods/create.d.ts.map +1 -0
- package/dist/instance/methods/create.js +38 -0
- package/dist/instance/methods/delete.d.ts +10 -0
- package/dist/instance/methods/delete.d.ts.map +1 -0
- package/dist/instance/methods/delete.js +24 -0
- package/dist/instance/methods/find.d.ts +10 -0
- package/dist/instance/methods/find.d.ts.map +1 -0
- package/dist/instance/methods/find.js +23 -0
- package/dist/instance/methods/findById.d.ts +13 -0
- package/dist/instance/methods/findById.d.ts.map +1 -0
- package/dist/instance/methods/findById.js +23 -0
- package/dist/instance/methods/hooks.d.ts +14 -0
- package/dist/instance/methods/hooks.d.ts.map +1 -0
- package/dist/instance/methods/hooks.js +32 -0
- package/dist/instance/methods/update.d.ts +10 -0
- package/dist/instance/methods/update.d.ts.map +1 -0
- package/dist/instance/methods/update.js +42 -0
- package/dist/license.d.ts +73 -0
- package/dist/license.d.ts.map +1 -0
- package/dist/license.js +157 -0
- package/dist/monitoring/alerts.d.ts +118 -0
- package/dist/monitoring/alerts.d.ts.map +1 -0
- package/dist/monitoring/alerts.js +324 -0
- package/dist/monitoring/cleanup-manager.d.ts +71 -0
- package/dist/monitoring/cleanup-manager.d.ts.map +1 -0
- package/dist/monitoring/cleanup-manager.js +226 -0
- package/dist/monitoring/health-monitor.d.ts +22 -0
- package/dist/monitoring/health-monitor.d.ts.map +1 -0
- package/dist/monitoring/health-monitor.js +142 -0
- package/dist/monitoring/index.d.ts +14 -0
- package/dist/monitoring/index.d.ts.map +1 -0
- package/dist/monitoring/index.js +17 -0
- package/dist/monitoring/process-registry.d.ts +97 -0
- package/dist/monitoring/process-registry.d.ts.map +1 -0
- package/dist/monitoring/process-registry.js +222 -0
- package/dist/monitoring/query-monitor.d.ts +153 -0
- package/dist/monitoring/query-monitor.d.ts.map +1 -0
- package/dist/monitoring/query-monitor.js +209 -0
- package/dist/monitoring/types.d.ts +231 -0
- package/dist/monitoring/types.d.ts.map +1 -0
- package/dist/monitoring/types.js +42 -0
- package/dist/monitoring/zombie-detector.d.ts +81 -0
- package/dist/monitoring/zombie-detector.d.ts.map +1 -0
- package/dist/monitoring/zombie-detector.js +231 -0
- package/dist/nextjs/index.d.ts +4 -0
- package/dist/nextjs/index.d.ts.map +1 -0
- package/dist/nextjs/index.js +3 -0
- package/dist/nextjs/utilities.d.ts +5 -0
- package/dist/nextjs/utilities.d.ts.map +1 -0
- package/dist/nextjs/utilities.js +16 -0
- package/dist/nextjs/withRevealUI.d.ts +20 -0
- package/dist/nextjs/withRevealUI.d.ts.map +1 -0
- package/dist/nextjs/withRevealUI.js +181 -0
- package/dist/observability/alerts.d.ts +138 -0
- package/dist/observability/alerts.d.ts.map +1 -0
- package/dist/observability/alerts.js +390 -0
- package/dist/observability/health-check.d.ts +95 -0
- package/dist/observability/health-check.d.ts.map +1 -0
- package/dist/observability/health-check.js +345 -0
- package/dist/observability/index.d.ts +12 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +11 -0
- package/dist/observability/logger.d.ts +47 -0
- package/dist/observability/logger.d.ts.map +1 -0
- package/dist/observability/logger.js +140 -0
- package/dist/observability/metrics.d.ts +205 -0
- package/dist/observability/metrics.d.ts.map +1 -0
- package/dist/observability/metrics.js +429 -0
- package/dist/observability/tracing.d.ts +149 -0
- package/dist/observability/tracing.d.ts.map +1 -0
- package/dist/observability/tracing.js +381 -0
- package/dist/optimization/asset-optimizer.d.ts +202 -0
- package/dist/optimization/asset-optimizer.d.ts.map +1 -0
- package/dist/optimization/asset-optimizer.js +312 -0
- package/dist/optimization/build-optimizer.d.ts +202 -0
- package/dist/optimization/build-optimizer.d.ts.map +1 -0
- package/dist/optimization/build-optimizer.js +271 -0
- package/dist/optimization/bundle-analyzer.d.ts +98 -0
- package/dist/optimization/bundle-analyzer.d.ts.map +1 -0
- package/dist/optimization/bundle-analyzer.js +322 -0
- package/dist/optimization/code-splitting.d.ts +144 -0
- package/dist/optimization/code-splitting.d.ts.map +1 -0
- package/dist/optimization/code-splitting.js +290 -0
- package/dist/plugin/index.d.ts +12 -0
- package/dist/plugin/index.d.ts.map +1 -0
- package/dist/plugin/index.js +4 -0
- package/dist/plugins/form-builder.d.ts +115 -0
- package/dist/plugins/form-builder.d.ts.map +1 -0
- package/dist/plugins/form-builder.js +239 -0
- package/dist/plugins/index.d.ts +5 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +4 -0
- package/dist/plugins/nested-docs.d.ts +8 -0
- package/dist/plugins/nested-docs.d.ts.map +1 -0
- package/dist/plugins/nested-docs.js +67 -0
- package/dist/plugins/redirects.d.ts +17 -0
- package/dist/plugins/redirects.d.ts.map +1 -0
- package/dist/plugins/redirects.js +62 -0
- package/dist/queries/index.d.ts +2 -0
- package/dist/queries/index.d.ts.map +1 -0
- package/dist/queries/index.js +1 -0
- package/dist/queries/queryBuilder.d.ts +47 -0
- package/dist/queries/queryBuilder.d.ts.map +1 -0
- package/dist/queries/queryBuilder.js +252 -0
- package/dist/relationships/analyzer.d.ts +39 -0
- package/dist/relationships/analyzer.d.ts.map +1 -0
- package/dist/relationships/analyzer.js +127 -0
- package/dist/relationships/index.d.ts +3 -0
- package/dist/relationships/index.d.ts.map +1 -0
- package/dist/relationships/index.js +2 -0
- package/dist/relationships/populate-helpers.d.ts +104 -0
- package/dist/relationships/populate-helpers.d.ts.map +1 -0
- package/dist/relationships/populate-helpers.js +187 -0
- package/dist/relationships/population.d.ts +42 -0
- package/dist/relationships/population.d.ts.map +1 -0
- package/dist/relationships/population.js +188 -0
- package/dist/revealui.d.ts +46 -0
- package/dist/revealui.d.ts.map +1 -0
- package/dist/revealui.js +92 -0
- package/dist/richtext/exports/client/rcc.d.ts +37 -0
- package/dist/richtext/exports/client/rcc.d.ts.map +1 -0
- package/dist/richtext/exports/client/rcc.js +182 -0
- package/dist/richtext/exports/server/rsc.d.ts +117 -0
- package/dist/richtext/exports/server/rsc.d.ts.map +1 -0
- package/dist/richtext/exports/server/rsc.js +288 -0
- package/dist/richtext/index.d.ts +161 -0
- package/dist/richtext/index.d.ts.map +1 -0
- package/dist/richtext/index.js +243 -0
- package/dist/richtext/lexical.d.ts +23 -0
- package/dist/richtext/lexical.d.ts.map +1 -0
- package/dist/richtext/lexical.js +35 -0
- package/dist/security/audit.d.ts +188 -0
- package/dist/security/audit.d.ts.map +1 -0
- package/dist/security/audit.js +431 -0
- package/dist/security/auth.d.ts +241 -0
- package/dist/security/auth.d.ts.map +1 -0
- package/dist/security/auth.js +474 -0
- package/dist/security/authorization.d.ts +235 -0
- package/dist/security/authorization.d.ts.map +1 -0
- package/dist/security/authorization.js +434 -0
- package/dist/security/encryption.d.ts +214 -0
- package/dist/security/encryption.d.ts.map +1 -0
- package/dist/security/encryption.js +506 -0
- package/dist/security/gdpr.d.ts +300 -0
- package/dist/security/gdpr.d.ts.map +1 -0
- package/dist/security/gdpr.js +470 -0
- package/dist/security/headers.d.ts +182 -0
- package/dist/security/headers.d.ts.map +1 -0
- package/dist/security/headers.js +402 -0
- package/dist/security/index.d.ts +19 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +18 -0
- package/dist/server/index.d.ts +21 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +28 -0
- package/dist/server/renderPage.d.ts +69 -0
- package/dist/server/renderPage.d.ts.map +1 -0
- package/dist/server/renderPage.js +109 -0
- package/dist/storage/index.d.ts +1 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +4 -0
- package/dist/storage/vercel-blob.d.ts +17 -0
- package/dist/storage/vercel-blob.d.ts.map +1 -0
- package/dist/storage/vercel-blob.js +83 -0
- package/dist/translations/index.d.ts +17 -0
- package/dist/translations/index.d.ts.map +1 -0
- package/dist/translations/index.js +1 -0
- package/dist/types/access.d.ts +67 -0
- package/dist/types/access.d.ts.map +1 -0
- package/dist/types/access.js +8 -0
- package/dist/types/api.d.ts +57 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/api.js +8 -0
- package/dist/types/cms.d.ts +8 -0
- package/dist/types/cms.d.ts.map +1 -0
- package/dist/types/cms.js +6 -0
- package/dist/types/config.d.ts +152 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +9 -0
- package/dist/types/core.d.ts +11 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/core.js +9 -0
- package/dist/types/extensions.d.ts +116 -0
- package/dist/types/extensions.d.ts.map +1 -0
- package/dist/types/extensions.js +8 -0
- package/dist/types/frontend.d.ts +53 -0
- package/dist/types/frontend.d.ts.map +1 -0
- package/dist/types/frontend.js +7 -0
- package/dist/types/generated.d.ts +14 -0
- package/dist/types/generated.d.ts.map +1 -0
- package/dist/types/generated.js +11 -0
- package/dist/types/hooks.d.ts +53 -0
- package/dist/types/hooks.d.ts.map +1 -0
- package/dist/types/hooks.js +8 -0
- package/dist/types/index.d.ts +49 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +61 -0
- package/dist/types/interfaces/app.d.ts +50 -0
- package/dist/types/interfaces/app.d.ts.map +1 -0
- package/dist/types/interfaces/app.js +5 -0
- package/dist/types/jobs.d.ts +112 -0
- package/dist/types/jobs.d.ts.map +1 -0
- package/dist/types/jobs.js +7 -0
- package/dist/types/legacy.d.ts +147 -0
- package/dist/types/legacy.d.ts.map +1 -0
- package/dist/types/legacy.js +8 -0
- package/dist/types/plugins.d.ts +17 -0
- package/dist/types/plugins.d.ts.map +1 -0
- package/dist/types/plugins.js +8 -0
- package/dist/types/query.d.ts +99 -0
- package/dist/types/query.d.ts.map +1 -0
- package/dist/types/query.js +24 -0
- package/dist/types/request.d.ts +40 -0
- package/dist/types/request.d.ts.map +1 -0
- package/dist/types/request.js +8 -0
- package/dist/types/richtext.d.ts +23 -0
- package/dist/types/richtext.d.ts.map +1 -0
- package/dist/types/richtext.js +8 -0
- package/dist/types/runtime.d.ts +216 -0
- package/dist/types/runtime.d.ts.map +1 -0
- package/dist/types/runtime.js +9 -0
- package/dist/types/schema.d.ts +9 -0
- package/dist/types/schema.d.ts.map +1 -0
- package/dist/types/schema.js +7 -0
- package/dist/types/user.d.ts +48 -0
- package/dist/types/user.d.ts.map +1 -0
- package/dist/types/user.js +8 -0
- package/dist/utils/access-conversion.d.ts +17 -0
- package/dist/utils/access-conversion.d.ts.map +1 -0
- package/dist/utils/access-conversion.js +96 -0
- package/dist/utils/api-wrapper.d.ts +63 -0
- package/dist/utils/api-wrapper.d.ts.map +1 -0
- package/dist/utils/api-wrapper.js +151 -0
- package/dist/utils/block-conversion.d.ts +21 -0
- package/dist/utils/block-conversion.d.ts.map +1 -0
- package/dist/utils/block-conversion.js +109 -0
- package/dist/utils/cache.d.ts +86 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +154 -0
- package/dist/utils/deep-clone.d.ts +25 -0
- package/dist/utils/deep-clone.d.ts.map +1 -0
- package/dist/utils/deep-clone.js +115 -0
- package/dist/utils/error-responses.d.ts +57 -0
- package/dist/utils/error-responses.d.ts.map +1 -0
- package/dist/utils/error-responses.js +96 -0
- package/dist/utils/errors.d.ts +97 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +397 -0
- package/dist/utils/field-conversion.d.ts +40 -0
- package/dist/utils/field-conversion.d.ts.map +1 -0
- package/dist/utils/field-conversion.js +275 -0
- package/dist/utils/flattenResult.d.ts +7 -0
- package/dist/utils/flattenResult.d.ts.map +1 -0
- package/dist/utils/flattenResult.js +23 -0
- package/dist/utils/getBlockSelect.d.ts +12 -0
- package/dist/utils/getBlockSelect.d.ts.map +1 -0
- package/dist/utils/getBlockSelect.js +12 -0
- package/dist/utils/getSelectMode.d.ts +8 -0
- package/dist/utils/getSelectMode.d.ts.map +1 -0
- package/dist/utils/getSelectMode.js +21 -0
- package/dist/utils/isValidID.d.ts +5 -0
- package/dist/utils/isValidID.d.ts.map +1 -0
- package/dist/utils/isValidID.js +13 -0
- package/dist/utils/json-parsing.d.ts +48 -0
- package/dist/utils/json-parsing.d.ts.map +1 -0
- package/dist/utils/json-parsing.js +130 -0
- package/dist/utils/jwt-validation.d.ts +14 -0
- package/dist/utils/jwt-validation.d.ts.map +1 -0
- package/dist/utils/jwt-validation.js +36 -0
- package/dist/utils/logger-client.d.ts +32 -0
- package/dist/utils/logger-client.d.ts.map +1 -0
- package/dist/utils/logger-client.js +55 -0
- package/dist/utils/logger-server.d.ts +32 -0
- package/dist/utils/logger-server.d.ts.map +1 -0
- package/dist/utils/logger-server.js +68 -0
- package/dist/utils/logger.d.ts +14 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +12 -0
- package/dist/utils/request-context.d.ts +143 -0
- package/dist/utils/request-context.d.ts.map +1 -0
- package/dist/utils/request-context.js +168 -0
- package/dist/utils/request-headers.d.ts +15 -0
- package/dist/utils/request-headers.d.ts.map +1 -0
- package/dist/utils/request-headers.js +31 -0
- package/dist/utils/stripUnselectedFields.d.ts +10 -0
- package/dist/utils/stripUnselectedFields.d.ts.map +1 -0
- package/dist/utils/stripUnselectedFields.js +20 -0
- package/dist/utils/type-guards.d.ts +33 -0
- package/dist/utils/type-guards.d.ts.map +1 -0
- package/dist/utils/type-guards.js +63 -0
- package/dist/utils/user.d.ts +14 -0
- package/dist/utils/user.d.ts.map +1 -0
- package/dist/utils/user.js +15 -0
- package/package.json +250 -697
- package/LICENSE_SUMMARY.md +0 -55
- package/NOTICE +0 -34
- package/dist/core/gaurds/logger/log404/index.spec.snapshot-1 +0 -8
- package/dist/core/gaurds/logger/log404/index.spec.snapshot-2 +0 -9
- package/dist/exports/RenderErrorPage.js +0 -3
- package/dist/exports/__internal.js +0 -3
- package/dist/exports/abort.js +0 -3
- package/dist/exports/bin-entry.js +0 -17
- package/dist/exports/cli.js +0 -3
- package/dist/exports/client.js +0 -3
- package/dist/exports/config.js +0 -1
- package/dist/exports/helpers.js +0 -1
- package/dist/exports/index.js +0 -33
- package/dist/exports/plugin.js +0 -3
- package/dist/exports/prerender.js +0 -3
- package/dist/exports/router.js +0 -3
- package/dist/exports/routing.js +0 -3
- package/dist/exports/server.js +0 -3
- package/dist/exports/setup.js +0 -3
- package/dist/exports/types.js +0 -1
- package/dist/integration/styles.css +0 -141
- package/dist/node/cli/index.js +0 -18
- package/dist/shared/RenderErrorPage.d.ts +0 -3
- package/dist/shared/RenderErrorPage.js +0 -3
- package/dist/shared/abort.js +0 -3
- package/dist/shared/route/routing.js +0 -3
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Population Helper Functions
|
|
3
|
+
*
|
|
4
|
+
* Extracted from the monolithic populate() function to improve
|
|
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
|
+
*
|
|
30
|
+
* Handles polymorphic relationships, join tables, and direct FK relationships.
|
|
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
|
|
39
|
+
*/
|
|
40
|
+
export declare function shouldPopulateRelationship(currentDepth: number, depth: number): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Load a related document using the dataLoader
|
|
43
|
+
*
|
|
44
|
+
* Returns the populated document or undefined if not found.
|
|
45
|
+
*/
|
|
46
|
+
export declare function loadRelatedDocument(args: {
|
|
47
|
+
id: unknown;
|
|
48
|
+
relationName: string;
|
|
49
|
+
relatedCollection: unknown;
|
|
50
|
+
currentDepth: number;
|
|
51
|
+
depth: number;
|
|
52
|
+
draft: boolean;
|
|
53
|
+
fallbackLocale: TypedFallbackLocale;
|
|
54
|
+
locale: string | null;
|
|
55
|
+
overrideAccess: boolean;
|
|
56
|
+
populateArg: unknown;
|
|
57
|
+
showHiddenFields: boolean;
|
|
58
|
+
req: {
|
|
59
|
+
dataLoader?: {
|
|
60
|
+
load?: (key: string) => Promise<unknown>;
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
}): Promise<unknown>;
|
|
64
|
+
/**
|
|
65
|
+
* Recursively populate nested relationships on a document
|
|
66
|
+
*
|
|
67
|
+
* Applies afterRead hook to populate relationships within the document.
|
|
68
|
+
*/
|
|
69
|
+
export declare function applyNestedPopulation(args: {
|
|
70
|
+
doc: unknown;
|
|
71
|
+
collectionConfig: {
|
|
72
|
+
slug?: string;
|
|
73
|
+
fields?: unknown[];
|
|
74
|
+
defaultPopulate?: unknown;
|
|
75
|
+
};
|
|
76
|
+
currentDepth: number;
|
|
77
|
+
depth: number;
|
|
78
|
+
draft: boolean;
|
|
79
|
+
fallbackLocale: TypedFallbackLocale;
|
|
80
|
+
locale: string | null;
|
|
81
|
+
overrideAccess: boolean;
|
|
82
|
+
populateArg: unknown;
|
|
83
|
+
showHiddenFields: boolean;
|
|
84
|
+
req: RevealRequest;
|
|
85
|
+
}): 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
|
+
//# sourceMappingURL=populate-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"populate-helpers.d.ts","sourceRoot":"","sources":["../../src/relationships/populate-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Population Helper Functions
|
|
3
|
+
*
|
|
4
|
+
* Extracted from the monolithic populate() function to improve
|
|
5
|
+
* maintainability, testability, and clarity.
|
|
6
|
+
*/
|
|
7
|
+
import { createDataloaderCacheKey } from '../dataloader.js';
|
|
8
|
+
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
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Load a related document using the dataLoader
|
|
58
|
+
*
|
|
59
|
+
* Returns the populated document or undefined if not found.
|
|
60
|
+
*/
|
|
61
|
+
export async function loadRelatedDocument(args) {
|
|
62
|
+
const { id, relationName, relatedCollection, currentDepth, depth, draft, fallbackLocale, locale, overrideAccess, populateArg, showHiddenFields, req, } = args;
|
|
63
|
+
if (!req.dataLoader?.load) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
const relatedCollectionWithConfig = relatedCollection;
|
|
67
|
+
const collectionConfig = relatedCollectionWithConfig.config || relatedCollectionWithConfig;
|
|
68
|
+
const collectionSlug = collectionConfig?.slug || relationName;
|
|
69
|
+
// Load the document via dataLoader
|
|
70
|
+
const relationshipValue = await req.dataLoader.load(createDataloaderCacheKey({
|
|
71
|
+
collectionSlug: String(collectionSlug),
|
|
72
|
+
currentDepth: currentDepth + 1,
|
|
73
|
+
depth,
|
|
74
|
+
docID: id,
|
|
75
|
+
draft,
|
|
76
|
+
fallbackLocale,
|
|
77
|
+
locale: locale || 'en',
|
|
78
|
+
overrideAccess,
|
|
79
|
+
populate: populateArg || undefined,
|
|
80
|
+
select: populateArg && typeof populateArg === 'object'
|
|
81
|
+
? (populateArg[String(collectionSlug)] ??
|
|
82
|
+
collectionConfig?.defaultPopulate)
|
|
83
|
+
: collectionConfig?.defaultPopulate,
|
|
84
|
+
showHiddenFields,
|
|
85
|
+
transactionID: '',
|
|
86
|
+
}));
|
|
87
|
+
return relationshipValue;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Recursively populate nested relationships on a document
|
|
91
|
+
*
|
|
92
|
+
* Applies afterRead hook to populate relationships within the document.
|
|
93
|
+
*/
|
|
94
|
+
export async function applyNestedPopulation(args) {
|
|
95
|
+
const { doc, collectionConfig, currentDepth, depth, draft, fallbackLocale, locale, overrideAccess, populateArg, showHiddenFields, req, } = args;
|
|
96
|
+
if (!doc || currentDepth >= depth) {
|
|
97
|
+
return doc;
|
|
98
|
+
}
|
|
99
|
+
const sanitizedConfig = {
|
|
100
|
+
...collectionConfig,
|
|
101
|
+
flattenedFields: collectionConfig?.fields,
|
|
102
|
+
customIDType: 'text',
|
|
103
|
+
trash: false,
|
|
104
|
+
defaultPopulate: [],
|
|
105
|
+
};
|
|
106
|
+
const localeForAfterRead = locale ?? 'en';
|
|
107
|
+
return await afterRead({
|
|
108
|
+
collection: sanitizedConfig,
|
|
109
|
+
context: {},
|
|
110
|
+
currentDepth: currentDepth + 1,
|
|
111
|
+
depth,
|
|
112
|
+
doc: doc,
|
|
113
|
+
draft,
|
|
114
|
+
fallbackLocale,
|
|
115
|
+
findMany: false,
|
|
116
|
+
flattenLocales: true,
|
|
117
|
+
global: null,
|
|
118
|
+
locale: localeForAfterRead,
|
|
119
|
+
overrideAccess,
|
|
120
|
+
populate: populateArg || undefined,
|
|
121
|
+
req,
|
|
122
|
+
select: undefined,
|
|
123
|
+
showHiddenFields,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
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
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { PopulateType, TypedFallbackLocale } from '../types/index.js';
|
|
2
|
+
interface PopulateRequest {
|
|
3
|
+
revealui?: {
|
|
4
|
+
collections?: Record<string, {
|
|
5
|
+
config?: {
|
|
6
|
+
defaultPopulate?: unknown;
|
|
7
|
+
};
|
|
8
|
+
}>;
|
|
9
|
+
config?: {
|
|
10
|
+
collections?: unknown[];
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
dataLoader?: {
|
|
14
|
+
load?: (key: string) => Promise<unknown>;
|
|
15
|
+
find?: (options: unknown) => Promise<unknown>;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
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
|
+
type PromiseArgs = {
|
|
28
|
+
currentDepth: number;
|
|
29
|
+
depth: number;
|
|
30
|
+
draft: boolean;
|
|
31
|
+
fallbackLocale: TypedFallbackLocale;
|
|
32
|
+
field: PopulateRelationshipField;
|
|
33
|
+
locale: null | string;
|
|
34
|
+
overrideAccess: boolean;
|
|
35
|
+
populate?: PopulateType;
|
|
36
|
+
req: PopulateRequest;
|
|
37
|
+
showHiddenFields: boolean;
|
|
38
|
+
siblingDoc: Record<string, unknown>;
|
|
39
|
+
};
|
|
40
|
+
export declare const relationshipPopulationPromise: ({ currentDepth, depth, draft, fallbackLocale, field, locale, overrideAccess, populate: populateArg, req, showHiddenFields, siblingDoc, }: PromiseArgs) => Promise<void>;
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=population.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"population.d.ts","sourceRoot":"","sources":["../../src/relationships/population.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAiB,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAGzF,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,CAAA;QACxE,MAAM,CAAC,EAAE;YAAE,WAAW,CAAC,EAAE,OAAO,EAAE,CAAA;SAAE,CAAA;KACrC,CAAA;IACD,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;QACxC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KAC9C,CAAA;CACF;AAGD,UAAU,yBAAyB;IACjC,IAAI,EAAE,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAA;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAkID,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,mBAAmB,CAAA;IACnC,KAAK,EAAE,yBAAyB,CAAA;IAChC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAA;IACrB,cAAc,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,EAAE,eAAe,CAAA;IACpB,gBAAgB,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,6BAA6B,GAAU,0IAYjD,WAAW,KAAG,OAAO,CAAC,IAAI,CAoI5B,CAAA"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { fieldHasMaxDepth, fieldShouldBeLocalized, fieldSupportsMany, } from '../fields/config/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Populate a single relationship field
|
|
4
|
+
*
|
|
5
|
+
* Refactored from the original monolithic function for better maintainability.
|
|
6
|
+
* Uses helper functions from populate-helpers.ts for clarity and testability.
|
|
7
|
+
*/
|
|
8
|
+
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
|
+
// Step 1: Extract relationship information
|
|
12
|
+
const { relationName, id, relatedCollection } = extractRelationInfo(field, data, req);
|
|
13
|
+
if (!relatedCollection) {
|
|
14
|
+
return; // No collection to populate from
|
|
15
|
+
}
|
|
16
|
+
// Step 2: Check if we should populate
|
|
17
|
+
let relationshipValue;
|
|
18
|
+
if (shouldPopulateRelationship(currentDepth, depth) && req.dataLoader?.load) {
|
|
19
|
+
const collectionConfig = relatedCollection.config || relatedCollection;
|
|
20
|
+
// Step 3: Load the related document
|
|
21
|
+
relationshipValue = await loadRelatedDocument({
|
|
22
|
+
id,
|
|
23
|
+
relationName: relationName || collectionConfig.slug || '',
|
|
24
|
+
relatedCollection,
|
|
25
|
+
currentDepth,
|
|
26
|
+
depth,
|
|
27
|
+
draft,
|
|
28
|
+
fallbackLocale,
|
|
29
|
+
locale,
|
|
30
|
+
overrideAccess,
|
|
31
|
+
populateArg,
|
|
32
|
+
showHiddenFields,
|
|
33
|
+
req,
|
|
34
|
+
});
|
|
35
|
+
// Step 4: Recursively populate nested relationships
|
|
36
|
+
if (relationshipValue && currentDepth < depth) {
|
|
37
|
+
relationshipValue = await applyNestedPopulation({
|
|
38
|
+
doc: relationshipValue,
|
|
39
|
+
collectionConfig,
|
|
40
|
+
currentDepth,
|
|
41
|
+
depth,
|
|
42
|
+
draft,
|
|
43
|
+
fallbackLocale,
|
|
44
|
+
locale,
|
|
45
|
+
overrideAccess,
|
|
46
|
+
populateArg,
|
|
47
|
+
showHiddenFields,
|
|
48
|
+
req: req,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Step 5: Fall back to ID if no value loaded
|
|
53
|
+
if (!relationshipValue) {
|
|
54
|
+
relationshipValue = id;
|
|
55
|
+
}
|
|
56
|
+
// Step 6: Update the document with the populated value
|
|
57
|
+
updateDocumentWithPopulatedValue({
|
|
58
|
+
dataReference,
|
|
59
|
+
field,
|
|
60
|
+
relationshipValue,
|
|
61
|
+
location: { index, key },
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
export const relationshipPopulationPromise = async ({ currentDepth, depth, draft, fallbackLocale, field, locale, overrideAccess, populate: populateArg, req, showHiddenFields, siblingDoc, }) => {
|
|
65
|
+
const resultingDoc = siblingDoc;
|
|
66
|
+
const fieldForChecks = field;
|
|
67
|
+
const maxDepth = fieldHasMaxDepth(fieldForChecks) ? field.maxDepth : undefined;
|
|
68
|
+
const populateDepth = maxDepth !== undefined && maxDepth < depth ? maxDepth : depth;
|
|
69
|
+
const rowPromises = [];
|
|
70
|
+
const siblingFieldValue = siblingDoc[field.name];
|
|
71
|
+
const siblingFieldRecord = typeof siblingFieldValue === 'object' && siblingFieldValue !== null
|
|
72
|
+
? siblingFieldValue
|
|
73
|
+
: null;
|
|
74
|
+
if (field.type === 'join' || (fieldSupportsMany(fieldForChecks) && field.hasMany)) {
|
|
75
|
+
if (fieldShouldBeLocalized({ field: fieldForChecks, parentIsLocalized: false }) &&
|
|
76
|
+
locale === 'all' &&
|
|
77
|
+
siblingFieldRecord) {
|
|
78
|
+
Object.keys(siblingFieldRecord).forEach((localeKey) => {
|
|
79
|
+
const localeValue = siblingFieldRecord[localeKey];
|
|
80
|
+
if (Array.isArray(localeValue)) {
|
|
81
|
+
const localeValues = localeValue;
|
|
82
|
+
localeValues.forEach((_, index) => {
|
|
83
|
+
const rowPromise = async () => {
|
|
84
|
+
await populate({
|
|
85
|
+
currentDepth,
|
|
86
|
+
data: localeValues[index],
|
|
87
|
+
dataReference: resultingDoc,
|
|
88
|
+
depth: populateDepth,
|
|
89
|
+
draft,
|
|
90
|
+
fallbackLocale,
|
|
91
|
+
field,
|
|
92
|
+
index,
|
|
93
|
+
key: localeKey,
|
|
94
|
+
locale,
|
|
95
|
+
overrideAccess,
|
|
96
|
+
populateArg: populateArg || undefined,
|
|
97
|
+
req,
|
|
98
|
+
showHiddenFields,
|
|
99
|
+
});
|
|
100
|
+
};
|
|
101
|
+
rowPromises.push(rowPromise());
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
else if (Array.isArray(siblingFieldValue) ||
|
|
107
|
+
Array.isArray(siblingFieldRecord?.docs) ||
|
|
108
|
+
Array.isArray(siblingDoc[`${field.name}_ids`])) {
|
|
109
|
+
const docsValue = siblingFieldRecord?.docs;
|
|
110
|
+
const idsValue = siblingDoc[`${field.name}_ids`];
|
|
111
|
+
const relationshipArray = Array.isArray(siblingFieldValue)
|
|
112
|
+
? siblingFieldValue
|
|
113
|
+
: Array.isArray(docsValue)
|
|
114
|
+
? docsValue
|
|
115
|
+
: idsValue;
|
|
116
|
+
relationshipArray.forEach((relatedDoc, index) => {
|
|
117
|
+
const rowPromise = async () => {
|
|
118
|
+
if (relatedDoc) {
|
|
119
|
+
const relatedDocRecord = typeof relatedDoc === 'object' && relatedDoc !== null
|
|
120
|
+
? relatedDoc
|
|
121
|
+
: null;
|
|
122
|
+
const relatedId = relatedDocRecord?.id;
|
|
123
|
+
await populate({
|
|
124
|
+
currentDepth,
|
|
125
|
+
data: !(field.type === 'join' && Array.isArray(field.collection)) && relatedId
|
|
126
|
+
? relatedId
|
|
127
|
+
: relatedDoc,
|
|
128
|
+
dataReference: resultingDoc,
|
|
129
|
+
depth: populateDepth,
|
|
130
|
+
draft,
|
|
131
|
+
fallbackLocale,
|
|
132
|
+
field,
|
|
133
|
+
index,
|
|
134
|
+
locale,
|
|
135
|
+
overrideAccess,
|
|
136
|
+
populateArg: populateArg || undefined,
|
|
137
|
+
req,
|
|
138
|
+
showHiddenFields,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
rowPromises.push(rowPromise());
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
else if (field.localized && locale === 'all' && siblingFieldRecord) {
|
|
147
|
+
Object.keys(siblingFieldRecord).forEach((localeKey) => {
|
|
148
|
+
const rowPromise = async () => {
|
|
149
|
+
await populate({
|
|
150
|
+
currentDepth,
|
|
151
|
+
data: siblingFieldRecord[localeKey],
|
|
152
|
+
dataReference: resultingDoc,
|
|
153
|
+
depth: populateDepth,
|
|
154
|
+
draft,
|
|
155
|
+
fallbackLocale,
|
|
156
|
+
field,
|
|
157
|
+
key: localeKey,
|
|
158
|
+
locale,
|
|
159
|
+
overrideAccess,
|
|
160
|
+
populateArg: populateArg || undefined,
|
|
161
|
+
req,
|
|
162
|
+
showHiddenFields,
|
|
163
|
+
});
|
|
164
|
+
};
|
|
165
|
+
rowPromises.push(rowPromise());
|
|
166
|
+
});
|
|
167
|
+
await Promise.all(rowPromises);
|
|
168
|
+
}
|
|
169
|
+
else if (siblingFieldValue || siblingDoc[`${field.name}_id`]) {
|
|
170
|
+
// For relationships, the data might be in the FK column
|
|
171
|
+
const relationshipData = siblingFieldValue || siblingDoc[`${field.name}_id`];
|
|
172
|
+
await populate({
|
|
173
|
+
currentDepth,
|
|
174
|
+
data: relationshipData,
|
|
175
|
+
dataReference: resultingDoc,
|
|
176
|
+
depth: populateDepth,
|
|
177
|
+
draft,
|
|
178
|
+
fallbackLocale,
|
|
179
|
+
field,
|
|
180
|
+
locale,
|
|
181
|
+
overrideAccess,
|
|
182
|
+
populateArg: populateArg || undefined,
|
|
183
|
+
req,
|
|
184
|
+
showHiddenFields,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
await Promise.all(rowPromises);
|
|
188
|
+
};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RevealUI Core Implementation
|
|
3
|
+
*
|
|
4
|
+
* Main entry point that re-exports from organized modules.
|
|
5
|
+
*/
|
|
6
|
+
export { RevealUICollection } from './collections/CollectionOperations.js';
|
|
7
|
+
export { RevealUIGlobal } from './globals/GlobalOperations.js';
|
|
8
|
+
export { createLogger, defaultLogger, Logger, type RevealUILogger, } from './instance/logger.js';
|
|
9
|
+
export { createRevealUIInstance } from './instance/RevealUIInstance.js';
|
|
10
|
+
export { buildWhereClause, extractWhereValues, } from './queries/queryBuilder.js';
|
|
11
|
+
export { getRelationshipFields, validateRelationshipMetadata, } from './relationships/analyzer.js';
|
|
12
|
+
export { relationshipPopulationPromise } from './relationships/population.js';
|
|
13
|
+
export { flattenResult } from './utils/flattenResult.js';
|
|
14
|
+
import type { RevealUITraverseFieldsArgs, RevealUITraverseFieldsResult } from './types/index.js';
|
|
15
|
+
export declare function afterChangeTraverseFields(args: RevealUITraverseFieldsArgs): Promise<RevealUITraverseFieldsResult>;
|
|
16
|
+
export declare function afterReadTraverseFields(args: RevealUITraverseFieldsArgs): Promise<RevealUITraverseFieldsResult>;
|
|
17
|
+
export declare function beforeChangeTraverseFields(args: RevealUITraverseFieldsArgs): Promise<RevealUITraverseFieldsResult>;
|
|
18
|
+
export declare function beforeValidateTraverseFields(args: RevealUITraverseFieldsArgs): Promise<RevealUITraverseFieldsResult>;
|
|
19
|
+
import type { RevealUIDependencyCheckArgs } from './types/index.js';
|
|
20
|
+
export declare function checkDependencies(args: RevealUIDependencyCheckArgs): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* @deprecated Use deepMerge from '@revealui/core/config/utils' or '@revealui/core' instead
|
|
23
|
+
* This function is kept for backward compatibility but will be removed in a future version.
|
|
24
|
+
*/
|
|
25
|
+
export declare function deepMergeSimple<T extends Record<string, unknown>>(target: T, source: Partial<T>): T;
|
|
26
|
+
import type { JSONSchema4TypeName } from 'json-schema';
|
|
27
|
+
import type React from 'react';
|
|
28
|
+
import type { RevealUIBlock, RevealUIEnhancedField, RevealUIField, RevealUIRichTextAdapter } from './types/index.js';
|
|
29
|
+
export type { Field, RevealUIField, SanitizedConfig } from './types/index.js';
|
|
30
|
+
export type StaticLabel = string;
|
|
31
|
+
export type ServerFieldBase = RevealUIField;
|
|
32
|
+
export type RichTextAdapter = RevealUIRichTextAdapter;
|
|
33
|
+
export type RichTextField = RevealUIEnhancedField;
|
|
34
|
+
export type Data = Record<string, unknown>;
|
|
35
|
+
export type FormState = Record<string, unknown>;
|
|
36
|
+
export type { CollectionConfig, Config, GlobalConfig } from './types/index.js';
|
|
37
|
+
export type BlocksFieldClient = React.ComponentType<Record<string, unknown>>;
|
|
38
|
+
export type ClientBlock = React.ComponentType<Record<string, unknown>>;
|
|
39
|
+
export type CodeFieldClient = React.ComponentType<Record<string, unknown>>;
|
|
40
|
+
export type CodeFieldClientProps = Record<string, unknown>;
|
|
41
|
+
export type BlocksField = RevealUIField;
|
|
42
|
+
export type Block = RevealUIBlock;
|
|
43
|
+
export type BlockJSX = React.ReactElement;
|
|
44
|
+
export type BlockSlug = string;
|
|
45
|
+
export declare function withNullableJSONSchemaType(typeName: JSONSchema4TypeName, isRequired: boolean): JSONSchema4TypeName | JSONSchema4TypeName[] | undefined;
|
|
46
|
+
//# sourceMappingURL=revealui.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revealui.d.ts","sourceRoot":"","sources":["../src/revealui.ts"],"names":[],"mappings":"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"}
|
package/dist/revealui.js
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RevealUI Core Implementation
|
|
3
|
+
*
|
|
4
|
+
* Main entry point that re-exports from organized modules.
|
|
5
|
+
*/
|
|
6
|
+
// Collection and Global operations
|
|
7
|
+
export { RevealUICollection } from './collections/CollectionOperations.js';
|
|
8
|
+
export { RevealUIGlobal } from './globals/GlobalOperations.js';
|
|
9
|
+
// Logger
|
|
10
|
+
export { createLogger, defaultLogger, Logger, } from './instance/logger.js';
|
|
11
|
+
// Main instance creation
|
|
12
|
+
export { createRevealUIInstance } from './instance/RevealUIInstance.js';
|
|
13
|
+
// Query utilities
|
|
14
|
+
export { buildWhereClause, extractWhereValues, } from './queries/queryBuilder.js';
|
|
15
|
+
// Relationship utilities
|
|
16
|
+
export { getRelationshipFields, validateRelationshipMetadata, } from './relationships/analyzer.js';
|
|
17
|
+
export { relationshipPopulationPromise } from './relationships/population.js';
|
|
18
|
+
// Utilities
|
|
19
|
+
export { flattenResult } from './utils/flattenResult.js';
|
|
20
|
+
import { traverseFieldsCore } from './fieldTraversal.js';
|
|
21
|
+
export async function afterChangeTraverseFields(args) {
|
|
22
|
+
// Traverse fields after changes have been made
|
|
23
|
+
// This allows post-processing, side effects, and cleanup
|
|
24
|
+
return traverseFieldsCore(args, 'afterChange');
|
|
25
|
+
}
|
|
26
|
+
export async function afterReadTraverseFields(args) {
|
|
27
|
+
// Traverse fields after data has been read from the database
|
|
28
|
+
// This allows formatting, transformation, and relationship population
|
|
29
|
+
return traverseFieldsCore(args, 'afterRead');
|
|
30
|
+
}
|
|
31
|
+
export async function beforeChangeTraverseFields(args) {
|
|
32
|
+
// Traverse fields before changes are applied
|
|
33
|
+
// This allows validation, transformation, and default value assignment
|
|
34
|
+
return traverseFieldsCore(args, 'beforeChange');
|
|
35
|
+
}
|
|
36
|
+
export async function beforeValidateTraverseFields(args) {
|
|
37
|
+
// Traverse fields before validation runs
|
|
38
|
+
// This allows data preparation, type coercion, and required field checks
|
|
39
|
+
return traverseFieldsCore(args, 'beforeValidate');
|
|
40
|
+
}
|
|
41
|
+
export function checkDependencies(args) {
|
|
42
|
+
const { field } = args;
|
|
43
|
+
// Check for conditional fields (fields that depend on other fields via admin.condition)
|
|
44
|
+
if ('admin' in field &&
|
|
45
|
+
field.admin &&
|
|
46
|
+
typeof field.admin === 'object' &&
|
|
47
|
+
'condition' in field.admin) {
|
|
48
|
+
const condition = field.admin.condition;
|
|
49
|
+
// If condition is a function, we can't evaluate it without data
|
|
50
|
+
// Return true to allow the field to be processed (validation will happen later with data)
|
|
51
|
+
if (typeof condition === 'function') {
|
|
52
|
+
// Condition functions require data to evaluate, so we can't check dependencies here
|
|
53
|
+
// This is acceptable - conditions are evaluated at runtime when data is available
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
// If condition is a boolean or other simple type, evaluate it directly
|
|
57
|
+
if (typeof condition === 'boolean') {
|
|
58
|
+
return condition;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Check for relationship dependencies
|
|
62
|
+
if (field.type === 'relationship' || field.type === 'upload') {
|
|
63
|
+
// Validate that relationTo is specified
|
|
64
|
+
if ('relationTo' in field && field.relationTo) {
|
|
65
|
+
const relationTo = field.relationTo;
|
|
66
|
+
const targetCollections = Array.isArray(relationTo) ? relationTo : [relationTo];
|
|
67
|
+
// Basic validation: ensure we have at least one target collection
|
|
68
|
+
// In a full implementation, we'd check if the collections exist in the config
|
|
69
|
+
return (targetCollections.length > 0 &&
|
|
70
|
+
targetCollections.every((coll) => typeof coll === 'string' && coll.length > 0));
|
|
71
|
+
}
|
|
72
|
+
// Relationship field without relationTo is invalid
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
// No dependencies found or all dependencies are valid
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
// Deep merge utility - re-exported from config/utils for convenience
|
|
79
|
+
import { deepMerge as coreDeepMerge } from './config/utils.js';
|
|
80
|
+
/**
|
|
81
|
+
* @deprecated Use deepMerge from '@revealui/core/config/utils' or '@revealui/core' instead
|
|
82
|
+
* This function is kept for backward compatibility but will be removed in a future version.
|
|
83
|
+
*/
|
|
84
|
+
export function deepMergeSimple(target, source) {
|
|
85
|
+
// Use the canonical deepMerge implementation from config/utils
|
|
86
|
+
return coreDeepMerge(target, source);
|
|
87
|
+
}
|
|
88
|
+
// JSON Schema utility
|
|
89
|
+
export function withNullableJSONSchemaType(typeName, isRequired) {
|
|
90
|
+
// Return the type name, or an array including null if not required
|
|
91
|
+
return isRequired ? typeName : [typeName, 'null'];
|
|
92
|
+
}
|