@shoplix-ai/sdui-schema 1.3.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/display.d.ts CHANGED
@@ -1,12 +1,14 @@
1
1
  import { z } from 'zod';
2
2
  /**
3
- * Display-only money: a ready-to-render string plus its currency code.
4
- * Strict by construction — there is no numeric amount to compute with, and
5
- * the charged price always comes from Shopify checkout.
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 declare const displayMoneySchema: z.ZodObject<{
8
9
  formatted: z.ZodString;
9
10
  currencyCode: z.ZodString;
11
+ amount: z.ZodOptional<z.ZodString>;
10
12
  }, z.core.$strict>;
11
13
  export declare const displayImageSchema: z.ZodObject<{
12
14
  url: z.ZodURL;
@@ -36,10 +38,12 @@ export declare const productVariantSchema: z.ZodObject<{
36
38
  price: z.ZodOptional<z.ZodObject<{
37
39
  formatted: z.ZodString;
38
40
  currencyCode: z.ZodString;
41
+ amount: z.ZodOptional<z.ZodString>;
39
42
  }, z.core.$strict>>;
40
43
  compareAtPrice: z.ZodOptional<z.ZodObject<{
41
44
  formatted: z.ZodString;
42
45
  currencyCode: z.ZodString;
46
+ amount: z.ZodOptional<z.ZodString>;
43
47
  }, z.core.$strict>>;
44
48
  }, z.core.$strict>;
45
49
  /**
@@ -61,10 +65,12 @@ export declare const productDisplaySchema: z.ZodObject<{
61
65
  price: z.ZodObject<{
62
66
  formatted: z.ZodString;
63
67
  currencyCode: z.ZodString;
68
+ amount: z.ZodOptional<z.ZodString>;
64
69
  }, z.core.$strict>;
65
70
  compareAtPrice: z.ZodOptional<z.ZodObject<{
66
71
  formatted: z.ZodString;
67
72
  currencyCode: z.ZodString;
73
+ amount: z.ZodOptional<z.ZodString>;
68
74
  }, z.core.$strict>>;
69
75
  available: z.ZodBoolean;
70
76
  images: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -91,10 +97,12 @@ export declare const productDisplaySchema: z.ZodObject<{
91
97
  price: z.ZodOptional<z.ZodObject<{
92
98
  formatted: z.ZodString;
93
99
  currencyCode: z.ZodString;
100
+ amount: z.ZodOptional<z.ZodString>;
94
101
  }, z.core.$strict>>;
95
102
  compareAtPrice: z.ZodOptional<z.ZodObject<{
96
103
  formatted: z.ZodString;
97
104
  currencyCode: z.ZodString;
105
+ amount: z.ZodOptional<z.ZodString>;
98
106
  }, z.core.$strict>>;
99
107
  }, z.core.$strict>>>;
100
108
  }, z.core.$strict>;
@@ -109,12 +117,150 @@ export declare const collectionDisplaySchema: z.ZodObject<{
109
117
  height: z.ZodOptional<z.ZodNumber>;
110
118
  }, z.core.$strict>>;
111
119
  }, z.core.$strict>;
120
+ /** One custom attribute a buyer or a block put on a line or the cart: a key and a value. */
121
+ export declare const cartAttributeSchema: z.ZodObject<{
122
+ key: z.ZodString;
123
+ value: z.ZodString;
124
+ }, z.core.$strict>;
125
+ /**
126
+ * One line of the held cart as Shopify answered it and the Provider formatted
127
+ * it: what the buyer holds, of which product and variant, at what price. The
128
+ * compare-at total and the discount amount are present only where Shopify
129
+ * gave one.
130
+ */
131
+ export declare const cartLineDisplaySchema: z.ZodObject<{
132
+ id: z.ZodString;
133
+ variantId: z.ZodString;
134
+ productId: z.ZodString;
135
+ productTitle: z.ZodString;
136
+ variantTitle: z.ZodString;
137
+ vendor: z.ZodOptional<z.ZodString>;
138
+ selectedOptions: z.ZodArray<z.ZodObject<{
139
+ name: z.ZodString;
140
+ value: z.ZodString;
141
+ }, z.core.$strict>>;
142
+ image: z.ZodOptional<z.ZodObject<{
143
+ url: z.ZodURL;
144
+ altText: z.ZodOptional<z.ZodString>;
145
+ width: z.ZodOptional<z.ZodNumber>;
146
+ height: z.ZodOptional<z.ZodNumber>;
147
+ }, z.core.$strict>>;
148
+ quantity: z.ZodInt;
149
+ unitPrice: z.ZodObject<{
150
+ formatted: z.ZodString;
151
+ currencyCode: z.ZodString;
152
+ amount: z.ZodOptional<z.ZodString>;
153
+ }, z.core.$strict>;
154
+ lineTotal: z.ZodObject<{
155
+ formatted: z.ZodString;
156
+ currencyCode: z.ZodString;
157
+ amount: z.ZodOptional<z.ZodString>;
158
+ }, z.core.$strict>;
159
+ compareAtTotal: z.ZodOptional<z.ZodObject<{
160
+ formatted: z.ZodString;
161
+ currencyCode: z.ZodString;
162
+ amount: z.ZodOptional<z.ZodString>;
163
+ }, z.core.$strict>>;
164
+ discountAmount: z.ZodOptional<z.ZodObject<{
165
+ formatted: z.ZodString;
166
+ currencyCode: z.ZodString;
167
+ amount: z.ZodOptional<z.ZodString>;
168
+ }, z.core.$strict>>;
169
+ attributes: z.ZodArray<z.ZodObject<{
170
+ key: z.ZodString;
171
+ value: z.ZodString;
172
+ }, z.core.$strict>>;
173
+ }, z.core.$strict>;
174
+ export declare const cartDiscountCodeSchema: z.ZodObject<{
175
+ code: z.ZodString;
176
+ applicable: z.ZodBoolean;
177
+ }, z.core.$strict>;
178
+ /**
179
+ * The held cart. The id and the checkout url are absent until Shopify holds
180
+ * the cart, which the first add brings about; a buyer who holds nothing sees
181
+ * zero lines and zero money in the market's currency. The total is Shopify's,
182
+ * with its estimated flag; a code Shopify does not honour stays listed with
183
+ * applicable false.
184
+ */
185
+ export declare const cartDisplaySchema: z.ZodObject<{
186
+ id: z.ZodOptional<z.ZodString>;
187
+ checkoutUrl: z.ZodOptional<z.ZodURL>;
188
+ totalQuantity: z.ZodInt;
189
+ lines: z.ZodArray<z.ZodObject<{
190
+ id: z.ZodString;
191
+ variantId: z.ZodString;
192
+ productId: z.ZodString;
193
+ productTitle: z.ZodString;
194
+ variantTitle: z.ZodString;
195
+ vendor: z.ZodOptional<z.ZodString>;
196
+ selectedOptions: z.ZodArray<z.ZodObject<{
197
+ name: z.ZodString;
198
+ value: z.ZodString;
199
+ }, z.core.$strict>>;
200
+ image: z.ZodOptional<z.ZodObject<{
201
+ url: z.ZodURL;
202
+ altText: z.ZodOptional<z.ZodString>;
203
+ width: z.ZodOptional<z.ZodNumber>;
204
+ height: z.ZodOptional<z.ZodNumber>;
205
+ }, z.core.$strict>>;
206
+ quantity: z.ZodInt;
207
+ unitPrice: z.ZodObject<{
208
+ formatted: z.ZodString;
209
+ currencyCode: z.ZodString;
210
+ amount: z.ZodOptional<z.ZodString>;
211
+ }, z.core.$strict>;
212
+ lineTotal: z.ZodObject<{
213
+ formatted: z.ZodString;
214
+ currencyCode: z.ZodString;
215
+ amount: z.ZodOptional<z.ZodString>;
216
+ }, z.core.$strict>;
217
+ compareAtTotal: z.ZodOptional<z.ZodObject<{
218
+ formatted: z.ZodString;
219
+ currencyCode: z.ZodString;
220
+ amount: z.ZodOptional<z.ZodString>;
221
+ }, z.core.$strict>>;
222
+ discountAmount: z.ZodOptional<z.ZodObject<{
223
+ formatted: z.ZodString;
224
+ currencyCode: z.ZodString;
225
+ amount: z.ZodOptional<z.ZodString>;
226
+ }, z.core.$strict>>;
227
+ attributes: z.ZodArray<z.ZodObject<{
228
+ key: z.ZodString;
229
+ value: z.ZodString;
230
+ }, z.core.$strict>>;
231
+ }, z.core.$strict>>;
232
+ subtotal: z.ZodObject<{
233
+ formatted: z.ZodString;
234
+ currencyCode: z.ZodString;
235
+ amount: z.ZodOptional<z.ZodString>;
236
+ }, z.core.$strict>;
237
+ totalDiscountAmount: z.ZodObject<{
238
+ formatted: z.ZodString;
239
+ currencyCode: z.ZodString;
240
+ amount: z.ZodOptional<z.ZodString>;
241
+ }, z.core.$strict>;
242
+ total: z.ZodObject<{
243
+ formatted: z.ZodString;
244
+ currencyCode: z.ZodString;
245
+ amount: z.ZodOptional<z.ZodString>;
246
+ }, z.core.$strict>;
247
+ totalEstimated: z.ZodBoolean;
248
+ discountCodes: z.ZodArray<z.ZodObject<{
249
+ code: z.ZodString;
250
+ applicable: z.ZodBoolean;
251
+ }, z.core.$strict>>;
252
+ note: z.ZodOptional<z.ZodString>;
253
+ }, z.core.$strict>;
112
254
  export type DisplayMoney = z.infer<typeof displayMoneySchema>;
