@revealui/core 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +137 -30
  2. package/dist/api/rate-limit.d.ts +1 -1
  3. package/dist/api/rate-limit.d.ts.map +1 -1
  4. package/dist/api/rate-limit.js +16 -1
  5. package/dist/api/rest.js +2 -2
  6. package/dist/caching/cdn-config.d.ts +2 -2
  7. package/dist/caching/cdn-config.d.ts.map +1 -1
  8. package/dist/caching/cdn-config.js +1 -15
  9. package/dist/caching/edge-cache.d.ts.map +1 -1
  10. package/dist/caching/edge-cache.js +8 -4
  11. package/dist/caching/service-worker.d.ts +7 -18
  12. package/dist/caching/service-worker.d.ts.map +1 -1
  13. package/dist/caching/service-worker.js +2 -2
  14. package/dist/client/admin/utils/auth.d.ts +0 -4
  15. package/dist/client/admin/utils/auth.d.ts.map +1 -1
  16. package/dist/client/admin/utils/auth.js +0 -6
  17. package/dist/client/index.d.ts +0 -1
  18. package/dist/client/index.d.ts.map +1 -1
  19. package/dist/client/index.js +0 -2
  20. package/dist/collections/operations/create.js +2 -2
  21. package/dist/config/utils.d.ts.map +1 -1
  22. package/dist/config/utils.js +19 -5
  23. package/dist/database/safe-parse.d.ts +26 -0
  24. package/dist/database/safe-parse.d.ts.map +1 -0
  25. package/dist/database/safe-parse.js +42 -0
  26. package/dist/database/universal-postgres.d.ts.map +1 -1
  27. package/dist/database/universal-postgres.js +12 -12
  28. package/dist/dataloader.d.ts.map +1 -1
  29. package/dist/dataloader.js +16 -2
  30. package/dist/error-handling/error-reporter.d.ts +5 -4
  31. package/dist/error-handling/error-reporter.d.ts.map +1 -1
  32. package/dist/error-handling/error-reporter.js +19 -48
  33. package/dist/error-handling/index.d.ts +1 -1
  34. package/dist/error-handling/index.d.ts.map +1 -1
  35. package/dist/error-handling/index.js +1 -1
  36. package/dist/features.d.ts +5 -1
  37. package/dist/features.d.ts.map +1 -1
  38. package/dist/features.js +6 -3
  39. package/dist/generated/types/index.d.ts +0 -3
  40. package/dist/generated/types/index.d.ts.map +1 -1
  41. package/dist/generated/types/index.js +0 -7
  42. package/dist/index.d.ts +1 -1
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +1 -3
  45. package/dist/instance/RevealUIInstance.d.ts.map +1 -1
  46. package/dist/instance/RevealUIInstance.js +44 -50
  47. package/dist/instance/methods/create.d.ts.map +1 -1
  48. package/dist/instance/methods/create.js +4 -1
  49. package/dist/instance/methods/delete.d.ts.map +1 -1
  50. package/dist/instance/methods/delete.js +4 -1
  51. package/dist/instance/methods/hooks.d.ts.map +1 -1
  52. package/dist/instance/methods/hooks.js +3 -1
  53. package/dist/instance/methods/update.d.ts.map +1 -1
  54. package/dist/instance/methods/update.js +4 -1
  55. package/dist/license.d.ts +14 -5
  56. package/dist/license.d.ts.map +1 -1
  57. package/dist/license.js +47 -11
  58. package/dist/observability/health-check.d.ts +1 -1
  59. package/dist/observability/health-check.d.ts.map +1 -1
  60. package/dist/observability/health-check.js +37 -7
  61. package/dist/optimization/code-splitting.d.ts +0 -13
  62. package/dist/optimization/code-splitting.d.ts.map +1 -1
  63. package/dist/optimization/code-splitting.js +0 -13
  64. package/dist/queries/queryBuilder.d.ts.map +1 -1
  65. package/dist/queries/queryBuilder.js +6 -3
  66. package/dist/security/auth.d.ts.map +1 -1
  67. package/dist/security/auth.js +8 -6
  68. package/dist/security/encryption.d.ts.map +1 -1
  69. package/dist/security/encryption.js +15 -4
  70. package/dist/security/gdpr.d.ts +1 -1
  71. package/dist/security/gdpr.d.ts.map +1 -1
  72. package/dist/security/gdpr.js +4 -9
  73. package/dist/types/generated.d.ts +0 -2
  74. package/dist/types/generated.d.ts.map +1 -1
  75. package/dist/types/generated.js +0 -1
  76. package/package.json +2 -11
