@revealui/core 0.6.0 → 0.8.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.
Files changed (64) hide show
  1. package/README.md +2 -2
  2. package/dist/api/rate-limit.d.ts.map +1 -1
  3. package/dist/api/rate-limit.js +8 -14
  4. package/dist/client/admin/utils/apiClient.d.ts.map +1 -1
  5. package/dist/client/admin/utils/apiClient.js +16 -1
  6. package/dist/client/richtext/index.d.ts.map +1 -1
  7. package/dist/client/richtext/index.js +0 -1
  8. package/dist/collections/operations/create.d.ts.map +1 -1
  9. package/dist/collections/operations/create.js +23 -5
  10. package/dist/collections/operations/delete.d.ts +2 -4
  11. package/dist/collections/operations/delete.d.ts.map +1 -1
  12. package/dist/collections/operations/delete.js +21 -4
  13. package/dist/collections/operations/findById.d.ts.map +1 -1
  14. package/dist/collections/operations/findById.js +18 -3
  15. package/dist/collections/operations/update.d.ts.map +1 -1
  16. package/dist/collections/operations/update.js +21 -4
  17. package/dist/database/universal-postgres.d.ts +14 -0
  18. package/dist/database/universal-postgres.d.ts.map +1 -1
  19. package/dist/database/universal-postgres.js +97 -0
  20. package/dist/fieldTraversal.d.ts +1 -1
  21. package/dist/fieldTraversal.d.ts.map +1 -1
  22. package/dist/instance/methods/create.d.ts.map +1 -1
  23. package/dist/instance/methods/create.js +3 -2
  24. package/dist/license.d.ts +40 -5
  25. package/dist/license.d.ts.map +1 -1
  26. package/dist/license.js +88 -22
  27. package/dist/observability/metrics.d.ts +15 -0
  28. package/dist/observability/metrics.d.ts.map +1 -1
  29. package/dist/observability/metrics.js +21 -0
  30. package/dist/revforge-license.d.ts +60 -0
  31. package/dist/revforge-license.d.ts.map +1 -0
  32. package/dist/revforge-license.js +74 -0
  33. package/dist/richtext/exports/server/rsc.d.ts +1 -1
  34. package/dist/richtext/exports/server/rsc.d.ts.map +1 -1
  35. package/dist/richtext/exports/server/rsc.js +7 -2
  36. package/dist/security/index.d.ts +9 -2
  37. package/dist/security/index.d.ts.map +1 -1
  38. package/dist/security/index.js +9 -2
  39. package/dist/storage/_helpers.d.ts +14 -0
  40. package/dist/storage/_helpers.d.ts.map +1 -0
  41. package/dist/storage/_helpers.js +40 -0
  42. package/dist/storage/index.d.ts +16 -0
  43. package/dist/storage/index.d.ts.map +1 -1
  44. package/dist/storage/index.js +43 -1
  45. package/dist/storage/mock.d.ts +39 -0
  46. package/dist/storage/mock.d.ts.map +1 -0
  47. package/dist/storage/mock.js +91 -0
  48. package/dist/storage/r2.d.ts +13 -0
  49. package/dist/storage/r2.d.ts.map +1 -0
  50. package/dist/storage/r2.js +117 -0
  51. package/dist/storage/types.d.ts +110 -0
  52. package/dist/storage/types.d.ts.map +1 -0
  53. package/dist/storage/types.js +16 -0
  54. package/dist/types/index.d.ts +1 -1
  55. package/dist/types/index.d.ts.map +1 -1
  56. package/dist/types/{legacy.d.ts → internal.d.ts} +1 -1
  57. package/dist/types/internal.d.ts.map +1 -0
  58. package/dist/types/runtime.d.ts +12 -0
  59. package/dist/types/runtime.d.ts.map +1 -1
  60. package/dist/utils/api-wrapper.d.ts.map +1 -1
  61. package/dist/utils/api-wrapper.js +2 -1
  62. package/package.json +33 -24
  63. package/dist/types/legacy.d.ts.map +0 -1
  64. /package/dist/types/{legacy.js → internal.js} +0 -0
@@ -1,2 +1,18 @@
1
+ import type { StorageConfig, StorageProvider } from './types.js';
2
+ export { createMockProvider } from './mock.js';
3
+ export { createR2Provider } from './r2.js';
4
+ export type { ListItem, ListOptions, ListResult, PutOptions, PutResult, R2Config, StorageConfig, StorageProvider, VercelBlobConfig, } from './types.js';
1
5
  export { vercelBlobStorage } from './vercel-blob.js';