113
255
  export type DisplayImage = z.infer<typeof displayImageSchema>;
114
256
  export type ProductOption = z.infer<typeof productOptionSchema>;
115
257
  export type ProductVariantDisplay = z.infer<typeof productVariantSchema>;
116
258
  export type ProductDisplay = z.infer<typeof productDisplaySchema>;
117
259
  export type CollectionDisplay = z.infer<typeof collectionDisplaySchema>;
260
+ export type CartAttribute = z.infer<typeof cartAttributeSchema>;
261
+ export type CartLineDisplay = z.infer<typeof cartLineDisplaySchema>;
262
+ export type CartDiscountCode = z.infer<typeof cartDiscountCodeSchema>;
263
+ export type CartDisplay = z.infer<typeof cartDisplaySchema>;
118
264
  /**
119
265
  * What a products Binding resolved to: the page in hand, the collection it
120
266
  * came from, and the cursor that reaches the page after it.
@@ -133,6 +279,8 @@ export type ProductsBindingData = {
133
279
  /**
134
280
  * What one Binding resolves to, by kind. A missing entity is an empty shape,
135
281
  * null or an empty list, so a renderer collapses the block instead of erroring.
282
+ * The cart always resolves: a buyer who holds nothing holds a cart of zero
283
+ * lines, and the blocks decide what an empty cart shows.
136
284
  */
