@revealui/core 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/compression.d.ts.map +1 -1
- package/dist/api/payload-optimization.d.ts.map +1 -1
- package/dist/api/rate-limit.d.ts +29 -28
- package/dist/api/rate-limit.d.ts.map +1 -1
- package/dist/api/rate-limit.js +63 -3
- package/dist/api/response-cache.d.ts.map +1 -1
- package/dist/api/response-cache.js +1 -1
- package/dist/api/rest.d.ts.map +1 -1
- package/dist/api/rest.js +3 -2
- package/dist/auth/access.d.ts.map +1 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/cache/query-cache.d.ts +12 -10
- package/dist/cache/query-cache.d.ts.map +1 -1
- package/dist/cache/query-cache.js +38 -42
- package/dist/caching/app-cache.d.ts +5 -0
- package/dist/caching/app-cache.d.ts.map +1 -1
- package/dist/caching/app-cache.js +9 -1
- package/dist/caching/cdn-config.d.ts.map +1 -1
- package/dist/caching/cdn-config.js +4 -0
- package/dist/caching/edge-cache.d.ts +1 -1
- package/dist/caching/edge-cache.d.ts.map +1 -1
- package/dist/caching/edge-cache.js +36 -7
- package/dist/caching/index.d.ts +6 -0
- package/dist/caching/index.d.ts.map +1 -0
- package/dist/caching/index.js +5 -0
- package/dist/caching/service-worker.d.ts +6 -3
- package/dist/caching/service-worker.d.ts.map +1 -1
- package/dist/caching/service-worker.js +3 -2
- package/dist/client/admin/RichText.d.ts +1 -1
- package/dist/client/admin/RichText.d.ts.map +1 -1
- package/dist/client/admin/components/AdminDashboard.d.ts.map +1 -1
- package/dist/client/admin/components/AdminDashboard.js +178 -205
- package/dist/client/admin/components/CollectionList.d.ts.map +1 -1
- package/dist/client/admin/components/DocumentForm.d.ts.map +1 -1
- package/dist/client/admin/components/DocumentForm.js +130 -6
- package/dist/client/admin/components/GlobalForm.d.ts.map +1 -1
- package/dist/client/admin/context/ServerFunctionContext.d.ts +8 -0
- package/dist/client/admin/context/ServerFunctionContext.d.ts.map +1 -0
- package/dist/client/admin/context/ServerFunctionContext.js +15 -0
- package/dist/client/admin/i18n/en.d.ts.map +1 -1
- package/dist/client/admin/index.d.ts +1 -0
- package/dist/client/admin/index.d.ts.map +1 -1
- package/dist/client/admin/index.js +1 -0
- package/dist/client/admin/layout.d.ts +1 -1
- package/dist/client/admin/layout.d.ts.map +1 -1
- package/dist/client/admin/layout.js +3 -2
- package/dist/client/admin/page.d.ts.map +1 -1
- package/dist/client/admin/utils/apiClient.d.ts.map +1 -1
- package/dist/client/admin/utils/apiClient.js +0 -4
- package/dist/client/admin/utils/index.d.ts +0 -1
- package/dist/client/admin/utils/index.d.ts.map +1 -1
- package/dist/client/admin/utils/index.js +0 -1
- package/dist/client/admin/utils/serializeConfig.d.ts.map +1 -1
- package/dist/client/hooks.d.ts.map +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/richtext/RichTextEditor.d.ts.map +1 -1
- package/dist/client/richtext/components/ImageNodeComponent.d.ts.map +1 -1
- package/dist/client/richtext/components/ImageNodeComponent.js +0 -1
- package/dist/client/richtext/components/ImageUploadButton.d.ts +2 -0
- package/dist/client/richtext/components/ImageUploadButton.d.ts.map +1 -1
- package/dist/client/richtext/components/ImageUploadButton.js +30 -15
- package/dist/client/richtext/index.d.ts.map +1 -1
- package/dist/client/richtext/nodes/DecoratorBlockNode.d.ts.map +1 -1
- package/dist/client/richtext/nodes/ImageNode.d.ts.map +1 -1
- package/dist/client/richtext/plugins/CollaborationPlugin.d.ts.map +1 -1
- package/dist/client/richtext/plugins/CursorsOverlayPlugin.d.ts.map +1 -1
- package/dist/client/richtext/plugins/FloatingToolbarPlugin.d.ts.map +1 -1
- package/dist/client/richtext/plugins/ImagePlugin.d.ts.map +1 -1
- package/dist/client/richtext/plugins/ToolbarPlugin.d.ts.map +1 -1
- package/dist/client/ui/index.d.ts.map +1 -1
- package/dist/client/ui/index.js +1 -1
- package/dist/collections/CollectionOperations.d.ts +7 -7
- package/dist/collections/CollectionOperations.d.ts.map +1 -1
- package/dist/collections/CollectionOperations.js +15 -1
- package/dist/collections/hooks.d.ts.map +1 -1
- package/dist/collections/index.d.ts.map +1 -1
- package/dist/collections/operations/create.d.ts +2 -4
- package/dist/collections/operations/create.d.ts.map +1 -1
- package/dist/collections/operations/create.js +7 -5
- package/dist/collections/operations/createMany.d.ts +12 -0
- package/dist/collections/operations/createMany.d.ts.map +1 -0
- package/dist/collections/operations/createMany.js +43 -0
- package/dist/collections/operations/delete.d.ts +1 -1
- package/dist/collections/operations/delete.d.ts.map +1 -1
- package/dist/collections/operations/delete.js +31 -2
- package/dist/collections/operations/deleteMany.d.ts +11 -0
- package/dist/collections/operations/deleteMany.d.ts.map +1 -0
- package/dist/collections/operations/deleteMany.js +50 -0
- package/dist/collections/operations/fieldHooks.d.ts +2 -2
- package/dist/collections/operations/fieldHooks.d.ts.map +1 -1
- package/dist/collections/operations/fieldHooks.js +4 -4
- package/dist/collections/operations/find.d.ts +2 -4
- package/dist/collections/operations/find.d.ts.map +1 -1
- package/dist/collections/operations/find.js +115 -8
- package/dist/collections/operations/findById.d.ts +3 -4
- package/dist/collections/operations/findById.d.ts.map +1 -1
- package/dist/collections/operations/findById.js +53 -1
- package/dist/collections/operations/sqlAdapter.d.ts +23 -0
- package/dist/collections/operations/sqlAdapter.d.ts.map +1 -0
- package/dist/collections/operations/sqlAdapter.js +76 -0
- package/dist/collections/operations/update.d.ts +3 -5
- package/dist/collections/operations/update.d.ts.map +1 -1
- package/dist/collections/operations/update.js +103 -11
- package/dist/collections/operations/updateMany.d.ts +11 -0
- package/dist/collections/operations/updateMany.d.ts.map +1 -0
- package/dist/collections/operations/updateMany.js +52 -0
- package/dist/collections/registry.d.ts +12 -0
- package/dist/collections/registry.d.ts.map +1 -0
- package/dist/collections/registry.js +38 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/runtime.d.ts.map +1 -1
- package/dist/config/utils.d.ts +0 -10
- package/dist/config/utils.d.ts.map +1 -1
- package/dist/config/utils.js +0 -13
- package/dist/database/index.d.ts +3 -0
- package/dist/database/index.d.ts.map +1 -1
- package/dist/database/index.js +1 -5
- package/dist/database/safe-parse.d.ts.map +1 -1
- package/dist/database/ssl-config.d.ts.map +1 -1
- package/dist/database/type-adapter.d.ts.map +1 -1
- package/dist/database/universal-postgres.d.ts.map +1 -1
- package/dist/database/universal-postgres.js +6 -1
- package/dist/dataloader.d.ts.map +1 -1
- package/dist/error-handling/circuit-breaker.d.ts +1 -1
- package/dist/error-handling/circuit-breaker.d.ts.map +1 -1
- package/dist/error-handling/circuit-breaker.js +11 -3
- package/dist/error-handling/error-boundary.d.ts.map +1 -1
- package/dist/error-handling/error-reporter.d.ts +1 -1
- package/dist/error-handling/error-reporter.d.ts.map +1 -1
- package/dist/error-handling/error-reporter.js +19 -5
- package/dist/error-handling/fallback-components.d.ts.map +1 -1
- package/dist/error-handling/fallback-components.js +1 -1
- package/dist/error-handling/index.d.ts +2 -4
- package/dist/error-handling/index.d.ts.map +1 -1
- package/dist/error-handling/index.js +1 -4
- package/dist/error-handling/retry.d.ts.map +1 -1
- package/dist/error-handling/retry.js +13 -8
- package/dist/factories/builders.d.ts.map +1 -1
- package/dist/factories/index.d.ts.map +1 -1
- package/dist/features.d.ts +0 -4
- package/dist/features.d.ts.map +1 -1
- package/dist/features.js +0 -2
- package/dist/fieldTraversal.d.ts.map +1 -1
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/getDefaultValue.d.ts.map +1 -1
- package/dist/fields/getFieldPaths.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/index.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
- package/dist/generated/types/cms.d.ts.map +1 -1
- package/dist/generated/types/cms.js +0 -1
- package/dist/generated/types/neon.d.ts.map +1 -1
- package/dist/generated/types/neon.js +4 -2
- package/dist/globals/GlobalOperations.d.ts.map +1 -1
- package/dist/globals/GlobalOperations.js +4 -2
- package/dist/globals/index.d.ts.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/instance/RevealUIInstance.d.ts.map +1 -1
- package/dist/instance/RevealUIInstance.js +6 -19
- package/dist/instance/index.d.ts.map +1 -1
- package/dist/instance/logger.d.ts.map +1 -1
- package/dist/instance/methods/create.d.ts.map +1 -1
- package/dist/instance/methods/create.js +0 -3
- package/dist/instance/methods/delete.d.ts.map +1 -1
- package/dist/instance/methods/delete.js +1 -4
- package/dist/instance/methods/find.d.ts.map +1 -1
- package/dist/instance/methods/find.js +0 -3
- package/dist/instance/methods/findById.d.ts.map +1 -1
- package/dist/instance/methods/findById.js +0 -3
- package/dist/instance/methods/hooks.d.ts.map +1 -1
- package/dist/instance/methods/update.d.ts.map +1 -1
- package/dist/instance/methods/update.js +0 -3
- package/dist/jobs/index.d.ts +16 -0
- package/dist/jobs/index.d.ts.map +1 -0
- package/dist/jobs/index.js +14 -0
- package/dist/jobs/queue.d.ts +57 -0
- package/dist/jobs/queue.d.ts.map +1 -0
- package/dist/jobs/queue.js +134 -0
- package/dist/license-encryption.d.ts +21 -0
- package/dist/license-encryption.d.ts.map +1 -0
- package/dist/license-encryption.js +74 -0
- package/dist/license.d.ts +20 -3
- package/dist/license.d.ts.map +1 -1
- package/dist/license.js +73 -6
- package/dist/monitoring/alerts.d.ts.map +1 -1
- package/dist/monitoring/cleanup-manager.d.ts.map +1 -1
- package/dist/monitoring/health-monitor.d.ts.map +1 -1
- package/dist/monitoring/index.d.ts.map +1 -1
- package/dist/monitoring/process-registry.d.ts.map +1 -1
- package/dist/monitoring/query-monitor.d.ts.map +1 -1
- package/dist/monitoring/types.d.ts.map +1 -1
- package/dist/monitoring/zombie-detector.d.ts.map +1 -1
- package/dist/monitoring/zombie-detector.js +5 -0
- package/dist/nextjs/index.d.ts.map +1 -1
- package/dist/nextjs/utilities.d.ts.map +1 -1
- package/dist/nextjs/withRevealUI.d.ts.map +1 -1
- package/dist/observability/alerts.d.ts.map +1 -1
- package/dist/observability/alerts.js +1 -2
- package/dist/observability/health-check.d.ts +0 -4
- package/dist/observability/health-check.d.ts.map +1 -1
- package/dist/observability/health-check.js +0 -36
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/logger.d.ts.map +1 -1
- package/dist/observability/logger.js +1 -1
- package/dist/observability/metrics.d.ts.map +1 -1
- package/dist/observability/tracing.d.ts.map +1 -1
- package/dist/observability/tracing.js +0 -1
- package/dist/optimization/asset-optimizer.d.ts +6 -2
- package/dist/optimization/asset-optimizer.d.ts.map +1 -1
- package/dist/optimization/asset-optimizer.js +31 -7
- package/dist/optimization/bundle-analyzer.d.ts +1 -1
- package/dist/optimization/bundle-analyzer.d.ts.map +1 -1
- package/dist/optimization/bundle-analyzer.js +29 -5
- package/dist/optimization/code-splitting.d.ts +0 -10
- package/dist/optimization/code-splitting.d.ts.map +1 -1
- package/dist/optimization/code-splitting.js +0 -16
- package/dist/plugins/form-builder.d.ts.map +1 -1
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/nested-docs.d.ts +4 -0
- package/dist/plugins/nested-docs.d.ts.map +1 -1
- package/dist/plugins/nested-docs.js +50 -5
- package/dist/plugins/redirects.d.ts.map +1 -1
- package/dist/queries/index.d.ts.map +1 -1
- package/dist/queries/queryBuilder.d.ts.map +1 -1
- package/dist/queries/queryBuilder.js +9 -2
- package/dist/relationships/analyzer.d.ts.map +1 -1
- package/dist/relationships/analyzer.js +8 -0
- package/dist/relationships/index.d.ts.map +1 -1
- package/dist/relationships/populate-core.d.ts +57 -0
- package/dist/relationships/populate-core.d.ts.map +1 -0
- package/dist/relationships/populate-core.js +116 -0
- package/dist/relationships/populate-helpers.d.ts +5 -51
- package/dist/relationships/populate-helpers.d.ts.map +1 -1
- package/dist/relationships/populate-helpers.js +4 -109
- package/dist/relationships/population.d.ts +1 -9
- package/dist/relationships/population.d.ts.map +1 -1
- package/dist/relationships/population.js +8 -3
- package/dist/revealui.d.ts.map +1 -1
- package/dist/richtext/exports/client/rcc.d.ts.map +1 -1
- package/dist/richtext/exports/client/rcc.js +1 -1
- package/dist/richtext/exports/server/rsc.d.ts +17 -0
- package/dist/richtext/exports/server/rsc.d.ts.map +1 -1
- package/dist/richtext/exports/server/rsc.js +61 -5
- package/dist/richtext/index.d.ts.map +1 -1
- package/dist/richtext/lexical.d.ts.map +1 -1
- package/dist/security/audit.d.ts +1 -1
- package/dist/security/audit.d.ts.map +1 -1
- package/dist/security/audit.js +4 -2
- package/dist/security/auth.d.ts +29 -160
- package/dist/security/auth.d.ts.map +1 -1
- package/dist/security/auth.js +148 -367
- package/dist/security/authorization.d.ts +7 -31
- package/dist/security/authorization.d.ts.map +1 -1
- package/dist/security/authorization.js +72 -14
- package/dist/security/encryption.d.ts +56 -44
- package/dist/security/encryption.d.ts.map +1 -1
- package/dist/security/encryption.js +113 -96
- package/dist/security/gdpr-storage.d.ts +102 -0
- package/dist/security/gdpr-storage.d.ts.map +1 -0
- package/dist/security/gdpr-storage.js +65 -0
- package/dist/security/gdpr.d.ts +57 -37
- package/dist/security/gdpr.d.ts.map +1 -1
- package/dist/security/gdpr.js +155 -89
- package/dist/security/headers.d.ts +4 -2
- package/dist/security/headers.d.ts.map +1 -1
- package/dist/security/headers.js +35 -17
- package/dist/security/index.d.ts +3 -16
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +3 -16
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/renderPage.d.ts.map +1 -1
- package/dist/storage/index.d.ts +1 -0
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +2 -4
- package/dist/storage/vercel-blob.d.ts.map +1 -1
- package/dist/translations/index.d.ts.map +1 -1
- package/dist/types/access.d.ts.map +1 -1
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/cms.d.ts.map +1 -1
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/extensions.d.ts.map +1 -1
- package/dist/types/frontend.d.ts.map +1 -1
- package/dist/types/generated.d.ts.map +1 -1
- package/dist/types/hooks.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/interfaces/app.d.ts.map +1 -1
- package/dist/types/jobs.d.ts.map +1 -1
- package/dist/types/legacy.d.ts.map +1 -1
- package/dist/types/plugins.d.ts.map +1 -1
- package/dist/types/query.d.ts.map +1 -1
- package/dist/types/request.d.ts.map +1 -1
- package/dist/types/richtext.d.ts.map +1 -1
- package/dist/types/runtime.d.ts +59 -1
- package/dist/types/runtime.d.ts.map +1 -1
- package/dist/types/schema.d.ts.map +1 -1
- package/dist/types/user.d.ts.map +1 -1
- package/dist/utils/access-conversion.d.ts.map +1 -1
- package/dist/utils/api-wrapper.d.ts.map +1 -1
- package/dist/utils/api-wrapper.js +1 -1
- package/dist/utils/block-conversion.d.ts.map +1 -1
- package/dist/utils/cache.d.ts.map +1 -1
- package/dist/utils/deep-clone.js +0 -1
- package/dist/utils/error-responses.d.ts.map +1 -1
- package/dist/utils/errors.d.ts +36 -0
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +103 -0
- package/dist/utils/field-conversion.d.ts +1 -1
- package/dist/utils/field-conversion.d.ts.map +1 -1
- package/dist/utils/flattenResult.d.ts.map +1 -1
- package/dist/utils/flattenResult.js +0 -1
- package/dist/utils/getBlockSelect.d.ts.map +1 -1
- package/dist/utils/getSelectMode.d.ts.map +1 -1
- package/dist/utils/isValidID.d.ts.map +1 -1
- package/dist/utils/json-parsing.d.ts.map +1 -1
- package/dist/utils/logger-client.d.ts.map +1 -1
- package/dist/utils/logger-server.d.ts.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/request-context.d.ts.map +1 -1
- package/dist/utils/stripUnselectedFields.d.ts.map +1 -1
- package/dist/utils/type-guards.d.ts.map +1 -1
- package/package.json +39 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compression.d.ts","sourceRoot":"","sources":["../../src/api/compression.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"compression.d.ts","sourceRoot":"","sources":["../../src/api/compression.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG7D,UAAU,kBAAkB;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AA4GD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,YAAY,EACtB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,YAAY,CAAC,CAuCvB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,GAAE,kBAAuB,IAC5D,SAAS,WAAW,EAAE,MAAM,MAAM,OAAO,CAAC,YAAY,CAAC,oCAItE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAExF;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,GAAG,UAAU,EACjC,cAAc,EAAE,UAAU,EAC1B,QAAQ,EAAE,MAAM,GACf,gBAAgB,CAelB;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CtB,CAAC;AAEX;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,OAAO,EACb,QAAQ,GAAE,MAAM,GAAG,IAAa,EAChC,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,UAAU,CAAC,CAGrB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAkB5F;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG;IAC5D,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACjB,CAOA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payload-optimization.d.ts","sourceRoot":"","sources":["../../src/api/payload-optimization.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,UAAU,iBAAiB;IACzB,IAAI,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"payload-optimization.d.ts","sourceRoot":"","sources":["../../src/api/payload-optimization.ts"],"names":[],"mappings":"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"}
|
package/dist/api/rate-limit.d.ts
CHANGED
|
@@ -45,34 +45,35 @@ export declare function getRateLimitStats(): {
|
|
|
45
45
|
expired: number;
|
|
46
46
|
};
|
|
47
47
|
/**
|
|
48
|
-
* Rate limit
|
|
49
|
-
*/
|
|
50
|
-
export
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
48
|
+
* Rate limit preset configuration
|
|
49
|
+
*/
|
|
50
|
+
export interface RateLimitPresetConfig {
|
|
51
|
+
/** Time window in milliseconds */
|
|
52
|
+
windowMs: number;
|
|
53
|
+
/** Maximum requests per window */
|
|
54
|
+
maxRequests: number;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Override one or more rate limit presets.
|
|
58
|
+
*
|
|
59
|
+
* Unknown keys create new presets; existing keys are merged with defaults.
|
|
60
|
+
*/
|
|
61
|
+
export declare function configureRateLimitPresets(overrides: Record<string, Partial<RateLimitPresetConfig>>): void;
|
|
62
|
+
/**
|
|
63
|
+
* Get the current (possibly overridden) rate limit presets.
|
|
64
|
+
*/
|
|
65
|
+
export declare function getRateLimitPresets(): Readonly<Record<string, RateLimitPresetConfig>>;
|
|
66
|
+
/**
|
|
67
|
+
* Reset all presets to their defaults.
|
|
68
|
+
*/
|
|
69
|
+
export declare function resetRateLimitPresets(): void;
|
|
70
|
+
/**
|
|
71
|
+
* Rate limit presets — backward-compatible accessor.
|
|
72
|
+
*
|
|
73
|
+
* Reads from the mutable `rateLimitPresets` so overrides from
|
|
74
|
+
* `configureRateLimitPresets()` are reflected automatically.
|
|
75
|
+
*/
|
|
76
|
+
export declare const RATE_LIMIT_PRESETS: Record<string, RateLimitPresetConfig>;
|
|
76
77
|
/**
|
|
77
78
|
* Rate limit by user ID
|
|
78
79
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../../src/api/rate-limit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../../src/api/rate-limit.ts"],"names":[],"mappings":"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"}
|
package/dist/api/rate-limit.js
CHANGED
|
@@ -5,7 +5,10 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { NextResponse } from 'next/server';
|
|
7
7
|
import { logger } from '../observability/logger.js';
|
|
8
|
-
// In-memory store
|
|
8
|
+
// WARNING: In-memory store — resets on every serverless cold start or process restart.
|
|
9
|
+
// This module is NOT used by any app in production (API uses apps/api/src/middleware/rate-limit.ts,
|
|
10
|
+
// CMS uses @revealui/auth/server which is DB-backed). Exported for framework consumers only.
|
|
11
|
+
// Replace with a database-backed store before using in production.
|
|
9
12
|
const rateLimitStore = new Map();
|
|
10
13
|
/**
|
|
11
14
|
* Default key generator (by IP address)
|
|
@@ -163,9 +166,9 @@ export function getRateLimitStats() {
|
|
|
163
166
|
};
|
|
164
167
|
}
|
|
165
168
|
/**
|
|
166
|
-
*
|
|
169
|
+
* Default rate limit presets (immutable reference copy)
|
|
167
170
|
*/
|
|
168
|
-
|
|
171
|
+
const DEFAULT_RATE_LIMIT_PRESETS = {
|
|
169
172
|
// Very strict (10 requests per minute)
|
|
170
173
|
veryStrict: {
|
|
171
174
|
windowMs: 60 * 1000,
|
|
@@ -197,6 +200,63 @@ export const RATE_LIMIT_PRESETS = {
|
|
|
197
200
|
maxRequests: 10000,
|
|
198
201
|
},
|
|
199
202
|
};
|
|
203
|
+
/** Mutable presets (overridable via configureRateLimitPresets) */
|
|
204
|
+
let rateLimitPresets = {
|
|
205
|
+
...DEFAULT_RATE_LIMIT_PRESETS,
|
|
206
|
+
};
|
|
207
|
+
/**
|
|
208
|
+
* Override one or more rate limit presets.
|
|
209
|
+
*
|
|
210
|
+
* Unknown keys create new presets; existing keys are merged with defaults.
|
|
211
|
+
*/
|
|
212
|
+
export function configureRateLimitPresets(overrides) {
|
|
213
|
+
for (const [key, override] of Object.entries(overrides)) {
|
|
214
|
+
const base = DEFAULT_RATE_LIMIT_PRESETS[key] ?? {
|
|
215
|
+
windowMs: 60_000,
|
|
216
|
+
maxRequests: 100,
|
|
217
|
+
};
|
|
218
|
+
rateLimitPresets[key] = { ...base, ...override };
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Get the current (possibly overridden) rate limit presets.
|
|
223
|
+
*/
|
|
224
|
+
export function getRateLimitPresets() {
|
|
225
|
+
return rateLimitPresets;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Reset all presets to their defaults.
|
|
229
|
+
*/
|
|
230
|
+
export function resetRateLimitPresets() {
|
|
231
|
+
rateLimitPresets = { ...DEFAULT_RATE_LIMIT_PRESETS };
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Rate limit presets — backward-compatible accessor.
|
|
235
|
+
*
|
|
236
|
+
* Reads from the mutable `rateLimitPresets` so overrides from
|
|
237
|
+
* `configureRateLimitPresets()` are reflected automatically.
|
|
238
|
+
*/
|
|
239
|
+
export const RATE_LIMIT_PRESETS = new Proxy({}, {
|
|
240
|
+
get(_target, prop) {
|
|
241
|
+
return rateLimitPresets[prop];
|
|
242
|
+
},
|
|
243
|
+
ownKeys() {
|
|
244
|
+
return Object.keys(rateLimitPresets);
|
|
245
|
+
},
|
|
246
|
+
getOwnPropertyDescriptor(_target, prop) {
|
|
247
|
+
if (prop in rateLimitPresets) {
|
|
248
|
+
return {
|
|
249
|
+
configurable: true,
|
|
250
|
+
enumerable: true,
|
|
251
|
+
value: rateLimitPresets[prop],
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
return undefined;
|
|
255
|
+
},
|
|
256
|
+
has(_target, prop) {
|
|
257
|
+
return prop in rateLimitPresets;
|
|
258
|
+
},
|
|
259
|
+
});
|
|
200
260
|
/**
|
|
201
261
|
* Rate limit by user ID
|
|
202
262
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-cache.d.ts","sourceRoot":"","sources":["../../src/api/response-cache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"response-cache.d.ts","sourceRoot":"","sources":["../../src/api/response-cache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG7D,UAAU,YAAY;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAiBD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAW7D;AAyBD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA0B1F;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,YAAY,EACtB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAY9D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAW1D;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,GAAG,YAAY,CA6B3F;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,YAAiB,IAChD,SAAS,WAAW,EAAE,MAAM,MAAM,OAAO,CAAC,YAAY,CAAC,oCAqBtE;AAED;;GAEG;AACH,wBAAgB,aAAa;;;;;;EA0B5B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAc1C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,GAAE,MAAc,GAAG,MAAM,CAAC,OAAO,CAO5E;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAQ9E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAGrE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,YAAY,CAKxD;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+ChB,CAAC;AAEX;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC5B,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,CAsCvC"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { NextResponse } from 'next/server';
|
|
7
7
|
import { logger } from '../observability/logger.js';
|
|
8
|
-
// In-memory cache store (
|
|
8
|
+
// In-memory cache store (no external cache dependency needed)
|
|
9
9
|
const cacheStore = new Map();
|
|
10
10
|
/**
|
|
11
11
|
* Generate cache key from request
|
package/dist/api/rest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../../src/api/rest.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EAGZ,cAAc,EAGd,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACZ,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../../src/api/rest.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EAGZ,cAAc,EAGd,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,cAAc;IAC7C,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IACX,GAAG,CAAC,EAAE,CAAC,CAAC;IACR,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AA8aD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,QAAQ,CAAC,CAiGnB;AAGD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,gBAAgB,GACzB;IACD,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChE,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjE,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChE,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnE,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CACrE,CAaA"}
|
package/dist/api/rest.js
CHANGED
|
@@ -24,7 +24,9 @@ function parseQueryParams(searchParams) {
|
|
|
24
24
|
if (fallbackLocale) {
|
|
25
25
|
options.fallbackLocale = fallbackLocale;
|
|
26
26
|
}
|
|
27
|
-
// Parse overrideAccess
|
|
27
|
+
// Parse overrideAccess — SECURITY: This flag bypasses collection access control.
|
|
28
|
+
// It is stripped from external API requests below to prevent abuse.
|
|
29
|
+
// Only server-side code should set overrideAccess=true (e.g., internal hooks, seed scripts).
|
|
28
30
|
const overrideAccess = searchParams.get('overrideAccess');
|
|
29
31
|
if (overrideAccess !== null) {
|
|
30
32
|
options.overrideAccess = overrideAccess === 'true';
|
|
@@ -449,7 +451,6 @@ export async function handleRESTRequest(request, config, revealui) {
|
|
|
449
451
|
}
|
|
450
452
|
// Route handlers for Next.js
|
|
451
453
|
export function createRESTHandlers(config, revealui) {
|
|
452
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
453
454
|
const handler = async (request, _context) => {
|
|
454
455
|
return await handleRESTRequest(request, config, revealui);
|
|
455
456
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../src/auth/access.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../src/auth/access.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD,UAAU,aAAa;IACrB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAGD,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAGD,KAAK,oBAAoB,GAAG,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,aAAa,CAAA;CAAE,KAAK,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAEnG,eAAO,MAAM,MAAM,EAAE,oBAAiC,CAAC;AAEvD,eAAO,MAAM,aAAa,EAAE,oBAE3B,CAAC;AAEF,wBAAgB,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE;IAAE,GAAG,EAAE,aAAa,CAAA;CAAE,GAAG,OAAO,CAEhE;AAED,wBAAgB,YAAY,CAAC,EAAE,GAAG,EAAE,EAAE;IAAE,GAAG,EAAE,aAAa,CAAA;CAAE,GAAG,OAAO,CAErE;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,CAI1D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAIhE"}
|
package/dist/auth/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Query Result Caching
|
|
2
|
+
* Query Result Caching
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* In-memory Map-based cache for database queries. No external dependencies
|
|
5
|
+
* (Redis, Memcached, etc.) — RevealUI uses PostgreSQL + ElectricSQL/PGlite
|
|
6
|
+
* for all persistence and sync.
|
|
5
7
|
*/
|
|
6
8
|
interface CacheOptions {
|
|
7
9
|
ttl?: number;
|
|
@@ -22,19 +24,19 @@ export declare function cacheQuery<T>(key: string, queryFn: () => Promise<T>, op
|
|
|
22
24
|
/**
|
|
23
25
|
* Invalidate cache by key
|
|
24
26
|
*/
|
|
25
|
-
export declare function invalidateCache(key: string):
|
|
27
|
+
export declare function invalidateCache(key: string): void;
|
|
26
28
|
/**
|
|
27
29
|
* Invalidate cache by pattern
|
|
28
30
|
*/
|
|
29
|
-
export declare function invalidateCachePattern(pattern: string):
|
|
31
|
+
export declare function invalidateCachePattern(pattern: string): void;
|
|
30
32
|
/**
|
|
31
33
|
* Invalidate cache by tags
|
|
32
34
|
*/
|
|
33
|
-
export declare function invalidateCacheTags(tags: string[]):
|
|
35
|
+
export declare function invalidateCacheTags(tags: string[]): void;
|
|
34
36
|
/**
|
|
35
37
|
* Clear all cache
|
|
36
38
|
*/
|
|
37
|
-
export declare function clearCache():
|
|
39
|
+
export declare function clearCache(): void;
|
|
38
40
|
/**
|
|
39
41
|
* Get cache statistics
|
|
40
42
|
*/
|
|
@@ -54,19 +56,19 @@ export declare function cacheCount(resource: string, filters: Record<string, unk
|
|
|
54
56
|
/**
|
|
55
57
|
* Invalidate resource cache
|
|
56
58
|
*/
|
|
57
|
-
export declare function invalidateResource(resource: string):
|
|
59
|
+
export declare function invalidateResource(resource: string): void;
|
|
58
60
|
/**
|
|
59
61
|
* Warm cache with data
|
|
60
62
|
*/
|
|
61
|
-
export declare function warmCache<T>(key: string, data: T, ttl?: number):
|
|
63
|
+
export declare function warmCache<T>(key: string, data: T, ttl?: number): void;
|
|
62
64
|
/**
|
|
63
65
|
* Get cached value without executing query
|
|
64
66
|
*/
|
|
65
|
-
export declare function getCached<T>(key: string):
|
|
67
|
+
export declare function getCached<T>(key: string): T | null;
|
|
66
68
|
/**
|
|
67
69
|
* Check if key exists in cache
|
|
68
70
|
*/
|
|
69
|
-
export declare function cacheExists(key: string):
|
|
71
|
+
export declare function cacheExists(key: string): boolean;
|
|
70
72
|
/**
|
|
71
73
|
* Memoize function with cache
|
|
72
74
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-cache.d.ts","sourceRoot":"","sources":["../../src/cache/query-cache.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"query-cache.d.ts","sourceRoot":"","sources":["../../src/cache/query-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Query Result Caching
|
|
2
|
+
* Query Result Caching
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* In-memory Map-based cache for database queries. No external dependencies
|
|
5
|
+
* (Redis, Memcached, etc.) — RevealUI uses PostgreSQL + ElectricSQL/PGlite
|
|
6
|
+
* for all persistence and sync.
|
|
5
7
|
*/
|
|
6
8
|
import { logger } from '../observability/logger.js';
|
|
7
|
-
|
|
8
|
-
class RedisCache {
|
|
9
|
+
class QueryCache {
|
|
9
10
|
cache = new Map();
|
|
10
11
|
stats = {
|
|
11
12
|
hits: 0,
|
|
@@ -14,7 +15,7 @@ class RedisCache {
|
|
|
14
15
|
deletes: 0,
|
|
15
16
|
hitRate: 0,
|
|
16
17
|
};
|
|
17
|
-
|
|
18
|
+
get(key) {
|
|
18
19
|
const entry = this.cache.get(key);
|
|
19
20
|
if (!entry) {
|
|
20
21
|
this.stats.misses++;
|
|
@@ -31,17 +32,14 @@ class RedisCache {
|
|
|
31
32
|
this.updateHitRate();
|
|
32
33
|
return entry.value;
|
|
33
34
|
}
|
|
34
|
-
|
|
35
|
+
set(key, value, ttlSeconds) {
|
|
35
36
|
this.cache.set(key, {
|
|
36
37
|
value,
|
|
37
|
-
expires: Date.now() +
|
|
38
|
+
expires: Date.now() + ttlSeconds * 1000,
|
|
38
39
|
});
|
|
39
40
|
this.stats.sets++;
|
|
40
41
|
}
|
|
41
|
-
|
|
42
|
-
await this.set(key, value, ttl);
|
|
43
|
-
}
|
|
44
|
-
async del(...keys) {
|
|
42
|
+
del(...keys) {
|
|
45
43
|
let deleted = 0;
|
|
46
44
|
for (const key of keys) {
|
|
47
45
|
if (this.cache.delete(key)) {
|
|
@@ -51,11 +49,11 @@ class RedisCache {
|
|
|
51
49
|
}
|
|
52
50
|
return deleted;
|
|
53
51
|
}
|
|
54
|
-
|
|
52
|
+
keys(pattern) {
|
|
55
53
|
const regex = new RegExp(pattern.replace('*', '.*'));
|
|
56
54
|
return Array.from(this.cache.keys()).filter((key) => regex.test(key));
|
|
57
55
|
}
|
|
58
|
-
|
|
56
|
+
clear() {
|
|
59
57
|
this.cache.clear();
|
|
60
58
|
}
|
|
61
59
|
getStats() {
|
|
@@ -66,7 +64,7 @@ class RedisCache {
|
|
|
66
64
|
this.stats.hitRate = total > 0 ? (this.stats.hits / total) * 100 : 0;
|
|
67
65
|
}
|
|
68
66
|
}
|
|
69
|
-
const
|
|
67
|
+
const cache = new QueryCache();
|
|
70
68
|
/**
|
|
71
69
|
* Cache a query result
|
|
72
70
|
*/
|
|
@@ -75,7 +73,7 @@ export async function cacheQuery(key, queryFn, options = {}) {
|
|
|
75
73
|
prefix = 'query', } = options;
|
|
76
74
|
const cacheKey = `${prefix}:${key}`;
|
|
77
75
|
// Try cache first
|
|
78
|
-
const cached =
|
|
76
|
+
const cached = cache.get(cacheKey);
|
|
79
77
|
if (cached) {
|
|
80
78
|
try {
|
|
81
79
|
return JSON.parse(cached);
|
|
@@ -89,7 +87,7 @@ export async function cacheQuery(key, queryFn, options = {}) {
|
|
|
89
87
|
const result = await queryFn();
|
|
90
88
|
// Cache result
|
|
91
89
|
try {
|
|
92
|
-
|
|
90
|
+
cache.set(cacheKey, JSON.stringify(result), ttl);
|
|
93
91
|
}
|
|
94
92
|
catch (error) {
|
|
95
93
|
logger.error('Cache set error', error instanceof Error ? error : new Error(String(error)));
|
|
@@ -100,37 +98,37 @@ export async function cacheQuery(key, queryFn, options = {}) {
|
|
|
100
98
|
/**
|
|
101
99
|
* Invalidate cache by key
|
|
102
100
|
*/
|
|
103
|
-
export
|
|
104
|
-
|
|
101
|
+
export function invalidateCache(key) {
|
|
102
|
+
cache.del(key);
|
|
105
103
|
}
|
|
106
104
|
/**
|
|
107
105
|
* Invalidate cache by pattern
|
|
108
106
|
*/
|
|
109
|
-
export
|
|
110
|
-
const keys =
|
|
107
|
+
export function invalidateCachePattern(pattern) {
|
|
108
|
+
const keys = cache.keys(pattern);
|
|
111
109
|
if (keys.length > 0) {
|
|
112
|
-
|
|
110
|
+
cache.del(...keys);
|
|
113
111
|
}
|
|
114
112
|
}
|
|
115
113
|
/**
|
|
116
114
|
* Invalidate cache by tags
|
|
117
115
|
*/
|
|
118
|
-
export
|
|
116
|
+
export function invalidateCacheTags(tags) {
|
|
119
117
|
for (const tag of tags) {
|
|
120
|
-
|
|
118
|
+
invalidateCachePattern(`*:tag:${tag}:*`);
|
|
121
119
|
}
|
|
122
120
|
}
|
|
123
121
|
/**
|
|
124
122
|
* Clear all cache
|
|
125
123
|
*/
|
|
126
|
-
export
|
|
127
|
-
|
|
124
|
+
export function clearCache() {
|
|
125
|
+
cache.clear();
|
|
128
126
|
}
|
|
129
127
|
/**
|
|
130
128
|
* Get cache statistics
|
|
131
129
|
*/
|
|
132
130
|
export function getCacheStats() {
|
|
133
|
-
return
|
|
131
|
+
return cache.getStats();
|
|
134
132
|
}
|
|
135
133
|
/**
|
|
136
134
|
* Cache for list queries
|
|
@@ -164,20 +162,20 @@ export async function cacheCount(resource, filters, queryFn, ttl = 300) {
|
|
|
164
162
|
/**
|
|
165
163
|
* Invalidate resource cache
|
|
166
164
|
*/
|
|
167
|
-
export
|
|
168
|
-
|
|
165
|
+
export function invalidateResource(resource) {
|
|
166
|
+
invalidateCachePattern(`*:${resource}:*`);
|
|
169
167
|
}
|
|
170
168
|
/**
|
|
171
169
|
* Warm cache with data
|
|
172
170
|
*/
|
|
173
|
-
export
|
|
174
|
-
|
|
171
|
+
export function warmCache(key, data, ttl = 300) {
|
|
172
|
+
cache.set(`query:${key}`, JSON.stringify(data), ttl);
|
|
175
173
|
}
|
|
176
174
|
/**
|
|
177
175
|
* Get cached value without executing query
|
|
178
176
|
*/
|
|
179
|
-
export
|
|
180
|
-
const cached =
|
|
177
|
+
export function getCached(key) {
|
|
178
|
+
const cached = cache.get(`query:${key}`);
|
|
181
179
|
if (!cached)
|
|
182
180
|
return null;
|
|
183
181
|
try {
|
|
@@ -190,8 +188,8 @@ export async function getCached(key) {
|
|
|
190
188
|
/**
|
|
191
189
|
* Check if key exists in cache
|
|
192
190
|
*/
|
|
193
|
-
export
|
|
194
|
-
const cached =
|
|
191
|
+
export function cacheExists(key) {
|
|
192
|
+
const cached = cache.get(`query:${key}`);
|
|
195
193
|
return cached !== null;
|
|
196
194
|
}
|
|
197
195
|
/**
|
|
@@ -229,20 +227,20 @@ export async function cacheSWR(key, queryFn, options = {}) {
|
|
|
229
227
|
const cacheKey = `query:${key}`;
|
|
230
228
|
const staleKey = `${cacheKey}:stale`;
|
|
231
229
|
// Try fresh cache
|
|
232
|
-
const cached =
|
|
230
|
+
const cached = cache.get(cacheKey);
|
|
233
231
|
if (cached) {
|
|
234
232
|
return JSON.parse(cached);
|
|
235
233
|
}
|
|
236
234
|
// Try stale cache while revalidating
|
|
237
|
-
const stale =
|
|
235
|
+
const stale = cache.get(staleKey);
|
|
238
236
|
if (stale) {
|
|
239
237
|
// Return stale data immediately
|
|
240
238
|
const staleData = JSON.parse(stale);
|
|
241
239
|
// Revalidate in background
|
|
242
240
|
queryFn()
|
|
243
241
|
.then((fresh) => {
|
|
244
|
-
|
|
245
|
-
|
|
242
|
+
cache.set(cacheKey, JSON.stringify(fresh), ttl);
|
|
243
|
+
cache.set(staleKey, JSON.stringify(fresh), staleTime);
|
|
246
244
|
})
|
|
247
245
|
.catch((error) => {
|
|
248
246
|
logger.error('SWR revalidation error', error instanceof Error ? error : new Error(String(error)));
|
|
@@ -252,9 +250,7 @@ export async function cacheSWR(key, queryFn, options = {}) {
|
|
|
252
250
|
// No cache, execute query
|
|
253
251
|
const result = await queryFn();
|
|
254
252
|
// Cache both fresh and stale
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
redis.setex(staleKey, staleTime, JSON.stringify(result)),
|
|
258
|
-
]);
|
|
253
|
+
cache.set(cacheKey, JSON.stringify(result), ttl);
|
|
254
|
+
cache.set(staleKey, JSON.stringify(result), staleTime);
|
|
259
255
|
return result;
|
|
260
256
|
}
|
|
@@ -203,6 +203,7 @@ export interface CacheStats {
|
|
|
203
203
|
export declare class CacheStatsTracker {
|
|
204
204
|
private hits;
|
|
205
205
|
private misses;
|
|
206
|
+
private _cacheSize;
|
|
206
207
|
/**
|
|
207
208
|
* Record cache hit
|
|
208
209
|
*/
|
|
@@ -211,6 +212,10 @@ export declare class CacheStatsTracker {
|
|
|
211
212
|
* Record cache miss
|
|
212
213
|
*/
|
|
213
214
|
recordMiss(): void;
|
|
215
|
+
/**
|
|
216
|
+
* Update the reported cache size (call from the cache implementation)
|
|
217
|
+
*/
|
|
218
|
+
setCacheSize(size: number): void;
|
|
214
219
|
/**
|
|
215
220
|
* Get statistics
|
|
216
221
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-cache.d.ts","sourceRoot":"","sources":["../../src/caching/app-cache.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"app-cache.d.ts","sourceRoot":"","sources":["../../src/caching/app-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -365,6 +365,7 @@ export class CachePersistence {
|
|
|
365
365
|
export class CacheStatsTracker {
|
|
366
366
|
hits = 0;
|
|
367
367
|
misses = 0;
|
|
368
|
+
_cacheSize = 0;
|
|
368
369
|
/**
|
|
369
370
|
* Record cache hit
|
|
370
371
|
*/
|
|
@@ -377,6 +378,12 @@ export class CacheStatsTracker {
|
|
|
377
378
|
recordMiss() {
|
|
378
379
|
this.misses++;
|
|
379
380
|
}
|
|
381
|
+
/**
|
|
382
|
+
* Update the reported cache size (call from the cache implementation)
|
|
383
|
+
*/
|
|
384
|
+
setCacheSize(size) {
|
|
385
|
+
this._cacheSize = size;
|
|
386
|
+
}
|
|
380
387
|
/**
|
|
381
388
|
* Get statistics
|
|
382
389
|
*/
|
|
@@ -388,7 +395,7 @@ export class CacheStatsTracker {
|
|
|
388
395
|
misses: this.misses,
|
|
389
396
|
hitRate,
|
|
390
397
|
totalQueries,
|
|
391
|
-
cacheSize:
|
|
398
|
+
cacheSize: this._cacheSize,
|
|
392
399
|
};
|
|
393
400
|
}
|
|
394
401
|
/**
|
|
@@ -397,6 +404,7 @@ export class CacheStatsTracker {
|
|
|
397
404
|
reset() {
|
|
398
405
|
this.hits = 0;
|
|
399
406
|
this.misses = 0;
|
|
407
|
+
this._cacheSize = 0;
|
|
400
408
|
}
|
|
401
409
|
}
|
|
402
410
|
/**
|