@revealui/core 0.10.2 → 0.11.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 (63) hide show
  1. package/README.md +4 -2
  2. package/dist/client/admin/components/DocumentForm.js +17 -6
  3. package/dist/client/richtext/RichTextEditor.d.ts +1 -1
  4. package/dist/client/richtext/RichTextEditor.d.ts.map +1 -1
  5. package/dist/client/richtext/RichTextEditor.js +15 -15
  6. package/dist/client/richtext/components/ImageNodeComponent.js +4 -4
  7. package/dist/collections/CollectionOperations.d.ts +5 -0
  8. package/dist/collections/CollectionOperations.d.ts.map +1 -1
  9. package/dist/collections/CollectionOperations.js +7 -0
  10. package/dist/collections/operations/create.d.ts.map +1 -1
  11. package/dist/collections/operations/create.js +20 -0
  12. package/dist/collections/operations/delete.d.ts.map +1 -1
  13. package/dist/collections/operations/delete.js +14 -0
  14. package/dist/collections/operations/drafts.d.ts +33 -0
  15. package/dist/collections/operations/drafts.d.ts.map +1 -0
  16. package/dist/collections/operations/drafts.js +43 -0
  17. package/dist/collections/operations/fieldValidation.d.ts +53 -0
  18. package/dist/collections/operations/fieldValidation.d.ts.map +1 -0
  19. package/dist/collections/operations/fieldValidation.js +89 -0
  20. package/dist/collections/operations/find.d.ts.map +1 -1
  21. package/dist/collections/operations/find.js +23 -5
  22. package/dist/collections/operations/findById.d.ts +1 -0
  23. package/dist/collections/operations/findById.d.ts.map +1 -1
  24. package/dist/collections/operations/findById.js +33 -21
  25. package/dist/collections/operations/snapshot.d.ts +30 -0
  26. package/dist/collections/operations/snapshot.d.ts.map +1 -0
  27. package/dist/collections/operations/snapshot.js +81 -0
  28. package/dist/collections/operations/update.d.ts.map +1 -1
  29. package/dist/collections/operations/update.js +21 -0
  30. package/dist/error-handling/error-boundary.d.ts.map +1 -1
  31. package/dist/error-handling/error-boundary.js +11 -7
  32. package/dist/error-handling/fallback-components.d.ts.map +1 -1
  33. package/dist/error-handling/fallback-components.js +68 -48
  34. package/dist/features.d.ts +0 -2
  35. package/dist/features.d.ts.map +1 -1
  36. package/dist/features.js +2 -5
  37. package/dist/generated/types/admin.d.ts +42 -35
  38. package/dist/generated/types/admin.d.ts.map +1 -1
  39. package/dist/instance/RevealUIInstance.d.ts.map +1 -1
  40. package/dist/instance/methods/findById.d.ts +2 -0
  41. package/dist/instance/methods/findById.d.ts.map +1 -1
  42. package/dist/license.d.ts +67 -1
  43. package/dist/license.d.ts.map +1 -1
  44. package/dist/license.js +184 -25
  45. package/dist/richtext/exports/client/rcc.d.ts.map +1 -1
  46. package/dist/richtext/exports/client/rcc.js +6 -1
  47. package/dist/richtext/exports/server/rsc.d.ts +15 -2
  48. package/dist/richtext/exports/server/rsc.d.ts.map +1 -1
  49. package/dist/richtext/exports/server/rsc.js +36 -6
  50. package/dist/storage/index.d.ts +4 -5
  51. package/dist/storage/index.d.ts.map +1 -1
  52. package/dist/storage/index.js +10 -13
  53. package/dist/storage/object-storage.d.ts +5 -5
  54. package/dist/storage/object-storage.js +5 -5
  55. package/dist/storage/types.d.ts +5 -12
  56. package/dist/storage/types.d.ts.map +1 -1
  57. package/dist/storage/types.js +4 -4
  58. package/dist/types/runtime.d.ts +51 -0
  59. package/dist/types/runtime.d.ts.map +1 -1
  60. package/package.json +22 -23
  61. package/dist/storage/vercel-blob-provider.d.ts +0 -28
  62. package/dist/storage/vercel-blob-provider.d.ts.map +0 -1
  63. package/dist/storage/vercel-blob-provider.js +0 -88