137
285
  export type BindingData = {
138
286
  readonly kind: 'product';
@@ -143,9 +291,17 @@ export type BindingData = {
143
291
  } | {
144
292
  readonly kind: 'collections';
145
293
  readonly collections: readonly CollectionDisplay[];
294
+ } | {
295
+ readonly kind: 'cart';
296
+ readonly cart: CartDisplay;
146
297
  };
147
- /** One entry of what a Binding resolved to: what a repeater draws once per item. */
148
- export type BoundItem = ProductDisplay | CollectionDisplay;
298
+ /**
299
+ * One entry of what a Binding resolved to: what a repeater draws once per
300
+ * item, and what a row's cell receives. A cart line is one so the cart lines
301
+ * block can hand its rows to the host; the Composed vocabulary reads nothing
302
+ * off it.
303
+ */
304
+ export type BoundItem = ProductDisplay | CollectionDisplay | CartLineDisplay;
149
305
  /**
150
306
  * The Binding's items in order, whatever its kind. A single-entity Binding
151
307
  * that resolved to nothing is an empty list, the same as an empty one, so a
@@ -154,8 +310,8 @@ export type BoundItem = ProductDisplay | CollectionDisplay;
154
310
  export declare function bindingItems(data: BindingData | null | undefined): readonly BoundItem[];
155
311
  /**
156
312
  * One text field off the current item, already in the buyer's language. A
157
- * field the item does not carry — a collection has no vendor — reads as
158
- * nothing, and the node that asked for it draws nothing.
313
+ * field the item does not carry (a collection has no vendor, a cart line none
314
+ * of these) reads as nothing, and the node that asked for it draws nothing.
159
315
  */
160
316
  export declare function itemText(item: BoundItem, field: string): string | undefined;
161
317
  export declare function itemImage(item: BoundItem): DisplayImage | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../src/display.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;kBAG7B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;kBAK7B,CAAC;AAEH,iEAAiE;AACjE,eAAO,MAAM,mBAAmB;;;kBAG9B,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;kBAO/B,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAc/B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;kBAKlC,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACzE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;IAC7C,2FAA2F;IAC3F,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAC;IACxC;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAA;CAAE,GACrE,mBAAmB,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAA;CAAE,GAC9E;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,iBAAiB,EAAE,CAAA;CAAE,CAAC;AAEzF,oFAAoF;AACpF,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,iBAAiB,CAAC;AAE3D;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,SAAS,EAAE,CAYvF;AAMD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAe3E;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,CAEnE;AAED,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAElE;AAED,yFAAyF;AACzF,wBAAgB,SAAS,CACvB,IAAI,EAAE,SAAS,GACd;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,cAAc,CAAC,EAAE,YAAY,CAAA;CAAE,GAAG,SAAS,CAMpE"}
1
+ {"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../src/display.ts"],"names":[],"mappings":"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"}
package/dist/display.js CHANGED
@@ -1,13 +1,19 @@
1
1
  import { z } from 'zod';
2
2
  /**
3
- * Display-only money: a ready-to-render string plus its currency code.
4
- * Strict by construction — there is no numeric amount to compute with, and
5
- * the charged price always comes from Shopify checkout.
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(z.strictObject({ name: z.string().min(1), value: z.string().min(1) })),
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 — a collection has no vendor — reads as
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 item.title;
154
+ return listed.title;
94
155
  case 'handle':
95
- return item.handle;
156
+ return listed.handle;
96
157
  case 'vendor':
97
158
  return asProduct(item)?.vendor;
98
159
  case 'product_type':
@@ -1 +1 @@
1
- {"version":3,"file":"display.js","sourceRoot":"","sources":["../src/display.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"display.js","sourceRoot":"","sources":["../src/display.ts"],"names":[],"mappings":"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"}