@lifeaz/lors-helper 1.1.12 → 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.12** Lifeaz Online Retail Solution Helper
2
+ **1.1.13** Lifeaz Online Retail Solution Helper
3
3
 
4
4
  ---
5
5
 
@@ -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/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.13",
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.13-b50",
55
+ "code": "101130050"
56
56
  }
57
57
  }
58
58
  }
package/src/main.ts CHANGED
@@ -638,13 +638,6 @@ export type Campaign = z.infer<typeof CampaignSchema>;
638
638
 
639
639
  export type DeliveryMethodId = '_Standard_' | '_Express_';
640
640
 
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
641
  export const DEFAULT_COMMITMENT_MONTHS = 12;
649
642
 
650
643
  export const PartnerNoticeSchema = z.object({
@@ -664,23 +657,8 @@ export const PartnerSchema = z.object({
664
657
  logoUrl: z.string().nullable(),
665
658
  promoCodesEnabled: z.boolean(),
666
659
  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
660
  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
661
  blockedProfiles: z.array(z.string()).default([]),
683
- /** Length of the rental commitment sold through this partner, in months. */
684
662
  commitmentMonths: z.number().int().positive().max(120).default(DEFAULT_COMMITMENT_MONTHS),
685
663
  hideOffersStep: z.boolean(),
686
664
  defaultOfferType: OfferTypeSchema.nullable(),
@@ -692,10 +670,6 @@ export const PartnerSchema = z.object({
692
670
  });
693
671
  export type Partner = z.infer<typeof PartnerSchema>;
694
672
 
695
- // =============================================================================
696
- // MVT - Multivariate testing
697
- // =============================================================================
698
-
699
673
  export type MvtStatus = '_Draft_' | '_Scheduled_' | '_Running_' | '_Paused_' | '_Stopped_' | '_Archived_';
700
674
  export const MvtStatusSchema = z.union([z.literal('_Draft_'), z.literal('_Scheduled_'), z.literal('_Running_'), z.literal('_Paused_'), z.literal('_Stopped_'), z.literal('_Archived_')]);
701
675
 
@@ -766,11 +740,6 @@ export const MvtOperatorSchema = z.union([
766
740
  z.literal('_Date_Between_'),
767
741
  ]);
768
742
 
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
743
  export const MVT_NULLARY_OPERATORS: readonly MvtOperator[] = [
775
744
  '_Partner_Absent_',
776
745
  '_Visitor_Is_New_',
@@ -814,62 +783,34 @@ export const MvtVariantSchema = z.object({
814
783
  weight: z.number().int().nonnegative(),
815
784
  control: z.boolean(),
816
785
  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
786
  audience: MvtAudienceNodeSchema.nullable().default(null),
822
- /** Evaluation order of the targeted variants. The first match wins, so this is the tie-break. */
823
787
  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
788
  color: z.string().nullable().default(null),
826
789
  description: z.string().nullable().default(null),
827
790
  });
828
791
  export type MvtVariant = z.infer<typeof MvtVariantSchema>;
829
792
 
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
793
  export const MvtVariantVersionSchema = z.object({
840
794
  partnerId: z.string().nullable(),
841
795
  overrides: z.array(MvtOverrideSchema),
842
796
  });
843
797
  export type MvtVariantVersion = z.infer<typeof MvtVariantVersionSchema>;
844
798
 
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
799
  export const MvtCheckoutTargetSchema = z.object({
854
- /** Null for the plain checkout. */
855
800
  partnerId: z.string().nullable(),
856
801
  slug: z.string().nullable(),
857
802
  name: z.string(),
858
- /** The referential funnel, in referential order. Always the six steps. */
859
803
  steps: z.array(CartStepSchema),
860
- /** Steps this checkout never shows, whatever a variant says. */
861
804
  hiddenSteps: z.array(CartStepSchema),
862
805
  availableOfferItemIds: z.array(z.string()),
863
806
  availableOptionItemIds: z.array(z.string()),
864
807
  blockedPaymentMethods: z.array(z.string()),
865
808
  blockedDeliveryMethods: z.array(z.string()),
866
809
  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
810
  defaultOfferType: OfferTypeSchema.nullable().default(null),
869
811
  });
870
812
  export type MvtCheckoutTarget = z.infer<typeof MvtCheckoutTargetSchema>;
871
813
 
872
- /** The plain checkout as a target: everything the referential funnel offers, nothing removed. */
873
814
  export function mvtPlainCheckoutTarget(offerItemIds: string[] = [], optionItemIds: string[] = [], profiles: string[] = []): MvtCheckoutTarget {
874
815
  return {
875
816
  partnerId: null,
@@ -886,20 +827,12 @@ export function mvtPlainCheckoutTarget(offerItemIds: string[] = [], optionItemId
886
827
  };
887
828
  }
888
829
 
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
830
  export type MvtAllocationMode = '_Targeted_' | '_Weighted_' | '_Unreachable_';
897
831
 
898
832
  export interface MvtAllocationRow {
899
833
  key: string;
900
834
  mode: MvtAllocationMode;
901
835
  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
836
  sharePct: number;
904
837
  }
905
838
 
@@ -930,13 +863,6 @@ export const MvtConfigSchema = z.object({
930
863
  });
931
864
  export type MvtConfig = z.infer<typeof MvtConfigSchema>;
932
865
 
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
866
  export interface MvtContext {
941
867
  unitId: string;
942
868
  device: MvtDevice;
@@ -951,22 +877,12 @@ export interface MvtContext {
951
877
  hasCart: boolean;
952
878
  firstSeenAt: number;
953
879
  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
880
  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
881
  screenWidth: number;
958
- /** Sessions this unit has opened, this one included. */
959
882
  visits: number;
960
883
  loggedIn: boolean;
961
884
  }
962
885
 
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
886
  export function mvtNormalizeContext(context: Partial<MvtContext> & { unitId: string }): MvtContext {
971
887
  return {
972
888
  device: '_Desktop_',
@@ -998,42 +914,14 @@ export interface MvtDecision {
998
914
  overrides: MvtOverride[];
999
915
  }
1000
916
 
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
917
  export const MVT_CONTROL_VARIANT = 'control';
1015
918
 
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
919
  export function mvtTrackedVariant(decision: Pick<MvtDecision, 'control' | 'variantKey'>): string {
1024
920
  return decision.control ? MVT_CONTROL_VARIANT : decision.variantKey;
1025
921
  }
1026
922
 
1027
923
  const MVT_RETURNING_AFTER_MS = 30 * 60 * 1000;
1028
924
 
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
925
  export function mvtHash(input: string): number {
1038
926
  let hash = 0x811c9dc5;
1039
927
 
@@ -1056,23 +944,11 @@ export function mvtIsEligibleForTraffic(experiment: MvtExperiment, unitId: strin
1056
944
  return mvtBucket(experiment.salt, unitId, 'traffic') < experiment.trafficPct * 100;
1057
945
  }
1058
946
 
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
947
  export function mvtPickVariant(experiment: MvtExperiment, unitId: string, context?: MvtContext): MvtVariant | null {
1068
948
  const targeted = experiment.variants
1069
949
  .filter(variant => !!variant.audience)
1070
950
  .sort((a, b) => (a.order ?? 0) - (b.order ?? 0) || a.key.localeCompare(b.key));
1071
951
 
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
952
  if (context)
1077
953
  for (const variant of targeted)
1078
954
  if (mvtEvaluateAudience(variant.audience ?? null, context)) return variant;
@@ -1080,9 +956,6 @@ export function mvtPickVariant(experiment: MvtExperiment, unitId: string, contex
1080
956
  const pool = experiment.variants.filter(variant => !variant.audience).sort((a, b) => a.key.localeCompare(b.key));
1081
957
  const total = pool.reduce((sum, v) => sum + Math.max(v.weight, 0), 0);
1082
958
 
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
959
  if (!pool.length || total <= 0) return null;
1087
960
 
1088
961
  const target = (mvtBucket(experiment.salt, unitId) / 10000) * total;
@@ -1097,13 +970,6 @@ export function mvtPickVariant(experiment: MvtExperiment, unitId: string, contex
1097
970
  return pool[pool.length - 1];
1098
971
  }
1099
972
 
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
973
  export function mvtDistribution(variants: readonly MvtVariant[]): MvtAllocationRow[] {
1108
974
  const pool = variants.filter(variant => !variant.audience);
1109
975
  const total = pool.reduce((sum, v) => sum + Math.max(v.weight, 0), 0);
@@ -1171,9 +1037,6 @@ function mvtEvaluateLeaf(operator: MvtOperator, values: string[], context: MvtCo
1171
1037
  case '_Is_Weekend_': return [0, 6].includes(new Date(context.now).getDay());
1172
1038
  case '_Visits_At_Least_': return context.visits >= Number(values[0] ?? 1);
1173
1039
 
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
1040
  case '_Query_Param_Matches_': {
1178
1041
  return values.some(raw => {
1179
1042
  const separator = raw.indexOf('=');
@@ -1188,10 +1051,6 @@ function mvtEvaluateLeaf(operator: MvtOperator, values: string[], context: MvtCo
1188
1051
  });
1189
1052
  }
1190
1053
 
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
1054
  case '_Screen_Width_Between_': {
1196
1055
  const from = values[0] ? Number(values[0]) : 0;
1197
1056
  const to = values[1] ? Number(values[1]) : Number.MAX_SAFE_INTEGER;
@@ -1201,9 +1060,6 @@ function mvtEvaluateLeaf(operator: MvtOperator, values: string[], context: MvtCo
1201
1060
  return context.screenWidth >= from && context.screenWidth <= to;
1202
1061
  }
1203
1062
 
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
1063
  case '_Date_Between_': {
1208
1064
  const from = values[0] ? Date.parse(values[0]) : Number.NEGATIVE_INFINITY;
1209
1065
  const to = values[1] ? Date.parse(values[1]) : Number.POSITIVE_INFINITY;
@@ -1217,14 +1073,6 @@ function mvtEvaluateLeaf(operator: MvtOperator, values: string[], context: MvtCo
1217
1073
  }
1218
1074
  }
1219
1075
 
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
1076
  export function mvtEvaluateAudience(node: MvtAudienceNode | null, context: MvtContext): boolean {
1229
1077
  if (!node) return true;
1230
1078
 
@@ -1248,14 +1096,6 @@ export function mvtIsLive(experiment: MvtExperiment, now: number): boolean {
1248
1096
  return experiment.status === '_Running_' && mvtIsWithinWindow(experiment, now);
1249
1097
  }
1250
1098
 
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
1099
  export function mvtResolve(config: MvtConfig, context: MvtContext, forced: Record<string, string> = {}): MvtDecision[] {
1260
1100
  if (!config.enabled) return [];
1261
1101
 
@@ -1301,20 +1141,8 @@ function mvtToDecision(experiment: MvtExperiment, variant: MvtVariant): MvtDecis
1301
1141
  };
1302
1142
  }
1303
1143
 
1304
- // -----------------------------------------------------------------------------
1305
- // Slot registry
1306
- // -----------------------------------------------------------------------------
1307
-
1308
1144
  export type MvtSlotKind = 'boolean' | 'number' | 'duration' | 'text' | 'i18n' | 'color' | 'image' | 'enum' | 'list' | 'object' | 'record';
1309
1145
 
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
1146
  export interface MvtSlotField {
1319
1147
  key: string;
1320
1148
  label: string;
@@ -1327,50 +1155,19 @@ export interface MvtSlotDefinition {
1327
1155
  scope: MvtScope;
1328
1156
  area: string;
1329
1157
  label: string;
1330
- /** One short sentence an operator reads before deciding whether this is the slot they want. */
1331
1158
  hint: string;
1332
1159
  kind: MvtSlotKind;
1333
1160
  ops: readonly MvtOverrideOp[];
1334
- /** Allowed values for an `enum`, or the closed set of entries for a constrained `list`. */
1335
1161
  options?: readonly string[];
1336
- /** The named fields of an `object`, or the per-item fields of a list of objects. */
1337
1162
  fields?: readonly MvtSlotField[];
1338
- /** The kind every value takes in a `record`, whose keys are open-ended. */
1339
1163
  entryKind?: MvtSlotKind;
1340
- /** Which property identifies an item, for the `remove`, `patch` and `reorder` operations. */
1341
1164
  itemKey?: string;
1342
1165
  schema: z.ZodType<unknown>;
1343
1166
  }
1344
1167
 
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
1168
  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
1169
  const colorSchema = z.string().regex(/^(#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})|transparent)$/i);
1363
1170
 
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
1171
  const SAFE_HREF_PATTERN = /^(https?:\/\/|\/(?!\/)|#|\?)/i;
1375
1172
  const SAFE_IMAGE_PATTERN = /^(https?:\/\/|\/(?!\/)|assets\/)/i;
1376
1173
 
@@ -1386,21 +1183,8 @@ const safeHrefSchema = z.string().max(2048).refine(mvtIsSafeHref, { message: 'hr
1386
1183
  const safeImageSchema = z.string().max(2048).refine(mvtIsSafeImage, { message: 'image must be http(s) or a same-site relative path' });
1387
1184
  const safeRouteSchema = z.string().max(512).refine(value => value.startsWith('/') && !value.startsWith('//'), { message: 'route must be an absolute in-app path' });
1388
1185
 
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
1186
  export const MvtAnchorPatchSchema = z.object({
1402
1187
  hidden: z.boolean().optional(),
1403
- /** Position among its siblings. Lower comes first; anchors without one keep their place. */
1404
1188
  order: z.number().int().min(-999).max(999).optional(),
1405
1189
  text: i18nTextSchema.optional(),
1406
1190
  href: safeHrefSchema.optional(),
@@ -1435,19 +1219,6 @@ function slot(definition: MvtSlotDefinition): MvtSlotDefinition {
1435
1219
  return definition;
1436
1220
  }
1437
1221
 
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
1222
  export const MVT_SLOTS: readonly MvtSlotDefinition[] = [
1452
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()) }),
1453
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()) }),
@@ -1604,13 +1375,6 @@ export interface MvtOverrideIssue {
1604
1375
  reason: string;
1605
1376
  }
1606
1377
 
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
1378
  export function mvtValidateOverrides(overrides: MvtOverride[]): MvtOverrideIssue[] {
1615
1379
  const issues: MvtOverrideIssue[] = [];
1616
1380
 
@@ -1638,10 +1402,6 @@ export function mvtValidateOverrides(overrides: MvtOverride[]): MvtOverrideIssue
1638
1402
  return;
1639
1403
  }
1640
1404
 
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
1405
  if (definition.kind === 'record' && !definition.schema.safeParse(override.value).success)
1646
1406
  issues.push({ index, slot: override.slot, reason: 'invalid_value' });
1647
1407
 
@@ -1655,51 +1415,18 @@ export function mvtValidateOverrides(overrides: MvtOverride[]): MvtOverrideIssue
1655
1415
  return issues;
1656
1416
  }
1657
1417
 
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
1418
  export const MVT_UNHIDEABLE_STEPS: readonly CartStep[] = ['_Profile_', '_Information_', '_Delivery_', '_Payment_'];
1668
1419
 
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
1420
  export const MVT_HIDEABLE_STEPS: readonly CartStep[] = ['_Offers_', '_Options_'];
1678
1421
 
1679
- /** Whether a preselection entry names an item identifier rather than a SKU. */
1680
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}$/;
1681
1423
 
1682
- /**
1683
- * The default offer a set of overrides names, if any.
1684
- */
1685
1424
  export function mvtDefaultOfferOf(overrides: readonly MvtOverride[]): string | null {
1686
1425
  const override = overrides.find(entry => entry.slot === 'checkout.offers.default' && entry.op === 'set');
1687
1426
 
1688
1427
  return typeof override?.value === 'string' ? override.value : null;
1689
1428
  }
1690
1429
 
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
1430
  export function mvtValidateOverridesForTarget(overrides: MvtOverride[], target: MvtCheckoutTarget): MvtOverrideIssue[] {
1704
1431
  const issues: MvtOverrideIssue[] = [];
1705
1432
  const hidden = new Set<string>(target.hiddenSteps);
@@ -1736,9 +1463,6 @@ export function mvtValidateOverridesForTarget(overrides: MvtOverride[], target:
1736
1463
  issues.push({ index, slot: override.slot, reason: 'option_absent_on_target' });
1737
1464
  }
1738
1465
 
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
1466
  if (override.slot === 'checkout.warranty.preselected' && typeof override.value === 'string' && options.size) {
1743
1467
  if (override.value !== '_None_' && UUID_LIKE.test(override.value) && !options.has(override.value))
1744
1468
  issues.push({ index, slot: override.slot, reason: 'option_absent_on_target' });
@@ -1753,13 +1477,6 @@ export function mvtValidateOverridesForTarget(overrides: MvtOverride[], target:
1753
1477
  return issues;
1754
1478
  }
1755
1479
 
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
1480
  export function mvtApplyOverride<T>(base: T, override: MvtOverride): T {
1764
1481
  const value = override.value;
1765
1482
 
@@ -1827,28 +1544,14 @@ export function mvtApplyOverride<T>(base: T, override: MvtOverride): T {
1827
1544
  }
1828
1545
  }
1829
1546
 
1830
- // -----------------------------------------------------------------------------
1831
- // Anchors
1832
- // -----------------------------------------------------------------------------
1833
-
1834
1547
  export const MVT_ANCHOR_ATTRIBUTE = 'data-mvt-anchor';
1835
1548
 
1836
- /** The tags a text block may contain and still be edited wholesale: pure inline formatting. */
1837
1549
  const MVT_INLINE_TEXT_TAGS = new Set(['BR', 'B', 'STRONG', 'EM', 'I', 'U', 'SPAN', 'SMALL', 'SUP', 'SUB', 'MARK']);
1838
1550
 
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
1551
  export function mvtHoldsOnlyText(node: HTMLElement): boolean {
1848
1552
  return Array.from(node.querySelectorAll('*')).every(child => MVT_INLINE_TEXT_TAGS.has(child.tagName));
1849
1553
  }
1850
1554
 
1851
- /** What the style inspector edits, read from the page rather than assumed. */
1852
1555
  export interface MvtAnchorStyleSnapshot {
1853
1556
  background: string | null;
1854
1557
  color: string | null;
@@ -1869,14 +1572,6 @@ function mvtColorToHex(value: string): string | null {
1869
1572
  return `#${hex(match[1])}${hex(match[2])}${hex(match[3])}`;
1870
1573
  }
1871
1574
 
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
1575
  export function mvtSnapshotAnchorStyle(node: HTMLElement): MvtAnchorStyleSnapshot {
1881
1576
  const computed = window.getComputedStyle(node);
1882
1577
 
@@ -1906,24 +1601,10 @@ export function mvtSnapshotAnchorStyle(node: HTMLElement): MvtAnchorStyleSnapsho
1906
1601
  };
1907
1602
  }
1908
1603
 
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
1604
  export function mvtAnchorsSlot(scope: MvtScope): string {
1917
1605
  return scope === '_Checkout_' ? 'checkout.anchors' : 'storefront.anchors';
1918
1606
  }
1919
1607
 
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
1608
  export function mvtMergeAnchorPatch(base: MvtAnchorPatch | undefined, next: MvtAnchorPatch | undefined): MvtAnchorPatch {
1928
1609
  if (!base) return next ?? {};
1929
1610
  if (!next) return base;
@@ -1936,13 +1617,6 @@ export function mvtMergeAnchorPatch(base: MvtAnchorPatch | undefined, next: MvtA
1936
1617
  };
1937
1618
  }
1938
1619
 
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
1620
  export function mvtAnchorStyle(patch: MvtAnchorPatch | null | undefined): Record<string, string> {
1947
1621
  const style = patch?.style;
1948
1622
 
@@ -1963,188 +1637,68 @@ export function mvtAnchorStyle(patch: MvtAnchorPatch | null | undefined): Record
1963
1637
  return out;
1964
1638
  }
1965
1639
 
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
1640
  export const MVT_STUDIO_PROTOCOL = 4;
1983
1641
 
1984
1642
  export type MvtStudioAnchorRole = 'section' | 'cta' | 'text' | 'image' | 'block';
1985
1643
 
1986
1644
  export interface MvtStudioAnchor {
1987
- /** Stable identifier written into the markup by the front, never derived from the DOM position. */
1988
1645
  id: string;
1989
1646
  label: string;
1990
1647
  role: MvtStudioAnchorRole;
1991
- /** The anchor this one sits inside, for the studio's tree. Null at the top level. */
1992
1648
  parentId: string | null;
1993
1649
  order: number;
1994
- /** What the untouched page shows today, so the editor opens on the real copy rather than an empty field. */
1995
1650
  text: string | null;
1996
1651
  movable: boolean;
1997
1652
  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
1653
  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
1654
  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
1655
  group: string;
2023
- /** The style the element renders with today, so the inspector opens on the truth. */
2024
1656
  style: MvtAnchorStyleSnapshot;
2025
1657
  rect: { top: number; left: number; width: number; height: number };
2026
1658
  }
2027
1659
 
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
1660
  export interface MvtStudioLink {
2041
1661
  path: string;
2042
1662
  label: string;
2043
1663
  kind: 'link' | 'step';
2044
- /** Steps the cart has not unlocked yet are offered but marked, rather than hidden. */
2045
1664
  reachable: boolean;
2046
1665
  }
2047
1666
 
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
1667
  export interface MvtStudioCart {
2056
1668
  reference: string;
2057
1669
  secret: string;
2058
- /** Where the simulated cart currently sits, so the studio can offer the steps behind it. */
2059
1670
  step: string;
2060
1671
  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
1672
  partnerId?: string | null;
2068
1673
  }
2069
1674
 
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
1675
  export interface MvtStudioPopup {
2079
1676
  id: string;
2080
1677
  label: string;
2081
1678
  }
2082
1679
 
2083
- /** Tools to front. */
2084
1680
  export type MvtStudioRequest =
2085
1681
  | { protocol: number; type: 'studio:hello' }
2086
1682
  | { protocol: number; type: 'studio:scan' }
2087
1683
  | { protocol: number; type: 'studio:select'; anchorId: string | null }
2088
- /** Open one declared popup by identifier, or close whichever is open with null. */
2089
1684
  | { 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
1685
  | { protocol: number; type: 'studio:apply'; anchors: Record<string, MvtAnchorPatch>; overrides: MvtOverride[]; lang: string }
2096
1686
  | { protocol: number; type: 'studio:mode'; picking: boolean }
2097
1687
  | { protocol: number; type: 'studio:navigate'; path: string }
2098
1688
  | { protocol: number; type: 'studio:links' }
2099
1689
  | { protocol: number; type: 'studio:cart'; cart: MvtStudioCart };
2100
1690
 
2101
- /** Front to Tools. */
2102
1691
  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
1692
  | { protocol: number; type: 'studio:ready'; scope: MvtScope; path: string; langs: string[]; lang: string; partner?: string | null }
2109
1693
  | { protocol: number; type: 'studio:anchors'; anchors: MvtStudioAnchor[]; path: string }
2110
1694
  | { protocol: number; type: 'studio:picked'; anchor: MvtStudioAnchor }
2111
1695
  | { protocol: number; type: 'studio:navigated'; path: string }
2112
1696
  | { protocol: number; type: 'studio:links'; links: MvtStudioLink[]; path: string }
2113
1697
  | { protocol: number; type: 'studio:cart'; cart: MvtStudioCart | null }
2114
- /** The popups this page can open on demand, re-announced whenever the set changes. */
2115
1698
  | { 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
1699
  | { 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
1700
  | { protocol: number; type: 'studio:slot'; slot: string; op: 'set' | 'merge'; value: unknown };
2136
1701
 
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
1702
  export function mvtStripBasePath(pathname: string, basePath: string): string {
2149
1703
  const base = (basePath ?? '').replace(/\/+$/, '');
2150
1704
 
@@ -2155,12 +1709,6 @@ export function mvtStripBasePath(pathname: string, basePath: string): string {
2155
1709
  return pathname || '/';
2156
1710
  }
2157
1711
 
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
1712
  export function mvtBasePathOf(doc: Document): string {
2165
1713
  try {
2166
1714
  return new URL(doc.baseURI).pathname.replace(/\/+$/, '') || '/';
@@ -2169,21 +1717,6 @@ export function mvtBasePathOf(doc: Document): string {
2169
1717
  }
2170
1718
  }
2171
1719
 
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
1720
  export function mvtCollectLinks(root: ParentNode, origin: string, basePath = ''): MvtStudioLink[] {
2188
1721
  const seen = new Set<string>();
2189
1722
  const links: MvtStudioLink[] = [];
@@ -2210,9 +1743,6 @@ export function mvtCollectLinks(root: ParentNode, origin: string, basePath = '')
2210
1743
 
2211
1744
  seen.add(path);
2212
1745
 
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
1746
  const label = (anchor.textContent ?? '').replace(/\s+/g, ' ').trim();
2217
1747
 
2218
1748
  links.push({ path, label: label || path, kind: 'link', reachable: true });