@revealui/core 0.0.1-pre.4 → 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 -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,96 @@
|
|
|
1
|
+
// Create a RevealUI access rule
|
|
2
|
+
export function createRevealUIAccessRule(options) {
|
|
3
|
+
return {
|
|
4
|
+
tenant: options.tenant,
|
|
5
|
+
user: options.user,
|
|
6
|
+
permissions: options.permissions,
|
|
7
|
+
condition: options.condition,
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
// Convert from a simple permission-based rule to RevealUI access rule
|
|
11
|
+
export function convertToRevealUIAccessRule(permissions) {
|
|
12
|
+
return createRevealUIAccessRule({
|
|
13
|
+
permissions,
|
|
14
|
+
condition: (context) => {
|
|
15
|
+
// Check if user has required permissions
|
|
16
|
+
if (!context.user)
|
|
17
|
+
return false;
|
|
18
|
+
const userPermissions = context.user.revealUI?.isSuperAdmin
|
|
19
|
+
? ['create', 'read', 'update', 'delete', 'publish', 'admin']
|
|
20
|
+
: context.user.roles || [];
|
|
21
|
+
return permissions.every((permission) => userPermissions.includes(permission) || userPermissions.includes('admin'));
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
// Create an enhanced access rule with tenant scoping
|
|
26
|
+
export function createEnhancedAccessRule(options) {
|
|
27
|
+
return createRevealUIAccessRule({
|
|
28
|
+
permissions: options.permissions,
|
|
29
|
+
condition: (context) => {
|
|
30
|
+
// Check super admin override
|
|
31
|
+
if (options.allowSuperAdmin !== false && context.user?.revealUI?.isSuperAdmin) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
// Check custom condition first
|
|
35
|
+
if (options.customCondition) {
|
|
36
|
+
const customResult = options.customCondition(context);
|
|
37
|
+
if (customResult !== true) {
|
|
38
|
+
return customResult;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Check tenant scoping
|
|
42
|
+
if (options.tenantScoped && context.tenant) {
|
|
43
|
+
const userTenants = context.user?.tenants || [];
|
|
44
|
+
if (!userTenants.includes(context.tenant.id)) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Check permissions
|
|
49
|
+
if (!context.user)
|
|
50
|
+
return false;
|
|
51
|
+
const userPermissions = context.user.roles || [];
|
|
52
|
+
return options.permissions.every((permission) => userPermissions.includes(permission) || userPermissions.includes('admin'));
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
// Evaluate an access rule against a context
|
|
57
|
+
export function evaluateRevealUIAccessRule(rule, context) {
|
|
58
|
+
// Check tenant constraint
|
|
59
|
+
if (rule.tenant && context.tenant?.id !== rule.tenant) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
// Check user constraint
|
|
63
|
+
if (rule.user && context.user?.id !== rule.user) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
// Check permissions
|
|
67
|
+
if (rule.permissions && rule.permissions.length > 0) {
|
|
68
|
+
if (!context.user)
|
|
69
|
+
return false;
|
|
70
|
+
const userPermissions = context.user.revealUI?.isSuperAdmin
|
|
71
|
+
? ['create', 'read', 'update', 'delete', 'publish', 'admin']
|
|
72
|
+
: context.user.roles || [];
|
|
73
|
+
const hasPermission = rule.permissions.every((permission) => userPermissions.includes(permission) || userPermissions.includes('admin'));
|
|
74
|
+
if (!hasPermission) {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Check custom condition
|
|
79
|
+
if (rule.condition) {
|
|
80
|
+
return rule.condition(context);
|
|
81
|
+
}
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
// Combine multiple access rules with OR logic
|
|
85
|
+
export function combineRevealUIAccessRules(rules, operator = 'OR') {
|
|
86
|
+
return createRevealUIAccessRule({
|
|
87
|
+
condition: (context) => {
|
|
88
|
+
if (operator === 'OR') {
|
|
89
|
+
return rules.some((rule) => evaluateRevealUIAccessRule(rule, context) === true);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
return rules.every((rule) => evaluateRevealUIAccessRule(rule, context) === true);
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Route Wrapper
|
|
3
|
+
*
|
|
4
|
+
* Wraps Next.js API routes to automatically set up request context,
|
|
5
|
+
* error handling, and logging.
|
|
6
|
+
*/
|
|
7
|
+
import type { NextRequest } from 'next/server';
|
|
8
|
+
import { NextResponse } from 'next/server';
|
|
9
|
+
/**
|
|
10
|
+
* API route handler function
|
|
11
|
+
*/
|
|
12
|
+
export type ApiHandler<T = unknown> = (request: NextRequest) => Promise<Response | NextResponse<T>>;
|
|
13
|
+
/**
|
|
14
|
+
* Wrap an API route handler with request context, logging, and error handling
|
|
15
|
+
*
|
|
16
|
+
* Benefits:
|
|
17
|
+
* - Automatic request ID generation and propagation
|
|
18
|
+
* - Request context available via getRequestContext()
|
|
19
|
+
* - Automatic error handling with proper status codes
|
|
20
|
+
* - Request/response logging with timing
|
|
21
|
+
* - All logs include request ID automatically
|
|
22
|
+
*
|
|
23
|
+
* @param handler - API route handler function
|
|
24
|
+
* @returns Wrapped handler with request context
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* // app/api/users/route.ts
|
|
29
|
+
* import { withRequestContext } from '@revealui/core/utils/api-wrapper'
|
|
30
|
+
* import { NextResponse } from 'next/server'
|
|
31
|
+
*
|
|
32
|
+
* export const GET = withRequestContext(async (request) => {
|
|
33
|
+
* // Request ID automatically available in logs
|
|
34
|
+
* logger.info('Fetching users') // Includes requestId automatically
|
|
35
|
+
*
|
|
36
|
+
* const users = await db.query.users.findMany()
|
|
37
|
+
* return NextResponse.json(users)
|
|
38
|
+
* })
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare function withRequestContext<T = unknown>(handler: ApiHandler<T>): ApiHandler<T>;
|
|
42
|
+
/**
|
|
43
|
+
* Server action wrapper for request context
|
|
44
|
+
*
|
|
45
|
+
* Use this for Next.js Server Actions to enable request tracing
|
|
46
|
+
*
|
|
47
|
+
* @param action - Server action function
|
|
48
|
+
* @returns Wrapped action with request context
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* 'use server'
|
|
53
|
+
*
|
|
54
|
+
* import { withServerActionContext } from '@revealui/core/utils/api-wrapper'
|
|
55
|
+
*
|
|
56
|
+
* export const createUser = withServerActionContext(async (data) => {
|
|
57
|
+
* logger.info('Creating user') // Includes requestId
|
|
58
|
+
* return await db.insert(users).values(data)
|
|
59
|
+
* })
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export declare function withServerActionContext<TArgs extends unknown[], TReturn>(action: (...args: TArgs) => Promise<TReturn>): (...args: TArgs) => Promise<TReturn>;
|
|
63
|
+
//# sourceMappingURL=api-wrapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-wrapper.d.ts","sourceRoot":"","sources":["../../src/utils/api-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAK1C;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;AAEnG;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAwErF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,SAAS,OAAO,EAAE,EAAE,OAAO,EACtE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,GAC3C,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAkCtC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Route Wrapper
|
|
3
|
+
*
|
|
4
|
+
* Wraps Next.js API routes to automatically set up request context,
|
|
5
|
+
* error handling, and logging.
|
|
6
|
+
*/
|
|
7
|
+
import { NextResponse } from 'next/server';
|
|
8
|
+
import { handleApiError } from './errors.js';
|
|
9
|
+
import { logger } from './logger.js';
|
|
10
|
+
import { createRequestContext, getRequestDuration, runInRequestContext } from './request-context.js';
|
|
11
|
+
/**
|
|
12
|
+
* Wrap an API route handler with request context, logging, and error handling
|
|
13
|
+
*
|
|
14
|
+
* Benefits:
|
|
15
|
+
* - Automatic request ID generation and propagation
|
|
16
|
+
* - Request context available via getRequestContext()
|
|
17
|
+
* - Automatic error handling with proper status codes
|
|
18
|
+
* - Request/response logging with timing
|
|
19
|
+
* - All logs include request ID automatically
|
|
20
|
+
*
|
|
21
|
+
* @param handler - API route handler function
|
|
22
|
+
* @returns Wrapped handler with request context
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* // app/api/users/route.ts
|
|
27
|
+
* import { withRequestContext } from '@revealui/core/utils/api-wrapper'
|
|
28
|
+
* import { NextResponse } from 'next/server'
|
|
29
|
+
*
|
|
30
|
+
* export const GET = withRequestContext(async (request) => {
|
|
31
|
+
* // Request ID automatically available in logs
|
|
32
|
+
* logger.info('Fetching users') // Includes requestId automatically
|
|
33
|
+
*
|
|
34
|
+
* const users = await db.query.users.findMany()
|
|
35
|
+
* return NextResponse.json(users)
|
|
36
|
+
* })
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export function withRequestContext(handler) {
|
|
40
|
+
return async (request) => {
|
|
41
|
+
// Create request context from headers
|
|
42
|
+
const context = createRequestContext({
|
|
43
|
+
headers: Object.fromEntries(request.headers.entries()),
|
|
44
|
+
path: request.nextUrl.pathname,
|
|
45
|
+
method: request.method,
|
|
46
|
+
ip: request.headers.get('x-forwarded-for') || request.headers.get('x-real-ip') || undefined,
|
|
47
|
+
});
|
|
48
|
+
// Log incoming request
|
|
49
|
+
logger.info('Incoming request', {
|
|
50
|
+
method: context.method,
|
|
51
|
+
path: context.path,
|
|
52
|
+
ip: context.ip,
|
|
53
|
+
userAgent: context.userAgent,
|
|
54
|
+
});
|
|
55
|
+
try {
|
|
56
|
+
// Run handler within request context
|
|
57
|
+
const response = await runInRequestContext(context, () => handler(request));
|
|
58
|
+
// Log successful response
|
|
59
|
+
const duration = getRequestDuration();
|
|
60
|
+
logger.info('Request completed', {
|
|
61
|
+
method: context.method,
|
|
62
|
+
path: context.path,
|
|
63
|
+
status: response.status,
|
|
64
|
+
duration,
|
|
65
|
+
});
|
|
66
|
+
// Add request ID to response headers
|
|
67
|
+
if (response instanceof NextResponse) {
|
|
68
|
+
response.headers.set('x-request-id', context.requestId);
|
|
69
|
+
response.headers.set('x-request-duration', duration?.toString() || '0');
|
|
70
|
+
}
|
|
71
|
+
return response;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
// Handle errors with proper logging and status codes
|
|
75
|
+
const duration = getRequestDuration();
|
|
76
|
+
logger.error('Request failed', {
|
|
77
|
+
method: context.method,
|
|
78
|
+
path: context.path,
|
|
79
|
+
error: error instanceof Error ? error.message : String(error),
|
|
80
|
+
duration,
|
|
81
|
+
});
|
|
82
|
+
// Convert error to API response
|
|
83
|
+
const apiError = handleApiError(error, {
|
|
84
|
+
method: context.method,
|
|
85
|
+
path: context.path,
|
|
86
|
+
});
|
|
87
|
+
const errorResponse = NextResponse.json({
|
|
88
|
+
error: {
|
|
89
|
+
message: apiError.message,
|
|
90
|
+
code: apiError.code,
|
|
91
|
+
...(apiError.retryable !== undefined && { retryable: apiError.retryable }),
|
|
92
|
+
},
|
|
93
|
+
}, { status: apiError.statusCode });
|
|
94
|
+
// Add request ID to error response
|
|
95
|
+
errorResponse.headers.set('x-request-id', context.requestId);
|
|
96
|
+
errorResponse.headers.set('x-request-duration', duration?.toString() || '0');
|
|
97
|
+
return errorResponse;
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Server action wrapper for request context
|
|
103
|
+
*
|
|
104
|
+
* Use this for Next.js Server Actions to enable request tracing
|
|
105
|
+
*
|
|
106
|
+
* @param action - Server action function
|
|
107
|
+
* @returns Wrapped action with request context
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```typescript
|
|
111
|
+
* 'use server'
|
|
112
|
+
*
|
|
113
|
+
* import { withServerActionContext } from '@revealui/core/utils/api-wrapper'
|
|
114
|
+
*
|
|
115
|
+
* export const createUser = withServerActionContext(async (data) => {
|
|
116
|
+
* logger.info('Creating user') // Includes requestId
|
|
117
|
+
* return await db.insert(users).values(data)
|
|
118
|
+
* })
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
export function withServerActionContext(action) {
|
|
122
|
+
return async (...args) => {
|
|
123
|
+
// Create request context (no headers available in server actions)
|
|
124
|
+
const context = createRequestContext({});
|
|
125
|
+
// Log server action execution
|
|
126
|
+
logger.info('Server action started', {
|
|
127
|
+
action: action.name || 'anonymous',
|
|
128
|
+
});
|
|
129
|
+
try {
|
|
130
|
+
// Run action within request context
|
|
131
|
+
const result = await runInRequestContext(context, () => action(...args));
|
|
132
|
+
// Log successful execution
|
|
133
|
+
const duration = getRequestDuration();
|
|
134
|
+
logger.info('Server action completed', {
|
|
135
|
+
action: action.name || 'anonymous',
|
|
136
|
+
duration,
|
|
137
|
+
});
|
|
138
|
+
return result;
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
// Log error
|
|
142
|
+
const duration = getRequestDuration();
|
|
143
|
+
logger.error('Server action failed', {
|
|
144
|
+
action: action.name || 'anonymous',
|
|
145
|
+
error: error instanceof Error ? error.message : String(error),
|
|
146
|
+
duration,
|
|
147
|
+
});
|
|
148
|
+
throw error;
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
import type { Block, RevealUIBlock, RevealUIContext } from '../types/index.js';
|
|
3
|
+
export declare function convertToRevealUIBlock(block: Block): RevealUIBlock;
|
|
4
|
+
export declare function convertFromRevealUIBlock(revealUIBlock: RevealUIBlock): Block;
|
|
5
|
+
export declare function enhanceBlockWithRevealUI(block: Block, revealUIOptions?: RevealUIBlock['revealUI']): RevealUIBlock;
|
|
6
|
+
/**
|
|
7
|
+
* Validate a RevealUI block
|
|
8
|
+
*
|
|
9
|
+
* @async
|
|
10
|
+
* @param block - The RevealUI block to validate
|
|
11
|
+
* @param data - The data to validate against the block
|
|
12
|
+
* @param context - The RevealUI context for validation
|
|
13
|
+
* @returns Promise resolving to a record of field errors (empty if valid)
|
|
14
|
+
*/
|
|
15
|
+
export declare function validateRevealUIBlock(block: RevealUIBlock, data: Record<string, unknown>, context: RevealUIContext): Promise<Record<string, string>>;
|
|
16
|
+
export declare function getRevealUIBlockComponent(block: RevealUIBlock): React.ComponentType<{
|
|
17
|
+
data: Record<string, unknown>;
|
|
18
|
+
onChange: (data: Record<string, unknown>) => void;
|
|
19
|
+
revealUI?: RevealUIContext;
|
|
20
|
+
}>;
|
|
21
|
+
//# sourceMappingURL=block-conversion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-conversion.d.ts","sourceRoot":"","sources":["../../src/utils/block-conversion.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,KAAK,EAAS,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAIrF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAalE;AAGD,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,aAAa,GAAG,KAAK,CAa5E;AAGD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,KAAK,EACZ,eAAe,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,GAC1C,aAAa,CAWf;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA0BjC;AAGD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;IACnF,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;IACjD,QAAQ,CAAC,EAAE,eAAe,CAAA;CAC3B,CAAC,CAsDD"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { convertToRevealUIField } from './field-conversion.js';
|
|
3
|
+
// Convert from standard block to RevealUI block
|
|
4
|
+
export function convertToRevealUIBlock(block) {
|
|
5
|
+
return {
|
|
6
|
+
slug: block.slug,
|
|
7
|
+
fields: block.fields.map(convertToRevealUIField),
|
|
8
|
+
revealUI: {
|
|
9
|
+
category: 'content',
|
|
10
|
+
icon: 'block',
|
|
11
|
+
preview: undefined,
|
|
12
|
+
permissions: ['read', 'write'],
|
|
13
|
+
tenantScoped: false,
|
|
14
|
+
},
|
|
15
|
+
labels: block.labels || { singular: block.slug, plural: `${block.slug}s` },
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
// Convert from RevealUI block to standard block
|
|
19
|
+
export function convertFromRevealUIBlock(revealUIBlock) {
|
|
20
|
+
return {
|
|
21
|
+
slug: revealUIBlock.slug,
|
|
22
|
+
fields: revealUIBlock.fields.map((field) => ({
|
|
23
|
+
name: field.name,
|
|
24
|
+
type: field.type,
|
|
25
|
+
label: field.label,
|
|
26
|
+
required: field.required,
|
|
27
|
+
admin: field.admin,
|
|
28
|
+
validate: field.validate,
|
|
29
|
+
})),
|
|
30
|
+
labels: revealUIBlock.labels,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
// Enhance a standard block with RevealUI features
|
|
34
|
+
export function enhanceBlockWithRevealUI(block, revealUIOptions) {
|
|
35
|
+
const revealUIBlock = convertToRevealUIBlock(block);
|
|
36
|
+
if (revealUIOptions) {
|
|
37
|
+
revealUIBlock.revealUI = {
|
|
38
|
+
...revealUIBlock.revealUI,
|
|
39
|
+
...revealUIOptions,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
return revealUIBlock;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Validate a RevealUI block
|
|
46
|
+
*
|
|
47
|
+
* @async
|
|
48
|
+
* @param block - The RevealUI block to validate
|
|
49
|
+
* @param data - The data to validate against the block
|
|
50
|
+
* @param context - The RevealUI context for validation
|
|
51
|
+
* @returns Promise resolving to a record of field errors (empty if valid)
|
|
52
|
+
*/
|
|
53
|
+
export async function validateRevealUIBlock(block, data, context) {
|
|
54
|
+
const errors = {};
|
|
55
|
+
// Validate each field in the block
|
|
56
|
+
for (const field of block.fields) {
|
|
57
|
+
if (!field.name)
|
|
58
|
+
continue; // Skip fields without names
|
|
59
|
+
const value = data[field.name];
|
|
60
|
+
const validationContext = {
|
|
61
|
+
data,
|
|
62
|
+
siblingData: data,
|
|
63
|
+
user: context.user ?? undefined,
|
|
64
|
+
tenant: context.tenant,
|
|
65
|
+
operation: 'update',
|
|
66
|
+
};
|
|
67
|
+
// Import the validation function dynamically to avoid circular imports
|
|
68
|
+
const { validateRevealUIField } = await import('./field-conversion.js');
|
|
69
|
+
const result = validateRevealUIField(field, value, validationContext);
|
|
70
|
+
if (result !== true) {
|
|
71
|
+
errors[field.name] = result;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return errors;
|
|
75
|
+
}
|
|
76
|
+
// Get a React component for rendering a RevealUI block
|
|
77
|
+
export function getRevealUIBlockComponent(block) {
|
|
78
|
+
return function RevealUIBlockComponent({ data, onChange, revealUI }) {
|
|
79
|
+
void revealUI;
|
|
80
|
+
const blockFields = block.fields.map((field) => {
|
|
81
|
+
return {
|
|
82
|
+
name: field.name,
|
|
83
|
+
type: field.type,
|
|
84
|
+
label: field.label,
|
|
85
|
+
required: field.required,
|
|
86
|
+
};
|
|
87
|
+
});
|
|
88
|
+
const formatValue = (value) => {
|
|
89
|
+
if (value === null || value === undefined)
|
|
90
|
+
return '';
|
|
91
|
+
if (typeof value === 'string')
|
|
92
|
+
return value;
|
|
93
|
+
if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') {
|
|
94
|
+
return String(value);
|
|
95
|
+
}
|
|
96
|
+
if (typeof value === 'symbol')
|
|
97
|
+
return value.description ?? value.toString();
|
|
98
|
+
if (typeof value === 'function')
|
|
99
|
+
return value.name || 'function';
|
|
100
|
+
return JSON.stringify(value);
|
|
101
|
+
};
|
|
102
|
+
return (_jsx("div", { className: "reveal-ui-block", "data-block-slug": block.slug, children: _jsx("div", { className: "reveal-ui-block-fields", children: blockFields.map((field) => {
|
|
103
|
+
const fieldName = typeof field.name === 'string' ? field.name : '';
|
|
104
|
+
const fieldLabel = typeof field.label === 'string' ? field.label : fieldName || 'Field';
|
|
105
|
+
const value = fieldName ? data[fieldName] : undefined;
|
|
106
|
+
return (_jsxs("div", { className: "reveal-ui-field", children: [_jsxs("label", { className: "reveal-ui-field-label", htmlFor: `field-${fieldName}`, children: [fieldLabel, field.required && _jsx("span", { className: "required", children: "*" })] }), _jsx("div", { className: "reveal-ui-field-input", children: _jsx("input", { type: "text", id: `field-${fieldName}`, value: formatValue(value), onChange: (e) => onChange({ ...data, [fieldName]: e.target.value }), required: field.required }) })] }, fieldName || Math.random()));
|
|
107
|
+
}) }) }));
|
|
108
|
+
};
|
|
109
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LRU Cache with TTL (Time To Live)
|
|
3
|
+
*
|
|
4
|
+
* Provides a cache implementation with:
|
|
5
|
+
* - TTL (Time To Live) expiration
|
|
6
|
+
* - Size limits with LRU eviction
|
|
7
|
+
* - Type-safe generic interface
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* const cache = new LRUCache<string, User>({ maxSize: 100, ttlMs: 5 * 60 * 1000 })
|
|
12
|
+
* const user = await cache.fetch('user:123', () => fetchUserFromDB('123'))
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export interface LRUCacheOptions {
|
|
16
|
+
/**
|
|
17
|
+
* Maximum number of entries in the cache
|
|
18
|
+
* @default 100
|
|
19
|
+
*/
|
|
20
|
+
maxSize?: number;
|
|
21
|
+
/**
|
|
22
|
+
* Time to live in milliseconds
|
|
23
|
+
* @default 5 minutes (300000)
|
|
24
|
+
*/
|
|
25
|
+
ttlMs?: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* LRU Cache with TTL for storing key-value pairs
|
|
29
|
+
*
|
|
30
|
+
* Features:
|
|
31
|
+
* - Automatic expiration based on TTL
|
|
32
|
+
* - Size limits with LRU (Least Recently Used) eviction
|
|
33
|
+
* - Type-safe generic interface
|
|
34
|
+
*/
|
|
35
|
+
export declare class LRUCache<K = string, V = unknown> {
|
|
36
|
+
private cache;
|
|
37
|
+
private readonly maxSize;
|
|
38
|
+
private readonly ttlMs;
|
|
39
|
+
constructor(options?: LRUCacheOptions);
|
|
40
|
+
/**
|
|
41
|
+
* Fetch a value from cache or compute it using the fetcher function
|
|
42
|
+
*
|
|
43
|
+
* @param key - Cache key
|
|
44
|
+
* @param fetcher - Function to fetch the value if not in cache
|
|
45
|
+
* @returns The cached or newly fetched value
|
|
46
|
+
*/
|
|
47
|
+
fetch(key: K, fetcher: () => Promise<V> | V): Promise<V>;
|
|
48
|
+
/**
|
|
49
|
+
* Get a value from cache without fetching (returns undefined if not found or expired)
|
|
50
|
+
*
|
|
51
|
+
* @param key - Cache key
|
|
52
|
+
* @returns The cached value or undefined
|
|
53
|
+
*/
|
|
54
|
+
get(key: K): V | undefined;
|
|
55
|
+
/**
|
|
56
|
+
* Set a value in the cache
|
|
57
|
+
*
|
|
58
|
+
* @param key - Cache key
|
|
59
|
+
* @param value - Value to cache
|
|
60
|
+
*/
|
|
61
|
+
set(key: K, value: V): void;
|
|
62
|
+
/**
|
|
63
|
+
* Delete a value from the cache
|
|
64
|
+
*
|
|
65
|
+
* @param key - Cache key
|
|
66
|
+
* @returns true if the entry was deleted, false if it didn't exist
|
|
67
|
+
*/
|
|
68
|
+
delete(key: K): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Clear all entries from the cache
|
|
71
|
+
*/
|
|
72
|
+
clear(): void;
|
|
73
|
+
/**
|
|
74
|
+
* Get the current size of the cache
|
|
75
|
+
*/
|
|
76
|
+
get size(): number;
|
|
77
|
+
/**
|
|
78
|
+
* Evict expired entries and LRU entries if at capacity
|
|
79
|
+
*/
|
|
80
|
+
private evictIfNeeded;
|
|
81
|
+
/**
|
|
82
|
+
* Clean up expired entries (can be called periodically)
|
|
83
|
+
*/
|
|
84
|
+
cleanup(): void;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAQD;;;;;;;GAOG;AACH,qBAAa,QAAQ,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,OAAO;IAC3C,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;gBAElB,OAAO,GAAE,eAAoB;IAKzC;;;;;;OAMG;IACG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA8B9D;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAiB1B;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAW3B;;;;;OAKG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,OAAO,CAAC,aAAa;IA4BrB;;OAEG;IACH,OAAO,IAAI,IAAI;CAQhB"}
|