@fayz-ai/shop 0.8.0 → 0.8.2

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.
@@ -1,5 +1,5 @@
1
1
  import type { ShopProvider } from './provider';
2
- import type { Product, ProductImage, Category, Order, ShopCustomer, Discount, CreateProductInput, UpdateProductInput, ListProductsOptions, CreateCategoryInput, UpdateCategoryInput, CreateOrderInput, UpdateOrderInput, ListOrdersOptions, PlaceOrderInput, CreateCustomerInput, UpdateCustomerInput, ListCustomersOptions, ResolveCustomerInput, CreateDiscountInput, UpdateDiscountInput, ListDiscountsOptions } from './types';
2
+ import type { Product, ProductImage, Category, Order, ShopCustomer, Discount, CreateProductInput, UpdateProductInput, ListProductsOptions, CreateCategoryInput, UpdateCategoryInput, CreateOrderInput, UpdateOrderInput, ListOrdersOptions, PlaceOrderInput, CreateCustomerInput, UpdateCustomerInput, ListCustomersOptions, ResolveCustomerInput, CreateDiscountInput, UpdateDiscountInput, ListDiscountsOptions, ShippingZone, CreateShippingZoneInput, UpdateShippingZoneInput } from './types';
3
3
  export declare class SupabaseShopProvider implements ShopProvider {
4
4
  listProducts(options?: ListProductsOptions): Promise<Product[]>;
5
5
  getProduct(id: string): Promise<Product | null>;
@@ -7,6 +7,11 @@ export declare class SupabaseShopProvider implements ShopProvider {
7
7
  updateProduct(id: string, input: UpdateProductInput): Promise<Product>;
8
8
  deleteProduct(id: string): Promise<void>;
9
9
  uploadProductImage(productId: string, file: File): Promise<ProductImage>;
10
+ updateProductImage(imageId: string, input: {
11
+ isPrimary?: boolean;
12
+ sortOrder?: number;
13
+ altText?: string | null;
14
+ }): Promise<ProductImage>;
10
15
  deleteProductImage(imageId: string): Promise<void>;
11
16
  listCategories(): Promise<Category[]>;
12
17
  createCategory(input: CreateCategoryInput): Promise<Category>;
@@ -16,6 +21,20 @@ export declare class SupabaseShopProvider implements ShopProvider {
16
21
  getOrder(id: string): Promise<Order | null>;
17
22
  createOrder(input: CreateOrderInput): Promise<Order>;
18
23
  updateOrder(id: string, input: UpdateOrderInput): Promise<Order>;
24
+ listShippingZones(): Promise<ShippingZone[]>;
25
+ createShippingZone(input: CreateShippingZoneInput): Promise<ShippingZone>;
26
+ updateShippingZone(id: string, input: UpdateShippingZoneInput): Promise<ShippingZone>;
27
+ deleteShippingZone(id: string): Promise<void>;
28
+ /**
29
+ * Settle a pending order: the merchant confirming that the money arrived.
30
+ *
31
+ * Goes through the RPC rather than an UPDATE so the payment ledger row in
32
+ * public.transactions closes in the same transaction as the order — set
33
+ * financial_status by hand and the order says paid while the ledger still
34
+ * says pending. Since 0019 the RPC also enforces who may call it: a member of
35
+ * the owning tenant, or a PSP webhook with the service role.
36
+ */
37
+ confirmPayment(id: string, reference?: string): Promise<Order | null>;
19
38
  placeOrder(input: PlaceOrderInput): Promise<Order>;
20
39
  listCustomers(options?: ListCustomersOptions): Promise<ShopCustomer[]>;
21
40
  getCustomer(id: string): Promise<ShopCustomer | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"supabase-provider.d.ts","sourceRoot":"","sources":["../src/supabase-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"supabase-provider.d.ts","sourceRoot":"","sources":["../src/supabase-provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAG9C,OAAO,KAAK,EACV,OAAO,EAAE,YAAY,EAAE,QAAQ,EAC/B,KAAK,EAAE,YAAY,EAAE,QAAQ,EAC7B,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAC3D,mBAAmB,EAAE,mBAAmB,EACxC,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EACtE,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,oBAAoB,EACpF,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,EAC9D,YAAY,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAkMjF,qBAAa,oBAAqB,YAAW,YAAY;IAKjD,YAAY,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAiB/D,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAW/C,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IA6B1D,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAuBtE,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;IAgCxE,kBAAkB,CACtB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAC1E,OAAO,CAAC,YAAY,CAAC;IA2BlB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASlD,cAAc,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAUrC,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAU7D,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAazE,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASzC,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAkBzD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAQ3C,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC;IAiBpD,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC;IAkBhE,iBAAiB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAY5C,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,YAAY,CAAC;IAYzE,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,YAAY,CAAC;IAWrF,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnD;;;;;;;;OAQG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAWrE,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC;IA4ClD,aAAa,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAYtE,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAMrD,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;IASjE,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;IAY7E,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOzC,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC;IAmBnE,aAAa,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAclE,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAMjD,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAS7D,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAczE,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAIhD;AAED,wBAAgB,0BAA0B,IAAI,YAAY,CAEzD"}
package/dist/tables.d.ts CHANGED
@@ -6,5 +6,6 @@ export declare const T: {
6
6
  readonly orderItems: "plg_shop_order_items";
7
7
  readonly customers: "plg_shop_customers";
8
8
  readonly discounts: "plg_shop_discounts";
9
+ readonly shippingZones: "shipping_zones";
9
10
  };
10
11
  //# sourceMappingURL=tables.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../src/tables.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,CAAC;;;;;;;;CAQJ,CAAA"}
1
+ {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../src/tables.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,CAAC;;;;;;;;;CAYJ,CAAA"}
package/dist/types.d.ts CHANGED
@@ -161,6 +161,11 @@ export interface Order {
161
161
  customerEmail: string | null;
162
162
  discountCode: string | null;
163
163
  notes: string | null;
164
+ /** Frozen delivery address captured at purchase time (0010/0012). */
165
+ shippingAddress: ShippingAddressSnapshot | null;
166
+ /** How the buyer paid — opens the ledger row in public.transactions. */
167
+ paymentMethodKind: PaymentMethodKind | null;
168
+ paidAt: string | null;
164
169
  items: OrderItem[];
165
170
  createdAt: string;
166
171
  updatedAt: string;
@@ -226,6 +231,99 @@ export interface PlaceOrderLine {
226
231
  * storefront order. Prices, discount math, and inventory are resolved
227
232
  * server-side; the client supplies product ids, quantities, and intent only.
228
233
  */
234
+ /** Structured delivery address. Mirrors public.addresses so the RPC can both
235
+ * freeze it on the order and save it to the customer's address book. */
236
+ export interface ShippingAddressInput {
237
+ postalCode: string;
238
+ street: string;
239
+ number?: string;
240
+ complement?: string;
241
+ district?: string;
242
+ city: string;
243
+ state: string;
244
+ country?: string;
245
+ recipient?: string;
246
+ phone?: string;
247
+ label?: string;
248
+ }
249
+ export type PaymentMethodKind = 'pix' | 'credit_card' | 'debit_card' | 'boleto' | 'cash' | 'other';
250
+ /**
251
+ * A range of postal codes the store delivers to, with its own price and ETA.
252
+ *
253
+ * `postalFrom`/`postalTo` are 8 digits, no punctuation. Ranges may overlap: the
254
+ * cheapest match wins, which is how a merchant layers a promotional zone over a
255
+ * broader one without deleting anything.
256
+ */
257
+ export interface ShippingZone {
258
+ id: string;
259
+ tenantId: string;
260
+ name: string;
261
+ carrier?: string | null;
262
+ postalFrom: string;
263
+ postalTo: string;
264
+ rate: number;
265
+ /** Overrides the store-wide free-delivery threshold inside this zone. */
266
+ freeAbove?: number | null;
267
+ etaMinDays?: number | null;
268
+ etaMaxDays?: number | null;
269
+ active: boolean;
270
+ sortOrder: number;
271
+ }
272
+ export type CreateShippingZoneInput = Omit<ShippingZone, 'id' | 'tenantId'>;
273
+ export type UpdateShippingZoneInput = Partial<CreateShippingZoneInput>;
274
+ /**
275
+ * One delivery option for a postal code, as quoted by shop_quote_shipping.
276
+ *
277
+ * `rate` already has the zone's free-above threshold applied, so the caller
278
+ * never re-derives a price — the number shown is the number charged. An EMPTY
279
+ * list of options is the meaningful answer "we do not deliver there", not an
280
+ * error condition.
281
+ */
282
+ export interface ShippingQuoteOption {
283
+ zoneId: string;
284
+ name: string;
285
+ carrier?: string;
286
+ /** Resolved against the subtotal the quote was requested for. */
287
+ rate: number;
288
+ /** The zone's price before any free-above rule — lets a caller re-resolve
289
+ * `rate` for a changed cart without another round trip, using the same rule
290
+ * the server applies. Without it a stale quote had to fall back to the
291
+ * store-wide flat rate, which is a different zone's price. */
292
+ baseRate: number;
293
+ freeAbove?: number | null;
294
+ etaMinDays?: number;
295
+ etaMaxDays?: number;
296
+ /** True when the rate is 0 because the order cleared the zone's threshold. */
297
+ free: boolean;
298
+ }
299
+ /**
300
+ * A row from the customer's address book (public.addresses).
301
+ *
302
+ * Only reachable with a signed-in shopper: the addresses_self_read policy joins
303
+ * plg_shop_customers.auth_user_id to auth.uid(), so an anonymous request sees
304
+ * nothing. Guests get an empty book and type their address, which is correct —
305
+ * the alternative is showing them somebody else's.
306
+ */
307
+ export interface CustomerAddress extends ShippingAddressInput {
308
+ id: string;
309
+ isDefault?: boolean;
310
+ }
311
+ /** Address as stored on the order: snake_case, mirroring public.addresses. */
312
+ export interface ShippingAddressSnapshot {
313
+ postal_code?: string;
314
+ street?: string;
315
+ number?: string;
316
+ complement?: string;
317
+ district?: string;
318
+ city?: string;
319
+ state?: string;
320
+ country?: string;
321
+ recipient?: string;
322
+ phone?: string;
323
+ label?: string;
324
+ raw?: string;
325
+ source?: string;
326
+ }
229
327
  export interface PlaceOrderInput {
230
328
  /** Tenant/store id. The Supabase provider falls back to the resolved shop tenant. */
231
329
  tenantId?: string;
@@ -242,6 +340,11 @@ export interface PlaceOrderInput {
242
340
  discountCode?: string;
243
341
  /** Shipping cost from the store's shipping policy. Clamped to >= 0 server-side. */
244
342
  shippingTotal?: number;
343
+ /** Structured delivery address. Without it the address survives only as free
344
+ * text in `notes`, which logistics cannot read. */
345
+ shippingAddress?: ShippingAddressInput;
346
+ /** How the buyer is paying. Opens the ledger row in public.transactions. */
347
+ paymentMethod?: PaymentMethodKind;
245
348
  items: PlaceOrderLine[];
246
349
  }
247
350
  export interface ShopCustomer {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAA;AAE3D,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,aAAa,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,MAAM,EAAE,YAAY,EAAE,CAAA;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,YAAY,CAAA;IACxD,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;CACvB;AAMD,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,WAAW,GAAG,QAAQ,CAAA;AAEjE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,MAAM,EAAE,oBAAoB,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,MAAM,CAAC,EAAE,oBAAoB,CAAA;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAMD,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CAAA;AAC3D,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,MAAM,GAAG,gBAAgB,GAAG,UAAU,GAAG,oBAAoB,GAAG,QAAQ,CAAA;AAClH,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,qBAAqB,GAAG,WAAW,CAAA;AAEnF,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,WAAW,CAAA;IACnB,eAAe,EAAE,eAAe,CAAA;IAChC,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,KAAK,CAAC;QACX,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,IAAI,EAAE,MAAM,CAAA;QACZ,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,EAAE,MAAM,CAAA;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,CAAC,CAAA;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAMD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,mFAAmF;IACnF,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,cAAc,EAAE,CAAA;CACxB;AAMD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAMD,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,cAAc,GAAG,eAAe,GAAG,aAAa,CAAA;AAC1F,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,WAAW,CAAA;AACjD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAA;AAEzE,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,IAAI,EAAE,YAAY,CAAA;IAClB,MAAM,EAAE,cAAc,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,eAAe,EAAE,OAAO,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,MAAM,EAAE,cAAc,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,YAAY,CAAA;IAClB,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,MAAM,CAAC,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAMD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,IAAI,EAAE,YAAY,GAAG,IAAI,CAAA;IACzB,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAA;IACb,kHAAkH;IAClH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,EAAE,cAAc,EAAE,CAAA;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,aAAa,EAAE,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;CACd"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "fayz": {
4
4
  "status": "beta"
5
5
  },
6
- "version": "0.8.0",
6
+ "version": "0.8.2",
7
7
  "description": "Fayz SDK ecommerce layer — products, orders, customers, discounts, shipping",
8
8
  "type": "module",
9
9
  "main": "./dist/index.cjs",
@@ -67,9 +67,9 @@
67
67
  "lucide-react": "^0.400.0",
68
68
  "@supabase/supabase-js": "^2.45.0",
69
69
  "zustand": "^4.5.0",
70
- "@fayz-ai/auth": "^0.8.0",
71
- "@fayz-ai/core": "^0.8.0",
72
- "@fayz-ai/ui": "^0.8.0"
70
+ "@fayz-ai/core": "^0.8.2",
71
+ "@fayz-ai/auth": "^0.8.2",
72
+ "@fayz-ai/ui": "^0.8.1"
73
73
  },
74
74
  "peerDependencies": {
75
75
  "react": "^18.0.0 || ^19.0.0",
package/src/index.ts CHANGED
@@ -13,6 +13,10 @@ export type {
13
13
  DiscountValidation, InventoryLine, InventoryIssue, InventoryCheck, CartTotalLine, CartTotals,
14
14
  } from './types'
15
15
 
16
+ export type {
17
+ ShippingZone, CreateShippingZoneInput, UpdateShippingZoneInput,
18
+ ShippingQuoteOption, CustomerAddress,
19
+ } from './types'
16
20
  export type { ShopProvider } from './provider'
17
21
  export {
18
22
  validateDiscount, applyDiscount, checkInventory, computeCartTotals, getCustomerOrders,
@@ -237,6 +237,11 @@ export class MockShopProvider implements ShopProvider {
237
237
  customerEmail: input.customerEmail ?? null,
238
238
  discountCode: input.discountCode ?? null,
239
239
  notes: input.notes ?? null,
240
+ shippingAddress: null,
241
+ // CreateOrderInput has no payment method — that is a PlaceOrderInput
242
+ // concern; the mock records none rather than inventing one.
243
+ paymentMethodKind: null,
244
+ paidAt: null,
240
245
  items: input.items.map(i => ({ id: uid(), orderId, productId: i.productId ?? null, name: i.name, sku: i.sku ?? null, quantity: i.quantity, unitPrice: i.unitPrice, total: Math.round(i.quantity * i.unitPrice * 100) / 100, imageUrl: i.imageUrl ?? null })),
241
246
  createdAt: now(),
242
247
  updatedAt: now(),
package/src/provider.ts CHANGED
@@ -6,6 +6,8 @@ import type {
6
6
  CreateCategoryInput, UpdateCategoryInput,
7
7
  CreateOrderInput, UpdateOrderInput, ListOrdersOptions, PlaceOrderInput,
8
8
  CreateCustomerInput, UpdateCustomerInput, ListCustomersOptions, ResolveCustomerInput,
9
+ CustomerAddress, ShippingQuoteOption,
10
+ ShippingZone, CreateShippingZoneInput, UpdateShippingZoneInput,
9
11
  CreateDiscountInput, UpdateDiscountInput, ListDiscountsOptions,
10
12
  } from './types'
11
13
 
@@ -18,6 +20,18 @@ export interface ShopProvider {
18
20
  deleteProduct(id: string): Promise<void>
19
21
  uploadProductImage(productId: string, file: File): Promise<ProductImage>
20
22
  deleteProductImage(imageId: string): Promise<void>
23
+ /**
24
+ * Reorder a gallery or promote a photo to primary. Optional so a provider
25
+ * that only ever holds one image per product need not implement it.
26
+ *
27
+ * Setting `isPrimary` is exclusive: the previous primary is demoted in the
28
+ * same call, because two primaries make "the product photo" ambiguous
29
+ * everywhere it is read (card, cart line, order item, admin table).
30
+ */
31
+ updateProductImage?(
32
+ imageId: string,
33
+ input: { isPrimary?: boolean; sortOrder?: number; altText?: string | null },
34
+ ): Promise<ProductImage>
21
35
 
22
36
  // Product enquiries
23
37
  createProductEnquiry?(input: CreateProductEnquiryInput): Promise<ProductEnquiry>
@@ -60,6 +74,31 @@ export interface ShopProvider {
60
74
  * Optional: providers without it fall back to listCustomers+createCustomer.
61
75
  */
62
76
  resolveCustomer?(input: ResolveCustomerInput): Promise<ShopCustomer>
77
+ /**
78
+ * The signed-in shopper's saved delivery addresses, so checkout can offer
79
+ * them instead of inventing a placeholder. Optional: a provider without it
80
+ * (or an anonymous request) yields an empty book and a blank form.
81
+ */
82
+ listCustomerAddresses?(customerId: string): Promise<CustomerAddress[]>
83
+
84
+ // Delivery
85
+ /**
86
+ * Delivery options for a postal code at a given subtotal. An empty array
87
+ * means the store does not deliver there — shown before the buyer commits to
88
+ * a cart, which is the whole point of quoting on the product page.
89
+ *
90
+ * This is for DISPLAY. shop_place_order recomputes the freight from the same
91
+ * zones and ignores whatever the client sends, so a tampered quote changes
92
+ * what the shopper sees and nothing about what they are charged.
93
+ */
94
+ quoteShipping?(postalCode: string, subtotal: number): Promise<ShippingQuoteOption[]>
95
+
96
+ /** Delivery zones the merchant maintains. Admin-only: the storefront reads
97
+ * quotes, never the ranges themselves. */
98
+ listShippingZones?(): Promise<ShippingZone[]>
99
+ createShippingZone?(input: CreateShippingZoneInput): Promise<ShippingZone>
100
+ updateShippingZone?(id: string, input: UpdateShippingZoneInput): Promise<ShippingZone>
101
+ deleteShippingZone?(id: string): Promise<void>
63
102
 
64
103
  // Discounts
65
104
  listDiscounts(options?: ListDiscountsOptions): Promise<Discount[]>
@@ -9,8 +9,8 @@ import type {
9
9
  CreateCategoryInput, UpdateCategoryInput,
10
10
  CreateOrderInput, UpdateOrderInput, ListOrdersOptions, PlaceOrderInput,
11
11
  CreateCustomerInput, UpdateCustomerInput, ListCustomersOptions, ResolveCustomerInput,
12
- CreateDiscountInput, UpdateDiscountInput, ListDiscountsOptions,
13
- } from './types'
12
+ CreateDiscountInput, UpdateDiscountInput, ListDiscountsOptions, OrderItem,
13
+ ShippingZone, CreateShippingZoneInput, UpdateShippingZoneInput } from './types'
14
14
 
15
15
  function getDb(): any {
16
16
  const supabase = getSupabaseClientOptional()
@@ -31,6 +31,44 @@ function asUuid(value: string | null | undefined): string | null {
31
31
  : null
32
32
  }
33
33
 
34
+ /** 8 bare digits, zero-padded — the shape shipping_zones stores and compares. */
35
+ function toPostalDigits(value: string | undefined | null): string | undefined {
36
+ const digits = String(value ?? '').replace(/\D/g, '')
37
+ return digits ? digits.padStart(8, '0').slice(0, 8) : undefined
38
+ }
39
+
40
+ function rowToShippingZone(row: any): ShippingZone {
41
+ return {
42
+ id: row.id,
43
+ tenantId: row.tenant_id,
44
+ name: row.name,
45
+ carrier: row.carrier ?? null,
46
+ postalFrom: String(row.postal_from ?? '').trim(),
47
+ postalTo: String(row.postal_to ?? '').trim(),
48
+ rate: Number(row.rate ?? 0),
49
+ freeAbove: row.free_above == null ? null : Number(row.free_above),
50
+ etaMinDays: row.eta_min_days ?? null,
51
+ etaMaxDays: row.eta_max_days ?? null,
52
+ active: row.active ?? true,
53
+ sortOrder: row.sort_order ?? 0,
54
+ }
55
+ }
56
+
57
+ function shippingZonePayload(input: Partial<CreateShippingZoneInput>): Record<string, unknown> {
58
+ const payload: Record<string, unknown> = {}
59
+ if (input.name !== undefined) payload.name = input.name
60
+ if (input.carrier !== undefined) payload.carrier = input.carrier || null
61
+ if (input.postalFrom !== undefined) payload.postal_from = toPostalDigits(input.postalFrom)
62
+ if (input.postalTo !== undefined) payload.postal_to = toPostalDigits(input.postalTo)
63
+ if (input.rate !== undefined) payload.rate = input.rate
64
+ if (input.freeAbove !== undefined) payload.free_above = input.freeAbove ?? null
65
+ if (input.etaMinDays !== undefined) payload.eta_min_days = input.etaMinDays ?? null
66
+ if (input.etaMaxDays !== undefined) payload.eta_max_days = input.etaMaxDays ?? null
67
+ if (input.active !== undefined) payload.active = input.active
68
+ if (input.sortOrder !== undefined) payload.sort_order = input.sortOrder
69
+ return payload
70
+ }
71
+
34
72
  function rowToProduct(row: any): Product {
35
73
  return {
36
74
  id: row.id,
@@ -82,6 +120,26 @@ function rowToCategory(row: any): Category {
82
120
  }
83
121
  }
84
122
 
123
+ /**
124
+ * Order items were being passed through raw, so every snake_case column arrived
125
+ * undefined on the camelCase type: unit_price, image_url and product_id were all
126
+ * lost. `total` survived only because the name matches in both, which is exactly
127
+ * why the bug looked like "price is zero" instead of "nothing is mapped".
128
+ */
129
+ function rowToOrderItem(row: any): OrderItem {
130
+ return {
131
+ id: row.id,
132
+ orderId: row.order_id,
133
+ productId: row.product_id ?? null,
134
+ name: row.name,
135
+ sku: row.sku ?? null,
136
+ quantity: row.quantity ?? 0,
137
+ unitPrice: row.unit_price ?? 0,
138
+ total: row.total ?? 0,
139
+ imageUrl: row.image_url ?? null,
140
+ }
141
+ }
142
+
85
143
  function rowToOrder(row: any): Order {
86
144
  return {
87
145
  id: row.id,
@@ -101,7 +159,10 @@ function rowToOrder(row: any): Order {
101
159
  customerEmail: row.customer_email,
102
160
  discountCode: row.discount_code,
103
161
  notes: row.notes,
104
- items: Array.isArray(row.items) ? row.items : [],
162
+ shippingAddress: row.shipping_address ?? null,
163
+ paymentMethodKind: row.payment_method_kind ?? null,
164
+ paidAt: row.paid_at ?? null,
165
+ items: Array.isArray(row.items) ? row.items.map(rowToOrderItem) : [],
105
166
  createdAt: row.created_at,
106
167
  updatedAt: row.updated_at,
107
168
  }
@@ -240,14 +301,61 @@ export class SupabaseShopProvider implements ShopProvider {
240
301
  const { error: uploadErr } = await db.storage.from('shop-images').upload(path, file)
241
302
  if (uploadErr) throw uploadErr
242
303
  const { data: { publicUrl } } = db.storage.from('shop-images').getPublicUrl(path)
304
+
305
+ // Every upload used to land as sort_order 0 / is_primary false, so a product
306
+ // whose only photo was uploaded here had NO primary at all, and a second one
307
+ // tied with the first for position. New photos now go to the end, and the
308
+ // first photo a product ever gets becomes its primary.
309
+ const { data: existing } = await db
310
+ .from(T.productImages)
311
+ .select('id,sort_order')
312
+ .eq('product_id', productId)
313
+ .order('sort_order', { ascending: false })
314
+ .limit(1)
315
+ const first = !existing || existing.length === 0
316
+ const nextOrder = first ? 0 : (existing[0].sort_order ?? 0) + 1
317
+
243
318
  const { data, error } = await db
244
319
  .from(T.productImages)
245
- .insert({ product_id: productId, tenant_id: tenantId, url: publicUrl, sort_order: 0, is_primary: false })
320
+ .insert({
321
+ product_id: productId, tenant_id: tenantId, url: publicUrl,
322
+ sort_order: nextOrder, is_primary: first,
323
+ })
246
324
  .select().single()
247
325
  if (error) throw error
248
326
  return rowToImage(data)
249
327
  }
250
328
 
329
+ async updateProductImage(
330
+ imageId: string,
331
+ input: { isPrimary?: boolean; sortOrder?: number; altText?: string | null },
332
+ ): Promise<ProductImage> {
333
+ const db = getDb()
334
+ const updates: Record<string, unknown> = {}
335
+ if (input.sortOrder !== undefined) updates.sort_order = input.sortOrder
336
+ if (input.altText !== undefined) updates.alt_text = input.altText
337
+ if (input.isPrimary !== undefined) updates.is_primary = input.isPrimary
338
+
339
+ // Demote the incumbent first. Doing it after would leave a window with two
340
+ // primaries, and if the second statement failed the product would keep two
341
+ // for good.
342
+ if (input.isPrimary) {
343
+ const { data: target } = await db
344
+ .from(T.productImages).select('product_id').eq('id', imageId).single()
345
+ if (target?.product_id) {
346
+ await db.from(T.productImages)
347
+ .update({ is_primary: false })
348
+ .eq('product_id', target.product_id)
349
+ .neq('id', imageId)
350
+ }
351
+ }
352
+
353
+ const { data, error } = await db
354
+ .from(T.productImages).update(updates).eq('id', imageId).select().single()
355
+ if (error) throw error
356
+ return rowToImage(data)
357
+ }
358
+
251
359
  async deleteProductImage(imageId: string): Promise<void> {
252
360
  const { error } = await getDb().from(T.productImages).delete().eq('id', imageId)
253
361
  if (error) throw error
@@ -353,6 +461,71 @@ export class SupabaseShopProvider implements ShopProvider {
353
461
  return this.getOrder(id) as Promise<Order>
354
462
  }
355
463
 
464
+ // -------------------------------------------------------------------------
465
+ // Delivery zones
466
+ //
467
+ // Postal codes are stored as 8 bare digits so the range test in
468
+ // shop_quote_shipping is a plain BETWEEN. Accepting '22.041-001' from the
469
+ // form and normalising here means the merchant never has to think about it.
470
+ // -------------------------------------------------------------------------
471
+ async listShippingZones(): Promise<ShippingZone[]> {
472
+ const tenantId = getTenantId()
473
+ const { data, error } = await getDb()
474
+ .from(T.shippingZones)
475
+ .select('*')
476
+ .eq('tenant_id', tenantId)
477
+ .order('sort_order', { ascending: true })
478
+ .order('postal_from', { ascending: true })
479
+ if (error) throw error
480
+ return (data ?? []).map(rowToShippingZone)
481
+ }
482
+
483
+ async createShippingZone(input: CreateShippingZoneInput): Promise<ShippingZone> {
484
+ const tenantId = getTenantId()
485
+ if (!tenantId) throw new Error('@fayz-ai/shop: createShippingZone requires a tenant id.')
486
+ const { data, error } = await getDb()
487
+ .from(T.shippingZones)
488
+ .insert({ tenant_id: tenantId, ...shippingZonePayload(input) })
489
+ .select()
490
+ .single()
491
+ if (error) throw error
492
+ return rowToShippingZone(data)
493
+ }
494
+
495
+ async updateShippingZone(id: string, input: UpdateShippingZoneInput): Promise<ShippingZone> {
496
+ const { data, error } = await getDb()
497
+ .from(T.shippingZones)
498
+ .update(shippingZonePayload(input))
499
+ .eq('id', id)
500
+ .select()
501
+ .single()
502
+ if (error) throw error
503
+ return rowToShippingZone(data)
504
+ }
505
+
506
+ async deleteShippingZone(id: string): Promise<void> {
507
+ const { error } = await getDb().from(T.shippingZones).delete().eq('id', id)
508
+ if (error) throw error
509
+ }
510
+
511
+ /**
512
+ * Settle a pending order: the merchant confirming that the money arrived.
513
+ *
514
+ * Goes through the RPC rather than an UPDATE so the payment ledger row in
515
+ * public.transactions closes in the same transaction as the order — set
516
+ * financial_status by hand and the order says paid while the ledger still
517
+ * says pending. Since 0019 the RPC also enforces who may call it: a member of
518
+ * the owning tenant, or a PSP webhook with the service role.
519
+ */
520
+ async confirmPayment(id: string, reference?: string): Promise<Order | null> {
521
+ const { error } = await getDb().rpc('shop_confirm_payment', {
522
+ p_order_id: id,
523
+ p_reference: reference ?? null,
524
+ })
525
+ if (error) throw error
526
+ return this.getOrder(id)
527
+ }
528
+
356
529
  // Trusted placement — delegates all price/discount/inventory authority to the
357
530
  // shop_place_order RPC (SECURITY DEFINER). The browser never sets a price.
358
531
  async placeOrder(input: PlaceOrderInput): Promise<Order> {
@@ -367,7 +540,25 @@ export class SupabaseShopProvider implements ShopProvider {
367
540
  p_customer_email: input.customer?.email ?? null,
368
541
  p_currency: input.currency ?? 'BRL',
369
542
  p_discount_code: input.discountCode ?? null,
370
- p_shipping_total: input.shippingTotal ?? 0,
543
+ p_shipping_total: input.shippingTotal ?? 0,
544
+ // snake_case keys on purpose: the RPC freezes this jsonb onto the
545
+ // order and public.addresses uses these exact column names.
546
+ p_shipping_address: input.shippingAddress
547
+ ? {
548
+ postal_code: input.shippingAddress.postalCode,
549
+ street: input.shippingAddress.street,
550
+ number: input.shippingAddress.number ?? null,
551
+ complement: input.shippingAddress.complement ?? null,
552
+ district: input.shippingAddress.district ?? null,
553
+ city: input.shippingAddress.city,
554
+ state: input.shippingAddress.state,
555
+ country: input.shippingAddress.country ?? 'BR',
556
+ recipient: input.shippingAddress.recipient ?? null,
557
+ phone: input.shippingAddress.phone ?? null,
558
+ label: input.shippingAddress.label ?? null,
559
+ }
560
+ : null,
561
+ p_payment_method: input.paymentMethod ?? null,
371
562
  p_notes: input.notes ?? null,
372
563
  })
373
564
  if (error) throw error
package/src/tables.ts CHANGED
@@ -9,4 +9,8 @@ export const T = {
9
9
  orderItems: 'plg_shop_order_items',
10
10
  customers: 'plg_shop_customers',
11
11
  discounts: 'plg_shop_discounts',
12
+ // Core, not plg_shop_*: a delivery zone is a fact about the business, and
13
+ // fulfilment and financial read it too. Same reasoning as addresses and
14
+ // orders — see migration 0021.
15
+ shippingZones: 'shipping_zones',
12
16
  } as const