package/README.md CHANGED
@@ -1,50 +1,157 @@
1
- # `@revealui/core`
1
+ # @revealui/core
2
2
 
3
- The core RevealUI framework package containing types, generated code, and framework functionality.
3
+ The core CMS engine for RevealUI collections, admin UI, rich text, security, observability, and plugins.
4
4
 
5
- 📚 [Docs](https://revealui.com)
6
- ⚙️ [Source code](https://github.com/RevealUIStudio/revealui/tree/main/packages/core)
7
- 📦 [npm package](https://npmjs.com/package/revealui)
5
+ ## Features
8
6
 
9
- ## Package Structure
7
+ - **Collections & CRUD** — Define content types with field hooks, access control, and validation
8
+ - **Admin Dashboard** — Ready-to-use React admin UI (collection browser, document editor, global forms)
9
+ - **Rich Text** — Lexical-based editor with 20+ features (bold, headings, lists, links, images, blocks)
10
+ - **Security** — CORS, CSP, HSTS, RBAC/ABAC policy engine, encryption (AES-256-GCM), audit logging
11
+ - **GDPR Compliance** — Consent management, data export, deletion, anonymization, breach reporting
12
+ - **Observability** — Structured logging, process health monitoring, alert system, graceful shutdown
13
+ - **Plugins** — Extensible plugin system (form builder, nested docs, redirects)
14
+ - **Feature Gating** — Tier-based licensing (free, pro, max, enterprise/Forge) with JWT license keys
15
+ - **Database** — PostgreSQL adapters (NeonDB + PGlite for testing), connection pooling, SSL/TLS
16
+ - **Storage** — Pluggable storage interface (Vercel Blob adapter included)
10
17
 
11
- This package consolidates:
12
- - **Types**: All RevealUI types (previously `@revealui/types`)
13
- - **Generated Code**: Auto-generated types, components, hooks, etc. (previously `@revealui/generated`)
14
- - **Core Framework**: Main framework functionality
18
+ ## Installation
15
19
 
16
- ## Import Paths
20
+ ```bash
21
+ pnpm add @revealui/core
22
+ ```
23
+
24
+ ## Usage
25
+
26
+ ### Configuration
27
+
28
+ ```typescript
29
+ import { buildConfig } from '@revealui/core/config'
30
+
31
+ const config = buildConfig({
32
+ collections: [Posts, Categories, Users],
33
+ globals: [Settings, Navigation],
34
+ plugins: [formBuilder(), nestedDocs()],
35
+ })
36
+ ```
37
+
38
+ ### Collections
39
+
40
+ ```typescript
41
+ import type { RevealUICollection } from '@revealui/core'
42
+
43
+ const Posts: RevealUICollection = {
44
+ slug: 'posts',
45
+ fields: [
46
+ { name: 'title', type: 'text', required: true },
47
+ { name: 'content', type: 'richText' },
48
+ { name: 'status', type: 'select', options: ['draft', 'published'] },
49
+ ],
50
+ hooks: {
51
+ beforeChange: [({ data }) => ({ ...data, updatedAt: new Date() })],
52
+ },
53
+ access: {
54
+ read: () => true,
55
+ create: ({ req }) => !!req.user,
56
+ },
57
+ }
58
+ ```
17
59
 
18
- ### Types
60
+ ### Server-Side API
19
61
 
20
62
  ```typescript
21
- // Unified types export
22
- import type { Config, Page, Post } from '@revealui/core/types'
63
+ import { revealui } from '@revealui/core/server'
23
64
 
24
- // Specific type categories
25
- import type { Post } from '@revealui/core/types/cms'
26
- import type { User } from '@revealui/core/types/schema'
27
- import type { RevealConfig } from '@revealui/core/types/core'
65
+ // Create, read, update, delete
66
+ const post = await revealui.create({ collection: 'posts', data: { title: 'Hello' } })
67
+ const posts = await revealui.find({ collection: 'posts', where: { status: { equals: 'published' } } })
28
68
  ```
29
69
 
30
- ### Generated Code
70
+ ### Admin UI (React)
31
71
 
32
72
  ```typescript
33
- // Generated components
34
- import { PostCard } from '@revealui/core/generated/components'
73
+ import { AdminDashboard } from '@revealui/core/admin'
35
74
 
36
- // Generated hooks
37
- import { usePost } from '@revealui/core/generated/hooks'
75
+ // Full admin interface with collection browser, document editor, global forms
76
+ function App() {
77
+ return <AdminDashboard />
78
+ }
79
+ ```
80
+
81
+ ### Rich Text
82
+
83
+ ```typescript
84
+ import { RichTextEditor, BoldFeature, HeadingFeature, ListFeature } from '@revealui/core/richtext/client'
85
+
86
+ <RichTextEditor
87
+ features={[BoldFeature(), HeadingFeature(), ListFeature()]}
88
+ onChange={(json) => console.log(json)}
89
+ />
90
+ ```
91
+
92
+ ### Feature Gating
93
+
94
+ ```typescript
95
+ import { isLicensed, isFeatureEnabled } from '@revealui/core/features'
96
+
97
+ if (isLicensed('pro')) {
98
+ // Pro-tier feature
99
+ }
100
+
101
+ if (isFeatureEnabled('ai')) {
102
+ // AI features enabled
103
+ }
104
+ ```
38
105
 
39
- // Generated types
40
- import type { Config } from '@revealui/core/generated/types/cms'
41
- import type { Database } from '@revealui/core/generated/types/supabase'
106
+ ## Exports
107
+
108
+ | Subpath | Purpose |
109
+ |---------|---------|
110
+ | `@revealui/core` | Main entry (RevealUI instance) |
111
+ | `@revealui/core/server` | Server-side CRUD API |
112
+ | `@revealui/core/client` | Client-side React hooks and utilities |
113
+ | `@revealui/core/config` | Configuration builder |
114
+ | `@revealui/core/admin` | Admin dashboard components |
115
+ | `@revealui/core/richtext` | Rich text server utilities |
116
+ | `@revealui/core/richtext/client` | Lexical editor React components |
117
+ | `@revealui/core/richtext/html` | HTML serialization |
118
+ | `@revealui/core/richtext/rsc` | React Server Component support |
119
+ | `@revealui/core/security` | Security infrastructure |
120
+ | `@revealui/core/auth` | Auth utilities |
121
+ | `@revealui/core/database` | Database adapters |
122
+ | `@revealui/core/storage` | Storage adapters |
123
+ | `@revealui/core/plugins` | Plugin system |
124
+ | `@revealui/core/features` | Feature flags |
125
+ | `@revealui/core/license` | License validation |
126
+ | `@revealui/core/monitoring` | Health monitoring |
127
+ | `@revealui/core/observability/logger` | Structured logging |
128
+ | `@revealui/core/types` | TypeScript type definitions |
129
+ | `@revealui/core/nextjs` | Next.js integration middleware |
130
+ | `@revealui/core/utils/*` | Utilities (cache, deep-clone, errors) |
131
+
132
+ ## Development
133
+
134
+ ```bash
135
+ # Build
136
+ pnpm build
137
+
138
+ # Type check
139
+ pnpm typecheck
140
+
141
+ # Run tests
142
+ pnpm test
143
+
144
+ # Watch mode
145
+ pnpm dev
42
146
  ```
43
147
 
44
- ## Migration
148
+ ## Related
45
149
 
46
- If you're migrating from `@revealui/types` or `@revealui/generated`, see the [Migration Guide](../../docs/migrations/PACKAGE_MERGE_MIGRATION_GUIDE.md).
150
+ - [Contracts Package](../contracts/README.md) Zod schemas and TypeScript types
151
+ - [DB Package](../db/README.md) — Drizzle ORM schema
152
+ - [Auth Package](../auth/README.md) — Authentication system
153
+ - [Architecture Guide](../../docs/ARCHITECTURE.md)
47
154
 
48
- ## Available Exports
155
+ ## License
49
156
 
50
- See [package.json](./package.json) for the complete list of export paths.
157
+ MIT
@@ -29,7 +29,7 @@ export declare function checkRateLimit(request: NextRequest, config: RateLimitCo
29
29
  */
30
30
  export declare function createRateLimitMiddleware(config: RateLimitConfig): (request: NextRequest, next: () => Promise<NextResponse>) => Promise<NextResponse<unknown>>;
31
31
  /**
32
- * Cleanup expired rate limit entries
32
+ * Cleanup expired rate limit entries across all stores
33
33
  */
34
34
  export declare function cleanupRateLimits(): number;
35
35
  /**
@@ -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,CAAA;AAG5D,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,MAAM,CAAA;IAC/C,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAA;IACxC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,YAAY,CAAA;CACjD;AAED,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB;AA0BD;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,eAAe,GACtB;IACD,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB,CA0CA;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,eAAe,IACjD,SAAS,WAAW,EAAE,MAAM,MAAM,OAAO,CAAC,YAAY,CAAC,oCAiBtE;AA8BD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAY1C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,GAAE,MAAc,GAAG,MAAM,CAAC,OAAO,CAOhF;AAED;;GAEG;AACH,wBAAgB,iBAAiB;;;;EAkBhC;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;CAoCrB,CAAA;AAEV;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,aA/IxD,WAAW,QAAQ,MAAM,OAAO,CAAC,YAAY,CAAC,oCAwJtE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,aA7J1D,WAAW,QAAQ,MAAM,OAAO,CAAC,YAAY,CAAC,oCAqKtE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,aA1K5D,WAAW,QAAQ,MAAM,OAAO,CAAC,YAAY,CAAC,oCAoLtE;AAWD,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,eAAe,GACtB;IACD,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB,CA4BA;AAYD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,eAAe,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GAC/C;IACD,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB,CAqCA;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAIhD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAEnE"}
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,CAAA;AAG5D,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,MAAM,CAAA;IAC/C,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAA;IACxC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,YAAY,CAAA;CACjD;AAED,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB;AA0BD;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,eAAe,GACtB;IACD,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB,CA0CA;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,eAAe,IACjD,SAAS,WAAW,EAAE,MAAM,MAAM,OAAO,CAAC,YAAY,CAAC,oCAiBtE;AA8BD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CA6B1C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,GAAE,MAAc,GAAG,MAAM,CAAC,OAAO,CAOhF;AAED;;GAEG;AACH,wBAAgB,iBAAiB;;;;EAkBhC;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;CAoCrB,CAAA;AAEV;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,aAhKxD,WAAW,QAAQ,MAAM,OAAO,CAAC,YAAY,CAAC,oCAyKtE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,aA9K1D,WAAW,QAAQ,MAAM,OAAO,CAAC,YAAY,CAAC,oCAsLtE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,aA3L5D,WAAW,QAAQ,MAAM,OAAO,CAAC,YAAY,CAAC,oCAqMtE;AAWD,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,eAAe,GACtB;IACD,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB,CA4BA;AAYD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,eAAe,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GAC/C;IACD,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB,CAqCA;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAIhD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAEnE"}
@@ -102,7 +102,7 @@ function createRateLimitResponse(result) {
102
102
  });
103
103
  }
104
104
  /**
105
- * Cleanup expired rate limit entries
105
+ * Cleanup expired rate limit entries across all stores
106
106
  */
107
107
  export function cleanupRateLimits() {
108
108
  const now = Date.now();
@@ -113,6 +113,21 @@ export function cleanupRateLimits() {
113
113
  cleaned++;
114
114
  }
115
115
  }
116
+ // Evict stale sliding window entries (no timestamps within last hour)
117
+ for (const [key, entry] of slidingWindowStore.entries()) {
118
+ entry.timestamps = entry.timestamps.filter((ts) => now - ts < 3_600_000);
119
+ if (entry.timestamps.length === 0) {
120
+ slidingWindowStore.delete(key);
121
+ cleaned++;
122
+ }
123
+ }
124
+ // Evict stale token bucket entries (idle for more than 1 hour)
125
+ for (const [key, entry] of tokenBucketStore.entries()) {
126
+ if (now - entry.lastRefill > 3_600_000) {
127
+ tokenBucketStore.delete(key);
128
+ cleaned++;
129
+ }
130
+ }
116
131
  return cleaned;
117
132
  }
118
133
  /**
package/dist/api/rest.js CHANGED
@@ -296,7 +296,7 @@ async function handleCollectionOperation(method, collection, id, revealui, reque
296
296
  // Sanitize error message for client (don't expose internal details)
297
297
  const clientMessage = status >= 500 ? 'An internal server error occurred' : message;
298
298
  return new Response(JSON.stringify({
299
- message,
299
+ message: clientMessage,
300
300
  errors: [{ message: clientMessage }],
301
301
  }), {
302
302
  status,
@@ -358,7 +358,7 @@ async function handleGlobalOperation(method, global, revealui, request, options)
358
358
  // Sanitize error message for client (don't expose internal details)
359
359
  const clientMessage = status >= 500 ? 'An internal server error occurred' : message;
360
360
  return new Response(JSON.stringify({
361
- message,
361
+ message: clientMessage,
362
362
  errors: [{ message: clientMessage }],
363
363
  }), {
364
364
  status,
@@ -7,7 +7,7 @@
7
7
  * CDN Cache Configuration
8
8
  */
9
9
  export interface CDNCacheConfig {
10
- provider?: 'cloudflare' | 'vercel' | 'cloudfront' | 'fastly' | 'custom';
10
+ provider?: 'cloudflare' | 'vercel' | 'fastly' | 'custom';
11
11
  zones?: string[];
12
12
  ttl?: number;
13
13
  staleWhileRevalidate?: number;
@@ -77,7 +77,7 @@ export declare const CDN_CACHE_PRESETS: {
77
77
  * CDN Purge Configuration
78
78
  */
79
79
  export interface CDNPurgeConfig {
80
- provider: 'cloudflare' | 'vercel' | 'cloudfront' | 'fastly';
80
+ provider: 'cloudflare' | 'vercel' | 'fastly';
81
81
  apiKey?: string;
82
82
  apiSecret?: string;
83
83
  zoneId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"cdn-config.d.ts","sourceRoot":"","sources":["../../src/caching/cdn-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cdn-config.d.ts","sourceRoot":"","sources":["../../src/caching/cdn-config.ts"],"names":[],"mappings":"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"}
@@ -113,8 +113,6 @@ export async function purgeCDNCache(urls, config) {
113
113
  return purgeCloudflare(urls, config);
114
114
  case 'vercel':
115
115
  return purgeVercel(urls, config);
116
- case 'cloudfront':
117
- return purgeCloudFront(urls, config);
118
116
  case 'fastly':
119
117
  return purgeFastly(urls, config);
120
118
  default:
@@ -185,18 +183,6 @@ async function purgeVercel(urls, config) {
185
183
  };
186
184
  }
187
185
  }
188
- /**
189
- * Purge CloudFront cache
190
- */
191
- async function purgeCloudFront(_urls, _config) {
192
- // Would require AWS SDK
193
- // Placeholder implementation
194
- return {
195
- success: false,
196
- purged: 0,
197
- errors: ['CloudFront purge requires AWS SDK integration'],
198
- };
199
- }
200
186
  /**
201
187
  * Purge Fastly cache
202
188
  */
@@ -329,7 +315,7 @@ export async function warmCDNCache(urls, options = {}) {
329
315
  }
330
316
  const warmed = results.filter((r) => r.success).length;
331
317
  const failed = results.filter((r) => !r.success).length;
332
- const errors = results.filter((r) => r.error).map((r) => r.error);
318
+ const errors = results.flatMap((r) => (r.error ? [r.error] : []));
333
319
  return { warmed, failed, errors };
334
320
  }
335
321
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"edge-cache.d.ts","sourceRoot":"","sources":["../../src/caching/edge-cache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG5D;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;CA8Bd,CAAA;AAEV;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,EAC3B,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACzC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAWxC;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAyBnD;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAyBnD;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IACT,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC/C,CAAC,CA6BD;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IACT,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC9C,CAAC,CA6BD;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,aAAa,GAAG,UAAU,GAAG,UAAU,GAAG,gBAAgB,CAAA;IAClE,IAAI,CAAC,EAAE;QACL,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;QAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAChB,CAAA;CACF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,GAAE,eAAoB,IAClD,CAAC,EAAE,KAAK,MAAM,EAAE,UAAU,WAAW,KAAG,OAAO,CAAC,CAAC,CAAC,CAkBjE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,SAAS,OAAO,EAAE,EAAE,OAAO,EACnE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,EACxC,QAAQ,GAAE;IACR,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;CACvB,GACL,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAItC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,MAAM,CAAA;CACvC;AAED,qBAAa,eAAe;IAGd,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,KAAK,CAA+D;gBAExD,MAAM,EAAE,mBAAmB;IAE/C;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,WAAW,GAAG;QAC3B,OAAO,EAAE,OAAO,CAAA;QAChB,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,KAAK,EAAE,MAAM,CAAA;KACd;IA+BD;;OAEG;IACH,OAAO,IAAI,IAAI;CAQhB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,GAAG,IAAI,CA2BvE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAAE,GACjB,MAAM,CAoBR;AAeD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,QAAQ,CAAC,EAAE,WAAW,CAAA;IACtB,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;IACxC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,WAAW,GAAG,qBAAqB,CAUpF;AAeD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE;IACN,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAChB,GACA,YAAY,CAwBd;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,KAAK,CAAC;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAC,GACD,YAAY,CAoBd;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,GAAE,MAA+D,GACvE,OAAO,CAAC;IACT,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC/C,CAAC,CAyCD"}
1
+ {"version":3,"file":"edge-cache.d.ts","sourceRoot":"","sources":["../../src/caching/edge-cache.ts"],"names":[],"mappings":"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"}
@@ -49,12 +49,14 @@ export async function generateStaticParams(fetchFn, mapFn) {
49
49
  export async function revalidateTag(tag, secret) {
50
50
  try {
51
51
  const url = new URL('/api/revalidate', process.env.NEXT_PUBLIC_URL || 'http://localhost:3000');
52
- url.searchParams.set('tag', tag);
52
+ const headers = { 'Content-Type': 'application/json' };
53
53
  if (secret) {
54
- url.searchParams.set('secret', secret);
54
+ headers['x-revalidate-secret'] = secret;
55
55
  }
56
56
  const response = await fetch(url.toString(), {
57
57
  method: 'POST',
58
+ headers,
59
+ body: JSON.stringify({ tag }),
58
60
  });
59
61
  const data = await response.json();
60
62
  return {
@@ -75,12 +77,14 @@ export async function revalidateTag(tag, secret) {
75
77
  export async function revalidatePath(path, secret) {
76
78
  try {
77
79
  const url = new URL('/api/revalidate', process.env.NEXT_PUBLIC_URL || 'http://localhost:3000');
78
- url.searchParams.set('path', path);
80
+ const headers = { 'Content-Type': 'application/json' };
79
81
  if (secret) {
80
- url.searchParams.set('secret', secret);
82
+ headers['x-revalidate-secret'] = secret;
81
83
  }
82
84
  const response = await fetch(url.toString(), {
83
85
  method: 'POST',
86
+ headers,
87
+ body: JSON.stringify({ path }),
84
88
  });
85
89
  const data = await response.json();
86
90
  return {
@@ -110,26 +110,11 @@ export declare function getServiceWorkerState(): Promise<{
110
110
  active: boolean;
111
111
  controller: boolean;
112
112
  }>;
113
- /**
114
- * React hook for service worker
115
- */
116
- export declare function useServiceWorker(config?: ServiceWorkerConfig): {
117
- register: () => Promise<null>;
113
+ export interface ServiceWorkerHook {
114
+ register: () => Promise<ServiceWorkerRegistration | null>;
118
115
  unregister: () => Promise<boolean>;
119
116
  update: () => Promise<void>;
120
117
  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
118
  state: Promise<{
134
119
  registered: boolean;
135
120
  installing: boolean;
@@ -137,7 +122,11 @@ export declare function useServiceWorker(config?: ServiceWorkerConfig): {
137
122
  active: boolean;
138
123
  controller: boolean;
139
124
  }>;
140
- };
125
+ }
126
+ /**
127
+ * React hook for service worker
128
+ */
129
+ export declare function useServiceWorker(config?: ServiceWorkerConfig): ServiceWorkerHook;
141
130
  /**
142
131
  * Offline detection
143
132
  */
@@ -1 +1 @@
1
- {"version":3,"file":"service-worker.d.ts","sourceRoot":"","sources":["../../src/caching/service-worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service-worker.d.ts","sourceRoot":"","sources":["../../src/caching/service-worker.ts"],"names":[],"mappings":"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"}
@@ -311,13 +311,13 @@ export function useServiceWorker(config) {
311
311
  unregister: async () => false,
312
312
  update: async () => { },
313
313
  skipWaitingAndActivate: async () => { },
314
- state: {
314
+ state: Promise.resolve({
315
315
  registered: false,
316
316
  installing: false,
317
317
  waiting: false,
318
318
  active: false,
319
319
  controller: false,
320
- },
320
+ }),
321
321
  };
322
322
  }
323
323
  return {
@@ -20,8 +20,4 @@ export declare function clearAuthToken(): void;
20
20
  * Get Authorization header value
21
21
  */
22
22
  export declare function getAuthHeader(): string | null;
23
- /**
24
- * Check if user is authenticated
25
- */
26
- export declare function isAuthenticated(): boolean;
27
23
  //# sourceMappingURL=auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/client/admin/utils/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAoB5C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAIhD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAKrC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,IAAI,CAG7C;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/client/admin/utils/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAoB5C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAIhD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAKrC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,IAAI,CAG7C"}
@@ -50,9 +50,3 @@ export function getAuthHeader() {
50
50
  const token = getAuthToken();
51
51
  return token ? `JWT ${token}` : null;
52
52
  }
53
- /**
54
- * Check if user is authenticated
55
- */
56
- export function isAuthenticated() {
57
- return getAuthToken() !== null;
58
- }
@@ -5,7 +5,6 @@
5
5
  */
6
6
  export * from './admin/index.js';
7
7
  export { useRevealUI, withRevealUIAccess } from './hooks.js';
8
- export * from './http/index.js';
9
8
  export type { FloatingToolbarPluginProps, ImageNodeData, RichTextEditorProps, SerializedImageNode, ToolbarPluginProps, } from './richtext/index.js';
10
9
  export { $createImageNode, $isImageNode, FloatingToolbarPlugin, ImageNode, ImageNodeComponent, ImagePlugin, ImageUploadButton, INSERT_IMAGE_COMMAND, OPEN_IMAGE_UPLOAD_COMMAND, richTextEditorStyles, ToolbarPlugin, } from './richtext/index.js';
11
10
  export * from './ui/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,kBAAkB,CAAA;AAEhC,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAE5D,cAAc,iBAAiB,CAAA;AAI/B,YAAY,EACV,0BAA0B,EAC1B,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,qBAAqB,EACrB,SAAS,EACT,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,oBAAoB,EACpB,aAAa,GACd,MAAM,qBAAqB,CAAA;AAE5B,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,kBAAkB,CAAA;AAEhC,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAI5D,YAAY,EACV,0BAA0B,EAC1B,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,qBAAqB,EACrB,SAAS,EACT,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,oBAAoB,EACpB,aAAa,GACd,MAAM,qBAAqB,CAAA;AAE5B,cAAc,eAAe,CAAA"}
@@ -7,8 +7,6 @@
7
7
  export * from './admin/index.js';
8
8
  // React hooks
9
9
  export { useRevealUI, withRevealUIAccess } from './hooks.js';
10
- // HTTP fetch utilities
11
- export * from './http/index.js';
12
10
  // Re-export specific items that don't conflict
13
11
  export { $createImageNode, $isImageNode, FloatingToolbarPlugin, ImageNode, ImageNodeComponent, ImagePlugin, ImageUploadButton, INSERT_IMAGE_COMMAND, OPEN_IMAGE_UPLOAD_COMMAND, richTextEditorStyles, ToolbarPlugin, } from './richtext/index.js';
14
12
  // UI components
@@ -56,7 +56,7 @@ export async function create(config, db, options) {
56
56
  // Generate ID if not provided - always ensure it's a string
57
57
  const id = String(typeof data.id === 'string' || typeof data.id === 'number'
58
58
  ? data.id
59
- : `rvl_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`);
59
+ : `rvl_${crypto.randomUUID()}`);
60
60
  // Build INSERT query (PostgreSQL uses $1, $2 style)
61
61
  // Serialize complex values (objects, arrays) to JSON strings for SQLite
62
62
  // Filter out fields that should be stored as JSON (not as columns)
@@ -96,6 +96,6 @@ export async function create(config, db, options) {
96
96
  // Fallback
97
97
  const id = typeof data.id === 'string' || typeof data.id === 'number'
98
98
  ? data.id
99
- : `rvl_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
99
+ : `rvl_${crypto.randomUUID()}`;
100
100
  return { ...data, id };
101
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/config/utils.ts"],"names":[],"mappings":"AAIA,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAI5E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE;IACrC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,OAAO,EAAE,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,EAAE,CAAA;CACpB,GAAG,IAAI,CAQP"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/config/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAuB5E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE;IACrC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,OAAO,EAAE,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,EAAE,CAAA;CACpB,GAAG,IAAI,CAQP"}
@@ -1,9 +1,23 @@
1
- import deepmerge from 'deepmerge';
2
- const overwriteArray = (_target, source) => source;
3
1
  export function deepMerge(target, source) {
4
- return deepmerge(target, source, {
5
- arrayMerge: overwriteArray,
6
- });
2
+ const result = { ...target };
3
+ for (const key of Object.keys(source)) {
4
+ const s = source[key];
5
+ const t = target[key];
6
+ if (Array.isArray(s)) {
7
+ result[key] = s;
8
+ }
9
+ else if (s !== null &&
10
+ typeof s === 'object' &&
11
+ t !== null &&
12
+ typeof t === 'object' &&
13
+ !Array.isArray(t)) {
14
+ result[key] = deepMerge(t, s);
15
+ }
16
+ else {
17
+ result[key] = s;
18
+ }
19
+ }
20
+ return result;
7
21
  }
8
22
  /**
9
23
  * @deprecated This function is deprecated. Use ConfigContract validation instead.
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Safe row parsing for database results.
3
+ *
4
+ * Database drivers return untyped rows — this module provides a type guard
5
+ * that filters out malformed rows (missing `id`) before they reach the application.
6
+ * All RevealUI tables have `id` as a non-nullable primary key, so filtering these
7
+ * out prevents crashes from unexpected driver behavior or schema migrations.
8
+ */
9
+ import type { RevealDocument } from '../types/index.js';
10
+ /**
11
+ * Validate that a raw database row is a valid RevealDocument.
12
+ *
13
+ * Checks only the structural requirement: the row must be a non-null object
14
+ * with an `id` field of type string or number. All other fields are passed
15
+ * through as-is (trusting the database schema).
16
+ *
17
+ * @param row - Raw value from database driver (unknown type)
18
+ * @returns The row typed as RevealDocument, or null if malformed
19
+ */
20
+ export declare function safeParseRevealDocument(row: unknown): RevealDocument | null;
21
+ /**
22
+ * Parse an array of raw database rows into RevealDocument[], filtering out
23
+ * any malformed rows and logging warnings for each one skipped.
24
+ */
25
+ export declare function safeParseRevealDocuments(rows: unknown[]): RevealDocument[];
26
+ //# sourceMappingURL=safe-parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-parse.d.ts","sourceRoot":"","sources":["../../src/database/safe-parse.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEvD;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI,CAgB3E;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,CAI1E"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Safe row parsing for database results.
3
+ *
4
+ * Database drivers return untyped rows — this module provides a type guard
5
+ * that filters out malformed rows (missing `id`) before they reach the application.
6
+ * All RevealUI tables have `id` as a non-nullable primary key, so filtering these
7
+ * out prevents crashes from unexpected driver behavior or schema migrations.
8
+ */
9
+ import { defaultLogger } from '../instance/logger.js';
10
+ /**
11
+ * Validate that a raw database row is a valid RevealDocument.
12
+ *
13
+ * Checks only the structural requirement: the row must be a non-null object
14
+ * with an `id` field of type string or number. All other fields are passed
15
+ * through as-is (trusting the database schema).
16
+ *
17
+ * @param row - Raw value from database driver (unknown type)
18
+ * @returns The row typed as RevealDocument, or null if malformed
19
+ */
20
+ export function safeParseRevealDocument(row) {
21
+ if (row === null || typeof row !== 'object') {
22
+ defaultLogger.warn('Database row is not an object — skipping', { row });
23
+ return null;
24
+ }
25
+ const r = row;
26
+ if (typeof r.id !== 'string' && typeof r.id !== 'number') {
27
+ defaultLogger.warn('Database row missing required id field — skipping', {
28
+ keys: Object.keys(r),
29
+ });
30
+ return null;
31
+ }
32
+ return r;
33
+ }
34
+ /**
35
+ * Parse an array of raw database rows into RevealDocument[], filtering out
36
+ * any malformed rows and logging warnings for each one skipped.
37
+ */
38
+ export function safeParseRevealDocuments(rows) {
39
+ return rows
40
+ .map((row) => safeParseRevealDocument(row))
41
+ .filter((doc) => doc !== null);
42
+ }