@hanzo/commerce 7.6.3 → 7.6.4
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/client.ts +6 -62
- package/components/add-to-cart-widget.tsx +6 -0
- package/components/item/product-card.tsx +18 -1
- package/dist/client.d.ts +0 -32
- package/dist/client.js +5 -37
- package/dist/client.js.map +1 -1
- package/dist/components/add-to-cart-widget.js +2 -2
- package/dist/components/add-to-cart-widget.js.map +1 -1
- package/dist/components/item/product-card.js +1 -1
- package/dist/components/item/product-card.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/product-card.test.d.ts +14 -0
- package/dist/product-card.test.js +96 -0
- package/dist/product-card.test.js.map +1 -0
- package/index.ts +0 -2
- package/package.json +5 -5
- package/product-card.test.tsx +104 -0
package/client.ts
CHANGED
|
@@ -25,15 +25,6 @@
|
|
|
25
25
|
* })
|
|
26
26
|
* window.location.href = session.checkoutUrl
|
|
27
27
|
*
|
|
28
|
-
* // Tokenize a card (S2S — no external SDK required)
|
|
29
|
-
* const token = await commerce.tokenizeCard({
|
|
30
|
-
* number: '4242424242424242',
|
|
31
|
-
* expiryMonth: '12',
|
|
32
|
-
* expiryYear: '2027',
|
|
33
|
-
* cvc: '123',
|
|
34
|
-
* name: 'Jane Smith',
|
|
35
|
-
* })
|
|
36
|
-
*
|
|
37
28
|
* // Subscribe
|
|
38
29
|
* const sub = await commerce.subscribe({ planId: 'pro', userId: 'user_xyz' })
|
|
39
30
|
* ```
|
|
@@ -254,28 +245,6 @@ export type CheckoutSessionResponse = {
|
|
|
254
245
|
}
|
|
255
246
|
}
|
|
256
247
|
|
|
257
|
-
// ---------------------------------------------------------------------------
|
|
258
|
-
// Card tokenization (S2S — no provider SDK needed on the frontend)
|
|
259
|
-
// ---------------------------------------------------------------------------
|
|
260
|
-
|
|
261
|
-
export type CardTokenizeRequest = {
|
|
262
|
-
number: string
|
|
263
|
-
expiryMonth: string // "01"–"12"
|
|
264
|
-
expiryYear: string // "2025"–"2099"
|
|
265
|
-
cvc: string
|
|
266
|
-
name?: string
|
|
267
|
-
zip?: string
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
export type CardTokenizeResult = {
|
|
271
|
-
token: string
|
|
272
|
-
brand: string
|
|
273
|
-
last4: string
|
|
274
|
-
expiryMonth: string
|
|
275
|
-
expiryYear: string
|
|
276
|
-
provider: string
|
|
277
|
-
}
|
|
278
|
-
|
|
279
248
|
// ---------------------------------------------------------------------------
|
|
280
249
|
// Payment method types
|
|
281
250
|
// ---------------------------------------------------------------------------
|
|
@@ -560,31 +529,6 @@ export class Commerce {
|
|
|
560
529
|
})
|
|
561
530
|
}
|
|
562
531
|
|
|
563
|
-
// -----------------------------------------------------------------------
|
|
564
|
-
// Card tokenization (S2S — no external SDK required)
|
|
565
|
-
// -----------------------------------------------------------------------
|
|
566
|
-
|
|
567
|
-
/**
|
|
568
|
-
* Tokenize a payment card server-side.
|
|
569
|
-
* No external SDK (Square.js, Stripe.js, etc.) is needed on the frontend.
|
|
570
|
-
* The card data is sent to the Hanzo Commerce API over HTTPS, which
|
|
571
|
-
* tokenizes via the configured payment provider (Stripe).
|
|
572
|
-
*/
|
|
573
|
-
async tokenizeCard(card: CardTokenizeRequest, token?: string): Promise<CardTokenizeResult> {
|
|
574
|
-
return this.request<CardTokenizeResult>('/v1/billing/card/tokenize', {
|
|
575
|
-
method: 'POST',
|
|
576
|
-
body: {
|
|
577
|
-
number: card.number.replace(/\s/g, ''),
|
|
578
|
-
expiry_month: card.expiryMonth,
|
|
579
|
-
expiry_year: card.expiryYear,
|
|
580
|
-
cvc: card.cvc,
|
|
581
|
-
name: card.name,
|
|
582
|
-
zip: card.zip,
|
|
583
|
-
},
|
|
584
|
-
token,
|
|
585
|
-
})
|
|
586
|
-
}
|
|
587
|
-
|
|
588
532
|
// -----------------------------------------------------------------------
|
|
589
533
|
// Payment methods
|
|
590
534
|
// -----------------------------------------------------------------------
|
|
@@ -593,25 +537,25 @@ export class Commerce {
|
|
|
593
537
|
params: {
|
|
594
538
|
customerId: string
|
|
595
539
|
type: PaymentMethodType
|
|
596
|
-
token?: string //
|
|
540
|
+
token?: string // provider nonce (Square Web Payments SDK)
|
|
597
541
|
providerRef?: string
|
|
598
542
|
providerType?: string
|
|
599
543
|
},
|
|
600
544
|
token?: string,
|
|
601
545
|
): Promise<PaymentMethod> {
|
|
602
|
-
return this.request<PaymentMethod>('/v1/billing/
|
|
546
|
+
return this.request<PaymentMethod>('/v1/billing/methods', {
|
|
603
547
|
method: 'POST', body: params, token,
|
|
604
548
|
})
|
|
605
549
|
}
|
|
606
550
|
|
|
607
551
|
async listPaymentMethods(customerId: string, token?: string): Promise<PaymentMethod[]> {
|
|
608
|
-
return this.request<PaymentMethod[]>('/v1/billing/
|
|
552
|
+
return this.request<PaymentMethod[]>('/v1/billing/methods', {
|
|
609
553
|
params: { customerId }, token,
|
|
610
554
|
})
|
|
611
555
|
}
|
|
612
556
|
|
|
613
557
|
async removePaymentMethod(paymentMethodId: string, token?: string): Promise<void> {
|
|
614
|
-
await this.request<void>(`/v1/billing/
|
|
558
|
+
await this.request<void>(`/v1/billing/methods/${paymentMethodId}`, {
|
|
615
559
|
method: 'DELETE', token,
|
|
616
560
|
})
|
|
617
561
|
}
|
|
@@ -770,7 +714,7 @@ export class Commerce {
|
|
|
770
714
|
},
|
|
771
715
|
token?: string,
|
|
772
716
|
): Promise<PaymentMethod> {
|
|
773
|
-
return this.request<PaymentMethod>('/v1/billing/
|
|
717
|
+
return this.request<PaymentMethod>('/v1/billing/methods', {
|
|
774
718
|
method: 'POST',
|
|
775
719
|
body: { customerId: params.customerId, type: 'bank_account', plaidToken: params.plaidToken, bankName: params.bankName, accountType: params.accountType },
|
|
776
720
|
token,
|
|
@@ -781,7 +725,7 @@ export class Commerce {
|
|
|
781
725
|
params: { customerId: string; chain: string; address: string; label?: string },
|
|
782
726
|
token?: string,
|
|
783
727
|
): Promise<PaymentMethod> {
|
|
784
|
-
return this.request<PaymentMethod>('/v1/billing/
|
|
728
|
+
return this.request<PaymentMethod>('/v1/billing/methods', {
|
|
785
729
|
method: 'POST',
|
|
786
730
|
body: { customerId: params.customerId, type: 'crypto', chain: params.chain, address: params.address, label: params.label },
|
|
787
731
|
token,
|
|
@@ -148,6 +148,9 @@ const AddToCartWidget: React.FC<{
|
|
|
148
148
|
</div>
|
|
149
149
|
<Button
|
|
150
150
|
aria-label={'Add another ' + item.title + ' to the cart'}
|
|
151
|
+
itemProp='potentialAction'
|
|
152
|
+
itemScope
|
|
153
|
+
itemType='https://schema.org/AddAction'
|
|
151
154
|
size={ghost || priSmaller ? 'xs' : 'default'}
|
|
152
155
|
|
|
153
156
|
variant={primary || priSmaller ? 'primary' : 'ghost'}
|
|
@@ -168,6 +171,9 @@ const AddToCartWidget: React.FC<{
|
|
|
168
171
|
) : (
|
|
169
172
|
<Button
|
|
170
173
|
aria-label={'Add a ' + item.title + ' to cart'}
|
|
174
|
+
itemProp='potentialAction'
|
|
175
|
+
itemScope
|
|
176
|
+
itemType='https://schema.org/AddAction'
|
|
171
177
|
size={ghost || priSmaller ? 'xs' : 'default'}
|
|
172
178
|
variant={ghost ? 'ghost' : (primary || priSmaller ? 'primary' : 'outline')}
|
|
173
179
|
rounded={ROUNDED_VAL}
|
|
@@ -26,16 +26,33 @@ const ProductCard: React.FC<ProductCardProps> = ({
|
|
|
26
26
|
...props
|
|
27
27
|
}) => (
|
|
28
28
|
<Card
|
|
29
|
+
itemScope
|
|
30
|
+
itemType='https://schema.org/Product'
|
|
29
31
|
className={cn('max-h-[360px] lg:min-w-[200px] max-w-[260px] overflow-hidden', className)}
|
|
30
32
|
{...props}
|
|
31
33
|
>
|
|
34
|
+
{/* Standard schema.org Product microdata. Neutral and analytics-agnostic:
|
|
35
|
+
track.js `annotate`, GA4 Merchant, or any reader picks up the item with
|
|
36
|
+
zero per-app config. Machine values live in <meta> so the visible,
|
|
37
|
+
formatted UI is untouched. */}
|
|
38
|
+
<meta itemProp='name' content={item.title} />
|
|
39
|
+
<meta itemProp='sku' content={item.sku} />
|
|
32
40
|
<CardHeader className='w-full border-b p-6 min-h-[180px] max-h-[240px] relative'>
|
|
33
41
|
<MediaStack media={item} constrainTo={{w: 700, h:700}} clx='p-6' />
|
|
34
42
|
</CardHeader>
|
|
35
43
|
<CardContent className='grid gap-2.5 p-4'>
|
|
36
44
|
<CardTitle className='text-sm sm:text-base flex flex-col justify-start items-center line-clap-3'>
|
|
37
45
|
{item.title.split(', ').map((e, i) => (<p key={i}>{e}</p>))}
|
|
38
|
-
<p
|
|
46
|
+
<p
|
|
47
|
+
className='mt-1 font-semibold'
|
|
48
|
+
itemProp='offers'
|
|
49
|
+
itemScope
|
|
50
|
+
itemType='https://schema.org/Offer'
|
|
51
|
+
>
|
|
52
|
+
<meta itemProp='price' content={String(item.price)} />
|
|
53
|
+
<meta itemProp='priceCurrency' content='USD' />
|
|
54
|
+
{formatCurrencyValue(item.price)}
|
|
55
|
+
</p>
|
|
39
56
|
</CardTitle>
|
|
40
57
|
</CardContent>
|
|
41
58
|
<CardFooter className='p-4 flex flex-row justify-center'>
|
package/dist/client.d.ts
CHANGED
|
@@ -25,15 +25,6 @@
|
|
|
25
25
|
* })
|
|
26
26
|
* window.location.href = session.checkoutUrl
|
|
27
27
|
*
|
|
28
|
-
* // Tokenize a card (S2S — no external SDK required)
|
|
29
|
-
* const token = await commerce.tokenizeCard({
|
|
30
|
-
* number: '4242424242424242',
|
|
31
|
-
* expiryMonth: '12',
|
|
32
|
-
* expiryYear: '2027',
|
|
33
|
-
* cvc: '123',
|
|
34
|
-
* name: 'Jane Smith',
|
|
35
|
-
* })
|
|
36
|
-
*
|
|
37
28
|
* // Subscribe
|
|
38
29
|
* const sub = await commerce.subscribe({ planId: 'pro', userId: 'user_xyz' })
|
|
39
30
|
* ```
|
|
@@ -222,22 +213,6 @@ export type CheckoutSessionResponse = {
|
|
|
222
213
|
discountCents: number;
|
|
223
214
|
};
|
|
224
215
|
};
|
|
225
|
-
export type CardTokenizeRequest = {
|
|
226
|
-
number: string;
|
|
227
|
-
expiryMonth: string;
|
|
228
|
-
expiryYear: string;
|
|
229
|
-
cvc: string;
|
|
230
|
-
name?: string;
|
|
231
|
-
zip?: string;
|
|
232
|
-
};
|
|
233
|
-
export type CardTokenizeResult = {
|
|
234
|
-
token: string;
|
|
235
|
-
brand: string;
|
|
236
|
-
last4: string;
|
|
237
|
-
expiryMonth: string;
|
|
238
|
-
expiryYear: string;
|
|
239
|
-
provider: string;
|
|
240
|
-
};
|
|
241
216
|
export type PaymentMethodType = 'card' | 'bank_account' | 'balance' | 'crypto' | 'wire';
|
|
242
217
|
export type PaymentMethod = {
|
|
243
218
|
id: string;
|
|
@@ -351,13 +326,6 @@ export declare class Commerce {
|
|
|
351
326
|
* Supports coupons, referral tracking, and multiple currencies.
|
|
352
327
|
*/
|
|
353
328
|
createCheckoutSession(params: CheckoutSessionRequest, token?: string): Promise<CheckoutSessionResponse>;
|
|
354
|
-
/**
|
|
355
|
-
* Tokenize a payment card server-side.
|
|
356
|
-
* No external SDK (Square.js, Stripe.js, etc.) is needed on the frontend.
|
|
357
|
-
* The card data is sent to the Hanzo Commerce API over HTTPS, which
|
|
358
|
-
* tokenizes via the configured payment provider (Stripe).
|
|
359
|
-
*/
|
|
360
|
-
tokenizeCard(card: CardTokenizeRequest, token?: string): Promise<CardTokenizeResult>;
|
|
361
329
|
addPaymentMethod(params: {
|
|
362
330
|
customerId: string;
|
|
363
331
|
type: PaymentMethodType;
|
package/dist/client.js
CHANGED
|
@@ -25,15 +25,6 @@
|
|
|
25
25
|
* })
|
|
26
26
|
* window.location.href = session.checkoutUrl
|
|
27
27
|
*
|
|
28
|
-
* // Tokenize a card (S2S — no external SDK required)
|
|
29
|
-
* const token = await commerce.tokenizeCard({
|
|
30
|
-
* number: '4242424242424242',
|
|
31
|
-
* expiryMonth: '12',
|
|
32
|
-
* expiryYear: '2027',
|
|
33
|
-
* cvc: '123',
|
|
34
|
-
* name: 'Jane Smith',
|
|
35
|
-
* })
|
|
36
|
-
*
|
|
37
28
|
* // Subscribe
|
|
38
29
|
* const sub = await commerce.subscribe({ planId: 'pro', userId: 'user_xyz' })
|
|
39
30
|
* ```
|
|
@@ -201,43 +192,20 @@ export class Commerce {
|
|
|
201
192
|
});
|
|
202
193
|
}
|
|
203
194
|
// -----------------------------------------------------------------------
|
|
204
|
-
// Card tokenization (S2S — no external SDK required)
|
|
205
|
-
// -----------------------------------------------------------------------
|
|
206
|
-
/**
|
|
207
|
-
* Tokenize a payment card server-side.
|
|
208
|
-
* No external SDK (Square.js, Stripe.js, etc.) is needed on the frontend.
|
|
209
|
-
* The card data is sent to the Hanzo Commerce API over HTTPS, which
|
|
210
|
-
* tokenizes via the configured payment provider (Stripe).
|
|
211
|
-
*/
|
|
212
|
-
async tokenizeCard(card, token) {
|
|
213
|
-
return this.request('/v1/billing/card/tokenize', {
|
|
214
|
-
method: 'POST',
|
|
215
|
-
body: {
|
|
216
|
-
number: card.number.replace(/\s/g, ''),
|
|
217
|
-
expiry_month: card.expiryMonth,
|
|
218
|
-
expiry_year: card.expiryYear,
|
|
219
|
-
cvc: card.cvc,
|
|
220
|
-
name: card.name,
|
|
221
|
-
zip: card.zip,
|
|
222
|
-
},
|
|
223
|
-
token,
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
// -----------------------------------------------------------------------
|
|
227
195
|
// Payment methods
|
|
228
196
|
// -----------------------------------------------------------------------
|
|
229
197
|
async addPaymentMethod(params, token) {
|
|
230
|
-
return this.request('/v1/billing/
|
|
198
|
+
return this.request('/v1/billing/methods', {
|
|
231
199
|
method: 'POST', body: params, token,
|
|
232
200
|
});
|
|
233
201
|
}
|
|
234
202
|
async listPaymentMethods(customerId, token) {
|
|
235
|
-
return this.request('/v1/billing/
|
|
203
|
+
return this.request('/v1/billing/methods', {
|
|
236
204
|
params: { customerId }, token,
|
|
237
205
|
});
|
|
238
206
|
}
|
|
239
207
|
async removePaymentMethod(paymentMethodId, token) {
|
|
240
|
-
await this.request(`/v1/billing/
|
|
208
|
+
await this.request(`/v1/billing/methods/${paymentMethodId}`, {
|
|
241
209
|
method: 'DELETE', token,
|
|
242
210
|
});
|
|
243
211
|
}
|
|
@@ -366,14 +334,14 @@ export class Commerce {
|
|
|
366
334
|
* plaidToken from Plaid Link or Square bank OAuth.
|
|
367
335
|
*/
|
|
368
336
|
async addBankAccount(params, token) {
|
|
369
|
-
return this.request('/v1/billing/
|
|
337
|
+
return this.request('/v1/billing/methods', {
|
|
370
338
|
method: 'POST',
|
|
371
339
|
body: { customerId: params.customerId, type: 'bank_account', plaidToken: params.plaidToken, bankName: params.bankName, accountType: params.accountType },
|
|
372
340
|
token,
|
|
373
341
|
});
|
|
374
342
|
}
|
|
375
343
|
async addCryptoWallet(params, token) {
|
|
376
|
-
return this.request('/v1/billing/
|
|
344
|
+
return this.request('/v1/billing/methods', {
|
|
377
345
|
method: 'POST',
|
|
378
346
|
body: { customerId: params.customerId, type: 'crypto', chain: params.chain, address: params.address, label: params.label },
|
|
379
347
|
token,
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../client.ts"],"names":[],"mappings":"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"}
|
|
@@ -78,8 +78,8 @@ const AddToCartWidget = observer(({ item, variant = 'primary', disabled = false,
|
|
|
78
78
|
return (item.isInCart ? (_jsxs("div", { className: cn('flex flex-row items-stretch justify-between ',
|
|
79
79
|
// should match 'xs' and 'default' button heights
|
|
80
80
|
(ghost || priSmaller ? 'h-8' : 'h-9'), ROUNDED_CLX, (primary || priSmaller ? 'bg-primary' : 'bg-transparent'), (outline ? 'border border-muted' : ''), className), children: [_jsx(Button, { "aria-label": 'Remove a ' + item.title + ' from the cart', size: ghost || priSmaller ? 'xs' : 'default', variant: primary || priSmaller ? 'primary' : 'ghost', rounded: ghost ? 'full' : ROUNDED_VAL, className: cn('lg:min-w-0 lg:px-2 grow justify-start group', (ghost || priSmaller ? 'px-1' : 'px-2'), (outline ? 'hover:bg-transparent' : ''), buttonClx, 'h-auto self-stretch' // must be smaller than normal
|
|
81
|
-
), onClick: dec, children: (item.quantity > 1) ? (_jsx(Icons.minus, { className: iconClx, "aria-hidden": 'true' })) : (_jsx(Icons.trash, { className: iconClx, "aria-hidden": 'true' })) }, 'left'), _jsxs("div", { className: cn('grow-0 shrink-0 flex items-center cursor-default xs:px-2', priSmaller || ghost ? 'text-xs' : 'text-sm', digitClx), children: [item.quantity, ghost ? '' : ' in Bag'] }), _jsx(Button, { "aria-label": 'Add another ' + item.title + ' to the cart', size: ghost || priSmaller ? 'xs' : 'default', variant: primary || priSmaller ? 'primary' : 'ghost', rounded: ghost ? 'full' : ROUNDED_VAL, className: cn('lg:min-w-0 lg:px-2 grow justify-end group', (ghost || priSmaller ? 'px-1' : 'px-2'), (outline ? 'hover:bg-transparent' : ''), buttonClx, 'h-auto self-stretch' // must be smaller than normal
|
|
82
|
-
), onClick: inc, children: _jsx(Icons.plus, { className: iconClx, "aria-hidden": 'true' }) }, 'right')] })) : (_jsxs(Button, { "aria-label": 'Add a ' + item.title + ' to cart', size: ghost || priSmaller ? 'xs' : 'default', variant: ghost ? 'ghost' : (primary || priSmaller ? 'primary' : 'outline'), rounded: ROUNDED_VAL, className: cn(buttonClx, className), onClick: inc, children: [_jsx("span", { className: 'm1-1', children: "Add" }), _jsx(Icons.plus, { className: 'h-5 w-5 ml-1', "aria-hidden": 'true' })] })));
|
|
81
|
+
), onClick: dec, children: (item.quantity > 1) ? (_jsx(Icons.minus, { className: iconClx, "aria-hidden": 'true' })) : (_jsx(Icons.trash, { className: iconClx, "aria-hidden": 'true' })) }, 'left'), _jsxs("div", { className: cn('grow-0 shrink-0 flex items-center cursor-default xs:px-2', priSmaller || ghost ? 'text-xs' : 'text-sm', digitClx), children: [item.quantity, ghost ? '' : ' in Bag'] }), _jsx(Button, { "aria-label": 'Add another ' + item.title + ' to the cart', itemProp: 'potentialAction', itemScope: true, itemType: 'https://schema.org/AddAction', size: ghost || priSmaller ? 'xs' : 'default', variant: primary || priSmaller ? 'primary' : 'ghost', rounded: ghost ? 'full' : ROUNDED_VAL, className: cn('lg:min-w-0 lg:px-2 grow justify-end group', (ghost || priSmaller ? 'px-1' : 'px-2'), (outline ? 'hover:bg-transparent' : ''), buttonClx, 'h-auto self-stretch' // must be smaller than normal
|
|
82
|
+
), onClick: inc, children: _jsx(Icons.plus, { className: iconClx, "aria-hidden": 'true' }) }, 'right')] })) : (_jsxs(Button, { "aria-label": 'Add a ' + item.title + ' to cart', itemProp: 'potentialAction', itemScope: true, itemType: 'https://schema.org/AddAction', size: ghost || priSmaller ? 'xs' : 'default', variant: ghost ? 'ghost' : (primary || priSmaller ? 'primary' : 'outline'), rounded: ROUNDED_VAL, className: cn(buttonClx, className), onClick: inc, children: [_jsx("span", { className: 'm1-1', children: "Add" }), _jsx(Icons.plus, { className: 'h-5 w-5 ml-1', "aria-hidden": 'true' })] })));
|
|
83
83
|
});
|
|
84
84
|
export default AddToCartWidget;
|
|
85
85
|
//# sourceMappingURL=add-to-cart-widget.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-to-cart-widget.js","sourceRoot":"","sources":["../../components/add-to-cart-widget.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"add-to-cart-widget.js","sourceRoot":"","sources":["../../components/add-to-cart-widget.tsx"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,6 @@ import { Card, CardContent, CardFooter, CardHeader, CardTitle, MediaStack } from
|
|
|
4
4
|
import { cn } from '@hanzo/ui/util';
|
|
5
5
|
import { formatCurrencyValue } from '../../util';
|
|
6
6
|
import AddToCartWidget from '../add-to-cart-widget';
|
|
7
|
-
const ProductCard = ({ item, className, ...props }) => (_jsxs(Card, { className: cn('max-h-[360px] lg:min-w-[200px] max-w-[260px] overflow-hidden', className), ...props, children: [_jsx(CardHeader, { className: 'w-full border-b p-6 min-h-[180px] max-h-[240px] relative', children: _jsx(MediaStack, { media: item, constrainTo: { w: 700, h: 700 }, clx: 'p-6' }) }), _jsx(CardContent, { className: 'grid gap-2.5 p-4', children: _jsxs(CardTitle, { className: 'text-sm sm:text-base flex flex-col justify-start items-center line-clap-3', children: [item.title.split(', ').map((e, i) => (_jsx("p", { children: e }, i))),
|
|
7
|
+
const ProductCard = ({ item, className, ...props }) => (_jsxs(Card, { itemScope: true, itemType: 'https://schema.org/Product', className: cn('max-h-[360px] lg:min-w-[200px] max-w-[260px] overflow-hidden', className), ...props, children: [_jsx("meta", { itemProp: 'name', content: item.title }), _jsx("meta", { itemProp: 'sku', content: item.sku }), _jsx(CardHeader, { className: 'w-full border-b p-6 min-h-[180px] max-h-[240px] relative', children: _jsx(MediaStack, { media: item, constrainTo: { w: 700, h: 700 }, clx: 'p-6' }) }), _jsx(CardContent, { className: 'grid gap-2.5 p-4', children: _jsxs(CardTitle, { className: 'text-sm sm:text-base flex flex-col justify-start items-center line-clap-3', children: [item.title.split(', ').map((e, i) => (_jsx("p", { children: e }, i))), _jsxs("p", { className: 'mt-1 font-semibold', itemProp: 'offers', itemScope: true, itemType: 'https://schema.org/Offer', children: [_jsx("meta", { itemProp: 'price', content: String(item.price) }), _jsx("meta", { itemProp: 'priceCurrency', content: 'USD' }), formatCurrencyValue(item.price)] })] }) }), _jsx(CardFooter, { className: 'p-4 flex flex-row justify-center', children: _jsx(AddToCartWidget, { item: item }) })] }));
|
|
8
8
|
export default ProductCard;
|
|
9
9
|
//# sourceMappingURL=product-card.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"product-card.js","sourceRoot":"","sources":["../../../components/item/product-card.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EACL,IAAI,EACJ,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACX,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAEnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAGhD,OAAO,eAAe,MAAM,uBAAuB,CAAA;AAMnD,MAAM,WAAW,GAA+B,CAAC,EAC/C,IAAI,EACJ,SAAS,EACT,GAAG,KAAK,EACT,EAAE,EAAE,CAAC,CACJ,MAAC,IAAI,IACH,SAAS,EAAE,EAAE,CAAC,8DAA8D,EAAE,SAAS,CAAC,KACpF,KAAK,
|
|
1
|
+
{"version":3,"file":"product-card.js","sourceRoot":"","sources":["../../../components/item/product-card.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EACL,IAAI,EACJ,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACX,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAEnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAGhD,OAAO,eAAe,MAAM,uBAAuB,CAAA;AAMnD,MAAM,WAAW,GAA+B,CAAC,EAC/C,IAAI,EACJ,SAAS,EACT,GAAG,KAAK,EACT,EAAE,EAAE,CAAC,CACJ,MAAC,IAAI,IACH,SAAS,QACT,QAAQ,EAAC,4BAA4B,EACrC,SAAS,EAAE,EAAE,CAAC,8DAA8D,EAAE,SAAS,CAAC,KACpF,KAAK,aAMT,eAAM,QAAQ,EAAC,MAAM,EAAC,OAAO,EAAE,IAAI,CAAC,KAAK,GAAI,EAC7C,eAAM,QAAQ,EAAC,KAAK,EAAC,OAAO,EAAE,IAAI,CAAC,GAAG,GAAI,EAC1C,KAAC,UAAU,IAAC,SAAS,EAAC,0DAA0D,YAC9E,KAAC,UAAU,IAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,EAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAC,GAAG,EAAC,EAAE,GAAG,EAAC,KAAK,GAAG,GACxD,EACb,KAAC,WAAW,IAAC,SAAS,EAAC,kBAAkB,YACvC,MAAC,SAAS,IAAC,SAAS,EAAC,2EAA2E,aAC7F,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,sBAAY,CAAC,IAAL,CAAC,CAAS,CAAC,CAAC,EAC3D,aACE,SAAS,EAAC,oBAAoB,EAC9B,QAAQ,EAAC,QAAQ,EACjB,SAAS,QACT,QAAQ,EAAC,0BAA0B,aAEnC,eAAM,QAAQ,EAAC,OAAO,EAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAI,EACtD,eAAM,QAAQ,EAAC,eAAe,EAAC,OAAO,EAAC,KAAK,GAAG,EAC9C,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAC9B,IACM,GACA,EACd,KAAC,UAAU,IAAC,SAAS,EAAC,kCAAkC,YACtD,KAAC,eAAe,IAAC,IAAI,EAAE,IAAI,GAAI,GACpB,IACR,CACR,CAAA;AAGD,eAAe,WAAW,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,6 @@ export type { StandaloneServiceOptions as ServiceOptions } from './service/impls
|
|
|
4
4
|
export { useSyncSkuParamWithCurrentItem, getFacetValuesMutator, formatCurrencyValue, ProductMediaAccessor, LineItemRef } from './util';
|
|
5
5
|
export * from './util/selection-ui-specifiers';
|
|
6
6
|
export { Commerce, CommerceApiError, hanzoCommerce } from './client';
|
|
7
|
-
export type { CommerceClientConfig, Balance, TierResponse, Transaction, Subscription, Plan, Payment, UsageRecord, Coupon, CouponType, CouponValidateResult, Discount, CheckoutItem, CheckoutSessionRequest, CheckoutSessionResponse,
|
|
7
|
+
export type { CommerceClientConfig, Balance, TierResponse, Transaction, Subscription, Plan, Payment, UsageRecord, Coupon, CouponType, CouponValidateResult, Discount, CheckoutItem, CheckoutSessionRequest, CheckoutSessionResponse, PaymentMethod, PaymentMethodType, Referral, Referrer, Affiliate, CreditGrant, } from './client';
|
|
8
8
|
export { Metering, DEFAULT_COMMERCE_URL, identityFromHeaders, HEADER_USER_ID, HEADER_ORG_ID, } from './metering';
|
|
9
9
|
export type { MeteringConfig, MeteringIdentity, UsageEvent, RecordResult, AuthDecision, } from './metering';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAG5B,OAAO,EACL,8BAA8B,EAC9B,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,WAAW,EACZ,MAAM,QAAQ,CAAA;AAEf,cAAc,gCAAgC,CAAA;AAE9C,sBAAsB;AACtB,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAG5B,OAAO,EACL,8BAA8B,EAC9B,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,WAAW,EACZ,MAAM,QAAQ,CAAA;AAEf,cAAc,gCAAgC,CAAA;AAE9C,sBAAsB;AACtB,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAyBpE,4EAA4E;AAC5E,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,aAAa,GACd,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Annotation contract test for @hanzo/commerce ProductCard + AddToCartWidget.
|
|
3
|
+
*
|
|
4
|
+
* Proves the zero-app-config promise: rendering <ProductCard item={...}/> emits
|
|
5
|
+
* NEUTRAL, STANDARD self-description — schema.org Product/Offer microdata plus a
|
|
6
|
+
* schema.org AddAction on the add control — with no analytics code in the app.
|
|
7
|
+
* A tracker (track.js `annotate`, GA4 Merchant, any reader) captures the item
|
|
8
|
+
* and the add-to-cart intent from the DOM alone.
|
|
9
|
+
*
|
|
10
|
+
* Self-contained, mirroring metering.test.ts: no test-runner dependency. Run with:
|
|
11
|
+
*
|
|
12
|
+
* npx -y tsx pkgs/commerce/product-card.test.tsx
|
|
13
|
+
*/
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Annotation contract test for @hanzo/commerce ProductCard + AddToCartWidget.
|
|
4
|
+
*
|
|
5
|
+
* Proves the zero-app-config promise: rendering <ProductCard item={...}/> emits
|
|
6
|
+
* NEUTRAL, STANDARD self-description — schema.org Product/Offer microdata plus a
|
|
7
|
+
* schema.org AddAction on the add control — with no analytics code in the app.
|
|
8
|
+
* A tracker (track.js `annotate`, GA4 Merchant, any reader) captures the item
|
|
9
|
+
* and the add-to-cart intent from the DOM alone.
|
|
10
|
+
*
|
|
11
|
+
* Self-contained, mirroring metering.test.ts: no test-runner dependency. Run with:
|
|
12
|
+
*
|
|
13
|
+
* npx -y tsx pkgs/commerce/product-card.test.tsx
|
|
14
|
+
*/
|
|
15
|
+
import React from 'react';
|
|
16
|
+
import { renderToStaticMarkup } from 'react-dom/server';
|
|
17
|
+
import ProductCard from './components/item/product-card';
|
|
18
|
+
// ---- tiny assert harness (mirrors metering.test.ts) ----
|
|
19
|
+
let failures = 0;
|
|
20
|
+
let count = 0;
|
|
21
|
+
function test(name, fn) {
|
|
22
|
+
count++;
|
|
23
|
+
try {
|
|
24
|
+
fn();
|
|
25
|
+
console.log(`ok - ${name}`);
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
failures++;
|
|
29
|
+
console.error(`FAIL - ${name}`);
|
|
30
|
+
console.error(err.message);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function ok(cond, msg) {
|
|
34
|
+
if (!cond)
|
|
35
|
+
throw new Error(msg);
|
|
36
|
+
}
|
|
37
|
+
// A minimal LineItem-shaped mock: getters + cart methods, no media (MediaStack
|
|
38
|
+
// renders empty). Enough to drive the microdata the card carries.
|
|
39
|
+
const item = {
|
|
40
|
+
id: 'x1',
|
|
41
|
+
sku: 'LXB-AU-B',
|
|
42
|
+
familyId: 'LXB',
|
|
43
|
+
familyTitle: 'Bar',
|
|
44
|
+
optionLabel: '1oz',
|
|
45
|
+
price: 99.5,
|
|
46
|
+
get title() {
|
|
47
|
+
return 'Gold Bar, 1oz';
|
|
48
|
+
},
|
|
49
|
+
get quantity() {
|
|
50
|
+
return 0;
|
|
51
|
+
},
|
|
52
|
+
get isInCart() {
|
|
53
|
+
return false;
|
|
54
|
+
},
|
|
55
|
+
increment() { },
|
|
56
|
+
decrement() { },
|
|
57
|
+
};
|
|
58
|
+
const html = renderToStaticMarkup(_jsx(ProductCard, { item: item }));
|
|
59
|
+
// Attribute names are matched case-insensitively: HTML parsing and setAttribute
|
|
60
|
+
// both lowercase attribute names in the HTML namespace, so React's camelCase SSR
|
|
61
|
+
// serialization (itemType="…") becomes itemtype in the live DOM that annotate
|
|
62
|
+
// queries. The DOM-capture contract is proven end-to-end in track.js's tests.
|
|
63
|
+
const H = html.toLowerCase();
|
|
64
|
+
const has = (needle) => H.includes(needle.toLowerCase());
|
|
65
|
+
test('card is a schema.org Product', () => {
|
|
66
|
+
ok(has('itemtype="https://schema.org/Product"'), 'Product itemtype present');
|
|
67
|
+
ok(has('data-slot="card"'), 'shadcn data-slot preserved');
|
|
68
|
+
});
|
|
69
|
+
test('product name is machine-readable', () => {
|
|
70
|
+
ok(has('itemprop="name"'), 'name itemprop present');
|
|
71
|
+
ok(has('content="Gold Bar, 1oz"'), 'name value present');
|
|
72
|
+
});
|
|
73
|
+
test('product sku is machine-readable', () => {
|
|
74
|
+
ok(has('itemprop="sku"'), 'sku itemprop present');
|
|
75
|
+
ok(has('content="LXB-AU-B"'), 'sku value present');
|
|
76
|
+
});
|
|
77
|
+
test('price is a schema.org Offer with currency', () => {
|
|
78
|
+
ok(has('itemtype="https://schema.org/Offer"'), 'Offer itemtype present');
|
|
79
|
+
ok(has('itemprop="price"'), 'price itemprop present');
|
|
80
|
+
ok(has('content="99.5"'), 'raw price value present');
|
|
81
|
+
ok(has('itemprop="priceCurrency"'), 'priceCurrency itemprop present');
|
|
82
|
+
ok(has('content="USD"'), 'currency value present');
|
|
83
|
+
});
|
|
84
|
+
test('add control is a schema.org AddAction (maps to GA4 add_to_cart)', () => {
|
|
85
|
+
ok(has('itemtype="https://schema.org/AddAction"'), 'AddAction itemtype present');
|
|
86
|
+
ok(has('itemprop="potentialAction"'), 'action linked to the Product');
|
|
87
|
+
});
|
|
88
|
+
// summary
|
|
89
|
+
setTimeout(() => {
|
|
90
|
+
if (failures > 0) {
|
|
91
|
+
console.error(`\n${failures}/${count} tests FAILED`);
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
console.log(`\nall ${count} tests passed`);
|
|
95
|
+
}, 200);
|
|
96
|
+
//# sourceMappingURL=product-card.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"product-card.test.js","sourceRoot":"","sources":["../product-card.test.tsx"],"names":[],"mappings":"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"}
|
package/index.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hanzo/commerce",
|
|
3
|
-
"version": "7.6.
|
|
3
|
+
"version": "7.6.4",
|
|
4
4
|
"description": "e-commerce framework.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"scope": "@hanzo"
|
|
9
9
|
},
|
|
10
10
|
"author": "Hanzo AI, Inc.",
|
|
11
|
-
"license": "
|
|
11
|
+
"license": "MIT",
|
|
12
12
|
"repository": {
|
|
13
13
|
"type": "git",
|
|
14
14
|
"url": "git+https://github.com/hanzoai/ui.git",
|
|
@@ -46,16 +46,16 @@
|
|
|
46
46
|
"zod": "^3.23.8"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
+
"@hanzo/ui": "npm:@hanzo/ui-shadcn@^5",
|
|
49
50
|
"@types/react": "19.2.14",
|
|
50
51
|
"@types/react-dom": "19.2.3",
|
|
51
52
|
"cross-fetch": "^4.1.0",
|
|
52
|
-
"typescript": "^5.9.3"
|
|
53
|
-
"@hanzo/ui": "npm:@hanzo/ui-shadcn@^5.9.1"
|
|
53
|
+
"typescript": "^5.9.3"
|
|
54
54
|
},
|
|
55
55
|
"scripts": {
|
|
56
56
|
"lat": "npm show @hanzo/commerce version",
|
|
57
57
|
"pub": "npm publish",
|
|
58
|
-
"tc": "tsc",
|
|
58
|
+
"tc": "tsc --noEmit",
|
|
59
59
|
"build": "tsc --outDir dist --declaration --emitDeclarationOnly false --module ESNext --esModuleInterop true --skipLibCheck true --sourceMap true"
|
|
60
60
|
}
|
|
61
61
|
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Annotation contract test for @hanzo/commerce ProductCard + AddToCartWidget.
|
|
3
|
+
*
|
|
4
|
+
* Proves the zero-app-config promise: rendering <ProductCard item={...}/> emits
|
|
5
|
+
* NEUTRAL, STANDARD self-description — schema.org Product/Offer microdata plus a
|
|
6
|
+
* schema.org AddAction on the add control — with no analytics code in the app.
|
|
7
|
+
* A tracker (track.js `annotate`, GA4 Merchant, any reader) captures the item
|
|
8
|
+
* and the add-to-cart intent from the DOM alone.
|
|
9
|
+
*
|
|
10
|
+
* Self-contained, mirroring metering.test.ts: no test-runner dependency. Run with:
|
|
11
|
+
*
|
|
12
|
+
* npx -y tsx pkgs/commerce/product-card.test.tsx
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import React from 'react'
|
|
16
|
+
import { renderToStaticMarkup } from 'react-dom/server'
|
|
17
|
+
|
|
18
|
+
import ProductCard from './components/item/product-card'
|
|
19
|
+
|
|
20
|
+
// ---- tiny assert harness (mirrors metering.test.ts) ----
|
|
21
|
+
let failures = 0
|
|
22
|
+
let count = 0
|
|
23
|
+
function test(name: string, fn: () => void) {
|
|
24
|
+
count++
|
|
25
|
+
try {
|
|
26
|
+
fn()
|
|
27
|
+
console.log(`ok - ${name}`)
|
|
28
|
+
} catch (err) {
|
|
29
|
+
failures++
|
|
30
|
+
console.error(`FAIL - ${name}`)
|
|
31
|
+
console.error((err as Error).message)
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function ok(cond: boolean, msg: string) {
|
|
35
|
+
if (!cond) throw new Error(msg)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// A minimal LineItem-shaped mock: getters + cart methods, no media (MediaStack
|
|
39
|
+
// renders empty). Enough to drive the microdata the card carries.
|
|
40
|
+
const item: any = {
|
|
41
|
+
id: 'x1',
|
|
42
|
+
sku: 'LXB-AU-B',
|
|
43
|
+
familyId: 'LXB',
|
|
44
|
+
familyTitle: 'Bar',
|
|
45
|
+
optionLabel: '1oz',
|
|
46
|
+
price: 99.5,
|
|
47
|
+
get title() {
|
|
48
|
+
return 'Gold Bar, 1oz'
|
|
49
|
+
},
|
|
50
|
+
get quantity() {
|
|
51
|
+
return 0
|
|
52
|
+
},
|
|
53
|
+
get isInCart() {
|
|
54
|
+
return false
|
|
55
|
+
},
|
|
56
|
+
increment() {},
|
|
57
|
+
decrement() {},
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const html = renderToStaticMarkup(<ProductCard item={item} />)
|
|
61
|
+
|
|
62
|
+
// Attribute names are matched case-insensitively: HTML parsing and setAttribute
|
|
63
|
+
// both lowercase attribute names in the HTML namespace, so React's camelCase SSR
|
|
64
|
+
// serialization (itemType="…") becomes itemtype in the live DOM that annotate
|
|
65
|
+
// queries. The DOM-capture contract is proven end-to-end in track.js's tests.
|
|
66
|
+
const H = html.toLowerCase()
|
|
67
|
+
const has = (needle: string) => H.includes(needle.toLowerCase())
|
|
68
|
+
|
|
69
|
+
test('card is a schema.org Product', () => {
|
|
70
|
+
ok(has('itemtype="https://schema.org/Product"'), 'Product itemtype present')
|
|
71
|
+
ok(has('data-slot="card"'), 'shadcn data-slot preserved')
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
test('product name is machine-readable', () => {
|
|
75
|
+
ok(has('itemprop="name"'), 'name itemprop present')
|
|
76
|
+
ok(has('content="Gold Bar, 1oz"'), 'name value present')
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
test('product sku is machine-readable', () => {
|
|
80
|
+
ok(has('itemprop="sku"'), 'sku itemprop present')
|
|
81
|
+
ok(has('content="LXB-AU-B"'), 'sku value present')
|
|
82
|
+
})
|
|
83
|
+
|
|
84
|
+
test('price is a schema.org Offer with currency', () => {
|
|
85
|
+
ok(has('itemtype="https://schema.org/Offer"'), 'Offer itemtype present')
|
|
86
|
+
ok(has('itemprop="price"'), 'price itemprop present')
|
|
87
|
+
ok(has('content="99.5"'), 'raw price value present')
|
|
88
|
+
ok(has('itemprop="priceCurrency"'), 'priceCurrency itemprop present')
|
|
89
|
+
ok(has('content="USD"'), 'currency value present')
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
test('add control is a schema.org AddAction (maps to GA4 add_to_cart)', () => {
|
|
93
|
+
ok(has('itemtype="https://schema.org/AddAction"'), 'AddAction itemtype present')
|
|
94
|
+
ok(has('itemprop="potentialAction"'), 'action linked to the Product')
|
|
95
|
+
})
|
|
96
|
+
|
|
97
|
+
// summary
|
|
98
|
+
setTimeout(() => {
|
|
99
|
+
if (failures > 0) {
|
|
100
|
+
console.error(`\n${failures}/${count} tests FAILED`)
|
|
101
|
+
process.exit(1)
|
|
102
|
+
}
|
|
103
|
+
console.log(`\nall ${count} tests passed`)
|
|
104
|
+
}, 200)
|