@fayz-ai/sdk 0.6.7 → 0.8.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/README.md +2 -0
- package/dist/{chunk-RCX43OHW.cjs → chunk-3UTEZ2QL.cjs} +77 -60
- package/dist/chunk-3UTEZ2QL.cjs.map +1 -0
- package/dist/{chunk-5J5U54ON.js → chunk-HK5FEKDG.js} +26 -17
- package/dist/chunk-HK5FEKDG.js.map +1 -0
- package/dist/{chunk-2RUJSGT6.cjs → chunk-LYK5TDPK.cjs} +26 -17
- package/dist/chunk-LYK5TDPK.cjs.map +1 -0
- package/dist/{chunk-6JDIFOJG.js → chunk-PRCW5CVJ.js} +77 -60
- package/dist/chunk-PRCW5CVJ.js.map +1 -0
- package/dist/index.cjs +8 -8
- package/dist/index.js +2 -2
- package/dist/release-channels.cjs +5 -5
- package/dist/release-channels.js +1 -1
- package/dist/shop.cjs +3 -3
- package/dist/shop.d.ts +146 -1
- package/dist/shop.d.ts.map +1 -1
- package/dist/shop.js +1 -1
- package/package.json +4 -1
- package/src/client.test.ts +2 -2
- package/src/release-channels.json +24 -15
- package/src/shop.test.ts +3 -3
- package/src/shop.ts +90 -64
- package/dist/chunk-2RUJSGT6.cjs.map +0 -1
- package/dist/chunk-5J5U54ON.js.map +0 -1
- package/dist/chunk-6JDIFOJG.js.map +0 -1
- package/dist/chunk-RCX43OHW.cjs.map +0 -1
package/src/shop.ts
CHANGED
|
@@ -464,20 +464,24 @@ export function createFayzShopProvider(options: FayzShopProviderOptions) {
|
|
|
464
464
|
return {
|
|
465
465
|
async listProducts(options?: FayzShopListProductsOptions) {
|
|
466
466
|
const query = tenantQuery()
|
|
467
|
-
query.set('select', '*,images:
|
|
467
|
+
query.set('select', '*,images:plg_shop_product_images(*),category:plg_shop_categories(name)')
|
|
468
468
|
if (options?.status) query.set('status', `eq.${options.status}`)
|
|
469
469
|
if (options?.slug) query.set('slug', `eq.${options.slug}`)
|
|
470
470
|
if (options?.search) query.set('name', `ilike.*${options.search}*`)
|
|
471
471
|
query.set('order', `${options?.orderBy ?? 'sort_order'}.${options?.order ?? 'asc'}`)
|
|
472
472
|
if (options?.limit) query.set('limit', String(options.limit))
|
|
473
473
|
if (options?.offset) query.set('offset', String(options.offset))
|
|
474
|
-
const products = (await request<ProductRow[]>('
|
|
474
|
+
const products = (await request<ProductRow[]>('plg_shop_products', { query })).map((row) => rowToProduct(row, productMetadataOverlay))
|
|
475
475
|
return options?.categoryId ? products.filter((product) => product.categoryId === options.categoryId) : products
|
|
476
476
|
},
|
|
477
477
|
async getProduct(id: string) {
|
|
478
|
+
// Cart lines can carry non-uuid ids (mock catalog, or a cart persisted in
|
|
479
|
+
// an earlier mock-mode session). PostgREST would 400 on `id=eq.p-05`
|
|
480
|
+
// (invalid uuid), so treat any non-uuid id as "not found" instead.
|
|
481
|
+
if (!asUuid(id)) return null
|
|
478
482
|
const query = singleById(id)
|
|
479
|
-
query.set('select', '*,images:
|
|
480
|
-
const rows = await request<ProductRow[]>('
|
|
483
|
+
query.set('select', '*,images:plg_shop_product_images(*),category:plg_shop_categories(name)')
|
|
484
|
+
const rows = await request<ProductRow[]>('plg_shop_products', { query })
|
|
481
485
|
return rows[0] ? rowToProduct(rows[0], productMetadataOverlay) : null
|
|
482
486
|
},
|
|
483
487
|
async createProduct() {
|
|
@@ -499,14 +503,14 @@ export function createFayzShopProvider(options: FayzShopProviderOptions) {
|
|
|
499
503
|
const productQuery = tenantQuery()
|
|
500
504
|
productQuery.set('select', 'metadata')
|
|
501
505
|
productQuery.set('order', 'sort_order.asc')
|
|
502
|
-
const products = await request<ProductRow[]>('
|
|
506
|
+
const products = await request<ProductRow[]>('plg_shop_products', { query: productQuery })
|
|
503
507
|
const storeCategories = deriveStoreCategories(products, storeId)
|
|
504
508
|
if (storeCategories.length > 0) return storeCategories
|
|
505
509
|
|
|
506
510
|
const query = new URLSearchParams()
|
|
507
511
|
query.set('select', '*')
|
|
508
512
|
query.set('order', 'sort_order.asc')
|
|
509
|
-
return (await request<CategoryRow[]>('
|
|
513
|
+
return (await request<CategoryRow[]>('plg_shop_categories', { query })).map(rowToCategory)
|
|
510
514
|
},
|
|
511
515
|
async createCategory() {
|
|
512
516
|
throw new FayzShopError('Category writes require the Fayz admin/broker API.', 501)
|
|
@@ -519,7 +523,7 @@ export function createFayzShopProvider(options: FayzShopProviderOptions) {
|
|
|
519
523
|
},
|
|
520
524
|
async listOrders(options?: FayzShopListOrdersOptions) {
|
|
521
525
|
const query = tenantQuery()
|
|
522
|
-
query.set('select', '*,items:
|
|
526
|
+
query.set('select', '*,items:plg_shop_order_items(*)')
|
|
523
527
|
if (options?.status) query.set('status', `eq.${options.status}`)
|
|
524
528
|
if (options?.financialStatus) query.set('financial_status', `eq.${options.financialStatus}`)
|
|
525
529
|
if (options?.fulfillmentStatus) query.set('fulfillment_status', `eq.${options.fulfillmentStatus}`)
|
|
@@ -529,13 +533,42 @@ export function createFayzShopProvider(options: FayzShopProviderOptions) {
|
|
|
529
533
|
query.set('order', 'created_at.desc')
|
|
530
534
|
if (options?.limit) query.set('limit', String(options.limit))
|
|
531
535
|
if (options?.offset) query.set('offset', String(options.offset))
|
|
532
|
-
return (await request<OrderRow[]>('
|
|
536
|
+
return (await request<OrderRow[]>('plg_shop_orders', { query })).map(rowToOrder)
|
|
533
537
|
},
|
|
534
538
|
async getOrder(id: string) {
|
|
535
539
|
const query = singleById(id)
|
|
536
|
-
query.set('select', '*,items:
|
|
537
|
-
|
|
538
|
-
|
|
540
|
+
query.set('select', '*,items:plg_shop_order_items(*)')
|
|
541
|
+
// Anon storefronts have no table grant at all — the direct read throws
|
|
542
|
+
// (401) rather than returning empty, so it must not short-circuit the
|
|
543
|
+
// RPC fallback below.
|
|
544
|
+
let rows: OrderRow[] = []
|
|
545
|
+
try {
|
|
546
|
+
rows = await request<OrderRow[]>('plg_shop_orders', { query })
|
|
547
|
+
} catch {
|
|
548
|
+
/* fall through to shop_get_order */
|
|
549
|
+
}
|
|
550
|
+
if (rows[0]) return rowToOrder(rows[0])
|
|
551
|
+
// Anon storefronts can't SELECT plg_shop_orders (RLS); the order uuid acts
|
|
552
|
+
// as the read capability through the whitelisted RPC.
|
|
553
|
+
try {
|
|
554
|
+
const row = await request<OrderRow | null>('rpc/shop_get_order', {
|
|
555
|
+
method: 'POST',
|
|
556
|
+
body: JSON.stringify({ p_order_id: id }),
|
|
557
|
+
})
|
|
558
|
+
return row ? rowToOrder(row) : null
|
|
559
|
+
} catch {
|
|
560
|
+
return null
|
|
561
|
+
}
|
|
562
|
+
},
|
|
563
|
+
async confirmPayment(id: string, reference?: string) {
|
|
564
|
+
// Mock/dev payment seam: anon has no UPDATE grant on plg_shop_orders,
|
|
565
|
+
// so the pending->paid transition goes through the whitelisted RPC
|
|
566
|
+
// (order uuid = capability, same contract as shop_get_order).
|
|
567
|
+
const row = await request<OrderRow | null>('rpc/shop_confirm_payment', {
|
|
568
|
+
method: 'POST',
|
|
569
|
+
body: JSON.stringify({ p_order_id: id, p_reference: reference ?? null }),
|
|
570
|
+
})
|
|
571
|
+
return row ? rowToOrder(row) : null
|
|
539
572
|
},
|
|
540
573
|
async createOrder(input: {
|
|
541
574
|
customerId?: string
|
|
@@ -552,7 +585,7 @@ export function createFayzShopProvider(options: FayzShopProviderOptions) {
|
|
|
552
585
|
const discountTotal = input.discountTotal ?? 0
|
|
553
586
|
const shippingTotal = input.shippingTotal ?? 0
|
|
554
587
|
const total = Math.round((subtotal - discountTotal + shippingTotal) * 100) / 100
|
|
555
|
-
const [order] = await request<OrderRow[]>('
|
|
588
|
+
const [order] = await request<OrderRow[]>('plg_shop_orders', {
|
|
556
589
|
method: 'POST',
|
|
557
590
|
body: JSON.stringify({
|
|
558
591
|
tenant_id: storeId,
|
|
@@ -573,7 +606,7 @@ export function createFayzShopProvider(options: FayzShopProviderOptions) {
|
|
|
573
606
|
})
|
|
574
607
|
if (!order) throw new FayzShopError('Order insert did not return a row.', 500)
|
|
575
608
|
if (input.items.length) {
|
|
576
|
-
await request<OrderItemRow[]>('
|
|
609
|
+
await request<OrderItemRow[]>('plg_shop_order_items', {
|
|
577
610
|
method: 'POST',
|
|
578
611
|
body: JSON.stringify(input.items.map((item) => ({
|
|
579
612
|
order_id: order.id,
|
|
@@ -590,7 +623,7 @@ export function createFayzShopProvider(options: FayzShopProviderOptions) {
|
|
|
590
623
|
return this.getOrder(order.id)
|
|
591
624
|
},
|
|
592
625
|
async updateOrder(id: string, input: Parameters<typeof updateOrderPayload>[0]) {
|
|
593
|
-
await request<OrderRow[]>('
|
|
626
|
+
await request<OrderRow[]>('plg_shop_orders', {
|
|
594
627
|
method: 'PATCH',
|
|
595
628
|
query: singleById(id),
|
|
596
629
|
body: JSON.stringify(updateOrderPayload(input)),
|
|
@@ -607,50 +640,30 @@ export function createFayzShopProvider(options: FayzShopProviderOptions) {
|
|
|
607
640
|
shippingTotal?: number
|
|
608
641
|
items: Array<{ productId: string; quantity: number; optionsLabel?: string }>
|
|
609
642
|
}) {
|
|
610
|
-
// Trusted placement
|
|
611
|
-
//
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
const ts = nowIso()
|
|
631
|
-
const valid = !!discount && discount.status === 'active' && discount.startsAt <= ts
|
|
632
|
-
&& (!discount.endsAt || discount.endsAt >= ts)
|
|
633
|
-
&& (discount.usageLimit == null || discount.timesUsed < discount.usageLimit)
|
|
634
|
-
if (valid && discount) {
|
|
635
|
-
appliedCode = discount.code ?? undefined
|
|
636
|
-
if (discount.type === 'percentage') discountTotal = Math.round(subtotal * discount.value) / 100
|
|
637
|
-
else if (discount.type === 'fixed_amount') discountTotal = Math.min(discount.value, subtotal)
|
|
638
|
-
else if (discount.type === 'free_shipping') shippingTotal = 0
|
|
639
|
-
}
|
|
640
|
-
}
|
|
641
|
-
discountTotal = Math.round(Math.min(Math.max(discountTotal, 0), subtotal) * 100) / 100
|
|
642
|
-
|
|
643
|
-
return this.createOrder({
|
|
644
|
-
customerId: input.customerId,
|
|
645
|
-
customerName: input.customer?.name,
|
|
646
|
-
customerEmail: input.customer?.email,
|
|
647
|
-
currency: input.currency,
|
|
648
|
-
notes: input.notes,
|
|
649
|
-
discountCode: appliedCode,
|
|
650
|
-
discountTotal,
|
|
651
|
-
shippingTotal,
|
|
652
|
-
items: orderItems,
|
|
643
|
+
// Trusted placement: the shop_place_order SECURITY DEFINER RPC re-reads
|
|
644
|
+
// prices, validates discount/stock and writes order+items atomically.
|
|
645
|
+
// Direct INSERTs are blocked for anon by RLS on the shared FayzApi.
|
|
646
|
+
const orderId = await request<string>('rpc/shop_place_order', {
|
|
647
|
+
method: 'POST',
|
|
648
|
+
body: JSON.stringify({
|
|
649
|
+
p_tenant_id: input.tenantId ?? storeId,
|
|
650
|
+
p_items: input.items.map((line) => ({
|
|
651
|
+
product_id: line.productId,
|
|
652
|
+
quantity: line.quantity,
|
|
653
|
+
options_label: line.optionsLabel ?? null,
|
|
654
|
+
})),
|
|
655
|
+
p_customer_id: asUuid(input.customerId ?? undefined),
|
|
656
|
+
p_customer_name: input.customer?.name ?? null,
|
|
657
|
+
p_customer_email: input.customer?.email ?? null,
|
|
658
|
+
p_currency: input.currency ?? 'BRL',
|
|
659
|
+
p_discount_code: input.discountCode ?? null,
|
|
660
|
+
p_shipping_total: input.shippingTotal ?? 0,
|
|
661
|
+
p_notes: input.notes ?? null,
|
|
662
|
+
}),
|
|
653
663
|
})
|
|
664
|
+
const order = await this.getOrder(orderId)
|
|
665
|
+
if (!order) throw new FayzShopError('Order was placed but could not be read back.', 500)
|
|
666
|
+
return order
|
|
654
667
|
},
|
|
655
668
|
async listCustomers(options?: FayzShopListCustomersOptions) {
|
|
656
669
|
const query = tenantQuery()
|
|
@@ -659,14 +672,27 @@ export function createFayzShopProvider(options: FayzShopProviderOptions) {
|
|
|
659
672
|
if (options?.search) query.set('or', `(first_name.ilike.*${options.search}*,last_name.ilike.*${options.search}*,email.ilike.*${options.search}*)`)
|
|
660
673
|
if (options?.limit) query.set('limit', String(options.limit))
|
|
661
674
|
if (options?.offset) query.set('offset', String(options.offset))
|
|
662
|
-
return (await request<CustomerRow[]>('
|
|
675
|
+
return (await request<CustomerRow[]>('plg_shop_customers', { query })).map(rowToCustomer)
|
|
663
676
|
},
|
|
664
677
|
async getCustomer(id: string) {
|
|
665
|
-
const rows = await request<CustomerRow[]>('
|
|
678
|
+
const rows = await request<CustomerRow[]>('plg_shop_customers', { query: singleById(id) })
|
|
666
679
|
return rows[0] ? rowToCustomer(rows[0]) : null
|
|
667
680
|
},
|
|
681
|
+
async resolveCustomer(input: { email: string; name?: string }) {
|
|
682
|
+
const row = await request<CustomerRow | CustomerRow[]>('rpc/shop_resolve_customer', {
|
|
683
|
+
method: 'POST',
|
|
684
|
+
body: JSON.stringify({
|
|
685
|
+
p_tenant_id: storeId,
|
|
686
|
+
p_email: input.email,
|
|
687
|
+
p_name: input.name ?? null,
|
|
688
|
+
}),
|
|
689
|
+
})
|
|
690
|
+
const customer = Array.isArray(row) ? row[0] : row
|
|
691
|
+
if (!customer) throw new FayzShopError('shop_resolve_customer returned no row.', 500)
|
|
692
|
+
return rowToCustomer(customer)
|
|
693
|
+
},
|
|
668
694
|
async createCustomer(input: { firstName: string; lastName?: string; email?: string; phone?: string; notes?: string }) {
|
|
669
|
-
const [customer] = await request<CustomerRow[]>('
|
|
695
|
+
const [customer] = await request<CustomerRow[]>('plg_shop_customers', {
|
|
670
696
|
method: 'POST',
|
|
671
697
|
body: JSON.stringify({
|
|
672
698
|
tenant_id: storeId,
|
|
@@ -687,7 +713,7 @@ export function createFayzShopProvider(options: FayzShopProviderOptions) {
|
|
|
687
713
|
if (input.email !== undefined) updates.email = input.email
|
|
688
714
|
if (input.phone !== undefined) updates.phone = input.phone
|
|
689
715
|
if (input.notes !== undefined) updates.notes = input.notes
|
|
690
|
-
const [customer] = await request<CustomerRow[]>('
|
|
716
|
+
const [customer] = await request<CustomerRow[]>('plg_shop_customers', {
|
|
691
717
|
method: 'PATCH',
|
|
692
718
|
query: singleById(id),
|
|
693
719
|
body: JSON.stringify(updates),
|
|
@@ -696,7 +722,7 @@ export function createFayzShopProvider(options: FayzShopProviderOptions) {
|
|
|
696
722
|
return rowToCustomer(customer)
|
|
697
723
|
},
|
|
698
724
|
async deleteCustomer(id: string) {
|
|
699
|
-
await request<unknown>('
|
|
725
|
+
await request<unknown>('plg_shop_customers', { method: 'DELETE', query: singleById(id) })
|
|
700
726
|
},
|
|
701
727
|
async listDiscounts(options?: FayzShopListDiscountsOptions) {
|
|
702
728
|
const query = tenantQuery()
|
|
@@ -707,10 +733,10 @@ export function createFayzShopProvider(options: FayzShopProviderOptions) {
|
|
|
707
733
|
if (options?.search) query.set('title', `ilike.*${options.search}*`)
|
|
708
734
|
if (options?.limit) query.set('limit', String(options.limit))
|
|
709
735
|
if (options?.offset) query.set('offset', String(options.offset))
|
|
710
|
-
return (await request<DiscountRow[]>('
|
|
736
|
+
return (await request<DiscountRow[]>('plg_shop_discounts', { query })).map(rowToDiscount)
|
|
711
737
|
},
|
|
712
738
|
async getDiscount(id: string) {
|
|
713
|
-
const rows = await request<DiscountRow[]>('
|
|
739
|
+
const rows = await request<DiscountRow[]>('plg_shop_discounts', { query: singleById(id) })
|
|
714
740
|
return rows[0] ? rowToDiscount(rows[0]) : null
|
|
715
741
|
},
|
|
716
742
|
async createDiscount() {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/release-channels.json","../src/release-channels.ts"],"names":[],"mappings":";;;AAAA,IAAA,wBAAA,GAAA;AAAA,EACE,QAAA,EAAY;AAAA,IACV,MAAA,EAAU;AAAA,MACR,cAAA,EAAgB,QAAA;AAAA,MAChB,eAAA,EAAiB,QAAA;AAAA,MACjB,eAAA,EAAiB,QAAA;AAAA,MACjB,aAAA,EAAe,QAAA;AAAA,MACf,eAAA,EAAiB,QAAA;AAAA,MACjB,eAAA,EAAiB,QAAA;AAAA,MACjB,qBAAA,EAAuB,QAAA;AAAA,MACvB,iBAAA,EAAmB,QAAA;AAAA,MACnB,kBAAA,EAAoB,QAAA;AAAA,MACpB,aAAA,EAAe,QAAA;AAAA,MACf,wBAAA,EAA0B,QAAA;AAAA,MAC1B,6BAAA,EAA+B,QAAA;AAAA,MAC/B,+BAAA,EAAiC,QAAA;AAAA,MACjC,yBAAA,EAA2B,QAAA;AAAA,MAC3B,qBAAA,EAAuB,QAAA;AAAA,MACvB,2BAAA,EAA6B,QAAA;AAAA,MAC7B,2BAAA,EAA6B,QAAA;AAAA,MAC7B,uBAAA,EAAyB,QAAA;AAAA,MACzB,2BAAA,EAA6B,QAAA;AAAA,MAC7B,2BAAA,EAA6B,QAAA;AAAA,MAC7B,sBAAA,EAAwB,QAAA;AAAA,MACxB,wBAAA,EAA0B,QAAA;AAAA,MAC1B,yBAAA,EAA2B,QAAA;AAAA,MAC3B,4BAAA,EAA8B,QAAA;AAAA,MAC9B,sBAAA,EAAwB,QAAA;AAAA,MACxB,uBAAA,EAAyB,QAAA;AAAA,MACzB,wBAAA,EAA0B,QAAA;AAAA,MAC1B,uBAAA,EAAyB;AAAA,KAC3B;AAAA,IACA,MAAA,EAAU;AAAA,MACR,cAAA,EAAgB,QAAA;AAAA,MAChB,eAAA,EAAiB,QAAA;AAAA,MACjB,eAAA,EAAiB,QAAA;AAAA,MACjB,aAAA,EAAe,QAAA;AAAA,MACf,eAAA,EAAiB,QAAA;AAAA,MACjB,eAAA,EAAiB,QAAA;AAAA,MACjB,qBAAA,EAAuB,QAAA;AAAA,MACvB,iBAAA,EAAmB,QAAA;AAAA,MACnB,kBAAA,EAAoB,QAAA;AAAA,MACpB,aAAA,EAAe,QAAA;AAAA,MACf,wBAAA,EAA0B,QAAA;AAAA,MAC1B,6BAAA,EAA+B,QAAA;AAAA,MAC/B,+BAAA,EAAiC,QAAA;AAAA,MACjC,yBAAA,EAA2B,QAAA;AAAA,MAC3B,qBAAA,EAAuB,QAAA;AAAA,MACvB,2BAAA,EAA6B,QAAA;AAAA,MAC7B,2BAAA,EAA6B,QAAA;AAAA,MAC7B,uBAAA,EAAyB,QAAA;AAAA,MACzB,2BAAA,EAA6B,QAAA;AAAA,MAC7B,2BAAA,EAA6B,QAAA;AAAA,MAC7B,sBAAA,EAAwB,QAAA;AAAA,MACxB,wBAAA,EAA0B,QAAA;AAAA,MAC1B,yBAAA,EAA2B,QAAA;AAAA,MAC3B,4BAAA,EAA8B,QAAA;AAAA,MAC9B,sBAAA,EAAwB,QAAA;AAAA,MACxB,uBAAA,EAAyB,QAAA;AAAA,MACzB,wBAAA,EAA0B,QAAA;AAAA,MAC1B,uBAAA,EAAyB;AAAA,KAC3B;AAAA,IACA,OAAA,EAAW;AAAA,MACT,cAAA,EAAgB,QAAA;AAAA,MAChB,eAAA,EAAiB,QAAA;AAAA,MACjB,eAAA,EAAiB,QAAA;AAAA,MACjB,aAAA,EAAe,QAAA;AAAA,MACf,eAAA,EAAiB,QAAA;AAAA,MACjB,eAAA,EAAiB,QAAA;AAAA,MACjB,qBAAA,EAAuB,QAAA;AAAA,MACvB,iBAAA,EAAmB,QAAA;AAAA,MACnB,kBAAA,EAAoB,QAAA;AAAA,MACpB,aAAA,EAAe,QAAA;AAAA,MACf,wBAAA,EAA0B,QAAA;AAAA,MAC1B,6BAAA,EAA+B,QAAA;AAAA,MAC/B,+BAAA,EAAiC,QAAA;AAAA,MACjC,yBAAA,EAA2B,QAAA;AAAA,MAC3B,qBAAA,EAAuB,QAAA;AAAA,MACvB,2BAAA,EAA6B,QAAA;AAAA,MAC7B,2BAAA,EAA6B,QAAA;AAAA,MAC7B,uBAAA,EAAyB,QAAA;AAAA,MACzB,2BAAA,EAA6B,QAAA;AAAA,MAC7B,2BAAA,EAA6B,QAAA;AAAA,MAC7B,sBAAA,EAAwB,QAAA;AAAA,MACxB,wBAAA,EAA0B,QAAA;AAAA,MAC1B,yBAAA,EAA2B,QAAA;AAAA,MAC3B,4BAAA,EAA8B,QAAA;AAAA,MAC9B,sBAAA,EAAwB,QAAA;AAAA,MACxB,uBAAA,EAAyB,QAAA;AAAA,MACzB,wBAAA,EAA0B,QAAA;AAAA,MAC1B,uBAAA,EAAyB;AAAA;AAC3B;AAEJ,CAAA;;;ACpFA,IAAM,yBAAyB,wBAAA,CAAgB,QAAA;AAE/C,SAAS,gBAAgB,OAAA,EAAoD;AAC3E,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,QAAA,EAAU,EAAE,GAAG,sBAAA,CAAuB,OAAO,CAAA;AAAE,GACjD;AACF;AAEO,IAAM,sBAAA,GAA4E;AAAA,EACvF,MAAA,EAAQ,gBAAgB,QAAQ,CAAA;AAAA,EAChC,MAAA,EAAQ,gBAAgB,QAAQ,CAAA;AAAA,EAChC,OAAA,EAAS,gBAAgB,SAAS;AACpC;AAEO,SAAS,0BAAA,CAA2B,UAA8B,QAAA,EAAiC;AACxG,EAAA,OAAO,uBAAuB,OAAO,CAAA;AACvC;AAEO,SAAS,8BAAA,CAA+B,UAA8B,QAAA,EAAkC;AAC7G,EAAA,OAAO,EAAE,GAAG,0BAAA,CAA2B,OAAO,EAAE,QAAA,EAAS;AAC3D;AAEO,SAAS,yBAAA,CAA0B,WAAA,EAAqB,OAAA,GAA8B,QAAA,EAAkB;AAC7G,EAAA,MAAM,OAAA,GAAU,0BAAA,CAA2B,OAAO,CAAA,CAAE,SAAS,WAAW,CAAA;AAExE,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,uCAAA,EAA0C,WAAW,CAAA,IAAA,EAAO,OAAO,CAAA,QAAA,CAAU,CAAA;AAAA,EAC/F;AAEA,EAAA,OAAO,OAAA;AACT","file":"chunk-2RUJSGT6.cjs","sourcesContent":["{\n \"channels\": {\n \"stable\": {\n \"@fayz-ai/sdk\": \"^0.6.6\",\n \"@fayz-ai/core\": \"^0.7.0\",\n \"@fayz-ai/auth\": \"^0.7.0\",\n \"@fayz-ai/ui\": \"^0.7.0\",\n \"@fayz-ai/saas\": \"^0.7.0\",\n \"@fayz-ai/shop\": \"^0.7.0\",\n \"@fayz-ai/storefront\": \"^0.7.0\",\n \"@fayz-ai/portal\": \"^0.7.0\",\n \"@fayz-ai/courses\": \"^0.7.0\",\n \"@fayz-ai/db\": \"^0.1.2\",\n \"@fayz-ai/plugin-agenda\": \"^0.2.0\",\n \"@fayz-ai/plugin-automations\": \"^0.2.3\",\n \"@fayz-ai/plugin-conversations\": \"^0.2.4\",\n \"@fayz-ai/plugin-courses\": \"^0.2.3\",\n \"@fayz-ai/plugin-crm\": \"^0.3.0\",\n \"@fayz-ai/plugin-dashboard\": \"^0.1.6\",\n \"@fayz-ai/plugin-financial\": \"^0.2.0\",\n \"@fayz-ai/plugin-forms\": \"^0.2.0\",\n \"@fayz-ai/plugin-inventory\": \"^0.1.7\",\n \"@fayz-ai/plugin-marketing\": \"^0.2.1\",\n \"@fayz-ai/plugin-menu\": \"^0.3.0\",\n \"@fayz-ai/plugin-orders\": \"^0.3.0\",\n \"@fayz-ai/plugin-reports\": \"^0.2.0\",\n \"@fayz-ai/plugin-reputation\": \"^0.2.3\",\n \"@fayz-ai/plugin-shop\": \"^0.2.5\",\n \"@fayz-ai/plugin-sites\": \"^0.2.3\",\n \"@fayz-ai/plugin-tables\": \"^0.3.0\",\n \"@fayz-ai/plugin-tasks\": \"^0.1.7\"\n },\n \"latest\": {\n \"@fayz-ai/sdk\": \"^0.6.6\",\n \"@fayz-ai/core\": \"^0.7.0\",\n \"@fayz-ai/auth\": \"^0.7.0\",\n \"@fayz-ai/ui\": \"^0.7.0\",\n \"@fayz-ai/saas\": \"^0.7.0\",\n \"@fayz-ai/shop\": \"^0.7.0\",\n \"@fayz-ai/storefront\": \"^0.7.0\",\n \"@fayz-ai/portal\": \"^0.7.0\",\n \"@fayz-ai/courses\": \"^0.7.0\",\n \"@fayz-ai/db\": \"^0.1.2\",\n \"@fayz-ai/plugin-agenda\": \"^0.2.0\",\n \"@fayz-ai/plugin-automations\": \"^0.2.3\",\n \"@fayz-ai/plugin-conversations\": \"^0.2.4\",\n \"@fayz-ai/plugin-courses\": \"^0.2.3\",\n \"@fayz-ai/plugin-crm\": \"^0.3.0\",\n \"@fayz-ai/plugin-dashboard\": \"^0.1.6\",\n \"@fayz-ai/plugin-financial\": \"^0.2.0\",\n \"@fayz-ai/plugin-forms\": \"^0.2.0\",\n \"@fayz-ai/plugin-inventory\": \"^0.1.7\",\n \"@fayz-ai/plugin-marketing\": \"^0.2.1\",\n \"@fayz-ai/plugin-menu\": \"^0.3.0\",\n \"@fayz-ai/plugin-orders\": \"^0.3.0\",\n \"@fayz-ai/plugin-reports\": \"^0.2.0\",\n \"@fayz-ai/plugin-reputation\": \"^0.2.3\",\n \"@fayz-ai/plugin-shop\": \"^0.2.5\",\n \"@fayz-ai/plugin-sites\": \"^0.2.3\",\n \"@fayz-ai/plugin-tables\": \"^0.3.0\",\n \"@fayz-ai/plugin-tasks\": \"^0.1.7\"\n },\n \"preview\": {\n \"@fayz-ai/sdk\": \"^0.6.6\",\n \"@fayz-ai/core\": \"^0.7.0\",\n \"@fayz-ai/auth\": \"^0.7.0\",\n \"@fayz-ai/ui\": \"^0.7.0\",\n \"@fayz-ai/saas\": \"^0.7.0\",\n \"@fayz-ai/shop\": \"^0.7.0\",\n \"@fayz-ai/storefront\": \"^0.7.0\",\n \"@fayz-ai/portal\": \"^0.7.0\",\n \"@fayz-ai/courses\": \"^0.7.0\",\n \"@fayz-ai/db\": \"^0.1.2\",\n \"@fayz-ai/plugin-agenda\": \"^0.2.0\",\n \"@fayz-ai/plugin-automations\": \"^0.2.3\",\n \"@fayz-ai/plugin-conversations\": \"^0.2.4\",\n \"@fayz-ai/plugin-courses\": \"^0.2.3\",\n \"@fayz-ai/plugin-crm\": \"^0.3.0\",\n \"@fayz-ai/plugin-dashboard\": \"^0.1.6\",\n \"@fayz-ai/plugin-financial\": \"^0.2.0\",\n \"@fayz-ai/plugin-forms\": \"^0.2.0\",\n \"@fayz-ai/plugin-inventory\": \"^0.1.7\",\n \"@fayz-ai/plugin-marketing\": \"^0.2.1\",\n \"@fayz-ai/plugin-menu\": \"^0.3.0\",\n \"@fayz-ai/plugin-orders\": \"^0.3.0\",\n \"@fayz-ai/plugin-reports\": \"^0.2.0\",\n \"@fayz-ai/plugin-reputation\": \"^0.2.3\",\n \"@fayz-ai/plugin-shop\": \"^0.2.5\",\n \"@fayz-ai/plugin-sites\": \"^0.2.3\",\n \"@fayz-ai/plugin-tables\": \"^0.3.0\",\n \"@fayz-ai/plugin-tasks\": \"^0.1.7\"\n }\n }\n}\n","import releaseChannels from './release-channels.json'\n\nexport type FayzPackageChannel = 'stable' | 'latest' | 'preview'\n\nexport interface FayzPackageVersionSet {\n channel: FayzPackageChannel\n packages: Record<string, string>\n}\n\nconst releaseChannelPackages = releaseChannels.channels as Record<FayzPackageChannel, Record<string, string>>\n\nfunction buildVersionSet(channel: FayzPackageChannel): FayzPackageVersionSet {\n return {\n channel,\n packages: { ...releaseChannelPackages[channel] },\n }\n}\n\nexport const fayzPackageVersionSets: Record<FayzPackageChannel, FayzPackageVersionSet> = {\n stable: buildVersionSet('stable'),\n latest: buildVersionSet('latest'),\n preview: buildVersionSet('preview'),\n}\n\nexport function resolveFayzPackageVersions(channel: FayzPackageChannel = 'stable'): FayzPackageVersionSet {\n return fayzPackageVersionSets[channel]\n}\n\nexport function resolveFayzPackageDependencies(channel: FayzPackageChannel = 'stable'): Record<string, string> {\n return { ...resolveFayzPackageVersions(channel).packages }\n}\n\nexport function resolveFayzPackageVersion(packageName: string, channel: FayzPackageChannel = 'stable'): string {\n const version = resolveFayzPackageVersions(channel).packages[packageName]\n\n if (!version) {\n throw new Error(`No Fayz package version configured for ${packageName} in ${channel} channel`)\n }\n\n return version\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/release-channels.json","../src/release-channels.ts"],"names":[],"mappings":"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","file":"chunk-5J5U54ON.js","sourcesContent":["{\n \"channels\": {\n \"stable\": {\n \"@fayz-ai/sdk\": \"^0.6.6\",\n \"@fayz-ai/core\": \"^0.7.0\",\n \"@fayz-ai/auth\": \"^0.7.0\",\n \"@fayz-ai/ui\": \"^0.7.0\",\n \"@fayz-ai/saas\": \"^0.7.0\",\n \"@fayz-ai/shop\": \"^0.7.0\",\n \"@fayz-ai/storefront\": \"^0.7.0\",\n \"@fayz-ai/portal\": \"^0.7.0\",\n \"@fayz-ai/courses\": \"^0.7.0\",\n \"@fayz-ai/db\": \"^0.1.2\",\n \"@fayz-ai/plugin-agenda\": \"^0.2.0\",\n \"@fayz-ai/plugin-automations\": \"^0.2.3\",\n \"@fayz-ai/plugin-conversations\": \"^0.2.4\",\n \"@fayz-ai/plugin-courses\": \"^0.2.3\",\n \"@fayz-ai/plugin-crm\": \"^0.3.0\",\n \"@fayz-ai/plugin-dashboard\": \"^0.1.6\",\n \"@fayz-ai/plugin-financial\": \"^0.2.0\",\n \"@fayz-ai/plugin-forms\": \"^0.2.0\",\n \"@fayz-ai/plugin-inventory\": \"^0.1.7\",\n \"@fayz-ai/plugin-marketing\": \"^0.2.1\",\n \"@fayz-ai/plugin-menu\": \"^0.3.0\",\n \"@fayz-ai/plugin-orders\": \"^0.3.0\",\n \"@fayz-ai/plugin-reports\": \"^0.2.0\",\n \"@fayz-ai/plugin-reputation\": \"^0.2.3\",\n \"@fayz-ai/plugin-shop\": \"^0.2.5\",\n \"@fayz-ai/plugin-sites\": \"^0.2.3\",\n \"@fayz-ai/plugin-tables\": \"^0.3.0\",\n \"@fayz-ai/plugin-tasks\": \"^0.1.7\"\n },\n \"latest\": {\n \"@fayz-ai/sdk\": \"^0.6.6\",\n \"@fayz-ai/core\": \"^0.7.0\",\n \"@fayz-ai/auth\": \"^0.7.0\",\n \"@fayz-ai/ui\": \"^0.7.0\",\n \"@fayz-ai/saas\": \"^0.7.0\",\n \"@fayz-ai/shop\": \"^0.7.0\",\n \"@fayz-ai/storefront\": \"^0.7.0\",\n \"@fayz-ai/portal\": \"^0.7.0\",\n \"@fayz-ai/courses\": \"^0.7.0\",\n \"@fayz-ai/db\": \"^0.1.2\",\n \"@fayz-ai/plugin-agenda\": \"^0.2.0\",\n \"@fayz-ai/plugin-automations\": \"^0.2.3\",\n \"@fayz-ai/plugin-conversations\": \"^0.2.4\",\n \"@fayz-ai/plugin-courses\": \"^0.2.3\",\n \"@fayz-ai/plugin-crm\": \"^0.3.0\",\n \"@fayz-ai/plugin-dashboard\": \"^0.1.6\",\n \"@fayz-ai/plugin-financial\": \"^0.2.0\",\n \"@fayz-ai/plugin-forms\": \"^0.2.0\",\n \"@fayz-ai/plugin-inventory\": \"^0.1.7\",\n \"@fayz-ai/plugin-marketing\": \"^0.2.1\",\n \"@fayz-ai/plugin-menu\": \"^0.3.0\",\n \"@fayz-ai/plugin-orders\": \"^0.3.0\",\n \"@fayz-ai/plugin-reports\": \"^0.2.0\",\n \"@fayz-ai/plugin-reputation\": \"^0.2.3\",\n \"@fayz-ai/plugin-shop\": \"^0.2.5\",\n \"@fayz-ai/plugin-sites\": \"^0.2.3\",\n \"@fayz-ai/plugin-tables\": \"^0.3.0\",\n \"@fayz-ai/plugin-tasks\": \"^0.1.7\"\n },\n \"preview\": {\n \"@fayz-ai/sdk\": \"^0.6.6\",\n \"@fayz-ai/core\": \"^0.7.0\",\n \"@fayz-ai/auth\": \"^0.7.0\",\n \"@fayz-ai/ui\": \"^0.7.0\",\n \"@fayz-ai/saas\": \"^0.7.0\",\n \"@fayz-ai/shop\": \"^0.7.0\",\n \"@fayz-ai/storefront\": \"^0.7.0\",\n \"@fayz-ai/portal\": \"^0.7.0\",\n \"@fayz-ai/courses\": \"^0.7.0\",\n \"@fayz-ai/db\": \"^0.1.2\",\n \"@fayz-ai/plugin-agenda\": \"^0.2.0\",\n \"@fayz-ai/plugin-automations\": \"^0.2.3\",\n \"@fayz-ai/plugin-conversations\": \"^0.2.4\",\n \"@fayz-ai/plugin-courses\": \"^0.2.3\",\n \"@fayz-ai/plugin-crm\": \"^0.3.0\",\n \"@fayz-ai/plugin-dashboard\": \"^0.1.6\",\n \"@fayz-ai/plugin-financial\": \"^0.2.0\",\n \"@fayz-ai/plugin-forms\": \"^0.2.0\",\n \"@fayz-ai/plugin-inventory\": \"^0.1.7\",\n \"@fayz-ai/plugin-marketing\": \"^0.2.1\",\n \"@fayz-ai/plugin-menu\": \"^0.3.0\",\n \"@fayz-ai/plugin-orders\": \"^0.3.0\",\n \"@fayz-ai/plugin-reports\": \"^0.2.0\",\n \"@fayz-ai/plugin-reputation\": \"^0.2.3\",\n \"@fayz-ai/plugin-shop\": \"^0.2.5\",\n \"@fayz-ai/plugin-sites\": \"^0.2.3\",\n \"@fayz-ai/plugin-tables\": \"^0.3.0\",\n \"@fayz-ai/plugin-tasks\": \"^0.1.7\"\n }\n }\n}\n","import releaseChannels from './release-channels.json'\n\nexport type FayzPackageChannel = 'stable' | 'latest' | 'preview'\n\nexport interface FayzPackageVersionSet {\n channel: FayzPackageChannel\n packages: Record<string, string>\n}\n\nconst releaseChannelPackages = releaseChannels.channels as Record<FayzPackageChannel, Record<string, string>>\n\nfunction buildVersionSet(channel: FayzPackageChannel): FayzPackageVersionSet {\n return {\n channel,\n packages: { ...releaseChannelPackages[channel] },\n }\n}\n\nexport const fayzPackageVersionSets: Record<FayzPackageChannel, FayzPackageVersionSet> = {\n stable: buildVersionSet('stable'),\n latest: buildVersionSet('latest'),\n preview: buildVersionSet('preview'),\n}\n\nexport function resolveFayzPackageVersions(channel: FayzPackageChannel = 'stable'): FayzPackageVersionSet {\n return fayzPackageVersionSets[channel]\n}\n\nexport function resolveFayzPackageDependencies(channel: FayzPackageChannel = 'stable'): Record<string, string> {\n return { ...resolveFayzPackageVersions(channel).packages }\n}\n\nexport function resolveFayzPackageVersion(packageName: string, channel: FayzPackageChannel = 'stable'): string {\n const version = resolveFayzPackageVersions(channel).packages[packageName]\n\n if (!version) {\n throw new Error(`No Fayz package version configured for ${packageName} in ${channel} channel`)\n }\n\n return version\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/shop.ts"],"names":["options","row"],"mappings":"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","file":"chunk-6JDIFOJG.js","sourcesContent":["export interface FayzShopProviderOptions {\n supabaseUrl?: string\n publishableKey?: string\n storeId?: string\n apiBaseUrl?: string\n projectId?: string\n mode?: 'broker' | 'supabase'\n productMetadata?: FayzShopProductMetadataOverlay[]\n fetcher?: typeof fetch\n}\n\nexport interface FayzShopProductMetadataOverlay {\n sku?: string | null\n slug?: string | null\n metadata: Record<string, unknown>\n}\n\nexport type FayzShopProductStatus = 'draft' | 'active' | 'archived'\nexport type FayzShopOrderStatus = 'open' | 'archived' | 'cancelled'\nexport type FayzShopFinancialStatus = 'pending' | 'paid' | 'partially_paid' | 'refunded' | 'partially_refunded' | 'voided'\nexport type FayzShopFulfillmentStatus = 'unfulfilled' | 'partially_fulfilled' | 'fulfilled'\n\nexport interface FayzShopListProductsOptions {\n status?: FayzShopProductStatus\n categoryId?: string\n search?: string\n slug?: string\n limit?: number\n offset?: number\n orderBy?: 'name' | 'price' | 'created_at' | 'sort_order'\n order?: 'asc' | 'desc'\n}\n\nexport interface FayzShopListOrdersOptions {\n status?: FayzShopOrderStatus\n financialStatus?: FayzShopFinancialStatus\n fulfillmentStatus?: FayzShopFulfillmentStatus\n customerId?: string\n customerEmail?: string\n search?: string\n limit?: number\n offset?: number\n}\n\nexport interface FayzShopListCustomersOptions {\n search?: string\n limit?: number\n offset?: number\n}\n\nexport interface FayzShopListDiscountsOptions {\n status?: string\n type?: string\n search?: string\n limit?: number\n offset?: number\n}\n\ninterface ProductImageRow {\n id: string\n product_id: string\n url: string\n alt_text?: string | null\n sort_order?: number | null\n is_primary?: boolean | null\n created_at?: string | null\n}\n\ninterface ProductRow {\n id: string\n tenant_id: string\n name: string\n slug?: string | null\n description?: string | null\n price?: number | null\n compare_at_price?: number | null\n currency?: string | null\n status?: FayzShopProductStatus | null\n inventory_count?: number | null\n sku?: string | null\n sort_order?: number | null\n metadata?: Record<string, unknown> | null\n images?: ProductImageRow[] | null\n category_id?: string | null\n category?: { name?: string | null } | null\n is_physical?: boolean | null\n weight?: number | null\n weight_unit?: string | null\n created_at?: string | null\n updated_at?: string | null\n}\n\ninterface StoreCategoryMetadata {\n id?: string | null\n name?: string | null\n slug?: string | null\n description?: string | null\n imageUrl?: string | null\n sortOrder?: number | null\n}\n\ninterface CategoryRow {\n id: string\n tenant_id?: string | null\n name: string\n slug?: string | null\n description?: string | null\n parent_id?: string | null\n sort_order?: number | null\n image_url?: string | null\n created_at?: string | null\n}\n\ninterface OrderItemRow {\n id: string\n order_id: string\n product_id?: string | null\n name: string\n sku?: string | null\n quantity?: number | null\n unit_price?: number | null\n total?: number | null\n image_url?: string | null\n}\n\ninterface OrderRow {\n id: string\n tenant_id: string\n order_number?: number | null\n status?: FayzShopOrderStatus | null\n financial_status?: FayzShopFinancialStatus | null\n fulfillment_status?: FayzShopFulfillmentStatus | null\n currency?: string | null\n subtotal?: number | null\n tax_total?: number | null\n discount_total?: number | null\n shipping_total?: number | null\n total?: number | null\n customer_id?: string | null\n customer_name?: string | null\n customer_email?: string | null\n discount_code?: string | null\n notes?: string | null\n items?: OrderItemRow[] | null\n created_at?: string | null\n updated_at?: string | null\n}\n\ninterface CustomerRow {\n id: string\n tenant_id: string\n first_name: string\n last_name?: string | null\n email?: string | null\n phone?: string | null\n notes?: string | null\n orders_count?: number | null\n total_spent?: number | null\n created_at?: string | null\n updated_at?: string | null\n}\n\ninterface DiscountRow {\n id: string\n tenant_id: string\n title: string\n code?: string | null\n type: string\n method?: string | null\n value?: number | null\n usage_limit?: number | null\n once_per_customer?: boolean | null\n starts_at?: string | null\n ends_at?: string | null\n status?: string | null\n times_used?: number | null\n created_at?: string | null\n updated_at?: string | null\n}\n\nexport class FayzShopError extends Error {\n constructor(\n message: string,\n readonly status: number,\n readonly responseBody?: unknown,\n ) {\n super(message)\n this.name = 'FayzShopError'\n }\n}\n\nfunction normalizeBaseUrl(url: string): string {\n return url.replace(/\\/+$/, '')\n}\n\nfunction slugify(name: string): string {\n return name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '')\n}\n\nfunction nowIso(): string {\n return new Date().toISOString()\n}\n\nfunction present<T>(value: T | null | undefined, fallback: T): T {\n return value == null ? fallback : value\n}\n\nfunction productMetadataKey(kind: 'sku' | 'slug', value: string): string {\n return `${kind}:${value.toLowerCase()}`\n}\n\nfunction buildProductMetadataOverlay(overlays: FayzShopProductMetadataOverlay[] | undefined) {\n const map = new Map<string, Record<string, unknown>>()\n for (const overlay of overlays ?? []) {\n if (overlay.sku) map.set(productMetadataKey('sku', overlay.sku), overlay.metadata)\n if (overlay.slug) map.set(productMetadataKey('slug', overlay.slug), overlay.metadata)\n }\n return map\n}\n\nfunction asUuid(value: string | null | undefined): string | null {\n if (!value) return null\n return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value)\n ? value\n : null\n}\n\nfunction rowToImage(row: ProductImageRow) {\n return {\n id: row.id,\n productId: row.product_id,\n url: row.url,\n altText: row.alt_text ?? null,\n sortOrder: row.sort_order ?? 0,\n isPrimary: row.is_primary ?? false,\n createdAt: row.created_at ?? nowIso(),\n }\n}\n\nfunction getProductMetadata(row: ProductRow, overlay?: Map<string, Record<string, unknown>>): Record<string, unknown> {\n const metadata = row.metadata ?? {}\n const bySlug = overlay?.get(productMetadataKey('slug', row.slug ?? slugify(row.name)))\n const bySku = row.sku ? overlay?.get(productMetadataKey('sku', row.sku)) : undefined\n return { ...(bySlug ?? {}), ...(bySku ?? {}), ...metadata }\n}\n\nfunction getStoreCategory(row: ProductRow, overlay?: Map<string, Record<string, unknown>>): StoreCategoryMetadata | null {\n const raw = getProductMetadata(row, overlay).fayzStoreCategory\n return raw && typeof raw === 'object' ? raw as StoreCategoryMetadata : null\n}\n\nfunction rowToProduct(row: ProductRow, overlay?: Map<string, Record<string, unknown>>) {\n const metadata = getProductMetadata(row, overlay)\n const storeCategory = getStoreCategory(row, overlay)\n return {\n id: row.id,\n tenantId: row.tenant_id,\n name: row.name,\n slug: row.slug ?? slugify(row.name),\n description: row.description ?? null,\n price: row.price ?? 0,\n compareAtPrice: row.compare_at_price ?? null,\n currency: row.currency ?? 'BRL',\n status: row.status ?? 'active',\n inventoryCount: row.inventory_count ?? 0,\n sku: row.sku ?? null,\n sortOrder: row.sort_order ?? 0,\n metadata,\n images: Array.isArray(row.images) ? row.images.map(rowToImage) : [],\n categoryId: storeCategory?.id ?? row.category_id ?? null,\n categoryName: storeCategory?.name ?? row.category?.name ?? null,\n isPhysical: row.is_physical ?? true,\n weight: row.weight ?? null,\n weightUnit: row.weight_unit ?? 'kg',\n createdAt: row.created_at ?? nowIso(),\n updatedAt: row.updated_at ?? row.created_at ?? nowIso(),\n }\n}\n\nfunction rowToCategory(row: CategoryRow) {\n return {\n id: row.id,\n tenantId: row.tenant_id ?? 'global',\n name: row.name,\n slug: row.slug ?? slugify(row.name),\n description: row.description ?? null,\n parentId: row.parent_id ?? null,\n sortOrder: row.sort_order ?? 0,\n imageUrl: row.image_url ?? null,\n createdAt: row.created_at ?? nowIso(),\n }\n}\n\nfunction storeCategoryToCategory(category: StoreCategoryMetadata, tenantId: string) {\n const name = category.name ?? 'Category'\n return {\n id: category.id ?? slugify(name),\n tenantId,\n name,\n slug: category.slug ?? slugify(name),\n description: category.description ?? null,\n parentId: null,\n sortOrder: category.sortOrder ?? 0,\n imageUrl: category.imageUrl ?? null,\n createdAt: nowIso(),\n }\n}\n\nfunction deriveStoreCategories(products: ProductRow[], tenantId: string) {\n const categories = new Map<string, ReturnType<typeof storeCategoryToCategory>>()\n for (const product of products) {\n const category = getStoreCategory(product)\n if (!category?.name && !category?.id) continue\n const mapped = storeCategoryToCategory(category, tenantId)\n categories.set(mapped.id, mapped)\n }\n return [...categories.values()].sort((a, b) => a.sortOrder - b.sortOrder || a.name.localeCompare(b.name))\n}\n\nfunction rowToOrder(row: OrderRow) {\n return {\n id: row.id,\n tenantId: row.tenant_id,\n orderNumber: row.order_number ?? 0,\n status: row.status ?? 'open',\n financialStatus: row.financial_status ?? 'pending',\n fulfillmentStatus: row.fulfillment_status ?? 'unfulfilled',\n currency: row.currency ?? 'BRL',\n subtotal: row.subtotal ?? 0,\n taxTotal: row.tax_total ?? 0,\n discountTotal: row.discount_total ?? 0,\n shippingTotal: row.shipping_total ?? 0,\n total: row.total ?? 0,\n customerId: row.customer_id ?? null,\n customerName: row.customer_name ?? null,\n customerEmail: row.customer_email ?? null,\n discountCode: row.discount_code ?? null,\n notes: row.notes ?? null,\n items: Array.isArray(row.items) ? row.items.map(rowToOrderItem) : [],\n createdAt: row.created_at ?? nowIso(),\n updatedAt: row.updated_at ?? row.created_at ?? nowIso(),\n }\n}\n\nfunction rowToOrderItem(row: OrderItemRow) {\n return {\n id: row.id,\n orderId: row.order_id,\n productId: row.product_id ?? null,\n name: row.name,\n sku: row.sku ?? null,\n quantity: row.quantity ?? 0,\n unitPrice: row.unit_price ?? 0,\n total: row.total ?? 0,\n imageUrl: row.image_url ?? null,\n }\n}\n\nfunction rowToCustomer(row: CustomerRow) {\n return {\n id: row.id,\n tenantId: row.tenant_id,\n firstName: row.first_name,\n lastName: row.last_name ?? '',\n email: row.email ?? null,\n phone: row.phone ?? null,\n notes: row.notes ?? null,\n ordersCount: row.orders_count ?? 0,\n totalSpent: row.total_spent ?? 0,\n createdAt: row.created_at ?? nowIso(),\n updatedAt: row.updated_at ?? row.created_at ?? nowIso(),\n }\n}\n\nfunction rowToDiscount(row: DiscountRow) {\n return {\n id: row.id,\n tenantId: row.tenant_id,\n title: row.title,\n code: row.code ?? null,\n type: row.type,\n method: row.method ?? 'code',\n value: row.value ?? 0,\n usageLimit: row.usage_limit ?? null,\n oncePerCustomer: row.once_per_customer ?? false,\n startsAt: row.starts_at ?? nowIso(),\n endsAt: row.ends_at ?? null,\n status: row.status ?? 'active',\n timesUsed: row.times_used ?? 0,\n createdAt: row.created_at ?? nowIso(),\n updatedAt: row.updated_at ?? row.created_at ?? nowIso(),\n }\n}\n\nfunction updateOrderPayload(input: {\n status?: FayzShopOrderStatus\n financialStatus?: FayzShopFinancialStatus\n fulfillmentStatus?: FayzShopFulfillmentStatus\n notes?: string\n}) {\n const updates: Record<string, unknown> = {}\n if (input.status !== undefined) updates.status = input.status\n if (input.financialStatus !== undefined) updates.financial_status = input.financialStatus\n if (input.fulfillmentStatus !== undefined) updates.fulfillment_status = input.fulfillmentStatus\n if (input.notes !== undefined) updates.notes = input.notes\n return updates\n}\n\nexport function createFayzShopProvider(options: FayzShopProviderOptions) {\n if (options.mode === 'broker' || options.apiBaseUrl || options.projectId) {\n return createBrokerShopProvider(options)\n }\n\n if (!options.supabaseUrl || !options.publishableKey || !options.storeId) {\n throw new FayzShopError('Fayz Shop provider requires either broker apiBaseUrl/projectId or legacy supabaseUrl/publishableKey/storeId.', 400)\n }\n\n const baseUrl = `${normalizeBaseUrl(options.supabaseUrl)}/rest/v1`\n const fetcher = options.fetcher ?? fetch\n const key = options.publishableKey\n const storeId = options.storeId\n const productMetadataOverlay = buildProductMetadataOverlay(options.productMetadata)\n\n async function request<T>(table: string, init: RequestInit & { query?: URLSearchParams } = {}): Promise<T> {\n const query = init.query?.toString()\n const response = await fetcher(`${baseUrl}/${table}${query ? `?${query}` : ''}`, {\n ...init,\n headers: {\n apikey: key,\n Authorization: `Bearer ${key}`,\n ...(init.body ? { 'Content-Type': 'application/json', Prefer: 'return=representation' } : {}),\n ...init.headers,\n },\n })\n const text = await response.text()\n let body: unknown\n try {\n body = text ? JSON.parse(text) : undefined\n } catch {\n body = text\n }\n if (!response.ok) {\n const message = typeof body === 'object' && body\n ? String((body as { message?: unknown; error?: unknown }).message ?? (body as { error?: unknown }).error ?? `Fayz Shop request failed with status ${response.status}`)\n : `Fayz Shop request failed with status ${response.status}`\n throw new FayzShopError(message, response.status, body)\n }\n return body as T\n }\n\n const tenantQuery = () => {\n const query = new URLSearchParams()\n query.set('tenant_id', `eq.${storeId}`)\n return query\n }\n\n const singleById = (id: string) => {\n const query = tenantQuery()\n query.set('id', `eq.${id}`)\n query.set('limit', '1')\n return query\n }\n\n return {\n async listProducts(options?: FayzShopListProductsOptions) {\n const query = tenantQuery()\n query.set('select', '*,images:product_images(*),category:categories(name)')\n if (options?.status) query.set('status', `eq.${options.status}`)\n if (options?.slug) query.set('slug', `eq.${options.slug}`)\n if (options?.search) query.set('name', `ilike.*${options.search}*`)\n query.set('order', `${options?.orderBy ?? 'sort_order'}.${options?.order ?? 'asc'}`)\n if (options?.limit) query.set('limit', String(options.limit))\n if (options?.offset) query.set('offset', String(options.offset))\n const products = (await request<ProductRow[]>('products', { query })).map((row) => rowToProduct(row, productMetadataOverlay))\n return options?.categoryId ? products.filter((product) => product.categoryId === options.categoryId) : products\n },\n async getProduct(id: string) {\n const query = singleById(id)\n query.set('select', '*,images:product_images(*),category:categories(name)')\n const rows = await request<ProductRow[]>('products', { query })\n return rows[0] ? rowToProduct(rows[0], productMetadataOverlay) : null\n },\n async createProduct() {\n throw new FayzShopError('Product writes require the Fayz admin/broker API.', 501)\n },\n async updateProduct() {\n throw new FayzShopError('Product writes require the Fayz admin/broker API.', 501)\n },\n async deleteProduct() {\n throw new FayzShopError('Product writes require the Fayz admin/broker API.', 501)\n },\n async uploadProductImage() {\n throw new FayzShopError('Product image uploads require the Fayz admin/broker API.', 501)\n },\n async deleteProductImage() {\n throw new FayzShopError('Product image deletes require the Fayz admin/broker API.', 501)\n },\n async listCategories() {\n const productQuery = tenantQuery()\n productQuery.set('select', 'metadata')\n productQuery.set('order', 'sort_order.asc')\n const products = await request<ProductRow[]>('products', { query: productQuery })\n const storeCategories = deriveStoreCategories(products, storeId)\n if (storeCategories.length > 0) return storeCategories\n\n const query = new URLSearchParams()\n query.set('select', '*')\n query.set('order', 'sort_order.asc')\n return (await request<CategoryRow[]>('categories', { query })).map(rowToCategory)\n },\n async createCategory() {\n throw new FayzShopError('Category writes require the Fayz admin/broker API.', 501)\n },\n async updateCategory() {\n throw new FayzShopError('Category writes require the Fayz admin/broker API.', 501)\n },\n async deleteCategory() {\n throw new FayzShopError('Category deletes require the Fayz admin/broker API.', 501)\n },\n async listOrders(options?: FayzShopListOrdersOptions) {\n const query = tenantQuery()\n query.set('select', '*,items:order_items(*)')\n if (options?.status) query.set('status', `eq.${options.status}`)\n if (options?.financialStatus) query.set('financial_status', `eq.${options.financialStatus}`)\n if (options?.fulfillmentStatus) query.set('fulfillment_status', `eq.${options.fulfillmentStatus}`)\n if (options?.customerId) query.set('customer_id', `eq.${options.customerId}`)\n if (options?.customerEmail) query.set('customer_email', `eq.${options.customerEmail}`)\n if (options?.search) query.set('or', `(customer_name.ilike.*${options.search}*,customer_email.ilike.*${options.search}*)`)\n query.set('order', 'created_at.desc')\n if (options?.limit) query.set('limit', String(options.limit))\n if (options?.offset) query.set('offset', String(options.offset))\n return (await request<OrderRow[]>('orders', { query })).map(rowToOrder)\n },\n async getOrder(id: string) {\n const query = singleById(id)\n query.set('select', '*,items:order_items(*)')\n const rows = await request<OrderRow[]>('orders', { query })\n return rows[0] ? rowToOrder(rows[0]) : null\n },\n async createOrder(input: {\n customerId?: string\n customerName?: string\n customerEmail?: string\n currency?: string\n notes?: string\n discountCode?: string\n discountTotal?: number\n shippingTotal?: number\n items: Array<{ productId?: string; name: string; sku?: string; quantity: number; unitPrice: number; imageUrl?: string }>\n }) {\n const subtotal = input.items.reduce((sum, item) => sum + item.quantity * item.unitPrice, 0)\n const discountTotal = input.discountTotal ?? 0\n const shippingTotal = input.shippingTotal ?? 0\n const total = Math.round((subtotal - discountTotal + shippingTotal) * 100) / 100\n const [order] = await request<OrderRow[]>('orders', {\n method: 'POST',\n body: JSON.stringify({\n tenant_id: storeId,\n customer_id: input.customerId ?? null,\n customer_name: input.customerName ?? null,\n customer_email: input.customerEmail ?? null,\n currency: input.currency ?? 'BRL',\n notes: input.notes ?? null,\n subtotal,\n discount_total: discountTotal,\n shipping_total: shippingTotal,\n discount_code: input.discountCode ?? null,\n total,\n status: 'open',\n financial_status: 'pending',\n fulfillment_status: 'unfulfilled',\n }),\n })\n if (!order) throw new FayzShopError('Order insert did not return a row.', 500)\n if (input.items.length) {\n await request<OrderItemRow[]>('order_items', {\n method: 'POST',\n body: JSON.stringify(input.items.map((item) => ({\n order_id: order.id,\n product_id: asUuid(item.productId),\n name: item.name,\n sku: item.sku ?? null,\n quantity: item.quantity,\n unit_price: item.unitPrice,\n total: item.quantity * item.unitPrice,\n image_url: item.imageUrl ?? null,\n }))),\n })\n }\n return this.getOrder(order.id)\n },\n async updateOrder(id: string, input: Parameters<typeof updateOrderPayload>[0]) {\n await request<OrderRow[]>('orders', {\n method: 'PATCH',\n query: singleById(id),\n body: JSON.stringify(updateOrderPayload(input)),\n })\n return this.getOrder(id)\n },\n async placeOrder(input: {\n tenantId?: string\n customerId?: string\n customer?: { name?: string; email?: string }\n currency?: string\n notes?: string\n discountCode?: string\n shippingTotal?: number\n items: Array<{ productId: string; quantity: number; optionsLabel?: string }>\n }) {\n // Trusted placement over the legacy REST path: re-read prices from the\n // catalog so the browser can never set what it pays.\n const orderItems: Array<{ productId?: string; name: string; sku?: string; quantity: number; unitPrice: number; imageUrl?: string }> = []\n let subtotal = 0\n for (const line of input.items) {\n const product = await this.getProduct(line.productId)\n if (!product || product.status !== 'active') throw new FayzShopError(`Product unavailable: ${line.productId}`, 409)\n if (product.inventoryCount < line.quantity) throw new FayzShopError(`Insufficient stock for ${product.name}`, 409)\n const name = line.optionsLabel ? `${product.name} (${line.optionsLabel})` : product.name\n subtotal += product.price * line.quantity\n orderItems.push({ productId: product.id, name, sku: product.sku ?? undefined, quantity: line.quantity, unitPrice: product.price, imageUrl: product.images[0]?.url })\n }\n subtotal = Math.round(subtotal * 100) / 100\n\n let shippingTotal = Math.max(input.shippingTotal ?? 0, 0)\n let discountTotal = 0\n let appliedCode: string | undefined\n if (input.discountCode) {\n const code = input.discountCode.trim().toLowerCase()\n const discount = (await this.listDiscounts()).find((d) => (d.code ?? '').toLowerCase() === code)\n const ts = nowIso()\n const valid = !!discount && discount.status === 'active' && discount.startsAt <= ts\n && (!discount.endsAt || discount.endsAt >= ts)\n && (discount.usageLimit == null || discount.timesUsed < discount.usageLimit)\n if (valid && discount) {\n appliedCode = discount.code ?? undefined\n if (discount.type === 'percentage') discountTotal = Math.round(subtotal * discount.value) / 100\n else if (discount.type === 'fixed_amount') discountTotal = Math.min(discount.value, subtotal)\n else if (discount.type === 'free_shipping') shippingTotal = 0\n }\n }\n discountTotal = Math.round(Math.min(Math.max(discountTotal, 0), subtotal) * 100) / 100\n\n return this.createOrder({\n customerId: input.customerId,\n customerName: input.customer?.name,\n customerEmail: input.customer?.email,\n currency: input.currency,\n notes: input.notes,\n discountCode: appliedCode,\n discountTotal,\n shippingTotal,\n items: orderItems,\n })\n },\n async listCustomers(options?: FayzShopListCustomersOptions) {\n const query = tenantQuery()\n query.set('select', '*')\n query.set('order', 'first_name.asc')\n if (options?.search) query.set('or', `(first_name.ilike.*${options.search}*,last_name.ilike.*${options.search}*,email.ilike.*${options.search}*)`)\n if (options?.limit) query.set('limit', String(options.limit))\n if (options?.offset) query.set('offset', String(options.offset))\n return (await request<CustomerRow[]>('customers', { query })).map(rowToCustomer)\n },\n async getCustomer(id: string) {\n const rows = await request<CustomerRow[]>('customers', { query: singleById(id) })\n return rows[0] ? rowToCustomer(rows[0]) : null\n },\n async createCustomer(input: { firstName: string; lastName?: string; email?: string; phone?: string; notes?: string }) {\n const [customer] = await request<CustomerRow[]>('customers', {\n method: 'POST',\n body: JSON.stringify({\n tenant_id: storeId,\n first_name: input.firstName,\n last_name: input.lastName ?? '',\n email: input.email ?? null,\n phone: input.phone ?? null,\n notes: input.notes ?? null,\n }),\n })\n if (!customer) throw new FayzShopError('Customer insert did not return a row.', 500)\n return rowToCustomer(customer)\n },\n async updateCustomer(id: string, input: { firstName?: string; lastName?: string; email?: string | null; phone?: string | null; notes?: string | null }) {\n const updates: Record<string, unknown> = {}\n if (input.firstName !== undefined) updates.first_name = input.firstName\n if (input.lastName !== undefined) updates.last_name = input.lastName\n if (input.email !== undefined) updates.email = input.email\n if (input.phone !== undefined) updates.phone = input.phone\n if (input.notes !== undefined) updates.notes = input.notes\n const [customer] = await request<CustomerRow[]>('customers', {\n method: 'PATCH',\n query: singleById(id),\n body: JSON.stringify(updates),\n })\n if (!customer) throw new FayzShopError('Customer update did not return a row.', 500)\n return rowToCustomer(customer)\n },\n async deleteCustomer(id: string) {\n await request<unknown>('customers', { method: 'DELETE', query: singleById(id) })\n },\n async listDiscounts(options?: FayzShopListDiscountsOptions) {\n const query = tenantQuery()\n query.set('select', '*')\n query.set('order', 'created_at.desc')\n if (options?.status) query.set('status', `eq.${options.status}`)\n if (options?.type) query.set('type', `eq.${options.type}`)\n if (options?.search) query.set('title', `ilike.*${options.search}*`)\n if (options?.limit) query.set('limit', String(options.limit))\n if (options?.offset) query.set('offset', String(options.offset))\n return (await request<DiscountRow[]>('discounts', { query })).map(rowToDiscount)\n },\n async getDiscount(id: string) {\n const rows = await request<DiscountRow[]>('discounts', { query: singleById(id) })\n return rows[0] ? rowToDiscount(rows[0]) : null\n },\n async createDiscount() {\n throw new FayzShopError('Discount writes require the Fayz admin/broker API.', 501)\n },\n async updateDiscount() {\n throw new FayzShopError('Discount writes require the Fayz admin/broker API.', 501)\n },\n async deleteDiscount() {\n throw new FayzShopError('Discount deletes require the Fayz admin/broker API.', 501)\n },\n }\n}\n\nfunction appendQuery(url: string, values: Record<string, string | number | undefined>): string {\n const query = new URLSearchParams()\n for (const [key, value] of Object.entries(values)) {\n if (value !== undefined) query.set(key, String(value))\n }\n const serialized = query.toString()\n return serialized ? `${url}?${serialized}` : url\n}\n\nfunction normalizeBrokerProduct(product: Record<string, unknown>, overlay?: Map<string, Record<string, unknown>>) {\n const category = product.category && typeof product.category === 'object'\n ? product.category as Record<string, unknown>\n : null\n const row = {\n id: product.id as string,\n tenant_id: product.tenantId as string,\n name: product.name as string,\n slug: product.slug as string | undefined,\n description: product.description as string | null | undefined,\n price: product.price as number | null | undefined,\n compare_at_price: product.compareAtPrice as number | null | undefined,\n currency: product.currency as string | null | undefined,\n status: product.status as FayzShopProductStatus | null | undefined,\n inventory_count: product.inventoryCount as number | null | undefined,\n sku: product.sku as string | null | undefined,\n sort_order: product.sortOrder as number | null | undefined,\n metadata: product.metadata as Record<string, unknown> | null | undefined,\n images: Array.isArray(product.images)\n ? product.images.map((image): ProductImageRow => {\n const row = image as Record<string, unknown>\n return {\n id: String(row.id ?? ''),\n product_id: String(row.productId ?? product.id ?? ''),\n url: String(row.url ?? ''),\n alt_text: (row.altText as string | null | undefined) ?? null,\n sort_order: (row.sortOrder as number | null | undefined) ?? 0,\n is_primary: (row.isPrimary as boolean | null | undefined) ?? false,\n created_at: (row.createdAt as string | null | undefined) ?? null,\n }\n })\n : [],\n category_id: (product.categoryId ?? category?.id) as string | null | undefined,\n category: category ? { name: category.name as string | null | undefined } : null,\n is_physical: product.isPhysical as boolean | null | undefined,\n weight: product.weight as number | null | undefined,\n weight_unit: product.weightUnit as string | null | undefined,\n created_at: product.createdAt as string | null | undefined,\n updated_at: product.updatedAt as string | null | undefined,\n } satisfies ProductRow\n return rowToProduct(row, overlay)\n}\n\nfunction normalizeBrokerCategory(category: Record<string, unknown>) {\n return {\n id: category.id as string,\n tenantId: (category.tenantId as string | undefined) ?? 'global',\n name: category.name as string,\n slug: (category.slug as string | undefined) ?? slugify(category.name as string),\n description: (category.description as string | null | undefined) ?? null,\n parentId: (category.parentId as string | null | undefined) ?? null,\n sortOrder: (category.sortOrder as number | null | undefined) ?? 0,\n imageUrl: (category.imageUrl as string | null | undefined) ?? null,\n createdAt: (category.createdAt as string | null | undefined) ?? nowIso(),\n }\n}\n\nfunction createBrokerShopProvider(options: FayzShopProviderOptions) {\n if (!options.apiBaseUrl || !options.projectId) {\n throw new FayzShopError('Fayz Shop broker mode requires apiBaseUrl and projectId.', 400)\n }\n\n const fetcher = options.fetcher ?? fetch\n const apiBaseUrl = normalizeBaseUrl(options.apiBaseUrl)\n const projectId = encodeURIComponent(options.projectId)\n const productMetadataOverlay = buildProductMetadataOverlay(options.productMetadata)\n\n async function request<T>(path: string, init: RequestInit = {}): Promise<T> {\n const response = await fetcher(`${apiBaseUrl}/public/projects/${projectId}/shop${path}`, init)\n const text = await response.text()\n let body: unknown\n try {\n body = text ? JSON.parse(text) : undefined\n } catch {\n body = text\n }\n if (!response.ok) {\n const message = typeof body === 'object' && body\n ? String((body as { message?: unknown; error?: unknown }).message ?? (body as { error?: unknown }).error ?? `Fayz Shop broker request failed with status ${response.status}`)\n : `Fayz Shop broker request failed with status ${response.status}`\n throw new FayzShopError(message, response.status, body)\n }\n return body as T\n }\n\n return {\n async listProducts(options?: FayzShopListProductsOptions) {\n if (options?.slug) {\n const product = await this.getProduct(options.slug)\n return product ? [product] : []\n }\n\n const response = await request<{ products?: Array<Record<string, unknown>> }>(appendQuery('/products', {\n status: options?.status,\n categoryId: options?.categoryId,\n search: options?.search,\n limit: options?.limit,\n offset: options?.offset,\n orderBy: options?.orderBy,\n order: options?.order,\n }))\n return (response.products ?? []).map((product) => normalizeBrokerProduct(product, productMetadataOverlay))\n },\n async getProduct(id: string) {\n const response = await request<{ product?: Record<string, unknown> | null }>(`/products/${encodeURIComponent(id)}`)\n return response.product ? normalizeBrokerProduct(response.product, productMetadataOverlay) : null\n },\n async createProduct() {\n throw new FayzShopError('Product writes require the Fayz admin/broker API.', 501)\n },\n async updateProduct() {\n throw new FayzShopError('Product writes require the Fayz admin/broker API.', 501)\n },\n async deleteProduct() {\n throw new FayzShopError('Product writes require the Fayz admin/broker API.', 501)\n },\n async uploadProductImage() {\n throw new FayzShopError('Product image uploads require the Fayz admin/broker API.', 501)\n },\n async deleteProductImage() {\n throw new FayzShopError('Product image deletes require the Fayz admin/broker API.', 501)\n },\n async listCategories() {\n const response = await request<{ categories?: Array<Record<string, unknown>> }>('/categories')\n return (response.categories ?? []).map(normalizeBrokerCategory)\n },\n async createCategory() {\n throw new FayzShopError('Category writes require the Fayz admin/broker API.', 501)\n },\n async updateCategory() {\n throw new FayzShopError('Category writes require the Fayz admin/broker API.', 501)\n },\n async deleteCategory() {\n throw new FayzShopError('Category deletes require the Fayz admin/broker API.', 501)\n },\n async listOrders() {\n throw new FayzShopError('Order reads require the Fayz admin/broker API.', 501)\n },\n async getOrder() {\n throw new FayzShopError('Order reads require the Fayz admin/broker API.', 501)\n },\n async createOrder() {\n throw new FayzShopError('Order writes require the Fayz admin/broker API.', 501)\n },\n async updateOrder() {\n throw new FayzShopError('Order writes require the Fayz admin/broker API.', 501)\n },\n async placeOrder() {\n throw new FayzShopError('Order placement requires the Fayz admin/broker API.', 501)\n },\n async listCustomers() {\n throw new FayzShopError('Customer reads require the Fayz admin/broker API.', 501)\n },\n async getCustomer() {\n throw new FayzShopError('Customer reads require the Fayz admin/broker API.', 501)\n },\n async createCustomer() {\n throw new FayzShopError('Customer writes require the Fayz admin/broker API.', 501)\n },\n async updateCustomer() {\n throw new FayzShopError('Customer writes require the Fayz admin/broker API.', 501)\n },\n async deleteCustomer() {\n throw new FayzShopError('Customer writes require the Fayz admin/broker API.', 501)\n },\n async listDiscounts() {\n throw new FayzShopError('Discount reads require the Fayz admin/broker API.', 501)\n },\n async getDiscount() {\n throw new FayzShopError('Discount reads require the Fayz admin/broker API.', 501)\n },\n async createDiscount() {\n throw new FayzShopError('Discount writes require the Fayz admin/broker API.', 501)\n },\n async updateDiscount() {\n throw new FayzShopError('Discount writes require the Fayz admin/broker API.', 501)\n },\n async deleteDiscount() {\n throw new FayzShopError('Discount deletes require the Fayz admin/broker API.', 501)\n },\n }\n}\n"]}
|