6
+ /**
7
+ * Construct a StorageProvider from a tagged config.
8
+ *
9
+ * Per `feedback_pluggable_provider_pattern`: explicit "no-X" opt-in — unknown
10
+ * or unsupported tags throw with a clear message; no silent fallback.
11
+ *
12
+ * Supported tags in Phase 2a: 'r2', 'mock'. The 'vercel-blob' tag is reserved
13
+ * for Phase 2b (StorageProvider impl over @vercel/blob); during the migration
14
+ * window, consumers needing Vercel Blob should use the legacy `vercelBlobStorage`
15
+ * Payload plugin via `revealui.config.ts`.
16
+ */
17
+ export declare function createStorage(config: StorageConfig): StorageProvider;
2
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAK/C,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;AAIpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,eAAe,CAqBpE"}
@@ -1,2 +1,44 @@
1
- // Re-export storage adapters
1
+ // Storage abstraction (StorageProvider interface + per-provider configs + factory).
2
+ // GAP-208 — introduced 2026-05-18 alongside Vercel Blob → Cloudflare R2 swap.
3
+ //
4
+ // Phase 1 (#959): types.ts + index.ts type re-exports.
5
+ // Phase 2a (this PR): r2 + mock providers + createStorage factory.
6
+ import { createMockProvider } from './mock.js';
7
+ import { createR2Provider } from './r2.js';
8
+ export { createMockProvider } from './mock.js';
9
+ // Provider factories — exported so callers can construct a provider directly
10
+ // when they already know which one they want (skipping the discriminated-union
11
+ // factory below).
12
+ export { createR2Provider } from './r2.js';
13
+ // Legacy Payload-style plugin — kept during GAP-208 migration so existing
14
+ // `apps/admin/revealui.config.ts` keeps working. Dropped in Phase 4 cleanup.
2
15
  export { vercelBlobStorage } from './vercel-blob.js';
