@shoplix-ai/sdui-schema 1.4.0 → 1.5.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.
- package/dist/binding.d.ts +19 -2
- package/dist/binding.d.ts.map +1 -1
- package/dist/binding.js +13 -2
- package/dist/binding.js.map +1 -1
- package/dist/block-definition.d.ts +85 -13
- package/dist/block-definition.d.ts.map +1 -1
- package/dist/block-definition.js +29 -5
- package/dist/block-definition.js.map +1 -1
- package/dist/blocks.d.ts +271 -0
- package/dist/blocks.d.ts.map +1 -1
- package/dist/blocks.js +33 -0
- package/dist/blocks.js.map +1 -1
- package/dist/definition-validator.d.ts +2 -0
- package/dist/definition-validator.d.ts.map +1 -1
- package/dist/definition-validator.js +30 -0
- package/dist/definition-validator.js.map +1 -1
- package/dist/display.d.ts +163 -7
- package/dist/display.d.ts.map +1 -1
- package/dist/display.js +69 -8
- package/dist/display.js.map +1 -1
- package/dist/envelope.d.ts +148 -22
- package/dist/envelope.d.ts.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/manifest.d.ts +2 -0
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js.map +1 -1
- package/dist/parse.d.ts +2 -1
- package/dist/parse.d.ts.map +1 -1
- package/dist/parse.js +4 -1
- package/dist/parse.js.map +1 -1
- package/dist/screen.d.ts +27 -5
- package/dist/screen.d.ts.map +1 -1
- package/dist/screen.js +39 -1
- package/dist/screen.js.map +1 -1
- package/dist/theme.d.ts +1 -1
- package/package.json +1 -1
package/dist/display.js
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
/**
|
|
3
|
-
* Display
|
|
4
|
-
*
|
|
5
|
-
* the charged price
|
|
3
|
+
* Display money: a ready-to-render string, its currency code, and the decimal
|
|
4
|
+
* amount it was formatted from. A block may derive a display-only figure from
|
|
5
|
+
* amounts in one currency; the charged price and the total a buyer sees are
|
|
6
|
+
* always Shopify's, never a device-side sum.
|
|
6
7
|
*/
|
|
7
8
|
export const displayMoneySchema = z.strictObject({
|
|
8
9
|
formatted: z.string().min(1),
|
|
9
10
|
currencyCode: z.string().regex(/^[A-Z]{3}$/, 'expected an ISO 4217 currency code'),
|
|
11
|
+
amount: z
|
|
12
|
+
.string()
|
|
13
|
+
.regex(/^\d+(\.\d+)?$/, 'expected a decimal amount string')
|
|
14
|
+
.optional(),
|
|
10
15
|
});
|
|
16
|
+
const selectedOptionSchema = z.strictObject({ name: z.string().min(1), value: z.string().min(1) });
|
|
11
17
|
export const displayImageSchema = z.strictObject({
|
|
12
18
|
url: z.url(),
|
|
13
19
|
altText: z.string().optional(),
|
|
@@ -28,7 +34,7 @@ export const productOptionSchema = z.strictObject({
|
|
|
28
34
|
export const productVariantSchema = z.strictObject({
|
|
29
35
|
id: z.string().min(1),
|
|
30
36
|
title: z.string(),
|
|
31
|
-
selectedOptions: z.array(
|
|
37
|
+
selectedOptions: z.array(selectedOptionSchema),
|
|
32
38
|
available: z.boolean(),
|
|
33
39
|
price: displayMoneySchema.optional(),
|
|
34
40
|
compareAtPrice: displayMoneySchema.optional(),
|
|
@@ -60,6 +66,53 @@ export const collectionDisplaySchema = z.strictObject({
|
|
|
60
66
|
handle: z.string().min(1),
|
|
61
67
|
image: displayImageSchema.optional(),
|
|
62
68
|
});
|
|
69
|
+
/** One custom attribute a buyer or a block put on a line or the cart: a key and a value. */
|
|
70
|
+
export const cartAttributeSchema = z.strictObject({ key: z.string().min(1), value: z.string() });
|
|
71
|
+
/**
|
|
72
|
+
* One line of the held cart as Shopify answered it and the Provider formatted
|
|
73
|
+
* it: what the buyer holds, of which product and variant, at what price. The
|
|
74
|
+
* compare-at total and the discount amount are present only where Shopify
|
|
75
|
+
* gave one.
|
|
76
|
+
*/
|
|
77
|
+
export const cartLineDisplaySchema = z.strictObject({
|
|
78
|
+
id: z.string().min(1),
|
|
79
|
+
variantId: z.string().min(1),
|
|
80
|
+
productId: z.string().min(1),
|
|
81
|
+
productTitle: z.string(),
|
|
82
|
+
variantTitle: z.string(),
|
|
83
|
+
vendor: z.string().optional(),
|
|
84
|
+
selectedOptions: z.array(selectedOptionSchema),
|
|
85
|
+
image: displayImageSchema.optional(),
|
|
86
|
+
quantity: z.int().positive(),
|
|
87
|
+
unitPrice: displayMoneySchema,
|
|
88
|
+
lineTotal: displayMoneySchema,
|
|
89
|
+
compareAtTotal: displayMoneySchema.optional(),
|
|
90
|
+
discountAmount: displayMoneySchema.optional(),
|
|
91
|
+
attributes: z.array(cartAttributeSchema),
|
|
92
|
+
});
|
|
93
|
+
export const cartDiscountCodeSchema = z.strictObject({
|
|
94
|
+
code: z.string().min(1),
|
|
95
|
+
applicable: z.boolean(),
|
|
96
|
+
});
|
|
97
|
+
/**
|
|
98
|
+
* The held cart. The id and the checkout url are absent until Shopify holds
|
|
99
|
+
* the cart, which the first add brings about; a buyer who holds nothing sees
|
|
100
|
+
* zero lines and zero money in the market's currency. The total is Shopify's,
|
|
101
|
+
* with its estimated flag; a code Shopify does not honour stays listed with
|
|
102
|
+
* applicable false.
|
|
103
|
+
*/
|
|
104
|
+
export const cartDisplaySchema = z.strictObject({
|
|
105
|
+
id: z.string().min(1).optional(),
|
|
106
|
+
checkoutUrl: z.url().optional(),
|
|
107
|
+
totalQuantity: z.int().min(0),
|
|
108
|
+
lines: z.array(cartLineDisplaySchema),
|
|
109
|
+
subtotal: displayMoneySchema,
|
|
110
|
+
totalDiscountAmount: displayMoneySchema,
|
|
111
|
+
total: displayMoneySchema,
|
|
112
|
+
totalEstimated: z.boolean(),
|
|
113
|
+
discountCodes: z.array(cartDiscountCodeSchema),
|
|
114
|
+
note: z.string().optional(),
|
|
115
|
+
});
|
|
63
116
|
/**
|
|
64
117
|
* The Binding's items in order, whatever its kind. A single-entity Binding
|
|
65
118
|
* that resolved to nothing is an empty list, the same as an empty one, so a
|
|
@@ -77,22 +130,30 @@ export function bindingItems(data) {
|
|
|
77
130
|
return data.collection === null ? [] : [data.collection];
|
|
78
131
|
case 'collections':
|
|
79
132
|
return data.collections;
|
|
133
|
+
case 'cart':
|
|
134
|
+
return data.cart.lines;
|
|
80
135
|
}
|
|
81
136
|
}
|
|
82
137
|
function asProduct(item) {
|
|
83
138
|
return 'price' in item ? item : undefined;
|
|
84
139
|
}
|
|
140
|
+
function asCatalogItem(item) {
|
|
141
|
+
return 'handle' in item ? item : undefined;
|
|
142
|
+
}
|
|
85
143
|
/**
|
|
86
144
|
* One text field off the current item, already in the buyer's language. A
|
|
87
|
-
* field the item does not carry
|
|
88
|
-
* nothing, and the node that asked for it draws nothing.
|
|
145
|
+
* field the item does not carry (a collection has no vendor, a cart line none
|
|
146
|
+
* of these) reads as nothing, and the node that asked for it draws nothing.
|
|
89
147
|
*/
|
|
90
148
|
export function itemText(item, field) {
|
|
149
|
+
const listed = asCatalogItem(item);
|
|
150
|
+
if (listed === undefined)
|
|
151
|
+
return undefined;
|
|
91
152
|
switch (field) {
|
|
92
153
|
case 'title':
|
|
93
|
-
return
|
|
154
|
+
return listed.title;
|
|
94
155
|
case 'handle':
|
|
95
|
-
return
|
|
156
|
+
return listed.handle;
|
|
96
157
|
case 'vendor':
|
|
97
158
|
return asProduct(item)?.vendor;
|
|
98
159
|
case 'product_type':
|
package/dist/display.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display.js","sourceRoot":"","sources":["../src/display.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB
|
|
1
|
+
{"version":3,"file":"display.js","sourceRoot":"","sources":["../src/display.ts"],"names":[],"mappings":"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"}
|