@revealui/core 0.0.1-pre.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -202
- package/README.md +29 -180
- package/dist/api/compression.d.ts +83 -0
- package/dist/api/compression.d.ts.map +1 -0
- package/dist/api/compression.js +233 -0
- package/dist/api/payload-optimization.d.ts +138 -0
- package/dist/api/payload-optimization.d.ts.map +1 -0
- package/dist/api/payload-optimization.js +320 -0
- package/dist/api/rate-limit.d.ts +113 -0
- package/dist/api/rate-limit.d.ts.map +1 -0
- package/dist/api/rate-limit.js +301 -0
- package/dist/api/response-cache.d.ts +125 -0
- package/dist/api/response-cache.d.ts.map +1 -0
- package/dist/api/response-cache.js +335 -0
- package/dist/api/rest.d.ts +54 -0
- package/dist/api/rest.d.ts.map +1 -0
- package/dist/api/rest.js +464 -0
- package/dist/auth/access.d.ts +25 -0
- package/dist/auth/access.d.ts.map +1 -0
- package/dist/auth/access.js +20 -0
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +2 -0
- package/dist/cache/query-cache.d.ts +98 -0
- package/dist/cache/query-cache.d.ts.map +1 -0
- package/dist/cache/query-cache.js +260 -0
- package/dist/caching/app-cache.d.ts +237 -0
- package/dist/caching/app-cache.d.ts.map +1 -0
- package/dist/caching/app-cache.js +430 -0
- package/dist/caching/cdn-config.d.ts +155 -0
- package/dist/caching/cdn-config.d.ts.map +1 -0
- package/dist/caching/cdn-config.js +425 -0
- package/dist/caching/edge-cache.d.ts +177 -0
- package/dist/caching/edge-cache.d.ts.map +1 -0
- package/dist/caching/edge-cache.js +381 -0
- package/dist/caching/service-worker.d.ts +165 -0
- package/dist/caching/service-worker.d.ts.map +1 -0
- package/dist/caching/service-worker.js +437 -0
- package/dist/client/admin/RichText.d.ts +12 -0
- package/dist/client/admin/RichText.d.ts.map +1 -0
- package/dist/client/admin/RichText.js +5 -0
- package/dist/client/admin/components/AdminDashboard.d.ts +7 -0
- package/dist/client/admin/components/AdminDashboard.d.ts.map +1 -0
- package/dist/client/admin/components/AdminDashboard.js +318 -0
- package/dist/client/admin/components/CollectionList.d.ts +16 -0
- package/dist/client/admin/components/CollectionList.d.ts.map +1 -0
- package/dist/client/admin/components/CollectionList.js +67 -0
- package/dist/client/admin/components/DocumentForm.d.ts +11 -0
- package/dist/client/admin/components/DocumentForm.d.ts.map +1 -0
- package/dist/client/admin/components/DocumentForm.js +99 -0
- package/dist/client/admin/components/GlobalForm.d.ts +11 -0
- package/dist/client/admin/components/GlobalForm.d.ts.map +1 -0
- package/dist/client/admin/components/GlobalForm.js +74 -0
- package/dist/client/admin/i18n/en.d.ts +25 -0
- package/dist/client/admin/i18n/en.d.ts.map +1 -0
- package/dist/client/admin/i18n/en.js +25 -0
- package/dist/client/admin/index.d.ts +10 -0
- package/dist/client/admin/index.d.ts.map +1 -0
- package/dist/client/admin/index.js +10 -0
- package/dist/client/admin/layout.d.ts +10 -0
- package/dist/client/admin/layout.d.ts.map +1 -0
- package/dist/client/admin/layout.js +6 -0
- package/dist/client/admin/page.d.ts +38 -0
- package/dist/client/admin/page.d.ts.map +1 -0
- package/dist/client/admin/page.js +15 -0
- package/dist/client/admin/utils/apiClient.d.ts +110 -0
- package/dist/client/admin/utils/apiClient.d.ts.map +1 -0
- package/dist/client/admin/utils/apiClient.js +220 -0
- package/dist/client/admin/utils/auth.d.ts +27 -0
- package/dist/client/admin/utils/auth.d.ts.map +1 -0
- package/dist/client/admin/utils/auth.js +58 -0
- package/dist/client/admin/utils/index.d.ts +6 -0
- package/dist/client/admin/utils/index.d.ts.map +1 -0
- package/dist/client/admin/utils/index.js +5 -0
- package/dist/client/admin/utils/serializeConfig.d.ts +7 -0
- package/dist/client/admin/utils/serializeConfig.d.ts.map +1 -0
- package/dist/client/admin/utils/serializeConfig.js +35 -0
- package/dist/client/hooks.d.ts +18 -0
- package/dist/client/hooks.d.ts.map +1 -0
- package/dist/client/hooks.js +29 -0
- package/dist/client/http/client.d.ts +15 -0
- package/dist/client/http/client.d.ts.map +1 -0
- package/dist/client/http/client.js +49 -0
- package/dist/client/http/fetchBanner.d.ts +18 -0
- package/dist/client/http/fetchBanner.d.ts.map +1 -0
- package/dist/client/http/fetchBanner.js +44 -0
- package/dist/client/http/fetchCard.d.ts +18 -0
- package/dist/client/http/fetchCard.d.ts.map +1 -0
- package/dist/client/http/fetchCard.js +46 -0
- package/dist/client/http/fetchEvents.d.ts +18 -0
- package/dist/client/http/fetchEvents.d.ts.map +1 -0
- package/dist/client/http/fetchEvents.js +44 -0
- package/dist/client/http/fetchHero.d.ts +17 -0
- package/dist/client/http/fetchHero.d.ts.map +1 -0
- package/dist/client/http/fetchHero.js +55 -0
- package/dist/client/http/fetchMainInfos.d.ts +17 -0
- package/dist/client/http/fetchMainInfos.d.ts.map +1 -0
- package/dist/client/http/fetchMainInfos.js +44 -0
- package/dist/client/http/fetchVideos.d.ts +13 -0
- package/dist/client/http/fetchVideos.d.ts.map +1 -0
- package/dist/client/http/fetchVideos.js +36 -0
- package/dist/client/http/index.d.ts +19 -0
- package/dist/client/http/index.d.ts.map +1 -0
- package/dist/client/http/index.js +11 -0
- package/dist/client/index.d.ts +12 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +15 -0
- package/dist/client/richtext/RichTextEditor.d.ts +48 -0
- package/dist/client/richtext/RichTextEditor.d.ts.map +1 -0
- package/dist/client/richtext/RichTextEditor.js +360 -0
- package/dist/client/richtext/components/ImageNodeComponent.d.ts +9 -0
- package/dist/client/richtext/components/ImageNodeComponent.d.ts.map +1 -0
- package/dist/client/richtext/components/ImageNodeComponent.js +99 -0
- package/dist/client/richtext/components/ImageUploadButton.d.ts +11 -0
- package/dist/client/richtext/components/ImageUploadButton.d.ts.map +1 -0
- package/dist/client/richtext/components/ImageUploadButton.js +103 -0
- package/dist/client/richtext/index.d.ts +92 -0
- package/dist/client/richtext/index.d.ts.map +1 -0
- package/dist/client/richtext/index.js +74 -0
- package/dist/client/richtext/nodes/DecoratorBlockNode.d.ts +20 -0
- package/dist/client/richtext/nodes/DecoratorBlockNode.d.ts.map +1 -0
- package/dist/client/richtext/nodes/DecoratorBlockNode.js +29 -0
- package/dist/client/richtext/nodes/ImageNode.d.ts +51 -0
- package/dist/client/richtext/nodes/ImageNode.d.ts.map +1 -0
- package/dist/client/richtext/nodes/ImageNode.js +95 -0
- package/dist/client/richtext/plugins/CollaborationPlugin.d.ts +13 -0
- package/dist/client/richtext/plugins/CollaborationPlugin.d.ts.map +1 -0
- package/dist/client/richtext/plugins/CollaborationPlugin.js +8 -0
- package/dist/client/richtext/plugins/CursorsOverlayPlugin.d.ts +4 -0
- package/dist/client/richtext/plugins/CursorsOverlayPlugin.d.ts.map +1 -0
- package/dist/client/richtext/plugins/CursorsOverlayPlugin.js +50 -0
- package/dist/client/richtext/plugins/FloatingToolbarPlugin.d.ts +7 -0
- package/dist/client/richtext/plugins/FloatingToolbarPlugin.d.ts.map +1 -0
- package/dist/client/richtext/plugins/FloatingToolbarPlugin.js +248 -0
- package/dist/client/richtext/plugins/ImagePlugin.d.ts +3 -0
- package/dist/client/richtext/plugins/ImagePlugin.d.ts.map +1 -0
- package/dist/client/richtext/plugins/ImagePlugin.js +73 -0
- package/dist/client/richtext/plugins/PastePlugin.d.ts +2 -0
- package/dist/client/richtext/plugins/PastePlugin.d.ts.map +1 -0
- package/dist/client/richtext/plugins/PastePlugin.js +36 -0
- package/dist/client/richtext/plugins/ToolbarPlugin.d.ts +8 -0
- package/dist/client/richtext/plugins/ToolbarPlugin.d.ts.map +1 -0
- package/dist/client/richtext/plugins/ToolbarPlugin.js +204 -0
- package/dist/client/ui/index.d.ts +111 -0
- package/dist/client/ui/index.d.ts.map +1 -0
- package/dist/client/ui/index.js +130 -0
- package/dist/collections/CollectionOperations.d.ts +27 -0
- package/dist/collections/CollectionOperations.d.ts.map +1 -0
- package/dist/collections/CollectionOperations.js +34 -0
- package/dist/collections/hooks.d.ts +11 -0
- package/dist/collections/hooks.d.ts.map +1 -0
- package/dist/collections/hooks.js +35 -0
- package/dist/collections/index.d.ts +2 -0
- package/dist/collections/index.d.ts.map +1 -0
- package/dist/collections/index.js +1 -0
- package/dist/collections/operations/create.d.ts +10 -0
- package/dist/collections/operations/create.d.ts.map +1 -0
- package/dist/collections/operations/create.js +101 -0
- package/dist/collections/operations/delete.d.ts +10 -0
- package/dist/collections/operations/delete.d.ts.map +1 -0
- package/dist/collections/operations/delete.js +16 -0
- package/dist/collections/operations/fieldHooks.d.ts +21 -0
- package/dist/collections/operations/fieldHooks.d.ts.map +1 -0
- package/dist/collections/operations/fieldHooks.js +51 -0
- package/dist/collections/operations/find.d.ts +10 -0
- package/dist/collections/operations/find.d.ts.map +1 -0
- package/dist/collections/operations/find.js +124 -0
- package/dist/collections/operations/findById.d.ts +15 -0
- package/dist/collections/operations/findById.d.ts.map +1 -0
- package/dist/collections/operations/findById.js +59 -0
- package/dist/collections/operations/update.d.ts +10 -0
- package/dist/collections/operations/update.d.ts.map +1 -0
- package/dist/collections/operations/update.js +134 -0
- package/dist/config/index.d.ts +9 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +61 -0
- package/dist/config/runtime.d.ts +22 -0
- package/dist/config/runtime.d.ts.map +1 -0
- package/dist/config/runtime.js +32 -0
- package/dist/config/utils.d.ts +12 -0
- package/dist/config/utils.d.ts.map +1 -0
- package/dist/config/utils.js +20 -0
- package/dist/database/index.d.ts +1 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +6 -0
- package/dist/database/ssl-config.d.ts +9 -0
- package/dist/database/ssl-config.d.ts.map +1 -0
- package/dist/database/ssl-config.js +7 -0
- package/dist/database/type-adapter.d.ts +113 -0
- package/dist/database/type-adapter.d.ts.map +1 -0
- package/dist/database/type-adapter.js +97 -0
- package/dist/database/universal-postgres.d.ts +45 -0
- package/dist/database/universal-postgres.d.ts.map +1 -0
- package/dist/database/universal-postgres.js +526 -0
- package/dist/dataloader.d.ts +26 -0
- package/dist/dataloader.d.ts.map +1 -0
- package/dist/dataloader.js +162 -0
- package/dist/error-handling/circuit-breaker.d.ts +262 -0
- package/dist/error-handling/circuit-breaker.d.ts.map +1 -0
- package/dist/error-handling/circuit-breaker.js +542 -0
- package/dist/error-handling/error-boundary.d.ts +94 -0
- package/dist/error-handling/error-boundary.d.ts.map +1 -0
- package/dist/error-handling/error-boundary.js +285 -0
- package/dist/error-handling/error-reporter.d.ts +213 -0
- package/dist/error-handling/error-reporter.d.ts.map +1 -0
- package/dist/error-handling/error-reporter.js +506 -0
- package/dist/error-handling/fallback-components.d.ts +131 -0
- package/dist/error-handling/fallback-components.d.ts.map +1 -0
- package/dist/error-handling/fallback-components.js +371 -0
- package/dist/error-handling/index.d.ts +16 -0
- package/dist/error-handling/index.d.ts.map +1 -0
- package/dist/error-handling/index.js +15 -0
- package/dist/error-handling/retry.d.ts +194 -0
- package/dist/error-handling/retry.d.ts.map +1 -0
- package/dist/error-handling/retry.js +450 -0
- package/dist/errors/index.d.ts +23 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +40 -0
- package/dist/factories/builders.d.ts +50 -0
- package/dist/factories/builders.d.ts.map +1 -0
- package/dist/factories/builders.js +77 -0
- package/dist/factories/index.d.ts +2 -0
- package/dist/factories/index.d.ts.map +1 -0
- package/dist/factories/index.js +1 -0
- package/dist/features.d.ts +82 -0
- package/dist/features.d.ts.map +1 -0
- package/dist/features.js +89 -0
- package/dist/fieldTraversal.d.ts +26 -0
- package/dist/fieldTraversal.d.ts.map +1 -0
- package/dist/fieldTraversal.js +132 -0
- package/dist/fields/config/types.d.ts +48 -0
- package/dist/fields/config/types.d.ts.map +1 -0
- package/dist/fields/config/types.js +20 -0
- package/dist/fields/getDefaultValue.d.ts +16 -0
- package/dist/fields/getDefaultValue.d.ts.map +1 -0
- package/dist/fields/getDefaultValue.js +20 -0
- package/dist/fields/getFieldPaths.d.ts +25 -0
- package/dist/fields/getFieldPaths.d.ts.map +1 -0
- package/dist/fields/getFieldPaths.js +23 -0
- package/dist/fields/hooks/afterRead/index.d.ts +36 -0
- package/dist/fields/hooks/afterRead/index.d.ts.map +1 -0
- package/dist/fields/hooks/afterRead/index.js +70 -0
- package/dist/fields/hooks/afterRead/promise.d.ts +46 -0
- package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -0
- package/dist/fields/hooks/afterRead/promise.js +178 -0
- package/dist/fields/hooks/afterRead/traverseFields.d.ts +44 -0
- package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -0
- package/dist/fields/hooks/afterRead/traverseFields.js +37 -0
- package/dist/generated/agents/index.d.ts +8 -0
- package/dist/generated/agents/index.d.ts.map +1 -0
- package/dist/generated/agents/index.js +7 -0
- package/dist/generated/components/index.d.ts +8 -0
- package/dist/generated/components/index.d.ts.map +1 -0
- package/dist/generated/components/index.js +7 -0
- package/dist/generated/functions/index.d.ts +8 -0
- package/dist/generated/functions/index.d.ts.map +1 -0
- package/dist/generated/functions/index.js +7 -0
- package/dist/generated/hooks/index.d.ts +8 -0
- package/dist/generated/hooks/index.d.ts.map +1 -0
- package/dist/generated/hooks/index.js +7 -0
- package/dist/generated/index.d.ts +10 -0
- package/dist/generated/index.d.ts.map +1 -0
- package/dist/generated/index.js +9 -0
- package/dist/generated/plans/index.d.ts +8 -0
- package/dist/generated/plans/index.d.ts.map +1 -0
- package/dist/generated/plans/index.js +7 -0
- package/dist/generated/prompts/index.d.ts +8 -0
- package/dist/generated/prompts/index.d.ts.map +1 -0
- package/dist/generated/prompts/index.js +7 -0
- package/dist/generated/tools/index.d.ts +8 -0
- package/dist/generated/tools/index.d.ts.map +1 -0
- package/dist/generated/tools/index.js +7 -0
- package/dist/generated/types/cms.d.ts +1766 -0
- package/dist/generated/types/cms.d.ts.map +1 -0
- package/dist/generated/types/cms.js +12 -0
- package/dist/generated/types/index.d.ts +19 -0
- package/dist/generated/types/index.d.ts.map +1 -0
- package/dist/generated/types/index.js +28 -0
- package/dist/generated/types/neon.d.ts +11 -0
- package/dist/generated/types/neon.d.ts.map +1 -0
- package/dist/generated/types/neon.js +11 -0
- package/dist/generated/types/supabase.d.ts +193 -0
- package/dist/generated/types/supabase.d.ts.map +1 -0
- package/dist/generated/types/supabase.js +5 -0
- package/dist/globals/GlobalOperations.d.ts +24 -0
- package/dist/globals/GlobalOperations.d.ts.map +1 -0
- package/dist/globals/GlobalOperations.js +149 -0
- package/dist/globals/index.d.ts +2 -0
- package/dist/globals/index.d.ts.map +1 -0
- package/dist/globals/index.js +1 -0
- package/dist/index.d.ts +64 -1
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +128 -33
- package/dist/instance/RevealUIInstance.d.ts +6 -0
- package/dist/instance/RevealUIInstance.d.ts.map +1 -0
- package/dist/instance/RevealUIInstance.js +312 -0
- package/dist/instance/index.d.ts +3 -0
- package/dist/instance/index.d.ts.map +1 -0
- package/dist/instance/index.js +2 -0
- package/dist/instance/logger.d.ts +31 -0
- package/dist/instance/logger.d.ts.map +1 -0
- package/dist/instance/logger.js +42 -0
- package/dist/instance/methods/create.d.ts +10 -0
- package/dist/instance/methods/create.d.ts.map +1 -0
- package/dist/instance/methods/create.js +38 -0
- package/dist/instance/methods/delete.d.ts +10 -0
- package/dist/instance/methods/delete.d.ts.map +1 -0
- package/dist/instance/methods/delete.js +24 -0
- package/dist/instance/methods/find.d.ts +10 -0
- package/dist/instance/methods/find.d.ts.map +1 -0
- package/dist/instance/methods/find.js +23 -0
- package/dist/instance/methods/findById.d.ts +13 -0
- package/dist/instance/methods/findById.d.ts.map +1 -0
- package/dist/instance/methods/findById.js +23 -0
- package/dist/instance/methods/hooks.d.ts +14 -0
- package/dist/instance/methods/hooks.d.ts.map +1 -0
- package/dist/instance/methods/hooks.js +32 -0
- package/dist/instance/methods/update.d.ts +10 -0
- package/dist/instance/methods/update.d.ts.map +1 -0
- package/dist/instance/methods/update.js +42 -0
- package/dist/license.d.ts +73 -0
- package/dist/license.d.ts.map +1 -0
- package/dist/license.js +157 -0
- package/dist/monitoring/alerts.d.ts +118 -0
- package/dist/monitoring/alerts.d.ts.map +1 -0
- package/dist/monitoring/alerts.js +324 -0
- package/dist/monitoring/cleanup-manager.d.ts +71 -0
- package/dist/monitoring/cleanup-manager.d.ts.map +1 -0
- package/dist/monitoring/cleanup-manager.js +226 -0
- package/dist/monitoring/health-monitor.d.ts +22 -0
- package/dist/monitoring/health-monitor.d.ts.map +1 -0
- package/dist/monitoring/health-monitor.js +142 -0
- package/dist/monitoring/index.d.ts +14 -0
- package/dist/monitoring/index.d.ts.map +1 -0
- package/dist/monitoring/index.js +17 -0
- package/dist/monitoring/process-registry.d.ts +97 -0
- package/dist/monitoring/process-registry.d.ts.map +1 -0
- package/dist/monitoring/process-registry.js +222 -0
- package/dist/monitoring/query-monitor.d.ts +153 -0
- package/dist/monitoring/query-monitor.d.ts.map +1 -0
- package/dist/monitoring/query-monitor.js +209 -0
- package/dist/monitoring/types.d.ts +231 -0
- package/dist/monitoring/types.d.ts.map +1 -0
- package/dist/monitoring/types.js +42 -0
- package/dist/monitoring/zombie-detector.d.ts +81 -0
- package/dist/monitoring/zombie-detector.d.ts.map +1 -0
- package/dist/monitoring/zombie-detector.js +231 -0
- package/dist/nextjs/index.d.ts +4 -0
- package/dist/nextjs/index.d.ts.map +1 -0
- package/dist/nextjs/index.js +3 -0
- package/dist/nextjs/utilities.d.ts +5 -0
- package/dist/nextjs/utilities.d.ts.map +1 -0
- package/dist/nextjs/utilities.js +16 -0
- package/dist/nextjs/withRevealUI.d.ts +20 -0
- package/dist/nextjs/withRevealUI.d.ts.map +1 -0
- package/dist/nextjs/withRevealUI.js +181 -0
- package/dist/observability/alerts.d.ts +138 -0
- package/dist/observability/alerts.d.ts.map +1 -0
- package/dist/observability/alerts.js +390 -0
- package/dist/observability/health-check.d.ts +95 -0
- package/dist/observability/health-check.d.ts.map +1 -0
- package/dist/observability/health-check.js +345 -0
- package/dist/observability/index.d.ts +12 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +11 -0
- package/dist/observability/logger.d.ts +47 -0
- package/dist/observability/logger.d.ts.map +1 -0
- package/dist/observability/logger.js +140 -0
- package/dist/observability/metrics.d.ts +205 -0
- package/dist/observability/metrics.d.ts.map +1 -0
- package/dist/observability/metrics.js +429 -0
- package/dist/observability/tracing.d.ts +149 -0
- package/dist/observability/tracing.d.ts.map +1 -0
- package/dist/observability/tracing.js +381 -0
- package/dist/optimization/asset-optimizer.d.ts +202 -0
- package/dist/optimization/asset-optimizer.d.ts.map +1 -0
- package/dist/optimization/asset-optimizer.js +312 -0
- package/dist/optimization/build-optimizer.d.ts +202 -0
- package/dist/optimization/build-optimizer.d.ts.map +1 -0
- package/dist/optimization/build-optimizer.js +271 -0
- package/dist/optimization/bundle-analyzer.d.ts +98 -0
- package/dist/optimization/bundle-analyzer.d.ts.map +1 -0
- package/dist/optimization/bundle-analyzer.js +322 -0
- package/dist/optimization/code-splitting.d.ts +144 -0
- package/dist/optimization/code-splitting.d.ts.map +1 -0
- package/dist/optimization/code-splitting.js +290 -0
- package/dist/plugin/index.d.ts +12 -0
- package/dist/plugin/index.d.ts.map +1 -0
- package/dist/plugin/index.js +4 -0
- package/dist/plugins/form-builder.d.ts +115 -0
- package/dist/plugins/form-builder.d.ts.map +1 -0
- package/dist/plugins/form-builder.js +239 -0
- package/dist/plugins/index.d.ts +5 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +4 -0
- package/dist/plugins/nested-docs.d.ts +8 -0
- package/dist/plugins/nested-docs.d.ts.map +1 -0
- package/dist/plugins/nested-docs.js +67 -0
- package/dist/plugins/redirects.d.ts +17 -0
- package/dist/plugins/redirects.d.ts.map +1 -0
- package/dist/plugins/redirects.js +62 -0
- package/dist/queries/index.d.ts +2 -0
- package/dist/queries/index.d.ts.map +1 -0
- package/dist/queries/index.js +1 -0
- package/dist/queries/queryBuilder.d.ts +47 -0
- package/dist/queries/queryBuilder.d.ts.map +1 -0
- package/dist/queries/queryBuilder.js +252 -0
- package/dist/relationships/analyzer.d.ts +39 -0
- package/dist/relationships/analyzer.d.ts.map +1 -0
- package/dist/relationships/analyzer.js +127 -0
- package/dist/relationships/index.d.ts +3 -0
- package/dist/relationships/index.d.ts.map +1 -0
- package/dist/relationships/index.js +2 -0
- package/dist/relationships/populate-helpers.d.ts +104 -0
- package/dist/relationships/populate-helpers.d.ts.map +1 -0
- package/dist/relationships/populate-helpers.js +187 -0
- package/dist/relationships/population.d.ts +42 -0
- package/dist/relationships/population.d.ts.map +1 -0
- package/dist/relationships/population.js +188 -0
- package/dist/revealui.d.ts +46 -0
- package/dist/revealui.d.ts.map +1 -0
- package/dist/revealui.js +92 -0
- package/dist/richtext/exports/client/rcc.d.ts +37 -0
- package/dist/richtext/exports/client/rcc.d.ts.map +1 -0
- package/dist/richtext/exports/client/rcc.js +182 -0
- package/dist/richtext/exports/server/rsc.d.ts +117 -0
- package/dist/richtext/exports/server/rsc.d.ts.map +1 -0
- package/dist/richtext/exports/server/rsc.js +288 -0
- package/dist/richtext/index.d.ts +161 -0
- package/dist/richtext/index.d.ts.map +1 -0
- package/dist/richtext/index.js +243 -0
- package/dist/richtext/lexical.d.ts +23 -0
- package/dist/richtext/lexical.d.ts.map +1 -0
- package/dist/richtext/lexical.js +35 -0
- package/dist/security/audit.d.ts +188 -0
- package/dist/security/audit.d.ts.map +1 -0
- package/dist/security/audit.js +431 -0
- package/dist/security/auth.d.ts +241 -0
- package/dist/security/auth.d.ts.map +1 -0
- package/dist/security/auth.js +474 -0
- package/dist/security/authorization.d.ts +235 -0
- package/dist/security/authorization.d.ts.map +1 -0
- package/dist/security/authorization.js +434 -0
- package/dist/security/encryption.d.ts +214 -0
- package/dist/security/encryption.d.ts.map +1 -0
- package/dist/security/encryption.js +506 -0
- package/dist/security/gdpr.d.ts +300 -0
- package/dist/security/gdpr.d.ts.map +1 -0
- package/dist/security/gdpr.js +470 -0
- package/dist/security/headers.d.ts +182 -0
- package/dist/security/headers.d.ts.map +1 -0
- package/dist/security/headers.js +402 -0
- package/dist/security/index.d.ts +19 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +18 -0
- package/dist/server/index.d.ts +21 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +28 -0
- package/dist/server/renderPage.d.ts +69 -0
- package/dist/server/renderPage.d.ts.map +1 -0
- package/dist/server/renderPage.js +109 -0
- package/dist/storage/index.d.ts +1 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +4 -0
- package/dist/storage/vercel-blob.d.ts +17 -0
- package/dist/storage/vercel-blob.d.ts.map +1 -0
- package/dist/storage/vercel-blob.js +83 -0
- package/dist/translations/index.d.ts +17 -0
- package/dist/translations/index.d.ts.map +1 -0
- package/dist/translations/index.js +1 -0
- package/dist/types/access.d.ts +67 -0
- package/dist/types/access.d.ts.map +1 -0
- package/dist/types/access.js +8 -0
- package/dist/types/api.d.ts +57 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/api.js +8 -0
- package/dist/types/cms.d.ts +8 -0
- package/dist/types/cms.d.ts.map +1 -0
- package/dist/types/cms.js +6 -0
- package/dist/types/config.d.ts +152 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +9 -0
- package/dist/types/core.d.ts +11 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/core.js +9 -0
- package/dist/types/extensions.d.ts +116 -0
- package/dist/types/extensions.d.ts.map +1 -0
- package/dist/types/extensions.js +8 -0
- package/dist/types/frontend.d.ts +53 -0
- package/dist/types/frontend.d.ts.map +1 -0
- package/dist/types/frontend.js +7 -0
- package/dist/types/generated.d.ts +14 -0
- package/dist/types/generated.d.ts.map +1 -0
- package/dist/types/generated.js +11 -0
- package/dist/types/hooks.d.ts +53 -0
- package/dist/types/hooks.d.ts.map +1 -0
- package/dist/types/hooks.js +8 -0
- package/dist/types/index.d.ts +49 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +61 -0
- package/dist/types/interfaces/app.d.ts +50 -0
- package/dist/types/interfaces/app.d.ts.map +1 -0
- package/dist/types/interfaces/app.js +5 -0
- package/dist/types/jobs.d.ts +112 -0
- package/dist/types/jobs.d.ts.map +1 -0
- package/dist/types/jobs.js +7 -0
- package/dist/types/legacy.d.ts +147 -0
- package/dist/types/legacy.d.ts.map +1 -0
- package/dist/types/legacy.js +8 -0
- package/dist/types/plugins.d.ts +17 -0
- package/dist/types/plugins.d.ts.map +1 -0
- package/dist/types/plugins.js +8 -0
- package/dist/types/query.d.ts +99 -0
- package/dist/types/query.d.ts.map +1 -0
- package/dist/types/query.js +24 -0
- package/dist/types/request.d.ts +40 -0
- package/dist/types/request.d.ts.map +1 -0
- package/dist/types/request.js +8 -0
- package/dist/types/richtext.d.ts +23 -0
- package/dist/types/richtext.d.ts.map +1 -0
- package/dist/types/richtext.js +8 -0
- package/dist/types/runtime.d.ts +216 -0
- package/dist/types/runtime.d.ts.map +1 -0
- package/dist/types/runtime.js +9 -0
- package/dist/types/schema.d.ts +9 -0
- package/dist/types/schema.d.ts.map +1 -0
- package/dist/types/schema.js +7 -0
- package/dist/types/user.d.ts +48 -0
- package/dist/types/user.d.ts.map +1 -0
- package/dist/types/user.js +8 -0
- package/dist/utils/access-conversion.d.ts +17 -0
- package/dist/utils/access-conversion.d.ts.map +1 -0
- package/dist/utils/access-conversion.js +96 -0
- package/dist/utils/api-wrapper.d.ts +63 -0
- package/dist/utils/api-wrapper.d.ts.map +1 -0
- package/dist/utils/api-wrapper.js +151 -0
- package/dist/utils/block-conversion.d.ts +21 -0
- package/dist/utils/block-conversion.d.ts.map +1 -0
- package/dist/utils/block-conversion.js +109 -0
- package/dist/utils/cache.d.ts +86 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +154 -0
- package/dist/utils/deep-clone.d.ts +25 -0
- package/dist/utils/deep-clone.d.ts.map +1 -0
- package/dist/utils/deep-clone.js +115 -0
- package/dist/utils/error-responses.d.ts +57 -0
- package/dist/utils/error-responses.d.ts.map +1 -0
- package/dist/utils/error-responses.js +96 -0
- package/dist/utils/errors.d.ts +97 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +397 -0
- package/dist/utils/field-conversion.d.ts +40 -0
- package/dist/utils/field-conversion.d.ts.map +1 -0
- package/dist/utils/field-conversion.js +275 -0
- package/dist/utils/flattenResult.d.ts +7 -0
- package/dist/utils/flattenResult.d.ts.map +1 -0
- package/dist/utils/flattenResult.js +23 -0
- package/dist/utils/getBlockSelect.d.ts +12 -0
- package/dist/utils/getBlockSelect.d.ts.map +1 -0
- package/dist/utils/getBlockSelect.js +12 -0
- package/dist/utils/getSelectMode.d.ts +8 -0
- package/dist/utils/getSelectMode.d.ts.map +1 -0
- package/dist/utils/getSelectMode.js +21 -0
- package/dist/utils/isValidID.d.ts +5 -0
- package/dist/utils/isValidID.d.ts.map +1 -0
- package/dist/utils/isValidID.js +13 -0
- package/dist/utils/json-parsing.d.ts +48 -0
- package/dist/utils/json-parsing.d.ts.map +1 -0
- package/dist/utils/json-parsing.js +130 -0
- package/dist/utils/jwt-validation.d.ts +14 -0
- package/dist/utils/jwt-validation.d.ts.map +1 -0
- package/dist/utils/jwt-validation.js +36 -0
- package/dist/utils/logger-client.d.ts +32 -0
- package/dist/utils/logger-client.d.ts.map +1 -0
- package/dist/utils/logger-client.js +55 -0
- package/dist/utils/logger-server.d.ts +32 -0
- package/dist/utils/logger-server.d.ts.map +1 -0
- package/dist/utils/logger-server.js +68 -0
- package/dist/utils/logger.d.ts +14 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +12 -0
- package/dist/utils/request-context.d.ts +143 -0
- package/dist/utils/request-context.d.ts.map +1 -0
- package/dist/utils/request-context.js +168 -0
- package/dist/utils/request-headers.d.ts +15 -0
- package/dist/utils/request-headers.d.ts.map +1 -0
- package/dist/utils/request-headers.js +31 -0
- package/dist/utils/stripUnselectedFields.d.ts +10 -0
- package/dist/utils/stripUnselectedFields.d.ts.map +1 -0
- package/dist/utils/stripUnselectedFields.js +20 -0
- package/dist/utils/type-guards.d.ts +33 -0
- package/dist/utils/type-guards.d.ts.map +1 -0
- package/dist/utils/type-guards.js +63 -0
- package/dist/utils/user.d.ts +14 -0
- package/dist/utils/user.d.ts.map +1 -0
- package/dist/utils/user.js +15 -0
- package/package.json +250 -697
- package/LICENSE_SUMMARY.md +0 -55
- package/NOTICE +0 -34
- package/dist/core/gaurds/logger/log404/index.spec.snapshot-1 +0 -8
- package/dist/core/gaurds/logger/log404/index.spec.snapshot-2 +0 -9
- package/dist/exports/RenderErrorPage.js +0 -3
- package/dist/exports/__internal.js +0 -3
- package/dist/exports/abort.js +0 -3
- package/dist/exports/bin-entry.js +0 -17
- package/dist/exports/cli.js +0 -3
- package/dist/exports/client.js +0 -3
- package/dist/exports/config.js +0 -1
- package/dist/exports/helpers.js +0 -1
- package/dist/exports/index.js +0 -33
- package/dist/exports/plugin.js +0 -3
- package/dist/exports/prerender.js +0 -3
- package/dist/exports/router.js +0 -3
- package/dist/exports/routing.js +0 -3
- package/dist/exports/server.js +0 -3
- package/dist/exports/setup.js +0 -3
- package/dist/exports/types.js +0 -1
- package/dist/integration/styles.css +0 -141
- package/dist/node/cli/index.js +0 -18
- package/dist/shared/RenderErrorPage.d.ts +0 -3
- package/dist/shared/RenderErrorPage.js +0 -3
- package/dist/shared/abort.js +0 -3
- package/dist/shared/route/routing.js +0 -3
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Edge Caching and ISR (Incremental Static Regeneration)
|
|
3
|
+
*
|
|
4
|
+
* Utilities for Next.js edge caching, ISR, and on-demand revalidation
|
|
5
|
+
*/
|
|
6
|
+
import { logger } from '../observability/logger.js';
|
|
7
|
+
export const ISR_PRESETS = {
|
|
8
|
+
// Revalidate every request
|
|
9
|
+
always: {
|
|
10
|
+
revalidate: 0,
|
|
11
|
+
},
|
|
12
|
+
// Revalidate every minute
|
|
13
|
+
minute: {
|
|
14
|
+
revalidate: 60,
|
|
15
|
+
},
|
|
16
|
+
// Revalidate every 5 minutes
|
|
17
|
+
fiveMinutes: {
|
|
18
|
+
revalidate: 300,
|
|
19
|
+
},
|
|
20
|
+
// Revalidate every hour
|
|
21
|
+
hourly: {
|
|
22
|
+
revalidate: 3600,
|
|
23
|
+
},
|
|
24
|
+
// Revalidate daily
|
|
25
|
+
daily: {
|
|
26
|
+
revalidate: 86400,
|
|
27
|
+
},
|
|
28
|
+
// Never revalidate (static)
|
|
29
|
+
never: {
|
|
30
|
+
revalidate: false,
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Generate static params for ISR
|
|
35
|
+
*/
|
|
36
|
+
export async function generateStaticParams(fetchFn, mapFn) {
|
|
37
|
+
try {
|
|
38
|
+
const items = await fetchFn();
|
|
39
|
+
return items.map(mapFn);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
logger.error('Failed to generate static params', error instanceof Error ? error : new Error(String(error)));
|
|
43
|
+
return [];
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Revalidate tag
|
|
48
|
+
*/
|
|
49
|
+
export async function revalidateTag(tag, secret) {
|
|
50
|
+
try {
|
|
51
|
+
const url = new URL('/api/revalidate', process.env.NEXT_PUBLIC_URL || 'http://localhost:3000');
|
|
52
|
+
url.searchParams.set('tag', tag);
|
|
53
|
+
if (secret) {
|
|
54
|
+
url.searchParams.set('secret', secret);
|
|
55
|
+
}
|
|
56
|
+
const response = await fetch(url.toString(), {
|
|
57
|
+
method: 'POST',
|
|
58
|
+
});
|
|
59
|
+
const data = await response.json();
|
|
60
|
+
return {
|
|
61
|
+
revalidated: response.ok,
|
|
62
|
+
error: data.error,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
return {
|
|
67
|
+
revalidated: false,
|
|
68
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Revalidate path
|
|
74
|
+
*/
|
|
75
|
+
export async function revalidatePath(path, secret) {
|
|
76
|
+
try {
|
|
77
|
+
const url = new URL('/api/revalidate', process.env.NEXT_PUBLIC_URL || 'http://localhost:3000');
|
|
78
|
+
url.searchParams.set('path', path);
|
|
79
|
+
if (secret) {
|
|
80
|
+
url.searchParams.set('secret', secret);
|
|
81
|
+
}
|
|
82
|
+
const response = await fetch(url.toString(), {
|
|
83
|
+
method: 'POST',
|
|
84
|
+
});
|
|
85
|
+
const data = await response.json();
|
|
86
|
+
return {
|
|
87
|
+
revalidated: response.ok,
|
|
88
|
+
error: data.error,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
return {
|
|
93
|
+
revalidated: false,
|
|
94
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Revalidate multiple paths
|
|
100
|
+
*/
|
|
101
|
+
export async function revalidatePaths(paths, secret) {
|
|
102
|
+
const results = await Promise.allSettled(paths.map((path) => revalidatePath(path, secret)));
|
|
103
|
+
let revalidated = 0;
|
|
104
|
+
let failed = 0;
|
|
105
|
+
const errors = [];
|
|
106
|
+
for (let i = 0; i < results.length; i++) {
|
|
107
|
+
const result = results[i];
|
|
108
|
+
const path = paths[i];
|
|
109
|
+
if (!(result && path)) {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
if (result.status === 'fulfilled' && result.value.revalidated) {
|
|
113
|
+
revalidated++;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
failed++;
|
|
117
|
+
const error = result.status === 'fulfilled'
|
|
118
|
+
? result.value.error || 'Unknown error'
|
|
119
|
+
: String(result.reason) || 'Unknown error';
|
|
120
|
+
errors.push({ path, error });
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return { revalidated, failed, errors };
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Revalidate multiple tags
|
|
127
|
+
*/
|
|
128
|
+
export async function revalidateTags(tags, secret) {
|
|
129
|
+
const results = await Promise.allSettled(tags.map((tag) => revalidateTag(tag, secret)));
|
|
130
|
+
let revalidated = 0;
|
|
131
|
+
let failed = 0;
|
|
132
|
+
const errors = [];
|
|
133
|
+
for (let i = 0; i < results.length; i++) {
|
|
134
|
+
const result = results[i];
|
|
135
|
+
const tag = tags[i];
|
|
136
|
+
if (!(result && tag)) {
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
if (result.status === 'fulfilled' && result.value.revalidated) {
|
|
140
|
+
revalidated++;
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
failed++;
|
|
144
|
+
const error = result.status === 'fulfilled'
|
|
145
|
+
? result.value.error || 'Unknown error'
|
|
146
|
+
: String(result.reason) || 'Unknown error';
|
|
147
|
+
errors.push({ tag, error });
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return { revalidated, failed, errors };
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Create edge cached fetch
|
|
154
|
+
*/
|
|
155
|
+
export function createEdgeCachedFetch(config = {}) {
|
|
156
|
+
return async (url, options) => {
|
|
157
|
+
const fetchOptions = {
|
|
158
|
+
...options,
|
|
159
|
+
...config,
|
|
160
|
+
next: {
|
|
161
|
+
...options?.next,
|
|
162
|
+
...config.next,
|
|
163
|
+
},
|
|
164
|
+
};
|
|
165
|
+
const response = await fetch(url, fetchOptions);
|
|
166
|
+
if (!response.ok) {
|
|
167
|
+
throw new Error(`Fetch failed: ${response.statusText}`);
|
|
168
|
+
}
|
|
169
|
+
return response.json();
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Unstable cache wrapper (Next.js 14+)
|
|
174
|
+
*/
|
|
175
|
+
export function createCachedFunction(fn, _options = {}) {
|
|
176
|
+
// In production, this would use Next.js unstable_cache
|
|
177
|
+
// For now, return the function as-is
|
|
178
|
+
return fn;
|
|
179
|
+
}
|
|
180
|
+
export class EdgeRateLimiter {
|
|
181
|
+
config;
|
|
182
|
+
cache = new Map();
|
|
183
|
+
constructor(config) {
|
|
184
|
+
this.config = config;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Check rate limit
|
|
188
|
+
*/
|
|
189
|
+
check(request) {
|
|
190
|
+
const key = this.config.key
|
|
191
|
+
? this.config.key(request)
|
|
192
|
+
: request.headers.get('x-forwarded-for') || 'unknown';
|
|
193
|
+
const now = Date.now();
|
|
194
|
+
let entry = this.cache.get(key);
|
|
195
|
+
// Reset if window expired
|
|
196
|
+
if (!entry || now > entry.resetTime) {
|
|
197
|
+
entry = {
|
|
198
|
+
count: 0,
|
|
199
|
+
resetTime: now + this.config.window,
|
|
200
|
+
};
|
|
201
|
+
this.cache.set(key, entry);
|
|
202
|
+
}
|
|
203
|
+
// Increment count
|
|
204
|
+
entry.count++;
|
|
205
|
+
const allowed = entry.count <= this.config.limit;
|
|
206
|
+
const remaining = Math.max(0, this.config.limit - entry.count);
|
|
207
|
+
return {
|
|
208
|
+
allowed,
|
|
209
|
+
limit: this.config.limit,
|
|
210
|
+
remaining,
|
|
211
|
+
reset: entry.resetTime,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Clean up expired entries
|
|
216
|
+
*/
|
|
217
|
+
cleanup() {
|
|
218
|
+
const now = Date.now();
|
|
219
|
+
for (const [key, entry] of this.cache.entries()) {
|
|
220
|
+
if (now > entry.resetTime) {
|
|
221
|
+
this.cache.delete(key);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
export function getGeoLocation(request) {
|
|
227
|
+
// Vercel edge headers
|
|
228
|
+
const country = request.headers.get('x-vercel-ip-country');
|
|
229
|
+
const region = request.headers.get('x-vercel-ip-country-region');
|
|
230
|
+
const city = request.headers.get('x-vercel-ip-city');
|
|
231
|
+
const latitude = request.headers.get('x-vercel-ip-latitude');
|
|
232
|
+
const longitude = request.headers.get('x-vercel-ip-longitude');
|
|
233
|
+
if (!country) {
|
|
234
|
+
// Cloudflare headers
|
|
235
|
+
const cfCountry = request.headers.get('cf-ipcountry');
|
|
236
|
+
if (cfCountry) {
|
|
237
|
+
return {
|
|
238
|
+
country: cfCountry,
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
return null;
|
|
242
|
+
}
|
|
243
|
+
return {
|
|
244
|
+
country: country || undefined,
|
|
245
|
+
region: region || undefined,
|
|
246
|
+
city: city ? decodeURIComponent(city) : undefined,
|
|
247
|
+
latitude: latitude ? parseFloat(latitude) : undefined,
|
|
248
|
+
longitude: longitude ? parseFloat(longitude) : undefined,
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Edge A/B testing with cache
|
|
253
|
+
*/
|
|
254
|
+
export function getABTestVariant(request, testName, variants) {
|
|
255
|
+
// Check cookie first
|
|
256
|
+
const cookieName = `ab-test-${testName}`;
|
|
257
|
+
const cookieVariant = request.cookies.get(cookieName)?.value;
|
|
258
|
+
if (cookieVariant && variants.includes(cookieVariant)) {
|
|
259
|
+
return cookieVariant;
|
|
260
|
+
}
|
|
261
|
+
// Assign variant based on IP hash
|
|
262
|
+
const ip = request.headers.get('x-forwarded-for') || 'unknown';
|
|
263
|
+
const hash = simpleHash(ip + testName);
|
|
264
|
+
const variantIndex = hash % variants.length;
|
|
265
|
+
const variant = variants[variantIndex];
|
|
266
|
+
if (!variant) {
|
|
267
|
+
throw new Error('No variant found for A/B test');
|
|
268
|
+
}
|
|
269
|
+
return variant;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Simple hash function
|
|
273
|
+
*/
|
|
274
|
+
function simpleHash(str) {
|
|
275
|
+
let hash = 0;
|
|
276
|
+
for (let i = 0; i < str.length; i++) {
|
|
277
|
+
const char = str.charCodeAt(i);
|
|
278
|
+
hash = (hash << 5) - hash + char;
|
|
279
|
+
hash = hash & hash;
|
|
280
|
+
}
|
|
281
|
+
return Math.abs(hash);
|
|
282
|
+
}
|
|
283
|
+
export function getPersonalizationConfig(request) {
|
|
284
|
+
const userAgent = request.headers.get('user-agent') || '';
|
|
285
|
+
const device = getDeviceType(userAgent);
|
|
286
|
+
const location = getGeoLocation(request);
|
|
287
|
+
return {
|
|
288
|
+
userId: request.cookies.get('user-id')?.value,
|
|
289
|
+
location: location || undefined,
|
|
290
|
+
device,
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Detect device type
|
|
295
|
+
*/
|
|
296
|
+
function getDeviceType(userAgent) {
|
|
297
|
+
if (/mobile/i.test(userAgent) && !/tablet|ipad/i.test(userAgent)) {
|
|
298
|
+
return 'mobile';
|
|
299
|
+
}
|
|
300
|
+
if (/tablet|ipad/i.test(userAgent)) {
|
|
301
|
+
return 'tablet';
|
|
302
|
+
}
|
|
303
|
+
return 'desktop';
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Edge cache headers helper
|
|
307
|
+
*/
|
|
308
|
+
export function setEdgeCacheHeaders(response, config) {
|
|
309
|
+
const cacheControl = [];
|
|
310
|
+
if (config.maxAge !== undefined) {
|
|
311
|
+
cacheControl.push(`max-age=${config.maxAge}`);
|
|
312
|
+
}
|
|
313
|
+
if (config.sMaxAge !== undefined) {
|
|
314
|
+
cacheControl.push(`s-maxage=${config.sMaxAge}`);
|
|
315
|
+
}
|
|
316
|
+
if (config.staleWhileRevalidate !== undefined) {
|
|
317
|
+
cacheControl.push(`stale-while-revalidate=${config.staleWhileRevalidate}`);
|
|
318
|
+
}
|
|
319
|
+
if (cacheControl.length > 0) {
|
|
320
|
+
response.headers.set('Cache-Control', cacheControl.join(', '));
|
|
321
|
+
}
|
|
322
|
+
if (config.tags && config.tags.length > 0) {
|
|
323
|
+
response.headers.set('Cache-Tag', config.tags.join(','));
|
|
324
|
+
}
|
|
325
|
+
return response;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Preload links for critical resources
|
|
329
|
+
*/
|
|
330
|
+
export function addPreloadLinks(response, resources) {
|
|
331
|
+
const links = resources.map((resource) => {
|
|
332
|
+
const attrs = [`<${resource.href}>`, `rel="preload"`, `as="${resource.as}"`];
|
|
333
|
+
if (resource.type) {
|
|
334
|
+
attrs.push(`type="${resource.type}"`);
|
|
335
|
+
}
|
|
336
|
+
if (resource.crossorigin) {
|
|
337
|
+
attrs.push('crossorigin');
|
|
338
|
+
}
|
|
339
|
+
return attrs.join('; ');
|
|
340
|
+
});
|
|
341
|
+
if (links.length > 0) {
|
|
342
|
+
response.headers.set('Link', links.join(', '));
|
|
343
|
+
}
|
|
344
|
+
return response;
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Cache warming for ISR pages
|
|
348
|
+
*/
|
|
349
|
+
export async function warmISRCache(paths, baseURL = process.env.NEXT_PUBLIC_URL || 'http://localhost:3000') {
|
|
350
|
+
const results = await Promise.allSettled(paths.map(async (path) => {
|
|
351
|
+
const url = new URL(path, baseURL);
|
|
352
|
+
const response = await fetch(url.toString());
|
|
353
|
+
if (!response.ok) {
|
|
354
|
+
throw new Error(`${response.status} ${response.statusText}`);
|
|
355
|
+
}
|
|
356
|
+
return true;
|
|
357
|
+
}));
|
|
358
|
+
let warmed = 0;
|
|
359
|
+
let failed = 0;
|
|
360
|
+
const errors = [];
|
|
361
|
+
for (let i = 0; i < results.length; i++) {
|
|
362
|
+
const result = results[i];
|
|
363
|
+
const path = paths[i];
|
|
364
|
+
if (!(result && path)) {
|
|
365
|
+
continue;
|
|
366
|
+
}
|
|
367
|
+
if (result.status === 'fulfilled') {
|
|
368
|
+
warmed++;
|
|
369
|
+
}
|
|
370
|
+
else {
|
|
371
|
+
failed++;
|
|
372
|
+
errors.push({
|
|
373
|
+
path,
|
|
374
|
+
error: result.reason instanceof Error
|
|
375
|
+
? result.reason.message
|
|
376
|
+
: String(result.reason) || 'Unknown error',
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
return { warmed, failed, errors };
|
|
381
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service Worker Utilities
|
|
3
|
+
*
|
|
4
|
+
* Utilities for service worker registration, caching strategies, and offline support
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Service Worker Configuration
|
|
8
|
+
*/
|
|
9
|
+
export interface ServiceWorkerConfig {
|
|
10
|
+
scope?: string;
|
|
11
|
+
updateViaCache?: 'all' | 'imports' | 'none';
|
|
12
|
+
scriptURL?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const DEFAULT_SW_CONFIG: ServiceWorkerConfig;
|
|
15
|
+
/**
|
|
16
|
+
* Register service worker
|
|
17
|
+
*/
|
|
18
|
+
export declare function registerServiceWorker(config?: ServiceWorkerConfig): Promise<ServiceWorkerRegistration | null>;
|
|
19
|
+
/**
|
|
20
|
+
* Unregister service worker
|
|
21
|
+
*/
|
|
22
|
+
export declare function unregisterServiceWorker(): Promise<boolean>;
|
|
23
|
+
/**
|
|
24
|
+
* Update service worker
|
|
25
|
+
*/
|
|
26
|
+
export declare function updateServiceWorker(): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Skip waiting and activate new service worker
|
|
29
|
+
*/
|
|
30
|
+
export declare function skipWaitingAndActivate(): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Cache Strategies
|
|
33
|
+
*/
|
|
34
|
+
export declare const CACHE_STRATEGIES: {
|
|
35
|
+
readonly networkFirst: "network-first";
|
|
36
|
+
readonly cacheFirst: "cache-first";
|
|
37
|
+
readonly networkOnly: "network-only";
|
|
38
|
+
readonly cacheOnly: "cache-only";
|
|
39
|
+
readonly staleWhileRevalidate: "stale-while-revalidate";
|
|
40
|
+
};
|
|
41
|
+
export type CacheStrategy = (typeof CACHE_STRATEGIES)[keyof typeof CACHE_STRATEGIES];
|
|
42
|
+
/**
|
|
43
|
+
* Cache Configuration
|
|
44
|
+
*/
|
|
45
|
+
export interface CacheConfig {
|
|
46
|
+
name: string;
|
|
47
|
+
version: number;
|
|
48
|
+
maxAge?: number;
|
|
49
|
+
maxEntries?: number;
|
|
50
|
+
strategy?: CacheStrategy;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Default cache configurations
|
|
54
|
+
*/
|
|
55
|
+
export declare const DEFAULT_CACHES: Record<string, CacheConfig>;
|
|
56
|
+
/**
|
|
57
|
+
* Generate cache name
|
|
58
|
+
*/
|
|
59
|
+
export declare function generateCacheName(config: CacheConfig): string;
|
|
60
|
+
/**
|
|
61
|
+
* Service worker message types
|
|
62
|
+
*/
|
|
63
|
+
export declare const SW_MESSAGES: {
|
|
64
|
+
readonly SKIP_WAITING: "SKIP_WAITING";
|
|
65
|
+
readonly CLAIM_CLIENTS: "CLAIM_CLIENTS";
|
|
66
|
+
readonly CLEAR_CACHE: "CLEAR_CACHE";
|
|
67
|
+
readonly CACHE_URLS: "CACHE_URLS";
|
|
68
|
+
readonly DELETE_CACHE: "DELETE_CACHE";
|
|
69
|
+
readonly GET_CACHE_SIZE: "GET_CACHE_SIZE";
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Post message to service worker
|
|
73
|
+
*/
|
|
74
|
+
export declare function postMessageToSW(type: string, payload?: unknown): Promise<unknown>;
|
|
75
|
+
/**
|
|
76
|
+
* Clear all caches
|
|
77
|
+
*/
|
|
78
|
+
export declare function clearAllCaches(): Promise<void>;
|
|
79
|
+
/**
|
|
80
|
+
* Clear specific cache
|
|
81
|
+
*/
|
|
82
|
+
export declare function clearCache(cacheName: string): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Precache URLs
|
|
85
|
+
*/
|
|
86
|
+
export declare function precacheURLs(urls: string[]): Promise<void>;
|
|
87
|
+
/**
|
|
88
|
+
* Get cache size
|
|
89
|
+
*/
|
|
90
|
+
export declare function getCacheSize(): Promise<{
|
|
91
|
+
quota: number;
|
|
92
|
+
usage: number;
|
|
93
|
+
available: number;
|
|
94
|
+
}>;
|
|
95
|
+
/**
|
|
96
|
+
* Check if service worker is supported
|
|
97
|
+
*/
|
|
98
|
+
export declare function isServiceWorkerSupported(): boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Check if service worker is registered
|
|
101
|
+
*/
|
|
102
|
+
export declare function isServiceWorkerRegistered(): Promise<boolean>;
|
|
103
|
+
/**
|
|
104
|
+
* Get service worker state
|
|
105
|
+
*/
|
|
106
|
+
export declare function getServiceWorkerState(): Promise<{
|
|
107
|
+
registered: boolean;
|
|
108
|
+
installing: boolean;
|
|
109
|
+
waiting: boolean;
|
|
110
|
+
active: boolean;
|
|
111
|
+
controller: boolean;
|
|
112
|
+
}>;
|
|
113
|
+
/**
|
|
114
|
+
* React hook for service worker
|
|
115
|
+
*/
|
|
116
|
+
export declare function useServiceWorker(config?: ServiceWorkerConfig): {
|
|
117
|
+
register: () => Promise<null>;
|
|
118
|
+
unregister: () => Promise<boolean>;
|
|
119
|
+
update: () => Promise<void>;
|
|
120
|
+
skipWaitingAndActivate: () => Promise<void>;
|
|
121
|
+
state: {
|
|
122
|
+
registered: boolean;
|
|
123
|
+
installing: boolean;
|
|
124
|
+
waiting: boolean;
|
|
125
|
+
active: boolean;
|
|
126
|
+
controller: boolean;
|
|
127
|
+
};
|
|
128
|
+
} | {
|
|
129
|
+
register: () => Promise<ServiceWorkerRegistration | null>;
|
|
130
|
+
unregister: typeof unregisterServiceWorker;
|
|
131
|
+
update: typeof updateServiceWorker;
|
|
132
|
+
skipWaitingAndActivate: typeof skipWaitingAndActivate;
|
|
133
|
+
state: Promise<{
|
|
134
|
+
registered: boolean;
|
|
135
|
+
installing: boolean;
|
|
136
|
+
waiting: boolean;
|
|
137
|
+
active: boolean;
|
|
138
|
+
controller: boolean;
|
|
139
|
+
}>;
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* Offline detection
|
|
143
|
+
*/
|
|
144
|
+
export declare function isOffline(): boolean;
|
|
145
|
+
/**
|
|
146
|
+
* Listen for online/offline events
|
|
147
|
+
*/
|
|
148
|
+
export declare function onNetworkChange(callback: (online: boolean) => void): () => void;
|
|
149
|
+
/**
|
|
150
|
+
* Background sync registration
|
|
151
|
+
*/
|
|
152
|
+
export declare function registerBackgroundSync(tag: string): Promise<void>;
|
|
153
|
+
/**
|
|
154
|
+
* Push notification permission
|
|
155
|
+
*/
|
|
156
|
+
export declare function requestNotificationPermission(): Promise<NotificationPermission>;
|
|
157
|
+
/**
|
|
158
|
+
* Subscribe to push notifications
|
|
159
|
+
*/
|
|
160
|
+
export declare function subscribeToPush(vapidPublicKey: string): Promise<PushSubscription | null>;
|
|
161
|
+
/**
|
|
162
|
+
* Unsubscribe from push notifications
|
|
163
|
+
*/
|
|
164
|
+
export declare function unsubscribeFromPush(): Promise<boolean>;
|
|
165
|
+
//# sourceMappingURL=service-worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-worker.d.ts","sourceRoot":"","sources":["../../src/caching/service-worker.ts"],"names":[],"mappings":"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"}
|