@fayz-ai/sdk 0.8.1 → 0.8.3

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.
Files changed (42) hide show
  1. package/dist/agent.cjs +16 -0
  2. package/dist/agent.cjs.map +1 -0
  3. package/dist/agent.d.ts +114 -0
  4. package/dist/agent.d.ts.map +1 -0
  5. package/dist/agent.js +3 -0
  6. package/dist/agent.js.map +1 -0
  7. package/dist/{chunk-3UTEZ2QL.cjs → chunk-746EA3BV.cjs} +95 -4
  8. package/dist/chunk-746EA3BV.cjs.map +1 -0
  9. package/dist/chunk-7UZH4XEV.cjs +66 -0
  10. package/dist/chunk-7UZH4XEV.cjs.map +1 -0
  11. package/dist/{chunk-PRCW5CVJ.js → chunk-7ZHG7XTA.js} +95 -5
  12. package/dist/chunk-7ZHG7XTA.js.map +1 -0
  13. package/dist/{chunk-MCB2L25R.cjs → chunk-DK3ZA6NA.cjs} +3 -3
  14. package/dist/{chunk-MCB2L25R.cjs.map → chunk-DK3ZA6NA.cjs.map} +1 -1
  15. package/dist/{chunk-ZTJ2BJ3I.js → chunk-SKARZBEH.js} +26 -26
  16. package/dist/{chunk-ZTJ2BJ3I.js.map → chunk-SKARZBEH.js.map} +1 -1
  17. package/dist/{chunk-R4XVCBFG.js → chunk-UWOQAD5A.js} +3 -3
  18. package/dist/{chunk-R4XVCBFG.js.map → chunk-UWOQAD5A.js.map} +1 -1
  19. package/dist/chunk-VPMRURSI.js +63 -0
  20. package/dist/chunk-VPMRURSI.js.map +1 -0
  21. package/dist/{chunk-6OWKU36M.cjs → chunk-WMH7SIER.cjs} +26 -26
  22. package/dist/{chunk-6OWKU36M.cjs.map → chunk-WMH7SIER.cjs.map} +1 -1
  23. package/dist/client.cjs +5 -5
  24. package/dist/client.js +2 -2
  25. package/dist/index.cjs +30 -21
  26. package/dist/index.d.ts +2 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +5 -4
  29. package/dist/release-channels.cjs +5 -5
  30. package/dist/release-channels.js +1 -1
  31. package/dist/shop.cjs +7 -3
  32. package/dist/shop.d.ts +76 -0
  33. package/dist/shop.d.ts.map +1 -1
  34. package/dist/shop.js +1 -1
  35. package/package.json +7 -1
  36. package/src/agent.test.ts +114 -0
  37. package/src/agent.ts +188 -0
  38. package/src/index.ts +11 -0
  39. package/src/release-channels.json +24 -24
  40. package/src/shop.ts +174 -2
  41. package/dist/chunk-3UTEZ2QL.cjs.map +0 -1
  42. package/dist/chunk-PRCW5CVJ.js.map +0 -1
@@ -1,4 +1,8 @@
1
1
  // src/shop.ts
