@proxima-io/storefront-core 0.3.0 → 0.8.1

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 (170) hide show
  1. package/README.md +23 -17
  2. package/dist/addresses/address-book.d.ts +36 -0
  3. package/dist/addresses/address-book.d.ts.map +1 -0
  4. package/dist/addresses/address-book.js +62 -0
  5. package/dist/addresses/address-book.js.map +1 -0
  6. package/dist/analytics/analytics.d.ts +28 -0
  7. package/dist/analytics/analytics.d.ts.map +1 -0
  8. package/dist/analytics/analytics.js +124 -0
  9. package/dist/analytics/analytics.js.map +1 -0
  10. package/dist/analytics/attribution.d.ts +28 -0
  11. package/dist/analytics/attribution.d.ts.map +1 -0
  12. package/dist/analytics/attribution.js +116 -0
  13. package/dist/analytics/attribution.js.map +1 -0
  14. package/dist/analytics/session.d.ts +12 -0
  15. package/dist/analytics/session.d.ts.map +1 -0
  16. package/dist/analytics/session.js +62 -0
  17. package/dist/analytics/session.js.map +1 -0
  18. package/dist/analytics/trackers.d.ts +29 -0
  19. package/dist/analytics/trackers.d.ts.map +1 -0
  20. package/dist/analytics/trackers.js +30 -0
  21. package/dist/analytics/trackers.js.map +1 -0
  22. package/dist/api/endpoints.d.ts +70 -0
  23. package/dist/api/endpoints.d.ts.map +1 -0
  24. package/dist/api/endpoints.js +70 -0
  25. package/dist/api/endpoints.js.map +1 -0
  26. package/dist/api/index.d.ts +3 -0
  27. package/dist/api/index.d.ts.map +1 -0
  28. package/dist/api/index.js +3 -0
  29. package/dist/api/index.js.map +1 -0
  30. package/dist/api/storefront-client.d.ts +50 -0
  31. package/dist/api/storefront-client.d.ts.map +1 -0
  32. package/dist/api/storefront-client.js +123 -0
  33. package/dist/api/storefront-client.js.map +1 -0
  34. package/dist/buyer/auth.d.ts +105 -0
  35. package/dist/buyer/auth.d.ts.map +1 -0
  36. package/dist/buyer/auth.js +215 -0
  37. package/dist/buyer/auth.js.map +1 -0
  38. package/dist/cache/cache.d.ts +31 -0
  39. package/dist/cache/cache.d.ts.map +1 -0
  40. package/dist/cache/cache.js +71 -0
  41. package/dist/cache/cache.js.map +1 -0
  42. package/dist/campaign/countdown.d.ts +40 -0
  43. package/dist/campaign/countdown.d.ts.map +1 -0
  44. package/dist/campaign/countdown.js +71 -0
  45. package/dist/campaign/countdown.js.map +1 -0
  46. package/dist/cart/cart.d.ts +57 -0
  47. package/dist/cart/cart.d.ts.map +1 -0
  48. package/dist/cart/cart.js +64 -0
  49. package/dist/cart/cart.js.map +1 -0
  50. package/dist/catalog/listings.d.ts +87 -0
  51. package/dist/catalog/listings.d.ts.map +1 -0
  52. package/dist/catalog/listings.js +140 -0
  53. package/dist/catalog/listings.js.map +1 -0
  54. package/dist/cms/payment-methods.d.ts +13 -0
  55. package/dist/cms/payment-methods.d.ts.map +1 -0
  56. package/dist/cms/payment-methods.js +41 -0
  57. package/dist/cms/payment-methods.js.map +1 -0
  58. package/dist/cms/website.d.ts +74 -0
  59. package/dist/cms/website.d.ts.map +1 -0
  60. package/dist/cms/website.js +144 -0
  61. package/dist/cms/website.js.map +1 -0
  62. package/dist/cookie-consent/consent.d.ts +22 -0
  63. package/dist/cookie-consent/consent.d.ts.map +1 -0
  64. package/dist/cookie-consent/consent.js +93 -0
  65. package/dist/cookie-consent/consent.js.map +1 -0
  66. package/dist/index.d.ts +43 -1310
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +40 -1576
  69. package/dist/index.js.map +1 -1
  70. package/dist/internal/http.d.ts +5 -0
  71. package/dist/internal/http.d.ts.map +1 -0
  72. package/dist/internal/http.js +27 -0
  73. package/dist/internal/http.js.map +1 -0
  74. package/dist/orders/guest.d.ts +9 -0
  75. package/dist/orders/guest.d.ts.map +1 -0
  76. package/dist/orders/guest.js +30 -0
  77. package/dist/orders/guest.js.map +1 -0
  78. package/dist/orders/orders.d.ts +23 -0
  79. package/dist/orders/orders.d.ts.map +1 -0
  80. package/dist/orders/orders.js +33 -0
  81. package/dist/orders/orders.js.map +1 -0
  82. package/dist/seo/indexnow.d.ts +24 -0
  83. package/dist/seo/indexnow.d.ts.map +1 -0
  84. package/dist/seo/indexnow.js +50 -0
  85. package/dist/seo/indexnow.js.map +1 -0
  86. package/dist/seo/json-ld.d.ts +52 -0
  87. package/dist/seo/json-ld.d.ts.map +1 -0
  88. package/dist/seo/json-ld.js +175 -0
  89. package/dist/seo/json-ld.js.map +1 -0
  90. package/dist/seo/page-seo.d.ts +21 -0
  91. package/dist/seo/page-seo.d.ts.map +1 -0
  92. package/dist/seo/page-seo.js +68 -0
  93. package/dist/seo/page-seo.js.map +1 -0
  94. package/dist/seo/robots.d.ts +23 -0
  95. package/dist/seo/robots.d.ts.map +1 -0
  96. package/dist/seo/robots.js +35 -0
  97. package/dist/seo/robots.js.map +1 -0
  98. package/dist/seo/sitemap.d.ts +35 -0
  99. package/dist/seo/sitemap.d.ts.map +1 -0
  100. package/dist/seo/sitemap.js +131 -0
  101. package/dist/seo/sitemap.js.map +1 -0
  102. package/dist/server/process.d.ts +136 -0
  103. package/dist/server/process.d.ts.map +1 -0
  104. package/dist/server/process.js +143 -0
  105. package/dist/server/process.js.map +1 -0
  106. package/dist/types/address.d.ts +40 -0
  107. package/dist/types/address.d.ts.map +1 -0
  108. package/dist/types/address.js +2 -0
  109. package/dist/types/address.js.map +1 -0
  110. package/dist/types/analytics.d.ts +79 -0
  111. package/dist/types/analytics.d.ts.map +1 -0
  112. package/dist/types/analytics.js +2 -0
  113. package/dist/types/analytics.js.map +1 -0
  114. package/dist/types/business.d.ts +95 -0
  115. package/dist/types/business.d.ts.map +1 -0
  116. package/dist/types/business.js +2 -0
  117. package/dist/types/business.js.map +1 -0
  118. package/dist/types/buyer.d.ts +144 -0
  119. package/dist/types/buyer.d.ts.map +1 -0
  120. package/dist/types/buyer.js +45 -0
  121. package/dist/types/buyer.js.map +1 -0
  122. package/dist/types/campaign.d.ts +51 -0
  123. package/dist/types/campaign.d.ts.map +1 -0
  124. package/dist/types/campaign.js +2 -0
  125. package/dist/types/campaign.js.map +1 -0
  126. package/dist/types/cart.d.ts +40 -0
  127. package/dist/types/cart.d.ts.map +1 -0
  128. package/dist/types/cart.js +2 -0
  129. package/dist/types/cart.js.map +1 -0
  130. package/dist/types/catalog.d.ts +164 -0
  131. package/dist/types/catalog.d.ts.map +1 -0
  132. package/dist/types/catalog.js +2 -0
  133. package/dist/types/catalog.js.map +1 -0
  134. package/dist/types/cms.d.ts +196 -0
  135. package/dist/types/cms.d.ts.map +1 -0
  136. package/dist/types/cms.js +2 -0
  137. package/dist/types/cms.js.map +1 -0
  138. package/dist/types/cookie-consent.d.ts +18 -0
  139. package/dist/types/cookie-consent.d.ts.map +1 -0
  140. package/dist/types/cookie-consent.js +7 -0
  141. package/dist/types/cookie-consent.js.map +1 -0
  142. package/dist/types/guest-order.d.ts +16 -0
  143. package/dist/types/guest-order.d.ts.map +1 -0
  144. package/dist/types/guest-order.js +9 -0
  145. package/dist/types/guest-order.js.map +1 -0
  146. package/dist/types/listing.d.ts +14 -0
  147. package/dist/types/listing.d.ts.map +1 -0
  148. package/dist/types/listing.js +2 -0
  149. package/dist/types/listing.js.map +1 -0
  150. package/dist/types/order.d.ts +40 -0
  151. package/dist/types/order.d.ts.map +1 -0
  152. package/dist/types/order.js +2 -0
  153. package/dist/types/order.js.map +1 -0
  154. package/dist/types/seo.d.ts +93 -0
  155. package/dist/types/seo.d.ts.map +1 -0
  156. package/dist/types/seo.js +2 -0
  157. package/dist/types/seo.js.map +1 -0
  158. package/dist/types/server-env.d.ts +19 -0
  159. package/dist/types/server-env.d.ts.map +1 -0
  160. package/dist/types/server-env.js +10 -0
  161. package/dist/types/server-env.js.map +1 -0
  162. package/dist/types/wishlist.d.ts +10 -0
  163. package/dist/types/wishlist.d.ts.map +1 -0
  164. package/dist/types/wishlist.js +2 -0
  165. package/dist/types/wishlist.js.map +1 -0
  166. package/dist/wishlist/wishlist.d.ts +28 -0
  167. package/dist/wishlist/wishlist.d.ts.map +1 -0
  168. package/dist/wishlist/wishlist.js +42 -0
  169. package/dist/wishlist/wishlist.js.map +1 -0
  170. package/package.json +1 -1