@@ -66,7 +66,7 @@ interface SerializeOptions {
66
66
  renderBlock?: (node: SerializedBlockNode, index: number) => JSX.Element | null;
67
67
  /** Custom link renderer */
68
68
  renderLink?: (node: SerializedLinkNode, children: JSX.Element | null, index: number) => JSX.Element;
69
- /** Custom image renderer */
69
+ /** Custom image renderer. `data.src` arrives already sanitized. */
70
70
  renderImage?: (data: {
71
71
  src?: string;
72
72
  alt?: string;
@@ -74,6 +74,13 @@ interface SerializeOptions {
74
74
  height?: number;
75
75
  caption?: string;
76
76
  }, index: number) => JSX.Element | null;
77
+ /** Custom upload-node renderer. `data.url` arrives already sanitized. */
78
+ renderUpload?: (data: {
79
+ url?: string;
80
+ alt?: string;
81
+ width?: number;
82
+ height?: number;
83
+ }, index: number) => JSX.Element | null;
77
84
  }
78
85
  /**
79
86
  * Serialize a Lexical editor state to React elements
@@ -113,7 +120,13 @@ export interface RichTextContentProps {
113
120
  height?: number;
114
121
  caption?: string;
115
122
  }, index: number) => JSX.Element | null;
123
+ renderUpload?: (data: {
124
+ url?: string;
125
+ alt?: string;
126
+ width?: number;
127
+ height?: number;
128
+ }, index: number) => JSX.Element | null;
116
129
  }
117
- export declare function RichTextContent({ data, className, renderBlock, renderLink, renderImage, }: RichTextContentProps): JSX.Element | null;
130
+ export declare function RichTextContent({ data, className, renderBlock, renderLink, renderImage, renderUpload, }: RichTextContentProps): JSX.Element | null;
118
131
  export default RichTextContent;
119
132
  //# sourceMappingURL=rsc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rsc.d.ts","sourceRoot":"","sources":["../../../../src/richtext/exports/server/rsc.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rsc.d.ts","sourceRoot":"","sources":["../../../../src/richtext/exports/server/rsc.tsx"],"names":[],"mappings":"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"}
@@ -26,6 +26,11 @@ const IS_UNDERLINE = 8;
26
26
  const IS_CODE = 16;
27
27
  const IS_SUBSCRIPT = 32;
28
28
  const IS_SUPERSCRIPT = 64;
29
+ // Heading `tag` values come from stored, author-controlled Lexical JSON and
30
+ // are rendered as JSX element names — allow-list them (a forged tag like
31
+ // "script" would otherwise render a live <script> element, whose text
32
+ // children React does not escape).
33
+ const HEADING_TAGS = new Set(['h1', 'h2', 'h3', 'h4', 'h5', 'h6']);
29
34
  /**
30
35
  * Serialize a text node with formatting
31
36
  */
@@ -87,9 +92,9 @@ function serializeNode(node, index, options) {
87
92
  if (node.type === 'paragraph') {
88
93
  return _jsx("p", { children: serializeChildren(n.children, options) }, index);
89
94
  }
90
- // Heading
95
+ // Heading — the stored tag is author-controlled; render only allow-listed h1-h6
91
96
  if (node.type === 'heading') {
92
- const Tag = (n.tag || 'h1');
97
+ const Tag = (n.tag && HEADING_TAGS.has(n.tag) ? n.tag : 'h1');
93
98
  return _jsx(Tag, { children: serializeChildren(n.children, options) }, index);
94
99
  }
95
100
  // Quote
@@ -141,9 +146,9 @@ function serializeNode(node, index, options) {
141
146
  const width = imageNode.fields?.width;
142
147
  const height = imageNode.fields?.height;
143
148
  const caption = imageNode.fields?.caption;
144
- // Allow custom image renderer
149
+ // Allow custom image renderer — hand it the sanitized src, never the raw one
145
150
  if (options?.renderImage) {
146
- return options.renderImage(imageNode.fields || {}, index);
151
+ return options.renderImage({ ...(imageNode.fields || {}), src }, index);
147
152
  }
148
153
  // Default image rendering
149
154
  return (_jsxs("figure", { style: { margin: '16px 0', textAlign: 'center' }, children: [_jsx("img", { src: src, alt: alt, width: width, height: height, style: {
@@ -153,10 +158,34 @@ function serializeNode(node, index, options) {
153
158
  } }), caption && (_jsx("figcaption", { style: {
154
159
  marginTop: '8px',
155
160
  fontSize: '14px',
156
- color: '#64748b',
161
+ color: 'var(--rvui-text-2, #64748b)',
157
162
  fontStyle: 'italic',
158
163
  }, children: caption }))] }, index));
159
164
  }
165
+ // Upload (media-collection reference from the rich-text upload feature).
166
+ // The stored value.url is author-controlled; sanitize before any renderer
167
+ // sees it.
168
+ if (node.type === 'upload') {
169
+ const uploadNode = node;
170
+ const value = uploadNode.value;
171
+ if (!value || typeof value === 'string' || !value.url) {
172
+ return null;
173
+ }
174
+ const url = sanitizeUrl(value.url, 'image');
175
+ if (options?.renderUpload) {
176
+ return options.renderUpload({ url, alt: value.alt, width: value.width, height: value.height }, index);
177
+ }
178
+ return (_jsxs("figure", { style: { margin: '16px 0' }, children: [_jsx("img", { src: url, alt: value.alt || '', width: value.width, height: value.height, style: {
179
+ maxWidth: '100%',
180
+ height: 'auto',
181
+ display: 'block',
182
+ } }), value.alt && (_jsx("figcaption", { style: {
183
+ marginTop: '8px',
184
+ fontSize: '14px',
185
+ color: 'var(--rvui-text-2, #64748b)',
186
+ fontStyle: 'italic',
187
+ }, children: value.alt }))] }, index));
188
+ }
160
189
  // Horizontal rule
161
190
  if (node.type === 'horizontalrule') {
162
191
  return _jsx("hr", {}, index);
@@ -287,7 +316,7 @@ export function RscEntryLexicalField({ data, className }) {
287
316
  }
288
317
  return _jsx("div", { className: className, children: content });
289
318
  }
290
- export function RichTextContent({ data, className, renderBlock, renderLink, renderImage, }) {
319
+ export function RichTextContent({ data, className, renderBlock, renderLink, renderImage, renderUpload, }) {
291
320
  if (!data) {
292
321
  return null;
293
322
  }
@@ -295,6 +324,7 @@ export function RichTextContent({ data, className, renderBlock, renderLink, rend
295
324
  renderBlock: renderBlock || undefined,
296
325
  renderLink: renderLink || undefined,
297
326
  renderImage: renderImage || undefined,
327
+ renderUpload: renderUpload || undefined,
298
328
  });
299
329
  if (!content) {
300
330
  return null;
@@ -3,17 +3,16 @@ export { createMockProvider } from './mock.js';
3
3
  export type { ObjectStorageConfig } from './object-storage.js';
4
4
  export { objectStorage } from './object-storage.js';
5
5
  export { createR2Provider } from './r2.js';
6
- export type { ListItem, ListOptions, ListResult, PutOptions, PutResult, R2Config, StorageConfig, StorageProvider, VercelBlobConfig, } from './types.js';
7
- export { createVercelBlobProvider } from './vercel-blob-provider.js';
6
+ export type { ListItem, ListOptions, ListResult, PutOptions, PutResult, R2Config, StorageConfig, StorageProvider, } from './types.js';
8
7
  /**
9
8
  * Construct a StorageProvider from a tagged config.
10
9
  *
11
10
  * Per `feedback_pluggable_provider_pattern`: explicit "no-X" opt-in — unknown
12
11
  * tags throw with a clear message; no silent fallback.
13
12
  *
14
- * Supported tags: 'r2' (canonical), 'vercel-blob' (legacy migration-window
15
- * fallback), and 'mock' (tests). The provider-agnostic `objectStorage` Payload
16
- * plugin (object-storage.ts) adapts any of these to apps/admin's upload path.
13
+ * Supported tags: 'r2' (canonical) and 'mock' (tests). The provider-agnostic
14
+ * `objectStorage` Payload plugin (object-storage.ts) adapts either to apps/admin's
15
+ * upload path.
17
16
  */
18
17
  export declare function createStorage(config: StorageConfig): StorageProvider;
19
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAK/D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,YAAY,EACV,QAAQ,EACR,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,QAAQ,EACR,aAAa,EACb,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAErE;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,eAAe,CAgBpE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAK/D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,YAAY,EACV,QAAQ,EACR,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,QAAQ,EACR,aAAa,EACb,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,eAAe,CAcpE"}
@@ -3,44 +3,41 @@
3
3
  //
4
4
  // Phase 1 (#959): types.ts + index.ts type re-exports.
5
5
  // Phase 2a (#959 follow-up): r2 + mock providers + createStorage factory.
6
- // Phase 2b (this PR): vercel-blob StorageProvider + apps/server media-route
7
- // cutover. R2 is canonical; Vercel Blob is the migration-window fallback.
6
+ // Phase 2b (#959 follow-up): apps/server media-route cutover onto R2.
7
+ // #1644: legacy Vercel Blob StorageProvider removed once R2 was confirmed in
8
+ // every production environment — R2 is now the sole non-mock backend.
8
9
  import { createMockProvider } from './mock.js';
9
10
  import { createR2Provider } from './r2.js';
10
- import { createVercelBlobProvider } from './vercel-blob-provider.js';
11
11
  export { createMockProvider } from './mock.js';
12
12
  // Provider-agnostic Payload-style upload plugin — adapts any StorageProvider
13
- // (R2 canonical, Vercel Blob fallback, mock) to the engine's collection upload
14
- // adapter. Used by apps/admin/revealui.config.ts. GAP-208 Phase 4 replaced the
15
- // provider-specific `vercelBlobStorage` plugin with this.
13
+ // (R2 canonical, mock) to the engine's collection upload adapter. Used by
14
+ // apps/admin/revealui.config.ts. GAP-208 Phase 4 replaced the provider-specific
15
+ // `vercelBlobStorage` plugin with this.
16
16
  export { objectStorage } from './object-storage.js';
17
17
  // Provider factories — exported so callers can construct a provider directly
18
18
  // when they already know which one they want (skipping the discriminated-union
19
19
  // factory below).
20
20
  export { createR2Provider } from './r2.js';
21
- export { createVercelBlobProvider } from './vercel-blob-provider.js';
22
21
  /**
23
22
  * Construct a StorageProvider from a tagged config.
24
23
  *
25
24
  * Per `feedback_pluggable_provider_pattern`: explicit "no-X" opt-in — unknown
26
25
  * tags throw with a clear message; no silent fallback.
27
26
  *
28
- * Supported tags: 'r2' (canonical), 'vercel-blob' (legacy migration-window
29
- * fallback), and 'mock' (tests). The provider-agnostic `objectStorage` Payload
30
- * plugin (object-storage.ts) adapts any of these to apps/admin's upload path.
27
+ * Supported tags: 'r2' (canonical) and 'mock' (tests). The provider-agnostic
28
+ * `objectStorage` Payload plugin (object-storage.ts) adapts either to apps/admin's
29
+ * upload path.
31
30
  */
32
31
  export function createStorage(config) {
33
32
  switch (config.provider) {
34
33
  case 'r2':
35
34
  return createR2Provider(config.r2);
36
- case 'vercel-blob':
37
- return createVercelBlobProvider(config.vercelBlob);
38
35
  case 'mock':
39
36
  return createMockProvider();
40
37
  default: {
41
38
  const _exhaustive = config;
42
39
  throw new Error(`createStorage: unknown provider tag. Got ${JSON.stringify(_exhaustive)}. ` +
43
- "Valid tags: 'r2', 'vercel-blob', 'mock'.");
40
+ "Valid tags: 'r2', 'mock'.");
44
41
  }
45
42
  }
46
43
  }
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * Object-storage upload plugin (provider-agnostic).
3
3
  *
4
- * Adapts any `StorageProvider` (Cloudflare R2 — canonical — Vercel Blob, mock,
5
- * or a future backend) to the RevealUI engine's collection upload-adapter
6
- * interface, so `apps/admin/revealui.config.ts` stores media through the
7
- * configured object-storage backend. Replaces the provider-specific
8
- * `vercelBlobStorage` Payload plugin retired in GAP-208 Phase 4.
4
+ * Adapts any `StorageProvider` (Cloudflare R2 — canonical — mock, or a future
5
+ * backend) to the RevealUI engine's collection upload-adapter interface, so
6
+ * `apps/admin/revealui.config.ts` stores media through the configured
7
+ * object-storage backend. Replaces the provider-specific `vercelBlobStorage`
8
+ * Payload plugin retired in GAP-208 Phase 4.
9
9
  *
10
10
  * The backend is resolved through a lazy `resolveProvider` thunk — invoked
11
11
  * (and memoized) on the first upload/delete, never at config-build time — so a
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * Object-storage upload plugin (provider-agnostic).
3
3
  *
4
- * Adapts any `StorageProvider` (Cloudflare R2 — canonical — Vercel Blob, mock,
5
- * or a future backend) to the RevealUI engine's collection upload-adapter
6
- * interface, so `apps/admin/revealui.config.ts` stores media through the
7
- * configured object-storage backend. Replaces the provider-specific
8
- * `vercelBlobStorage` Payload plugin retired in GAP-208 Phase 4.
4
+ * Adapts any `StorageProvider` (Cloudflare R2 — canonical — mock, or a future
5
+ * backend) to the RevealUI engine's collection upload-adapter interface, so
6
+ * `apps/admin/revealui.config.ts` stores media through the configured
7
+ * object-storage backend. Replaces the provider-specific `vercelBlobStorage`
8
+ * Payload plugin retired in GAP-208 Phase 4.
9
9
  *
10
10
  * The backend is resolved through a lazy `resolveProvider` thunk — invoked
11
11
  * (and memoized) on the first upload/delete, never at config-build time — so a
@@ -8,10 +8,10 @@
8
8
  * apps/admin health probes, packages/core Payload-style plugin shims) depend
9
9
  * only on this contract. Switching providers becomes a config change.
10
10
  *
11
- * GAP-208 introduces this abstraction during the Vercel Blob → Cloudflare R2
12
- * swap (2026-05-18). The vercel-blob Payload-style plugin (vercel-blob.ts)
13
- * stays in place during migration for backward compat; once consumers migrate
14
- * to the interface, the legacy plugin is dropped.
11
+ * GAP-208 introduced this abstraction during the Vercel Blob → Cloudflare R2
12
+ * swap (2026-05-18). #1644 removed the Vercel Blob StorageProvider once R2 was
13
+ * confirmed in every production environment; Cloudflare R2 is now the sole
14
+ * non-mock backend.
15
15
  */
16
16
  export interface StorageProvider {
17
17
  /** Upload binary data. Returns a fully-qualified URL the value is reachable at. */
@@ -20,7 +20,7 @@ export interface StorageProvider {
20
20
  del(keyOrUrl: string): Promise<void>;
21
21
  /** List items, optionally filtered by key prefix. Used by health probes + admin browsing. */
22
22
  list(opts?: ListOptions): Promise<ListResult>;
23
- /** Provider tag (e.g. "r2", "vercel-blob", "mock") — exposed so consumers can adapt URL handling. */
23
+ /** Provider tag (e.g. "r2", "mock") — exposed so consumers can adapt URL handling. */
24
24
  readonly provider: string;
25
25
  }
26
26
  export interface PutOptions {
@@ -80,9 +80,6 @@ export interface ListItem {
80
80
  export type StorageConfig = {
81
81
  provider: 'r2';
82
82
  r2: R2Config;
83
- } | {
84
- provider: 'vercel-blob';
85
- vercelBlob: VercelBlobConfig;
86
83
  } | {
87
84
  provider: 'mock';
88
85
  };
@@ -103,8 +100,4 @@ export interface R2Config {
103
100
  */
104
101
  publicBaseUrl?: string;
105
102
  }
106
- export interface VercelBlobConfig {
107
- /** vercel_blob_rw_* token from the Vercel Blob dashboard. */
108
- token: string;
109
- }
110
103
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,WAAW,eAAe;IAC9B,mFAAmF;IACnF,GAAG,CACD,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,IAAI,GAAG,WAAW,GAAG,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,EAClE,IAAI,CAAC,EAAE,UAAU,GAChB,OAAO,CAAC,SAAS,CAAC,CAAC;IAEtB,8FAA8F;IAC9F,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC,6FAA6F;IAC7F,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAE9C,qGAAqG;IACrG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAID,MAAM,WAAW,UAAU;IACzB,uGAAuG;IACvG,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAE9B,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,SAAS;IACxB,4FAA4F;IAC5F,GAAG,EAAE,MAAM,CAAC;IAEZ,8DAA8D;IAC9D,GAAG,EAAE,MAAM,CAAC;IAEZ,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IAEb,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID,MAAM,WAAW,WAAW;IAC1B,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAElB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,IAAI,CAAC;CAClB;AAID;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,QAAQ,CAAA;CAAE,GAChC;IAAE,QAAQ,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,gBAAgB,CAAA;CAAE,GACzD;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzB,MAAM,WAAW,QAAQ;IACvB,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;IAElB,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;IAEpB,gEAAgE;IAChE,eAAe,EAAE,MAAM,CAAC;IAExB,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;CACf"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,WAAW,eAAe;IAC9B,mFAAmF;IACnF,GAAG,CACD,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,IAAI,GAAG,WAAW,GAAG,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,EAClE,IAAI,CAAC,EAAE,UAAU,GAChB,OAAO,CAAC,SAAS,CAAC,CAAC;IAEtB,8FAA8F;IAC9F,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC,6FAA6F;IAC7F,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAE9C,sFAAsF;IACtF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAID,MAAM,WAAW,UAAU;IACzB,uGAAuG;IACvG,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAE9B,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,SAAS;IACxB,4FAA4F;IAC5F,GAAG,EAAE,MAAM,CAAC;IAEZ,8DAA8D;IAC9D,GAAG,EAAE,MAAM,CAAC;IAEZ,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IAEb,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID,MAAM,WAAW,WAAW;IAC1B,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAElB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,IAAI,CAAC;CAClB;AAID;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GAAG;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,QAAQ,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpF,MAAM,WAAW,QAAQ;IACvB,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;IAElB,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;IAEpB,gEAAgE;IAChE,eAAe,EAAE,MAAM,CAAC;IAExB,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
@@ -8,9 +8,9 @@
8
8
  * apps/admin health probes, packages/core Payload-style plugin shims) depend
9
9
  * only on this contract. Switching providers becomes a config change.
10
10
  *
11
- * GAP-208 introduces this abstraction during the Vercel Blob → Cloudflare R2
12
- * swap (2026-05-18). The vercel-blob Payload-style plugin (vercel-blob.ts)
13
- * stays in place during migration for backward compat; once consumers migrate
14
- * to the interface, the legacy plugin is dropped.
11
+ * GAP-208 introduced this abstraction during the Vercel Blob → Cloudflare R2
12
+ * swap (2026-05-18). #1644 removed the Vercel Blob StorageProvider once R2 was
13
+ * confirmed in every production environment; Cloudflare R2 is now the sole
14
+ * non-mock backend.
15
15
  */
16
16
  export {};
@@ -230,6 +230,57 @@ export interface CollectionStorageAdapter {
230
230
  id: string | number;
231
231
  }) => Promise<RevealDocument | null | undefined>;
232
232
  find?: (collection: RevealCollectionConfig, options: RevealFindOptions) => Promise<RevealPaginatedResult | undefined>;
233
+ /**
234
+ * Typed create. Return `undefined` to signal "not handled by this adapter" —
235
+ * the caller falls through to the dynamic-SQL path. Return the created
236
+ * document on success; throw for a handled-but-failed write. Mirrors the
237
+ * `undefined` = not-handled contract used by `findByID`/`find`.
238
+ */
239
+ create?: (collection: RevealCollectionConfig, options: {
240
+ data: RevealDataObject;
241
+ req?: RevealRequest;
242
+ }) => Promise<RevealDocument | undefined>;
243
+ /**
244
+ * Typed update. `undefined` = not handled (fall through to dynamic SQL). A
245
+ * document = the updated row. Throw for handled-but-not-found or an
246
+ * optimistic-lock conflict (statusCode 409).
247
+ */
248
+ update?: (collection: RevealCollectionConfig, options: {
249
+ id: string | number;
250
+ data: RevealDataObject;
251
+ req?: RevealRequest;
252
+ }) => Promise<RevealDocument | undefined>;
253
+ /**
254
+ * Typed delete. `undefined` = not handled (fall through to dynamic SQL). A
255
+ * document (at minimum `{ id }`) = the deleted row. Throw for
256
+ * handled-but-not-found.
257
+ */
258
+ delete?: (collection: RevealCollectionConfig, options: {
259
+ id: string | number;
260
+ req?: RevealRequest;
261
+ }) => Promise<RevealDocument | undefined>;
262
+ /**
263
+ * Capture a point-in-time revision of a document (the `page_revisions`
264
+ * pattern: per-doc revision number, content snapshot, createdBy,
265
+ * changeDescription). `undefined` = not handled — snapshots require a typed
266
+ * revision store, so there is no dynamic-SQL fallback. The created revision =
267
+ * success. Throw for handled-but-not-found.
268
+ */
269
+ snapshot?: (collection: RevealCollectionConfig, options: {
270
+ id: string | number;
271
+ req?: RevealRequest;
272
+ changeDescription?: string;
273
+ }) => Promise<RevealDocument | undefined>;
274
+ /**
275
+ * Restore a document to a stored revision, writing the revision's content back
276
+ * over the live document. `undefined` = not handled. The restored document =
277
+ * success. Throw for handled-but-not-found (document or revision).
278
+ */
279
+ restore?: (collection: RevealCollectionConfig, options: {
280
+ id: string | number;
281
+ revisionId: string | number;
282
+ req?: RevealRequest;
283
+ }) => Promise<RevealDocument | undefined>;
233
284
  }
234
285
  export interface QueryableDatabaseAdapter {
235
286
  query: (query: string, values?: unknown[]) => Promise<DatabaseResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/types/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/types/runtime.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,44 +1,43 @@
1
1
  {
2
2
  "name": "@revealui/core",
3
- "version": "0.10.2",
3
+ "version": "0.11.1",
4
4
  "description": "RevealUI's runtime engine — admin UI, REST API, auth, rich text, plugin system, and access control. The heart of the open-source platform.",
5
5
  "license": "MIT",
6
6
  "dependencies": {
7
- "@electric-sql/pglite": "^0.5.2",
8
- "@lexical/clipboard": "^0.45.0",
9
- "@lexical/code": "^0.45.0",
10
- "@lexical/html": "^0.45.0",
11
- "@lexical/link": "^0.45.0",
12
- "@lexical/list": "^0.45.0",
13
- "@lexical/react": "^0.45.0",
14
- "@lexical/rich-text": "^0.45.0",
15
- "@lexical/selection": "^0.45.0",
16
- "@lexical/table": "^0.45.0",
17
- "@lexical/utils": "^0.45.0",
18
- "@lexical/yjs": "^0.45.0",
19
- "@vercel/blob": "^2.3.3",
7
+ "@electric-sql/pglite": "^0.5.4",
8
+ "@lexical/clipboard": "^0.46.0",
9
+ "@lexical/code": "^0.46.0",
10
+ "@lexical/html": "^0.46.0",
11
+ "@lexical/link": "^0.46.0",
12
+ "@lexical/list": "^0.46.0",
13
+ "@lexical/react": "^0.46.0",
14
+ "@lexical/rich-text": "^0.46.0",
15
+ "@lexical/selection": "^0.46.0",
16
+ "@lexical/table": "^0.46.0",
17
+ "@lexical/utils": "^0.46.0",
18
+ "@lexical/yjs": "^0.46.0",
20
19
  "bcryptjs": "^3.0.3",
21
20
  "dataloader": "^2.2.3",
22
21
  "jose": "^5.10.0",
23
- "lexical": "^0.45.0",
24
- "pg": "^8.21.0",
22
+ "lexical": "^0.46.0",
23
+ "pg": "^8.22.0",
25
24
  "yjs": "^13.6.31",
26
25
  "zod": "^4.4.3",
27
- "@revealui/cache": "0.2.2",
28
- "@revealui/contracts": "0.6.1",
26
+ "@revealui/cache": "0.2.4",
27
+ "@revealui/contracts": "0.7.0",
29
28
  "@revealui/resilience": "0.2.4",
30
- "@revealui/security": "0.4.1",
31
- "@revealui/utils": "0.3.5"
29
+ "@revealui/security": "0.4.3",
30
+ "@revealui/utils": "0.3.6"
32
31
  },
33
32
  "devDependencies": {
34
33
  "@types/json-schema": "^7.0.15",
35
34
  "@types/pg": "^8.20.0",
36
35
  "@types/react": "^19.2.17",
37
36
  "@types/react-dom": "^19.2.3",
38
- "@vitest/coverage-v8": "^4.1.8",
39
- "expect-type": "^1.3.0",
37
+ "@vitest/coverage-v8": "^4.1.10",
38
+ "expect-type": "^1.4.0",
40
39
  "tsup": "^8.5.1",
41
- "vitest": "^4.1.8",
40
+ "vitest": "^4.1.10",
42
41
  "@revealui/dev": "0.1.0"
43
42
  },
44
43
  "engines": {
@@ -1,28 +0,0 @@
1
- /**
2
- * Vercel Blob implementation of StorageProvider.
3
- *
4
- * Legacy backend retained during the GAP-208 Cloudflare R2 cutover so the
5
- * media-upload path can fall back to Vercel Blob when R2 is not configured.
6
- * Wraps @vercel/blob's put/del/list behind the provider-agnostic
7
- * StorageProvider interface. Cloudflare R2 (r2.ts) is the canonical backend;
8
- * this provider is removed once the Blob store is decommissioned.
9
- *
10
- * NOTE: distinct from vercel-blob.ts in this directory, which is the legacy
11
- * Payload-style upload *plugin* still wired into apps/admin's
12
- * revealui.config.ts. This file is the StorageProvider the createStorage
13
- * factory returns for the 'vercel-blob' tag.
14
- *
15
- * Server-only. Do NOT import from client-side code or edge runtime.
16
- */
17
- import type { ListOptions, ListResult, PutOptions, PutResult, StorageProvider, VercelBlobConfig } from './types.js';
18
- declare class VercelBlobProvider implements StorageProvider {
19
- readonly provider = "vercel-blob";
20
- private readonly token;
21
- constructor(config: VercelBlobConfig);
22
- put(key: string, data: Blob | ArrayBuffer | Uint8Array | ReadableStream<Uint8Array>, opts?: PutOptions): Promise<PutResult>;
23
- del(keyOrUrl: string): Promise<void>;
24
- list(opts?: ListOptions): Promise<ListResult>;
25
- }
26
- export declare function createVercelBlobProvider(config: VercelBlobConfig): StorageProvider;
27
- export type { VercelBlobProvider };
28
- //# sourceMappingURL=vercel-blob-provider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vercel-blob-provider.d.ts","sourceRoot":"","sources":["../../src/storage/vercel-blob-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAEV,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,eAAe,EACf,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAKpB,cAAM,kBAAmB,YAAW,eAAe;IACjD,QAAQ,CAAC,QAAQ,iBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,MAAM,EAAE,gBAAgB;IAW9B,GAAG,CACP,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,IAAI,GAAG,WAAW,GAAG,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,EAClE,IAAI,CAAC,EAAE,UAAU,GAChB,OAAO,CAAC,SAAS,CAAC;IAmCf,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpC,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;CAqBpD;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,GAAG,eAAe,CAElF;AAED,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
@@ -1,88 +0,0 @@
1
- /**
2
- * Vercel Blob implementation of StorageProvider.
3
- *
4
- * Legacy backend retained during the GAP-208 Cloudflare R2 cutover so the
5
- * media-upload path can fall back to Vercel Blob when R2 is not configured.
6
- * Wraps @vercel/blob's put/del/list behind the provider-agnostic
7
- * StorageProvider interface. Cloudflare R2 (r2.ts) is the canonical backend;
8
- * this provider is removed once the Blob store is decommissioned.
9
- *
10
- * NOTE: distinct from vercel-blob.ts in this directory, which is the legacy
11
- * Payload-style upload *plugin* still wired into apps/admin's
12
- * revealui.config.ts. This file is the StorageProvider the createStorage
13
- * factory returns for the 'vercel-blob' tag.
14
- *
15
- * Server-only. Do NOT import from client-side code or edge runtime.
16
- */
17
- import { del, list, put } from '@vercel/blob';
18
- import { toUint8Array } from './_helpers.js';
19
- const PROVIDER_TAG = 'vercel-blob';
20
- const DEFAULT_LIST_LIMIT = 1000;
21
- class VercelBlobProvider {
22
- provider = PROVIDER_TAG;
23
- token;
24
- constructor(config) {
25
- if (!config.token) {
26
- throw new Error('Vercel Blob provider requires VercelBlobConfig.token (the ' +
27
- 'BLOB_READ_WRITE_TOKEN value). For new deployments prefer Cloudflare ' +
28
- 'R2 (provider: "r2").');
29
- }
30
- this.token = config.token;
31
- }
32
- async put(key, data, opts) {
33
- if (opts?.access === 'private') {
34
- throw new Error("Vercel Blob provider does not support access: 'private' — every blob " +
35
- 'is publicly readable. Use Cloudflare R2 for private-access patterns.');
36
- }
37
- // Normalize to bytes so the result carries an accurate size regardless of
38
- // input shape (ReadableStream has no length until consumed). Re-wrap in a
39
- // fresh Uint8Array so the Blob part is backed by a non-shared ArrayBuffer,
40
- // satisfying the DOM BlobPart type under TS strict typed-array generics.
41
- const body = await toUint8Array(data);
42
- const result = await put(key, new Blob([new Uint8Array(body)]), {
43
- access: 'public',
44
- token: this.token,
45
- contentType: opts?.contentType,
46
- // Keys are caller-controlled (callers pre-randomize, e.g. media/<uuid>.ext);
47
- // never append a second random suffix or the returned URL won't match `key`.
48
- addRandomSuffix: false,
49
- });
50
- // Vercel Blob has no per-object user-metadata or Cache-Control-header API
51
- // (only cacheControlMaxAge); opts.metadata / opts.cacheControl are ignored
52
- // by this legacy provider. R2 honors both.
53
- return {
54
- key,
55
- url: result.url,
56
- size: body.byteLength,
57
- provider: PROVIDER_TAG,
58
- };
59
- }
60
- async del(keyOrUrl) {
61
- // Vercel's del is idempotent (deleting an absent blob is a no-op), so this
62
- // satisfies the best-effort contract. It requires the full blob URL, which
63
- // is what media records persist.
64
- await del(keyOrUrl, { token: this.token });
65
- }
66
- async list(opts) {
67
- const response = await list({
68
- token: this.token,
69
- prefix: opts?.prefix,
70
- limit: opts?.limit ?? DEFAULT_LIST_LIMIT,
71
- cursor: opts?.cursor,
72
- });
73
- const items = response.blobs.map((blob) => ({
74
- key: blob.pathname,
75
- url: blob.url,
76
- size: blob.size,
77
- uploadedAt: blob.uploadedAt,
78
- }));
79
- return {
80
- items,
81
- cursor: response.cursor,
82
- hasMore: response.hasMore,
83
- };
84
- }
85
- }
86
- export function createVercelBlobProvider(config) {
87
- return new VercelBlobProvider(config);
88
- }