@rovela-ai/sdk 0.9.2 → 0.10.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 (50) hide show
  1. package/dist/admin/components/AdminNav.d.ts.map +1 -1
  2. package/dist/admin/components/AdminNav.js +3 -1
  3. package/dist/admin/components/AdminNav.js.map +1 -1
  4. package/dist/admin/components/FilesManager.d.ts +5 -0
  5. package/dist/admin/components/FilesManager.d.ts.map +1 -0
  6. package/dist/admin/components/FilesManager.js +158 -0
  7. package/dist/admin/components/FilesManager.js.map +1 -0
  8. package/dist/admin/components/MediaLibraryPicker.d.ts +14 -0
  9. package/dist/admin/components/MediaLibraryPicker.d.ts.map +1 -0
  10. package/dist/admin/components/MediaLibraryPicker.js +95 -0
  11. package/dist/admin/components/MediaLibraryPicker.js.map +1 -0
  12. package/dist/admin/components/index.d.ts +4 -0
  13. package/dist/admin/components/index.d.ts.map +1 -1
  14. package/dist/admin/components/index.js +5 -0
  15. package/dist/admin/components/index.js.map +1 -1
  16. package/dist/admin/index.d.ts +1 -1
  17. package/dist/admin/index.d.ts.map +1 -1
  18. package/dist/admin/index.js +2 -0
  19. package/dist/admin/index.js.map +1 -1
  20. package/dist/media/api/files.d.ts +32 -0
  21. package/dist/media/api/files.d.ts.map +1 -0
  22. package/dist/media/api/files.js +99 -0
  23. package/dist/media/api/files.js.map +1 -0
  24. package/dist/media/api/index.d.ts +1 -0
  25. package/dist/media/api/index.d.ts.map +1 -1
  26. package/dist/media/api/index.js +1 -0
  27. package/dist/media/api/index.js.map +1 -1
  28. package/dist/media/components/ImageGalleryUpload.d.ts.map +1 -1
  29. package/dist/media/components/ImageGalleryUpload.js +15 -2
  30. package/dist/media/components/ImageGalleryUpload.js.map +1 -1
  31. package/dist/media/components/ImageUpload.d.ts.map +1 -1
  32. package/dist/media/components/ImageUpload.js +16 -2
  33. package/dist/media/components/ImageUpload.js.map +1 -1
  34. package/dist/media/index.d.ts +2 -0
  35. package/dist/media/index.d.ts.map +1 -1
  36. package/dist/media/index.js +4 -0
  37. package/dist/media/index.js.map +1 -1
  38. package/dist/media/server/index.d.ts +1 -0
  39. package/dist/media/server/index.d.ts.map +1 -1
  40. package/dist/media/server/index.js +2 -0
  41. package/dist/media/server/index.js.map +1 -1
  42. package/dist/media/server/list.d.ts +23 -0
  43. package/dist/media/server/list.d.ts.map +1 -0
  44. package/dist/media/server/list.js +62 -0
  45. package/dist/media/server/list.js.map +1 -0
  46. package/dist/media/taxonomy.d.ts +106 -0
  47. package/dist/media/taxonomy.d.ts.map +1 -0
  48. package/dist/media/taxonomy.js +227 -0
  49. package/dist/media/taxonomy.js.map +1 -0
  50. package/package.json +5 -1