@@ -0,0 +1,40 @@
1
+ export interface UbigeoResult {
2
+ code: string;
3
+ department: string;
4
+ province: string;
5
+ district: string;
6
+ full_name: string;
7
+ }
8
+ export interface CustomerAddress {
9
+ id: number;
10
+ customer_id: number;
11
+ business_id: string;
12
+ label?: string | null;
13
+ recipient_name?: string | null;
14
+ phone?: string | null;
15
+ line1: string;
16
+ line2?: string | null;
17
+ ubigeo_code?: string | null;
18
+ ubigeo?: UbigeoResult | null;
19
+ reference?: string | null;
20
+ latitude?: number | null;
21
+ longitude?: number | null;
22
+ geocoding_source?: string | null;
23
+ is_default: boolean;
24
+ created_at: string;
25
+ updated_at: string;
26
+ }
27
+ export interface AddressInput {
28
+ label?: string | null;
29
+ recipient_name?: string | null;
30
+ phone?: string | null;
31
+ line1: string;
32
+ line2?: string | null;
33
+ ubigeo_code?: string | null;
34
+ reference?: string | null;
35
+ latitude?: number | null;
36
+ longitude?: number | null;
37
+ geocoding_source?: string | null;
38
+ is_default?: boolean;
39
+ }
40
+ //# sourceMappingURL=address.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../src/types/address.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=address.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.js","sourceRoot":"","sources":["../../src/types/address.ts"],"names":[],"mappings":""}
@@ -0,0 +1,79 @@
1
+ /** Storefront analytics events accepted by proxima-api ingest. */
2
+ export type StorefrontEventType = 'page_view' | 'product_view' | 'category_view' | 'brand_view' | 'search' | 'add_to_cart' | 'remove_from_cart' | 'cart_view' | 'checkout_started' | 'checkout_completed' | 'checkout_error' | 'order_completed' | 'not_found_page_viewed' | 'filter_applied' | 'sort_changed' | 'promotion_view' | 'wishlist_add' | 'login_completed' | 'register_completed';
3
+ export interface StorefrontEventPayload {
4
+ product_slug?: string;
5
+ product_id?: string;
6
+ product_name?: string;
7
+ variant_id?: number;
8
+ quantity?: number;
9
+ price?: number;
10
+ order_id?: string;
11
+ order_total?: number;
12
+ query?: string;
13
+ results_count?: number;
14
+ category_slug?: string;
15
+ category_name?: string;
16
+ brand_slug?: string;
17
+ brand_name?: string;
18
+ item_count?: number;
19
+ cart_total?: number;
20
+ requested_path?: string;
21
+ error_code?: string;
22
+ step?: string;
23
+ filter_type?: string;
24
+ filter_value?: string;
25
+ pathname?: string;
26
+ sort?: string;
27
+ promotion_slug?: string;
28
+ section_type?: string;
29
+ badge_text?: string;
30
+ method?: string;
31
+ attribution?: SessionAttributionPayload;
32
+ [key: string]: unknown;
33
+ }
34
+ /** First-touch marketing attribution attached to every analytics event in a session. */
35
+ export interface SessionAttributionPayload {
36
+ utm_source?: string;
37
+ utm_medium?: string;
38
+ utm_campaign?: string;
39
+ utm_content?: string;
40
+ utm_term?: string;
41
+ gclid?: string;
42
+ fbclid?: string;
43
+ msclkid?: string;
44
+ landing_path?: string;
45
+ landing_referrer?: string;
46
+ }
47
+ export interface StorefrontAnalyticsConfig {
48
+ apiUrl: string;
49
+ websiteId: string;
50
+ businessId: string;
51
+ locale?: string;
52
+ flushInterval?: number;
53
+ debug?: boolean;
54
+ /** SSR-provided session (e.g. httpOnly cart cookie read server-side). */
55
+ sessionId?: string;
56
+ /** Optional runtime resolver — runs before cookie/localStorage fallbacks. */
57
+ getSessionId?: () => string | null | undefined;
58
+ /** Cookie name for guest cart session (default `cart_session_id`). */
59
+ cartSessionCookieName?: string;
60
+ }
61
+ export interface ProductViewPayload {
62
+ product_slug: string;
63
+ product_id?: string;
64
+ product_name?: string;
65
+ price?: number;
66
+ }
67
+ export interface AddToCartPayload {
68
+ product_slug: string;
69
+ product_id?: string;
70
+ product_name?: string;
71
+ variant_id: number;
72
+ price?: number;
73
+ quantity?: number;
74
+ }
75
+ export interface CheckoutStartedPayload {
76
+ item_count: number;
77
+ cart_total?: number;
78
+ }
79
+ //# sourceMappingURL=analytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/types/analytics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/types/analytics.ts"],"names":[],"mappings":""}
@@ -0,0 +1,95 @@
1
+ export interface StorefrontBusinessProfile {
2
+ business_id: string;
3
+ name: string;
4
+ slug: string;
5
+ logo_url: string | null;
6
+ tagline: string | null;
7
+ currency_code: string;
8
+ timezone: string;
9
+ contact: {
10
+ email: string | null;
11
+ support_email: string | null;
12
+ support_phone: string | null;
13
+ whatsapp: string | null;
14
+ /** Pre-built `https://wa.me/{digits}` link derived from `whatsapp`. */
15
+ whatsapp_url: string | null;
16
+ };
17
+ social: {
18
+ instagram: string | null;
19
+ facebook: string | null;
20
+ tiktok: string | null;
21
+ youtube: string | null;
22
+ twitter: string | null;
23
+ linkedin: string | null;
24
+ };
25
+ legal: {
26
+ terms_url: string | null;
27
+ privacy_url: string | null;
28
+ /** Peru-specific "Libro de Reclamaciones" URL. */
29
+ complaints_book_url: string | null;
30
+ };
31
+ presence_mode: "physical" | "virtual" | "both";
32
+ primary_location: StorefrontBusinessLocation | null;
33
+ locations: StorefrontBusinessLocation[];
34
+ }
35
+ export interface StorefrontBusinessLocation {
36
+ id: string | null;
37
+ kind: "store" | "pickup_point" | "showroom";
38
+ label: string;
39
+ is_primary: boolean;
40
+ address_line: string;
41
+ ubigeo_code: string | null;
42
+ reference: string | null;
43
+ phone: string | null;
44
+ hours_text: string | null;
45
+ show_on_website: boolean;
46
+ is_active: boolean;
47
+ sort_order: number;
48
+ warehouse_id: number | null;
49
+ ubigeo: {
50
+ code: string;
51
+ department: string;
52
+ province: string;
53
+ district: string;
54
+ full_name: string;
55
+ } | null;
56
+ }
57
+ /**
58
+ * Fetch the public business profile for a tenant. Call this once per request
59
+ * and cache the result on `Astro.locals` so the footer (and any other
60
+ * profile-aware component) reads from memory, not over the wire.
61
+ *
62
+ * @example
63
+ * const profile = await fetchBusinessProfile(
64
+ * { baseUrl: env.apiUrl, serviceKey: env.serviceKey },
65
+ * website.business_id
66
+ * );
67
+ */
68
+ export interface StorefrontCampaign {
69
+ id: number;
70
+ slug: string | null;
71
+ name: Record<string, string>;
72
+ description: Record<string, string> | null;
73
+ discount_type: "percentage" | "fixed_amount";
74
+ discount_value: number;
75
+ target_type: "product" | "category" | "brand" | "global";
76
+ target_ids: number[];
77
+ active_from: string | null;
78
+ active_until: string | null;
79
+ smart_collection_id: number | null;
80
+ display_config: {
81
+ badge_text?: string | null;
82
+ hero_copy?: Record<string, string> | null;
83
+ theme_color?: string | null;
84
+ show_countdown?: boolean | null;
85
+ } | null;
86
+ }
87
+ export interface StorefrontPaymentMethod {
88
+ code: string;
89
+ name_es: string;
90
+ description_es: string | null;
91
+ category: string;
92
+ kind: "offline" | "online" | "hybrid";
93
+ icon_url: string | null;
94
+ }
95
+ //# sourceMappingURL=business.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"business.d.ts","sourceRoot":"","sources":["../../src/types/business.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=business.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"business.js","sourceRoot":"","sources":["../../src/types/business.ts"],"names":[],"mappings":""}
@@ -0,0 +1,144 @@
1
+ /** Well-known error detail strings returned by the API. Use these for comparison
2
+ * instead of hardcoding strings in your storefront.
3
+ *
4
+ * @example
5
+ * try { await resetPassword(...) } catch (e: any) {
6
+ * if (e.data?.detail === BUYER_AUTH_ERRORS.RESET_TOKEN_INVALID) { ... }
7
+ * }
8
+ */
9
+ export declare const BUYER_AUTH_ERRORS: {
10
+ readonly RESET_TOKEN_INVALID: "RESET_TOKEN_INVALID";
11
+ readonly VERIFY_TOKEN_INVALID: "VERIFY_TOKEN_INVALID";
12
+ readonly EMAIL_ALREADY_VERIFIED: "EMAIL_ALREADY_VERIFIED";
13
+ readonly EMAIL_TAKEN: "Email already registered in this store";
14
+ readonly MISSING_REQUIRED_FIELDS: "MISSING_REQUIRED_FIELDS";
15
+ /** Turnstile enabled but captcha_token missing or invalid (HTTP 422). */
16
+ readonly CAPTCHA_REQUIRED: "CAPTCHA_REQUIRED";
17
+ };
18
+ /** True when the API rejected auth because Turnstile verification failed or was omitted. */
19
+ export declare function isCaptchaRequiredError(err: unknown): boolean;
20
+ /** Token pair returned by /store/auth/register, /store/auth/login, /store/auth/refresh */
21
+ export interface BuyerSession {
22
+ access_token: string;
23
+ refresh_token: string | null;
24
+ token_type: string;
25
+ }
26
+ /** Full customer profile from GET /store/me */
27
+ export interface BuyerProfile {
28
+ id: number;
29
+ email: string;
30
+ business_id: string;
31
+ full_name: string | null;
32
+ phone: string | null;
33
+ doc_type: number | null;
34
+ doc_number: string | null;
35
+ birth_date: string | null;
36
+ newsletter_subscribed: boolean;
37
+ avatar_url: string | null;
38
+ metadata: Record<string, any>;
39
+ registration_source: string;
40
+ last_login_at: string | null;
41
+ is_active: boolean;
42
+ created_at: string;
43
+ updated_at: string;
44
+ }
45
+ /** A single resolved field in the storefront registration form. */
46
+ export interface RegistrationFormField {
47
+ name: string;
48
+ label: string;
49
+ /** "text" | "password" | "phone" | "date" | "select" | "boolean" | "image" | "address" | "custom" */
50
+ type: string;
51
+ /** "text_input" | "phone_input" | "date_picker" | "select" | "checkbox" | "toggle"
52
+ * | "image_upload" | "ubigeo_selector" | "google_maps_picker" | "manual" */
53
+ widget: string;
54
+ widget_config: Record<string, any>;
55
+ required: boolean;
56
+ order: number;
57
+ options: string[] | null;
58
+ }
59
+ /** A single step in the form (always at least one). */
60
+ export interface RegistrationFormStep {
61
+ id: string;
62
+ label: string;
63
+ order: number;
64
+ skippable: boolean;
65
+ fields: RegistrationFormField[];
66
+ }
67
+ /** Full resolved form schema from GET /store/auth/registration-form.
68
+ * `email` and `password` are always present in steps[0].fields — no need to add them. */
69
+ export interface RegistrationForm {
70
+ mode: "single_step" | "multi_step";
71
+ steps: RegistrationFormStep[];
72
+ }
73
+ /** Address submitted during customer registration. */
74
+ export interface AddressInRegistration {
75
+ line1: string;
76
+ line2?: string | null;
77
+ reference?: string | null;
78
+ /** 6-digit Peruvian ubigeo code, e.g. "150101" */
79
+ ubigeo_code?: string | null;
80
+ latitude?: number | null;
81
+ longitude?: number | null;
82
+ /** "google_maps" | "ubigeo_centroid" | "manual" */
83
+ geocoding_source?: string | null;
84
+ }
85
+ /** All accepted fields for POST /store/auth/register.
86
+ * Which fields are required depends on the merchant's registration form configuration.
87
+ * Use fetchRegistrationForm() to know which fields to show and which are required. */
88
+ export interface BuyerRegisterParams {
89
+ email: string;
90
+ password: string;
91
+ fullName?: string | null;
92
+ phone?: string | null;
93
+ /** 1=DNI 2=CE 3=Pasaporte 6=RUC */
94
+ docType?: number | null;
95
+ docNumber?: string | null;
96
+ /** ISO date "YYYY-MM-DD" */
97
+ birthDate?: string | null;
98
+ newsletterSubscribed?: boolean;
99
+ /** Default "organic". */
100
+ registrationSource?: string;
101
+ /** Custom fields configured by the merchant — keyed by field name. */
102
+ metadata?: Record<string, any>;
103
+ address?: AddressInRegistration | null;
104
+ /** Cloudflare Turnstile token from the widget — required when API has TURNSTILE_ENABLED=true */
105
+ captchaToken?: string | null;
106
+ }
107
+ /** A single field that was missing in the registration request. */
108
+ export interface MissingField {
109
+ field: string;
110
+ msg: string;
111
+ }
112
+ /**
113
+ * Thrown when the API returns 422 MISSING_REQUIRED_FIELDS.
114
+ * Use `error.missingFields` to mark exactly which fields are invalid in the UI.
115
+ *
116
+ * @example
117
+ * try {
118
+ * await registerBuyer(config, website, params);
119
+ * } catch (e) {
120
+ * if (e instanceof MissingFieldsError) {
121
+ * for (const { field } of e.missingFields) markFieldError(field);
122
+ * }
123
+ * }
124
+ */
125
+ export declare class MissingFieldsError extends Error {
126
+ status: 422;
127
+ missingFields: MissingField[];
128
+ constructor(missingFields: MissingField[]);
129
+ }
130
+ /** Fields the customer can update via PATCH /store/me/profile. All optional. */
131
+ export interface BuyerProfileUpdateParams {
132
+ fullName?: string | null;
133
+ phone?: string | null;
134
+ /** 1=DNI 2=CE 3=Pasaporte 6=RUC */
135
+ docType?: number | null;
136
+ docNumber?: string | null;
137
+ /** ISO date "YYYY-MM-DD" */
138
+ birthDate?: string | null;
139
+ newsletterSubscribed?: boolean;
140
+ avatarUrl?: string | null;
141
+ /** If provided, changes the customer's password. */
142
+ password?: string;
143
+ }
144
+ //# sourceMappingURL=buyer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buyer.d.ts","sourceRoot":"","sources":["../../src/types/buyer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /** Well-known error detail strings returned by the API. Use these for comparison
2
+ * instead of hardcoding strings in your storefront.
3
+ *
4
+ * @example
5
+ * try { await resetPassword(...) } catch (e: any) {
6
+ * if (e.data?.detail === BUYER_AUTH_ERRORS.RESET_TOKEN_INVALID) { ... }
7
+ * }
8
+ */
9
+ export const BUYER_AUTH_ERRORS = {
10
+ RESET_TOKEN_INVALID: "RESET_TOKEN_INVALID",
11
+ VERIFY_TOKEN_INVALID: "VERIFY_TOKEN_INVALID",
12
+ EMAIL_ALREADY_VERIFIED: "EMAIL_ALREADY_VERIFIED",
13
+ EMAIL_TAKEN: "Email already registered in this store",
14
+ MISSING_REQUIRED_FIELDS: "MISSING_REQUIRED_FIELDS",
15
+ /** Turnstile enabled but captcha_token missing or invalid (HTTP 422). */
16
+ CAPTCHA_REQUIRED: "CAPTCHA_REQUIRED",
17
+ };
18
+ /** True when the API rejected auth because Turnstile verification failed or was omitted. */
19
+ export function isCaptchaRequiredError(err) {
20
+ const e = err;
21
+ return e?.status === 422 && e?.data?.detail === BUYER_AUTH_ERRORS.CAPTCHA_REQUIRED;
22
+ }
23
+ /**
24
+ * Thrown when the API returns 422 MISSING_REQUIRED_FIELDS.
25
+ * Use `error.missingFields` to mark exactly which fields are invalid in the UI.
26
+ *
27
+ * @example
28
+ * try {
29
+ * await registerBuyer(config, website, params);
30
+ * } catch (e) {
31
+ * if (e instanceof MissingFieldsError) {
32
+ * for (const { field } of e.missingFields) markFieldError(field);
33
+ * }
34
+ * }
35
+ */
36
+ export class MissingFieldsError extends Error {
37
+ status = 422;
38
+ missingFields;
39
+ constructor(missingFields) {
40
+ super("MISSING_REQUIRED_FIELDS");
41
+ this.name = "MissingFieldsError";
42
+ this.missingFields = missingFields;
43
+ }
44
+ }
45
+ //# sourceMappingURL=buyer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buyer.js","sourceRoot":"","sources":["../../src/types/buyer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,mBAAmB,EAAK,qBAAqB;IAC7C,oBAAoB,EAAI,sBAAsB;IAC9C,sBAAsB,EAAE,wBAAwB;IAChD,WAAW,EAAa,wCAAwC;IAChE,uBAAuB,EAAE,yBAAyB;IAClD,yEAAyE;IACzE,gBAAgB,EAAQ,kBAAkB;CAClC,CAAC;AAEX,4FAA4F;AAC5F,MAAM,UAAU,sBAAsB,CAAC,GAAY;IACjD,MAAM,CAAC,GAAG,GAAsD,CAAC;IACjE,OAAO,CAAC,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,KAAK,iBAAiB,CAAC,gBAAgB,CAAC;AACrF,CAAC;AAkHD;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,MAAM,GAAG,GAAY,CAAC;IACtB,aAAa,CAAiB;IAC9B,YAAY,aAA6B;QACvC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;CACF"}
@@ -0,0 +1,51 @@
1
+ export interface CampaignScheduleMeta {
2
+ /** ISO UTC datetime — null if not configured. */
3
+ countdown_target_at: string | null;
4
+ /** Which field the target was sourced from. */
5
+ countdown_target_source: "section_attribute" | "config.display.countdown_target_at" | "active_until" | null;
6
+ }
7
+ /**
8
+ * Full shape of a resolved Smart Collection as returned in section
9
+ * `attributes_meta` or `resolved_data` by the composition API.
10
+ */
11
+ export interface ResolvedSmartCollectionInfo {
12
+ collection: {
13
+ id: number;
14
+ name: string;
15
+ type: string;
16
+ is_active: boolean;
17
+ active_from: string | null;
18
+ active_until: string | null;
19
+ config: {
20
+ display?: {
21
+ countdown_target_at?: string | null;
22
+ };
23
+ };
24
+ website_id?: string | null;
25
+ cache_ttl?: number;
26
+ contract_type?: string | null;
27
+ };
28
+ schedule: {
29
+ data_window: {
30
+ from: string | null;
31
+ until: string | null;
32
+ };
33
+ countdown_target_at: string | null;
34
+ countdown_target_source: string | null;
35
+ };
36
+ meta: {
37
+ inactive: boolean;
38
+ inactive_reason: "disabled" | "before_start" | "after_end" | null;
39
+ };
40
+ }
41
+ /** Remaining-time snapshot for a countdown. */
42
+ export interface CampaignCountdownState {
43
+ days: number;
44
+ hours: number;
45
+ minutes: number;
46
+ seconds: number;
47
+ /** True when targetAt is null or already in the past. */
48
+ expired: boolean;
49
+ targetAt: string | null;
50
+ }
51
+ //# sourceMappingURL=campaign.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign.d.ts","sourceRoot":"","sources":["../../src/types/campaign.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,+CAA+C;IAC/C,uBAAuB,EACnB,mBAAmB,GACnB,oCAAoC,GACpC,cAAc,GACd,IAAI,CAAC;CACV;AAED;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE;QACV,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,OAAO,CAAC;QACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,MAAM,EAAE;YAAE,OAAO,CAAC,EAAE;gBAAE,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;aAAE,CAAA;SAAE,CAAC;QAC9D,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,CAAC;IACF,QAAQ,EAAE;QACR,WAAW,EAAE;YAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;YAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC;QAC3D,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;KACxC,CAAC;IACF,IAAI,EAAE;QACJ,QAAQ,EAAE,OAAO,CAAC;QAClB,eAAe,EAAE,UAAU,GAAG,cAAc,GAAG,WAAW,GAAG,IAAI,CAAC;KACnE,CAAC;CACH;AAED,+CAA+C;AAC/C,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=campaign.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign.js","sourceRoot":"","sources":["../../src/types/campaign.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ /** A line item inside a Cart. */
2
+ export interface CartItem {
3
+ id: number;
4
+ product_variant_id: number;
5
+ quantity: number;
6
+ metadata?: {
7
+ name?: string | null;
8
+ slug?: string | null;
9
+ brand?: string | null;
10
+ image?: string | null;
11
+ unit_price?: number | null;
12
+ unit_price_string?: string | null;
13
+ } | null;
14
+ }
15
+ export interface CartTotals {
16
+ subtotal: number;
17
+ formatted_subtotal: string;
18
+ currency: string;
19
+ }
20
+ /** Shopping cart for a guest session or authenticated customer. */
21
+ export interface Cart {
22
+ id: string;
23
+ session_id?: string | null;
24
+ customer_id?: number | null;
25
+ items: CartItem[];
26
+ totals: CartTotals;
27
+ }
28
+ /** Customer and shipping details submitted at checkout. */
29
+ export interface CheckoutRequest {
30
+ customer_name: string;
31
+ customer_phone: string;
32
+ customer_email?: string | null;
33
+ shipping_address?: string | null;
34
+ notes?: string | null;
35
+ coupon_code?: string | null;
36
+ customer_doc_type?: number | null;
37
+ customer_doc_number?: string | null;
38
+ address_id?: number | null;
39
+ }
40
+ //# sourceMappingURL=cart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cart.d.ts","sourceRoot":"","sources":["../../src/types/cart.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACnC,GAAG,IAAI,CAAC;CACV;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,mEAAmE;AACnE,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,2DAA2D;AAC3D,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cart.js","sourceRoot":"","sources":["../../src/types/cart.ts"],"names":[],"mappings":""}