2
+ var _accessTokenResolver = null;
3
+ function setShopAccessTokenResolver(resolver) {
4
+ _accessTokenResolver = resolver;
5
+ }
2
6
  var FayzShopError = class extends Error {
3
7
  constructor(message, status, responseBody) {
4
8
  super(message);
@@ -135,6 +139,9 @@ function rowToOrder(row) {
135
139
  customerEmail: row.customer_email ?? null,
136
140
  discountCode: row.discount_code ?? null,
137
141
  notes: row.notes ?? null,
142
+ shippingAddress: row.shipping_address ?? null,
143
+ paymentMethodKind: row.payment_method_kind ?? null,
144
+ paidAt: row.paid_at ?? null,
138
145
  items: Array.isArray(row.items) ? row.items.map(rowToOrderItem) : [],
139
146
  createdAt: row.created_at ?? nowIso(),
140
147
  updatedAt: row.updated_at ?? row.created_at ?? nowIso()
@@ -213,7 +220,15 @@ function createFayzShopProvider(options) {
213
220
  ...init,
214
221
  headers: {
215
222
  apikey: key,
216
- Authorization: `Bearer ${key}`,
223
+ // Declares which store this read is for. Until 0020 tenant isolation was
224
+ // a client-side convention (a tenant_id filter the caller could simply
225
+ // omit, returning every merchant's catalogue); the RLS policy now reads
226
+ // this header, so the scope is enforced server-side.
227
+ "x-fayz-store": storeId,
228
+ // The shopper's JWT when signed in, the publishable key otherwise. The
229
+ // apikey header stays the publishable key either way — Supabase uses it
230
+ // to route the project, not to authenticate.
231
+ Authorization: `Bearer ${_accessTokenResolver?.() || key}`,
217
232
  ...init.body ? { "Content-Type": "application/json", Prefer: "return=representation" } : {},
218
233
  ...init.headers
219
234
  }
@@ -310,7 +325,19 @@ function createFayzShopProvider(options) {
310
325
  query.set("order", "created_at.desc");
311
326
  if (options2?.limit) query.set("limit", String(options2.limit));
312
327
  if (options2?.offset) query.set("offset", String(options2.offset));
313
- return (await request("plg_shop_orders", { query })).map(rowToOrder);
328
+ try {
329
+ return (await request("plg_shop_orders", { query })).map(rowToOrder);
330
+ } catch (err) {
331
+ if (!options2?.customerId) throw err;
332
+ const rows = await request("rpc/shop_list_orders", {
333
+ method: "POST",
334
+ body: JSON.stringify({
335
+ p_customer_id: options2.customerId,
336
+ p_limit: options2.limit ?? 50
337
+ })
338
+ });
339
+ return (rows ?? []).map(rowToOrder);
340
+ }
314
341
  },
315
342
  async getOrder(id) {
316
343
  const query = singleById(id);
@@ -404,6 +431,22 @@ function createFayzShopProvider(options) {
404
431
  p_currency: input.currency ?? "BRL",
405
432
  p_discount_code: input.discountCode ?? null,
406
433
  p_shipping_total: input.shippingTotal ?? 0,
434
+ // snake_case keys on purpose: the RPC freezes this jsonb onto the
435
+ // order and public.addresses uses these exact column names.
436
+ p_shipping_address: input.shippingAddress ? {
437
+ postal_code: input.shippingAddress.postalCode,
438
+ street: input.shippingAddress.street,
439
+ number: input.shippingAddress.number ?? null,
440
+ complement: input.shippingAddress.complement ?? null,
441
+ district: input.shippingAddress.district ?? null,
442
+ city: input.shippingAddress.city,
443
+ state: input.shippingAddress.state,
444
+ country: input.shippingAddress.country ?? "BR",
445
+ recipient: input.shippingAddress.recipient ?? null,
446
+ phone: input.shippingAddress.phone ?? null,
447
+ label: input.shippingAddress.label ?? null
448
+ } : null,
449
+ p_payment_method: input.paymentMethod ?? null,
407
450
  p_notes: input.notes ?? null
408
451
  })
409
452
  });
@@ -437,6 +480,53 @@ function createFayzShopProvider(options) {
437
480
  if (!customer) throw new FayzShopError("shop_resolve_customer returned no row.", 500);
438
481
  return rowToCustomer(customer);
439
482
  },
483
+ async quoteShipping(postalCode, subtotal) {
484
+ const digits = (postalCode || "").replace(/\D/g, "");
485
+ if (digits.length !== 8) return [];
486
+ const rows = await request("rpc/shop_quote_shipping", {
487
+ method: "POST",
488
+ body: JSON.stringify({
489
+ p_tenant_id: storeId,
490
+ p_postal_code: digits,
491
+ p_subtotal: subtotal
492
+ })
493
+ });
494
+ return (rows ?? []).map((row) => ({
495
+ zoneId: row.zone_id,
496
+ name: row.name,
497
+ carrier: row.carrier ?? void 0,
498
+ rate: Number(row.rate ?? 0),
499
+ baseRate: Number(row.base_rate ?? row.rate ?? 0),
500
+ freeAbove: row.free_above == null ? null : Number(row.free_above),
501
+ etaMinDays: row.eta_min_days ?? void 0,
502
+ etaMaxDays: row.eta_max_days ?? void 0,
503
+ free: Boolean(row.free)
504
+ }));
505
+ },
506
+ async listCustomerAddresses(customerId) {
507
+ if (!asUuid(customerId)) return [];
508
+ const query = new URLSearchParams();
509
+ query.set("select", "id,label,recipient,phone,postal_code,street,number,complement,district,city,state,country,is_default");
510
+ query.set("owner_type", "eq.shop_customer");
511
+ query.set("owner_id", `eq.${customerId}`);
512
+ query.set("order", "is_default.desc,created_at.desc");
513
+ const rows = await request("addresses", { query }).catch(() => []);
514
+ return rows.map((row) => ({
515
+ id: row.id,
516
+ label: row.label ?? void 0,
517
+ recipient: row.recipient ?? void 0,
518
+ phone: row.phone ?? void 0,
519
+ postalCode: row.postal_code ?? "",
520
+ street: row.street ?? "",
521
+ number: row.number ?? void 0,
522
+ complement: row.complement ?? void 0,
523
+ district: row.district ?? void 0,
524
+ city: row.city ?? "",
525
+ state: row.state ?? "",
526
+ country: row.country ?? void 0,
527
+ isDefault: row.is_default ?? false
528
+ }));
529
+ },
440
530
  async createCustomer(input) {
441
531
  const [customer] = await request("plg_shop_customers", {
442
532
  method: "POST",
@@ -675,6 +765,6 @@ function createBrokerShopProvider(options) {
675
765
  };
676
766
  }
677
767
 
678
- export { FayzShopError, createFayzShopProvider };
679
- //# sourceMappingURL=chunk-PRCW5CVJ.js.map
680
- //# sourceMappingURL=chunk-PRCW5CVJ.js.map
768
+ export { FayzShopError, createFayzShopProvider, setShopAccessTokenResolver };
769
+ //# sourceMappingURL=chunk-7ZHG7XTA.js.map
770
+ //# sourceMappingURL=chunk-7ZHG7XTA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/shop.ts"],"names":["options","row"],"mappings":";AA2BA,IAAI,oBAAA,GAAmD,IAAA;AAEhD,SAAS,2BAA2B,QAAA,EAA4C;AACrF,EAAA,oBAAA,GAAuB,QAAA;AACzB;AA4MO,IAAM,aAAA,GAAN,cAA4B,KAAA,CAAM;AAAA,EACvC,WAAA,CACE,OAAA,EACS,MAAA,EACA,YAAA,EACT;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AAHJ,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AACA,IAAA,IAAA,CAAA,YAAA,GAAA,YAAA;AAGT,IAAA,IAAA,CAAK,IAAA,GAAO,eAAA;AAAA,EACd;AACF;AAEA,SAAS,iBAAiB,GAAA,EAAqB;AAC7C,EAAA,OAAO,GAAA,CAAI,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AAC/B;AAEA,SAAS,QAAQ,IAAA,EAAsB;AACrC,EAAA,OAAO,IAAA,CAAK,aAAY,CAAE,OAAA,CAAQ,eAAe,GAAG,CAAA,CAAE,OAAA,CAAQ,QAAA,EAAU,EAAE,CAAA;AAC5E;AAEA,SAAS,MAAA,GAAiB;AACxB,EAAA,OAAA,iBAAO,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAChC;AAMA,SAAS,kBAAA,CAAmB,MAAsB,KAAA,EAAuB;AACvE,EAAA,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,KAAA,CAAM,aAAa,CAAA,CAAA;AACvC;AAEA,SAAS,4BAA4B,QAAA,EAAwD;AAC3F,EAAA,MAAM,GAAA,uBAAU,GAAA,EAAqC;AACrD,EAAA,KAAA,MAAW,OAAA,IAAW,QAAA,IAAY,EAAC,EAAG;AACpC,IAAA,IAAI,OAAA,CAAQ,GAAA,EAAK,GAAA,CAAI,GAAA,CAAI,kBAAA,CAAmB,OAAO,OAAA,CAAQ,GAAG,CAAA,EAAG,OAAA,CAAQ,QAAQ,CAAA;AACjF,IAAA,IAAI,OAAA,CAAQ,IAAA,EAAM,GAAA,CAAI,GAAA,CAAI,kBAAA,CAAmB,QAAQ,OAAA,CAAQ,IAAI,CAAA,EAAG,OAAA,CAAQ,QAAQ,CAAA;AAAA,EACtF;AACA,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,OAAO,KAAA,EAAiD;AAC/D,EAAA,IAAI,CAAC,OAAO,OAAO,IAAA;AACnB,EAAA,OAAO,4EAAA,CAA6E,IAAA,CAAK,KAAK,CAAA,GAC1F,KAAA,GACA,IAAA;AACN;AAEA,SAAS,WAAW,GAAA,EAAsB;AACxC,EAAA,OAAO;AAAA,IACL,IAAI,GAAA,CAAI,EAAA;AAAA,IACR,WAAW,GAAA,CAAI,UAAA;AAAA,IACf,KAAK,GAAA,CAAI,GAAA;AAAA,IACT,OAAA,EAAS,IAAI,QAAA,IAAY,IAAA;AAAA,IACzB,SAAA,EAAW,IAAI,UAAA,IAAc,CAAA;AAAA,IAC7B,SAAA,EAAW,IAAI,UAAA,IAAc,KAAA;AAAA,IAC7B,SAAA,EAAW,GAAA,CAAI,UAAA,IAAc,MAAA;AAAO,GACtC;AACF;AAEA,SAAS,kBAAA,CAAmB,KAAiB,OAAA,EAAyE;AACpH,EAAA,MAAM,QAAA,GAAW,GAAA,CAAI,QAAA,IAAY,EAAC;AAClC,EAAA,MAAM,MAAA,GAAS,OAAA,EAAS,GAAA,CAAI,kBAAA,CAAmB,MAAA,EAAQ,GAAA,CAAI,IAAA,IAAQ,OAAA,CAAQ,GAAA,CAAI,IAAI,CAAC,CAAC,CAAA;AACrF,EAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,GAAA,GAAM,OAAA,EAAS,GAAA,CAAI,mBAAmB,KAAA,EAAO,GAAA,CAAI,GAAG,CAAC,CAAA,GAAI,MAAA;AAC3E,EAAA,OAAO,EAAE,GAAI,MAAA,IAAU,EAAC,EAAI,GAAI,KAAA,IAAS,EAAC,EAAI,GAAG,QAAA,EAAS;AAC5D;AAEA,SAAS,gBAAA,CAAiB,KAAiB,OAAA,EAA8E;AACvH,EAAA,MAAM,GAAA,GAAM,kBAAA,CAAmB,GAAA,EAAK,OAAO,CAAA,CAAE,iBAAA;AAC7C,EAAA,OAAO,GAAA,IAAO,OAAO,GAAA,KAAQ,QAAA,GAAW,GAAA,GAA+B,IAAA;AACzE;AAEA,SAAS,YAAA,CAAa,KAAiB,OAAA,EAAgD;AACrF,EAAA,MAAM,QAAA,GAAW,kBAAA,CAAmB,GAAA,EAAK,OAAO,CAAA;AAChD,EAAA,MAAM,aAAA,GAAgB,gBAAA,CAAiB,GAAA,EAAK,OAAO,CAAA;AACnD,EAAA,OAAO;AAAA,IACL,IAAI,GAAA,CAAI,EAAA;AAAA,IACR,UAAU,GAAA,CAAI,SAAA;AAAA,IACd,MAAM,GAAA,CAAI,IAAA;AAAA,IACV,IAAA,EAAM,GAAA,CAAI,IAAA,IAAQ,OAAA,CAAQ,IAAI,IAAI,CAAA;AAAA,IAClC,WAAA,EAAa,IAAI,WAAA,IAAe,IAAA;AAAA,IAChC,KAAA,EAAO,IAAI,KAAA,IAAS,CAAA;AAAA,IACpB,cAAA,EAAgB,IAAI,gBAAA,IAAoB,IAAA;AAAA,IACxC,QAAA,EAAU,IAAI,QAAA,IAAY,KAAA;AAAA,IAC1B,MAAA,EAAQ,IAAI,MAAA,IAAU,QAAA;AAAA,IACtB,cAAA,EAAgB,IAAI,eAAA,IAAmB,CAAA;AAAA,IACvC,GAAA,EAAK,IAAI,GAAA,IAAO,IAAA;AAAA,IAChB,SAAA,EAAW,IAAI,UAAA,IAAc,CAAA;AAAA,IAC7B,QAAA;AAAA,IACA,MAAA,EAAQ,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,MAAM,CAAA,GAAI,GAAA,CAAI,MAAA,CAAO,GAAA,CAAI,UAAU,CAAA,GAAI,EAAC;AAAA,IAClE,UAAA,EAAY,aAAA,EAAe,EAAA,IAAM,GAAA,CAAI,WAAA,IAAe,IAAA;AAAA,IACpD,YAAA,EAAc,aAAA,EAAe,IAAA,IAAQ,GAAA,CAAI,UAAU,IAAA,IAAQ,IAAA;AAAA,IAC3D,UAAA,EAAY,IAAI,WAAA,IAAe,IAAA;AAAA,IAC/B,MAAA,EAAQ,IAAI,MAAA,IAAU,IAAA;AAAA,IACtB,UAAA,EAAY,IAAI,WAAA,IAAe,IAAA;AAAA,IAC/B,SAAA,EAAW,GAAA,CAAI,UAAA,IAAc,MAAA,EAAO;AAAA,IACpC,SAAA,EAAW,GAAA,CAAI,UAAA,IAAc,GAAA,CAAI,cAAc,MAAA;AAAO,GACxD;AACF;AAEA,SAAS,cAAc,GAAA,EAAkB;AACvC,EAAA,OAAO;AAAA,IACL,IAAI,GAAA,CAAI,EAAA;AAAA,IACR,QAAA,EAAU,IAAI,SAAA,IAAa,QAAA;AAAA,IAC3B,MAAM,GAAA,CAAI,IAAA;AAAA,IACV,IAAA,EAAM,GAAA,CAAI,IAAA,IAAQ,OAAA,CAAQ,IAAI,IAAI,CAAA;AAAA,IAClC,WAAA,EAAa,IAAI,WAAA,IAAe,IAAA;AAAA,IAChC,QAAA,EAAU,IAAI,SAAA,IAAa,IAAA;AAAA,IAC3B,SAAA,EAAW,IAAI,UAAA,IAAc,CAAA;AAAA,IAC7B,QAAA,EAAU,IAAI,SAAA,IAAa,IAAA;AAAA,IAC3B,SAAA,EAAW,GAAA,CAAI,UAAA,IAAc,MAAA;AAAO,GACtC;AACF;AAEA,SAAS,uBAAA,CAAwB,UAAiC,QAAA,EAAkB;AAClF,EAAA,MAAM,IAAA,GAAO,SAAS,IAAA,IAAQ,UAAA;AAC9B,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,QAAA,CAAS,EAAA,IAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,IAC/B,QAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA,EAAM,QAAA,CAAS,IAAA,IAAQ,OAAA,CAAQ,IAAI,CAAA;AAAA,IACnC,WAAA,EAAa,SAAS,WAAA,IAAe,IAAA;AAAA,IACrC,QAAA,EAAU,IAAA;AAAA,IACV,SAAA,EAAW,SAAS,SAAA,IAAa,CAAA;AAAA,IACjC,QAAA,EAAU,SAAS,QAAA,IAAY,IAAA;AAAA,IAC/B,WAAW,MAAA;AAAO,GACpB;AACF;AAEA,SAAS,qBAAA,CAAsB,UAAwB,QAAA,EAAkB;AACvE,EAAA,MAAM,UAAA,uBAAiB,GAAA,EAAwD;AAC/E,EAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,IAAA,MAAM,QAAA,GAAW,iBAAiB,OAAO,CAAA;AACzC,IAAA,IAAI,CAAC,QAAA,EAAU,IAAA,IAAQ,CAAC,UAAU,EAAA,EAAI;AACtC,IAAA,MAAM,MAAA,GAAS,uBAAA,CAAwB,QAAA,EAAU,QAAQ,CAAA;AACzD,IAAA,UAAA,CAAW,GAAA,CAAI,MAAA,CAAO,EAAA,EAAI,MAAM,CAAA;AAAA,EAClC;AACA,EAAA,OAAO,CAAC,GAAG,UAAA,CAAW,QAAQ,CAAA,CAAE,KAAK,CAAC,CAAA,EAAG,MAAM,CAAA,CAAE,SAAA,GAAY,EAAE,SAAA,IAAa,CAAA,CAAE,KAAK,aAAA,CAAc,CAAA,CAAE,IAAI,CAAC,CAAA;AAC1G;AAEA,SAAS,WAAW,GAAA,EAAe;AACjC,EAAA,OAAO;AAAA,IACL,IAAI,GAAA,CAAI,EAAA;AAAA,IACR,UAAU,GAAA,CAAI,SAAA;AAAA,IACd,WAAA,EAAa,IAAI,YAAA,IAAgB,CAAA;AAAA,IACjC,MAAA,EAAQ,IAAI,MAAA,IAAU,MAAA;AAAA,IACtB,eAAA,EAAiB,IAAI,gBAAA,IAAoB,SAAA;AAAA,IACzC,iBAAA,EAAmB,IAAI,kBAAA,IAAsB,aAAA;AAAA,IAC7C,QAAA,EAAU,IAAI,QAAA,IAAY,KAAA;AAAA,IAC1B,QAAA,EAAU,IAAI,QAAA,IAAY,CAAA;AAAA,IAC1B,QAAA,EAAU,IAAI,SAAA,IAAa,CAAA;AAAA,IAC3B,aAAA,EAAe,IAAI,cAAA,IAAkB,CAAA;AAAA,IACrC,aAAA,EAAe,IAAI,cAAA,IAAkB,CAAA;AAAA,IACrC,KAAA,EAAO,IAAI,KAAA,IAAS,CAAA;AAAA,IACpB,UAAA,EAAY,IAAI,WAAA,IAAe,IAAA;AAAA,IAC/B,YAAA,EAAc,IAAI,aAAA,IAAiB,IAAA;AAAA,IACnC,aAAA,EAAe,IAAI,cAAA,IAAkB,IAAA;AAAA,IACrC,YAAA,EAAc,IAAI,aAAA,IAAiB,IAAA;AAAA,IACnC,KAAA,EAAO,IAAI,KAAA,IAAS,IAAA;AAAA,IACpB,eAAA,EAAiB,IAAI,gBAAA,IAAoB,IAAA;AAAA,IACzC,iBAAA,EAAmB,IAAI,mBAAA,IAAuB,IAAA;AAAA,IAC9C,MAAA,EAAQ,IAAI,OAAA,IAAW,IAAA;AAAA,IACvB,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,KAAK,CAAA,GAAI,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,cAAc,CAAA,GAAI,EAAC;AAAA,IACnE,SAAA,EAAW,GAAA,CAAI,UAAA,IAAc,MAAA,EAAO;AAAA,IACpC,SAAA,EAAW,GAAA,CAAI,UAAA,IAAc,GAAA,CAAI,cAAc,MAAA;AAAO,GACxD;AACF;AAEA,SAAS,eAAe,GAAA,EAAmB;AACzC,EAAA,OAAO;AAAA,IACL,IAAI,GAAA,CAAI,EAAA;AAAA,IACR,SAAS,GAAA,CAAI,QAAA;AAAA,IACb,SAAA,EAAW,IAAI,UAAA,IAAc,IAAA;AAAA,IAC7B,MAAM,GAAA,CAAI,IAAA;AAAA,IACV,GAAA,EAAK,IAAI,GAAA,IAAO,IAAA;AAAA,IAChB,QAAA,EAAU,IAAI,QAAA,IAAY,CAAA;AAAA,IAC1B,SAAA,EAAW,IAAI,UAAA,IAAc,CAAA;AAAA,IAC7B,KAAA,EAAO,IAAI,KAAA,IAAS,CAAA;AAAA,IACpB,QAAA,EAAU,IAAI,SAAA,IAAa;AAAA,GAC7B;AACF;AAEA,SAAS,cAAc,GAAA,EAAkB;AACvC,EAAA,OAAO;AAAA,IACL,IAAI,GAAA,CAAI,EAAA;AAAA,IACR,UAAU,GAAA,CAAI,SAAA;AAAA,IACd,WAAW,GAAA,CAAI,UAAA;AAAA,IACf,QAAA,EAAU,IAAI,SAAA,IAAa,EAAA;AAAA,IAC3B,KAAA,EAAO,IAAI,KAAA,IAAS,IAAA;AAAA,IACpB,KAAA,EAAO,IAAI,KAAA,IAAS,IAAA;AAAA,IACpB,KAAA,EAAO,IAAI,KAAA,IAAS,IAAA;AAAA,IACpB,WAAA,EAAa,IAAI,YAAA,IAAgB,CAAA;AAAA,IACjC,UAAA,EAAY,IAAI,WAAA,IAAe,CAAA;AAAA,IAC/B,SAAA,EAAW,GAAA,CAAI,UAAA,IAAc,MAAA,EAAO;AAAA,IACpC,SAAA,EAAW,GAAA,CAAI,UAAA,IAAc,GAAA,CAAI,cAAc,MAAA;AAAO,GACxD;AACF;AAEA,SAAS,cAAc,GAAA,EAAkB;AACvC,EAAA,OAAO;AAAA,IACL,IAAI,GAAA,CAAI,EAAA;AAAA,IACR,UAAU,GAAA,CAAI,SAAA;AAAA,IACd,OAAO,GAAA,CAAI,KAAA;AAAA,IACX,IAAA,EAAM,IAAI,IAAA,IAAQ,IAAA;AAAA,IAClB,MAAM,GAAA,CAAI,IAAA;AAAA,IACV,MAAA,EAAQ,IAAI,MAAA,IAAU,MAAA;AAAA,IACtB,KAAA,EAAO,IAAI,KAAA,IAAS,CAAA;AAAA,IACpB,UAAA,EAAY,IAAI,WAAA,IAAe,IAAA;AAAA,IAC/B,eAAA,EAAiB,IAAI,iBAAA,IAAqB,KAAA;AAAA,IAC1C,QAAA,EAAU,GAAA,CAAI,SAAA,IAAa,MAAA,EAAO;AAAA,IAClC,MAAA,EAAQ,IAAI,OAAA,IAAW,IAAA;AAAA,IACvB,MAAA,EAAQ,IAAI,MAAA,IAAU,QAAA;AAAA,IACtB,SAAA,EAAW,IAAI,UAAA,IAAc,CAAA;AAAA,IAC7B,SAAA,EAAW,GAAA,CAAI,UAAA,IAAc,MAAA,EAAO;AAAA,IACpC,SAAA,EAAW,GAAA,CAAI,UAAA,IAAc,GAAA,CAAI,cAAc,MAAA;AAAO,GACxD;AACF;AAEA,SAAS,mBAAmB,KAAA,EAKzB;AACD,EAAA,MAAM,UAAmC,EAAC;AAC1C,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,MAAA,EAAW,OAAA,CAAQ,SAAS,KAAA,CAAM,MAAA;AACvD,EAAA,IAAI,KAAA,CAAM,eAAA,KAAoB,MAAA,EAAW,OAAA,CAAQ,mBAAmB,KAAA,CAAM,eAAA;AAC1E,EAAA,IAAI,KAAA,CAAM,iBAAA,KAAsB,MAAA,EAAW,OAAA,CAAQ,qBAAqB,KAAA,CAAM,iBAAA;AAC9E,EAAA,IAAI,KAAA,CAAM,KAAA,KAAU,MAAA,EAAW,OAAA,CAAQ,QAAQ,KAAA,CAAM,KAAA;AACrD,EAAA,OAAO,OAAA;AACT;AAEO,SAAS,uBAAuB,OAAA,EAAkC;AACvE,EAAA,IAAI,QAAQ,IAAA,KAAS,QAAA,IAAY,OAAA,CAAQ,UAAA,IAAc,QAAQ,SAAA,EAAW;AACxE,IAAA,OAAO,yBAAyB,OAAO,CAAA;AAAA,EACzC;AAEA,EAAA,IAAI,CAAC,QAAQ,WAAA,IAAe,CAAC,QAAQ,cAAA,IAAkB,CAAC,QAAQ,OAAA,EAAS;AACvE,IAAA,MAAM,IAAI,aAAA,CAAc,8GAAA,EAAgH,GAAG,CAAA;AAAA,EAC7I;AAEA,EAAA,MAAM,OAAA,GAAU,CAAA,EAAG,gBAAA,CAAiB,OAAA,CAAQ,WAAW,CAAC,CAAA,QAAA,CAAA;AACxD,EAAA,MAAM,OAAA,GAAU,QAAQ,OAAA,IAAW,KAAA;AACnC,EAAA,MAAM,MAAM,OAAA,CAAQ,cAAA;AACpB,EAAA,MAAM,UAAU,OAAA,CAAQ,OAAA;AACxB,EAAA,MAAM,sBAAA,GAAyB,2BAAA,CAA4B,OAAA,CAAQ,eAAe,CAAA;AAElF,EAAA,eAAe,OAAA,CAAW,KAAA,EAAe,IAAA,GAAkD,EAAC,EAAe;AACzG,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,EAAO,QAAA,EAAS;AACnC,IAAA,MAAM,QAAA,GAAW,MAAM,OAAA,CAAQ,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,KAAK,CAAA,EAAG,KAAA,GAAQ,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,GAAK,EAAE,CAAA,CAAA,EAAI;AAAA,MAC/E,GAAG,IAAA;AAAA,MACH,OAAA,EAAS;AAAA,QACP,MAAA,EAAQ,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAKR,cAAA,EAAgB,OAAA;AAAA;AAAA;AAAA;AAAA,QAIhB,aAAA,EAAe,CAAA,OAAA,EAAU,oBAAA,IAAuB,IAAK,GAAG,CAAA,CAAA;AAAA,QACxD,GAAI,KAAK,IAAA,GAAO,EAAE,gBAAgB,kBAAA,EAAoB,MAAA,EAAQ,uBAAA,EAAwB,GAAI,EAAC;AAAA,QAC3F,GAAG,IAAA,CAAK;AAAA;AACV,KACD,CAAA;AACD,IAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,IAAA,IAAI,IAAA;AACJ,IAAA,IAAI;AACF,MAAA,IAAA,GAAO,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,GAAI,KAAA,CAAA;AAAA,IACnC,CAAA,CAAA,MAAQ;AACN,MAAA,IAAA,GAAO,IAAA;AAAA,IACT;AACA,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,MAAM,UAAU,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,GACxC,OAAQ,IAAA,CAAgD,OAAA,IAAY,IAAA,CAA6B,KAAA,IAAS,wCAAwC,QAAA,CAAS,MAAM,EAAE,CAAA,GACnK,CAAA,qCAAA,EAAwC,SAAS,MAAM,CAAA,CAAA;AAC3D,MAAA,MAAM,IAAI,aAAA,CAAc,OAAA,EAAS,QAAA,CAAS,QAAQ,IAAI,CAAA;AAAA,IACxD;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,MAAM,KAAA,GAAQ,IAAI,eAAA,EAAgB;AAClC,IAAA,KAAA,CAAM,GAAA,CAAI,WAAA,EAAa,CAAA,GAAA,EAAM,OAAO,CAAA,CAAE,CAAA;AACtC,IAAA,OAAO,KAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,EAAA,KAAe;AACjC,IAAA,MAAM,QAAQ,WAAA,EAAY;AAC1B,IAAA,KAAA,CAAM,GAAA,CAAI,IAAA,EAAM,CAAA,GAAA,EAAM,EAAE,CAAA,CAAE,CAAA;AAC1B,IAAA,KAAA,CAAM,GAAA,CAAI,SAAS,GAAG,CAAA;AACtB,IAAA,OAAO,KAAA;AAAA,EACT,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,MAAM,aAAaA,QAAAA,EAAuC;AACxD,MAAA,MAAM,QAAQ,WAAA,EAAY;AAC1B,MAAA,KAAA,CAAM,GAAA,CAAI,UAAU,wEAAwE,CAAA;AAC5F,MAAA,IAAIA,QAAAA,EAAS,QAAQ,KAAA,CAAM,GAAA,CAAI,UAAU,CAAA,GAAA,EAAMA,QAAAA,CAAQ,MAAM,CAAA,CAAE,CAAA;AAC/D,MAAA,IAAIA,QAAAA,EAAS,MAAM,KAAA,CAAM,GAAA,CAAI,QAAQ,CAAA,GAAA,EAAMA,QAAAA,CAAQ,IAAI,CAAA,CAAE,CAAA;AACzD,MAAA,IAAIA,QAAAA,EAAS,QAAQ,KAAA,CAAM,GAAA,CAAI,QAAQ,CAAA,OAAA,EAAUA,QAAAA,CAAQ,MAAM,CAAA,CAAA,CAAG,CAAA;AAClE,MAAA,KAAA,CAAM,GAAA,CAAI,OAAA,EAAS,CAAA,EAAGA,QAAAA,EAAS,OAAA,IAAW,YAAY,CAAA,CAAA,EAAIA,QAAAA,EAAS,KAAA,IAAS,KAAK,CAAA,CAAE,CAAA;AACnF,MAAA,IAAIA,QAAAA,EAAS,OAAO,KAAA,CAAM,GAAA,CAAI,SAAS,MAAA,CAAOA,QAAAA,CAAQ,KAAK,CAAC,CAAA;AAC5D,MAAA,IAAIA,QAAAA,EAAS,QAAQ,KAAA,CAAM,GAAA,CAAI,UAAU,MAAA,CAAOA,QAAAA,CAAQ,MAAM,CAAC,CAAA;AAC/D,MAAA,MAAM,QAAA,GAAA,CAAY,MAAM,OAAA,CAAsB,mBAAA,EAAqB,EAAE,KAAA,EAAO,CAAA,EAAG,GAAA,CAAI,CAAC,GAAA,KAAQ,YAAA,CAAa,GAAA,EAAK,sBAAsB,CAAC,CAAA;AACrI,MAAA,OAAOA,QAAAA,EAAS,UAAA,GAAa,QAAA,CAAS,MAAA,CAAO,CAAC,YAAY,OAAA,CAAQ,UAAA,KAAeA,QAAAA,CAAQ,UAAU,CAAA,GAAI,QAAA;AAAA,IACzG,CAAA;AAAA,IACA,MAAM,WAAW,EAAA,EAAY;AAI3B,MAAA,IAAI,CAAC,MAAA,CAAO,EAAE,CAAA,EAAG,OAAO,IAAA;AACxB,MAAA,MAAM,KAAA,GAAQ,WAAW,EAAE,CAAA;AAC3B,MAAA,KAAA,CAAM,GAAA,CAAI,UAAU,wEAAwE,CAAA;AAC5F,MAAA,MAAM,OAAO,MAAM,OAAA,CAAsB,mBAAA,EAAqB,EAAE,OAAO,CAAA;AACvE,MAAA,OAAO,IAAA,CAAK,CAAC,CAAA,GAAI,YAAA,CAAa,KAAK,CAAC,CAAA,EAAG,sBAAsB,CAAA,GAAI,IAAA;AAAA,IACnE,CAAA;AAAA,IACA,MAAM,aAAA,GAAgB;AACpB,MAAA,MAAM,IAAI,aAAA,CAAc,mDAAA,EAAqD,GAAG,CAAA;AAAA,IAClF,CAAA;AAAA,IACA,MAAM,aAAA,GAAgB;AACpB,MAAA,MAAM,IAAI,aAAA,CAAc,mDAAA,EAAqD,GAAG,CAAA;AAAA,IAClF,CAAA;AAAA,IACA,MAAM,aAAA,GAAgB;AACpB,MAAA,MAAM,IAAI,aAAA,CAAc,mDAAA,EAAqD,GAAG,CAAA;AAAA,IAClF,CAAA;AAAA,IACA,MAAM,kBAAA,GAAqB;AACzB,MAAA,MAAM,IAAI,aAAA,CAAc,0DAAA,EAA4D,GAAG,CAAA;AAAA,IACzF,CAAA;AAAA,IACA,MAAM,kBAAA,GAAqB;AACzB,MAAA,MAAM,IAAI,aAAA,CAAc,0DAAA,EAA4D,GAAG,CAAA;AAAA,IACzF,CAAA;AAAA,IACA,MAAM,cAAA,GAAiB;AACrB,MAAA,MAAM,eAAe,WAAA,EAAY;AACjC,MAAA,YAAA,CAAa,GAAA,CAAI,UAAU,UAAU,CAAA;AACrC,MAAA,YAAA,CAAa,GAAA,CAAI,SAAS,gBAAgB,CAAA;AAC1C,MAAA,MAAM,WAAW,MAAM,OAAA,CAAsB,qBAAqB,EAAE,KAAA,EAAO,cAAc,CAAA;AACzF,MAAA,MAAM,eAAA,GAAkB,qBAAA,CAAsB,QAAA,EAAU,OAAO,CAAA;AAC/D,MAAA,IAAI,eAAA,CAAgB,MAAA,GAAS,CAAA,EAAG,OAAO,eAAA;AAEvC,MAAA,MAAM,KAAA,GAAQ,IAAI,eAAA,EAAgB;AAClC,MAAA,KAAA,CAAM,GAAA,CAAI,UAAU,GAAG,CAAA;AACvB,MAAA,KAAA,CAAM,GAAA,CAAI,SAAS,gBAAgB,CAAA;AACnC,MAAA,OAAA,CAAQ,MAAM,QAAuB,qBAAA,EAAuB,EAAE,OAAO,CAAA,EAAG,IAAI,aAAa,CAAA;AAAA,IAC3F,CAAA;AAAA,IACA,MAAM,cAAA,GAAiB;AACrB,MAAA,MAAM,IAAI,aAAA,CAAc,oDAAA,EAAsD,GAAG,CAAA;AAAA,IACnF,CAAA;AAAA,IACA,MAAM,cAAA,GAAiB;AACrB,MAAA,MAAM,IAAI,aAAA,CAAc,oDAAA,EAAsD,GAAG,CAAA;AAAA,IACnF,CAAA;AAAA,IACA,MAAM,cAAA,GAAiB;AACrB,MAAA,MAAM,IAAI,aAAA,CAAc,qDAAA,EAAuD,GAAG,CAAA;AAAA,IACpF,CAAA;AAAA,IACA,MAAM,WAAWA,QAAAA,EAAqC;AACpD,MAAA,MAAM,QAAQ,WAAA,EAAY;AAC1B,MAAA,KAAA,CAAM,GAAA,CAAI,UAAU,iCAAiC,CAAA;AACrD,MAAA,IAAIA,QAAAA,EAAS,QAAQ,KAAA,CAAM,GAAA,CAAI,UAAU,CAAA,GAAA,EAAMA,QAAAA,CAAQ,MAAM,CAAA,CAAE,CAAA;AAC/D,MAAA,IAAIA,QAAAA,EAAS,iBAAiB,KAAA,CAAM,GAAA,CAAI,oBAAoB,CAAA,GAAA,EAAMA,QAAAA,CAAQ,eAAe,CAAA,CAAE,CAAA;AAC3F,MAAA,IAAIA,QAAAA,EAAS,mBAAmB,KAAA,CAAM,GAAA,CAAI,sBAAsB,CAAA,GAAA,EAAMA,QAAAA,CAAQ,iBAAiB,CAAA,CAAE,CAAA;AACjG,MAAA,IAAIA,QAAAA,EAAS,YAAY,KAAA,CAAM,GAAA,CAAI,eAAe,CAAA,GAAA,EAAMA,QAAAA,CAAQ,UAAU,CAAA,CAAE,CAAA;AAC5E,MAAA,IAAIA,QAAAA,EAAS,eAAe,KAAA,CAAM,GAAA,CAAI,kBAAkB,CAAA,GAAA,EAAMA,QAAAA,CAAQ,aAAa,CAAA,CAAE,CAAA;AACrF,MAAA,IAAIA,QAAAA,EAAS,MAAA,EAAQ,KAAA,CAAM,GAAA,CAAI,IAAA,EAAM,CAAA,sBAAA,EAAyBA,QAAAA,CAAQ,MAAM,CAAA,wBAAA,EAA2BA,QAAAA,CAAQ,MAAM,CAAA,EAAA,CAAI,CAAA;AACzH,MAAA,KAAA,CAAM,GAAA,CAAI,SAAS,iBAAiB,CAAA;AACpC,MAAA,IAAIA,QAAAA,EAAS,OAAO,KAAA,CAAM,GAAA,CAAI,SAAS,MAAA,CAAOA,QAAAA,CAAQ,KAAK,CAAC,CAAA;AAC5D,MAAA,IAAIA,QAAAA,EAAS,QAAQ,KAAA,CAAM,GAAA,CAAI,UAAU,MAAA,CAAOA,QAAAA,CAAQ,MAAM,CAAC,CAAA;AAM/D,MAAA,IAAI;AACF,QAAA,OAAA,CAAQ,MAAM,QAAoB,iBAAA,EAAmB,EAAE,OAAO,CAAA,EAAG,IAAI,UAAU,CAAA;AAAA,MACjF,SAAS,GAAA,EAAK;AAKZ,QAAA,IAAI,CAACA,QAAAA,EAAS,UAAA,EAAY,MAAM,GAAA;AAChC,QAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAoB,sBAAA,EAAwB;AAAA,UAC7D,MAAA,EAAQ,MAAA;AAAA,UACR,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,YACnB,eAAeA,QAAAA,CAAQ,UAAA;AAAA,YACvB,OAAA,EAASA,SAAQ,KAAA,IAAS;AAAA,WAC3B;AAAA,SACF,CAAA;AACD,QAAA,OAAA,CAAQ,IAAA,IAAQ,EAAC,EAAG,GAAA,CAAI,UAAU,CAAA;AAAA,MACpC;AAAA,IACF,CAAA;AAAA,IACA,MAAM,SAAS,EAAA,EAAY;AACzB,MAAA,MAAM,KAAA,GAAQ,WAAW,EAAE,CAAA;AAC3B,MAAA,KAAA,CAAM,GAAA,CAAI,UAAU,iCAAiC,CAAA;AAIrD,MAAA,IAAI,OAAmB,EAAC;AACxB,MAAA,IAAI;AACF,QAAA,IAAA,GAAO,MAAM,OAAA,CAAoB,iBAAA,EAAmB,EAAE,OAAO,CAAA;AAAA,MAC/D,CAAA,CAAA,MAAQ;AAAA,MAER;AACA,MAAA,IAAI,KAAK,CAAC,CAAA,SAAU,UAAA,CAAW,IAAA,CAAK,CAAC,CAAC,CAAA;AAGtC,MAAA,IAAI;AACF,QAAA,MAAM,GAAA,GAAM,MAAM,OAAA,CAAyB,oBAAA,EAAsB;AAAA,UAC/D,MAAA,EAAQ,MAAA;AAAA,UACR,MAAM,IAAA,CAAK,SAAA,CAAU,EAAE,UAAA,EAAY,IAAI;AAAA,SACxC,CAAA;AACD,QAAA,OAAO,GAAA,GAAM,UAAA,CAAW,GAAG,CAAA,GAAI,IAAA;AAAA,MACjC,CAAA,CAAA,MAAQ;AACN,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,IACF,CAAA;AAAA,IACA,MAAM,cAAA,CAAe,EAAA,EAAY,SAAA,EAAoB;AAInD,MAAA,MAAM,GAAA,GAAM,MAAM,OAAA,CAAyB,0BAAA,EAA4B;AAAA,QACrE,MAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAM,KAAK,SAAA,CAAU,EAAE,YAAY,EAAA,EAAI,WAAA,EAAa,SAAA,IAAa,IAAA,EAAM;AAAA,OACxE,CAAA;AACD,MAAA,OAAO,GAAA,GAAM,UAAA,CAAW,GAAG,CAAA,GAAI,IAAA;AAAA,IACjC,CAAA;AAAA,IACA,MAAM,YAAY,KAAA,EAUf;AACD,MAAA,MAAM,QAAA,GAAW,KAAA,CAAM,KAAA,CAAM,MAAA,CAAO,CAAC,GAAA,EAAK,IAAA,KAAS,GAAA,GAAM,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,SAAA,EAAW,CAAC,CAAA;AAC1F,MAAA,MAAM,aAAA,GAAgB,MAAM,aAAA,IAAiB,CAAA;AAC7C,MAAA,MAAM,aAAA,GAAgB,MAAM,aAAA,IAAiB,CAAA;AAC7C,MAAA,MAAM,QAAQ,IAAA,CAAK,KAAA,CAAA,CAAO,WAAW,aAAA,GAAgB,aAAA,IAAiB,GAAG,CAAA,GAAI,GAAA;AAC7E,MAAA,MAAM,CAAC,KAAK,CAAA,GAAI,MAAM,QAAoB,iBAAA,EAAmB;AAAA,QAC3D,MAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,UACnB,SAAA,EAAW,OAAA;AAAA,UACX,WAAA,EAAa,MAAM,UAAA,IAAc,IAAA;AAAA,UACjC,aAAA,EAAe,MAAM,YAAA,IAAgB,IAAA;AAAA,UACrC,cAAA,EAAgB,MAAM,aAAA,IAAiB,IAAA;AAAA,UACvC,QAAA,EAAU,MAAM,QAAA,IAAY,KAAA;AAAA,UAC5B,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA;AAAA,UACtB,QAAA;AAAA,UACA,cAAA,EAAgB,aAAA;AAAA,UAChB,cAAA,EAAgB,aAAA;AAAA,UAChB,aAAA,EAAe,MAAM,YAAA,IAAgB,IAAA;AAAA,UACrC,KAAA;AAAA,UACA,MAAA,EAAQ,MAAA;AAAA,UACR,gBAAA,EAAkB,SAAA;AAAA,UAClB,kBAAA,EAAoB;AAAA,SACrB;AAAA,OACF,CAAA;AACD,MAAA,IAAI,CAAC,KAAA,EAAO,MAAM,IAAI,aAAA,CAAc,sCAAsC,GAAG,CAAA;AAC7E,MAAA,IAAI,KAAA,CAAM,MAAM,MAAA,EAAQ;AACtB,QAAA,MAAM,QAAwB,sBAAA,EAAwB;AAAA,UACpD,MAAA,EAAQ,MAAA;AAAA,UACR,MAAM,IAAA,CAAK,SAAA,CAAU,MAAM,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,YAC9C,UAAU,KAAA,CAAM,EAAA;AAAA,YAChB,UAAA,EAAY,MAAA,CAAO,IAAA,CAAK,SAAS,CAAA;AAAA,YACjC,MAAM,IAAA,CAAK,IAAA;AAAA,YACX,GAAA,EAAK,KAAK,GAAA,IAAO,IAAA;AAAA,YACjB,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,YAAY,IAAA,CAAK,SAAA;AAAA,YACjB,KAAA,EAAO,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,SAAA;AAAA,YAC5B,SAAA,EAAW,KAAK,QAAA,IAAY;AAAA,YAC5B,CAAC;AAAA,SACJ,CAAA;AAAA,MACH;AACA,MAAA,OAAO,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,EAAE,CAAA;AAAA,IAC/B,CAAA;AAAA,IACA,MAAM,WAAA,CAAY,EAAA,EAAY,KAAA,EAAiD;AAC7E,MAAA,MAAM,QAAoB,iBAAA,EAAmB;AAAA,QAC3C,MAAA,EAAQ,OAAA;AAAA,QACR,KAAA,EAAO,WAAW,EAAE,CAAA;AAAA,QACpB,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,kBAAA,CAAmB,KAAK,CAAC;AAAA,OAC/C,CAAA;AACD,MAAA,OAAO,IAAA,CAAK,SAAS,EAAE,CAAA;AAAA,IACzB,CAAA;AAAA,IACA,MAAM,WAAW,KAAA,EAyBd;AAID,MAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAgB,sBAAA,EAAwB;AAAA,QAC5D,MAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,UACnB,WAAA,EAAa,MAAM,QAAA,IAAY,OAAA;AAAA,UAC/B,OAAA,EAAS,KAAA,CAAM,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,YAClC,YAAY,IAAA,CAAK,SAAA;AAAA,YACjB,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,aAAA,EAAe,KAAK,YAAA,IAAgB;AAAA,WACtC,CAAE,CAAA;AAAA,UACF,aAAA,EAAe,MAAA,CAAO,KAAA,CAAM,UAAA,IAAc,MAAS,CAAA;AAAA,UACnD,eAAA,EAAiB,KAAA,CAAM,QAAA,EAAU,IAAA,IAAQ,IAAA;AAAA,UACzC,gBAAA,EAAkB,KAAA,CAAM,QAAA,EAAU,KAAA,IAAS,IAAA;AAAA,UAC3C,UAAA,EAAY,MAAM,QAAA,IAAY,KAAA;AAAA,UAC9B,eAAA,EAAiB,MAAM,YAAA,IAAgB,IAAA;AAAA,UACvC,gBAAA,EAAkB,MAAM,aAAA,IAAiB,CAAA;AAAA;AAAA;AAAA,UAGzC,kBAAA,EAAoB,MAAM,eAAA,GACtB;AAAA,YACE,WAAA,EAAa,MAAM,eAAA,CAAgB,UAAA;AAAA,YACnC,MAAA,EAAQ,MAAM,eAAA,CAAgB,MAAA;AAAA,YAC9B,MAAA,EAAQ,KAAA,CAAM,eAAA,CAAgB,MAAA,IAAU,IAAA;AAAA,YACxC,UAAA,EAAY,KAAA,CAAM,eAAA,CAAgB,UAAA,IAAc,IAAA;AAAA,YAChD,QAAA,EAAU,KAAA,CAAM,eAAA,CAAgB,QAAA,IAAY,IAAA;AAAA,YAC5C,IAAA,EAAM,MAAM,eAAA,CAAgB,IAAA;AAAA,YAC5B,KAAA,EAAO,MAAM,eAAA,CAAgB,KAAA;AAAA,YAC7B,OAAA,EAAS,KAAA,CAAM,eAAA,CAAgB,OAAA,IAAW,IAAA;AAAA,YAC1C,SAAA,EAAW,KAAA,CAAM,eAAA,CAAgB,SAAA,IAAa,IAAA;AAAA,YAC9C,KAAA,EAAO,KAAA,CAAM,eAAA,CAAgB,KAAA,IAAS,IAAA;AAAA,YACtC,KAAA,EAAO,KAAA,CAAM,eAAA,CAAgB,KAAA,IAAS;AAAA,WACxC,GACA,IAAA;AAAA,UACJ,gBAAA,EAAkB,MAAM,aAAA,IAAiB,IAAA;AAAA,UACzC,OAAA,EAAS,MAAM,KAAA,IAAS;AAAA,SACzB;AAAA,OACF,CAAA;AACD,MAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,CAAK,QAAA,CAAS,OAAO,CAAA;AACzC,MAAA,IAAI,CAAC,KAAA,EAAO,MAAM,IAAI,aAAA,CAAc,gDAAgD,GAAG,CAAA;AACvF,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAAA,IACA,MAAM,cAAcA,QAAAA,EAAwC;AAC1D,MAAA,MAAM,QAAQ,WAAA,EAAY;AAC1B,MAAA,KAAA,CAAM,GAAA,CAAI,UAAU,GAAG,CAAA;AACvB,MAAA,KAAA,CAAM,GAAA,CAAI,SAAS,gBAAgB,CAAA;AACnC,MAAA,IAAIA,QAAAA,EAAS,MAAA,EAAQ,KAAA,CAAM,GAAA,CAAI,MAAM,CAAA,mBAAA,EAAsBA,QAAAA,CAAQ,MAAM,CAAA,mBAAA,EAAsBA,QAAAA,CAAQ,MAAM,CAAA,eAAA,EAAkBA,QAAAA,CAAQ,MAAM,CAAA,EAAA,CAAI,CAAA;AACjJ,MAAA,IAAIA,QAAAA,EAAS,OAAO,KAAA,CAAM,GAAA,CAAI,SAAS,MAAA,CAAOA,QAAAA,CAAQ,KAAK,CAAC,CAAA;AAC5D,MAAA,IAAIA,QAAAA,EAAS,QAAQ,KAAA,CAAM,GAAA,CAAI,UAAU,MAAA,CAAOA,QAAAA,CAAQ,MAAM,CAAC,CAAA;AAC/D,MAAA,OAAA,CAAQ,MAAM,QAAuB,oBAAA,EAAsB,EAAE,OAAO,CAAA,EAAG,IAAI,aAAa,CAAA;AAAA,IAC1F,CAAA;AAAA,IACA,MAAM,YAAY,EAAA,EAAY;AAC5B,MAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAuB,oBAAA,EAAsB,EAAE,KAAA,EAAO,UAAA,CAAW,EAAE,CAAA,EAAG,CAAA;AACzF,MAAA,OAAO,KAAK,CAAC,CAAA,GAAI,cAAc,IAAA,CAAK,CAAC,CAAC,CAAA,GAAI,IAAA;AAAA,IAC5C,CAAA;AAAA,IACA,MAAM,gBAAgB,KAAA,EAAyC;AAC7D,MAAA,MAAM,GAAA,GAAM,MAAM,OAAA,CAAqC,2BAAA,EAA6B;AAAA,QAClF,MAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,UACnB,WAAA,EAAa,OAAA;AAAA,UACb,SAAS,KAAA,CAAM,KAAA;AAAA,UACf,MAAA,EAAQ,MAAM,IAAA,IAAQ;AAAA,SACvB;AAAA,OACF,CAAA;AACD,MAAA,MAAM,WAAW,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,GAAI,GAAA,CAAI,CAAC,CAAA,GAAI,GAAA;AAC/C,MAAA,IAAI,CAAC,QAAA,EAAU,MAAM,IAAI,aAAA,CAAc,0CAA0C,GAAG,CAAA;AACpF,MAAA,OAAO,cAAc,QAAQ,CAAA;AAAA,IAC/B,CAAA;AAAA,IACA,MAAM,aAAA,CAAc,UAAA,EAAoB,QAAA,EAAkB;AACxD,MAAA,MAAM,MAAA,GAAA,CAAU,UAAA,IAAc,EAAA,EAAI,OAAA,CAAQ,OAAO,EAAE,CAAA;AACnD,MAAA,IAAI,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG,OAAO,EAAC;AACjC,MAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAA4B,yBAAA,EAA2B;AAAA,QACxE,MAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,UACnB,WAAA,EAAa,OAAA;AAAA,UACb,aAAA,EAAe,MAAA;AAAA,UACf,UAAA,EAAY;AAAA,SACb;AAAA,OACF,CAAA;AACD,MAAA,OAAA,CAAQ,IAAA,IAAQ,EAAC,EAAG,GAAA,CAAI,CAAC,GAAA,MAAS;AAAA,QAChC,QAAQ,GAAA,CAAI,OAAA;AAAA,QACZ,MAAM,GAAA,CAAI,IAAA;AAAA,QACV,OAAA,EAAS,IAAI,OAAA,IAAW,MAAA;AAAA,QACxB,IAAA,EAAM,MAAA,CAAO,GAAA,CAAI,IAAA,IAAQ,CAAC,CAAA;AAAA,QAC1B,UAAU,MAAA,CAAO,GAAA,CAAI,SAAA,IAAa,GAAA,CAAI,QAAQ,CAAC,CAAA;AAAA,QAC/C,WAAW,GAAA,CAAI,UAAA,IAAc,OAAO,IAAA,GAAO,MAAA,CAAO,IAAI,UAAU,CAAA;AAAA,QAChE,UAAA,EAAY,IAAI,YAAA,IAAgB,MAAA;AAAA,QAChC,UAAA,EAAY,IAAI,YAAA,IAAgB,MAAA;AAAA,QAChC,IAAA,EAAM,OAAA,CAAQ,GAAA,CAAI,IAAI;AAAA,OACxB,CAAE,CAAA;AAAA,IACJ,CAAA;AAAA,IACA,MAAM,sBAAsB,UAAA,EAAoB;AAC9C,MAAA,IAAI,CAAC,MAAA,CAAO,UAAU,CAAA,SAAU,EAAC;AACjC,MAAA,MAAM,KAAA,GAAQ,IAAI,eAAA,EAAgB;AAClC,MAAA,KAAA,CAAM,GAAA,CAAI,UAAU,sGAAsG,CAAA;AAC1H,MAAA,KAAA,CAAM,GAAA,CAAI,cAAc,kBAAkB,CAAA;AAC1C,MAAA,KAAA,CAAM,GAAA,CAAI,UAAA,EAAY,CAAA,GAAA,EAAM,UAAU,CAAA,CAAE,CAAA;AACxC,MAAA,KAAA,CAAM,GAAA,CAAI,SAAS,iCAAiC,CAAA;AAKpD,MAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAsB,WAAA,EAAa,EAAE,KAAA,EAAO,CAAA,CAAE,KAAA,CAAM,MAAM,EAAkB,CAAA;AAC/F,MAAA,OAAO,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,MAAS;AAAA,QACxB,IAAI,GAAA,CAAI,EAAA;AAAA,QACR,KAAA,EAAO,IAAI,KAAA,IAAS,MAAA;AAAA,QACpB,SAAA,EAAW,IAAI,SAAA,IAAa,MAAA;AAAA,QAC5B,KAAA,EAAO,IAAI,KAAA,IAAS,MAAA;AAAA,QACpB,UAAA,EAAY,IAAI,WAAA,IAAe,EAAA;AAAA,QAC/B,MAAA,EAAQ,IAAI,MAAA,IAAU,EAAA;AAAA,QACtB,MAAA,EAAQ,IAAI,MAAA,IAAU,MAAA;AAAA,QACtB,UAAA,EAAY,IAAI,UAAA,IAAc,MAAA;AAAA,QAC9B,QAAA,EAAU,IAAI,QAAA,IAAY,MAAA;AAAA,QAC1B,IAAA,EAAM,IAAI,IAAA,IAAQ,EAAA;AAAA,QAClB,KAAA,EAAO,IAAI,KAAA,IAAS,EAAA;AAAA,QACpB,OAAA,EAAS,IAAI,OAAA,IAAW,MAAA;AAAA,QACxB,SAAA,EAAW,IAAI,UAAA,IAAc;AAAA,OAC/B,CAAE,CAAA;AAAA,IACJ,CAAA;AAAA,IACA,MAAM,eAAe,KAAA,EAAiG;AACpH,MAAA,MAAM,CAAC,QAAQ,CAAA,GAAI,MAAM,QAAuB,oBAAA,EAAsB;AAAA,QACpE,MAAA,EAAQ,MAAA;AAAA,QACR,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,UACnB,SAAA,EAAW,OAAA;AAAA,UACX,YAAY,KAAA,CAAM,SAAA;AAAA,UAClB,SAAA,EAAW,MAAM,QAAA,IAAY,EAAA;AAAA,UAC7B,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA;AAAA,UACtB,KAAA,EAAO,MAAM,KAAA,IAAS,IAAA;AAAA,UACtB,KAAA,EAAO,MAAM,KAAA,IAAS;AAAA,SACvB;AAAA,OACF,CAAA;AACD,MAAA,IAAI,CAAC,QAAA,EAAU,MAAM,IAAI,aAAA,CAAc,yCAAyC,GAAG,CAAA;AACnF,MAAA,OAAO,cAAc,QAAQ,CAAA;AAAA,IAC/B,CAAA;AAAA,IACA,MAAM,cAAA,CAAe,EAAA,EAAY,KAAA,EAAuH;AACtJ,MAAA,MAAM,UAAmC,EAAC;AAC1C,MAAA,IAAI,KAAA,CAAM,SAAA,KAAc,MAAA,EAAW,OAAA,CAAQ,aAAa,KAAA,CAAM,SAAA;AAC9D,MAAA,IAAI,KAAA,CAAM,QAAA,KAAa,MAAA,EAAW,OAAA,CAAQ,YAAY,KAAA,CAAM,QAAA;AAC5D,MAAA,IAAI,KAAA,CAAM,KAAA,KAAU,MAAA,EAAW,OAAA,CAAQ,QAAQ,KAAA,CAAM,KAAA;AACrD,MAAA,IAAI,KAAA,CAAM,KAAA,KAAU,MAAA,EAAW,OAAA,CAAQ,QAAQ,KAAA,CAAM,KAAA;AACrD,MAAA,IAAI,KAAA,CAAM,KAAA,KAAU,MAAA,EAAW,OAAA,CAAQ,QAAQ,KAAA,CAAM,KAAA;AACrD,MAAA,MAAM,CAAC,QAAQ,CAAA,GAAI,MAAM,QAAuB,oBAAA,EAAsB;AAAA,QACpE,MAAA,EAAQ,OAAA;AAAA,QACR,KAAA,EAAO,WAAW,EAAE,CAAA;AAAA,QACpB,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,OAAO;AAAA,OAC7B,CAAA;AACD,MAAA,IAAI,CAAC,QAAA,EAAU,MAAM,IAAI,aAAA,CAAc,yCAAyC,GAAG,CAAA;AACnF,MAAA,OAAO,cAAc,QAAQ,CAAA;AAAA,IAC/B,CAAA;AAAA,IACA,MAAM,eAAe,EAAA,EAAY;AAC/B,MAAA,MAAM,OAAA,CAAiB,sBAAsB,EAAE,MAAA,EAAQ,UAAU,KAAA,EAAO,UAAA,CAAW,EAAE,CAAA,EAAG,CAAA;AAAA,IAC1F,CAAA;AAAA,IACA,MAAM,cAAcA,QAAAA,EAAwC;AAC1D,MAAA,MAAM,QAAQ,WAAA,EAAY;AAC1B,MAAA,KAAA,CAAM,GAAA,CAAI,UAAU,GAAG,CAAA;AACvB,MAAA,KAAA,CAAM,GAAA,CAAI,SAAS,iBAAiB,CAAA;AACpC,MAAA,IAAIA,QAAAA,EAAS,QAAQ,KAAA,CAAM,GAAA,CAAI,UAAU,CAAA,GAAA,EAAMA,QAAAA,CAAQ,MAAM,CAAA,CAAE,CAAA;AAC/D,MAAA,IAAIA,QAAAA,EAAS,MAAM,KAAA,CAAM,GAAA,CAAI,QAAQ,CAAA,GAAA,EAAMA,QAAAA,CAAQ,IAAI,CAAA,CAAE,CAAA;AACzD,MAAA,IAAIA,QAAAA,EAAS,QAAQ,KAAA,CAAM,GAAA,CAAI,SAAS,CAAA,OAAA,EAAUA,QAAAA,CAAQ,MAAM,CAAA,CAAA,CAAG,CAAA;AACnE,MAAA,IAAIA,QAAAA,EAAS,OAAO,KAAA,CAAM,GAAA,CAAI,SAAS,MAAA,CAAOA,QAAAA,CAAQ,KAAK,CAAC,CAAA;AAC5D,MAAA,IAAIA,QAAAA,EAAS,QAAQ,KAAA,CAAM,GAAA,CAAI,UAAU,MAAA,CAAOA,QAAAA,CAAQ,MAAM,CAAC,CAAA;AAC/D,MAAA,OAAA,CAAQ,MAAM,QAAuB,oBAAA,EAAsB,EAAE,OAAO,CAAA,EAAG,IAAI,aAAa,CAAA;AAAA,IAC1F,CAAA;AAAA,IACA,MAAM,YAAY,EAAA,EAAY;AAC5B,MAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAuB,oBAAA,EAAsB,EAAE,KAAA,EAAO,UAAA,CAAW,EAAE,CAAA,EAAG,CAAA;AACzF,MAAA,OAAO,KAAK,CAAC,CAAA,GAAI,cAAc,IAAA,CAAK,CAAC,CAAC,CAAA,GAAI,IAAA;AAAA,IAC5C,CAAA;AAAA,IACA,MAAM,cAAA,GAAiB;AACrB,MAAA,MAAM,IAAI,aAAA,CAAc,oDAAA,EAAsD,GAAG,CAAA;AAAA,IACnF,CAAA;AAAA,IACA,MAAM,cAAA,GAAiB;AACrB,MAAA,MAAM,IAAI,aAAA,CAAc,oDAAA,EAAsD,GAAG,CAAA;AAAA,IACnF,CAAA;AAAA,IACA,MAAM,cAAA,GAAiB;AACrB,MAAA,MAAM,IAAI,aAAA,CAAc,qDAAA,EAAuD,GAAG,CAAA;AAAA,IACpF;AAAA,GACF;AACF;AAEA,SAAS,WAAA,CAAY,KAAa,MAAA,EAA6D;AAC7F,EAAA,MAAM,KAAA,GAAQ,IAAI,eAAA,EAAgB;AAClC,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,EAAG;AACjD,IAAA,IAAI,UAAU,MAAA,EAAW,KAAA,CAAM,IAAI,GAAA,EAAK,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,EACvD;AACA,EAAA,MAAM,UAAA,GAAa,MAAM,QAAA,EAAS;AAClC,EAAA,OAAO,UAAA,GAAa,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA,GAAK,GAAA;AAC/C;AAEA,SAAS,sBAAA,CAAuB,SAAkC,OAAA,EAAgD;AAChH,EAAA,MAAM,QAAA,GAAW,QAAQ,QAAA,IAAY,OAAO,QAAQ,QAAA,KAAa,QAAA,GAC7D,QAAQ,QAAA,GACR,IAAA;AACJ,EAAA,MAAM,GAAA,GAAM;AAAA,IACV,IAAI,OAAA,CAAQ,EAAA;AAAA,IACZ,WAAW,OAAA,CAAQ,QAAA;AAAA,IACnB,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,aAAa,OAAA,CAAQ,WAAA;AAAA,IACrB,OAAO,OAAA,CAAQ,KAAA;AAAA,IACf,kBAAkB,OAAA,CAAQ,cAAA;AAAA,IAC1B,UAAU,OAAA,CAAQ,QAAA;AAAA,IAClB,QAAQ,OAAA,CAAQ,MAAA;AAAA,IAChB,iBAAiB,OAAA,CAAQ,cAAA;AAAA,IACzB,KAAK,OAAA,CAAQ,GAAA;AAAA,IACb,YAAY,OAAA,CAAQ,SAAA;AAAA,IACpB,UAAU,OAAA,CAAQ,QAAA;AAAA,IAClB,MAAA,EAAQ,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,MAAM,IAChC,OAAA,CAAQ,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAA2B;AAC/C,MAAA,MAAMC,IAAAA,GAAM,KAAA;AACZ,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,MAAA,CAAOA,IAAAA,CAAI,EAAA,IAAM,EAAE,CAAA;AAAA,QACvB,YAAY,MAAA,CAAOA,IAAAA,CAAI,SAAA,IAAa,OAAA,CAAQ,MAAM,EAAE,CAAA;AAAA,QACpD,GAAA,EAAK,MAAA,CAAOA,IAAAA,CAAI,GAAA,IAAO,EAAE,CAAA;AAAA,QACzB,QAAA,EAAWA,KAAI,OAAA,IAAyC,IAAA;AAAA,QACxD,UAAA,EAAaA,KAAI,SAAA,IAA2C,CAAA;AAAA,QAC5D,UAAA,EAAaA,KAAI,SAAA,IAA4C,KAAA;AAAA,QAC7D,UAAA,EAAaA,KAAI,SAAA,IAA2C;AAAA,OAC9D;AAAA,IACF,CAAC,IACC,EAAC;AAAA,IACL,WAAA,EAAc,OAAA,CAAQ,UAAA,IAAc,QAAA,EAAU,EAAA;AAAA,IAC9C,UAAU,QAAA,GAAW,EAAE,IAAA,EAAM,QAAA,CAAS,MAAkC,GAAI,IAAA;AAAA,IAC5E,aAAa,OAAA,CAAQ,UAAA;AAAA,IACrB,QAAQ,OAAA,CAAQ,MAAA;AAAA,IAChB,aAAa,OAAA,CAAQ,UAAA;AAAA,IACrB,YAAY,OAAA,CAAQ,SAAA;AAAA,IACpB,YAAY,OAAA,CAAQ;AAAA,GACtB;AACA,EAAA,OAAO,YAAA,CAAa,KAAK,OAAO,CAAA;AAClC;AAEA,SAAS,wBAAwB,QAAA,EAAmC;AAClE,EAAA,OAAO;AAAA,IACL,IAAI,QAAA,CAAS,EAAA;AAAA,IACb,QAAA,EAAW,SAAS,QAAA,IAAmC,QAAA;AAAA,IACvD,MAAM,QAAA,CAAS,IAAA;AAAA,IACf,IAAA,EAAO,QAAA,CAAS,IAAA,IAA+B,OAAA,CAAQ,SAAS,IAAc,CAAA;AAAA,IAC9E,WAAA,EAAc,SAAS,WAAA,IAA6C,IAAA;AAAA,IACpE,QAAA,EAAW,SAAS,QAAA,IAA0C,IAAA;AAAA,IAC9D,SAAA,EAAY,SAAS,SAAA,IAA2C,CAAA;AAAA,IAChE,QAAA,EAAW,SAAS,QAAA,IAA0C,IAAA;AAAA,IAC9D,SAAA,EAAY,QAAA,CAAS,SAAA,IAA2C,MAAA;AAAO,GACzE;AACF;AAEA,SAAS,yBAAyB,OAAA,EAAkC;AAClE,EAAA,IAAI,CAAC,OAAA,CAAQ,UAAA,IAAc,CAAC,QAAQ,SAAA,EAAW;AAC7C,IAAA,MAAM,IAAI,aAAA,CAAc,0DAAA,EAA4D,GAAG,CAAA;AAAA,EACzF;AAEA,EAAA,MAAM,OAAA,GAAU,QAAQ,OAAA,IAAW,KAAA;AACnC,EAAA,MAAM,UAAA,GAAa,gBAAA,CAAiB,OAAA,CAAQ,UAAU,CAAA;AACtD,EAAA,MAAM,SAAA,GAAY,kBAAA,CAAmB,OAAA,CAAQ,SAAS,CAAA;AACtD,EAAA,MAAM,sBAAA,GAAyB,2BAAA,CAA4B,OAAA,CAAQ,eAAe,CAAA;AAElF,EAAA,eAAe,OAAA,CAAW,IAAA,EAAc,IAAA,GAAoB,EAAC,EAAe;AAC1E,IAAA,MAAM,QAAA,GAAW,MAAM,OAAA,CAAQ,CAAA,EAAG,UAAU,oBAAoB,SAAS,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA;AAC7F,IAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,IAAA,IAAI,IAAA;AACJ,IAAA,IAAI;AACF,MAAA,IAAA,GAAO,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,GAAI,KAAA,CAAA;AAAA,IACnC,CAAA,CAAA,MAAQ;AACN,MAAA,IAAA,GAAO,IAAA;AAAA,IACT;AACA,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,MAAM,UAAU,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,GACxC,OAAQ,IAAA,CAAgD,OAAA,IAAY,IAAA,CAA6B,KAAA,IAAS,+CAA+C,QAAA,CAAS,MAAM,EAAE,CAAA,GAC1K,CAAA,4CAAA,EAA+C,SAAS,MAAM,CAAA,CAAA;AAClE,MAAA,MAAM,IAAI,aAAA,CAAc,OAAA,EAAS,QAAA,CAAS,QAAQ,IAAI,CAAA;AAAA,IACxD;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAO;AAAA,IACL,MAAM,aAAaD,QAAAA,EAAuC;AACxD,MAAA,IAAIA,UAAS,IAAA,EAAM;AACjB,QAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,UAAA,CAAWA,SAAQ,IAAI,CAAA;AAClD,QAAA,OAAO,OAAA,GAAU,CAAC,OAAO,CAAA,GAAI,EAAC;AAAA,MAChC;AAEA,MAAA,MAAM,QAAA,GAAW,MAAM,OAAA,CAAuD,WAAA,CAAY,WAAA,EAAa;AAAA,QACrG,QAAQA,QAAAA,EAAS,MAAA;AAAA,QACjB,YAAYA,QAAAA,EAAS,UAAA;AAAA,QACrB,QAAQA,QAAAA,EAAS,MAAA;AAAA,QACjB,OAAOA,QAAAA,EAAS,KAAA;AAAA,QAChB,QAAQA,QAAAA,EAAS,MAAA;AAAA,QACjB,SAASA,QAAAA,EAAS,OAAA;AAAA,QAClB,OAAOA,QAAAA,EAAS;AAAA,OACjB,CAAC,CAAA;AACF,MAAA,OAAA,CAAQ,QAAA,CAAS,QAAA,IAAY,EAAC,EAAG,GAAA,CAAI,CAAC,OAAA,KAAY,sBAAA,CAAuB,OAAA,EAAS,sBAAsB,CAAC,CAAA;AAAA,IAC3G,CAAA;AAAA,IACA,MAAM,WAAW,EAAA,EAAY;AAC3B,MAAA,MAAM,WAAW,MAAM,OAAA,CAAsD,aAAa,kBAAA,CAAmB,EAAE,CAAC,CAAA,CAAE,CAAA;AAClH,MAAA,OAAO,SAAS,OAAA,GAAU,sBAAA,CAAuB,QAAA,CAAS,OAAA,EAAS,sBAAsB,CAAA,GAAI,IAAA;AAAA,IAC/F,CAAA;AAAA,IACA,MAAM,aAAA,GAAgB;AACpB,MAAA,MAAM,IAAI,aAAA,CAAc,mDAAA,EAAqD,GAAG,CAAA;AAAA,IAClF,CAAA;AAAA,IACA,MAAM,aAAA,GAAgB;AACpB,MAAA,MAAM,IAAI,aAAA,CAAc,mDAAA,EAAqD,GAAG,CAAA;AAAA,IAClF,CAAA;AAAA,IACA,MAAM,aAAA,GAAgB;AACpB,MAAA,MAAM,IAAI,aAAA,CAAc,mDAAA,EAAqD,GAAG,CAAA;AAAA,IAClF,CAAA;AAAA,IACA,MAAM,kBAAA,GAAqB;AACzB,MAAA,MAAM,IAAI,aAAA,CAAc,0DAAA,EAA4D,GAAG,CAAA;AAAA,IACzF,CAAA;AAAA,IACA,MAAM,kBAAA,GAAqB;AACzB,MAAA,MAAM,IAAI,aAAA,CAAc,0DAAA,EAA4D,GAAG,CAAA;AAAA,IACzF,CAAA;AAAA,IACA,MAAM,cAAA,GAAiB;AACrB,MAAA,MAAM,QAAA,GAAW,MAAM,OAAA,CAAyD,aAAa,CAAA;AAC7F,MAAA,OAAA,CAAQ,QAAA,CAAS,UAAA,IAAc,EAAC,EAAG,IAAI,uBAAuB,CAAA;AAAA,IAChE,CAAA;AAAA,IACA,MAAM,cAAA,GAAiB;AACrB,MAAA,MAAM,IAAI,aAAA,CAAc,oDAAA,EAAsD,GAAG,CAAA;AAAA,IACnF,CAAA;AAAA,IACA,MAAM,cAAA,GAAiB;AACrB,MAAA,MAAM,IAAI,aAAA,CAAc,oDAAA,EAAsD,GAAG,CAAA;AAAA,IACnF,CAAA;AAAA,IACA,MAAM,cAAA,GAAiB;AACrB,MAAA,MAAM,IAAI,aAAA,CAAc,qDAAA,EAAuD,GAAG,CAAA;AAAA,IACpF,CAAA;AAAA,IACA,MAAM,UAAA,GAAa;AACjB,MAAA,MAAM,IAAI,aAAA,CAAc,gDAAA,EAAkD,GAAG,CAAA;AAAA,IAC/E,CAAA;AAAA,IACA,MAAM,QAAA,GAAW;AACf,MAAA,MAAM,IAAI,aAAA,CAAc,gDAAA,EAAkD,GAAG,CAAA;AAAA,IAC/E,CAAA;AAAA,IACA,MAAM,WAAA,GAAc;AAClB,MAAA,MAAM,IAAI,aAAA,CAAc,iDAAA,EAAmD,GAAG,CAAA;AAAA,IAChF,CAAA;AAAA,IACA,MAAM,WAAA,GAAc;AAClB,MAAA,MAAM,IAAI,aAAA,CAAc,iDAAA,EAAmD,GAAG,CAAA;AAAA,IAChF,CAAA;AAAA,IACA,MAAM,UAAA,GAAa;AACjB,MAAA,MAAM,IAAI,aAAA,CAAc,qDAAA,EAAuD,GAAG,CAAA;AAAA,IACpF,CAAA;AAAA,IACA,MAAM,aAAA,GAAgB;AACpB,MAAA,MAAM,IAAI,aAAA,CAAc,mDAAA,EAAqD,GAAG,CAAA;AAAA,IAClF,CAAA;AAAA,IACA,MAAM,WAAA,GAAc;AAClB,MAAA,MAAM,IAAI,aAAA,CAAc,mDAAA,EAAqD,GAAG,CAAA;AAAA,IAClF,CAAA;AAAA,IACA,MAAM,cAAA,GAAiB;AACrB,MAAA,MAAM,IAAI,aAAA,CAAc,oDAAA,EAAsD,GAAG,CAAA;AAAA,IACnF,CAAA;AAAA,IACA,MAAM,cAAA,GAAiB;AACrB,MAAA,MAAM,IAAI,aAAA,CAAc,oDAAA,EAAsD,GAAG,CAAA;AAAA,IACnF,CAAA;AAAA,IACA,MAAM,cAAA,GAAiB;AACrB,MAAA,MAAM,IAAI,aAAA,CAAc,oDAAA,EAAsD,GAAG,CAAA;AAAA,IACnF,CAAA;AAAA,IACA,MAAM,aAAA,GAAgB;AACpB,MAAA,MAAM,IAAI,aAAA,CAAc,mDAAA,EAAqD,GAAG,CAAA;AAAA,IAClF,CAAA;AAAA,IACA,MAAM,WAAA,GAAc;AAClB,MAAA,MAAM,IAAI,aAAA,CAAc,mDAAA,EAAqD,GAAG,CAAA;AAAA,IAClF,CAAA;AAAA,IACA,MAAM,cAAA,GAAiB;AACrB,MAAA,MAAM,IAAI,aAAA,CAAc,oDAAA,EAAsD,GAAG,CAAA;AAAA,IACnF,CAAA;AAAA,IACA,MAAM,cAAA,GAAiB;AACrB,MAAA,MAAM,IAAI,aAAA,CAAc,oDAAA,EAAsD,GAAG,CAAA;AAAA,IACnF,CAAA;AAAA,IACA,MAAM,cAAA,GAAiB;AACrB,MAAA,MAAM,IAAI,aAAA,CAAc,qDAAA,EAAuD,GAAG,CAAA;AAAA,IACpF;AAAA,GACF;AACF","file":"chunk-7ZHG7XTA.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\n/**\n * The signed-in shopper's access token, when there is one.\n *\n * PostgREST decides who you are from the Authorization bearer, and this client\n * used to send the publishable key unconditionally — so every request arrived\n * as `anon` even with a customer logged in. auth.uid() was therefore always\n * null, which is why shop_resolve_customer never linked auth_user_id (0 of 519\n * customers in the pool) and why the self-read policy on public.addresses could\n * never match a row.\n *\n * A module-level resolver rather than a per-app option on purpose: the wiring\n * is done once by initStorefrontRuntime, so a storefront cannot forget it and\n * silently fall back to anonymous. Mirrors setShopTenantResolver in plugin-shop.\n */\ntype AccessTokenResolver = () => string | null | undefined\n\nlet _accessTokenResolver: AccessTokenResolver | null = null\n\nexport function setShopAccessTokenResolver(resolver: AccessTokenResolver | null): void {\n _accessTokenResolver = resolver\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 shipping_address?: Record<string, string | undefined> | null\n payment_method_kind?: string | null\n paid_at?: string | null\n items?: OrderItemRow[] | null\n created_at?: string | null\n updated_at?: string | null\n}\n\n/** One row of shop_quote_shipping's result set. */\ninterface ShippingQuoteRow {\n zone_id: string\n name: string\n carrier: string | null\n rate: number | string | null\n base_rate: number | string | null\n free_above: number | string | null\n eta_min_days: number | null\n eta_max_days: number | null\n free: boolean | null\n}\n\n/** public.addresses, as PostgREST returns it. */\ninterface AddressRow {\n id: string\n label: string | null\n recipient: string | null\n phone: string | null\n postal_code: string | null\n street: string | null\n number: string | null\n complement: string | null\n district: string | null\n city: string | null\n state: string | null\n country: string | null\n is_default: boolean | 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 shippingAddress: row.shipping_address ?? null,\n paymentMethodKind: row.payment_method_kind ?? null,\n paidAt: row.paid_at ?? 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 // Declares which store this read is for. Until 0020 tenant isolation was\n // a client-side convention (a tenant_id filter the caller could simply\n // omit, returning every merchant's catalogue); the RLS policy now reads\n // this header, so the scope is enforced server-side.\n 'x-fayz-store': storeId,\n // The shopper's JWT when signed in, the publishable key otherwise. The\n // apikey header stays the publishable key either way — Supabase uses it\n // to route the project, not to authenticate.\n Authorization: `Bearer ${_accessTokenResolver?.() || 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:plg_shop_product_images(*),category:plg_shop_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[]>('plg_shop_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 // Cart lines can carry non-uuid ids (mock catalog, or a cart persisted in\n // an earlier mock-mode session). PostgREST would 400 on `id=eq.p-05`\n // (invalid uuid), so treat any non-uuid id as \"not found\" instead.\n if (!asUuid(id)) return null\n const query = singleById(id)\n query.set('select', '*,images:plg_shop_product_images(*),category:plg_shop_categories(name)')\n const rows = await request<ProductRow[]>('plg_shop_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[]>('plg_shop_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[]>('plg_shop_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:plg_shop_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\n // Same shape as getOrder above: an anon storefront has no table grant, so\n // the direct read throws 401 and must fall through instead of surfacing as\n // \"you have no orders\". This is what made \"Minhas compras\" empty after a\n // guest checkout — the order was there, the read just wasn't allowed.\n try {\n return (await request<OrderRow[]>('plg_shop_orders', { query })).map(rowToOrder)\n } catch (err) {\n // Only the customer-scoped query has an RPC counterpart: shop_list_orders\n // treats the customer uuid as the read capability, exactly like\n // shop_get_order treats the order uuid. Any other filter combination has\n // no anon-safe equivalent, so the original error stands.\n if (!options?.customerId) throw err\n const rows = await request<OrderRow[]>('rpc/shop_list_orders', {\n method: 'POST',\n body: JSON.stringify({\n p_customer_id: options.customerId,\n p_limit: options.limit ?? 50,\n }),\n })\n return (rows ?? []).map(rowToOrder)\n }\n },\n async getOrder(id: string) {\n const query = singleById(id)\n query.set('select', '*,items:plg_shop_order_items(*)')\n // Anon storefronts have no table grant at all — the direct read throws\n // (401) rather than returning empty, so it must not short-circuit the\n // RPC fallback below.\n let rows: OrderRow[] = []\n try {\n rows = await request<OrderRow[]>('plg_shop_orders', { query })\n } catch {\n /* fall through to shop_get_order */\n }\n if (rows[0]) return rowToOrder(rows[0])\n // Anon storefronts can't SELECT plg_shop_orders (RLS); the order uuid acts\n // as the read capability through the whitelisted RPC.\n try {\n const row = await request<OrderRow | null>('rpc/shop_get_order', {\n method: 'POST',\n body: JSON.stringify({ p_order_id: id }),\n })\n return row ? rowToOrder(row) : null\n } catch {\n return null\n }\n },\n async confirmPayment(id: string, reference?: string) {\n // Mock/dev payment seam: anon has no UPDATE grant on plg_shop_orders,\n // so the pending->paid transition goes through the whitelisted RPC\n // (order uuid = capability, same contract as shop_get_order).\n const row = await request<OrderRow | null>('rpc/shop_confirm_payment', {\n method: 'POST',\n body: JSON.stringify({ p_order_id: id, p_reference: reference ?? null }),\n })\n return row ? rowToOrder(row) : 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[]>('plg_shop_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[]>('plg_shop_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[]>('plg_shop_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 /** Structured delivery address; frozen on the order and saved to the\n * customer's address book by the RPC. */\n shippingAddress?: {\n postalCode: string\n street: string\n number?: string\n complement?: string\n district?: string\n city: string\n state: string\n country?: string\n recipient?: string\n phone?: string\n label?: string\n }\n paymentMethod?: 'pix' | 'credit_card' | 'debit_card' | 'boleto' | 'cash' | 'other'\n items: Array<{ productId: string; quantity: number; optionsLabel?: string }>\n }) {\n // Trusted placement: the shop_place_order SECURITY DEFINER RPC re-reads\n // prices, validates discount/stock and writes order+items atomically.\n // Direct INSERTs are blocked for anon by RLS on the shared FayzApi.\n const orderId = await request<string>('rpc/shop_place_order', {\n method: 'POST',\n body: JSON.stringify({\n p_tenant_id: input.tenantId ?? storeId,\n p_items: input.items.map((line) => ({\n product_id: line.productId,\n quantity: line.quantity,\n options_label: line.optionsLabel ?? null,\n })),\n p_customer_id: asUuid(input.customerId ?? undefined),\n p_customer_name: input.customer?.name ?? null,\n p_customer_email: input.customer?.email ?? null,\n p_currency: input.currency ?? 'BRL',\n p_discount_code: input.discountCode ?? null,\n p_shipping_total: input.shippingTotal ?? 0,\n // snake_case keys on purpose: the RPC freezes this jsonb onto the\n // order and public.addresses uses these exact column names.\n p_shipping_address: input.shippingAddress\n ? {\n postal_code: input.shippingAddress.postalCode,\n street: input.shippingAddress.street,\n number: input.shippingAddress.number ?? null,\n complement: input.shippingAddress.complement ?? null,\n district: input.shippingAddress.district ?? null,\n city: input.shippingAddress.city,\n state: input.shippingAddress.state,\n country: input.shippingAddress.country ?? 'BR',\n recipient: input.shippingAddress.recipient ?? null,\n phone: input.shippingAddress.phone ?? null,\n label: input.shippingAddress.label ?? null,\n }\n : null,\n p_payment_method: input.paymentMethod ?? null,\n p_notes: input.notes ?? null,\n }),\n })\n const order = await this.getOrder(orderId)\n if (!order) throw new FayzShopError('Order was placed but could not be read back.', 500)\n return order\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[]>('plg_shop_customers', { query })).map(rowToCustomer)\n },\n async getCustomer(id: string) {\n const rows = await request<CustomerRow[]>('plg_shop_customers', { query: singleById(id) })\n return rows[0] ? rowToCustomer(rows[0]) : null\n },\n async resolveCustomer(input: { email: string; name?: string }) {\n const row = await request<CustomerRow | CustomerRow[]>('rpc/shop_resolve_customer', {\n method: 'POST',\n body: JSON.stringify({\n p_tenant_id: storeId,\n p_email: input.email,\n p_name: input.name ?? null,\n }),\n })\n const customer = Array.isArray(row) ? row[0] : row\n if (!customer) throw new FayzShopError('shop_resolve_customer returned no row.', 500)\n return rowToCustomer(customer)\n },\n async quoteShipping(postalCode: string, subtotal: number) {\n const digits = (postalCode || '').replace(/\\D/g, '')\n if (digits.length !== 8) return []\n const rows = await request<ShippingQuoteRow[]>('rpc/shop_quote_shipping', {\n method: 'POST',\n body: JSON.stringify({\n p_tenant_id: storeId,\n p_postal_code: digits,\n p_subtotal: subtotal,\n }),\n })\n return (rows ?? []).map((row) => ({\n zoneId: row.zone_id,\n name: row.name,\n carrier: row.carrier ?? undefined,\n rate: Number(row.rate ?? 0),\n baseRate: Number(row.base_rate ?? row.rate ?? 0),\n freeAbove: row.free_above == null ? null : Number(row.free_above),\n etaMinDays: row.eta_min_days ?? undefined,\n etaMaxDays: row.eta_max_days ?? undefined,\n free: Boolean(row.free),\n }))\n },\n async listCustomerAddresses(customerId: string) {\n if (!asUuid(customerId)) return []\n const query = new URLSearchParams()\n query.set('select', 'id,label,recipient,phone,postal_code,street,number,complement,district,city,state,country,is_default')\n query.set('owner_type', 'eq.shop_customer')\n query.set('owner_id', `eq.${customerId}`)\n query.set('order', 'is_default.desc,created_at.desc')\n // RLS (addresses_self_read) is the real filter — it matches only rows\n // whose customer is linked to auth.uid(). An anonymous or mismatched\n // caller gets [] rather than an error, so guest checkout just sees an\n // empty address book instead of a failure it cannot act on.\n const rows = await request<AddressRow[]>('addresses', { query }).catch(() => [] as AddressRow[])\n return rows.map((row) => ({\n id: row.id,\n label: row.label ?? undefined,\n recipient: row.recipient ?? undefined,\n phone: row.phone ?? undefined,\n postalCode: row.postal_code ?? '',\n street: row.street ?? '',\n number: row.number ?? undefined,\n complement: row.complement ?? undefined,\n district: row.district ?? undefined,\n city: row.city ?? '',\n state: row.state ?? '',\n country: row.country ?? undefined,\n isDefault: row.is_default ?? false,\n }))\n },\n async createCustomer(input: { firstName: string; lastName?: string; email?: string; phone?: string; notes?: string }) {\n const [customer] = await request<CustomerRow[]>('plg_shop_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[]>('plg_shop_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>('plg_shop_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[]>('plg_shop_discounts', { query })).map(rowToDiscount)\n },\n async getDiscount(id: string) {\n const rows = await request<DiscountRow[]>('plg_shop_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"]}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkZMHI2XGY_cjs = require('./chunk-ZMHI2XGY.cjs');
4
3
  var chunkENWSXKQE_cjs = require('./chunk-ENWSXKQE.cjs');
4
+ var chunkZMHI2XGY_cjs = require('./chunk-ZMHI2XGY.cjs');
5
5
 
6
6
  // src/client.ts
7
7
  var FayzApiError = class extends Error {
@@ -135,5 +135,5 @@ var fayz = createFayzClient();
135
135
  exports.FayzApiError = FayzApiError;
136
136
  exports.createFayzClient = createFayzClient;
137
137
  exports.fayz = fayz;
138
- //# sourceMappingURL=chunk-MCB2L25R.cjs.map
139
- //# sourceMappingURL=chunk-MCB2L25R.cjs.map
138
+ //# sourceMappingURL=chunk-DK3ZA6NA.cjs.map
139
+ //# sourceMappingURL=chunk-DK3ZA6NA.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/client.ts"],"names":["appParams","options","createFayzRuntimeClient"],"mappings":"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","file":"chunk-MCB2L25R.cjs","sourcesContent":["import { appParams } from './app-params'\nimport { createFayzRuntimeClient } from './runtime'\nimport type { FayzAuthMeResponse, FayzUser } from './types'\n\nexport interface FayzClientOptions {\n baseUrl?: string\n token?: string | (() => string | undefined | Promise<string | undefined>)\n appId?: string\n fetcher?: typeof fetch\n}\n\nexport interface FayzRequestOptions extends Omit<RequestInit, 'headers'> {\n headers?: Record<string, string>\n token?: string\n}\n\nexport type FayzTableFilterOperator =\n | 'eq'\n | 'neq'\n | 'gt'\n | 'lt'\n | 'gte'\n | 'lte'\n | 'like'\n | 'ilike'\n | 'is_null'\n | 'is_not_null'\n\nexport interface FayzTableFilter {\n column: string\n operator: FayzTableFilterOperator\n value?: unknown\n}\n\nexport interface FayzTableListOptions {\n projectId?: string\n table: string\n schema?: string\n filters?: FayzTableFilter[]\n sortColumn?: string\n sortDirection?: 'asc' | 'desc'\n page?: number\n limit?: number\n runtime?: boolean\n}\n\nexport interface FayzTableListResponse<T> {\n rows: T[]\n total: number\n}\n\nexport interface FayzTableMutationOptions {\n projectId?: string\n table: string\n schema?: string\n runtime?: boolean\n}\n\nexport interface FayzTableCreateOptions<T = Record<string, unknown>> extends FayzTableMutationOptions {\n row: T\n}\n\nexport interface FayzTableUpdateOptions<T = Record<string, unknown>> extends FayzTableMutationOptions {\n primaryKeys: Record<string, unknown>\n row: Partial<T>\n}\n\nexport interface FayzTableDeleteOptions extends FayzTableMutationOptions {\n rows: Record<string, unknown>[]\n}\n\nexport interface FayzTableDeleteResponse {\n deletedCount: number\n}\n\nexport class FayzApiError extends Error {\n constructor(\n message: string,\n readonly status: number,\n readonly responseBody?: unknown,\n ) {\n super(message)\n this.name = 'FayzApiError'\n }\n}\n\nfunction normalizeBaseUrl(baseUrl: string): string {\n return baseUrl.replace(/\\/+$/, '')\n}\n\nfunction apiPath(path: string): string {\n if (/^https?:\\/\\//.test(path)) return path\n const normalized = path.startsWith('/') ? path : `/${path}`\n return normalized.startsWith('/api/') ? normalized : `/api${normalized}`\n}\n\nasync function parseResponse<T>(response: Response): Promise<T> {\n if (response.status === 204) return undefined as T\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\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 API request failed with status ${response.status}`)\n : `Fayz API request failed with status ${response.status}`\n throw new FayzApiError(message, response.status, body)\n }\n\n return body as T\n}\n\nasync function resolveToken(token: FayzClientOptions['token']): Promise<string | undefined> {\n return typeof token === 'function' ? token() : token\n}\n\nfunction unwrapUser(body: FayzUser | FayzAuthMeResponse): FayzUser {\n return typeof body === 'object' && body && 'user' in body\n ? (body as FayzAuthMeResponse).user\n : body as FayzUser\n}\n\nfunction tableRowsPath(options: FayzTableListOptions): string {\n const route = tableRowsRoute(options)\n const params = new URLSearchParams()\n\n if (options.schema) params.set('schema', options.schema)\n if (options.filters?.length) params.set('filters', JSON.stringify(options.filters))\n if (options.sortColumn) params.set('sortColumn', options.sortColumn)\n if (options.sortDirection) params.set('sortDirection', options.sortDirection)\n if (options.page != null) params.set('page', String(options.page))\n if (options.limit != null) params.set('limit', String(options.limit))\n\n const query = params.toString()\n return query ? `${route}?${query}` : route\n}\n\nfunction tableRowsRoute(options: FayzTableMutationOptions): string {\n const projectId = encodeURIComponent(options.projectId ?? appParams.projectId ?? 'current')\n const table = encodeURIComponent(options.table)\n return options.runtime\n ? `/api/v1/runtime/projects/${projectId}/database/tables/${table}/rows`\n : `/api/projects/${projectId}/database/tables/${table}/rows`\n}\n\nfunction mutationRowsPath(options: FayzTableMutationOptions): string {\n const route = tableRowsRoute(options)\n const params = new URLSearchParams()\n\n if (options.schema) params.set('schema', options.schema)\n\n const query = params.toString()\n return query ? `${route}?${query}` : route\n}\n\nexport function createFayzClient(options: FayzClientOptions = {}) {\n const baseUrl = normalizeBaseUrl(options.baseUrl ?? appParams.apiBaseUrl)\n const fetcher = options.fetcher ?? fetch\n const appId = options.appId ?? appParams.appId\n const token = options.token ?? appParams.token\n\n async function request<T>(path: string, init: FayzRequestOptions = {}): Promise<T> {\n const requestToken = init.token ?? await resolveToken(token)\n const headers: Record<string, string> = {\n ...(init.body ? { 'Content-Type': 'application/json' } : {}),\n ...(appId ? { 'X-App-Id': appId } : {}),\n ...init.headers,\n ...(requestToken ? { Authorization: `Bearer ${requestToken}` } : {}),\n }\n const response = await fetcher(`${baseUrl}${apiPath(path)}`, {\n ...init,\n headers,\n })\n return parseResponse<T>(response)\n }\n\n return {\n request,\n auth: {\n async me(): Promise<FayzUser> {\n return unwrapUser(await request<FayzUser | FayzAuthMeResponse>('/auth/me'))\n },\n },\n data: {\n async listRows<T = Record<string, unknown>>(options: FayzTableListOptions): Promise<FayzTableListResponse<T>> {\n return request<FayzTableListResponse<T>>(tableRowsPath(options))\n },\n async countRows(options: FayzTableListOptions): Promise<number> {\n const response = await request<FayzTableListResponse<unknown>>(tableRowsPath({\n ...options,\n page: options.page ?? 1,\n limit: 1,\n }))\n return response.total\n },\n async createRow<T = Record<string, unknown>>(options: FayzTableCreateOptions<Partial<T>>): Promise<T> {\n return request<T>(mutationRowsPath(options), {\n method: 'POST',\n body: JSON.stringify(options.row),\n })\n },\n async updateRow<T = Record<string, unknown>>(options: FayzTableUpdateOptions<T>): Promise<T> {\n return request<T>(mutationRowsPath(options), {\n method: 'PATCH',\n body: JSON.stringify({\n primaryKeys: options.primaryKeys,\n data: options.row,\n }),\n })\n },\n async deleteRows(options: FayzTableDeleteOptions): Promise<FayzTableDeleteResponse> {\n return request<FayzTableDeleteResponse>(mutationRowsPath(options), {\n method: 'DELETE',\n body: JSON.stringify({ rows: options.rows }),\n })\n },\n },\n runtime: {\n createClient: createFayzRuntimeClient,\n },\n }\n}\n\nexport const fayz = createFayzClient()\n"]}
1
+ {"version":3,"sources":["../src/client.ts"],"names":["appParams","options","createFayzRuntimeClient"],"mappings":"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","file":"chunk-DK3ZA6NA.cjs","sourcesContent":["import { appParams } from './app-params'\nimport { createFayzRuntimeClient } from './runtime'\nimport type { FayzAuthMeResponse, FayzUser } from './types'\n\nexport interface FayzClientOptions {\n baseUrl?: string\n token?: string | (() => string | undefined | Promise<string | undefined>)\n appId?: string\n fetcher?: typeof fetch\n}\n\nexport interface FayzRequestOptions extends Omit<RequestInit, 'headers'> {\n headers?: Record<string, string>\n token?: string\n}\n\nexport type FayzTableFilterOperator =\n | 'eq'\n | 'neq'\n | 'gt'\n | 'lt'\n | 'gte'\n | 'lte'\n | 'like'\n | 'ilike'\n | 'is_null'\n | 'is_not_null'\n\nexport interface FayzTableFilter {\n column: string\n operator: FayzTableFilterOperator\n value?: unknown\n}\n\nexport interface FayzTableListOptions {\n projectId?: string\n table: string\n schema?: string\n filters?: FayzTableFilter[]\n sortColumn?: string\n sortDirection?: 'asc' | 'desc'\n page?: number\n limit?: number\n runtime?: boolean\n}\n\nexport interface FayzTableListResponse<T> {\n rows: T[]\n total: number\n}\n\nexport interface FayzTableMutationOptions {\n projectId?: string\n table: string\n schema?: string\n runtime?: boolean\n}\n\nexport interface FayzTableCreateOptions<T = Record<string, unknown>> extends FayzTableMutationOptions {\n row: T\n}\n\nexport interface FayzTableUpdateOptions<T = Record<string, unknown>> extends FayzTableMutationOptions {\n primaryKeys: Record<string, unknown>\n row: Partial<T>\n}\n\nexport interface FayzTableDeleteOptions extends FayzTableMutationOptions {\n rows: Record<string, unknown>[]\n}\n\nexport interface FayzTableDeleteResponse {\n deletedCount: number\n}\n\nexport class FayzApiError extends Error {\n constructor(\n message: string,\n readonly status: number,\n readonly responseBody?: unknown,\n ) {\n super(message)\n this.name = 'FayzApiError'\n }\n}\n\nfunction normalizeBaseUrl(baseUrl: string): string {\n return baseUrl.replace(/\\/+$/, '')\n}\n\nfunction apiPath(path: string): string {\n if (/^https?:\\/\\//.test(path)) return path\n const normalized = path.startsWith('/') ? path : `/${path}`\n return normalized.startsWith('/api/') ? normalized : `/api${normalized}`\n}\n\nasync function parseResponse<T>(response: Response): Promise<T> {\n if (response.status === 204) return undefined as T\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\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 API request failed with status ${response.status}`)\n : `Fayz API request failed with status ${response.status}`\n throw new FayzApiError(message, response.status, body)\n }\n\n return body as T\n}\n\nasync function resolveToken(token: FayzClientOptions['token']): Promise<string | undefined> {\n return typeof token === 'function' ? token() : token\n}\n\nfunction unwrapUser(body: FayzUser | FayzAuthMeResponse): FayzUser {\n return typeof body === 'object' && body && 'user' in body\n ? (body as FayzAuthMeResponse).user\n : body as FayzUser\n}\n\nfunction tableRowsPath(options: FayzTableListOptions): string {\n const route = tableRowsRoute(options)\n const params = new URLSearchParams()\n\n if (options.schema) params.set('schema', options.schema)\n if (options.filters?.length) params.set('filters', JSON.stringify(options.filters))\n if (options.sortColumn) params.set('sortColumn', options.sortColumn)\n if (options.sortDirection) params.set('sortDirection', options.sortDirection)\n if (options.page != null) params.set('page', String(options.page))\n if (options.limit != null) params.set('limit', String(options.limit))\n\n const query = params.toString()\n return query ? `${route}?${query}` : route\n}\n\nfunction tableRowsRoute(options: FayzTableMutationOptions): string {\n const projectId = encodeURIComponent(options.projectId ?? appParams.projectId ?? 'current')\n const table = encodeURIComponent(options.table)\n return options.runtime\n ? `/api/v1/runtime/projects/${projectId}/database/tables/${table}/rows`\n : `/api/projects/${projectId}/database/tables/${table}/rows`\n}\n\nfunction mutationRowsPath(options: FayzTableMutationOptions): string {\n const route = tableRowsRoute(options)\n const params = new URLSearchParams()\n\n if (options.schema) params.set('schema', options.schema)\n\n const query = params.toString()\n return query ? `${route}?${query}` : route\n}\n\nexport function createFayzClient(options: FayzClientOptions = {}) {\n const baseUrl = normalizeBaseUrl(options.baseUrl ?? appParams.apiBaseUrl)\n const fetcher = options.fetcher ?? fetch\n const appId = options.appId ?? appParams.appId\n const token = options.token ?? appParams.token\n\n async function request<T>(path: string, init: FayzRequestOptions = {}): Promise<T> {\n const requestToken = init.token ?? await resolveToken(token)\n const headers: Record<string, string> = {\n ...(init.body ? { 'Content-Type': 'application/json' } : {}),\n ...(appId ? { 'X-App-Id': appId } : {}),\n ...init.headers,\n ...(requestToken ? { Authorization: `Bearer ${requestToken}` } : {}),\n }\n const response = await fetcher(`${baseUrl}${apiPath(path)}`, {\n ...init,\n headers,\n })\n return parseResponse<T>(response)\n }\n\n return {\n request,\n auth: {\n async me(): Promise<FayzUser> {\n return unwrapUser(await request<FayzUser | FayzAuthMeResponse>('/auth/me'))\n },\n },\n data: {\n async listRows<T = Record<string, unknown>>(options: FayzTableListOptions): Promise<FayzTableListResponse<T>> {\n return request<FayzTableListResponse<T>>(tableRowsPath(options))\n },\n async countRows(options: FayzTableListOptions): Promise<number> {\n const response = await request<FayzTableListResponse<unknown>>(tableRowsPath({\n ...options,\n page: options.page ?? 1,\n limit: 1,\n }))\n return response.total\n },\n async createRow<T = Record<string, unknown>>(options: FayzTableCreateOptions<Partial<T>>): Promise<T> {\n return request<T>(mutationRowsPath(options), {\n method: 'POST',\n body: JSON.stringify(options.row),\n })\n },\n async updateRow<T = Record<string, unknown>>(options: FayzTableUpdateOptions<T>): Promise<T> {\n return request<T>(mutationRowsPath(options), {\n method: 'PATCH',\n body: JSON.stringify({\n primaryKeys: options.primaryKeys,\n data: options.row,\n }),\n })\n },\n async deleteRows(options: FayzTableDeleteOptions): Promise<FayzTableDeleteResponse> {\n return request<FayzTableDeleteResponse>(mutationRowsPath(options), {\n method: 'DELETE',\n body: JSON.stringify({ rows: options.rows }),\n })\n },\n },\n runtime: {\n createClient: createFayzRuntimeClient,\n },\n }\n}\n\nexport const fayz = createFayzClient()\n"]}
@@ -2,20 +2,20 @@
2
2
  var release_channels_default = {
3
3
  channels: {
4
4
  stable: {
5
- "@fayz-ai/sdk": "^0.8.0",
6
- "@fayz-ai/core": "^0.8.0",
7
- "@fayz-ai/auth": "^0.8.0",
8
- "@fayz-ai/ui": "^0.8.0",
9
- "@fayz-ai/saas": "^0.8.0",
5
+ "@fayz-ai/sdk": "^0.8.1",
6
+ "@fayz-ai/core": "^0.8.1",
7
+ "@fayz-ai/auth": "^0.8.1",
8
+ "@fayz-ai/ui": "^0.8.1",
9
+ "@fayz-ai/saas": "^0.8.1",
10
10
  "@fayz-ai/shop": "^0.8.0",
11
11
  "@fayz-ai/storefront": "^0.8.0",
12
12
  "@fayz-ai/portal": "^0.8.0",
13
13
  "@fayz-ai/courses": "^0.8.0",
14
14
  "@fayz-ai/db": "^0.8.0",
15
- "@fayz-ai/plugin-agenda": "^0.8.0",
15
+ "@fayz-ai/plugin-agenda": "^0.8.1",
16
16
  "@fayz-ai/plugin-auth": "^0.8.0",
17
17
  "@fayz-ai/plugin-automations": "^0.8.0",
18
- "@fayz-ai/plugin-blog": "^0.8.0",
18
+ "@fayz-ai/plugin-blog": "^0.8.1",
19
19
  "@fayz-ai/plugin-conversations": "^0.8.0",
20
20
  "@fayz-ai/plugin-courses": "^0.8.0",
21
21
  "@fayz-ai/plugin-crm": "^0.8.0",
@@ -23,7 +23,7 @@ var release_channels_default = {
23
23
  "@fayz-ai/plugin-financial": "^0.8.0",
24
24
  "@fayz-ai/plugin-forms": "^0.8.0",
25
25
  "@fayz-ai/plugin-inventory": "^0.8.0",
26
- "@fayz-ai/plugin-marketing": "^0.8.0",
26
+ "@fayz-ai/plugin-marketing": "^0.8.1",
27
27
  "@fayz-ai/plugin-menu": "^0.8.0",
28
28
  "@fayz-ai/plugin-orders": "^0.8.0",
29
29
  "@fayz-ai/plugin-payments": "^0.8.0",
@@ -35,20 +35,20 @@ var release_channels_default = {
35
35
  "@fayz-ai/plugin-tasks": "^0.8.0"
36
36
  },
37
37
  latest: {
38
- "@fayz-ai/sdk": "^0.8.0",
39
- "@fayz-ai/core": "^0.8.0",
40
- "@fayz-ai/auth": "^0.8.0",
41
- "@fayz-ai/ui": "^0.8.0",
42
- "@fayz-ai/saas": "^0.8.0",
38
+ "@fayz-ai/sdk": "^0.8.1",
39
+ "@fayz-ai/core": "^0.8.1",
40
+ "@fayz-ai/auth": "^0.8.1",
41
+ "@fayz-ai/ui": "^0.8.1",
42
+ "@fayz-ai/saas": "^0.8.1",
43
43
  "@fayz-ai/shop": "^0.8.0",
44
44
  "@fayz-ai/storefront": "^0.8.0",
45
45
  "@fayz-ai/portal": "^0.8.0",
46
46
  "@fayz-ai/courses": "^0.8.0",
47
47
  "@fayz-ai/db": "^0.8.0",
48
- "@fayz-ai/plugin-agenda": "^0.8.0",
48
+ "@fayz-ai/plugin-agenda": "^0.8.1",
49
49
  "@fayz-ai/plugin-auth": "^0.8.0",
50
50
  "@fayz-ai/plugin-automations": "^0.8.0",
51
- "@fayz-ai/plugin-blog": "^0.8.0",
51
+ "@fayz-ai/plugin-blog": "^0.8.1",
52
52
  "@fayz-ai/plugin-conversations": "^0.8.0",
53
53
  "@fayz-ai/plugin-courses": "^0.8.0",
54
54
  "@fayz-ai/plugin-crm": "^0.8.0",
@@ -56,7 +56,7 @@ var release_channels_default = {
56
56
  "@fayz-ai/plugin-financial": "^0.8.0",
57
57
  "@fayz-ai/plugin-forms": "^0.8.0",
58
58
  "@fayz-ai/plugin-inventory": "^0.8.0",
59
- "@fayz-ai/plugin-marketing": "^0.8.0",
59
+ "@fayz-ai/plugin-marketing": "^0.8.1",
60
60
  "@fayz-ai/plugin-menu": "^0.8.0",
61
61
  "@fayz-ai/plugin-orders": "^0.8.0",
62
62
  "@fayz-ai/plugin-payments": "^0.8.0",
@@ -68,20 +68,20 @@ var release_channels_default = {
68
68
  "@fayz-ai/plugin-tasks": "^0.8.0"
69
69
  },
70
70
  preview: {
71
- "@fayz-ai/sdk": "^0.8.0",
72
- "@fayz-ai/core": "^0.8.0",
73
- "@fayz-ai/auth": "^0.8.0",
74
- "@fayz-ai/ui": "^0.8.0",
75
- "@fayz-ai/saas": "^0.8.0",
71
+ "@fayz-ai/sdk": "^0.8.1",
72
+ "@fayz-ai/core": "^0.8.1",
73
+ "@fayz-ai/auth": "^0.8.1",
74
+ "@fayz-ai/ui": "^0.8.1",
75
+ "@fayz-ai/saas": "^0.8.1",
76
76
  "@fayz-ai/shop": "^0.8.0",
77
77
  "@fayz-ai/storefront": "^0.8.0",
78
78
  "@fayz-ai/portal": "^0.8.0",
79
79
  "@fayz-ai/courses": "^0.8.0",
80
80
  "@fayz-ai/db": "^0.8.0",
81
- "@fayz-ai/plugin-agenda": "^0.8.0",
81
+ "@fayz-ai/plugin-agenda": "^0.8.1",
82
82
  "@fayz-ai/plugin-auth": "^0.8.0",
83
83
  "@fayz-ai/plugin-automations": "^0.8.0",
84
- "@fayz-ai/plugin-blog": "^0.8.0",
84
+ "@fayz-ai/plugin-blog": "^0.8.1",
85
85
  "@fayz-ai/plugin-conversations": "^0.8.0",
86
86
  "@fayz-ai/plugin-courses": "^0.8.0",
87
87
  "@fayz-ai/plugin-crm": "^0.8.0",
@@ -89,7 +89,7 @@ var release_channels_default = {
89
89
  "@fayz-ai/plugin-financial": "^0.8.0",
90
90
  "@fayz-ai/plugin-forms": "^0.8.0",
91
91
  "@fayz-ai/plugin-inventory": "^0.8.0",
92
- "@fayz-ai/plugin-marketing": "^0.8.0",
92
+ "@fayz-ai/plugin-marketing": "^0.8.1",
93
93
  "@fayz-ai/plugin-menu": "^0.8.0",
94
94
  "@fayz-ai/plugin-orders": "^0.8.0",
95
95
  "@fayz-ai/plugin-payments": "^0.8.0",
@@ -131,5 +131,5 @@ function resolveFayzPackageVersion(packageName, channel = "stable") {
131
131
  }
132
132
 
133
133
  export { fayzPackageVersionSets, resolveFayzPackageDependencies, resolveFayzPackageVersion, resolveFayzPackageVersions };
134
- //# sourceMappingURL=chunk-ZTJ2BJ3I.js.map
135
- //# sourceMappingURL=chunk-ZTJ2BJ3I.js.map
134
+ //# sourceMappingURL=chunk-SKARZBEH.js.map
135
+ //# sourceMappingURL=chunk-SKARZBEH.js.map
@@ -1 +1 @@
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,sBAAA,EAAwB,QAAA;AAAA,MACxB,6BAAA,EAA+B,QAAA;AAAA,MAC/B,sBAAA,EAAwB,QAAA;AAAA,MACxB,+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,0BAAA,EAA4B,QAAA;AAAA,MAC5B,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,sBAAA,EAAwB,QAAA;AAAA,MACxB,6BAAA,EAA+B,QAAA;AAAA,MAC/B,sBAAA,EAAwB,QAAA;AAAA,MACxB,+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,0BAAA,EAA4B,QAAA;AAAA,MAC5B,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,sBAAA,EAAwB,QAAA;AAAA,MACxB,6BAAA,EAA+B,QAAA;AAAA,MAC/B,sBAAA,EAAwB,QAAA;AAAA,MACxB,+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,0BAAA,EAA4B,QAAA;AAAA,MAC5B,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;;;AC7FA,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-ZTJ2BJ3I.js","sourcesContent":["{\n \"channels\": {\n \"stable\": {\n \"@fayz-ai/sdk\": \"^0.8.0\",\n \"@fayz-ai/core\": \"^0.8.0\",\n \"@fayz-ai/auth\": \"^0.8.0\",\n \"@fayz-ai/ui\": \"^0.8.0\",\n \"@fayz-ai/saas\": \"^0.8.0\",\n \"@fayz-ai/shop\": \"^0.8.0\",\n \"@fayz-ai/storefront\": \"^0.8.0\",\n \"@fayz-ai/portal\": \"^0.8.0\",\n \"@fayz-ai/courses\": \"^0.8.0\",\n \"@fayz-ai/db\": \"^0.8.0\",\n \"@fayz-ai/plugin-agenda\": \"^0.8.0\",\n \"@fayz-ai/plugin-auth\": \"^0.8.0\",\n \"@fayz-ai/plugin-automations\": \"^0.8.0\",\n \"@fayz-ai/plugin-blog\": \"^0.8.0\",\n \"@fayz-ai/plugin-conversations\": \"^0.8.0\",\n \"@fayz-ai/plugin-courses\": \"^0.8.0\",\n \"@fayz-ai/plugin-crm\": \"^0.8.0\",\n \"@fayz-ai/plugin-dashboard\": \"^0.8.0\",\n \"@fayz-ai/plugin-financial\": \"^0.8.0\",\n \"@fayz-ai/plugin-forms\": \"^0.8.0\",\n \"@fayz-ai/plugin-inventory\": \"^0.8.0\",\n \"@fayz-ai/plugin-marketing\": \"^0.8.0\",\n \"@fayz-ai/plugin-menu\": \"^0.8.0\",\n \"@fayz-ai/plugin-orders\": \"^0.8.0\",\n \"@fayz-ai/plugin-payments\": \"^0.8.0\",\n \"@fayz-ai/plugin-reports\": \"^0.8.0\",\n \"@fayz-ai/plugin-reputation\": \"^0.8.0\",\n \"@fayz-ai/plugin-shop\": \"^0.8.0\",\n \"@fayz-ai/plugin-sites\": \"^0.8.0\",\n \"@fayz-ai/plugin-tables\": \"^0.8.0\",\n \"@fayz-ai/plugin-tasks\": \"^0.8.0\"\n },\n \"latest\": {\n \"@fayz-ai/sdk\": \"^0.8.0\",\n \"@fayz-ai/core\": \"^0.8.0\",\n \"@fayz-ai/auth\": \"^0.8.0\",\n \"@fayz-ai/ui\": \"^0.8.0\",\n \"@fayz-ai/saas\": \"^0.8.0\",\n \"@fayz-ai/shop\": \"^0.8.0\",\n \"@fayz-ai/storefront\": \"^0.8.0\",\n \"@fayz-ai/portal\": \"^0.8.0\",\n \"@fayz-ai/courses\": \"^0.8.0\",\n \"@fayz-ai/db\": \"^0.8.0\",\n \"@fayz-ai/plugin-agenda\": \"^0.8.0\",\n \"@fayz-ai/plugin-auth\": \"^0.8.0\",\n \"@fayz-ai/plugin-automations\": \"^0.8.0\",\n \"@fayz-ai/plugin-blog\": \"^0.8.0\",\n \"@fayz-ai/plugin-conversations\": \"^0.8.0\",\n \"@fayz-ai/plugin-courses\": \"^0.8.0\",\n \"@fayz-ai/plugin-crm\": \"^0.8.0\",\n \"@fayz-ai/plugin-dashboard\": \"^0.8.0\",\n \"@fayz-ai/plugin-financial\": \"^0.8.0\",\n \"@fayz-ai/plugin-forms\": \"^0.8.0\",\n \"@fayz-ai/plugin-inventory\": \"^0.8.0\",\n \"@fayz-ai/plugin-marketing\": \"^0.8.0\",\n \"@fayz-ai/plugin-menu\": \"^0.8.0\",\n \"@fayz-ai/plugin-orders\": \"^0.8.0\",\n \"@fayz-ai/plugin-payments\": \"^0.8.0\",\n \"@fayz-ai/plugin-reports\": \"^0.8.0\",\n \"@fayz-ai/plugin-reputation\": \"^0.8.0\",\n \"@fayz-ai/plugin-shop\": \"^0.8.0\",\n \"@fayz-ai/plugin-sites\": \"^0.8.0\",\n \"@fayz-ai/plugin-tables\": \"^0.8.0\",\n \"@fayz-ai/plugin-tasks\": \"^0.8.0\"\n },\n \"preview\": {\n \"@fayz-ai/sdk\": \"^0.8.0\",\n \"@fayz-ai/core\": \"^0.8.0\",\n \"@fayz-ai/auth\": \"^0.8.0\",\n \"@fayz-ai/ui\": \"^0.8.0\",\n \"@fayz-ai/saas\": \"^0.8.0\",\n \"@fayz-ai/shop\": \"^0.8.0\",\n \"@fayz-ai/storefront\": \"^0.8.0\",\n \"@fayz-ai/portal\": \"^0.8.0\",\n \"@fayz-ai/courses\": \"^0.8.0\",\n \"@fayz-ai/db\": \"^0.8.0\",\n \"@fayz-ai/plugin-agenda\": \"^0.8.0\",\n \"@fayz-ai/plugin-auth\": \"^0.8.0\",\n \"@fayz-ai/plugin-automations\": \"^0.8.0\",\n \"@fayz-ai/plugin-blog\": \"^0.8.0\",\n \"@fayz-ai/plugin-conversations\": \"^0.8.0\",\n \"@fayz-ai/plugin-courses\": \"^0.8.0\",\n \"@fayz-ai/plugin-crm\": \"^0.8.0\",\n \"@fayz-ai/plugin-dashboard\": \"^0.8.0\",\n \"@fayz-ai/plugin-financial\": \"^0.8.0\",\n \"@fayz-ai/plugin-forms\": \"^0.8.0\",\n \"@fayz-ai/plugin-inventory\": \"^0.8.0\",\n \"@fayz-ai/plugin-marketing\": \"^0.8.0\",\n \"@fayz-ai/plugin-menu\": \"^0.8.0\",\n \"@fayz-ai/plugin-orders\": \"^0.8.0\",\n \"@fayz-ai/plugin-payments\": \"^0.8.0\",\n \"@fayz-ai/plugin-reports\": \"^0.8.0\",\n \"@fayz-ai/plugin-reputation\": \"^0.8.0\",\n \"@fayz-ai/plugin-shop\": \"^0.8.0\",\n \"@fayz-ai/plugin-sites\": \"^0.8.0\",\n \"@fayz-ai/plugin-tables\": \"^0.8.0\",\n \"@fayz-ai/plugin-tasks\": \"^0.8.0\"\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
+ {"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,sBAAA,EAAwB,QAAA;AAAA,MACxB,6BAAA,EAA+B,QAAA;AAAA,MAC/B,sBAAA,EAAwB,QAAA;AAAA,MACxB,+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,0BAAA,EAA4B,QAAA;AAAA,MAC5B,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,sBAAA,EAAwB,QAAA;AAAA,MACxB,6BAAA,EAA+B,QAAA;AAAA,MAC/B,sBAAA,EAAwB,QAAA;AAAA,MACxB,+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,0BAAA,EAA4B,QAAA;AAAA,MAC5B,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,sBAAA,EAAwB,QAAA;AAAA,MACxB,6BAAA,EAA+B,QAAA;AAAA,MAC/B,sBAAA,EAAwB,QAAA;AAAA,MACxB,+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,0BAAA,EAA4B,QAAA;AAAA,MAC5B,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;;;AC7FA,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-SKARZBEH.js","sourcesContent":["{\n \"channels\": {\n \"stable\": {\n \"@fayz-ai/sdk\": \"^0.8.1\",\n \"@fayz-ai/core\": \"^0.8.1\",\n \"@fayz-ai/auth\": \"^0.8.1\",\n \"@fayz-ai/ui\": \"^0.8.1\",\n \"@fayz-ai/saas\": \"^0.8.1\",\n \"@fayz-ai/shop\": \"^0.8.0\",\n \"@fayz-ai/storefront\": \"^0.8.0\",\n \"@fayz-ai/portal\": \"^0.8.0\",\n \"@fayz-ai/courses\": \"^0.8.0\",\n \"@fayz-ai/db\": \"^0.8.0\",\n \"@fayz-ai/plugin-agenda\": \"^0.8.1\",\n \"@fayz-ai/plugin-auth\": \"^0.8.0\",\n \"@fayz-ai/plugin-automations\": \"^0.8.0\",\n \"@fayz-ai/plugin-blog\": \"^0.8.1\",\n \"@fayz-ai/plugin-conversations\": \"^0.8.0\",\n \"@fayz-ai/plugin-courses\": \"^0.8.0\",\n \"@fayz-ai/plugin-crm\": \"^0.8.0\",\n \"@fayz-ai/plugin-dashboard\": \"^0.8.0\",\n \"@fayz-ai/plugin-financial\": \"^0.8.0\",\n \"@fayz-ai/plugin-forms\": \"^0.8.0\",\n \"@fayz-ai/plugin-inventory\": \"^0.8.0\",\n \"@fayz-ai/plugin-marketing\": \"^0.8.1\",\n \"@fayz-ai/plugin-menu\": \"^0.8.0\",\n \"@fayz-ai/plugin-orders\": \"^0.8.0\",\n \"@fayz-ai/plugin-payments\": \"^0.8.0\",\n \"@fayz-ai/plugin-reports\": \"^0.8.0\",\n \"@fayz-ai/plugin-reputation\": \"^0.8.0\",\n \"@fayz-ai/plugin-shop\": \"^0.8.0\",\n \"@fayz-ai/plugin-sites\": \"^0.8.0\",\n \"@fayz-ai/plugin-tables\": \"^0.8.0\",\n \"@fayz-ai/plugin-tasks\": \"^0.8.0\"\n },\n \"latest\": {\n \"@fayz-ai/sdk\": \"^0.8.1\",\n \"@fayz-ai/core\": \"^0.8.1\",\n \"@fayz-ai/auth\": \"^0.8.1\",\n \"@fayz-ai/ui\": \"^0.8.1\",\n \"@fayz-ai/saas\": \"^0.8.1\",\n \"@fayz-ai/shop\": \"^0.8.0\",\n \"@fayz-ai/storefront\": \"^0.8.0\",\n \"@fayz-ai/portal\": \"^0.8.0\",\n \"@fayz-ai/courses\": \"^0.8.0\",\n \"@fayz-ai/db\": \"^0.8.0\",\n \"@fayz-ai/plugin-agenda\": \"^0.8.1\",\n \"@fayz-ai/plugin-auth\": \"^0.8.0\",\n \"@fayz-ai/plugin-automations\": \"^0.8.0\",\n \"@fayz-ai/plugin-blog\": \"^0.8.1\",\n \"@fayz-ai/plugin-conversations\": \"^0.8.0\",\n \"@fayz-ai/plugin-courses\": \"^0.8.0\",\n \"@fayz-ai/plugin-crm\": \"^0.8.0\",\n \"@fayz-ai/plugin-dashboard\": \"^0.8.0\",\n \"@fayz-ai/plugin-financial\": \"^0.8.0\",\n \"@fayz-ai/plugin-forms\": \"^0.8.0\",\n \"@fayz-ai/plugin-inventory\": \"^0.8.0\",\n \"@fayz-ai/plugin-marketing\": \"^0.8.1\",\n \"@fayz-ai/plugin-menu\": \"^0.8.0\",\n \"@fayz-ai/plugin-orders\": \"^0.8.0\",\n \"@fayz-ai/plugin-payments\": \"^0.8.0\",\n \"@fayz-ai/plugin-reports\": \"^0.8.0\",\n \"@fayz-ai/plugin-reputation\": \"^0.8.0\",\n \"@fayz-ai/plugin-shop\": \"^0.8.0\",\n \"@fayz-ai/plugin-sites\": \"^0.8.0\",\n \"@fayz-ai/plugin-tables\": \"^0.8.0\",\n \"@fayz-ai/plugin-tasks\": \"^0.8.0\"\n },\n \"preview\": {\n \"@fayz-ai/sdk\": \"^0.8.1\",\n \"@fayz-ai/core\": \"^0.8.1\",\n \"@fayz-ai/auth\": \"^0.8.1\",\n \"@fayz-ai/ui\": \"^0.8.1\",\n \"@fayz-ai/saas\": \"^0.8.1\",\n \"@fayz-ai/shop\": \"^0.8.0\",\n \"@fayz-ai/storefront\": \"^0.8.0\",\n \"@fayz-ai/portal\": \"^0.8.0\",\n \"@fayz-ai/courses\": \"^0.8.0\",\n \"@fayz-ai/db\": \"^0.8.0\",\n \"@fayz-ai/plugin-agenda\": \"^0.8.1\",\n \"@fayz-ai/plugin-auth\": \"^0.8.0\",\n \"@fayz-ai/plugin-automations\": \"^0.8.0\",\n \"@fayz-ai/plugin-blog\": \"^0.8.1\",\n \"@fayz-ai/plugin-conversations\": \"^0.8.0\",\n \"@fayz-ai/plugin-courses\": \"^0.8.0\",\n \"@fayz-ai/plugin-crm\": \"^0.8.0\",\n \"@fayz-ai/plugin-dashboard\": \"^0.8.0\",\n \"@fayz-ai/plugin-financial\": \"^0.8.0\",\n \"@fayz-ai/plugin-forms\": \"^0.8.0\",\n \"@fayz-ai/plugin-inventory\": \"^0.8.0\",\n \"@fayz-ai/plugin-marketing\": \"^0.8.1\",\n \"@fayz-ai/plugin-menu\": \"^0.8.0\",\n \"@fayz-ai/plugin-orders\": \"^0.8.0\",\n \"@fayz-ai/plugin-payments\": \"^0.8.0\",\n \"@fayz-ai/plugin-reports\": \"^0.8.0\",\n \"@fayz-ai/plugin-reputation\": \"^0.8.0\",\n \"@fayz-ai/plugin-shop\": \"^0.8.0\",\n \"@fayz-ai/plugin-sites\": \"^0.8.0\",\n \"@fayz-ai/plugin-tables\": \"^0.8.0\",\n \"@fayz-ai/plugin-tasks\": \"^0.8.0\"\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,5 +1,5 @@
1
- import { appParams } from './chunk-YGX37DT3.js';
2
1
  import { createFayzRuntimeClient } from './chunk-FRIOW6KW.js';
2
+ import { appParams } from './chunk-YGX37DT3.js';
3
3
 
4
4
  // src/client.ts
5
5
  var FayzApiError = class extends Error {
@@ -131,5 +131,5 @@ function createFayzClient(options = {}) {
131
131
  var fayz = createFayzClient();
132
132
 
133
133
  export { FayzApiError, createFayzClient, fayz };
134
- //# sourceMappingURL=chunk-R4XVCBFG.js.map
135
- //# sourceMappingURL=chunk-R4XVCBFG.js.map
134
+ //# sourceMappingURL=chunk-UWOQAD5A.js.map
135
+ //# sourceMappingURL=chunk-UWOQAD5A.js.map