@rovela-ai/sdk 0.5.12 → 0.5.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/api/products.d.ts.map +1 -1
- package/dist/admin/api/products.js +10 -6
- package/dist/admin/api/products.js.map +1 -1
- package/dist/admin/components/ProductForm.d.ts.map +1 -1
- package/dist/admin/components/ProductForm.js +8 -3
- package/dist/admin/components/ProductForm.js.map +1 -1
- package/dist/auth/server/customer-service.d.ts.map +1 -1
- package/dist/auth/server/customer-service.js +26 -0
- package/dist/auth/server/customer-service.js.map +1 -1
- package/dist/checkout/server/order-service.d.ts.map +1 -1
- package/dist/checkout/server/order-service.js +96 -26
- package/dist/checkout/server/order-service.js.map +1 -1
- package/dist/checkout/stripe/client.d.ts +2 -1
- package/dist/checkout/stripe/client.d.ts.map +1 -1
- package/dist/checkout/stripe/client.js +5 -4
- package/dist/checkout/stripe/client.js.map +1 -1
- package/dist/core/db/queries.d.ts +25 -0
- package/dist/core/db/queries.d.ts.map +1 -1
- package/dist/core/db/queries.js +43 -0
- package/dist/core/db/queries.js.map +1 -1
- package/dist/core/server/index.d.ts +1 -0
- package/dist/core/server/index.d.ts.map +1 -1
- package/dist/core/server/index.js +3 -0
- package/dist/core/server/index.js.map +1 -1
- package/dist/core/server/sanitize.d.ts +17 -0
- package/dist/core/server/sanitize.d.ts.map +1 -0
- package/dist/core/server/sanitize.js +67 -0
- package/dist/core/server/sanitize.js.map +1 -0
- package/dist/core/types.d.ts +16 -5
- package/dist/core/types.d.ts.map +1 -1
- package/dist/products/components/ProductSpecifications.d.ts.map +1 -1
- package/dist/products/components/ProductSpecifications.js +5 -1
- package/dist/products/components/ProductSpecifications.js.map +1 -1
- package/package.json +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,QAAQ,GACT,MAAM,WAAW,CAAA;AAGlB,YAAY,EACV,SAAS,EACT,cAAc,EACd,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EAEjB,UAAU,EACV,cAAc,EACd,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,EAEb,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,GACZ,MAAM,WAAW,CAAA;AAGlB,OAAO,EAEL,EAAE,EACF,KAAK,EACL,MAAM,EAEN,QAAQ,EAER,eAAe,EACf,iBAAiB,EAEjB,MAAM,EAEN,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,aAAa,EAEb,aAAa,EACb,aAAa,EACb,aAAa,EACb,iBAAiB,EAEjB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EAEf,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EAEf,cAAc,EACd,cAAc,EACd,cAAc,EAEd,UAAU,EACV,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EAEjB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,uBAAuB,EAEvB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,kBAAkB,EAElB,gBAAgB,EAEhB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EAEf,YAAY,EACZ,cAAc,EAEd,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,OAAO,CAAA;AAEd,YAAY,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,QAAQ,GACT,MAAM,WAAW,CAAA;AAGlB,YAAY,EACV,SAAS,EACT,cAAc,EACd,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EAEjB,UAAU,EACV,cAAc,EACd,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,EAEb,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,GACZ,MAAM,WAAW,CAAA;AAGlB,OAAO,EAEL,EAAE,EACF,KAAK,EACL,MAAM,EAEN,QAAQ,EAER,eAAe,EACf,iBAAiB,EAEjB,MAAM,EAEN,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,aAAa,EAEb,aAAa,EACb,aAAa,EACb,aAAa,EACb,iBAAiB,EAEjB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EAEf,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EAEf,cAAc,EACd,cAAc,EACd,cAAc,EAEd,UAAU,EACV,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EAEjB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,uBAAuB,EAEvB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,kBAAkB,EAElB,gBAAgB,EAEhB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EAEf,YAAY,EACZ,cAAc,EAEd,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,OAAO,CAAA;AAEd,YAAY,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAInD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAG7C,YAAY,EACV,OAAO,IAAI,SAAS,EACpB,UAAU,EACV,cAAc,IAAI,gBAAgB,EAClC,iBAAiB,EACjB,QAAQ,IAAI,UAAU,EACtB,WAAW,EACX,KAAK,IAAI,OAAO,EAChB,QAAQ,EACR,SAAS,IAAI,WAAW,EACxB,YAAY,EACZ,QAAQ,IAAI,UAAU,EACtB,WAAW,EACX,UAAU,IAAI,YAAY,EAC1B,aAAa,EACb,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,OAAO,CAAA"}
|
|
@@ -46,4 +46,7 @@ getStoreStats, getLowStockProducts, getLowStockCount, getRecentOrders,
|
|
|
46
46
|
findSettings, upsertSettings,
|
|
47
47
|
// Setup guide — admin onboarding state
|
|
48
48
|
ensureOnboardingColumn, getOnboardingState, setOnboardingFlag, getSetupGuideSignals, } from '../db';
|
|
49
|
+
// Server-side HTML sanitizer for `html`-typed metafields (rich descriptions).
|
|
50
|
+
// Sanitize at the write boundary (admin product save + catalog import).
|
|
51
|
+
export { sanitizeRichHtml } from './sanitize';
|
|
49
52
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,oCAAoC;AACpC,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,QAAQ,GACT,MAAM,WAAW,CAAA;AA2BlB,6EAA6E;AAC7E,OAAO;AACL,SAAS;AACT,EAAE,EACF,KAAK,EACL,MAAM;AACN,oEAAoE;AACpE,QAAQ;AACR,SAAS;AACT,eAAe,EACf,iBAAiB;AACjB,SAAS;AACT,MAAM;AACN,qBAAqB;AACrB,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,aAAa;AACb,uBAAuB;AACvB,aAAa,EACb,aAAa,EACb,aAAa,EACb,iBAAiB;AACjB,+BAA+B;AAC/B,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,eAAe;AACf,uBAAuB;AACvB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,eAAe;AACf,yBAAyB;AACzB,cAAc,EACd,cAAc,EACd,cAAc;AACd,mBAAmB;AACnB,UAAU,EACV,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,WAAW,EACX,kBAAkB,EAClB,iBAAiB;AACjB,qBAAqB;AACrB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,uBAAuB;AACvB,sBAAsB;AACtB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,kBAAkB;AAClB,SAAS;AACT,gBAAgB;AAChB,QAAQ;AACR,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,eAAe;AACf,iBAAiB;AACjB,YAAY,EACZ,cAAc;AACd,uCAAuC;AACvC,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,OAAO,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,oCAAoC;AACpC,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,QAAQ,GACT,MAAM,WAAW,CAAA;AA2BlB,6EAA6E;AAC7E,OAAO;AACL,SAAS;AACT,EAAE,EACF,KAAK,EACL,MAAM;AACN,oEAAoE;AACpE,QAAQ;AACR,SAAS;AACT,eAAe,EACf,iBAAiB;AACjB,SAAS;AACT,MAAM;AACN,qBAAqB;AACrB,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,aAAa;AACb,uBAAuB;AACvB,aAAa,EACb,aAAa,EACb,aAAa,EACb,iBAAiB;AACjB,+BAA+B;AAC/B,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,eAAe;AACf,uBAAuB;AACvB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,eAAe;AACf,yBAAyB;AACzB,cAAc,EACd,cAAc,EACd,cAAc;AACd,mBAAmB;AACnB,UAAU,EACV,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,WAAW,EACX,kBAAkB,EAClB,iBAAiB;AACjB,qBAAqB;AACrB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,uBAAuB;AACvB,sBAAsB;AACtB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,kBAAkB;AAClB,SAAS;AACT,gBAAgB;AAChB,QAAQ;AACR,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,eAAe;AACf,iBAAiB;AACjB,YAAY,EACZ,cAAc;AACd,uCAAuC;AACvC,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,OAAO,CAAA;AAId,8EAA8E;AAC9E,wEAAwE;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela/sdk/core/server/sanitize
|
|
3
|
+
*
|
|
4
|
+
* Server-side HTML sanitizer for merchant-authored / imported rich text — e.g.
|
|
5
|
+
* PrestaShop product descriptions stored as `html`-typed metafields (see
|
|
6
|
+
* `Metafield` in core/types). Sanitize at the WRITE boundary (admin product
|
|
7
|
+
* save + catalog import) so the storefront can render the stored value
|
|
8
|
+
* directly. SERVER ONLY — never import this from a client component; it pulls in
|
|
9
|
+
* `sanitize-html` (Node) and must stay out of client bundles.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Sanitize a rich-HTML string down to a safe subset (formatting, lists, links,
|
|
13
|
+
* images, tables). Strips scripts, event handlers, unknown tags, and unsafe URL
|
|
14
|
+
* schemes. Returns '' for empty / non-string input so callers can store it as-is.
|
|
15
|
+
*/
|
|
16
|
+
export declare function sanitizeRichHtml(html: unknown): string;
|
|
17
|
+
//# sourceMappingURL=sanitize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/core/server/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAkDH;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAGtD"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela/sdk/core/server/sanitize
|
|
3
|
+
*
|
|
4
|
+
* Server-side HTML sanitizer for merchant-authored / imported rich text — e.g.
|
|
5
|
+
* PrestaShop product descriptions stored as `html`-typed metafields (see
|
|
6
|
+
* `Metafield` in core/types). Sanitize at the WRITE boundary (admin product
|
|
7
|
+
* save + catalog import) so the storefront can render the stored value
|
|
8
|
+
* directly. SERVER ONLY — never import this from a client component; it pulls in
|
|
9
|
+
* `sanitize-html` (Node) and must stay out of client bundles.
|
|
10
|
+
*/
|
|
11
|
+
import sanitizeHtml from 'sanitize-html';
|
|
12
|
+
// A conservative allowlist covering the formatting real product descriptions
|
|
13
|
+
// use (headings, lists, links, images, tables, basic inline styling) while
|
|
14
|
+
// dropping every scripting / layout-hijack vector.
|
|
15
|
+
const RICH_TEXT_OPTIONS = {
|
|
16
|
+
allowedTags: [
|
|
17
|
+
'p', 'br', 'hr', 'span', 'div',
|
|
18
|
+
'strong', 'b', 'em', 'i', 'u', 's', 'small', 'sub', 'sup', 'mark',
|
|
19
|
+
'ul', 'ol', 'li',
|
|
20
|
+
'h1', 'h2', 'h3', 'h4', 'h5', 'h6',
|
|
21
|
+
'blockquote', 'pre', 'code',
|
|
22
|
+
'a', 'img',
|
|
23
|
+
'table', 'thead', 'tbody', 'tfoot', 'tr', 'td', 'th', 'caption', 'colgroup', 'col',
|
|
24
|
+
'figure', 'figcaption',
|
|
25
|
+
],
|
|
26
|
+
allowedAttributes: {
|
|
27
|
+
// `rel` must be allowed for the forced-rel transform below to survive the
|
|
28
|
+
// attribute filter (sanitize-html filters attributes AFTER transformTags).
|
|
29
|
+
a: ['href', 'title', 'rel'],
|
|
30
|
+
img: ['src', 'alt', 'title', 'width', 'height'],
|
|
31
|
+
td: ['colspan', 'rowspan'],
|
|
32
|
+
th: ['colspan', 'rowspan', 'scope'],
|
|
33
|
+
col: ['span'],
|
|
34
|
+
colgroup: ['span'],
|
|
35
|
+
'*': ['style'],
|
|
36
|
+
},
|
|
37
|
+
// Only a safe subset of inline CSS survives — enough to keep alignment / weight
|
|
38
|
+
// / color from the source without opening `position`/`url()`-based attacks.
|
|
39
|
+
allowedStyles: {
|
|
40
|
+
'*': {
|
|
41
|
+
'text-align': [/^(left|right|center|justify)$/],
|
|
42
|
+
'font-weight': [/^(bold|bolder|lighter|normal|[1-9]00)$/],
|
|
43
|
+
'font-style': [/^(italic|normal)$/],
|
|
44
|
+
'text-decoration': [/^(underline|line-through|none)$/],
|
|
45
|
+
color: [/^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i, /^rgb\(\s*\d{1,3}\s*,\s*\d{1,3}\s*,\s*\d{1,3}\s*\)$/],
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
allowedSchemes: ['http', 'https', 'mailto', 'tel'],
|
|
49
|
+
allowedSchemesByTag: { img: ['http', 'https'] },
|
|
50
|
+
// Harden links against reverse-tabnabbing and SEO abuse.
|
|
51
|
+
transformTags: {
|
|
52
|
+
a: sanitizeHtml.simpleTransform('a', { rel: 'noopener noreferrer nofollow' }, true),
|
|
53
|
+
},
|
|
54
|
+
// Drop the CONTENT of these, not just the tags.
|
|
55
|
+
nonTextTags: ['script', 'style', 'textarea', 'option', 'noscript', 'iframe'],
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Sanitize a rich-HTML string down to a safe subset (formatting, lists, links,
|
|
59
|
+
* images, tables). Strips scripts, event handlers, unknown tags, and unsafe URL
|
|
60
|
+
* schemes. Returns '' for empty / non-string input so callers can store it as-is.
|
|
61
|
+
*/
|
|
62
|
+
export function sanitizeRichHtml(html) {
|
|
63
|
+
if (typeof html !== 'string' || html.trim() === '')
|
|
64
|
+
return '';
|
|
65
|
+
return sanitizeHtml(html, RICH_TEXT_OPTIONS);
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=sanitize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../../src/core/server/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,YAAY,MAAM,eAAe,CAAA;AAExC,6EAA6E;AAC7E,2EAA2E;AAC3E,mDAAmD;AACnD,MAAM,iBAAiB,GAA0B;IAC/C,WAAW,EAAE;QACX,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK;QAC9B,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM;QACjE,IAAI,EAAE,IAAI,EAAE,IAAI;QAChB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAClC,YAAY,EAAE,KAAK,EAAE,MAAM;QAC3B,GAAG,EAAE,KAAK;QACV,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK;QAClF,QAAQ,EAAE,YAAY;KACvB;IACD,iBAAiB,EAAE;QACjB,0EAA0E;QAC1E,2EAA2E;QAC3E,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;QAC3B,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;QAC/C,EAAE,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;QAC1B,EAAE,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC;QACnC,GAAG,EAAE,CAAC,MAAM,CAAC;QACb,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,GAAG,EAAE,CAAC,OAAO,CAAC;KACf;IACD,gFAAgF;IAChF,4EAA4E;IAC5E,aAAa,EAAE;QACb,GAAG,EAAE;YACH,YAAY,EAAE,CAAC,+BAA+B,CAAC;YAC/C,aAAa,EAAE,CAAC,wCAAwC,CAAC;YACzD,YAAY,EAAE,CAAC,mBAAmB,CAAC;YACnC,iBAAiB,EAAE,CAAC,iCAAiC,CAAC;YACtD,KAAK,EAAE,CAAC,iCAAiC,EAAE,oDAAoD,CAAC;SACjG;KACF;IACD,cAAc,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC;IAClD,mBAAmB,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAC/C,yDAAyD;IACzD,aAAa,EAAE;QACb,CAAC,EAAE,YAAY,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,8BAA8B,EAAE,EAAE,IAAI,CAAC;KACpF;IACD,gDAAgD;IAChD,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC;CAC7E,CAAA;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,CAAA;IAC7D,OAAO,YAAY,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAA;AAC9C,CAAC"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -18,16 +18,27 @@ export type Store = {
|
|
|
18
18
|
createdAt: Date;
|
|
19
19
|
};
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
21
|
+
* Rendering type for a metafield value. Drives the admin editor (number field
|
|
22
|
+
* vs. rich-text area) and the storefront render (plain text vs. sanitized HTML).
|
|
23
|
+
* Omitted = 'text', so every legacy metafield keeps working unchanged.
|
|
24
|
+
* - 'text' plain string (default)
|
|
25
|
+
* - 'number' a numeric value, rendered as text
|
|
26
|
+
* - 'html' sanitized rich HTML (e.g. an imported PrestaShop description)
|
|
27
|
+
*/
|
|
28
|
+
export type MetafieldType = 'text' | 'number' | 'html';
|
|
29
|
+
/**
|
|
30
|
+
* A custom product field ("metafield"): an ordered key/label/value triple with
|
|
31
|
+
* an optional `type`. `key` is a stable slug (unique per product), `label` is
|
|
32
|
+
* the human display, `value` is a string. Rendered dynamically in the admin
|
|
33
|
+
* form + storefront — no per-field code. Populated by the PrestaShop importer
|
|
34
|
+
* (custom fields + specifications + rich description) or added by hand in the
|
|
35
|
+
* product editor.
|
|
26
36
|
*/
|
|
27
37
|
export type Metafield = {
|
|
28
38
|
key: string;
|
|
29
39
|
label: string;
|
|
30
40
|
value: string;
|
|
41
|
+
type?: MetafieldType;
|
|
31
42
|
};
|
|
32
43
|
/**
|
|
33
44
|
* Product with SEO fields for catalog display and search optimization.
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,OAAO,GAAG,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAA;IACpD,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,IAAI,CAAA;CAChB,CAAA;AAMD
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProductSpecifications.d.ts","sourceRoot":"","sources":["../../../src/products/components/ProductSpecifications.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAGjD,MAAM,WAAW,0BAA0B;IACzC,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,CAAA;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,wBAAgB,qBAAqB,CAAC,EACpC,UAAU,EACV,SAAS,EACT,OAA0B,GAC3B,EAAE,0BAA0B,
|
|
1
|
+
{"version":3,"file":"ProductSpecifications.d.ts","sourceRoot":"","sources":["../../../src/products/components/ProductSpecifications.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAGjD,MAAM,WAAW,0BAA0B;IACzC,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,CAAA;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,wBAAgB,qBAAqB,CAAC,EACpC,UAAU,EACV,SAAS,EACT,OAA0B,GAC3B,EAAE,0BAA0B,kDAsD5B"}
|
|
@@ -10,6 +10,10 @@ export function ProductSpecifications({ metafields, className, heading = 'Specif
|
|
|
10
10
|
m.value.trim() !== '');
|
|
11
11
|
if (items.length === 0)
|
|
12
12
|
return null;
|
|
13
|
-
|
|
13
|
+
// Rich HTML fields (e.g. an imported description) render full-width as prose;
|
|
14
|
+
// simple text/number fields render as a two-column spec table.
|
|
15
|
+
const rich = items.filter((m) => m.type === 'html');
|
|
16
|
+
const simple = items.filter((m) => m.type !== 'html');
|
|
17
|
+
return (_jsxs("section", { className: className ?? 'mt-8', "aria-label": heading ?? 'Specifications', children: [heading && (_jsx("h2", { className: "font-heading mb-3 text-lg font-semibold", children: heading })), simple.length > 0 && (_jsx("dl", { className: "divide-y divide-border overflow-hidden rounded-lg border border-border", children: simple.map((m) => (_jsxs("div", { className: "grid grid-cols-3 gap-4 px-4 py-2.5 text-sm", children: [_jsx("dt", { className: "col-span-1 text-muted-foreground", children: m.label }), _jsx("dd", { className: "col-span-2 whitespace-pre-line text-foreground", children: m.value })] }, m.key))) })), rich.map((m) => (_jsxs("div", { className: simple.length > 0 ? 'mt-6' : undefined, children: [m.label && (_jsx("h3", { className: "font-heading mb-2 text-base font-semibold", children: m.label })), _jsx("div", { className: "prose prose-sm max-w-none text-foreground", dangerouslySetInnerHTML: { __html: m.value } })] }, m.key)))] }));
|
|
14
18
|
}
|
|
15
19
|
//# sourceMappingURL=ProductSpecifications.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProductSpecifications.js","sourceRoot":"","sources":["../../../src/products/components/ProductSpecifications.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAgBZ,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAA;AAS3E,MAAM,UAAU,qBAAqB,CAAC,EACpC,UAAU,EACV,SAAS,EACT,OAAO,GAAG,gBAAgB,GACC;IAC3B,MAAM,GAAG,GAAG,wBAAwB,EAAE,CAAA;IACtC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,mBAAmB,IAAI,EAAE,CAAC,CAAA;IAE/D,MAAM,KAAK,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CACrC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAChB,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;QAC3B,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CACxB,CAAA;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEnC,OAAO,CACL,mBAAS,SAAS,EAAE,SAAS,IAAI,MAAM,gBAAc,OAAO,IAAI,gBAAgB,aAC7E,OAAO,IAAI,CACV,aAAI,SAAS,EAAC,yCAAyC,YAAE,OAAO,GAAM,CACvE,
|
|
1
|
+
{"version":3,"file":"ProductSpecifications.js","sourceRoot":"","sources":["../../../src/products/components/ProductSpecifications.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAgBZ,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAA;AAS3E,MAAM,UAAU,qBAAqB,CAAC,EACpC,UAAU,EACV,SAAS,EACT,OAAO,GAAG,gBAAgB,GACC;IAC3B,MAAM,GAAG,GAAG,wBAAwB,EAAE,CAAA;IACtC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,mBAAmB,IAAI,EAAE,CAAC,CAAA;IAE/D,MAAM,KAAK,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CACrC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAChB,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;QAC3B,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CACxB,CAAA;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEnC,8EAA8E;IAC9E,+DAA+D;IAC/D,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;IACnD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;IAErD,OAAO,CACL,mBAAS,SAAS,EAAE,SAAS,IAAI,MAAM,gBAAc,OAAO,IAAI,gBAAgB,aAC7E,OAAO,IAAI,CACV,aAAI,SAAS,EAAC,yCAAyC,YAAE,OAAO,GAAM,CACvE,EAEA,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CACpB,aAAI,SAAS,EAAC,wEAAwE,YACnF,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACjB,eAAiB,SAAS,EAAC,4CAA4C,aACrE,aAAI,SAAS,EAAC,kCAAkC,YAAE,CAAC,CAAC,KAAK,GAAM,EAC/D,aAAI,SAAS,EAAC,gDAAgD,YAAE,CAAC,CAAC,KAAK,GAAM,KAFrE,CAAC,CAAC,GAAG,CAGT,CACP,CAAC,GACC,CACN,EAEA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACf,eAAiB,SAAS,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,aAC/D,CAAC,CAAC,KAAK,IAAI,CACV,aAAI,SAAS,EAAC,2CAA2C,YAAE,CAAC,CAAC,KAAK,GAAM,CACzE,EAOD,cACE,SAAS,EAAC,2CAA2C,EACrD,uBAAuB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,GAC5C,KAbM,CAAC,CAAC,GAAG,CAcT,CACP,CAAC,IACM,CACX,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rovela-ai/sdk",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.13",
|
|
4
4
|
"description": "Rovela SDK - Pre-built e-commerce components for AI-powered store generation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -269,6 +269,7 @@
|
|
|
269
269
|
"next-auth": "4.24.13",
|
|
270
270
|
"recharts": "3.7.0",
|
|
271
271
|
"resend": "6.9.1",
|
|
272
|
+
"sanitize-html": "^2.14.0",
|
|
272
273
|
"stripe": "20.3.0",
|
|
273
274
|
"tailwind-merge": "3.4.0",
|
|
274
275
|
"zustand": "5.0.10"
|
|
@@ -277,6 +278,7 @@
|
|
|
277
278
|
"@types/bcryptjs": "2.4.6",
|
|
278
279
|
"@types/node": "24.10.9",
|
|
279
280
|
"@types/react": "19.2.10",
|
|
281
|
+
"@types/sanitize-html": "^2.13.0",
|
|
280
282
|
"drizzle-kit": "0.31.8",
|
|
281
283
|
"typescript": "5.9.3"
|
|
282
284
|
},
|