@shoppexio/storefront 1.0.90 → 1.0.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/customer.cjs CHANGED
@@ -19694,7 +19694,7 @@ function date4(params) {
19694
19694
  return _coercedDate(ZodDate, params);
19695
19695
  }
19696
19696
 
19697
- // ../contracts/src/customer-portal-wire.ts
19697
+ // ../contracts/src/customer-account-wire.ts
19698
19698
  var nullableStringSchema = external_exports.string().nullable();
19699
19699
  var unknownRecordSchema = external_exports.record(external_exports.string(), external_exports.unknown());
19700
19700
  var customerPortalBrandingSchema = external_exports.object({
@@ -19703,25 +19703,6 @@ var customerPortalBrandingSchema = external_exports.object({
19703
19703
  secondary_color: external_exports.string(),
19704
19704
  accent_color: external_exports.string()
19705
19705
  });
19706
- var customerPortalMeSchema = external_exports.object({
19707
- customer: external_exports.object({
19708
- id: nullableStringSchema,
19709
- email: external_exports.string(),
19710
- name: external_exports.string(),
19711
- avatar_url: nullableStringSchema,
19712
- joined_at: nullableStringSchema
19713
- }),
19714
- shop: external_exports.object({
19715
- id: external_exports.string(),
19716
- slug: external_exports.string(),
19717
- name: external_exports.string(),
19718
- currency: external_exports.string(),
19719
- branding: customerPortalBrandingSchema
19720
- }),
19721
- // Same-origin consumers may receive the server-side bearer exchange token.
19722
- // The external headless transport always produces null here.
19723
- token: nullableStringSchema
19724
- });
19725
19706
  var customerPortalProductImageSnakeSchema = external_exports.object({
19726
19707
  attachment_image_id: external_exports.object({
19727
19708
  cloudflare_image_id: nullableStringSchema
@@ -19767,16 +19748,6 @@ var customerPortalPaginatedInvoicesSchema = external_exports.object({
19767
19748
  has_more: external_exports.boolean()
19768
19749
  })
19769
19750
  });
19770
- var customerPortalOrderReviewSchema = external_exports.object({
19771
- can_review: external_exports.boolean(),
19772
- already_submitted: external_exports.boolean(),
19773
- feedback_uniqid: nullableStringSchema,
19774
- product_title: nullableStringSchema,
19775
- score: external_exports.union([external_exports.literal(1), external_exports.literal(3), external_exports.literal(5)]).nullable(),
19776
- is_automated: external_exports.boolean(),
19777
- message: nullableStringSchema,
19778
- submitted_at: nullableStringSchema
19779
- });
19780
19751
  var customerPortalPaymentSchema = external_exports.object({
19781
19752
  gateway: external_exports.string(),
19782
19753
  /** Merchant-configured buyer label frozen when the payment attempt started. */
@@ -19788,6 +19759,27 @@ var customerPortalPaymentSchema = external_exports.object({
19788
19759
  cryptoAddress: nullableStringSchema,
19789
19760
  apmMethod: nullableStringSchema
19790
19761
  });
19762
+ var customerPortalInvoiceShippingSchema = external_exports.object({
19763
+ /** Null while no address was entered (an unpaid order). */
19764
+ address: external_exports.object({
19765
+ name: external_exports.string(),
19766
+ line1: external_exports.string(),
19767
+ line2: nullableStringSchema,
19768
+ city: external_exports.string(),
19769
+ state: nullableStringSchema,
19770
+ postalCode: nullableStringSchema,
19771
+ /** ISO 3166-1 alpha-2. */
19772
+ country: external_exports.string(),
19773
+ phone: nullableStringSchema
19774
+ }).nullable(),
19775
+ shippedAt: nullableStringSchema,
19776
+ deliveredAt: nullableStringSchema,
19777
+ trackingCode: nullableStringSchema,
19778
+ /** Merchant-entered; render as a link only after an http(s) check. */
19779
+ trackingUrl: nullableStringSchema,
19780
+ /** Physical lines this order will not ship (sold out or refunded). */
19781
+ notShippingLineItemIds: external_exports.array(external_exports.string())
19782
+ });
19791
19783
  var customerPortalInvoiceDetailSchema = external_exports.object({
19792
19784
  id: external_exports.string(),
19793
19785
  uniqid: external_exports.string(),
@@ -19814,6 +19806,12 @@ var customerPortalInvoiceDetailSchema = external_exports.object({
19814
19806
  discount_label: external_exports.enum(["Coupon", "Discount"]),
19815
19807
  affiliate_code: nullableStringSchema,
19816
19808
  tip: external_exports.string(),
19809
+ /**
19810
+ * Shipping of a physical order in the invoice currency. Null when nothing
19811
+ * on the order ships or no address was quoted yet; "0.00" is free
19812
+ * shipping. Optional so payloads from before physical products parse.
19813
+ */
19814
+ shipping: nullableStringSchema.optional(),
19817
19815
  gateway_fee: external_exports.string(),
19818
19816
  platform_fee: external_exports.string(),
19819
19817
  processing_fee: external_exports.string(),
@@ -19864,25 +19862,17 @@ var customerPortalInvoiceDetailSchema = external_exports.object({
19864
19862
  }).nullable()
19865
19863
  }).nullable()
19866
19864
  })),
19865
+ /**
19866
+ * Shipment of an order with physical lines, for the authenticated buyer: the
19867
+ * full address (their own order) plus the shipment state. Null when nothing
19868
+ * on the order ships; optional so payloads from before physical products
19869
+ * parse. Producer: `buildCustomerInvoiceShipping`
19870
+ * (apps/backend/src/services/shipping/shippingQuote.ts).
19871
+ */
19872
+ shipping: customerPortalInvoiceShippingSchema.nullable().optional(),
19867
19873
  currentPayment: customerPortalPaymentSchema.nullable(),
19868
19874
  payments: external_exports.array(customerPortalPaymentSchema)
19869
19875
  });
19870
- var customerPortalWalletTopupQuoteSchema = external_exports.object({
19871
- quote: external_exports.object({
19872
- enabled: external_exports.boolean(),
19873
- currency: external_exports.string(),
19874
- min_amount: external_exports.string(),
19875
- max_amount: nullableStringSchema,
19876
- bonus_tiers: external_exports.array(external_exports.object({
19877
- min_amount: external_exports.string(),
19878
- bonus_percent: external_exports.number()
19879
- }))
19880
- })
19881
- });
19882
- var customerPortalWalletTopupResultSchema = external_exports.object({
19883
- invoice_id: external_exports.string(),
19884
- url: external_exports.string()
19885
- });
19886
19876
  var customerPortalRewardActivityItemSchema = external_exports.object({
19887
19877
  id: external_exports.string(),
19888
19878
  type: external_exports.string(),
@@ -19934,29 +19924,15 @@ var customerPortalAffiliateLinkSchema = external_exports.object({
19934
19924
  created_at: nullableStringSchema,
19935
19925
  updated_at: nullableStringSchema
19936
19926
  });
19937
- var customerPortalAffiliateStatsSchema = external_exports.object({
19938
- window_days: external_exports.number(),
19939
- totals: external_exports.object({
19940
- clicks: external_exports.number(),
19941
- add_to_carts: external_exports.number(),
19942
- checkouts_started: external_exports.number(),
19943
- sales: external_exports.number()
19944
- }),
19945
- per_link: external_exports.array(external_exports.object({
19946
- link_id: external_exports.string(),
19947
- code: external_exports.string(),
19948
- label: nullableStringSchema,
19949
- clicks: external_exports.number(),
19950
- add_to_carts: external_exports.number(),
19951
- checkouts_started: external_exports.number()
19952
- })),
19953
- daily: external_exports.array(external_exports.object({
19954
- date: external_exports.string(),
19955
- clicks: external_exports.number(),
19956
- add_to_carts: external_exports.number(),
19957
- checkouts_started: external_exports.number()
19958
- }))
19959
- });
19927
+ var customerPortalAffiliateLedgerStatusSchema = external_exports.enum([
19928
+ "waiting_payment",
19929
+ "earned",
19930
+ "in_payout_request",
19931
+ "store_credit",
19932
+ "paid_out",
19933
+ "split",
19934
+ "voided"
19935
+ ]);
19960
19936
  var customerPortalAffiliateSummarySchema = external_exports.object({
19961
19937
  customer: external_exports.object({
19962
19938
  id: external_exports.string(),
@@ -19988,6 +19964,15 @@ var customerPortalAffiliateSummarySchema = external_exports.object({
19988
19964
  id: external_exports.string(),
19989
19965
  invoice_id: external_exports.string(),
19990
19966
  commission_amount: external_exports.string(),
19967
+ ledger_status: customerPortalAffiliateLedgerStatusSchema,
19968
+ /** USD still earned: not yet requested, paid out or turned into store credit. */
19969
+ earned_amount: external_exports.string(),
19970
+ /** USD in an open payout request. */
19971
+ requested_amount: external_exports.string(),
19972
+ /** USD paid out. */
19973
+ paid_amount: external_exports.string(),
19974
+ /** USD converted to store credit. */
19975
+ store_credit_amount: external_exports.string(),
19991
19976
  base_amount: external_exports.string(),
19992
19977
  discount_amount: external_exports.string(),
19993
19978
  status: external_exports.string(),
@@ -20069,7 +20054,7 @@ var customerLoyaltySchema = external_exports.object({
20069
20054
  min_redeem_points: external_exports.number()
20070
20055
  }).nullable(),
20071
20056
  transactions: external_exports.array(external_exports.object({
20072
- type: external_exports.enum(["EARN_ORDER", "EARN_REVIEW", "REDEEM", "ADJUST"]),
20057
+ type: external_exports.enum(["EARN_ORDER", "EARN_REVIEW", "REDEEM", "ADJUST", "REVOKE"]),
20073
20058
  points: external_exports.number(),
20074
20059
  balance_after: external_exports.number(),
20075
20060
  description: nullableStringSchema,
@@ -20102,40 +20087,195 @@ var customerWarrantyClaimSchema = external_exports.object({
20102
20087
  claim_status: external_exports.literal("REQUESTED")
20103
20088
  })
20104
20089
  });
20090
+ var customerPortalDashboardSchema = external_exports.object({
20091
+ shop: external_exports.object({
20092
+ id: external_exports.string(),
20093
+ slug: external_exports.string(),
20094
+ name: external_exports.string(),
20095
+ currency: external_exports.string(),
20096
+ branding: customerPortalBrandingSchema
20097
+ }),
20098
+ customer: external_exports.object({
20099
+ email: external_exports.string(),
20100
+ name: external_exports.string()
20101
+ }),
20102
+ stats: external_exports.object({
20103
+ invoices_count: external_exports.number(),
20104
+ licenses_count: external_exports.number(),
20105
+ deliverables_count: external_exports.number(),
20106
+ tickets_count: external_exports.number()
20107
+ }),
20108
+ wallet: external_exports.object({
20109
+ available: external_exports.string(),
20110
+ total: external_exports.string(),
20111
+ hold: external_exports.string(),
20112
+ currency: external_exports.string(),
20113
+ enabled: external_exports.boolean()
20114
+ }).nullable(),
20115
+ rewards: customerPortalRewardsSchema,
20116
+ affiliate: customerPortalAffiliateSummarySchema,
20117
+ invoices: external_exports.array(customerPortalDashboardInvoiceSchema),
20118
+ subscriptions: external_exports.array(customerPortalSubscriptionSummarySchema),
20119
+ licenses: external_exports.array(external_exports.object({
20120
+ uniqid: external_exports.string(),
20121
+ /*
20122
+ * Both of these are produced by `getCustomerProductsLicenses` and were
20123
+ * simply missing here. Without `invoice_id` a consumer cannot tell which
20124
+ * purchase a license belongs to, and without `status` it cannot tell an
20125
+ * active license from a suspended, revoked or expired one — the projection
20126
+ * computes exactly that.
20127
+ */
20128
+ invoice_id: external_exports.string(),
20129
+ status: external_exports.string(),
20130
+ license_key: external_exports.string(),
20131
+ hardware_id: nullableStringSchema,
20132
+ expires_at: external_exports.number().nullable(),
20133
+ /*
20134
+ * Server-decided: the product behind this license still exists, still
20135
+ * sells through storefront checkout, and still has licensing enabled.
20136
+ * The portal cannot derive any of that, so it renders the renew action
20137
+ * from this flag alone instead of guessing and offering a dead button.
20138
+ */
20139
+ renewable: external_exports.boolean(),
20140
+ product: external_exports.object({
20141
+ title: external_exports.string().optional()
20142
+ }).optional()
20143
+ })),
20144
+ deliverables: external_exports.array(external_exports.object({
20145
+ id: external_exports.string(),
20146
+ invoice_uniqid: external_exports.string(),
20147
+ product_title: external_exports.string(),
20148
+ kind: external_exports.enum(["file", "serial", "license"]),
20149
+ label: external_exports.string(),
20150
+ value: external_exports.string(),
20151
+ href: nullableStringSchema,
20152
+ created_at: external_exports.string()
20153
+ })),
20154
+ tickets: external_exports.array(external_exports.object({
20155
+ uniqid: external_exports.string(),
20156
+ title: external_exports.string(),
20157
+ status: external_exports.string(),
20158
+ updated_at: external_exports.string(),
20159
+ created_at: nullableStringSchema
20160
+ }))
20161
+ });
20162
+ var customerPortalNotificationPreferencesSchema = external_exports.object({
20163
+ order_created_emails: external_exports.boolean(),
20164
+ order_completed_emails: external_exports.boolean(),
20165
+ payment_issue_emails: external_exports.boolean()
20166
+ });
20167
+ var customerPortalAffiliateCreateLinkSchema = external_exports.object({
20168
+ affiliate_link: external_exports.object({
20169
+ id: external_exports.string(),
20170
+ customer_id: external_exports.string(),
20171
+ label: nullableStringSchema,
20172
+ code: external_exports.string(),
20173
+ url: nullableStringSchema,
20174
+ status: external_exports.enum(["pending", "approved", "rejected"]),
20175
+ requested_affiliate_revenue_percent: external_exports.number().nullable(),
20176
+ requested_affiliate_customer_discount_percent: external_exports.number().nullable(),
20177
+ created_at: external_exports.string(),
20178
+ updated_at: external_exports.string()
20179
+ })
20180
+ });
20181
+
20182
+ // ../contracts/src/customer-portal-wire.ts
20183
+ var nullableStringSchema2 = external_exports.string().nullable();
20184
+ var customerPortalMeSchema = external_exports.object({
20185
+ customer: external_exports.object({
20186
+ id: nullableStringSchema2,
20187
+ email: external_exports.string(),
20188
+ name: external_exports.string(),
20189
+ avatar_url: nullableStringSchema2,
20190
+ joined_at: nullableStringSchema2
20191
+ }),
20192
+ shop: external_exports.object({
20193
+ id: external_exports.string(),
20194
+ slug: external_exports.string(),
20195
+ name: external_exports.string(),
20196
+ currency: external_exports.string(),
20197
+ branding: customerPortalBrandingSchema
20198
+ }),
20199
+ token: external_exports.null()
20200
+ });
20201
+ var customerPortalOrderReviewSchema = external_exports.object({
20202
+ can_review: external_exports.boolean(),
20203
+ already_submitted: external_exports.boolean(),
20204
+ feedback_uniqid: nullableStringSchema2,
20205
+ product_title: nullableStringSchema2,
20206
+ score: external_exports.union([external_exports.literal(1), external_exports.literal(3), external_exports.literal(5)]).nullable(),
20207
+ is_automated: external_exports.boolean(),
20208
+ message: nullableStringSchema2,
20209
+ submitted_at: nullableStringSchema2
20210
+ });
20211
+ var customerPortalWalletTopupQuoteSchema = external_exports.object({
20212
+ quote: external_exports.object({
20213
+ enabled: external_exports.boolean(),
20214
+ currency: external_exports.string(),
20215
+ min_amount: external_exports.string(),
20216
+ max_amount: nullableStringSchema2,
20217
+ bonus_tiers: external_exports.array(external_exports.object({
20218
+ min_amount: external_exports.string(),
20219
+ bonus_percent: external_exports.number()
20220
+ }))
20221
+ })
20222
+ });
20223
+ var customerPortalWalletTopupResultSchema = external_exports.object({
20224
+ invoice_id: external_exports.string(),
20225
+ url: external_exports.string()
20226
+ });
20227
+ var customerPortalAffiliateStatsSchema = external_exports.object({
20228
+ window_days: external_exports.number(),
20229
+ totals: external_exports.object({
20230
+ clicks: external_exports.number(),
20231
+ add_to_carts: external_exports.number(),
20232
+ checkouts_started: external_exports.number(),
20233
+ sales: external_exports.number()
20234
+ }),
20235
+ per_link: external_exports.array(external_exports.object({
20236
+ link_id: external_exports.string(),
20237
+ code: external_exports.string(),
20238
+ label: nullableStringSchema2,
20239
+ clicks: external_exports.number(),
20240
+ add_to_carts: external_exports.number(),
20241
+ checkouts_started: external_exports.number()
20242
+ })),
20243
+ daily: external_exports.array(external_exports.object({
20244
+ date: external_exports.string(),
20245
+ clicks: external_exports.number(),
20246
+ add_to_carts: external_exports.number(),
20247
+ checkouts_started: external_exports.number()
20248
+ }))
20249
+ });
20105
20250
  var customerPortalProfileUpdateSchema = external_exports.object({
20106
20251
  customer: external_exports.object({
20107
20252
  id: external_exports.string(),
20108
20253
  email: external_exports.string(),
20109
20254
  name: external_exports.string(),
20110
- joined_at: nullableStringSchema
20255
+ joined_at: nullableStringSchema2
20111
20256
  })
20112
20257
  });
20113
20258
  var customerPortalAvatarSchema = external_exports.object({
20114
- avatar_url: nullableStringSchema
20259
+ avatar_url: nullableStringSchema2
20115
20260
  });
20116
20261
  var customerPortalEmailPreferencesSchema = external_exports.object({
20117
20262
  global_unsubscribed: external_exports.boolean(),
20118
20263
  lists: external_exports.array(external_exports.object({
20119
20264
  id: external_exports.string(),
20120
20265
  name: external_exports.string(),
20121
- description: nullableStringSchema,
20266
+ description: nullableStringSchema2,
20122
20267
  subscribed: external_exports.boolean()
20123
20268
  }))
20124
20269
  });
20125
20270
  var customerPortalEmailPreferencesUpdateSchema = external_exports.object({
20126
20271
  updated: external_exports.boolean()
20127
20272
  });
20128
- var customerPortalNotificationPreferencesSchema = external_exports.object({
20129
- order_created_emails: external_exports.boolean(),
20130
- order_completed_emails: external_exports.boolean(),
20131
- payment_issue_emails: external_exports.boolean()
20132
- });
20133
20273
  var customerPortalFavoritesSchema = external_exports.object({
20134
20274
  favorites: external_exports.array(external_exports.object({
20135
20275
  product_uniqid: external_exports.string(),
20136
20276
  title: external_exports.string(),
20137
- slug: nullableStringSchema,
20138
- image_url: nullableStringSchema,
20277
+ slug: nullableStringSchema2,
20278
+ image_url: nullableStringSchema2,
20139
20279
  price_display: external_exports.number(),
20140
20280
  unavailable: external_exports.boolean(),
20141
20281
  created_at: external_exports.string()
@@ -20148,7 +20288,7 @@ var customerPortalFavoriteMutationSchema = external_exports.union([
20148
20288
  var customerPortalLicenseResetSchema = external_exports.object({
20149
20289
  license: external_exports.object({
20150
20290
  uniqid: external_exports.string(),
20151
- hardware_id: nullableStringSchema
20291
+ hardware_id: nullableStringSchema2
20152
20292
  })
20153
20293
  });
20154
20294
  var customerPortalLicenseRenewalSchema = external_exports.object({
@@ -20177,8 +20317,8 @@ var customerPortalSubscriptionCancelSchema = external_exports.object({
20177
20317
  id: external_exports.string(),
20178
20318
  status: external_exports.string(),
20179
20319
  cancel_at_period_end: external_exports.boolean(),
20180
- cancel_reason: nullableStringSchema,
20181
- canceled_at: nullableStringSchema
20320
+ cancel_reason: nullableStringSchema2,
20321
+ canceled_at: nullableStringSchema2
20182
20322
  })
20183
20323
  });
20184
20324
  var customerPortalSubscriptionStatusSchema = external_exports.object({
@@ -20192,7 +20332,7 @@ var customerPortalSupportTicketDetailSchema = external_exports.object({
20192
20332
  uniqid: external_exports.string(),
20193
20333
  title: external_exports.string(),
20194
20334
  status: external_exports.string(),
20195
- invoice_id: nullableStringSchema,
20335
+ invoice_id: nullableStringSchema2,
20196
20336
  created_at: external_exports.string(),
20197
20337
  updated_at: external_exports.string(),
20198
20338
  messages: external_exports.array(external_exports.object({
@@ -20206,69 +20346,19 @@ var customerPortalSupportTicketDetailSchema = external_exports.object({
20206
20346
  var customerPortalSupportCreateSchema = external_exports.object({
20207
20347
  uniqid: external_exports.string()
20208
20348
  });
20209
- var customerPortalAffiliateCreateLinkSchema = external_exports.object({
20210
- affiliate_link: external_exports.object({
20211
- id: external_exports.string(),
20212
- customer_id: external_exports.string(),
20213
- label: nullableStringSchema,
20214
- code: external_exports.string(),
20215
- url: nullableStringSchema,
20216
- status: external_exports.enum(["pending", "approved", "rejected"]),
20217
- requested_affiliate_revenue_percent: external_exports.number().nullable(),
20218
- requested_affiliate_customer_discount_percent: external_exports.number().nullable(),
20219
- created_at: external_exports.string(),
20220
- updated_at: external_exports.string()
20221
- })
20222
- });
20223
- var customerReplacementEligibilityCheckSchema = external_exports.object({
20224
- check: external_exports.string(),
20225
- passed: external_exports.boolean(),
20226
- reason: nullableStringSchema.optional()
20227
- });
20228
- var customerReplacementEligibilitySchema = external_exports.object({
20229
- eligible: external_exports.boolean(),
20230
- decision: external_exports.enum(["ELIGIBLE", "DENIED", "NO_RULE"]),
20231
- reason: nullableStringSchema,
20232
- eligibility_checks: external_exports.array(customerReplacementEligibilityCheckSchema)
20233
- });
20234
- var customerReplacementRequestSchema = external_exports.object({
20235
- request_id: external_exports.string(),
20236
- event_id: nullableStringSchema,
20237
- decision: external_exports.enum([
20238
- "ISSUED_REPLACEMENT",
20239
- "FALLBACK_REFUND",
20240
- "FALLBACK_CREDIT",
20241
- "QUEUED_MANUAL",
20242
- "DENIED",
20243
- "EXHAUSTED",
20244
- "FAILED"
20245
- ]),
20246
- status_label: external_exports.enum([
20247
- "ISSUED",
20248
- "REFUNDED",
20249
- "CREDITED",
20250
- "QUEUED_MANUAL",
20251
- "DENIED",
20252
- "EXHAUSTED",
20253
- "FAILED",
20254
- "PENDING"
20255
- ]),
20256
- reason: nullableStringSchema,
20257
- eligibility_checks: external_exports.array(customerReplacementEligibilityCheckSchema)
20258
- });
20259
20349
  var customerResellerTierSchema = external_exports.object({
20260
20350
  id: external_exports.string(),
20261
- name: nullableStringSchema,
20351
+ name: nullableStringSchema2,
20262
20352
  discount_percent: external_exports.number().nullable()
20263
20353
  });
20264
20354
  var customerResellerRelationshipSchema = external_exports.object({
20265
20355
  id: external_exports.string(),
20266
20356
  status: external_exports.enum(["INVITED", "APPLIED", "ACTIVE", "SUSPENDED", "REJECTED"]),
20267
20357
  tier: customerResellerTierSchema.nullable(),
20268
- application_note: nullableStringSchema,
20358
+ application_note: nullableStringSchema2,
20269
20359
  lifetime_revenue: external_exports.string(),
20270
20360
  lifetime_orders: external_exports.number(),
20271
- approved_at: nullableStringSchema,
20361
+ approved_at: nullableStringSchema2,
20272
20362
  created_at: external_exports.string()
20273
20363
  });
20274
20364
  var customerResellerSummarySchema = external_exports.object({
@@ -20276,7 +20366,7 @@ var customerResellerSummarySchema = external_exports.object({
20276
20366
  api_enabled: external_exports.boolean(),
20277
20367
  portal_purchasing_enabled: external_exports.boolean(),
20278
20368
  enrollment_mode: external_exports.enum(["MANUAL", "APPLICATION", "OPEN"]),
20279
- application_message: nullableStringSchema,
20369
+ application_message: nullableStringSchema2,
20280
20370
  require_application_note: external_exports.boolean(),
20281
20371
  reseller: customerResellerRelationshipSchema.nullable()
20282
20372
  });
@@ -20295,6 +20385,16 @@ var customerResellerCatalogVariantSchema = external_exports.object({
20295
20385
  discount_percent: external_exports.number(),
20296
20386
  applied_override: customerResellerAppliedOverrideSchema
20297
20387
  });
20388
+ var customerResellerCustomFieldSchema = external_exports.object({
20389
+ name: external_exports.string(),
20390
+ type: external_exports.string(),
20391
+ required: external_exports.boolean(),
20392
+ placeholder: external_exports.string(),
20393
+ default_value: external_exports.string(),
20394
+ regex: nullableStringSchema2,
20395
+ min_length: external_exports.number().nullable(),
20396
+ format: external_exports.enum(["number", "discord_invite", "url"]).nullable()
20397
+ });
20298
20398
  var customerResellerCatalogSchema = external_exports.object({
20299
20399
  tier: customerResellerTierSchema,
20300
20400
  catalog: external_exports.object({
@@ -20315,6 +20415,10 @@ var customerResellerCatalogSchema = external_exports.object({
20315
20415
  unit_price: external_exports.string(),
20316
20416
  discount_percent: external_exports.number(),
20317
20417
  applied_override: customerResellerAppliedOverrideSchema,
20418
+ /** The supplier's maximum price for reselling this product (and each variant); null = no limit. */
20419
+ max_unit_price: external_exports.string().nullable(),
20420
+ /** Optional: a backend released before reseller custom fields does not send it. */
20421
+ custom_fields: external_exports.array(customerResellerCustomFieldSchema).optional(),
20318
20422
  variants: external_exports.array(customerResellerCatalogVariantSchema)
20319
20423
  }))
20320
20424
  })
@@ -20327,8 +20431,8 @@ var customerResellerQuoteSchema = external_exports.object({
20327
20431
  product_id: external_exports.string(),
20328
20432
  product_title: external_exports.string(),
20329
20433
  product_type: external_exports.string(),
20330
- variant_id: nullableStringSchema,
20331
- variant_title: nullableStringSchema,
20434
+ variant_id: nullableStringSchema2,
20435
+ variant_title: nullableStringSchema2,
20332
20436
  quantity: external_exports.number(),
20333
20437
  base_price: external_exports.string(),
20334
20438
  discount_percent: external_exports.number(),
@@ -20369,17 +20473,17 @@ var customerResellerOrderSchema = external_exports.object({
20369
20473
  tier_name: external_exports.string(),
20370
20474
  tier_discount_percent: external_exports.number(),
20371
20475
  partially_delivered: external_exports.boolean(),
20372
- refunded_amount: nullableStringSchema,
20476
+ refunded_amount: nullableStringSchema2,
20373
20477
  lines: external_exports.array(external_exports.object({
20374
- product_id: nullableStringSchema,
20478
+ product_id: nullableStringSchema2,
20375
20479
  product_title: external_exports.string(),
20376
- variant_id: nullableStringSchema,
20377
- variant_title: nullableStringSchema,
20480
+ variant_id: nullableStringSchema2,
20481
+ variant_title: nullableStringSchema2,
20378
20482
  quantity: external_exports.number(),
20379
20483
  unit_price: external_exports.string(),
20380
20484
  total: external_exports.string(),
20381
20485
  delivered: external_exports.boolean(),
20382
- delivered_at: nullableStringSchema,
20486
+ delivered_at: nullableStringSchema2,
20383
20487
  serials: external_exports.array(external_exports.string())
20384
20488
  }))
20385
20489
  })
@@ -20398,8 +20502,8 @@ var customerResellerApiKeysSchema = external_exports.object({
20398
20502
  id: external_exports.string(),
20399
20503
  name: external_exports.string(),
20400
20504
  key_last4: external_exports.string(),
20401
- last_used_at: nullableStringSchema,
20402
- revoked_at: nullableStringSchema,
20505
+ last_used_at: nullableStringSchema2,
20506
+ revoked_at: nullableStringSchema2,
20403
20507
  created_at: external_exports.string()
20404
20508
  }))
20405
20509
  });
@@ -20409,78 +20513,17 @@ var customerResellerTopupSchema = external_exports.object({
20409
20513
  url: external_exports.string()
20410
20514
  })
20411
20515
  });
20412
- var customerPortalDashboardSchema = external_exports.object({
20413
- shop: external_exports.object({
20414
- id: external_exports.string(),
20415
- slug: external_exports.string(),
20416
- name: external_exports.string(),
20417
- currency: external_exports.string(),
20418
- branding: customerPortalBrandingSchema
20419
- }),
20420
- customer: external_exports.object({
20421
- email: external_exports.string(),
20422
- name: external_exports.string()
20423
- }),
20424
- stats: external_exports.object({
20425
- invoices_count: external_exports.number(),
20426
- licenses_count: external_exports.number(),
20427
- deliverables_count: external_exports.number(),
20428
- tickets_count: external_exports.number()
20429
- }),
20430
- wallet: external_exports.object({
20431
- available: external_exports.string(),
20432
- total: external_exports.string(),
20433
- hold: external_exports.string(),
20434
- currency: external_exports.string(),
20435
- enabled: external_exports.boolean()
20436
- }).nullable(),
20437
- rewards: customerPortalRewardsSchema,
20438
- affiliate: customerPortalAffiliateSummarySchema,
20439
- invoices: external_exports.array(customerPortalDashboardInvoiceSchema),
20440
- subscriptions: external_exports.array(customerPortalSubscriptionSummarySchema),
20441
- licenses: external_exports.array(external_exports.object({
20442
- uniqid: external_exports.string(),
20443
- /*
20444
- * Both of these are produced by `getCustomerProductsLicenses` and were
20445
- * simply missing here. Without `invoice_id` a consumer cannot tell which
20446
- * purchase a license belongs to, and without `status` it cannot tell an
20447
- * active license from a suspended, revoked or expired one — the projection
20448
- * computes exactly that.
20449
- */
20450
- invoice_id: external_exports.string(),
20451
- status: external_exports.string(),
20452
- license_key: external_exports.string(),
20453
- hardware_id: nullableStringSchema,
20454
- expires_at: external_exports.number().nullable(),
20455
- /*
20456
- * Server-decided: the product behind this license still exists, still
20457
- * sells through storefront checkout, and still has licensing enabled.
20458
- * The portal cannot derive any of that, so it renders the renew action
20459
- * from this flag alone instead of guessing and offering a dead button.
20460
- */
20461
- renewable: external_exports.boolean(),
20462
- product: external_exports.object({
20463
- title: external_exports.string().optional()
20464
- }).optional()
20465
- })),
20466
- deliverables: external_exports.array(external_exports.object({
20467
- id: external_exports.string(),
20468
- invoice_uniqid: external_exports.string(),
20469
- product_title: external_exports.string(),
20470
- kind: external_exports.enum(["file", "serial", "license"]),
20471
- label: external_exports.string(),
20472
- value: external_exports.string(),
20473
- href: nullableStringSchema,
20474
- created_at: external_exports.string()
20475
- })),
20476
- tickets: external_exports.array(external_exports.object({
20477
- uniqid: external_exports.string(),
20478
- title: external_exports.string(),
20479
- status: external_exports.string(),
20480
- updated_at: external_exports.string(),
20481
- created_at: nullableStringSchema
20482
- }))
20483
- });
20516
+
20517
+ // ../contracts/src/storefront-storage-key.ts
20518
+ var PREVIEW_FLAG = "storefrontPreview";
20519
+ var PREVIEW_SUFFIX = "_preview";
20520
+ var STOREFRONT_PREVIEW_FLAG_SCRIPT = `<script>window.${PREVIEW_FLAG}=true;</script>`;
20521
+ function isStorefrontPreview(scope = globalThis) {
20522
+ return scope[PREVIEW_FLAG] === true;
20523
+ }
20524
+ function storefrontStorageKey(key, scope = globalThis) {
20525
+ return isStorefrontPreview(scope) ? `${key}${PREVIEW_SUFFIX}` : key;
20526
+ }
20484
20527
 
20485
20528
  // ../sdk/src/headless-customer.ts
20486
20529
  var DEFAULT_API_ORIGIN = "https://api.shoppex.io";
@@ -20562,14 +20605,14 @@ var HeadlessCustomerClient = class {
20562
20605
  const candidates = this.memorySession ? [this.memorySession] : [];
20563
20606
  if (this.storage) {
20564
20607
  try {
20565
- const stored2 = parseStoredSession(this.storage.getItem(this.storageKey));
20608
+ const stored2 = parseStoredSession(this.storage.getItem(storefrontStorageKey(this.storageKey)));
20566
20609
  if (stored2) candidates.push(stored2);
20567
20610
  } catch {
20568
20611
  }
20569
20612
  }
20570
20613
  if (this.persistentStorage) {
20571
20614
  try {
20572
- const stored2 = parseStoredSession(this.persistentStorage.getItem(this.storageKey));
20615
+ const stored2 = parseStoredSession(this.persistentStorage.getItem(storefrontStorageKey(this.storageKey)));
20573
20616
  if (stored2) candidates.push(stored2);
20574
20617
  } catch {
20575
20618
  }
@@ -20585,11 +20628,11 @@ var HeadlessCustomerClient = class {
20585
20628
  clearSession() {
20586
20629
  this.memorySession = null;
20587
20630
  try {
20588
- this.storage?.removeItem(this.storageKey);
20631
+ this.storage?.removeItem(storefrontStorageKey(this.storageKey));
20589
20632
  } catch {
20590
20633
  }
20591
20634
  try {
20592
- this.persistentStorage?.removeItem(this.storageKey);
20635
+ this.persistentStorage?.removeItem(storefrontStorageKey(this.storageKey));
20593
20636
  } catch {
20594
20637
  }
20595
20638
  }
@@ -20599,11 +20642,11 @@ var HeadlessCustomerClient = class {
20599
20642
  const target = rememberMe ? this.persistentStorage : this.storage;
20600
20643
  const other = rememberMe ? this.storage : this.persistentStorage;
20601
20644
  try {
20602
- target?.setItem(this.storageKey, JSON.stringify(storedSession));
20645
+ target?.setItem(storefrontStorageKey(this.storageKey), JSON.stringify(storedSession));
20603
20646
  } catch {
20604
20647
  }
20605
20648
  try {
20606
- other?.removeItem(this.storageKey);
20649
+ other?.removeItem(storefrontStorageKey(this.storageKey));
20607
20650
  } catch {
20608
20651
  }
20609
20652
  }
@@ -20849,25 +20892,6 @@ var HeadlessCustomerClient = class {
20849
20892
  invoicePdf(orderId) {
20850
20893
  return this.requestFile(`/invoices/${encodeURIComponent(orderId)}/pdf`);
20851
20894
  }
20852
- replacementEligibility(orderId, lineItemId) {
20853
- return this.request(`/invoices/${encodeURIComponent(orderId)}/replacement-eligibility`, {
20854
- authenticated: true,
20855
- query: { line_item_id: lineItemId },
20856
- schema: customerReplacementEligibilitySchema
20857
- });
20858
- }
20859
- requestReplacement(orderId, options) {
20860
- return this.request(`/invoices/${encodeURIComponent(orderId)}/replacement-requests`, {
20861
- method: "POST",
20862
- authenticated: true,
20863
- body: {
20864
- line_item_id: options.lineItemId,
20865
- reason: options.reason,
20866
- ...options.idempotencyKey ? { idempotency_key: options.idempotencyKey } : {}
20867
- },
20868
- schema: customerReplacementRequestSchema
20869
- });
20870
- }
20871
20895
  async download(orderId, fileIndex) {
20872
20896
  if (!Number.isSafeInteger(fileIndex) || fileIndex < 0) {
20873
20897
  throw new HeadlessCustomerError(