@revealui/core 0.0.1-pre.4 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -202
- package/README.md +108 -152
- 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 +316 -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 +411 -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 +385 -0
- package/dist/caching/service-worker.d.ts +154 -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 +23 -0
- package/dist/client/admin/utils/auth.d.ts.map +1 -0
- package/dist/client/admin/utils/auth.js +52 -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 +11 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +13 -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 +34 -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/safe-parse.d.ts +26 -0
- package/dist/database/safe-parse.d.ts.map +1 -0
- package/dist/database/safe-parse.js +42 -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 +176 -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 +214 -0
- package/dist/error-handling/error-reporter.d.ts.map +1 -0
- package/dist/error-handling/error-reporter.js +477 -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 +86 -0
- package/dist/features.d.ts.map +1 -0
- package/dist/features.js +92 -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 +16 -0
- package/dist/generated/types/index.d.ts.map +1 -0
- package/dist/generated/types/index.js +21 -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 +126 -33
- package/dist/instance/RevealUIInstance.d.ts +6 -0
- package/dist/instance/RevealUIInstance.d.ts.map +1 -0
- package/dist/instance/RevealUIInstance.js +306 -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 +41 -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 +27 -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 +34 -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 +45 -0
- package/dist/license.d.ts +82 -0
- package/dist/license.d.ts.map +1 -0
- package/dist/license.js +193 -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 +375 -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 +131 -0
- package/dist/optimization/code-splitting.d.ts.map +1 -0
- package/dist/optimization/code-splitting.js +277 -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 +255 -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 +476 -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 +517 -0
- package/dist/security/gdpr.d.ts +300 -0
- package/dist/security/gdpr.d.ts.map +1 -0
- package/dist/security/gdpr.js +465 -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 +12 -0
- package/dist/types/generated.d.ts.map +1 -0
- package/dist/types/generated.js +10 -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 +241 -724
- package/LICENSE_SUMMARY.md +0 -55
- package/NOTICE +0 -34
- 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 -5
- 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/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,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature flag system for RevealUI Pro/Enterprise tiers.
|
|
3
|
+
*
|
|
4
|
+
* Gates premium features based on the current license tier.
|
|
5
|
+
* Free (OSS) users get the core CMS framework.
|
|
6
|
+
* Pro/Enterprise users unlock AI, advanced sync, dashboard, etc.
|
|
7
|
+
*
|
|
8
|
+
* @dependencies
|
|
9
|
+
* - ./license.ts - License validation and tier checking
|
|
10
|
+
*/
|
|
11
|
+
import { type LicenseTier } from './license.js';
|
|
12
|
+
/** All gated features in RevealUI */
|
|
13
|
+
export interface FeatureFlags {
|
|
14
|
+
/** AI agent system (Pro: 1 provider, Enterprise: all providers) */
|
|
15
|
+
ai: boolean;
|
|
16
|
+
/** AI memory system — working + episodic + vector (Max: basic, Enterprise: full) */
|
|
17
|
+
aiMemory: boolean;
|
|
18
|
+
/** MCP server integration */
|
|
19
|
+
mcp: boolean;
|
|
20
|
+
/** Editor integration daemon */
|
|
21
|
+
editors: boolean;
|
|
22
|
+
/** AI harness integration (Claude Code, Cursor, Copilot coordination) */
|
|
23
|
+
harnesses: boolean;
|
|
24
|
+
/** Built-in Stripe payment processing */
|
|
25
|
+
payments: boolean;
|
|
26
|
+
/** Multi-tenant site management */
|
|
27
|
+
multiTenant: boolean;
|
|
28
|
+
/** White-label admin dashboard */
|
|
29
|
+
whiteLabel: boolean;
|
|
30
|
+
/** SSO/SAML authentication */
|
|
31
|
+
sso: boolean;
|
|
32
|
+
/** BYOK server-side key storage (Max+) */
|
|
33
|
+
byokServerSide: boolean;
|
|
34
|
+
/** Multi-provider AI (Max+: 2 providers, Enterprise: all providers) */
|
|
35
|
+
aiMultiProvider: boolean;
|
|
36
|
+
/** Audit logging and compliance trail */
|
|
37
|
+
auditLog: boolean;
|
|
38
|
+
/** Full real-time sync with conflict resolution */
|
|
39
|
+
advancedSync: boolean;
|
|
40
|
+
/** Monitoring dashboard */
|
|
41
|
+
dashboard: boolean;
|
|
42
|
+
/** Custom domain mapping */
|
|
43
|
+
customDomain: boolean;
|
|
44
|
+
/** Analytics and conversion tracking */
|
|
45
|
+
analytics: boolean;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Returns the current feature flags based on the active license tier.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* import { getFeatures } from '@revealui/core/features'
|
|
53
|
+
*
|
|
54
|
+
* const features = getFeatures()
|
|
55
|
+
* if (features.ai) {
|
|
56
|
+
* // Enable AI agent system
|
|
57
|
+
* }
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export declare function getFeatures(): FeatureFlags;
|
|
61
|
+
/**
|
|
62
|
+
* Check if a specific feature is enabled.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* import { isFeatureEnabled } from '@revealui/core/features'
|
|
67
|
+
*
|
|
68
|
+
* if (isFeatureEnabled('ai')) {
|
|
69
|
+
* // AI is available
|
|
70
|
+
* }
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export declare function isFeatureEnabled(feature: keyof FeatureFlags): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Returns all features available at a given tier (useful for pricing pages).
|
|
76
|
+
*/
|
|
77
|
+
export declare function getFeaturesForTier(tier: LicenseTier): FeatureFlags;
|
|
78
|
+
/**
|
|
79
|
+
* Returns the minimum tier required for a given feature.
|
|
80
|
+
*/
|
|
81
|
+
export declare function getRequiredTier(feature: keyof FeatureFlags): LicenseTier;
|
|
82
|
+
/**
|
|
83
|
+
* Returns the current license tier. Convenience re-export.
|
|
84
|
+
*/
|
|
85
|
+
export { getCurrentTier } from './license.js';
|
|
86
|
+
//# sourceMappingURL=features.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAE3D,qCAAqC;AACrC,MAAM,WAAW,YAAY;IAC3B,mEAAmE;IACnE,EAAE,EAAE,OAAO,CAAA;IACX,oFAAoF;IACpF,QAAQ,EAAE,OAAO,CAAA;IACjB,6BAA6B;IAC7B,GAAG,EAAE,OAAO,CAAA;IACZ,gCAAgC;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,yEAAyE;IACzE,SAAS,EAAE,OAAO,CAAA;IAClB,yCAAyC;IACzC,QAAQ,EAAE,OAAO,CAAA;IACjB,mCAAmC;IACnC,WAAW,EAAE,OAAO,CAAA;IACpB,kCAAkC;IAClC,UAAU,EAAE,OAAO,CAAA;IACnB,8BAA8B;IAC9B,GAAG,EAAE,OAAO,CAAA;IACZ,0CAA0C;IAC1C,cAAc,EAAE,OAAO,CAAA;IACvB,uEAAuE;IACvE,eAAe,EAAE,OAAO,CAAA;IACxB,yCAAyC;IACzC,QAAQ,EAAE,OAAO,CAAA;IACjB,mDAAmD;IACnD,YAAY,EAAE,OAAO,CAAA;IACrB,2BAA2B;IAC3B,SAAS,EAAE,OAAO,CAAA;IAClB,4BAA4B;IAC5B,YAAY,EAAE,OAAO,CAAA;IACrB,wCAAwC;IACxC,SAAS,EAAE,OAAO,CAAA;CACnB;AAsBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,IAAI,YAAY,CAQ1C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,YAAY,GAAG,OAAO,CAGrE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,CAelE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,YAAY,GAAG,WAAW,CAExE;AAED;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA"}
|
package/dist/features.js
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature flag system for RevealUI Pro/Enterprise tiers.
|
|
3
|
+
*
|
|
4
|
+
* Gates premium features based on the current license tier.
|
|
5
|
+
* Free (OSS) users get the core CMS framework.
|
|
6
|
+
* Pro/Enterprise users unlock AI, advanced sync, dashboard, etc.
|
|
7
|
+
*
|
|
8
|
+
* @dependencies
|
|
9
|
+
* - ./license.ts - License validation and tier checking
|
|
10
|
+
*/
|
|
11
|
+
import { isLicensed } from './license.js';
|
|
12
|
+
/** Feature-to-tier mapping: minimum tier required for each feature */
|
|
13
|
+
const featureTierMap = {
|
|
14
|
+
ai: 'pro',
|
|
15
|
+
mcp: 'pro',
|
|
16
|
+
editors: 'pro',
|
|
17
|
+
harnesses: 'pro',
|
|
18
|
+
payments: 'pro',
|
|
19
|
+
advancedSync: 'pro',
|
|
20
|
+
dashboard: 'pro',
|
|
21
|
+
customDomain: 'pro',
|
|
22
|
+
analytics: 'pro',
|
|
23
|
+
aiMemory: 'max',
|
|
24
|
+
byokServerSide: 'max',
|
|
25
|
+
aiMultiProvider: 'max',
|
|
26
|
+
auditLog: 'max',
|
|
27
|
+
multiTenant: 'enterprise',
|
|
28
|
+
whiteLabel: 'enterprise',
|
|
29
|
+
sso: 'enterprise',
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Returns the current feature flags based on the active license tier.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* import { getFeatures } from '@revealui/core/features'
|
|
37
|
+
*
|
|
38
|
+
* const features = getFeatures()
|
|
39
|
+
* if (features.ai) {
|
|
40
|
+
* // Enable AI agent system
|
|
41
|
+
* }
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export function getFeatures() {
|
|
45
|
+
const flags = {};
|
|
46
|
+
for (const [feature, requiredTier] of Object.entries(featureTierMap)) {
|
|
47
|
+
flags[feature] = isLicensed(requiredTier);
|
|
48
|
+
}
|
|
49
|
+
return flags;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Check if a specific feature is enabled.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* import { isFeatureEnabled } from '@revealui/core/features'
|
|
57
|
+
*
|
|
58
|
+
* if (isFeatureEnabled('ai')) {
|
|
59
|
+
* // AI is available
|
|
60
|
+
* }
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export function isFeatureEnabled(feature) {
|
|
64
|
+
const requiredTier = featureTierMap[feature];
|
|
65
|
+
return isLicensed(requiredTier);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Returns all features available at a given tier (useful for pricing pages).
|
|
69
|
+
*/
|
|
70
|
+
export function getFeaturesForTier(tier) {
|
|
71
|
+
const tierRank = {
|
|
72
|
+
free: 0,
|
|
73
|
+
pro: 1,
|
|
74
|
+
max: 2,
|
|
75
|
+
enterprise: 3,
|
|
76
|
+
};
|
|
77
|
+
const flags = {};
|
|
78
|
+
for (const [feature, requiredTier] of Object.entries(featureTierMap)) {
|
|
79
|
+
flags[feature] = tierRank[tier] >= tierRank[requiredTier];
|
|
80
|
+
}
|
|
81
|
+
return flags;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Returns the minimum tier required for a given feature.
|
|
85
|
+
*/
|
|
86
|
+
export function getRequiredTier(feature) {
|
|
87
|
+
return featureTierMap[feature];
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Returns the current license tier. Convenience re-export.
|
|
91
|
+
*/
|
|
92
|
+
export { getCurrentTier } from './license.js';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Field Traversal Utilities
|
|
3
|
+
*
|
|
4
|
+
* Modern, performant field traversal using parallel processing with Promise.allSettled()
|
|
5
|
+
* Processes fields concurrently for maximum performance while maintaining error resilience.
|
|
6
|
+
*
|
|
7
|
+
* @module @revealui/core/fieldTraversal
|
|
8
|
+
*/
|
|
9
|
+
import type { RevealUITraverseFieldsArgs, RevealUITraverseFieldsResult } from './types/legacy.js';
|
|
10
|
+
/**
|
|
11
|
+
* Traversal mode determines how fields are processed
|
|
12
|
+
*/
|
|
13
|
+
type TraversalMode = 'afterChange' | 'afterRead' | 'beforeChange' | 'beforeValidate';
|
|
14
|
+
/**
|
|
15
|
+
* Core field traversal logic using parallel processing
|
|
16
|
+
*
|
|
17
|
+
* Modern TypeScript approach using Promise.allSettled() for:
|
|
18
|
+
* - Maximum performance (10x faster than sequential)
|
|
19
|
+
* - Error resilience (individual errors don't stop processing)
|
|
20
|
+
* - Parallel execution (all fields processed simultaneously)
|
|
21
|
+
*
|
|
22
|
+
* Performance: O(1) time (parallel) vs O(n) time (sequential)
|
|
23
|
+
*/
|
|
24
|
+
export declare function traverseFieldsCore(args: RevealUITraverseFieldsArgs, mode: TraversalMode): Promise<RevealUITraverseFieldsResult>;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=fieldTraversal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fieldTraversal.d.ts","sourceRoot":"","sources":["../src/fieldTraversal.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AAEjG;;GAEG;AACH,KAAK,aAAa,GAAG,aAAa,GAAG,WAAW,GAAG,cAAc,GAAG,gBAAgB,CAAA;AAEpF;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,0BAA0B,EAChC,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,4BAA4B,CAAC,CA4DvC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Field Traversal Utilities
|
|
3
|
+
*
|
|
4
|
+
* Modern, performant field traversal using parallel processing with Promise.allSettled()
|
|
5
|
+
* Processes fields concurrently for maximum performance while maintaining error resilience.
|
|
6
|
+
*
|
|
7
|
+
* @module @revealui/core/fieldTraversal
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Core field traversal logic using parallel processing
|
|
11
|
+
*
|
|
12
|
+
* Modern TypeScript approach using Promise.allSettled() for:
|
|
13
|
+
* - Maximum performance (10x faster than sequential)
|
|
14
|
+
* - Error resilience (individual errors don't stop processing)
|
|
15
|
+
* - Parallel execution (all fields processed simultaneously)
|
|
16
|
+
*
|
|
17
|
+
* Performance: O(1) time (parallel) vs O(n) time (sequential)
|
|
18
|
+
*/
|
|
19
|
+
export async function traverseFieldsCore(args, mode) {
|
|
20
|
+
const { fields = [], data = {}, path = '', callback } = args;
|
|
21
|
+
// Validate inputs
|
|
22
|
+
if (!Array.isArray(fields)) {
|
|
23
|
+
return {
|
|
24
|
+
traversed: 0,
|
|
25
|
+
found: [],
|
|
26
|
+
data: { ...data },
|
|
27
|
+
errors: [{ field: 'root', message: 'Fields must be an array' }],
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
// Filter fields using callback (synchronous filtering before async processing)
|
|
31
|
+
const fieldsToProcess = callback
|
|
32
|
+
? fields.filter((field) => {
|
|
33
|
+
const fieldPath = path ? `${path}.${field.name || ''}` : field.name || 'unnamed';
|
|
34
|
+
return callback(field, fieldPath) !== false;
|
|
35
|
+
})
|
|
36
|
+
: fields;
|
|
37
|
+
// Process all fields in parallel using Promise.allSettled()
|
|
38
|
+
// This ensures all fields are processed concurrently, maximizing performance
|
|
39
|
+
const results = await Promise.allSettled(fieldsToProcess.map(async (field) => {
|
|
40
|
+
const fieldPath = path ? `${path}.${field.name || ''}` : field.name || 'unnamed';
|
|
41
|
+
// Process field (including nested fields recursively)
|
|
42
|
+
await processField(field, fieldPath, mode);
|
|
43
|
+
return field;
|
|
44
|
+
}));
|
|
45
|
+
// Aggregate results: separate successful fields from errors
|
|
46
|
+
const found = [];
|
|
47
|
+
const errors = [];
|
|
48
|
+
results.forEach((result, index) => {
|
|
49
|
+
const field = fieldsToProcess[index];
|
|
50
|
+
if (result.status === 'fulfilled') {
|
|
51
|
+
found.push(result.value);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
errors.push({
|
|
55
|
+
field: field?.name || 'unknown',
|
|
56
|
+
message: result.reason instanceof Error
|
|
57
|
+
? result.reason.message
|
|
58
|
+
: 'Unknown error during field traversal',
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
return {
|
|
63
|
+
traversed: found.length,
|
|
64
|
+
found,
|
|
65
|
+
data: { ...data },
|
|
66
|
+
errors: errors.length > 0 ? errors : undefined,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Process a single field based on its type
|
|
71
|
+
*
|
|
72
|
+
* Handles field validation and recursive traversal of nested fields.
|
|
73
|
+
* This is a minimal implementation that can be extended for mode-specific processing.
|
|
74
|
+
*/
|
|
75
|
+
async function processField(field, path, mode) {
|
|
76
|
+
// Basic validation: ensure field has required properties
|
|
77
|
+
if (!field.type) {
|
|
78
|
+
throw new Error(`Field missing type property at path: ${path}`);
|
|
79
|
+
}
|
|
80
|
+
// Handle nested field types that need recursive traversal
|
|
81
|
+
// Process nested fields in parallel where possible
|
|
82
|
+
if (field.type === 'array' && field.fields) {
|
|
83
|
+
// Array fields contain nested fields
|
|
84
|
+
// Process nested fields in parallel (they're independent)
|
|
85
|
+
await Promise.allSettled(field.fields.map(async (nestedField) => {
|
|
86
|
+
const nestedPath = nestedField.name ? `${path}.${nestedField.name}` : path;
|
|
87
|
+
await processField(nestedField, nestedPath, mode);
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
if (field.type === 'group' && field.fields) {
|
|
91
|
+
// Group fields contain nested fields
|
|
92
|
+
await Promise.allSettled(field.fields.map(async (nestedField) => {
|
|
93
|
+
const nestedPath = nestedField.name ? `${path}.${nestedField.name}` : path;
|
|
94
|
+
await processField(nestedField, nestedPath, mode);
|
|
95
|
+
}));
|
|
96
|
+
}
|
|
97
|
+
if (field.type === 'blocks' && field.blocks) {
|
|
98
|
+
// Block fields contain block definitions, each with fields
|
|
99
|
+
if (Array.isArray(field.blocks)) {
|
|
100
|
+
await Promise.allSettled(field.blocks.map(async (blockUnknown) => {
|
|
101
|
+
const block = blockUnknown;
|
|
102
|
+
if (block &&
|
|
103
|
+
typeof block === 'object' &&
|
|
104
|
+
'fields' in block &&
|
|
105
|
+
Array.isArray(block.fields)) {
|
|
106
|
+
const blockPath = `${path}.${block.slug || 'block'}`;
|
|
107
|
+
await Promise.allSettled(block.fields.map(async (blockField) => {
|
|
108
|
+
const blockFieldPath = blockField.name
|
|
109
|
+
? `${blockPath}.${blockField.name}`
|
|
110
|
+
: blockPath;
|
|
111
|
+
await processField(blockField, blockFieldPath, mode);
|
|
112
|
+
}));
|
|
113
|
+
}
|
|
114
|
+
}));
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (field.type === 'tabs' && field.tabs) {
|
|
118
|
+
// Tab fields contain tab definitions, each with fields
|
|
119
|
+
if (Array.isArray(field.tabs)) {
|
|
120
|
+
await Promise.allSettled(field.tabs.map(async (tabUnknown) => {
|
|
121
|
+
const tab = tabUnknown;
|
|
122
|
+
if (tab && 'fields' in tab && Array.isArray(tab.fields)) {
|
|
123
|
+
const tabPath = `${path}.${tab.name || 'tab'}`;
|
|
124
|
+
await Promise.allSettled(tab.fields.map(async (tabField) => {
|
|
125
|
+
const tabFieldPath = tabField.name ? `${tabPath}.${tabField.name}` : tabPath;
|
|
126
|
+
await processField(tabField, tabFieldPath, mode);
|
|
127
|
+
}));
|
|
128
|
+
}
|
|
129
|
+
}));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { RevealUIField } from '../../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Field configuration types for RevealUI
|
|
4
|
+
*/
|
|
5
|
+
export type Field = RevealUIField;
|
|
6
|
+
export type RelationshipField = RevealUIField & {
|
|
7
|
+
type: 'relationship';
|
|
8
|
+
relationTo: string | string[];
|
|
9
|
+
hasMany?: boolean;
|
|
10
|
+
maxDepth?: number;
|
|
11
|
+
localized?: boolean;
|
|
12
|
+
};
|
|
13
|
+
export type UploadField = RevealUIField & {
|
|
14
|
+
type: 'upload';
|
|
15
|
+
relationTo: string;
|
|
16
|
+
};
|
|
17
|
+
export type JoinField = RevealUIField & {
|
|
18
|
+
type: 'join';
|
|
19
|
+
collection: string | string[];
|
|
20
|
+
on?: string;
|
|
21
|
+
};
|
|
22
|
+
export type TabAsField = RevealUIField & {
|
|
23
|
+
type: 'tabs';
|
|
24
|
+
tabs: Array<{
|
|
25
|
+
name: string;
|
|
26
|
+
fields: Field[];
|
|
27
|
+
}>;
|
|
28
|
+
};
|
|
29
|
+
export type Block = {
|
|
30
|
+
slug: string;
|
|
31
|
+
fields: Field[];
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Utility functions for field types
|
|
35
|
+
*/
|
|
36
|
+
export declare const fieldHasMaxDepth: (field: Field) => field is Field & {
|
|
37
|
+
maxDepth: number;
|
|
38
|
+
};
|
|
39
|
+
export declare const fieldShouldBeLocalized: ({ field, parentIsLocalized, }: {
|
|
40
|
+
field: Field;
|
|
41
|
+
parentIsLocalized?: boolean;
|
|
42
|
+
}) => boolean;
|
|
43
|
+
export declare const fieldSupportsMany: (field: Field) => field is Field & {
|
|
44
|
+
hasMany: boolean;
|
|
45
|
+
};
|
|
46
|
+
export declare const fieldAffectsData: (field: Field) => boolean;
|
|
47
|
+
export declare const tabHasName: (tab: TabAsField) => boolean;
|
|
48
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/fields/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEzD;;GAEG;AAEH,MAAM,MAAM,KAAK,GAAG,aAAa,CAAA;AAEjC,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG;IAC9C,IAAI,EAAE,cAAc,CAAA;IACpB,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG;IACxC,IAAI,EAAE,QAAQ,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,KAAK,CAAC;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,KAAK,EAAE,CAAA;KAChB,CAAC,CAAA;CACH,CAAA;AAED,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,KAAK,EAAE,CAAA;CAChB,CAAA;AAED;;GAEG;AAEH,eAAO,MAAM,gBAAgB,GAAI,OAAO,KAAK,KAAG,KAAK,IAAI,KAAK,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAElF,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,+BAGpC;IACD,KAAK,EAAE,KAAK,CAAA;IACZ,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B,KAAG,OAGH,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,OAAO,KAAK,KAAG,KAAK,IAAI,KAAK,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAEnF,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,OAAO,KAAK,KAAG,OAE/C,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,KAAK,UAAU,KAAG,OAE5C,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for field types
|
|
3
|
+
*/
|
|
4
|
+
export const fieldHasMaxDepth = (field) => {
|
|
5
|
+
return 'maxDepth' in field && typeof field.maxDepth === 'number';
|
|
6
|
+
};
|
|
7
|
+
export const fieldShouldBeLocalized = ({ field, parentIsLocalized, }) => {
|
|
8
|
+
if (parentIsLocalized)
|
|
9
|
+
return true;
|
|
10
|
+
return field.localized === true;
|
|
11
|
+
};
|
|
12
|
+
export const fieldSupportsMany = (field) => {
|
|
13
|
+
return 'hasMany' in field && field.hasMany === true;
|
|
14
|
+
};
|
|
15
|
+
export const fieldAffectsData = (field) => {
|
|
16
|
+
return field.type !== 'ui' && field.type !== 'tab';
|
|
17
|
+
};
|
|
18
|
+
export const tabHasName = (tab) => {
|
|
19
|
+
return 'name' in tab && typeof tab.name === 'string';
|
|
20
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get Default Value for Field
|
|
3
|
+
* @module @revealui/core/fields/getDefaultValue
|
|
4
|
+
*/
|
|
5
|
+
import type { Field } from './config/types.js';
|
|
6
|
+
interface GetDefaultValueArgs {
|
|
7
|
+
field: Field;
|
|
8
|
+
locale?: string | null;
|
|
9
|
+
user?: unknown;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Gets the default value for a field
|
|
13
|
+
*/
|
|
14
|
+
export declare function getDefaultValue({ field, locale, user }: GetDefaultValueArgs): unknown;
|
|
15
|
+
export default getDefaultValue;
|
|
16
|
+
//# sourceMappingURL=getDefaultValue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDefaultValue.d.ts","sourceRoot":"","sources":["../../src/fields/getDefaultValue.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAE9C,UAAU,mBAAmB;IAC3B,KAAK,EAAE,KAAK,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAID;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,mBAAmB,GAAG,OAAO,CAarF;AAED,eAAe,eAAe,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get Default Value for Field
|
|
3
|
+
* @module @revealui/core/fields/getDefaultValue
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Gets the default value for a field
|
|
7
|
+
*/
|
|
8
|
+
export function getDefaultValue({ field, locale, user }) {
|
|
9
|
+
void locale;
|
|
10
|
+
void user;
|
|
11
|
+
if ('defaultValue' in field) {
|
|
12
|
+
if (typeof field.defaultValue === 'function') {
|
|
13
|
+
return field.defaultValue({ locale, user });
|
|
14
|
+
}
|
|
15
|
+
return field.defaultValue;
|
|
16
|
+
}
|
|
17
|
+
// Return undefined for fields without default values
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
export default getDefaultValue;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get Field Paths
|
|
3
|
+
* @module @revealui/core/fields/getFieldPaths
|
|
4
|
+
*/
|
|
5
|
+
import type { Field } from './config/types.js';
|
|
6
|
+
interface GetFieldPathsArgs {
|
|
7
|
+
field: Field;
|
|
8
|
+
path?: string;
|
|
9
|
+
parentPath?: string;
|
|
10
|
+
parentIsLocalized?: boolean;
|
|
11
|
+
}
|
|
12
|
+
interface FieldPathInfo {
|
|
13
|
+
path: string;
|
|
14
|
+
schemaPath: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Gets the path information for a field, handling nested structures
|
|
18
|
+
*/
|
|
19
|
+
export declare function getFieldPaths({ field, path, parentPath, parentIsLocalized, }: GetFieldPathsArgs): FieldPathInfo;
|
|
20
|
+
/**
|
|
21
|
+
* Modified version for compatibility
|
|
22
|
+
*/
|
|
23
|
+
export declare function getFieldPathsModified(args: GetFieldPathsArgs): FieldPathInfo;
|
|
24
|
+
export default getFieldPaths;
|
|
25
|
+
//# sourceMappingURL=getFieldPaths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFieldPaths.d.ts","sourceRoot":"","sources":["../../src/fields/getFieldPaths.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAE9C,UAAU,iBAAiB;IACzB,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,IAAI,EACJ,UAAe,EACf,iBAAyB,GAC1B,EAAE,iBAAiB,GAAG,aAAa,CAUnC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,GAAG,aAAa,CAE5E;AAED,eAAe,aAAa,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get Field Paths
|
|
3
|
+
* @module @revealui/core/fields/getFieldPaths
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Gets the path information for a field, handling nested structures
|
|
7
|
+
*/
|
|
8
|
+
export function getFieldPaths({ field, path, parentPath = '', parentIsLocalized = false, }) {
|
|
9
|
+
void parentIsLocalized;
|
|
10
|
+
const fieldName = field.name || '';
|
|
11
|
+
const fieldPath = path || (parentPath ? `${parentPath}.${fieldName}` : fieldName);
|
|
12
|
+
return {
|
|
13
|
+
path: fieldPath,
|
|
14
|
+
schemaPath: fieldPath,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Modified version for compatibility
|
|
19
|
+
*/
|
|
20
|
+
export function getFieldPathsModified(args) {
|
|
21
|
+
return getFieldPaths(args);
|
|
22
|
+
}
|
|
23
|
+
export default getFieldPaths;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { JsonObject, PopulateType, RequestContext, RevealRequest, SanitizedCollectionConfig, SanitizedGlobalConfig, SelectType, TypedFallbackLocale } from '../../../types/index.js';
|
|
2
|
+
export type AfterReadArgs<T extends JsonObject> = {
|
|
3
|
+
collection: null | SanitizedCollectionConfig;
|
|
4
|
+
context: RequestContext;
|
|
5
|
+
currentDepth?: number;
|
|
6
|
+
depth: number;
|
|
7
|
+
doc: T;
|
|
8
|
+
draft: boolean;
|
|
9
|
+
fallbackLocale: TypedFallbackLocale;
|
|
10
|
+
findMany?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Controls whether locales should be flattened into the requested locale.
|
|
13
|
+
* E.g.: { [locale]: fields } -> fields
|
|
14
|
+
*
|
|
15
|
+
* @default true
|
|
16
|
+
*/
|
|
17
|
+
flattenLocales?: boolean;
|
|
18
|
+
global: null | SanitizedGlobalConfig;
|
|
19
|
+
locale: string;
|
|
20
|
+
overrideAccess: boolean;
|
|
21
|
+
populate?: PopulateType;
|
|
22
|
+
req: RevealRequest;
|
|
23
|
+
select?: SelectType;
|
|
24
|
+
showHiddenFields: boolean;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* This function is responsible for the following actions, in order:
|
|
28
|
+
* - Remove hidden fields from response
|
|
29
|
+
* - Flatten locales into requested locale. If the input doc contains all locales, the output doc after this function will only contain the requested locale.
|
|
30
|
+
* - Sanitize outgoing data (point field, etc.)
|
|
31
|
+
* - Execute field hooks
|
|
32
|
+
* - Execute read access control
|
|
33
|
+
* - Populate relationships
|
|
34
|
+
*/
|
|
35
|
+
export declare function afterRead<T extends JsonObject>(args: AfterReadArgs<T>): Promise<T>;
|
|
36
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/afterRead/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,cAAc,EACd,aAAa,EACb,yBAAyB,EACzB,qBAAqB,EACrB,UAAU,EACV,mBAAmB,EACpB,MAAM,yBAAyB,CAAA;AAKhC,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,UAAU,IAAI;IAChD,UAAU,EAAE,IAAI,GAAG,yBAAyB,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,CAAC,CAAA;IACN,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,mBAAmB,CAAA;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,MAAM,EAAE,IAAI,GAAG,qBAAqB,CAAA;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,EAAE,aAAa,CAAA;IAClB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED;;;;;;;;GAQG;AAEH,wBAAsB,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAsFxF"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { getSelectMode } from '../../../utils/getSelectMode.js';
|
|
2
|
+
import { traverseFields } from './traverseFields.js';
|
|
3
|
+
/**
|
|
4
|
+
* This function is responsible for the following actions, in order:
|
|
5
|
+
* - Remove hidden fields from response
|
|
6
|
+
* - Flatten locales into requested locale. If the input doc contains all locales, the output doc after this function will only contain the requested locale.
|
|
7
|
+
* - Sanitize outgoing data (point field, etc.)
|
|
8
|
+
* - Execute field hooks
|
|
9
|
+
* - Execute read access control
|
|
10
|
+
* - Populate relationships
|
|
11
|
+
*/
|
|
12
|
+
export async function afterRead(args) {
|
|
13
|
+
const { collection, context, currentDepth: incomingCurrentDepth, depth: incomingDepth, doc: incomingDoc, draft, fallbackLocale, findMany, flattenLocales = true, global, locale, overrideAccess, populate, req, select, showHiddenFields, } = args;
|
|
14
|
+
const fieldPromises = [];
|
|
15
|
+
const populationPromises = [];
|
|
16
|
+
// Get depth configuration with defaults
|
|
17
|
+
// Note: defaultDepth and maxDepth are query-level, not config-level properties
|
|
18
|
+
const defaultDepth = 1;
|
|
19
|
+
const maxDepth = 10;
|
|
20
|
+
let depth = incomingDepth || incomingDepth === 0 ? parseInt(String(incomingDepth), 10) : defaultDepth;
|
|
21
|
+
if (depth > maxDepth) {
|
|
22
|
+
depth = maxDepth;
|
|
23
|
+
}
|
|
24
|
+
const currentDepth = incomingCurrentDepth || 1;
|
|
25
|
+
traverseFields({
|
|
26
|
+
collection,
|
|
27
|
+
context,
|
|
28
|
+
currentDepth,
|
|
29
|
+
depth,
|
|
30
|
+
doc: incomingDoc,
|
|
31
|
+
draft,
|
|
32
|
+
fallbackLocale,
|
|
33
|
+
fieldPromises,
|
|
34
|
+
fields: collection?.fields || global?.fields || [],
|
|
35
|
+
findMany: findMany ?? false,
|
|
36
|
+
flattenLocales,
|
|
37
|
+
global,
|
|
38
|
+
locale,
|
|
39
|
+
overrideAccess,
|
|
40
|
+
parentIndexPath: '',
|
|
41
|
+
parentIsLocalized: false,
|
|
42
|
+
parentPath: '',
|
|
43
|
+
parentSchemaPath: '',
|
|
44
|
+
populate,
|
|
45
|
+
populationPromises,
|
|
46
|
+
req,
|
|
47
|
+
select,
|
|
48
|
+
selectMode: select ? getSelectMode(select) : undefined,
|
|
49
|
+
showHiddenFields,
|
|
50
|
+
siblingDoc: incomingDoc,
|
|
51
|
+
});
|
|
52
|
+
/**
|
|
53
|
+
* Await all field and population promises in parallel.
|
|
54
|
+
* A field promise is able to add more field promises to the fieldPromises array, which will not be
|
|
55
|
+
* awaited in the first run.
|
|
56
|
+
* This is why we need to loop again to process the new field promises, until there are no more field promises left.
|
|
57
|
+
*/
|
|
58
|
+
let iterations = 0;
|
|
59
|
+
while (fieldPromises.length > 0 || populationPromises.length > 0) {
|
|
60
|
+
const currentFieldPromises = fieldPromises.splice(0, fieldPromises.length);
|
|
61
|
+
const currentPopulationPromises = populationPromises.splice(0, populationPromises.length);
|
|
62
|
+
await Promise.all(currentFieldPromises);
|
|
63
|
+
await Promise.all(currentPopulationPromises);
|
|
64
|
+
iterations++;
|
|
65
|
+
if (iterations >= 100) {
|
|
66
|
+
throw new Error('Infinite afterRead promise loop detected. A hook is likely adding field promises in an infinitely recursive way.');
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return incomingDoc;
|
|
70
|
+
}
|