16
+ /**
17
+ * Construct a StorageProvider from a tagged config.
18
+ *
19
+ * Per `feedback_pluggable_provider_pattern`: explicit "no-X" opt-in — unknown
20
+ * or unsupported tags throw with a clear message; no silent fallback.
21
+ *
22
+ * Supported tags in Phase 2a: 'r2', 'mock'. The 'vercel-blob' tag is reserved
23
+ * for Phase 2b (StorageProvider impl over @vercel/blob); during the migration
24
+ * window, consumers needing Vercel Blob should use the legacy `vercelBlobStorage`
25
+ * Payload plugin via `revealui.config.ts`.
26
+ */
27
+ export function createStorage(config) {
28
+ switch (config.provider) {
29
+ case 'r2':
30
+ return createR2Provider(config.r2);
31
+ case 'mock':
32
+ return createMockProvider();
33
+ case 'vercel-blob':
34
+ throw new Error("createStorage: provider 'vercel-blob' is not yet implemented as a " +
35
+ 'StorageProvider (lands in GAP-208 Phase 2b). For the migration ' +
36
+ 'window, use the legacy `vercelBlobStorage` Payload plugin in ' +
37
+ "revealui.config.ts, or switch to provider: 'r2'.");
38
+ default: {
39
+ const _exhaustive = config;
40
+ throw new Error(`createStorage: unknown provider tag. Got ${JSON.stringify(_exhaustive)}. ` +
41
+ "Valid tags: 'r2', 'mock', 'vercel-blob' (Phase 2b).");
42
+ }
43
+ }
44
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * In-memory mock implementation of StorageProvider for tests.
3
+ *
4
+ * Per `feedback_pluggable_provider_pattern`: every provider abstraction ships
5
+ * a mock so consumer tests don't need network access or real cloud creds.
6
+ *
7
+ * Stores objects in a Map keyed by storage key. URLs use a synthetic
8
+ * `mock://` scheme so callers can distinguish mock results from real ones
9
+ * without parsing host names.
10
+ *
11
+ * GAP-208 Phase 2a (2026-05-18).
12
+ */
13
+ import type { ListOptions, ListResult, PutOptions, PutResult, StorageProvider } from './types.js';
14
+ interface MockEntry {
15
+ body: Uint8Array;
16
+ contentType: string;
17
+ cacheControl?: string;
18
+ metadata?: Record<string, string>;
19
+ uploadedAt: Date;
20
+ }
21
+ declare class MockProvider implements StorageProvider {
22
+ readonly provider = "mock";
23
+ private readonly store;
24
+ put(key: string, data: Blob | ArrayBuffer | Uint8Array | ReadableStream<Uint8Array>, opts?: PutOptions): Promise<PutResult>;
25
+ del(keyOrUrl: string): Promise<void>;
26
+ list(opts?: ListOptions): Promise<ListResult>;
27
+ /** Test helper — read the raw bytes back. Not part of StorageProvider. */
28
+ read(key: string): Uint8Array | undefined;
29
+ /** Test helper — full entry inspection. Not part of StorageProvider. */
30
+ inspect(key: string): MockEntry | undefined;
31
+ /** Test helper — count of stored objects. Not part of StorageProvider. */
32
+ size(): number;
33
+ /** Test helper — wipe all stored objects. Not part of StorageProvider. */
34
+ clear(): void;
35
+ private extractKey;
36
+ }
37
+ export declare function createMockProvider(): MockProvider;
38
+ export type { MockProvider };
39
+ //# sourceMappingURL=mock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/storage/mock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAEV,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,eAAe,EAChB,MAAM,YAAY,CAAC;AAMpB,UAAU,SAAS;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,UAAU,EAAE,IAAI,CAAC;CAClB;AAED,cAAM,YAAa,YAAW,eAAe;IAC3C,QAAQ,CAAC,QAAQ,UAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IAEhD,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;IAiBf,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpC,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAgCnD,0EAA0E;IAC1E,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIzC,wEAAwE;IACxE,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI3C,0EAA0E;IAC1E,IAAI,IAAI,MAAM;IAId,0EAA0E;IAC1E,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,UAAU;CAMnB;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAEjD;AAED,YAAY,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * In-memory mock implementation of StorageProvider for tests.
3
+ *
4
+ * Per `feedback_pluggable_provider_pattern`: every provider abstraction ships
5
+ * a mock so consumer tests don't need network access or real cloud creds.
6
+ *
7
+ * Stores objects in a Map keyed by storage key. URLs use a synthetic
8
+ * `mock://` scheme so callers can distinguish mock results from real ones
9
+ * without parsing host names.
10
+ *
11
+ * GAP-208 Phase 2a (2026-05-18).
12
+ */
13
+ import { toUint8Array } from './_helpers.js';
14
+ const PROVIDER_TAG = 'mock';
15
+ const MOCK_URL_SCHEME = 'mock://storage';
16
+ const DEFAULT_LIST_LIMIT = 1000;
17
+ class MockProvider {
18
+ provider = PROVIDER_TAG;
19
+ store = new Map();
20
+ async put(key, data, opts) {
21
+ const body = await toUint8Array(data);
22
+ this.store.set(key, {
23
+ body,
24
+ contentType: opts?.contentType ?? 'application/octet-stream',
25
+ cacheControl: opts?.cacheControl,
26
+ metadata: opts?.metadata,
27
+ uploadedAt: new Date(),
28
+ });
29
+ return {
30
+ key,
31
+ url: `${MOCK_URL_SCHEME}/${key}`,
32
+ size: body.byteLength,
33
+ provider: PROVIDER_TAG,
34
+ };
35
+ }
36
+ async del(keyOrUrl) {
37
+ const key = this.extractKey(keyOrUrl);
38
+ this.store.delete(key);
39
+ }
40
+ async list(opts) {
41
+ const prefix = opts?.prefix ?? '';
42
+ const limit = opts?.limit ?? DEFAULT_LIST_LIMIT;
43
+ const startAfter = opts?.cursor;
44
+ const allKeys = Array.from(this.store.keys())
45
+ .filter((key) => key.startsWith(prefix))
46
+ .sort();
47
+ const startIndex = startAfter ? allKeys.findIndex((k) => k > startAfter) : 0;
48
+ const effectiveStart = startIndex < 0 ? allKeys.length : startIndex;
49
+ const page = allKeys.slice(effectiveStart, effectiveStart + limit);
50
+ const items = page.map((key) => {
51
+ const entry = this.store.get(key);
52
+ if (!entry) {
53
+ throw new Error(`mock: store mutated during list iteration (${key})`);
54
+ }
55
+ return {
56
+ key,
57
+ url: `${MOCK_URL_SCHEME}/${key}`,
58
+ size: entry.body.byteLength,
59
+ uploadedAt: entry.uploadedAt,
60
+ };
61
+ });
62
+ const hasMore = effectiveStart + limit < allKeys.length;
63
+ const nextCursor = hasMore ? page[page.length - 1] : undefined;
64
+ return { items, cursor: nextCursor, hasMore };
65
+ }
66
+ /** Test helper — read the raw bytes back. Not part of StorageProvider. */
67
+ read(key) {
68
+ return this.store.get(key)?.body;
69
+ }
70
+ /** Test helper — full entry inspection. Not part of StorageProvider. */
71
+ inspect(key) {
72
+ return this.store.get(key);
73
+ }
74
+ /** Test helper — count of stored objects. Not part of StorageProvider. */
75
+ size() {
76
+ return this.store.size;
77
+ }
78
+ /** Test helper — wipe all stored objects. Not part of StorageProvider. */
79
+ clear() {
80
+ this.store.clear();
81
+ }
82
+ extractKey(keyOrUrl) {
83
+ if (keyOrUrl.startsWith(`${MOCK_URL_SCHEME}/`)) {
84
+ return keyOrUrl.slice(MOCK_URL_SCHEME.length + 1);
85
+ }
86
+ return keyOrUrl;
87
+ }
88
+ }
89
+ export function createMockProvider() {
90
+ return new MockProvider();
91
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Cloudflare R2 implementation of StorageProvider.
3
+ *
4
+ * R2 is S3-compatible — uses @aws-sdk/client-s3 with a custom endpoint and
5
+ * region='auto'. See https://developers.cloudflare.com/r2/api/s3/api/.
6
+ *
7
+ * GAP-208 Phase 2a (2026-05-18). Phase 1 (interface + types) shipped in #959.
8
+ *
9
+ * Server-only. Do NOT import from client-side code or edge runtime.
10
+ */
11
+ import type { R2Config, StorageProvider } from './types.js';
12
+ export declare function createR2Provider(config: R2Config): StorageProvider;
13
+ //# sourceMappingURL=r2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"r2.d.ts","sourceRoot":"","sources":["../../src/storage/r2.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,OAAO,KAAK,EAMV,QAAQ,EACR,eAAe,EAChB,MAAM,YAAY,CAAC;AAsHpB,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,eAAe,CAElE"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Cloudflare R2 implementation of StorageProvider.
3
+ *
4
+ * R2 is S3-compatible — uses @aws-sdk/client-s3 with a custom endpoint and
5
+ * region='auto'. See https://developers.cloudflare.com/r2/api/s3/api/.
6
+ *
7
+ * GAP-208 Phase 2a (2026-05-18). Phase 1 (interface + types) shipped in #959.
8
+ *
9
+ * Server-only. Do NOT import from client-side code or edge runtime.
10
+ */
11
+ import { DeleteObjectCommand, ListObjectsV2Command, PutObjectCommand, S3Client, } from '@aws-sdk/client-s3';
12
+ import { toUint8Array } from './_helpers.js';
13
+ const PROVIDER_TAG = 'r2';
14
+ const DEFAULT_CONTENT_TYPE = 'application/octet-stream';
15
+ const DEFAULT_LIST_LIMIT = 1000;
16
+ class R2Provider {
17
+ provider = PROVIDER_TAG;
18
+ client;
19
+ bucket;
20
+ publicBaseUrl;
21
+ constructor(config) {
22
+ if (!config.publicBaseUrl) {
23
+ throw new Error('R2 provider requires R2Config.publicBaseUrl. Presigned/private URLs ' +
24
+ 'are not supported in Phase 2a. Set publicBaseUrl to either a bound ' +
25
+ "custom domain (e.g. 'https://media.revealui.com') or the R2 dev URL " +
26
+ "('https://<account-id>.r2.cloudflarestorage.com/<bucket>').");
27
+ }
28
+ this.bucket = config.bucket;
29
+ this.publicBaseUrl = stripTrailingSlash(config.publicBaseUrl);
30
+ this.client = new S3Client({
31
+ region: 'auto',
32
+ endpoint: `https://${config.accountId}.r2.cloudflarestorage.com`,
33
+ credentials: {
34
+ accessKeyId: config.accessKeyId,
35
+ secretAccessKey: config.secretAccessKey,
36
+ },
37
+ });
38
+ }
39
+ async put(key, data, opts) {
40
+ if (opts?.access === 'private') {
41
+ throw new Error("R2 provider Phase 2a does not support access: 'private'. All objects " +
42
+ 'are written under the publicBaseUrl. Presigned/private-URL support ' +
43
+ 'lands in Phase 2b.');
44
+ }
45
+ const body = await toUint8Array(data);
46
+ await this.client.send(new PutObjectCommand({
47
+ Bucket: this.bucket,
48
+ Key: key,
49
+ Body: body,
50
+ ContentType: opts?.contentType ?? DEFAULT_CONTENT_TYPE,
51
+ ContentLength: body.byteLength,
52
+ CacheControl: opts?.cacheControl,
53
+ Metadata: opts?.metadata,
54
+ }));
55
+ return {
56
+ key,
57
+ url: `${this.publicBaseUrl}/${key}`,
58
+ size: body.byteLength,
59
+ provider: PROVIDER_TAG,
60
+ };
61
+ }
62
+ async del(keyOrUrl) {
63
+ const key = this.extractKey(keyOrUrl);
64
+ await this.client.send(new DeleteObjectCommand({
65
+ Bucket: this.bucket,
66
+ Key: key,
67
+ }));
68
+ }
69
+ async list(opts) {
70
+ const response = await this.client.send(new ListObjectsV2Command({
71
+ Bucket: this.bucket,
72
+ Prefix: opts?.prefix,
73
+ MaxKeys: opts?.limit ?? DEFAULT_LIST_LIMIT,
74
+ ContinuationToken: opts?.cursor,
75
+ }));
76
+ const items = (response.Contents ?? []).flatMap((entry) => {
77
+ if (!entry.Key)
78
+ return [];
79
+ return [
80
+ {
81
+ key: entry.Key,
82
+ url: `${this.publicBaseUrl}/${entry.Key}`,
83
+ size: entry.Size ?? 0,
84
+ uploadedAt: entry.LastModified ?? new Date(0),
85
+ },
86
+ ];
87
+ });
88
+ return {
89
+ items,
90
+ cursor: response.NextContinuationToken,
91
+ hasMore: response.IsTruncated === true,
92
+ };
93
+ }
94
+ extractKey(keyOrUrl) {
95
+ const parsed = tryParseUrl(keyOrUrl);
96
+ if (!parsed) {
97
+ return keyOrUrl;
98
+ }
99
+ // URL form — strip the leading slash from the pathname.
100
+ return parsed.pathname.startsWith('/') ? parsed.pathname.slice(1) : parsed.pathname;
101
+ }
102
+ }
103
+ export function createR2Provider(config) {
104
+ return new R2Provider(config);
105
+ }
106
+ // ── helpers ────────────────────────────────────────────────────────────────
107
+ function tryParseUrl(value) {
108
+ try {
109
+ return new URL(value);
110
+ }
111
+ catch {
112
+ return null;
113
+ }
114
+ }
115
+ function stripTrailingSlash(value) {
116
+ return value.endsWith('/') ? value.slice(0, -1) : value;
117
+ }
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Provider-agnostic storage interface for the RevealUI fleet.
3
+ *
4
+ * Per `feedback_revealui_agnosticism_principle` + `feedback_pluggable_provider_pattern`:
5
+ * slim interface, tag + factory, explicit "no-X" opt-in, mock provider for tests.
6
+ *
7
+ * Providers implement this interface; consumers (apps/server media routes,
8
+ * apps/admin health probes, packages/core Payload-style plugin shims) depend
9
+ * only on this contract. Switching providers becomes a config change.
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.
15
+ */
16
+ export interface StorageProvider {
17
+ /** Upload binary data. Returns a fully-qualified URL the value is reachable at. */
18
+ put(key: string, data: Blob | ArrayBuffer | Uint8Array | ReadableStream<Uint8Array>, opts?: PutOptions): Promise<PutResult>;
19
+ /** Delete by either provider URL or storage key. Best-effort; missing keys are not errors. */
20
+ del(keyOrUrl: string): Promise<void>;
21
+ /** List items, optionally filtered by key prefix. Used by health probes + admin browsing. */
22
+ list(opts?: ListOptions): Promise<ListResult>;
23
+ /** Provider tag (e.g. "r2", "vercel-blob", "mock") — exposed so consumers can adapt URL handling. */
24
+ readonly provider: string;
25
+ }
26
+ export interface PutOptions {
27
+ /** MIME type — written to the object's Content-Type header. Defaults to "application/octet-stream". */
28
+ contentType?: string;
29
+ /**
30
+ * Public read access (no auth required for GET on the returned URL).
31
+ * Defaults to "public" because the current media-upload flow needs public CDN URLs.
32
+ * Providers that don't support public access (e.g. private-bucket-only configs)
33
+ * MUST throw when access: "public" is requested.
34
+ */
35
+ access?: 'public' | 'private';
36
+ /** Cache-Control header value. Provider may apply a sensible default if omitted. */
37
+ cacheControl?: string;
38
+ /** Custom user-metadata. Keys are lowercased; values are strings. Limits vary by provider. */
39
+ metadata?: Record<string, string>;
40
+ }
41
+ export interface PutResult {
42
+ /** The storage key the object was written to (provider-relative, e.g. "media/uuid.jpg"). */
43
+ key: string;
44
+ /** Fully-qualified URL the object is reachable at for GET. */
45
+ url: string;
46
+ /** Storage size in bytes. Always populated by every provider. */
47
+ size: number;
48
+ /** Provider tag that wrote this object (matches StorageProvider.provider). */
49
+ provider: string;
50
+ }
51
+ export interface ListOptions {
52
+ /** Filter to keys starting with this prefix. */
53
+ prefix?: string;
54
+ /** Maximum items per page. Providers cap this internally (typically 1000). */
55
+ limit?: number;
56
+ /** Opaque pagination cursor from a previous ListResult. */
57
+ cursor?: string;
58
+ }
59
+ export interface ListResult {
60
+ items: ListItem[];
61
+ /** Next-page cursor if hasMore is true; undefined when listing is exhausted. */
62
+ cursor?: string;
63
+ hasMore: boolean;
64
+ }
65
+ export interface ListItem {
66
+ key: string;
67
+ url: string;
68
+ size: number;
69
+ uploadedAt: Date;
70
+ }
71
+ /**
72
+ * Discriminated union over `provider`. Adding a new provider means:
73
+ * 1. add a tag here + the per-provider config shape
74
+ * 2. add a case in the createStorage factory
75
+ * 3. implement the StorageProvider interface in a new file
76
+ *
77
+ * No silent fallback per `feedback_pluggable_provider_pattern`: unknown tags
78
+ * throw with a clear "valid tags: ..." message.
79
+ */
80
+ export type StorageConfig = {
81
+ provider: 'r2';
82
+ r2: R2Config;
83
+ } | {
84
+ provider: 'vercel-blob';
85
+ vercelBlob: VercelBlobConfig;
86
+ } | {
87
+ provider: 'mock';
88
+ };
89
+ export interface R2Config {
90
+ /** Cloudflare account ID (visible at top of the R2 dashboard). */
91
+ accountId: string;
92
+ /** R2 API token Access Key ID (NOT the global account API token). */
93
+ accessKeyId: string;
94
+ /** R2 API token Secret Access Key (paired with accessKeyId). */
95
+ secretAccessKey: string;
96
+ /** Bucket name (per-account-globally-unique within R2). */
97
+ bucket: string;
98
+ /**
99
+ * Optional public base URL for objects (e.g. "https://media.revealui.com" if a
100
+ * custom domain is bound, or "https://<account-id>.r2.cloudflarestorage.com/<bucket>"
101
+ * for the dev URL). When set, PutResult.url uses this base. When omitted, PutResult.url
102
+ * falls back to a presigned URL (private bucket pattern).
103
+ */
104
+ publicBaseUrl?: string;
105
+ }
106
+ export interface VercelBlobConfig {
107
+ /** vercel_blob_rw_* token from the Vercel Blob dashboard. */
108
+ token: string;
109
+ }
110
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Provider-agnostic storage interface for the RevealUI fleet.
3
+ *
4
+ * Per `feedback_revealui_agnosticism_principle` + `feedback_pluggable_provider_pattern`:
5
+ * slim interface, tag + factory, explicit "no-X" opt-in, mock provider for tests.
6
+ *
7
+ * Providers implement this interface; consumers (apps/server media routes,
8
+ * apps/admin health probes, packages/core Payload-style plugin shims) depend
9
+ * only on this contract. Switching providers becomes a config change.
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.
15
+ */
16
+ export {};
@@ -32,7 +32,7 @@ export type { APIResponse, EndpointHandler, EndpointHandlerArgs, REST_DELETE, RE
32
32
  export type { RichTextEditor, RichTextFeature, } from './richtext.js';
33
33
  export type { Plugin, PluginOptions, } from './plugins.js';
34
34
  export type { CustomComponent, RevealUICollectionConfig, RevealUIComponent, RevealUIContext, RevealUIEnhancedField, RevealUIField, RevealUIFieldType, RevealUIFrameworkContext, } from './extensions.js';
35
- export type { Block, BlocksField, CheckboxField, ClientCollectionConfig, ClientConfig, RevealUIBlock, RevealUIDependencyCheckArgs, RevealUIRichTextAdapter, RevealUISchemaArgs, RevealUITraverseFieldsArgs, RevealUITraverseFieldsResult, } from './legacy.js';
35
+ export type { Block, BlocksField, CheckboxField, ClientCollectionConfig, ClientConfig, RevealUIBlock, RevealUIDependencyCheckArgs, RevealUIRichTextAdapter, RevealUISchemaArgs, RevealUITraverseFieldsArgs, RevealUITraverseFieldsResult, } from './internal.js';
36
36
  export type { JobsConfig, JobTask, JobTaskPriority, JobTaskStatus, JobWorkflow, WorkflowStep, } from './jobs.js';
37
37
  export interface VectorDocument {
38
38
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -144,4 +144,4 @@ export interface RevealUIRichTextAdapter {
144
144
  serialize?: (content: unknown) => string;
145
145
  deserialize?: (content: string) => unknown;
146
146
  }
147
- //# sourceMappingURL=legacy.d.ts.map
147
+ //# sourceMappingURL=internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/types/internal.ts"],"names":[],"mappings":"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"}
@@ -233,10 +233,22 @@ export interface CollectionStorageAdapter {
233
233
  }
234
234
  export interface QueryableDatabaseAdapter {
235
235
  query: (query: string, values?: unknown[]) => Promise<DatabaseResult>;
236
+ /**
237
+ * Execute a callback inside a database transaction with a single connection
238
+ * held across all queries. The callback receives a transactional adapter
239
+ * whose `query` runs on the same connection; committed on success, rolled
240
+ * back on throw.
241
+ *
242
+ * Optional: adapters without real connection affinity (e.g. test mocks) can
243
+ * omit this. Operations that need read-after-write consistency must guard
244
+ * with `if (db.transaction)` and fall back to sequential queries.
245
+ */
246
+ transaction?: <T>(fn: (tx: QueryableDatabaseAdapter) => Promise<T>) => Promise<T>;
236
247
  collectionStorage?: CollectionStorageAdapter;
237
248
  }
238
249
  export interface DatabaseAdapter {
239
250
  query: QueryableDatabaseAdapter['query'];
251
+ transaction?: QueryableDatabaseAdapter['transaction'];
240
252
  connect: () => Promise<void>;
241
253
  disconnect: () => Promise<void>;
242
254
  init?: () => Promise<void>;
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"api-wrapper.d.ts","sourceRoot":"","sources":["../../src/utils/api-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,CAsElE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,SAAS,OAAO,EAAE,EAAE,OAAO,EACtE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,GAC3C,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAkCtC"}
1
+ {"version":3,"file":"api-wrapper.d.ts","sourceRoot":"","sources":["../../src/utils/api-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,CAsElE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,SAAS,OAAO,EAAE,EAAE,OAAO,EACtE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,GAC3C,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAkCtC"}
@@ -4,6 +4,7 @@
4
4
  * Wraps Next.js API routes to automatically set up request context,
5
5
  * error handling, and logging.
6
6
  */
7
+ import { getClientIp } from '@revealui/security';
7
8
  import { handleApiError } from './errors.js';
8
9
  import { logger } from './logger.js';
9
10
  import { createRequestContext, getRequestDuration, runInRequestContext, } from './request-context.js';
@@ -42,7 +43,7 @@ export function withRequestContext(handler) {
42
43
  headers: Object.fromEntries(request.headers.entries()),
43
44
  path: new URL(request.url).pathname,
44
45
  method: request.method,
45
- ip: request.headers.get('x-forwarded-for') || request.headers.get('x-real-ip') || undefined,
46
+ ip: getClientIp(request),
46
47
  });
47
48
  // Log incoming request
48
49
  logger.info('Incoming request', {