@@ -0,0 +1,227 @@
1
+ /**
2
+ * @rovela-ai/sdk/media/taxonomy
3
+ *
4
+ * Asset taxonomy — the single source of truth for classifying every R2
5
+ * object under `stores/{storeId}/...` into a typed `StoreAsset`. Shared by
6
+ * TWO surfaces that list the same storage live (no sync layer by design):
7
+ *
8
+ * - the store admin's Files page (SDK, /admin/files)
9
+ * - the Rovela platform's Assets Library (`lib/assets/categories.ts`
10
+ * re-exports this module — never fork the parse logic there)
11
+ *
12
+ * Well-known prefixes:
13
+ * branding/{logo|favicon} — merchant-uploaded logos (canonical keys, no extension)
14
+ * products/{...} — product photos
15
+ * products/videos/{...} — product videos
16
+ * variants/{...} — variant images (admin upload folder)
17
+ * categories/{...} — category cover images (admin upload folder)
18
+ * locations/{...} — store-location images (admin upload folder)
19
+ * general/{...} — untyped admin uploads
20
+ * chat-attachments/{...} — platform chat / library uploads (any kind)
21
+ * generated/products/{...} — AI-generated product images
22
+ * generated/library/{...} — AI-generated library images
23
+ * generated/{...} — AI-generated section images
24
+ * references/{...} — reference screenshots (system)
25
+ * thumbnail.jpg — post-deploy store thumbnail (system)
26
+ *
27
+ * Adding a category: append the union value, define META, extend
28
+ * `categoryFromInnerPath` (more specific prefixes FIRST). Removing one is a
29
+ * fleet decision — unrecognised keys parse to `null` and are silently
30
+ * skipped by every list surface.
31
+ */
32
+ export const CATEGORY_META = {
33
+ logo: { id: 'logo', label: 'Logo', origin: 'upload' },
34
+ favicon: { id: 'favicon', label: 'Favicon', origin: 'upload' },
35
+ 'product-image': { id: 'product-image', label: 'Product image', origin: 'upload' },
36
+ 'product-video': { id: 'product-video', label: 'Product video', origin: 'upload' },
37
+ 'category-image': { id: 'category-image', label: 'Category image', origin: 'upload' },
38
+ 'location-image': { id: 'location-image', label: 'Location image', origin: 'upload' },
39
+ 'general-upload': { id: 'general-upload', label: 'Upload', origin: 'upload' },
40
+ 'chat-upload': { id: 'chat-upload', label: 'Upload', origin: 'upload' },
41
+ 'ai-generated': { id: 'ai-generated', label: 'AI image', origin: 'ai-generated' },
42
+ 'ai-generated-product': {
43
+ id: 'ai-generated-product',
44
+ label: 'AI product image',
45
+ origin: 'ai-generated',
46
+ },
47
+ 'ai-generated-library': {
48
+ id: 'ai-generated-library',
49
+ label: 'AI library image',
50
+ origin: 'ai-generated',
51
+ },
52
+ reference: { id: 'reference', label: 'Reference screenshot', origin: 'system' },
53
+ thumbnail: { id: 'thumbnail', label: 'Store thumbnail', origin: 'system' },
54
+ };
55
+ /**
56
+ * Categories the store ADMIN must never delete: branding assets are wired
57
+ * into env vars + the platform branding helpers (deleting the raw object
58
+ * would leave a dangling logo URL on the deployed store), and system
59
+ * artifacts (references, thumbnail) belong to the platform pipeline.
60
+ */
61
+ export const ADMIN_PROTECTED_CATEGORIES = new Set([
62
+ 'logo',
63
+ 'favicon',
64
+ 'reference',
65
+ 'thumbnail',
66
+ ]);
67
+ /**
68
+ * Media chips shared by the admin Files page and the platform Assets
69
+ * Library. "All" first; order is the render order.
70
+ */
71
+ export const MEDIA_CHIP_FILTERS = [
72
+ { id: 'all', label: 'All', test: () => true },
73
+ { id: 'image', label: 'Images', test: (a) => a.kind === 'image' },
74
+ { id: 'video', label: 'Videos', test: (a) => a.kind === 'video' },
75
+ {
76
+ id: 'branding',
77
+ label: 'Branding',
78
+ test: (a) => a.category === 'logo' || a.category === 'favicon',
79
+ },
80
+ {
81
+ id: 'products',
82
+ label: 'Products',
83
+ test: (a) => a.category === 'product-image' || a.category === 'product-video',
84
+ },
85
+ {
86
+ id: 'ai',
87
+ label: 'AI generated',
88
+ test: (a) => a.category === 'ai-generated' ||
89
+ a.category === 'ai-generated-product' ||
90
+ a.category === 'ai-generated-library',
91
+ },
92
+ {
93
+ id: 'uploads',
94
+ label: 'Uploads',
95
+ test: (a) => a.category === 'chat-upload' ||
96
+ a.category === 'general-upload' ||
97
+ a.category === 'category-image' ||
98
+ a.category === 'location-image',
99
+ },
100
+ {
101
+ id: 'references',
102
+ label: 'References',
103
+ test: (a) => a.category === 'reference' || a.category === 'thumbnail',
104
+ },
105
+ ];
106
+ // ---------------------------------------------------------------------------
107
+ // Key parsing.
108
+ // ---------------------------------------------------------------------------
109
+ /**
110
+ * Image vs video vs other from the file extension. Mirrors the storefront's
111
+ * `isVideoUrl()` rule — URL-extension detection, no MIME.
112
+ */
113
+ const IMAGE_EXTS = new Set([
114
+ 'png', 'jpg', 'jpeg', 'gif', 'webp', 'svg', 'avif', 'ico', 'bmp',
115
+ ]);
116
+ const VIDEO_EXTS = new Set(['mp4', 'webm', 'mov', 'm4v']);
117
+ function kindFromKey(key) {
118
+ // Logo / favicon ship without an extension on the canonical key (R2 stores
119
+ // Content-Type as object metadata). Treat as images by category, not extension.
120
+ if (key.endsWith('/branding/logo') || key.endsWith('/branding/favicon')) {
121
+ return 'image';
122
+ }
123
+ const ext = key.toLowerCase().match(/\.([a-z0-9]+)$/)?.[1];
124
+ if (!ext)
125
+ return 'other';
126
+ if (IMAGE_EXTS.has(ext))
127
+ return 'image';
128
+ if (VIDEO_EXTS.has(ext))
129
+ return 'video';
130
+ return 'other';
131
+ }
132
+ /**
133
+ * Classify the per-store sub-path. Tests in priority order — more specific
134
+ * prefixes (`generated/products/`) MUST come before less specific ones
135
+ * (`generated/`).
136
+ */
137
+ function categoryFromInnerPath(rest) {
138
+ if (rest === 'branding/logo')
139
+ return 'logo';
140
+ if (rest === 'branding/favicon')
141
+ return 'favicon';
142
+ if (rest === 'thumbnail.jpg')
143
+ return 'thumbnail';
144
+ if (rest.startsWith('products/videos/'))
145
+ return 'product-video';
146
+ if (rest.startsWith('products/'))
147
+ return 'product-image';
148
+ if (rest.startsWith('variants/'))
149
+ return 'product-image';
150
+ if (rest.startsWith('categories/'))
151
+ return 'category-image';
152
+ if (rest.startsWith('locations/'))
153
+ return 'location-image';
154
+ if (rest.startsWith('general/'))
155
+ return 'general-upload';
156
+ if (rest.startsWith('chat-attachments/'))
157
+ return 'chat-upload';
158
+ if (rest.startsWith('generated/products/'))
159
+ return 'ai-generated-product';
160
+ if (rest.startsWith('generated/library/'))
161
+ return 'ai-generated-library';
162
+ if (rest.startsWith('generated/'))
163
+ return 'ai-generated';
164
+ if (rest.startsWith('references/'))
165
+ return 'reference';
166
+ return null;
167
+ }
168
+ /**
169
+ * Pretty-name from the file portion of a key. Strips the leading `{digits}_`
170
+ * collision-buster used by upload routes. Canonical branding / thumbnail
171
+ * paths get hardcoded labels; references keep their `ref-N.jpg` shape.
172
+ */
173
+ function displayName(category, rest) {
174
+ if (category === 'logo')
175
+ return 'Logo';
176
+ if (category === 'favicon')
177
+ return 'Favicon';
178
+ if (category === 'thumbnail')
179
+ return 'Store thumbnail';
180
+ const leaf = rest.split('/').pop() ?? rest;
181
+ if (category === 'reference')
182
+ return leaf;
183
+ return leaf.replace(/^\d+_/, '');
184
+ }
185
+ /**
186
+ * Parse one R2 object into a StoreAsset. Returns `null` for keys outside
187
+ * the `stores/{id}/` namespace or with unknown prefixes — callers SKIP
188
+ * nulls so stray objects never surface.
189
+ */
190
+ export function parseAssetKey({ key, size, lastModified, publicUrlBase, }) {
191
+ const m = key.match(/^stores\/([^/]+)\/(.+)$/);
192
+ if (!m)
193
+ return null;
194
+ const projectId = m[1];
195
+ const rest = m[2];
196
+ const category = categoryFromInnerPath(rest);
197
+ if (!category)
198
+ return null;
199
+ const iso = lastModified instanceof Date
200
+ ? lastModified.toISOString()
201
+ : new Date(lastModified).toISOString();
202
+ return {
203
+ key,
204
+ projectId,
205
+ category,
206
+ url: `${publicUrlBase.replace(/\/$/, '')}/${key}`,
207
+ name: displayName(category, rest),
208
+ size,
209
+ lastModified: iso,
210
+ kind: kindFromKey(key),
211
+ origin: CATEGORY_META[category].origin,
212
+ };
213
+ }
214
+ /**
215
+ * Branding-key sniffer — 'logo' / 'favicon' / null. Used by the platform's
216
+ * generic DELETE route to forward to the branding handlers (which also clear
217
+ * `blueprint.store.{logo|favicon}Url` + PATCH Vercel envs).
218
+ */
219
+ export function brandingKindFromKey(key) {
220
+ const m = key.match(/^stores\/[^/]+\/branding\/(logo|favicon)$/);
221
+ return m ? m[1] : null;
222
+ }
223
+ /** Authz guard: confirms a key belongs to the given store/project. */
224
+ export function keyBelongsToProject(key, projectId) {
225
+ return key.startsWith(`stores/${projectId}/`);
226
+ }
227
+ //# sourceMappingURL=taxonomy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taxonomy.js","sourceRoot":"","sources":["../../src/media/taxonomy.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rovela-ai/sdk",
3
- "version": "0.9.2",
3
+ "version": "0.10.1",
4
4
  "description": "Rovela SDK - Pre-built e-commerce components for AI-powered store generation",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -264,6 +264,10 @@
264
264
  "types": "./dist/media/server/index.d.ts",
265
265
  "import": "./dist/media/server/index.js"
266
266
  },
267
+ "./media/taxonomy": {
268
+ "types": "./dist/media/taxonomy.d.ts",
269
+ "import": "./dist/media/taxonomy.js"
270
+ },
267
271
  "./media/api": {
268
272
  "types": "./dist/media/api/index.d.ts",
269
273
  "import": "./dist/media/api/index.js"