@lifeaz/lors-helper 1.1.11 → 1.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  # 🛒 LORS Helper
2
- **1.1.11** Lifeaz Online Retail Solution Helper
2
+ **1.1.13** Lifeaz Online Retail Solution Helper
3
3
 
4
4
  ---
5
5
 
package/dist/main.d.ts CHANGED
@@ -185,6 +185,12 @@ export declare const CartTermsViewSchema: z.ZodObject<{
185
185
  }, z.core.$strip>>;
186
186
  }, z.core.$strip>;
187
187
  export type CartTermsView = z.infer<typeof CartTermsViewSchema>;
188
+ export declare const ItemRegularPriceSchema: z.ZodObject<{
189
+ excl: z.ZodNumber;
190
+ vat: z.ZodOptional<z.ZodNumber>;
191
+ incl: z.ZodOptional<z.ZodNumber>;
192
+ }, z.core.$strip>;
193
+ export type ItemRegularPrice = z.infer<typeof ItemRegularPriceSchema>;
188
194
  export declare const ItemPriceSchema: z.ZodObject<{
189
195
  recurrence: z.ZodUnion<readonly [z.ZodLiteral<"_One_Time_">, z.ZodLiteral<"_Monthly_">, z.ZodLiteral<"_Annually_">]>;
190
196
  excl: z.ZodNumber;
@@ -192,6 +198,12 @@ export declare const ItemPriceSchema: z.ZodObject<{
192
198
  vat: z.ZodOptional<z.ZodNumber>;
193
199
  incl: z.ZodOptional<z.ZodNumber>;
194
200
  vatRate: z.ZodOptional<z.ZodNumber>;
201
+ validUntil: z.ZodOptional<z.ZodNullable<z.ZodString>>;
202
+ regular: z.ZodOptional<z.ZodNullable<z.ZodObject<{
203
+ excl: z.ZodNumber;
204
+ vat: z.ZodOptional<z.ZodNumber>;
205
+ incl: z.ZodOptional<z.ZodNumber>;
206
+ }, z.core.$strip>>>;
195
207
  }, z.core.$strip>;
196
208
  export type ItemPrice = z.infer<typeof ItemPriceSchema>;
197
209
  export declare const ItemDescriptionSchema: z.ZodObject<{
@@ -219,8 +231,15 @@ export declare const ItemSchema: z.ZodObject<{
219
231
  vat: z.ZodOptional<z.ZodNumber>;
220
232
  incl: z.ZodOptional<z.ZodNumber>;
221
233
  vatRate: z.ZodOptional<z.ZodNumber>;
234
+ validUntil: z.ZodOptional<z.ZodNullable<z.ZodString>>;
235
+ regular: z.ZodOptional<z.ZodNullable<z.ZodObject<{
236
+ excl: z.ZodNumber;
237
+ vat: z.ZodOptional<z.ZodNumber>;
238
+ incl: z.ZodOptional<z.ZodNumber>;
239
+ }, z.core.$strip>>>;
222
240
  }, z.core.$strip>>;
223
241
  allowedProfiles: z.ZodArray<z.ZodUnion<readonly [z.ZodLiteral<"_Individual_">, z.ZodLiteral<"_Small_Business_">, z.ZodLiteral<"_Company_">]>>;
242
+ isDefaultDelivery: z.ZodOptional<z.ZodBoolean>;
224
243
  }, z.core.$strip>;
225
244
  export type Item = z.infer<typeof ItemSchema>;
226
245
  export declare const CartItemSchema: z.ZodObject<{
@@ -1126,6 +1145,7 @@ export interface MvtStudioAnchor {
1126
1145
  text: string | null;
1127
1146
  movable: boolean;
1128
1147
  hideable: boolean;
1148
+ hiddenByDefault?: boolean;
1129
1149
  slots: string[];
1130
1150
  group: string;
1131
1151
  style: MvtAnchorStyleSnapshot;
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
package/dist/main.js CHANGED
@@ -114,6 +114,11 @@ export const CartTermsViewSchema = z.object({
114
114
  required: z.array(TermsTypeSchema),
115
115
  accepted: z.array(CartTermsAcceptanceSchema),
116
116
  });
117
+ export const ItemRegularPriceSchema = z.object({
118
+ excl: z.number(),
119
+ vat: z.number().optional(),
120
+ incl: z.number().optional(),
121
+ });
117
122
  export const ItemPriceSchema = z.object({
118
123
  recurrence: PriceRecurrenceSchema,
119
124
  excl: z.number(),
@@ -121,6 +126,8 @@ export const ItemPriceSchema = z.object({
121
126
  vat: z.number().optional(),
122
127
  incl: z.number().optional(),
123
128
  vatRate: z.number().optional(),
129
+ validUntil: z.string().nullable().optional(),
130
+ regular: ItemRegularPriceSchema.nullable().optional(),
124
131
  });
125
132
  export const ItemDescriptionSchema = z.object({
126
133
  lines: z.array(z.string()),
@@ -139,6 +146,7 @@ export const ItemSchema = z.object({
139
146
  maxPerCart: z.number().int().positive().nullable(),
140
147
  prices: z.array(ItemPriceSchema),
141
148
  allowedProfiles: z.array(ProfileTypeSchema),
149
+ isDefaultDelivery: z.boolean().optional(),
142
150
  });
143
151
  export const CartItemSchema = z.object({
144
152
  id: uuidSchema,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lifeaz/lors-helper",
3
3
  "description": "Lifeaz Online Retail Storefront Helper",
4
- "version": "1.1.11",
4
+ "version": "1.1.13",
5
5
  "main": "dist/main.js",
6
6
  "files": [
7
7
  "dist",
@@ -43,16 +43,16 @@
43
43
  "zod": "^4.3.0"
44
44
  },
45
45
  "devDependencies": {
46
- "@types/node": "^24.3.0",
46
+ "@types/node": "^24.19.1",
47
47
  "rimraf": "^6.0.1",
48
- "typescript": "^5.8.3",
49
- "zod": "^4.3.6"
48
+ "typescript": "^5.9.3",
49
+ "zod": "^4.6.5"
50
50
  },
51
51
  "lifeaz": {
52
52
  "version": {
53
53
  "short": 1,
54
- "full": "1.1.11-b46",
55
- "code": "101110046"
54
+ "full": "1.1.13-b50",
55
+ "code": "101130050"
56
56
  }
57
57
  }
58
58
  }
package/src/main.ts CHANGED
@@ -205,6 +205,13 @@ export const CartTermsViewSchema = z.object({
205
205
  });
206
206
  export type CartTermsView = z.infer<typeof CartTermsViewSchema>;
207
207
 
208
+ export const ItemRegularPriceSchema = z.object({
209
+ excl: z.number(),
210
+ vat: z.number().optional(),
211
+ incl: z.number().optional(),
212
+ });
213
+ export type ItemRegularPrice = z.infer<typeof ItemRegularPriceSchema>;
214
+
208
215
  export const ItemPriceSchema = z.object({
209
216
  recurrence: PriceRecurrenceSchema,
210
217
  excl: z.number(),
@@ -212,6 +219,8 @@ export const ItemPriceSchema = z.object({
212
219
  vat: z.number().optional(),
213
220
  incl: z.number().optional(),
214
221
  vatRate: z.number().optional(),
222
+ validUntil: z.string().nullable().optional(),
223
+ regular: ItemRegularPriceSchema.nullable().optional(),
215
224
  });
216
225
  export type ItemPrice = z.infer<typeof ItemPriceSchema>;
217
226
 
@@ -230,17 +239,11 @@ export const ItemSchema = z.object({
230
239
  thumbnailUrl: z.string().nullable(),
231
240
  isMainOffer: z.boolean(),
232
241
  visible: z.boolean(),
233
- /**
234
- * True for an item that only exists inside a partner funnel.
235
- *
236
- * Carried on the catalogue rather than filtered out of it, because the same catalogue serves
237
- * the plain checkout and every partner one: the item has to be absent from the first and
238
- * present in the second, and a query that dropped it would make the second impossible.
239
- */
240
242
  partnersOnly: z.boolean().default(false),
241
243
  maxPerCart: z.number().int().positive().nullable(),
242
244
  prices: z.array(ItemPriceSchema),
243
245
  allowedProfiles: z.array(ProfileTypeSchema),
246
+ isDefaultDelivery: z.boolean().optional(),
244
247
  });
245
248
  export type Item = z.infer<typeof ItemSchema>;
246
249
 
@@ -398,22 +401,7 @@ export const CartSchema = z.object({
398
401
  status: CartStatusSchema,
399
402
  currentStep: CartStepSchema,
400
403
  maxReachedStep: CartStepSchema,
401
- /**
402
- * The funnel order frozen onto this cart when it was created.
403
- *
404
- * Null means the referential order. Frozen rather than re-resolved on every page because a
405
- * cart whose steps are reordered halfway through would strand the customer on a step the
406
- * server no longer expects them to be on.
407
- */
408
404
  stepOrder: z.array(CartStepSchema).nullable().default(null),
409
- /**
410
- * The steps skipped on this cart, frozen with the order for the same reason.
411
- *
412
- * Read server-side to decide what "the next step" is: a cart advanced to a step its funnel
413
- * does not show would refuse the customer the step that actually follows. Null means no
414
- * step is skipped. A partner's own hidden steps are part of this set, since they are known
415
- * when the cart is opened and never change for its lifetime.
416
- */
417
405
  hiddenSteps: z.array(CartStepSchema).nullable().default(null),
418
406
  profile: ProfileTypeSchema.nullable(),
419
407
  offerType: OfferTypeSchema.nullable(),
@@ -424,13 +412,6 @@ export const CartSchema = z.object({
424
412
  locale: LangSchema,
425
413
  vatNumber: z.string().nullable(),
426
414
  multiAddressesCallback: z.boolean(),
427
- /**
428
- * True for a basket the MVT studio minted so an operator can edit the funnel from inside it.
429
- *
430
- * Defaulted rather than required, so a release that predates the column - or any caller that
431
- * simply does not set it - produces a real cart. The safe value is the one you get by saying
432
- * nothing.
433
- */
434
415
  simulated: z.boolean().default(false),
435
416
  partnerId: uuidSchema.nullable(),
436
417
  createdAt: dayjsSchema,
@@ -657,13 +638,6 @@ export type Campaign = z.infer<typeof CampaignSchema>;
657
638
 
658
639
  export type DeliveryMethodId = '_Standard_' | '_Express_';
659
640
 
660
- /**
661
- * What the plain checkout commits to, in months.
662
- *
663
- * Named rather than written as a literal in four places, because it is reported in the webhooks
664
- * now: a consumer reading "commitmentMonths" has to get the same answer from a partner order and
665
- * from a direct one, and the direct one used to answer nothing at all.
666
- */
667
641
  export const DEFAULT_COMMITMENT_MONTHS = 12;
668
642
 
669
643
  export const PartnerNoticeSchema = z.object({
@@ -683,23 +657,8 @@ export const PartnerSchema = z.object({
683
657
  logoUrl: z.string().nullable(),
684
658
  promoCodesEnabled: z.boolean(),
685
659
  hideReferralSurvey: z.boolean(),
686
- /**
687
- * Whether `deliveryCountries` replaces the base deliverable list or extends it.
688
- *
689
- * Extending is the older reading and stays the default: a partner that simply sells into one
690
- * more market should not have to restate the countries everyone already ships to. Replacing
691
- * is what lets an agreement covering one country be expressed as one country.
692
- */
693
660
  deliveryCountriesExclusive: z.boolean().default(false),
694
- /**
695
- * Customer profiles this partner does not sell to.
696
- *
697
- * Blocks rather than an allow list, so a profile added to the catalogue is offered by every
698
- * partner until one deliberately turns it off. Never all of them: a partner that sells to
699
- * nobody is a funnel nobody can enter, and the API refuses to store that.
700
- */
701
661
  blockedProfiles: z.array(z.string()).default([]),
702
- /** Length of the rental commitment sold through this partner, in months. */
703
662
  commitmentMonths: z.number().int().positive().max(120).default(DEFAULT_COMMITMENT_MONTHS),
704
663
  hideOffersStep: z.boolean(),
705
664
  defaultOfferType: OfferTypeSchema.nullable(),
@@ -711,10 +670,6 @@ export const PartnerSchema = z.object({
711
670
  });
712
671
  export type Partner = z.infer<typeof PartnerSchema>;
713
672
 
714
- // =============================================================================
715
- // MVT - Multivariate testing
716
- // =============================================================================
717
-
718
673
  export type MvtStatus = '_Draft_' | '_Scheduled_' | '_Running_' | '_Paused_' | '_Stopped_' | '_Archived_';
719
674
  export const MvtStatusSchema = z.union([z.literal('_Draft_'), z.literal('_Scheduled_'), z.literal('_Running_'), z.literal('_Paused_'), z.literal('_Stopped_'), z.literal('_Archived_')]);
720
675
 
@@ -785,11 +740,6 @@ export const MvtOperatorSchema = z.union([
785
740
  z.literal('_Date_Between_'),
786
741
  ]);
787
742
 
788
- /**
789
- * Operators that read no value at all. Storing an empty value list against one of them is not an
790
- * error worth refusing, but the evaluator ignores it, and the Tools condition builder hides the
791
- * value editor rather than offering a field that changes nothing.
792
- */
793
743
  export const MVT_NULLARY_OPERATORS: readonly MvtOperator[] = [
794
744
  '_Partner_Absent_',
795
745
  '_Visitor_Is_New_',
@@ -833,62 +783,34 @@ export const MvtVariantSchema = z.object({
833
783
  weight: z.number().int().nonnegative(),
834
784
  control: z.boolean(),
835
785
  overrides: z.array(MvtOverrideSchema),
836
- /**
837
- * Optional sub-targeting. A variant carrying one stops being a share of the split and becomes
838
- * a rule: every unit matching it lands here, whatever the weights say. See mvtPickVariant.
839
- */
840
786
  audience: MvtAudienceNodeSchema.nullable().default(null),
841
- /** Evaluation order of the targeted variants. The first match wins, so this is the tie-break. */
842
787
  order: z.number().int().default(0),
843
- /** Purely cosmetic, so one arm keeps the same colour across the split bar, the studio and the results. */
844
788
  color: z.string().nullable().default(null),
845
789
  description: z.string().nullable().default(null),
846
790
  });
847
791
  export type MvtVariant = z.infer<typeof MvtVariantSchema>;
848
792
 
849
- /**
850
- * What a variant changes on one checkout.
851
- *
852
- * The plain checkout is the null partner; so is the storefront, which has no partner dimension.
853
- * A checkout only ever receives the version written for it, never another checkout's: an
854
- * override authored against the plain funnel names steps and options a partner funnel may not
855
- * have, and a fallback would carry it there anyway. The API flattens the right version into
856
- * `MvtVariant.overrides` before the config leaves the server, so the fronts never see the others.
857
- */
858
793
  export const MvtVariantVersionSchema = z.object({
859
794
  partnerId: z.string().nullable(),
860
795
  overrides: z.array(MvtOverrideSchema),
861
796
  });
862
797
  export type MvtVariantVersion = z.infer<typeof MvtVariantVersionSchema>;
863
798
 
864
- /**
865
- * One checkout an experiment can reach, described by what it actually renders.
866
- *
867
- * Built by the API from the partner configuration and handed to the Tools, so the studio only
868
- * offers what the funnel on screen has: a step the partner hides is not a step to reorder, and
869
- * an option the partner blocks is not an option to preselect. The same object is what the API
870
- * validates a version against before writing it, so the interface and the boundary agree.
871
- */
872
799
  export const MvtCheckoutTargetSchema = z.object({
873
- /** Null for the plain checkout. */
874
800
  partnerId: z.string().nullable(),
875
801
  slug: z.string().nullable(),
876
802
  name: z.string(),
877
- /** The referential funnel, in referential order. Always the six steps. */
878
803
  steps: z.array(CartStepSchema),
879
- /** Steps this checkout never shows, whatever a variant says. */
880
804
  hiddenSteps: z.array(CartStepSchema),
881
805
  availableOfferItemIds: z.array(z.string()),
882
806
  availableOptionItemIds: z.array(z.string()),
883
807
  blockedPaymentMethods: z.array(z.string()),
884
808
  blockedDeliveryMethods: z.array(z.string()),
885
809
  profiles: z.array(z.string()),
886
- /** The offer this checkout applies by itself when it skips the Offers step. Null when it has none. */
887
810
  defaultOfferType: OfferTypeSchema.nullable().default(null),
888
811
  });
889
812
  export type MvtCheckoutTarget = z.infer<typeof MvtCheckoutTargetSchema>;
890
813
 
891
- /** The plain checkout as a target: everything the referential funnel offers, nothing removed. */
892
814
  export function mvtPlainCheckoutTarget(offerItemIds: string[] = [], optionItemIds: string[] = [], profiles: string[] = []): MvtCheckoutTarget {
893
815
  return {
894
816
  partnerId: null,
@@ -905,20 +827,12 @@ export function mvtPlainCheckoutTarget(offerItemIds: string[] = [], optionItemId
905
827
  };
906
828
  }
907
829
 
908
- /**
909
- * How one variant ends up receiving traffic, resolved from the variant set as a whole.
910
- *
911
- * `_Targeted_` variants are claimed by their own conditions and take no part in the weighted
912
- * draw; `_Weighted_` ones share whatever is left. Computed in one place because the operator is
913
- * shown this and the evaluator obeys it, and the two disagreeing would be the worst outcome.
914
- */
915
830
  export type MvtAllocationMode = '_Targeted_' | '_Weighted_' | '_Unreachable_';
916
831
 
917
832
  export interface MvtAllocationRow {
918
833
  key: string;
919
834
  mode: MvtAllocationMode;
920
835
  weight: number;
921
- /** Share of the units that reach the weighted draw. Zero for a targeted variant, whose share depends on the audience rather than on a number. */
922
836
  sharePct: number;
923
837
  }
924
838
 
@@ -949,13 +863,6 @@ export const MvtConfigSchema = z.object({
949
863
  });
950
864
  export type MvtConfig = z.infer<typeof MvtConfigSchema>;
951
865
 
952
- /**
953
- * Everything the audience tree is allowed to read, resolved once and frozen into the assignment.
954
- *
955
- * Frozen matters more than it looks: a visitor who rotates their phone crosses the tablet/desktop
956
- * breakpoint, and a context read live would move them to another variant mid-session. The context
957
- * captured at assignment time is the one that decides, for as long as the assignment lives.
958
- */
959
866
  export interface MvtContext {
960
867
  unitId: string;
961
868
  device: MvtDevice;
@@ -970,22 +877,12 @@ export interface MvtContext {
970
877
  hasCart: boolean;
971
878
  firstSeenAt: number;
972
879
  now: number;
973
- /** Query string of the landing URL, lowercased keys. Reads as a targeting dimension of its own so an ad link can pin an arm without an UTM convention. */
974
880
  query: Record<string, string>;
975
- /** Viewport width in CSS pixels. Coarser than the device buckets, for the tests where the breakpoint itself is the subject. */
976
881
  screenWidth: number;
977
- /** Sessions this unit has opened, this one included. */
978
882
  visits: number;
979
883
  loggedIn: boolean;
980
884
  }
981
885
 
982
- /**
983
- * Fill in the dimensions an older caller does not provide.
984
- *
985
- * The context grew, and a front built against the previous shape must not start failing every
986
- * leaf that reads a new field. Defaults are chosen so an absent dimension excludes rather than
987
- * includes: a condition on something the caller cannot observe should not match everybody.
988
- */
989
886
  export function mvtNormalizeContext(context: Partial<MvtContext> & { unitId: string }): MvtContext {
990
887
  return {
991
888
  device: '_Desktop_',
@@ -1017,42 +914,14 @@ export interface MvtDecision {
1017
914
  overrides: MvtOverride[];
1018
915
  }
1019
916
 
1020
- /**
1021
- * How the control arm names itself to the analytics destinations.
1022
- *
1023
- * The fronts used to send a null variant for a control assignment, on the reasoning that "which
1024
- * variant is this person seeing" and "are they in the experiment at all" are different questions.
1025
- * In practice the destinations do not agree: a null is dropped by some, rendered as "(not set)"
1026
- * by others, and never groups, so the control arm went missing from exactly the reports it is the
1027
- * baseline of. A named value groups like any other, and null keeps a meaning of its own - the
1028
- * visitor is outside the experiment - which is what it was being asked to carry two things for.
1029
- *
1030
- * Deliberately lowercase and free of the underscore convention: this is a value read in a report,
1031
- * not an identifier the applications match on.
1032
- */
1033
917
  export const MVT_CONTROL_VARIANT = 'control';
1034
918
 
1035
- /**
1036
- * @summary The variant name one decision reports to the trackers.
1037
- *
1038
- * Shared so the assignment list, the per-event attribution and the exposure events
1039
- * cannot drift: one visitor showing up as `control` in one and as their arm key in
1040
- * another is a segmentation that silently double counts.
1041
- */
1042
919
  export function mvtTrackedVariant(decision: Pick<MvtDecision, 'control' | 'variantKey'>): string {
1043
920
  return decision.control ? MVT_CONTROL_VARIANT : decision.variantKey;
1044
921
  }
1045
922
 
1046
923
  const MVT_RETURNING_AFTER_MS = 30 * 60 * 1000;
1047
924
 
1048
- /**
1049
- * FNV-1a, 32 bits.
1050
- *
1051
- * Chosen for being trivially reimplementable and byte-for-byte identical everywhere: the API, the
1052
- * storefront and the checkout each bucket independently, with no round trip, and any disagreement
1053
- * between them would show up as a visitor silently changing variant when they cross from one
1054
- * application to the other.
1055
- */
1056
925
  export function mvtHash(input: string): number {
1057
926
  let hash = 0x811c9dc5;
1058
927
 
@@ -1075,23 +944,11 @@ export function mvtIsEligibleForTraffic(experiment: MvtExperiment, unitId: strin
1075
944
  return mvtBucket(experiment.salt, unitId, 'traffic') < experiment.trafficPct * 100;
1076
945
  }
1077
946
 
1078
- /**
1079
- * Pick the variant a unit falls into, by weight, deterministically.
1080
- *
1081
- * Weights are relative rather than percentages so that 90/10, 50/50 and 34/33/33 are all
1082
- * expressible without the operator having to make anything add up. They are sorted by key first,
1083
- * so that the mapping from bucket range to variant depends only on the weights themselves and not
1084
- * on the order rows happened to come back from the database.
1085
- */
1086
947
  export function mvtPickVariant(experiment: MvtExperiment, unitId: string, context?: MvtContext): MvtVariant | null {
1087
948
  const targeted = experiment.variants
1088
949
  .filter(variant => !!variant.audience)
1089
950
  .sort((a, b) => (a.order ?? 0) - (b.order ?? 0) || a.key.localeCompare(b.key));
1090
951
 
1091
- // Targeted arms are rules, not shares: the first whose own conditions hold claims the unit
1092
- // outright. Evaluated before the draw so that "everyone on mobile sees B" means exactly that
1093
- // rather than "mobile visitors have a better chance of seeing B", which is what a weight
1094
- // nudged by hand would have produced and what an operator would have had to verify by eye.
1095
952
  if (context)
1096
953
  for (const variant of targeted)
1097
954
  if (mvtEvaluateAudience(variant.audience ?? null, context)) return variant;
@@ -1099,9 +956,6 @@ export function mvtPickVariant(experiment: MvtExperiment, unitId: string, contex
1099
956
  const pool = experiment.variants.filter(variant => !variant.audience).sort((a, b) => a.key.localeCompare(b.key));
1100
957
  const total = pool.reduce((sum, v) => sum + Math.max(v.weight, 0), 0);
1101
958
 
1102
- // Every arm targeted and none of them matching leaves nobody to fall back on. The unit is
1103
- // left out of the experiment entirely rather than pushed onto an arm whose conditions it
1104
- // failed, which would silently make the targeting a lie.
1105
959
  if (!pool.length || total <= 0) return null;
1106
960
 
1107
961
  const target = (mvtBucket(experiment.salt, unitId) / 10000) * total;
@@ -1116,13 +970,6 @@ export function mvtPickVariant(experiment: MvtExperiment, unitId: string, contex
1116
970
  return pool[pool.length - 1];
1117
971
  }
1118
972
 
1119
- /**
1120
- * How the split actually resolves, for the operator rather than the evaluator.
1121
- *
1122
- * Weights are relative and targeted arms are outside the draw entirely, so the number an operator
1123
- * typed and the share it buys are rarely the same. Computing that here, from the same rules the
1124
- * bucketing obeys, is what lets the interface show a split bar that cannot drift from the truth.
1125
- */
1126
973
  export function mvtDistribution(variants: readonly MvtVariant[]): MvtAllocationRow[] {
1127
974
  const pool = variants.filter(variant => !variant.audience);
1128
975
  const total = pool.reduce((sum, v) => sum + Math.max(v.weight, 0), 0);
@@ -1190,9 +1037,6 @@ function mvtEvaluateLeaf(operator: MvtOperator, values: string[], context: MvtCo
1190
1037
  case '_Is_Weekend_': return [0, 6].includes(new Date(context.now).getDay());
1191
1038
  case '_Visits_At_Least_': return context.visits >= Number(values[0] ?? 1);
1192
1039
 
1193
- // Written "name=value", or "name" on its own to test for presence. The value side goes
1194
- // through the same wildcard matcher as the UTM leaves, so utm-like conventions carried in
1195
- // a bespoke parameter behave the way an operator already expects them to.
1196
1040
  case '_Query_Param_Matches_': {
1197
1041
  return values.some(raw => {
1198
1042
  const separator = raw.indexOf('=');
@@ -1207,10 +1051,6 @@ function mvtEvaluateLeaf(operator: MvtOperator, values: string[], context: MvtCo
1207
1051
  });
1208
1052
  }
1209
1053
 
1210
- // A bound left blank is open-ended rather than zero. `??` only catches an absent entry,
1211
- // and the editor writes an empty string for a field the operator cleared - which
1212
- // `Number('')` turns into 0, so "1024 and above" silently became "between 1024 and 0" and
1213
- // matched nobody. Same reading as the date window below, which had it right.
1214
1054
  case '_Screen_Width_Between_': {
1215
1055
  const from = values[0] ? Number(values[0]) : 0;
1216
1056
  const to = values[1] ? Number(values[1]) : Number.MAX_SAFE_INTEGER;
@@ -1220,9 +1060,6 @@ function mvtEvaluateLeaf(operator: MvtOperator, values: string[], context: MvtCo
1220
1060
  return context.screenWidth >= from && context.screenWidth <= to;
1221
1061
  }
1222
1062
 
1223
- // Bounds are wall-clock dates, and either may be left out for an open-ended window. This
1224
- // is not the experiment's own schedule: it is for the tests whose point is a date, such
1225
- // as a variant that only exists over a sale weekend.
1226
1063
  case '_Date_Between_': {
1227
1064
  const from = values[0] ? Date.parse(values[0]) : Number.NEGATIVE_INFINITY;
1228
1065
  const to = values[1] ? Date.parse(values[1]) : Number.POSITIVE_INFINITY;
@@ -1236,14 +1073,6 @@ function mvtEvaluateLeaf(operator: MvtOperator, values: string[], context: MvtCo
1236
1073
  }
1237
1074
  }
1238
1075
 
1239
- /**
1240
- * Evaluate an audience tree.
1241
- *
1242
- * A null tree targets everyone, which is the common case and should not require building a node.
1243
- * An operator this build does not know returns false rather than throwing: a Tools release that
1244
- * introduces a new operator must never be able to break a front that has not shipped yet, and
1245
- * failing closed means the visitor stays on control instead of seeing a broken page.
1246
- */
1247
1076
  export function mvtEvaluateAudience(node: MvtAudienceNode | null, context: MvtContext): boolean {
1248
1077
  if (!node) return true;
1249
1078
 
@@ -1267,14 +1096,6 @@ export function mvtIsLive(experiment: MvtExperiment, now: number): boolean {
1267
1096
  return experiment.status === '_Running_' && mvtIsWithinWindow(experiment, now);
1268
1097
  }
1269
1098
 
1270
- /**
1271
- * Resolve every decision for one unit, in one pass.
1272
- *
1273
- * Experiments are walked by descending priority so that exclusion groups resolve predictably: the
1274
- * first live experiment of a group claims it, and the rest are skipped for this unit. Without an
1275
- * order the winner would depend on row order, and two visitors could end up in mutually exclusive
1276
- * tests that were meant to be exclusive.
1277
- */
1278
1099
  export function mvtResolve(config: MvtConfig, context: MvtContext, forced: Record<string, string> = {}): MvtDecision[] {
1279
1100
  if (!config.enabled) return [];
1280
1101
 
@@ -1320,20 +1141,8 @@ function mvtToDecision(experiment: MvtExperiment, variant: MvtVariant): MvtDecis
1320
1141
  };
1321
1142
  }
1322
1143
 
1323
- // -----------------------------------------------------------------------------
1324
- // Slot registry
1325
- // -----------------------------------------------------------------------------
1326
-
1327
1144
  export type MvtSlotKind = 'boolean' | 'number' | 'duration' | 'text' | 'i18n' | 'color' | 'image' | 'enum' | 'list' | 'object' | 'record';
1328
1145
 
1329
- /**
1330
- * One editable field of a fixed-shape slot.
1331
- *
1332
- * The registry describes the shape rather than leaving the interface to infer it, because the
1333
- * alternative is an operator typing JSON into a textarea and discovering their mistake from a
1334
- * customer. A field the editor does not recognise degrades to a text input rather than
1335
- * disappearing, so adding a kind here never blanks out a control in an older build.
1336
- */
1337
1146
  export interface MvtSlotField {
1338
1147
  key: string;
1339
1148
  label: string;
@@ -1346,50 +1155,19 @@ export interface MvtSlotDefinition {
1346
1155
  scope: MvtScope;
1347
1156
  area: string;
1348
1157
  label: string;
1349
- /** One short sentence an operator reads before deciding whether this is the slot they want. */
1350
1158
  hint: string;
1351
1159
  kind: MvtSlotKind;
1352
1160
  ops: readonly MvtOverrideOp[];
1353
- /** Allowed values for an `enum`, or the closed set of entries for a constrained `list`. */
1354
1161
  options?: readonly string[];
1355
- /** The named fields of an `object`, or the per-item fields of a list of objects. */
1356
1162
  fields?: readonly MvtSlotField[];
1357
- /** The kind every value takes in a `record`, whose keys are open-ended. */
1358
1163
  entryKind?: MvtSlotKind;
1359
- /** Which property identifies an item, for the `remove`, `patch` and `reorder` operations. */
1360
1164
  itemKey?: string;
1361
1165
  schema: z.ZodType<unknown>;
1362
1166
  }
1363
1167
 
1364
- /**
1365
- * A piece of copy, written in whichever languages the operator filled in.
1366
- *
1367
- * Partial on purpose, and it has to be said in the schema rather than left to convention: zod
1368
- * treats a record keyed by a closed set as exhaustive, so `z.record` here would refuse a French-
1369
- * only override at write time - which is the normal case, since a language left empty is
1370
- * documented everywhere as keeping the untouched original rather than blanking it.
1371
- */
1372
1168
  const i18nTextSchema = z.partialRecord(LangSchema, z.string());
1373
- /**
1374
- * A hex colour, or the one keyword that is not a colour.
1375
- *
1376
- * The value space stays closed - it is written straight onto a customer's page - but it has to
1377
- * hold "no background at all". Without it a section given a background by mistake could be
1378
- * recoloured and never undone: every value the picker can produce paints something, and clearing
1379
- * the override only restores whatever the page painted in the first place.
1380
- */
1381
1169
  const colorSchema = z.string().regex(/^(#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})|transparent)$/i);
1382
1170
 
1383
- /**
1384
- * What a link or image override may point at.
1385
- *
1386
- * Overrides are authored by operators and applied verbatim onto attributes of a customer's page,
1387
- * so the value space has to be closed the same way the patch vocabulary is. A `javascript:` href
1388
- * written through the studio would otherwise ride an override straight into `setAttribute` and
1389
- * run in every visitor's browser, which turns a copy-editing tool into stored XSS. Only http(s)
1390
- * and same-site relative destinations survive; everything else is refused at write time by the
1391
- * schemas and ignored at render time by the fronts.
1392
- */
1393
1171
  const SAFE_HREF_PATTERN = /^(https?:\/\/|\/(?!\/)|#|\?)/i;
1394
1172
  const SAFE_IMAGE_PATTERN = /^(https?:\/\/|\/(?!\/)|assets\/)/i;
1395
1173
 
@@ -1405,21 +1183,8 @@ const safeHrefSchema = z.string().max(2048).refine(mvtIsSafeHref, { message: 'hr
1405
1183
  const safeImageSchema = z.string().max(2048).refine(mvtIsSafeImage, { message: 'image must be http(s) or a same-site relative path' });
1406
1184
  const safeRouteSchema = z.string().max(512).refine(value => value.startsWith('/') && !value.startsWith('//'), { message: 'route must be an absolute in-app path' });
1407
1185
 
1408
- /**
1409
- * What a test may do to one anchored element.
1410
- *
1411
- * This is the whole vocabulary of the visual editor, and it is deliberately short. Hide it, move
1412
- * it, reword it, repoint it, restyle it within a closed set of properties. Nothing here can
1413
- * inject markup or a script, so an override authored by clicking around a page carries the same
1414
- * blast radius as one typed into the registry editor, which is what makes the studio safe to
1415
- * hand to somebody who is not going to read a diff.
1416
- *
1417
- * Every field is optional and absence means untouched, so the patches stay small and two editing
1418
- * sessions on the same element compose instead of overwriting one another.
1419
- */
1420
1186
  export const MvtAnchorPatchSchema = z.object({
1421
1187
  hidden: z.boolean().optional(),
1422
- /** Position among its siblings. Lower comes first; anchors without one keep their place. */
1423
1188
  order: z.number().int().min(-999).max(999).optional(),
1424
1189
  text: i18nTextSchema.optional(),
1425
1190
  href: safeHrefSchema.optional(),
@@ -1454,19 +1219,6 @@ function slot(definition: MvtSlotDefinition): MvtSlotDefinition {
1454
1219
  return definition;
1455
1220
  }
1456
1221
 
1457
- /**
1458
- * The single source of truth for what a test is allowed to change.
1459
- *
1460
- * Shared by all four applications on purpose. The API validates writes against it, so a malformed
1461
- * override is refused at authoring time rather than discovered by a customer; Tools reads it to
1462
- * render a typed editor instead of a free JSON field; and the fronts read it to reject anything
1463
- * that slipped through anyway. A slot absent from this list simply does not exist, which is what
1464
- * keeps the blast radius of the whole feature bounded.
1465
- *
1466
- * Nothing monetary appears here, and nothing ever should. Prices, items and discounts are steered
1467
- * by campaigns and discounts, which carry their own controls and their own audit trail. A test
1468
- * decides how an offer is presented, never what it costs.
1469
- */
1470
1222
  export const MVT_SLOTS: readonly MvtSlotDefinition[] = [
1471
1223
  slot({ key: 'storefront.sections.order', scope: '_Storefront_', area: 'Structure', label: 'Section order', hint: 'Reorder the blocks of a page. Blocks not listed keep their place at the end.', kind: 'list', ops: ['reorder', 'set'], itemKey: 'id', schema: z.array(z.string()) }),
1472
1224
  slot({ key: 'storefront.sections.hidden', scope: '_Storefront_', area: 'Structure', label: 'Hidden sections', hint: 'Blocks to take off the page entirely.', kind: 'list', ops: ['set'], schema: z.array(z.string()) }),
@@ -1623,13 +1375,6 @@ export interface MvtOverrideIssue {
1623
1375
  reason: string;
1624
1376
  }
1625
1377
 
1626
- /**
1627
- * Validate a variant's overrides against the registry.
1628
- *
1629
- * Called by the API before a variant is stored, so that a slot typo or a colour written as a name
1630
- * instead of a hex value is a 422 for the operator who can still fix it, rather than a silently
1631
- * ignored override that makes a test look like it had no effect.
1632
- */
1633
1378
  export function mvtValidateOverrides(overrides: MvtOverride[]): MvtOverrideIssue[] {
1634
1379
  const issues: MvtOverrideIssue[] = [];
1635
1380
 
@@ -1657,10 +1402,6 @@ export function mvtValidateOverrides(overrides: MvtOverride[]): MvtOverrideIssue
1657
1402
  return;
1658
1403
  }
1659
1404
 
1660
- // A merge onto a record is still a record of the same entries, so the full schema
1661
- // applies and catches a malformed anchor patch here rather than in a customer's
1662
- // browser. A merge onto a fixed-shape object is a partial by definition, and running
1663
- // the whole schema over it would refuse every legitimate single-field edit.
1664
1405
  if (definition.kind === 'record' && !definition.schema.safeParse(override.value).success)
1665
1406
  issues.push({ index, slot: override.slot, reason: 'invalid_value' });
1666
1407
 
@@ -1674,51 +1415,18 @@ export function mvtValidateOverrides(overrides: MvtOverride[]): MvtOverrideIssue
1674
1415
  return issues;
1675
1416
  }
1676
1417
 
1677
- /**
1678
- * Steps no experiment may hide on any checkout.
1679
- *
1680
- * Each of these writes something the rest of the funnel cannot do without: Profile decides
1681
- * which offers exist at all, Information carries the customer identity, Delivery the address
1682
- * the price depends on, Payment the money. A funnel skipping one of them is not a variation, it
1683
- * is a checkout that blocks on the step after the missing one - which is exactly what happened
1684
- * when hiding the profile step was allowed.
1685
- */
1686
1418
  export const MVT_UNHIDEABLE_STEPS: readonly CartStep[] = ['_Profile_', '_Information_', '_Delivery_', '_Payment_'];
1687
1419
 
1688
- /**
1689
- * The only steps a test may skip.
1690
- *
1691
- * Options is optional by nature. Offers is skippable only when something else picks the offer:
1692
- * either the partner funnel, which applies its single offer by itself, or the variant, through
1693
- * the `checkout.offers.default` slot. Without one of those nothing selects an offer, and the
1694
- * Options step has nothing to attach a warranty to.
1695
- */
1696
1420
  export const MVT_HIDEABLE_STEPS: readonly CartStep[] = ['_Offers_', '_Options_'];
1697
1421
 
1698
- /** Whether a preselection entry names an item identifier rather than a SKU. */
1699
1422
  const UUID_LIKE = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;
1700
1423
 
1701
- /**
1702
- * The default offer a set of overrides names, if any.
1703
- */
1704
1424
  export function mvtDefaultOfferOf(overrides: readonly MvtOverride[]): string | null {
1705
1425
  const override = overrides.find(entry => entry.slot === 'checkout.offers.default' && entry.op === 'set');
1706
1426
 
1707
1427
  return typeof override?.value === 'string' ? override.value : null;
1708
1428
  }
1709
1429
 
1710
- /**
1711
- * Validate a version's overrides against the checkout it is written for.
1712
- *
1713
- * Runs after mvtValidateOverrides, which already knows the value is well-typed; this one knows
1714
- * whether the value names something the target checkout has. Hiding a step the partner already
1715
- * hides is refused rather than tolerated, because an override that changes nothing on the funnel
1716
- * it was written for is an override somebody will later wonder about. Preselecting an option the
1717
- * partner blocks is refused for the plainer reason that the customer could never see it.
1718
- *
1719
- * The step order stays a permutation of the six steps on every checkout, hidden ones included:
1720
- * hiding is a separate list, and the fronts discard an order that drops a step as malformed.
1721
- */
1722
1430
  export function mvtValidateOverridesForTarget(overrides: MvtOverride[], target: MvtCheckoutTarget): MvtOverrideIssue[] {
1723
1431
  const issues: MvtOverrideIssue[] = [];
1724
1432
  const hidden = new Set<string>(target.hiddenSteps);
@@ -1755,9 +1463,6 @@ export function mvtValidateOverridesForTarget(overrides: MvtOverride[], target:
1755
1463
  issues.push({ index, slot: override.slot, reason: 'option_absent_on_target' });
1756
1464
  }
1757
1465
 
1758
- // A warranty is matched by SKU or by item id on the front, so only an entry that looks
1759
- // like an identifier can be checked here. A SKU is left to the front, which knows the
1760
- // catalogue in the customer's country; naming a blocked item id is refused outright.
1761
1466
  if (override.slot === 'checkout.warranty.preselected' && typeof override.value === 'string' && options.size) {
1762
1467
  if (override.value !== '_None_' && UUID_LIKE.test(override.value) && !options.has(override.value))
1763
1468
  issues.push({ index, slot: override.slot, reason: 'option_absent_on_target' });
@@ -1772,13 +1477,6 @@ export function mvtValidateOverridesForTarget(overrides: MvtOverride[], target:
1772
1477
  return issues;
1773
1478
  }
1774
1479
 
1775
- /**
1776
- * Apply one override to a base value.
1777
- *
1778
- * Every branch is total: an operation that cannot be carried out on the shape it was given returns
1779
- * the base untouched. A test that does nothing is a disappointment; a test that throws inside a
1780
- * component's render path is an outage, and the two are not worth trading against each other.
1781
- */
1782
1480
  export function mvtApplyOverride<T>(base: T, override: MvtOverride): T {
1783
1481
  const value = override.value;
1784
1482
 
@@ -1846,28 +1544,14 @@ export function mvtApplyOverride<T>(base: T, override: MvtOverride): T {
1846
1544
  }
1847
1545
  }
1848
1546
 
1849
- // -----------------------------------------------------------------------------
1850
- // Anchors
1851
- // -----------------------------------------------------------------------------
1852
-
1853
1547
  export const MVT_ANCHOR_ATTRIBUTE = 'data-mvt-anchor';
1854
1548
 
1855
- /** The tags a text block may contain and still be edited wholesale: pure inline formatting. */
1856
1549
  const MVT_INLINE_TEXT_TAGS = new Set(['BR', 'B', 'STRONG', 'EM', 'I', 'U', 'SPAN', 'SMALL', 'SUP', 'SUB', 'MARK']);
1857
1550
 
1858
- /**
1859
- * Whether an element holds nothing but text as far as editing is concerned.
1860
- *
1861
- * Used to be "no element children at all", which locked a title split by a <br> or a label
1862
- * wrapped in a <strong> out of the double-click editor for no reason an operator could see.
1863
- * Inline formatting tags are text; a nested component, a link or an image is not, because
1864
- * replacing the textContent of those would delete markup Angular will not put back.
1865
- */
1866
1551
  export function mvtHoldsOnlyText(node: HTMLElement): boolean {
1867
1552
  return Array.from(node.querySelectorAll('*')).every(child => MVT_INLINE_TEXT_TAGS.has(child.tagName));
1868
1553
  }
1869
1554
 
1870
- /** What the style inspector edits, read from the page rather than assumed. */
1871
1555
  export interface MvtAnchorStyleSnapshot {
1872
1556
  background: string | null;
1873
1557
  color: string | null;
@@ -1888,14 +1572,6 @@ function mvtColorToHex(value: string): string | null {
1888
1572
  return `#${hex(match[1])}${hex(match[2])}${hex(match[3])}`;
1889
1573
  }
1890
1574
 
1891
- /**
1892
- * Read the style an element actually renders with, in the vocabulary of the patch schema.
1893
- *
1894
- * The inspector used to open every element on white-on-black defaults, which told the operator
1895
- * the editor did not know the page - and it did not. The background climbs the ancestors until
1896
- * something opaque is found, because "transparent" is never what a person means by the colour
1897
- * behind a title.
1898
- */
1899
1575
  export function mvtSnapshotAnchorStyle(node: HTMLElement): MvtAnchorStyleSnapshot {
1900
1576
  const computed = window.getComputedStyle(node);
1901
1577
 
@@ -1925,24 +1601,10 @@ export function mvtSnapshotAnchorStyle(node: HTMLElement): MvtAnchorStyleSnapsho
1925
1601
  };
1926
1602
  }
1927
1603
 
1928
- /**
1929
- * The anchors slot for one scope.
1930
- *
1931
- * Kept as a lookup rather than a naming convention the call sites repeat, because the studio, the
1932
- * API validator and the two fronts all have to agree on it, and a typo in any of the four would
1933
- * produce an override that validates and does nothing.
1934
- */
1935
1604
  export function mvtAnchorsSlot(scope: MvtScope): string {
1936
1605
  return scope === '_Checkout_' ? 'checkout.anchors' : 'storefront.anchors';
1937
1606
  }
1938
1607
 
1939
- /**
1940
- * Fold a stack of anchor patches into one.
1941
- *
1942
- * Later patches win field by field rather than wholesale: two overrides touching the same element,
1943
- * one hiding it and one rewording it, both have to survive, or the operator has to remember which
1944
- * of their own edits cancelled which.
1945
- */
1946
1608
  export function mvtMergeAnchorPatch(base: MvtAnchorPatch | undefined, next: MvtAnchorPatch | undefined): MvtAnchorPatch {
1947
1609
  if (!base) return next ?? {};
1948
1610
  if (!next) return base;
@@ -1955,13 +1617,6 @@ export function mvtMergeAnchorPatch(base: MvtAnchorPatch | undefined, next: MvtA
1955
1617
  };
1956
1618
  }
1957
1619
 
1958
- /**
1959
- * The inline style an anchor patch asks for, as a plain property bag.
1960
- *
1961
- * Only the closed set the patch schema allows can come out of here, which is the point: a front
1962
- * applying this is not evaluating anything an operator wrote, it is reading a handful of numbers
1963
- * and colours that have already been validated twice.
1964
- */
1965
1620
  export function mvtAnchorStyle(patch: MvtAnchorPatch | null | undefined): Record<string, string> {
1966
1621
  const style = patch?.style;
1967
1622
 
@@ -1982,181 +1637,68 @@ export function mvtAnchorStyle(patch: MvtAnchorPatch | null | undefined): Record
1982
1637
  return out;
1983
1638
  }
1984
1639
 
1985
- // -----------------------------------------------------------------------------
1986
- // Studio bridge
1987
- // -----------------------------------------------------------------------------
1988
-
1989
- /**
1990
- * The message vocabulary between the Tools studio and the front rendered inside its frame.
1991
- *
1992
- * A separate protocol rather than a preview link with more query parameters, because the studio
1993
- * has to do two things a link cannot: read back what is actually on the page - the anchors, their
1994
- * labels, their nesting - and apply an edit without a reload, so that changing a colour is a
1995
- * colour changing rather than a page blinking.
1996
- *
1997
- * Every message carries the protocol version. A front and a Tools release drift apart eventually,
1998
- * and a version mismatch has to degrade to a plain preview rather than to an editor whose clicks
1999
- * quietly do nothing.
2000
- */
2001
1640
  export const MVT_STUDIO_PROTOCOL = 4;
2002
1641
 
2003
1642
  export type MvtStudioAnchorRole = 'section' | 'cta' | 'text' | 'image' | 'block';
2004
1643
 
2005
1644
  export interface MvtStudioAnchor {
2006
- /** Stable identifier written into the markup by the front, never derived from the DOM position. */
2007
1645
  id: string;
2008
1646
  label: string;
2009
1647
  role: MvtStudioAnchorRole;
2010
- /** The anchor this one sits inside, for the studio's tree. Null at the top level. */
2011
1648
  parentId: string | null;
2012
1649
  order: number;
2013
- /** What the untouched page shows today, so the editor opens on the real copy rather than an empty field. */
2014
1650
  text: string | null;
2015
1651
  movable: boolean;
2016
1652
  hideable: boolean;
2017
- /**
2018
- * Slot keys this element governs, beyond its own patch.
2019
- *
2020
- * Declared by the front on the element people would naturally click for the change: the
2021
- * checkout breadcrumb carries the step order and hidden steps, the flash banner carries its
2022
- * placement. The studio and the in-page menu build their controls from the slot registry, so
2023
- * a structural change is a right click on the thing itself rather than a form beside it.
2024
- */
1653
+ hiddenByDefault?: boolean;
2025
1654
  slots: string[];
2026
- /**
2027
- * Opaque identity of the container the element can be reordered inside.
2028
- *
2029
- * Two anchors sharing a group share a DOM parent whose layout honours the order property.
2030
- * The studio's own move arrows used to group by the nearest anchored ancestor, which is a
2031
- * different relation: a hero's title and its visual share an ancestor but live in different
2032
- * containers, and swapping their ranks would have moved nothing.
2033
- */
2034
1655
  group: string;
2035
- /** The style the element renders with today, so the inspector opens on the truth. */
2036
1656
  style: MvtAnchorStyleSnapshot;
2037
1657
  rect: { top: number; left: number; width: number; height: number };
2038
1658
  }
2039
1659
 
2040
- /**
2041
- * Somewhere the studio can go next.
2042
- *
2043
- * The editor used to reach other pages through a free-text path field, which asked an operator to
2044
- * already know the route they wanted and silently rendered a 404 inside the frame when they were
2045
- * one character out. The front knows its own routes, so it says what they are.
2046
- *
2047
- * `kind` separates what the page happens to link to from what the front declares it can reach.
2048
- * A storefront only has links; the checkout has steps that exist whether or not the current page
2049
- * links to them, and an operator editing the payment step should not have to walk the funnel to
2050
- * get there.
2051
- */
2052
1660
  export interface MvtStudioLink {
2053
1661
  path: string;
2054
1662
  label: string;
2055
1663
  kind: 'link' | 'step';
2056
- /** Steps the cart has not unlocked yet are offered but marked, rather than hidden. */
2057
1664
  reachable: boolean;
2058
1665
  }
2059
1666
 
2060
- /**
2061
- * The simulated basket the checkout studio runs on.
2062
- *
2063
- * Editing the funnel means being inside it, and being inside it means holding a cart. Minting one
2064
- * by hand through the real onboarding flow every time is what made the checkout scope effectively
2065
- * uneditable.
2066
- */
2067
1667
  export interface MvtStudioCart {
2068
1668
  reference: string;
2069
1669
  secret: string;
2070
- /** Where the simulated cart currently sits, so the studio can offer the steps behind it. */
2071
1670
  step: string;
2072
1671
  simulated: true;
2073
- /**
2074
- * The checkout the basket was minted for. Null is the plain checkout.
2075
- *
2076
- * Carried so the studio can tell a basket minted for one partner from one minted for
2077
- * another and never hand a partner funnel a basket that does not belong to it.
2078
- */
2079
1672
  partnerId?: string | null;
2080
1673
  }
2081
1674
 
2082
- /**
2083
- * One popup the page can open on demand.
2084
- *
2085
- * Popups exist behind timers, scroll depths and frequency caps by design, which makes them
2086
- * invisible to an operator who opened the studio thirty seconds ago. The front declares the ones
2087
- * it has, and the studio - or the in-frame overlay - opens them directly, so editing a popup does
2088
- * not start with waiting for it.
2089
- */
2090
1675
  export interface MvtStudioPopup {
2091
1676
  id: string;
2092
1677
  label: string;
2093
1678
  }
2094
1679
 
2095
- /** Tools to front. */
2096
1680
  export type MvtStudioRequest =
2097
1681
  | { protocol: number; type: 'studio:hello' }
2098
1682
  | { protocol: number; type: 'studio:scan' }
2099
1683
  | { protocol: number; type: 'studio:select'; anchorId: string | null }
2100
- /** Open one declared popup by identifier, or close whichever is open with null. */
2101
1684
  | { protocol: number; type: 'studio:popup'; popup: string | null }
2102
- /**
2103
- * The full authoring state of the variant on screen: the anchor patch set plus every
2104
- * non-anchor override it carries. The frame renders exactly this, so a structural edit - a
2105
- * reordered funnel, a moved banner - shows up live the same way a reworded title does.
2106
- */
2107
1685
  | { protocol: number; type: 'studio:apply'; anchors: Record<string, MvtAnchorPatch>; overrides: MvtOverride[]; lang: string }
2108
1686
  | { protocol: number; type: 'studio:mode'; picking: boolean }
2109
1687
  | { protocol: number; type: 'studio:navigate'; path: string }
2110
1688
  | { protocol: number; type: 'studio:links' }
2111
1689
  | { protocol: number; type: 'studio:cart'; cart: MvtStudioCart };
2112
1690
 
2113
- /** Front to Tools. */
2114
1691
  export type MvtStudioEvent =
2115
- /**
2116
- * `partner` is the checkout the frame is actually running as, read from its own URL. Null is
2117
- * the plain checkout; absent means an older front that does not say. The studio compares it
2118
- * with the target it meant to open and refuses to write into a frame showing another one.
2119
- */
2120
1692
  | { protocol: number; type: 'studio:ready'; scope: MvtScope; path: string; langs: string[]; lang: string; partner?: string | null }
2121
1693
  | { protocol: number; type: 'studio:anchors'; anchors: MvtStudioAnchor[]; path: string }
2122
1694
  | { protocol: number; type: 'studio:picked'; anchor: MvtStudioAnchor }
2123
1695
  | { protocol: number; type: 'studio:navigated'; path: string }
2124
1696
  | { protocol: number; type: 'studio:links'; links: MvtStudioLink[]; path: string }
2125
1697
  | { protocol: number; type: 'studio:cart'; cart: MvtStudioCart | null }
2126
- /** The popups this page can open on demand, re-announced whenever the set changes. */
2127
1698
  | { protocol: number; type: 'studio:popups'; popups: MvtStudioPopup[] }
2128
- /**
2129
- * An edit made on the page itself rather than in the inspector.
2130
- *
2131
- * Reported as a patch fragment rather than as a whole patch, so the studio merges it into
2132
- * whatever that anchor already carries instead of replacing it: dragging a section must not
2133
- * discard the colour somebody set on it a minute earlier.
2134
- *
2135
- * The page never writes to the saved variant. It says what changed and the studio decides -
2136
- * which keeps undo, the dirty marker and the save button in one place, and means a front that
2137
- * gets this wrong can produce a bad edit but never a bad save.
2138
- */
2139
1699
  | { protocol: number; type: 'studio:edited'; anchorId: string; patch: Partial<MvtAnchorPatch>; replace?: boolean }
2140
- /**
2141
- * A structural edit made through the in-page menu: a slot value rather than an anchor patch.
2142
- *
2143
- * Same contract as `studio:edited`: the page proposes, the studio disposes. The value is
2144
- * validated by Tools against the slot registry before it ever lands in the variant, so a
2145
- * bridge bug can produce a wrong preview but never a wrong save.
2146
- */
2147
1700
  | { protocol: number; type: 'studio:slot'; slot: string; op: 'set' | 'merge'; value: unknown };
2148
1701
 
2149
- /**
2150
- * Strip a deployment base path from a document pathname, yielding the router-space path.
2151
- *
2152
- * A front served under a sub-path (the checkout lives at `/checkout/` on the shared staging host)
2153
- * sees `window.location.pathname` carry that prefix, while its router - and the studio driving it -
2154
- * both reason in base-relative paths. Every path crossing the studio bridge goes through this, so
2155
- * the two sides always speak the same path space whatever the deployment layout is.
2156
- *
2157
- * The base is matched as a whole segment: `/checkout` strips `/checkout/cart` down to `/cart` and
2158
- * leaves `/checkout-help` alone, because that is a different route and not a prefixed one.
2159
- */
2160
1702
  export function mvtStripBasePath(pathname: string, basePath: string): string {
2161
1703
  const base = (basePath ?? '').replace(/\/+$/, '');
2162
1704
 
@@ -2167,12 +1709,6 @@ export function mvtStripBasePath(pathname: string, basePath: string): string {
2167
1709
  return pathname || '/';
2168
1710
  }
2169
1711
 
2170
- /**
2171
- * The base path the document is served under, read from the base element the framework injected.
2172
- *
2173
- * Read from the DOM rather than configured, so the same build works at the domain root and under
2174
- * a sub-path without anyone remembering to keep a constant in step with the deployment.
2175
- */
2176
1712
  export function mvtBasePathOf(doc: Document): string {
2177
1713
  try {
2178
1714
  return new URL(doc.baseURI).pathname.replace(/\/+$/, '') || '/';
@@ -2181,21 +1717,6 @@ export function mvtBasePathOf(doc: Document): string {
2181
1717
  }
2182
1718
  }
2183
1719
 
2184
- /**
2185
- * Collect the navigable links of the page the front is currently showing.
2186
- *
2187
- * Shared rather than written twice, because the filtering is where this gets subtle and getting it
2188
- * wrong in one front and not the other produces a link list that behaves differently depending on
2189
- * which scope is being edited.
2190
- *
2191
- * Only same-origin, non-anchor, non-download links survive. An external link would navigate the
2192
- * frame off the front entirely, taking the preview token with it and leaving the studio talking to
2193
- * a page that has never heard of it; an in-page anchor is not a destination.
2194
- *
2195
- * `basePath` is the deployment prefix of the front, when it has one. Collected hrefs carry it -
2196
- * the browser resolves them against the base element - while the studio and the router reason in
2197
- * base-relative paths, so it is stripped here rather than by every caller.
2198
- */
2199
1720
  export function mvtCollectLinks(root: ParentNode, origin: string, basePath = ''): MvtStudioLink[] {
2200
1721
  const seen = new Set<string>();
2201
1722
  const links: MvtStudioLink[] = [];
@@ -2222,9 +1743,6 @@ export function mvtCollectLinks(root: ParentNode, origin: string, basePath = '')
2222
1743
 
2223
1744
  seen.add(path);
2224
1745
 
2225
- // The visible text, collapsed. An operator picks a destination by the words they can see
2226
- // on the page, not by its route, and a label carrying the whitespace of a three-line
2227
- // menu entry is unreadable in a dropdown.
2228
1746
  const label = (anchor.textContent ?? '').replace(/\s+/g, ' ').trim();
2229
1747
 
2230
1748
  links.push({ path, label: label || path, kind: 'link', reachable: true });