@lifeaz/lors-helper 1.1.12 → 1.1.14

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.12** Lifeaz Online Retail Solution Helper
2
+ **1.1.14** Lifeaz Online Retail Solution Helper
3
3
 
4
4
  ---
5
5
 
package/dist/main.d.ts CHANGED
@@ -204,6 +204,7 @@ export declare const ItemPriceSchema: z.ZodObject<{
204
204
  vat: z.ZodOptional<z.ZodNumber>;
205
205
  incl: z.ZodOptional<z.ZodNumber>;
206
206
  }, z.core.$strip>>>;
207
+ campaignId: z.ZodOptional<z.ZodNullable<z.ZodCustom<UUID, UUID>>>;
207
208
  }, z.core.$strip>;
208
209
  export type ItemPrice = z.infer<typeof ItemPriceSchema>;
209
210
  export declare const ItemDescriptionSchema: z.ZodObject<{
@@ -237,6 +238,7 @@ export declare const ItemSchema: z.ZodObject<{
237
238
  vat: z.ZodOptional<z.ZodNumber>;
238
239
  incl: z.ZodOptional<z.ZodNumber>;
239
240
  }, z.core.$strip>>>;
241
+ campaignId: z.ZodOptional<z.ZodNullable<z.ZodCustom<UUID, UUID>>>;
240
242
  }, z.core.$strip>>;
241
243
  allowedProfiles: z.ZodArray<z.ZodUnion<readonly [z.ZodLiteral<"_Individual_">, z.ZodLiteral<"_Small_Business_">, z.ZodLiteral<"_Company_">]>>;
242
244
  isDefaultDelivery: z.ZodOptional<z.ZodBoolean>;
@@ -733,6 +735,11 @@ export declare const CampaignPriceImpactSchema: z.ZodObject<{
733
735
  rules: z.ZodRecord<z.ZodString, z.ZodNumber>;
734
736
  }, z.core.$strip>;
735
737
  export type CampaignPriceImpact = z.infer<typeof CampaignPriceImpactSchema>;
738
+ export declare const CampaignItemTagSchema: z.ZodObject<{
739
+ strong: z.ZodNullable<z.ZodString>;
740
+ text: z.ZodString;
741
+ }, z.core.$strip>;
742
+ export type CampaignItemTag = z.infer<typeof CampaignItemTagSchema>;
736
743
  export declare const CampaignSchema: z.ZodObject<{
737
744
  id: z.ZodCustom<UUID, UUID>;
738
745
  masterId: z.ZodDefault<z.ZodNullable<z.ZodCustom<UUID, UUID>>>;
@@ -781,6 +788,10 @@ export declare const CampaignSchema: z.ZodObject<{
781
788
  valueType: z.ZodNullable<z.ZodUnion<readonly [z.ZodLiteral<"_Percentage_">, z.ZodLiteral<"_Fixed_Amount_">, z.ZodLiteral<"_Fixed_Total_">, z.ZodLiteral<"_Item_">, z.ZodLiteral<"_Composite_">]>>;
782
789
  rules: z.ZodRecord<z.ZodString, z.ZodNumber>;
783
790
  }, z.core.$strip>>;
791
+ itemTag: z.ZodDefault<z.ZodNullable<z.ZodObject<{
792
+ strong: z.ZodNullable<z.ZodString>;
793
+ text: z.ZodString;
794
+ }, z.core.$strip>>>;
784
795
  }, z.core.$strip>;
785
796
  export type Campaign = z.infer<typeof CampaignSchema>;
786
797
  export type DeliveryMethodId = '_Standard_' | '_Express_';
@@ -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
@@ -128,6 +128,7 @@ export const ItemPriceSchema = z.object({
128
128
  vatRate: z.number().optional(),
129
129
  validUntil: z.string().nullable().optional(),
130
130
  regular: ItemRegularPriceSchema.nullable().optional(),
131
+ campaignId: uuidSchema.nullable().optional(),
131
132
  });
132
133
  export const ItemDescriptionSchema = z.object({
133
134
  lines: z.array(z.string()),
@@ -442,6 +443,10 @@ export const CampaignPriceImpactSchema = z.object({
442
443
  valueType: DiscountValueTypeSchema.nullable(),
443
444
  rules: z.record(z.string(), z.number()),
444
445
  });
446
+ export const CampaignItemTagSchema = z.object({
447
+ strong: z.string().nullable(),
448
+ text: z.string(),
449
+ });
445
450
  export const CampaignSchema = z.object({
446
451
  id: uuidSchema,
447
452
  masterId: uuidSchema.nullable().default(null),
@@ -456,6 +461,7 @@ export const CampaignSchema = z.object({
456
461
  priceTag: CampaignPriceTagSchema.nullable(),
457
462
  ribbon: CampaignRibbonSchema.nullable(),
458
463
  priceImpact: CampaignPriceImpactSchema.nullable(),
464
+ itemTag: CampaignItemTagSchema.nullable().default(null),
459
465
  });
460
466
  export const DEFAULT_COMMITMENT_MONTHS = 12;
461
467
  export const PartnerNoticeSchema = z.object({
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.12",
4
+ "version": "1.1.14",
5
5
  "main": "dist/main.js",
6
6
  "files": [
7
7
  "dist",
@@ -38,7 +38,7 @@
38
38
  "build:version:ensure": "bash ./.scripts/bump.sh --no-build"
39
39
  },
40
40
  "peerDependencies": {
41
- "dayjs": "^1.11.23",
41
+ "dayjs": "^1.11.20",
42
42
  "uuidv7": "^1.2.1",
43
43
  "zod": "^4.3.0"
44
44
  },
@@ -51,8 +51,8 @@
51
51
  "lifeaz": {
52
52
  "version": {
53
53
  "short": 1,
54
- "full": "1.1.12-b48",
55
- "code": "101120048"
54
+ "full": "1.1.14-b51",
55
+ "code": "101140051"
56
56
  }
57
57
  }
58
58
  }
package/src/main.ts CHANGED
@@ -221,6 +221,7 @@ export const ItemPriceSchema = z.object({
221
221
  vatRate: z.number().optional(),
222
222
  validUntil: z.string().nullable().optional(),
223
223
  regular: ItemRegularPriceSchema.nullable().optional(),
224
+ campaignId: uuidSchema.nullable().optional(),
224
225
  });
225
226
  export type ItemPrice = z.infer<typeof ItemPriceSchema>;
226
227
 
@@ -619,6 +620,12 @@ export const CampaignPriceImpactSchema = z.object({
619
620
  });
620
621
  export type CampaignPriceImpact = z.infer<typeof CampaignPriceImpactSchema>;
621
622
 
623
+ export const CampaignItemTagSchema = z.object({
624
+ strong: z.string().nullable(),
625
+ text: z.string(),
626
+ });
627
+ export type CampaignItemTag = z.infer<typeof CampaignItemTagSchema>;
628
+
622
629
  export const CampaignSchema = z.object({
623
630
  id: uuidSchema,
624
631
  masterId: uuidSchema.nullable().default(null),
@@ -633,18 +640,12 @@ export const CampaignSchema = z.object({
633
640
  priceTag: CampaignPriceTagSchema.nullable(),
634
641
  ribbon: CampaignRibbonSchema.nullable(),
635
642
  priceImpact: CampaignPriceImpactSchema.nullable(),
643
+ itemTag: CampaignItemTagSchema.nullable().default(null),
636
644
  });
637
645
  export type Campaign = z.infer<typeof CampaignSchema>;
638
646
 
639
647
  export type DeliveryMethodId = '_Standard_' | '_Express_';
640
648
 
641
- /**
642
- * What the plain checkout commits to, in months.
643
- *
644
- * Named rather than written as a literal in four places, because it is reported in the webhooks
645
- * now: a consumer reading "commitmentMonths" has to get the same answer from a partner order and
646
- * from a direct one, and the direct one used to answer nothing at all.
647
- */
648
649
  export const DEFAULT_COMMITMENT_MONTHS = 12;
649
650
 
650
651
  export const PartnerNoticeSchema = z.object({
@@ -664,23 +665,8 @@ export const PartnerSchema = z.object({
664
665
  logoUrl: z.string().nullable(),
665
666
  promoCodesEnabled: z.boolean(),
666
667
  hideReferralSurvey: z.boolean(),
667
- /**
668
- * Whether `deliveryCountries` replaces the base deliverable list or extends it.
669
- *
670
- * Extending is the older reading and stays the default: a partner that simply sells into one
671
- * more market should not have to restate the countries everyone already ships to. Replacing
672
- * is what lets an agreement covering one country be expressed as one country.
673
- */
674
668
  deliveryCountriesExclusive: z.boolean().default(false),
675
- /**
676
- * Customer profiles this partner does not sell to.
677
- *
678
- * Blocks rather than an allow list, so a profile added to the catalogue is offered by every
679
- * partner until one deliberately turns it off. Never all of them: a partner that sells to
680
- * nobody is a funnel nobody can enter, and the API refuses to store that.
681
- */
682
669
  blockedProfiles: z.array(z.string()).default([]),
683
- /** Length of the rental commitment sold through this partner, in months. */
684
670
  commitmentMonths: z.number().int().positive().max(120).default(DEFAULT_COMMITMENT_MONTHS),
685
671
  hideOffersStep: z.boolean(),
686
672
  defaultOfferType: OfferTypeSchema.nullable(),
@@ -692,10 +678,6 @@ export const PartnerSchema = z.object({
692
678
  });
693
679
  export type Partner = z.infer<typeof PartnerSchema>;
694
680
 
695
- // =============================================================================
696
- // MVT - Multivariate testing
697
- // =============================================================================
698
-
699
681
  export type MvtStatus = '_Draft_' | '_Scheduled_' | '_Running_' | '_Paused_' | '_Stopped_' | '_Archived_';
700
682
  export const MvtStatusSchema = z.union([z.literal('_Draft_'), z.literal('_Scheduled_'), z.literal('_Running_'), z.literal('_Paused_'), z.literal('_Stopped_'), z.literal('_Archived_')]);
701
683
 
@@ -766,11 +748,6 @@ export const MvtOperatorSchema = z.union([
766
748
  z.literal('_Date_Between_'),
767
749
  ]);
768
750
 
769
- /**
770
- * Operators that read no value at all. Storing an empty value list against one of them is not an
771
- * error worth refusing, but the evaluator ignores it, and the Tools condition builder hides the
772
- * value editor rather than offering a field that changes nothing.
773
- */
774
751
  export const MVT_NULLARY_OPERATORS: readonly MvtOperator[] = [
775
752
  '_Partner_Absent_',
776
753
  '_Visitor_Is_New_',
@@ -814,62 +791,34 @@ export const MvtVariantSchema = z.object({
814
791
  weight: z.number().int().nonnegative(),
815
792
  control: z.boolean(),
816
793
  overrides: z.array(MvtOverrideSchema),
817
- /**
818
- * Optional sub-targeting. A variant carrying one stops being a share of the split and becomes
819
- * a rule: every unit matching it lands here, whatever the weights say. See mvtPickVariant.
820
- */
821
794
  audience: MvtAudienceNodeSchema.nullable().default(null),
822
- /** Evaluation order of the targeted variants. The first match wins, so this is the tie-break. */
823
795
  order: z.number().int().default(0),
824
- /** Purely cosmetic, so one arm keeps the same colour across the split bar, the studio and the results. */
825
796
  color: z.string().nullable().default(null),
826
797
  description: z.string().nullable().default(null),
827
798
  });
828
799
  export type MvtVariant = z.infer<typeof MvtVariantSchema>;
829
800
 
830
- /**
831
- * What a variant changes on one checkout.
832
- *
833
- * The plain checkout is the null partner; so is the storefront, which has no partner dimension.
834
- * A checkout only ever receives the version written for it, never another checkout's: an
835
- * override authored against the plain funnel names steps and options a partner funnel may not
836
- * have, and a fallback would carry it there anyway. The API flattens the right version into
837
- * `MvtVariant.overrides` before the config leaves the server, so the fronts never see the others.
838
- */
839
801
  export const MvtVariantVersionSchema = z.object({
840
802
  partnerId: z.string().nullable(),
841
803
  overrides: z.array(MvtOverrideSchema),
842
804
  });
843
805
  export type MvtVariantVersion = z.infer<typeof MvtVariantVersionSchema>;
844
806
 
845
- /**
846
- * One checkout an experiment can reach, described by what it actually renders.
847
- *
848
- * Built by the API from the partner configuration and handed to the Tools, so the studio only
849
- * offers what the funnel on screen has: a step the partner hides is not a step to reorder, and
850
- * an option the partner blocks is not an option to preselect. The same object is what the API
851
- * validates a version against before writing it, so the interface and the boundary agree.
852
- */
853
807
  export const MvtCheckoutTargetSchema = z.object({
854
- /** Null for the plain checkout. */
855
808
  partnerId: z.string().nullable(),
856
809
  slug: z.string().nullable(),
857
810
  name: z.string(),
858
- /** The referential funnel, in referential order. Always the six steps. */
859
811
  steps: z.array(CartStepSchema),
860
- /** Steps this checkout never shows, whatever a variant says. */
861
812
  hiddenSteps: z.array(CartStepSchema),
862
813
  availableOfferItemIds: z.array(z.string()),
863
814
  availableOptionItemIds: z.array(z.string()),
864
815
  blockedPaymentMethods: z.array(z.string()),
865
816
  blockedDeliveryMethods: z.array(z.string()),
866
817
  profiles: z.array(z.string()),
867
- /** The offer this checkout applies by itself when it skips the Offers step. Null when it has none. */
868
818
  defaultOfferType: OfferTypeSchema.nullable().default(null),
869
819
  });
870
820
  export type MvtCheckoutTarget = z.infer<typeof MvtCheckoutTargetSchema>;
871
821
 
872
- /** The plain checkout as a target: everything the referential funnel offers, nothing removed. */
873
822
  export function mvtPlainCheckoutTarget(offerItemIds: string[] = [], optionItemIds: string[] = [], profiles: string[] = []): MvtCheckoutTarget {
874
823
  return {
875
824
  partnerId: null,
@@ -886,20 +835,12 @@ export function mvtPlainCheckoutTarget(offerItemIds: string[] = [], optionItemId
886
835
  };
887
836
  }
888
837
 
889
- /**
890
- * How one variant ends up receiving traffic, resolved from the variant set as a whole.
891
- *
892
- * `_Targeted_` variants are claimed by their own conditions and take no part in the weighted
893
- * draw; `_Weighted_` ones share whatever is left. Computed in one place because the operator is
894
- * shown this and the evaluator obeys it, and the two disagreeing would be the worst outcome.
895
- */
896
838
  export type MvtAllocationMode = '_Targeted_' | '_Weighted_' | '_Unreachable_';
897
839
 
898
840
  export interface MvtAllocationRow {
899
841
  key: string;
900
842
  mode: MvtAllocationMode;
901
843
  weight: number;
902
- /** 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. */
903
844
  sharePct: number;
904
845
  }
905
846
 
@@ -930,13 +871,6 @@ export const MvtConfigSchema = z.object({
930
871
  });
931
872
  export type MvtConfig = z.infer<typeof MvtConfigSchema>;
932
873
 
933
- /**
934
- * Everything the audience tree is allowed to read, resolved once and frozen into the assignment.
935
- *
936
- * Frozen matters more than it looks: a visitor who rotates their phone crosses the tablet/desktop
937
- * breakpoint, and a context read live would move them to another variant mid-session. The context
938
- * captured at assignment time is the one that decides, for as long as the assignment lives.
939
- */
940
874
  export interface MvtContext {
941
875
  unitId: string;
942
876
  device: MvtDevice;
@@ -951,22 +885,12 @@ export interface MvtContext {
951
885
  hasCart: boolean;
952
886
  firstSeenAt: number;
953
887
  now: number;
954
- /** 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. */
955
888
  query: Record<string, string>;
956
- /** Viewport width in CSS pixels. Coarser than the device buckets, for the tests where the breakpoint itself is the subject. */
957
889
  screenWidth: number;
958
- /** Sessions this unit has opened, this one included. */
959
890
  visits: number;
960
891
  loggedIn: boolean;
961
892
  }
962
893
 
963
- /**
964
- * Fill in the dimensions an older caller does not provide.
965
- *
966
- * The context grew, and a front built against the previous shape must not start failing every
967
- * leaf that reads a new field. Defaults are chosen so an absent dimension excludes rather than
968
- * includes: a condition on something the caller cannot observe should not match everybody.
969
- */
970
894
  export function mvtNormalizeContext(context: Partial<MvtContext> & { unitId: string }): MvtContext {
971
895
  return {
972
896
  device: '_Desktop_',
@@ -998,42 +922,14 @@ export interface MvtDecision {
998
922
  overrides: MvtOverride[];
999
923
  }
1000
924
 
1001
- /**
1002
- * How the control arm names itself to the analytics destinations.
1003
- *
1004
- * The fronts used to send a null variant for a control assignment, on the reasoning that "which
1005
- * variant is this person seeing" and "are they in the experiment at all" are different questions.
1006
- * In practice the destinations do not agree: a null is dropped by some, rendered as "(not set)"
1007
- * by others, and never groups, so the control arm went missing from exactly the reports it is the
1008
- * baseline of. A named value groups like any other, and null keeps a meaning of its own - the
1009
- * visitor is outside the experiment - which is what it was being asked to carry two things for.
1010
- *
1011
- * Deliberately lowercase and free of the underscore convention: this is a value read in a report,
1012
- * not an identifier the applications match on.
1013
- */
1014
925
  export const MVT_CONTROL_VARIANT = 'control';
1015
926
 
1016
- /**
1017
- * @summary The variant name one decision reports to the trackers.
1018
- *
1019
- * Shared so the assignment list, the per-event attribution and the exposure events
1020
- * cannot drift: one visitor showing up as `control` in one and as their arm key in
1021
- * another is a segmentation that silently double counts.
1022
- */
1023
927
  export function mvtTrackedVariant(decision: Pick<MvtDecision, 'control' | 'variantKey'>): string {
1024
928
  return decision.control ? MVT_CONTROL_VARIANT : decision.variantKey;
1025
929
  }
1026
930
 
1027
931
  const MVT_RETURNING_AFTER_MS = 30 * 60 * 1000;
1028
932
 
1029
- /**
1030
- * FNV-1a, 32 bits.
1031
- *
1032
- * Chosen for being trivially reimplementable and byte-for-byte identical everywhere: the API, the
1033
- * storefront and the checkout each bucket independently, with no round trip, and any disagreement
1034
- * between them would show up as a visitor silently changing variant when they cross from one
1035
- * application to the other.
1036
- */
1037
933
  export function mvtHash(input: string): number {
1038
934
  let hash = 0x811c9dc5;
1039
935
 
@@ -1056,23 +952,11 @@ export function mvtIsEligibleForTraffic(experiment: MvtExperiment, unitId: strin
1056
952
  return mvtBucket(experiment.salt, unitId, 'traffic') < experiment.trafficPct * 100;
1057
953
  }
1058
954
 
1059
- /**
1060
- * Pick the variant a unit falls into, by weight, deterministically.
1061
- *
1062
- * Weights are relative rather than percentages so that 90/10, 50/50 and 34/33/33 are all
1063
- * expressible without the operator having to make anything add up. They are sorted by key first,
1064
- * so that the mapping from bucket range to variant depends only on the weights themselves and not
1065
- * on the order rows happened to come back from the database.
1066
- */
1067
955
  export function mvtPickVariant(experiment: MvtExperiment, unitId: string, context?: MvtContext): MvtVariant | null {
1068
956
  const targeted = experiment.variants
1069
957
  .filter(variant => !!variant.audience)
1070
958
  .sort((a, b) => (a.order ?? 0) - (b.order ?? 0) || a.key.localeCompare(b.key));
1071
959
 
1072
- // Targeted arms are rules, not shares: the first whose own conditions hold claims the unit
1073
- // outright. Evaluated before the draw so that "everyone on mobile sees B" means exactly that
1074
- // rather than "mobile visitors have a better chance of seeing B", which is what a weight
1075
- // nudged by hand would have produced and what an operator would have had to verify by eye.
1076
960
  if (context)
1077
961
  for (const variant of targeted)
1078
962
  if (mvtEvaluateAudience(variant.audience ?? null, context)) return variant;
@@ -1080,9 +964,6 @@ export function mvtPickVariant(experiment: MvtExperiment, unitId: string, contex
1080
964
  const pool = experiment.variants.filter(variant => !variant.audience).sort((a, b) => a.key.localeCompare(b.key));
1081
965
  const total = pool.reduce((sum, v) => sum + Math.max(v.weight, 0), 0);
1082
966
 
1083
- // Every arm targeted and none of them matching leaves nobody to fall back on. The unit is
1084
- // left out of the experiment entirely rather than pushed onto an arm whose conditions it
1085
- // failed, which would silently make the targeting a lie.
1086
967
  if (!pool.length || total <= 0) return null;
1087
968
 
1088
969
  const target = (mvtBucket(experiment.salt, unitId) / 10000) * total;
@@ -1097,13 +978,6 @@ export function mvtPickVariant(experiment: MvtExperiment, unitId: string, contex
1097
978
  return pool[pool.length - 1];
1098
979
  }
1099
980
 
1100
- /**
1101
- * How the split actually resolves, for the operator rather than the evaluator.
1102
- *
1103
- * Weights are relative and targeted arms are outside the draw entirely, so the number an operator
1104
- * typed and the share it buys are rarely the same. Computing that here, from the same rules the
1105
- * bucketing obeys, is what lets the interface show a split bar that cannot drift from the truth.
1106
- */
1107
981
  export function mvtDistribution(variants: readonly MvtVariant[]): MvtAllocationRow[] {
1108
982
  const pool = variants.filter(variant => !variant.audience);
1109
983
  const total = pool.reduce((sum, v) => sum + Math.max(v.weight, 0), 0);
@@ -1171,9 +1045,6 @@ function mvtEvaluateLeaf(operator: MvtOperator, values: string[], context: MvtCo
1171
1045
  case '_Is_Weekend_': return [0, 6].includes(new Date(context.now).getDay());
1172
1046
  case '_Visits_At_Least_': return context.visits >= Number(values[0] ?? 1);
1173
1047
 
1174
- // Written "name=value", or "name" on its own to test for presence. The value side goes
1175
- // through the same wildcard matcher as the UTM leaves, so utm-like conventions carried in
1176
- // a bespoke parameter behave the way an operator already expects them to.
1177
1048
  case '_Query_Param_Matches_': {
1178
1049
  return values.some(raw => {
1179
1050
  const separator = raw.indexOf('=');
@@ -1188,10 +1059,6 @@ function mvtEvaluateLeaf(operator: MvtOperator, values: string[], context: MvtCo
1188
1059
  });
1189
1060
  }
1190
1061
 
1191
- // A bound left blank is open-ended rather than zero. `??` only catches an absent entry,
1192
- // and the editor writes an empty string for a field the operator cleared - which
1193
- // `Number('')` turns into 0, so "1024 and above" silently became "between 1024 and 0" and
1194
- // matched nobody. Same reading as the date window below, which had it right.
1195
1062
  case '_Screen_Width_Between_': {
1196
1063
  const from = values[0] ? Number(values[0]) : 0;
1197
1064
  const to = values[1] ? Number(values[1]) : Number.MAX_SAFE_INTEGER;
@@ -1201,9 +1068,6 @@ function mvtEvaluateLeaf(operator: MvtOperator, values: string[], context: MvtCo
1201
1068
  return context.screenWidth >= from && context.screenWidth <= to;
1202
1069
  }
1203
1070
 
1204
- // Bounds are wall-clock dates, and either may be left out for an open-ended window. This
1205
- // is not the experiment's own schedule: it is for the tests whose point is a date, such
1206
- // as a variant that only exists over a sale weekend.
1207
1071
  case '_Date_Between_': {
1208
1072
  const from = values[0] ? Date.parse(values[0]) : Number.NEGATIVE_INFINITY;
1209
1073
  const to = values[1] ? Date.parse(values[1]) : Number.POSITIVE_INFINITY;
@@ -1217,14 +1081,6 @@ function mvtEvaluateLeaf(operator: MvtOperator, values: string[], context: MvtCo
1217
1081
  }
1218
1082
  }
1219
1083
 
1220
- /**
1221
- * Evaluate an audience tree.
1222
- *
1223
- * A null tree targets everyone, which is the common case and should not require building a node.
1224
- * An operator this build does not know returns false rather than throwing: a Tools release that
1225
- * introduces a new operator must never be able to break a front that has not shipped yet, and
1226
- * failing closed means the visitor stays on control instead of seeing a broken page.
1227
- */
1228
1084
  export function mvtEvaluateAudience(node: MvtAudienceNode | null, context: MvtContext): boolean {
1229
1085
  if (!node) return true;
1230
1086
 
@@ -1248,14 +1104,6 @@ export function mvtIsLive(experiment: MvtExperiment, now: number): boolean {
1248
1104
  return experiment.status === '_Running_' && mvtIsWithinWindow(experiment, now);
1249
1105
  }
1250
1106
 
1251
- /**
1252
- * Resolve every decision for one unit, in one pass.
1253
- *
1254
- * Experiments are walked by descending priority so that exclusion groups resolve predictably: the
1255
- * first live experiment of a group claims it, and the rest are skipped for this unit. Without an
1256
- * order the winner would depend on row order, and two visitors could end up in mutually exclusive
1257
- * tests that were meant to be exclusive.
1258
- */
1259
1107
  export function mvtResolve(config: MvtConfig, context: MvtContext, forced: Record<string, string> = {}): MvtDecision[] {
1260
1108
  if (!config.enabled) return [];
1261
1109
 
@@ -1301,20 +1149,8 @@ function mvtToDecision(experiment: MvtExperiment, variant: MvtVariant): MvtDecis
1301
1149
  };
1302
1150
  }
1303
1151
 
1304
- // -----------------------------------------------------------------------------
1305
- // Slot registry
1306
- // -----------------------------------------------------------------------------
1307
-
1308
1152
  export type MvtSlotKind = 'boolean' | 'number' | 'duration' | 'text' | 'i18n' | 'color' | 'image' | 'enum' | 'list' | 'object' | 'record';
1309
1153
 
1310
- /**
1311
- * One editable field of a fixed-shape slot.
1312
- *
1313
- * The registry describes the shape rather than leaving the interface to infer it, because the
1314
- * alternative is an operator typing JSON into a textarea and discovering their mistake from a
1315
- * customer. A field the editor does not recognise degrades to a text input rather than
1316
- * disappearing, so adding a kind here never blanks out a control in an older build.
1317
- */
1318
1154
  export interface MvtSlotField {
1319
1155
  key: string;
1320
1156
  label: string;
@@ -1327,50 +1163,19 @@ export interface MvtSlotDefinition {
1327
1163
  scope: MvtScope;
1328
1164
  area: string;
1329
1165
  label: string;
1330
- /** One short sentence an operator reads before deciding whether this is the slot they want. */
1331
1166
  hint: string;
1332
1167
  kind: MvtSlotKind;
1333
1168
  ops: readonly MvtOverrideOp[];
1334
- /** Allowed values for an `enum`, or the closed set of entries for a constrained `list`. */
1335
1169
  options?: readonly string[];
1336
- /** The named fields of an `object`, or the per-item fields of a list of objects. */
1337
1170
  fields?: readonly MvtSlotField[];
1338
- /** The kind every value takes in a `record`, whose keys are open-ended. */
1339
1171
  entryKind?: MvtSlotKind;
1340
- /** Which property identifies an item, for the `remove`, `patch` and `reorder` operations. */
1341
1172
  itemKey?: string;
1342
1173
  schema: z.ZodType<unknown>;
1343
1174
  }
1344
1175
 
1345
- /**
1346
- * A piece of copy, written in whichever languages the operator filled in.
1347
- *
1348
- * Partial on purpose, and it has to be said in the schema rather than left to convention: zod
1349
- * treats a record keyed by a closed set as exhaustive, so `z.record` here would refuse a French-
1350
- * only override at write time - which is the normal case, since a language left empty is
1351
- * documented everywhere as keeping the untouched original rather than blanking it.
1352
- */
1353
1176
  const i18nTextSchema = z.partialRecord(LangSchema, z.string());
1354
- /**
1355
- * A hex colour, or the one keyword that is not a colour.
1356
- *
1357
- * The value space stays closed - it is written straight onto a customer's page - but it has to
1358
- * hold "no background at all". Without it a section given a background by mistake could be
1359
- * recoloured and never undone: every value the picker can produce paints something, and clearing
1360
- * the override only restores whatever the page painted in the first place.
1361
- */
1362
1177
  const colorSchema = z.string().regex(/^(#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})|transparent)$/i);
1363
1178
 
1364
- /**
1365
- * What a link or image override may point at.
1366
- *
1367
- * Overrides are authored by operators and applied verbatim onto attributes of a customer's page,
1368
- * so the value space has to be closed the same way the patch vocabulary is. A `javascript:` href
1369
- * written through the studio would otherwise ride an override straight into `setAttribute` and
1370
- * run in every visitor's browser, which turns a copy-editing tool into stored XSS. Only http(s)
1371
- * and same-site relative destinations survive; everything else is refused at write time by the
1372
- * schemas and ignored at render time by the fronts.
1373
- */
1374
1179
  const SAFE_HREF_PATTERN = /^(https?:\/\/|\/(?!\/)|#|\?)/i;
1375
1180
  const SAFE_IMAGE_PATTERN = /^(https?:\/\/|\/(?!\/)|assets\/)/i;
1376
1181
 
@@ -1386,21 +1191,8 @@ const safeHrefSchema = z.string().max(2048).refine(mvtIsSafeHref, { message: 'hr
1386
1191
  const safeImageSchema = z.string().max(2048).refine(mvtIsSafeImage, { message: 'image must be http(s) or a same-site relative path' });
1387
1192
  const safeRouteSchema = z.string().max(512).refine(value => value.startsWith('/') && !value.startsWith('//'), { message: 'route must be an absolute in-app path' });
1388
1193
 
1389
- /**
1390
- * What a test may do to one anchored element.
1391
- *
1392
- * This is the whole vocabulary of the visual editor, and it is deliberately short. Hide it, move
1393
- * it, reword it, repoint it, restyle it within a closed set of properties. Nothing here can
1394
- * inject markup or a script, so an override authored by clicking around a page carries the same
1395
- * blast radius as one typed into the registry editor, which is what makes the studio safe to
1396
- * hand to somebody who is not going to read a diff.
1397
- *
1398
- * Every field is optional and absence means untouched, so the patches stay small and two editing
1399
- * sessions on the same element compose instead of overwriting one another.
1400
- */
1401
1194
  export const MvtAnchorPatchSchema = z.object({
1402
1195
  hidden: z.boolean().optional(),
1403
- /** Position among its siblings. Lower comes first; anchors without one keep their place. */
1404
1196
  order: z.number().int().min(-999).max(999).optional(),
1405
1197
  text: i18nTextSchema.optional(),
1406
1198
  href: safeHrefSchema.optional(),
@@ -1435,19 +1227,6 @@ function slot(definition: MvtSlotDefinition): MvtSlotDefinition {
1435
1227
  return definition;
1436
1228
  }
1437
1229
 
1438
- /**
1439
- * The single source of truth for what a test is allowed to change.
1440
- *
1441
- * Shared by all four applications on purpose. The API validates writes against it, so a malformed
1442
- * override is refused at authoring time rather than discovered by a customer; Tools reads it to
1443
- * render a typed editor instead of a free JSON field; and the fronts read it to reject anything
1444
- * that slipped through anyway. A slot absent from this list simply does not exist, which is what
1445
- * keeps the blast radius of the whole feature bounded.
1446
- *
1447
- * Nothing monetary appears here, and nothing ever should. Prices, items and discounts are steered
1448
- * by campaigns and discounts, which carry their own controls and their own audit trail. A test
1449
- * decides how an offer is presented, never what it costs.
1450
- */
1451
1230
  export const MVT_SLOTS: readonly MvtSlotDefinition[] = [
1452
1231
  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()) }),
1453
1232
  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()) }),
@@ -1604,13 +1383,6 @@ export interface MvtOverrideIssue {
1604
1383
  reason: string;
1605
1384
  }
1606
1385
 
1607
- /**
1608
- * Validate a variant's overrides against the registry.
1609
- *
1610
- * Called by the API before a variant is stored, so that a slot typo or a colour written as a name
1611
- * instead of a hex value is a 422 for the operator who can still fix it, rather than a silently
1612
- * ignored override that makes a test look like it had no effect.
1613
- */
1614
1386
  export function mvtValidateOverrides(overrides: MvtOverride[]): MvtOverrideIssue[] {
1615
1387
  const issues: MvtOverrideIssue[] = [];
1616
1388
 
@@ -1638,10 +1410,6 @@ export function mvtValidateOverrides(overrides: MvtOverride[]): MvtOverrideIssue
1638
1410
  return;
1639
1411
  }
1640
1412
 
1641
- // A merge onto a record is still a record of the same entries, so the full schema
1642
- // applies and catches a malformed anchor patch here rather than in a customer's
1643
- // browser. A merge onto a fixed-shape object is a partial by definition, and running
1644
- // the whole schema over it would refuse every legitimate single-field edit.
1645
1413
  if (definition.kind === 'record' && !definition.schema.safeParse(override.value).success)
1646
1414
  issues.push({ index, slot: override.slot, reason: 'invalid_value' });
1647
1415
 
@@ -1655,51 +1423,18 @@ export function mvtValidateOverrides(overrides: MvtOverride[]): MvtOverrideIssue
1655
1423
  return issues;
1656
1424
  }
1657
1425
 
1658
- /**
1659
- * Steps no experiment may hide on any checkout.
1660
- *
1661
- * Each of these writes something the rest of the funnel cannot do without: Profile decides
1662
- * which offers exist at all, Information carries the customer identity, Delivery the address
1663
- * the price depends on, Payment the money. A funnel skipping one of them is not a variation, it
1664
- * is a checkout that blocks on the step after the missing one - which is exactly what happened
1665
- * when hiding the profile step was allowed.
1666
- */
1667
1426
  export const MVT_UNHIDEABLE_STEPS: readonly CartStep[] = ['_Profile_', '_Information_', '_Delivery_', '_Payment_'];
1668
1427
 
1669
- /**
1670
- * The only steps a test may skip.
1671
- *
1672
- * Options is optional by nature. Offers is skippable only when something else picks the offer:
1673
- * either the partner funnel, which applies its single offer by itself, or the variant, through
1674
- * the `checkout.offers.default` slot. Without one of those nothing selects an offer, and the
1675
- * Options step has nothing to attach a warranty to.
1676
- */
1677
1428
  export const MVT_HIDEABLE_STEPS: readonly CartStep[] = ['_Offers_', '_Options_'];
1678
1429
 
1679
- /** Whether a preselection entry names an item identifier rather than a SKU. */
1680
1430
  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}$/;
1681
1431
 
1682
- /**
1683
- * The default offer a set of overrides names, if any.
1684
- */
1685
1432
  export function mvtDefaultOfferOf(overrides: readonly MvtOverride[]): string | null {
1686
1433
  const override = overrides.find(entry => entry.slot === 'checkout.offers.default' && entry.op === 'set');
1687
1434
 
1688
1435
  return typeof override?.value === 'string' ? override.value : null;
1689
1436
  }
1690
1437
 
1691
- /**
1692
- * Validate a version's overrides against the checkout it is written for.
1693
- *
1694
- * Runs after mvtValidateOverrides, which already knows the value is well-typed; this one knows
1695
- * whether the value names something the target checkout has. Hiding a step the partner already
1696
- * hides is refused rather than tolerated, because an override that changes nothing on the funnel
1697
- * it was written for is an override somebody will later wonder about. Preselecting an option the
1698
- * partner blocks is refused for the plainer reason that the customer could never see it.
1699
- *
1700
- * The step order stays a permutation of the six steps on every checkout, hidden ones included:
1701
- * hiding is a separate list, and the fronts discard an order that drops a step as malformed.
1702
- */
1703
1438
  export function mvtValidateOverridesForTarget(overrides: MvtOverride[], target: MvtCheckoutTarget): MvtOverrideIssue[] {
1704
1439
  const issues: MvtOverrideIssue[] = [];
1705
1440
  const hidden = new Set<string>(target.hiddenSteps);
@@ -1736,9 +1471,6 @@ export function mvtValidateOverridesForTarget(overrides: MvtOverride[], target:
1736
1471
  issues.push({ index, slot: override.slot, reason: 'option_absent_on_target' });
1737
1472
  }
1738
1473
 
1739
- // A warranty is matched by SKU or by item id on the front, so only an entry that looks
1740
- // like an identifier can be checked here. A SKU is left to the front, which knows the
1741
- // catalogue in the customer's country; naming a blocked item id is refused outright.
1742
1474
  if (override.slot === 'checkout.warranty.preselected' && typeof override.value === 'string' && options.size) {
1743
1475
  if (override.value !== '_None_' && UUID_LIKE.test(override.value) && !options.has(override.value))
1744
1476
  issues.push({ index, slot: override.slot, reason: 'option_absent_on_target' });
@@ -1753,13 +1485,6 @@ export function mvtValidateOverridesForTarget(overrides: MvtOverride[], target:
1753
1485
  return issues;
1754
1486
  }
1755
1487
 
1756
- /**
1757
- * Apply one override to a base value.
1758
- *
1759
- * Every branch is total: an operation that cannot be carried out on the shape it was given returns
1760
- * the base untouched. A test that does nothing is a disappointment; a test that throws inside a
1761
- * component's render path is an outage, and the two are not worth trading against each other.
1762
- */
1763
1488
  export function mvtApplyOverride<T>(base: T, override: MvtOverride): T {
1764
1489
  const value = override.value;
1765
1490
 
@@ -1827,28 +1552,14 @@ export function mvtApplyOverride<T>(base: T, override: MvtOverride): T {
1827
1552
  }
1828
1553
  }
1829
1554
 
1830
- // -----------------------------------------------------------------------------
1831
- // Anchors
1832
- // -----------------------------------------------------------------------------
1833
-
1834
1555
  export const MVT_ANCHOR_ATTRIBUTE = 'data-mvt-anchor';
1835
1556
 
1836
- /** The tags a text block may contain and still be edited wholesale: pure inline formatting. */
1837
1557
  const MVT_INLINE_TEXT_TAGS = new Set(['BR', 'B', 'STRONG', 'EM', 'I', 'U', 'SPAN', 'SMALL', 'SUP', 'SUB', 'MARK']);
1838
1558
 
1839
- /**
1840
- * Whether an element holds nothing but text as far as editing is concerned.
1841
- *
1842
- * Used to be "no element children at all", which locked a title split by a <br> or a label
1843
- * wrapped in a <strong> out of the double-click editor for no reason an operator could see.
1844
- * Inline formatting tags are text; a nested component, a link or an image is not, because
1845
- * replacing the textContent of those would delete markup Angular will not put back.
1846
- */
1847
1559
  export function mvtHoldsOnlyText(node: HTMLElement): boolean {
1848
1560
  return Array.from(node.querySelectorAll('*')).every(child => MVT_INLINE_TEXT_TAGS.has(child.tagName));
1849
1561
  }
1850
1562
 
1851
- /** What the style inspector edits, read from the page rather than assumed. */
1852
1563
  export interface MvtAnchorStyleSnapshot {
1853
1564
  background: string | null;
1854
1565
  color: string | null;
@@ -1869,14 +1580,6 @@ function mvtColorToHex(value: string): string | null {
1869
1580
  return `#${hex(match[1])}${hex(match[2])}${hex(match[3])}`;
1870
1581
  }
1871
1582
 
1872
- /**
1873
- * Read the style an element actually renders with, in the vocabulary of the patch schema.
1874
- *
1875
- * The inspector used to open every element on white-on-black defaults, which told the operator
1876
- * the editor did not know the page - and it did not. The background climbs the ancestors until
1877
- * something opaque is found, because "transparent" is never what a person means by the colour
1878
- * behind a title.
1879
- */
1880
1583
  export function mvtSnapshotAnchorStyle(node: HTMLElement): MvtAnchorStyleSnapshot {
1881
1584
  const computed = window.getComputedStyle(node);
1882
1585
 
@@ -1906,24 +1609,10 @@ export function mvtSnapshotAnchorStyle(node: HTMLElement): MvtAnchorStyleSnapsho
1906
1609
  };
1907
1610
  }
1908
1611
 
1909
- /**
1910
- * The anchors slot for one scope.
1911
- *
1912
- * Kept as a lookup rather than a naming convention the call sites repeat, because the studio, the
1913
- * API validator and the two fronts all have to agree on it, and a typo in any of the four would
1914
- * produce an override that validates and does nothing.
1915
- */
1916
1612
  export function mvtAnchorsSlot(scope: MvtScope): string {
1917
1613
  return scope === '_Checkout_' ? 'checkout.anchors' : 'storefront.anchors';
1918
1614
  }
1919
1615
 
1920
- /**
1921
- * Fold a stack of anchor patches into one.
1922
- *
1923
- * Later patches win field by field rather than wholesale: two overrides touching the same element,
1924
- * one hiding it and one rewording it, both have to survive, or the operator has to remember which
1925
- * of their own edits cancelled which.
1926
- */
1927
1616
  export function mvtMergeAnchorPatch(base: MvtAnchorPatch | undefined, next: MvtAnchorPatch | undefined): MvtAnchorPatch {
1928
1617
  if (!base) return next ?? {};
1929
1618
  if (!next) return base;
@@ -1936,13 +1625,6 @@ export function mvtMergeAnchorPatch(base: MvtAnchorPatch | undefined, next: MvtA
1936
1625
  };
1937
1626
  }
1938
1627
 
1939
- /**
1940
- * The inline style an anchor patch asks for, as a plain property bag.
1941
- *
1942
- * Only the closed set the patch schema allows can come out of here, which is the point: a front
1943
- * applying this is not evaluating anything an operator wrote, it is reading a handful of numbers
1944
- * and colours that have already been validated twice.
1945
- */
1946
1628
  export function mvtAnchorStyle(patch: MvtAnchorPatch | null | undefined): Record<string, string> {
1947
1629
  const style = patch?.style;
1948
1630
 
@@ -1963,188 +1645,68 @@ export function mvtAnchorStyle(patch: MvtAnchorPatch | null | undefined): Record
1963
1645
  return out;
1964
1646
  }
1965
1647
 
1966
- // -----------------------------------------------------------------------------
1967
- // Studio bridge
1968
- // -----------------------------------------------------------------------------
1969
-
1970
- /**
1971
- * The message vocabulary between the Tools studio and the front rendered inside its frame.
1972
- *
1973
- * A separate protocol rather than a preview link with more query parameters, because the studio
1974
- * has to do two things a link cannot: read back what is actually on the page - the anchors, their
1975
- * labels, their nesting - and apply an edit without a reload, so that changing a colour is a
1976
- * colour changing rather than a page blinking.
1977
- *
1978
- * Every message carries the protocol version. A front and a Tools release drift apart eventually,
1979
- * and a version mismatch has to degrade to a plain preview rather than to an editor whose clicks
1980
- * quietly do nothing.
1981
- */
1982
1648
  export const MVT_STUDIO_PROTOCOL = 4;
1983
1649
 
1984
1650
  export type MvtStudioAnchorRole = 'section' | 'cta' | 'text' | 'image' | 'block';
1985
1651
 
1986
1652
  export interface MvtStudioAnchor {
1987
- /** Stable identifier written into the markup by the front, never derived from the DOM position. */
1988
1653
  id: string;
1989
1654
  label: string;
1990
1655
  role: MvtStudioAnchorRole;
1991
- /** The anchor this one sits inside, for the studio's tree. Null at the top level. */
1992
1656
  parentId: string | null;
1993
1657
  order: number;
1994
- /** What the untouched page shows today, so the editor opens on the real copy rather than an empty field. */
1995
1658
  text: string | null;
1996
1659
  movable: boolean;
1997
1660
  hideable: boolean;
1998
- /**
1999
- * True for an element the page keeps hidden until a patch says `hidden: false`.
2000
- *
2001
- * Some elements only exist to be switched on by a test, a recommendation tag for instance.
2002
- * Absent means false, so an older front keeps its current meaning.
2003
- */
2004
1661
  hiddenByDefault?: boolean;
2005
- /**
2006
- * Slot keys this element governs, beyond its own patch.
2007
- *
2008
- * Declared by the front on the element people would naturally click for the change: the
2009
- * checkout breadcrumb carries the step order and hidden steps, the flash banner carries its
2010
- * placement. The studio and the in-page menu build their controls from the slot registry, so
2011
- * a structural change is a right click on the thing itself rather than a form beside it.
2012
- */
2013
1662
  slots: string[];
2014
- /**
2015
- * Opaque identity of the container the element can be reordered inside.
2016
- *
2017
- * Two anchors sharing a group share a DOM parent whose layout honours the order property.
2018
- * The studio's own move arrows used to group by the nearest anchored ancestor, which is a
2019
- * different relation: a hero's title and its visual share an ancestor but live in different
2020
- * containers, and swapping their ranks would have moved nothing.
2021
- */
2022
1663
  group: string;
2023
- /** The style the element renders with today, so the inspector opens on the truth. */
2024
1664
  style: MvtAnchorStyleSnapshot;
2025
1665
  rect: { top: number; left: number; width: number; height: number };
2026
1666
  }
2027
1667
 
2028
- /**
2029
- * Somewhere the studio can go next.
2030
- *
2031
- * The editor used to reach other pages through a free-text path field, which asked an operator to
2032
- * already know the route they wanted and silently rendered a 404 inside the frame when they were
2033
- * one character out. The front knows its own routes, so it says what they are.
2034
- *
2035
- * `kind` separates what the page happens to link to from what the front declares it can reach.
2036
- * A storefront only has links; the checkout has steps that exist whether or not the current page
2037
- * links to them, and an operator editing the payment step should not have to walk the funnel to
2038
- * get there.
2039
- */
2040
1668
  export interface MvtStudioLink {
2041
1669
  path: string;
2042
1670
  label: string;
2043
1671
  kind: 'link' | 'step';
2044
- /** Steps the cart has not unlocked yet are offered but marked, rather than hidden. */
2045
1672
  reachable: boolean;
2046
1673
  }
2047
1674
 
2048
- /**
2049
- * The simulated basket the checkout studio runs on.
2050
- *
2051
- * Editing the funnel means being inside it, and being inside it means holding a cart. Minting one
2052
- * by hand through the real onboarding flow every time is what made the checkout scope effectively
2053
- * uneditable.
2054
- */
2055
1675
  export interface MvtStudioCart {
2056
1676
  reference: string;
2057
1677
  secret: string;
2058
- /** Where the simulated cart currently sits, so the studio can offer the steps behind it. */
2059
1678
  step: string;
2060
1679
  simulated: true;
2061
- /**
2062
- * The checkout the basket was minted for. Null is the plain checkout.
2063
- *
2064
- * Carried so the studio can tell a basket minted for one partner from one minted for
2065
- * another and never hand a partner funnel a basket that does not belong to it.
2066
- */
2067
1680
  partnerId?: string | null;
2068
1681
  }
2069
1682
 
2070
- /**
2071
- * One popup the page can open on demand.
2072
- *
2073
- * Popups exist behind timers, scroll depths and frequency caps by design, which makes them
2074
- * invisible to an operator who opened the studio thirty seconds ago. The front declares the ones
2075
- * it has, and the studio - or the in-frame overlay - opens them directly, so editing a popup does
2076
- * not start with waiting for it.
2077
- */
2078
1683
  export interface MvtStudioPopup {
2079
1684
  id: string;
2080
1685
  label: string;
2081
1686
  }
2082
1687
 
2083
- /** Tools to front. */
2084
1688
  export type MvtStudioRequest =
2085
1689
  | { protocol: number; type: 'studio:hello' }
2086
1690
  | { protocol: number; type: 'studio:scan' }
2087
1691
  | { protocol: number; type: 'studio:select'; anchorId: string | null }
2088
- /** Open one declared popup by identifier, or close whichever is open with null. */
2089
1692
  | { protocol: number; type: 'studio:popup'; popup: string | null }
2090
- /**
2091
- * The full authoring state of the variant on screen: the anchor patch set plus every
2092
- * non-anchor override it carries. The frame renders exactly this, so a structural edit - a
2093
- * reordered funnel, a moved banner - shows up live the same way a reworded title does.
2094
- */
2095
1693
  | { protocol: number; type: 'studio:apply'; anchors: Record<string, MvtAnchorPatch>; overrides: MvtOverride[]; lang: string }
2096
1694
  | { protocol: number; type: 'studio:mode'; picking: boolean }
2097
1695
  | { protocol: number; type: 'studio:navigate'; path: string }
2098
1696
  | { protocol: number; type: 'studio:links' }
2099
1697
  | { protocol: number; type: 'studio:cart'; cart: MvtStudioCart };
2100
1698
 
2101
- /** Front to Tools. */
2102
1699
  export type MvtStudioEvent =
2103
- /**
2104
- * `partner` is the checkout the frame is actually running as, read from its own URL. Null is
2105
- * the plain checkout; absent means an older front that does not say. The studio compares it
2106
- * with the target it meant to open and refuses to write into a frame showing another one.
2107
- */
2108
1700
  | { protocol: number; type: 'studio:ready'; scope: MvtScope; path: string; langs: string[]; lang: string; partner?: string | null }
2109
1701
  | { protocol: number; type: 'studio:anchors'; anchors: MvtStudioAnchor[]; path: string }
2110
1702
  | { protocol: number; type: 'studio:picked'; anchor: MvtStudioAnchor }
2111
1703
  | { protocol: number; type: 'studio:navigated'; path: string }
2112
1704
  | { protocol: number; type: 'studio:links'; links: MvtStudioLink[]; path: string }
2113
1705
  | { protocol: number; type: 'studio:cart'; cart: MvtStudioCart | null }
2114
- /** The popups this page can open on demand, re-announced whenever the set changes. */
2115
1706
  | { protocol: number; type: 'studio:popups'; popups: MvtStudioPopup[] }
2116
- /**
2117
- * An edit made on the page itself rather than in the inspector.
2118
- *
2119
- * Reported as a patch fragment rather than as a whole patch, so the studio merges it into
2120
- * whatever that anchor already carries instead of replacing it: dragging a section must not
2121
- * discard the colour somebody set on it a minute earlier.
2122
- *
2123
- * The page never writes to the saved variant. It says what changed and the studio decides -
2124
- * which keeps undo, the dirty marker and the save button in one place, and means a front that
2125
- * gets this wrong can produce a bad edit but never a bad save.
2126
- */
2127
1707
  | { protocol: number; type: 'studio:edited'; anchorId: string; patch: Partial<MvtAnchorPatch>; replace?: boolean }
2128
- /**
2129
- * A structural edit made through the in-page menu: a slot value rather than an anchor patch.
2130
- *
2131
- * Same contract as `studio:edited`: the page proposes, the studio disposes. The value is
2132
- * validated by Tools against the slot registry before it ever lands in the variant, so a
2133
- * bridge bug can produce a wrong preview but never a wrong save.
2134
- */
2135
1708
  | { protocol: number; type: 'studio:slot'; slot: string; op: 'set' | 'merge'; value: unknown };
2136
1709
 
2137
- /**
2138
- * Strip a deployment base path from a document pathname, yielding the router-space path.
2139
- *
2140
- * A front served under a sub-path (the checkout lives at `/checkout/` on the shared staging host)
2141
- * sees `window.location.pathname` carry that prefix, while its router - and the studio driving it -
2142
- * both reason in base-relative paths. Every path crossing the studio bridge goes through this, so
2143
- * the two sides always speak the same path space whatever the deployment layout is.
2144
- *
2145
- * The base is matched as a whole segment: `/checkout` strips `/checkout/cart` down to `/cart` and
2146
- * leaves `/checkout-help` alone, because that is a different route and not a prefixed one.
2147
- */
2148
1710
  export function mvtStripBasePath(pathname: string, basePath: string): string {
2149
1711
  const base = (basePath ?? '').replace(/\/+$/, '');
2150
1712
 
@@ -2155,12 +1717,6 @@ export function mvtStripBasePath(pathname: string, basePath: string): string {
2155
1717
  return pathname || '/';
2156
1718
  }
2157
1719
 
2158
- /**
2159
- * The base path the document is served under, read from the base element the framework injected.
2160
- *
2161
- * Read from the DOM rather than configured, so the same build works at the domain root and under
2162
- * a sub-path without anyone remembering to keep a constant in step with the deployment.
2163
- */
2164
1720
  export function mvtBasePathOf(doc: Document): string {
2165
1721
  try {
2166
1722
  return new URL(doc.baseURI).pathname.replace(/\/+$/, '') || '/';
@@ -2169,21 +1725,6 @@ export function mvtBasePathOf(doc: Document): string {
2169
1725
  }
2170
1726
  }
2171
1727
 
2172
- /**
2173
- * Collect the navigable links of the page the front is currently showing.
2174
- *
2175
- * Shared rather than written twice, because the filtering is where this gets subtle and getting it
2176
- * wrong in one front and not the other produces a link list that behaves differently depending on
2177
- * which scope is being edited.
2178
- *
2179
- * Only same-origin, non-anchor, non-download links survive. An external link would navigate the
2180
- * frame off the front entirely, taking the preview token with it and leaving the studio talking to
2181
- * a page that has never heard of it; an in-page anchor is not a destination.
2182
- *
2183
- * `basePath` is the deployment prefix of the front, when it has one. Collected hrefs carry it -
2184
- * the browser resolves them against the base element - while the studio and the router reason in
2185
- * base-relative paths, so it is stripped here rather than by every caller.
2186
- */
2187
1728
  export function mvtCollectLinks(root: ParentNode, origin: string, basePath = ''): MvtStudioLink[] {
2188
1729
  const seen = new Set<string>();
2189
1730
  const links: MvtStudioLink[] = [];
@@ -2210,9 +1751,6 @@ export function mvtCollectLinks(root: ParentNode, origin: string, basePath = '')
2210
1751
 
2211
1752
  seen.add(path);
2212
1753
 
2213
- // The visible text, collapsed. An operator picks a destination by the words they can see
2214
- // on the page, not by its route, and a label carrying the whitespace of a three-line
2215
- // menu entry is unreadable in a dropdown.
2216
1754
  const label = (anchor.textContent ?? '').replace(/\s+/g, ' ').trim();
2217
1755
 
2218
1756
  links.push({ path, label: label || path, kind: 'link', reachable: true });