@wix/himalaya-cli 0.1495.0 → 0.1497.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/iap/src/attendance-classifier.d.ts +37 -0
  2. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/iap/src/catalog-pricing-contract.d.ts +1 -1
  3. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/iap/src/index.d.ts +2 -1
  4. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/iap/src/wix-payments-contract.d.ts +11 -3
  5. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/iap-checkout/src/apple-iap-contract.d.ts +27 -3
  6. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/iap-checkout/src/commerce-contract.d.ts +1 -0
  7. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/iap-checkout/src/iap-verticals/attendance.d.ts +10 -0
  8. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/iap-checkout/src/iap-verticals/index.d.ts +1 -0
  9. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/flows/iap-checkout/src/index.d.ts +1 -1
  10. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/events/src/index.d.ts +33 -2
  11. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/iap-checkout.mjs +346 -26
  12. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/iap.mjs +132 -3
  13. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/screens.mjs +366 -48
  14. package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-events.mjs +5 -0
  15. package/dist/cli.mjs +816 -667
  16. package/guides/iap-products.md +7 -1
  17. package/guides/sdk-reference.json +376 -27
  18. package/package.json +2 -2
  19. package/templates/beauty-salon/dev/index.ts +394 -0
  20. package/templates/beauty-salon/tier5-src/_shared/iap-attendance-form.ts +106 -0
  21. package/templates/beauty-salon/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  22. package/templates/beauty-salon/tier5-src/_shared/iap-attendance.ts +38 -0
  23. package/templates/beauty-salon/tier5-src/himi-booking-time/index.ts +52 -7
  24. package/templates/branded-lite/dev/index.ts +1073 -284
  25. package/templates/branded-lite/tier5-src/_shared/business-chat-model.ts +35 -4
  26. package/templates/branded-lite/tier5-src/_shared/business-chat-transport.ts +12 -5
  27. package/templates/branded-lite/tier5-src/_shared/iap-attendance-form.ts +106 -0
  28. package/templates/branded-lite/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  29. package/templates/branded-lite/tier5-src/_shared/iap-attendance.ts +38 -0
  30. package/templates/branded-lite/tier5-src/business-chat/index.ts +50 -17
  31. package/templates/branded-lite/tier5-src/himi-booking-time/index.ts +52 -7
  32. package/templates/branded-lite/tier5-src/himi-events-detail/index.ts +112 -21
  33. package/templates/community-club/dev/index.ts +397 -2
  34. package/templates/community-club/tier5-src/_shared/iap-attendance-form.ts +106 -0
  35. package/templates/community-club/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  36. package/templates/community-club/tier5-src/_shared/iap-attendance.ts +38 -0
  37. package/templates/community-club/tier5-src/himi-events-detail/index.ts +112 -21
  38. package/templates/events-meetups/dev/index.ts +397 -2
  39. package/templates/events-meetups/tier5-src/_shared/iap-attendance-form.ts +106 -0
  40. package/templates/events-meetups/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  41. package/templates/events-meetups/tier5-src/_shared/iap-attendance.ts +38 -0
  42. package/templates/events-meetups/tier5-src/himi-events-detail/index.ts +112 -21
  43. package/templates/gym-fitness/dev/index.ts +828 -39
  44. package/templates/gym-fitness/tier5-src/_shared/iap-attendance-form.ts +106 -0
  45. package/templates/gym-fitness/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  46. package/templates/gym-fitness/tier5-src/_shared/iap-attendance.ts +38 -0
  47. package/templates/gym-fitness/tier5-src/himi-booking-time/index.ts +52 -7
  48. package/templates/gym-fitness/tier5-src/himi-events-detail/index.ts +112 -21
  49. package/templates/nonprofit-cause/dev/index.ts +397 -2
  50. package/templates/nonprofit-cause/tier5-src/_shared/iap-attendance-form.ts +106 -0
  51. package/templates/nonprofit-cause/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  52. package/templates/nonprofit-cause/tier5-src/_shared/iap-attendance.ts +38 -0
  53. package/templates/nonprofit-cause/tier5-src/himi-events-detail/index.ts +112 -21
  54. package/templates/podcast-creator/dev/index.ts +397 -2
  55. package/templates/podcast-creator/tier5-src/_shared/iap-attendance-form.ts +106 -0
  56. package/templates/podcast-creator/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  57. package/templates/podcast-creator/tier5-src/_shared/iap-attendance.ts +38 -0
  58. package/templates/podcast-creator/tier5-src/himi-events-detail/index.ts +112 -21
  59. package/templates/portfolio-creative/dev/index.ts +397 -2
  60. package/templates/portfolio-creative/tier5-src/_shared/iap-attendance-form.ts +106 -0
  61. package/templates/portfolio-creative/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  62. package/templates/portfolio-creative/tier5-src/_shared/iap-attendance.ts +38 -0
  63. package/templates/portfolio-creative/tier5-src/himi-events-detail/index.ts +112 -21
  64. package/templates/restaurant/dev/index.ts +397 -2
  65. package/templates/restaurant/tier5-src/_shared/iap-attendance-form.ts +106 -0
  66. package/templates/restaurant/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  67. package/templates/restaurant/tier5-src/_shared/iap-attendance.ts +38 -0
  68. package/templates/restaurant/tier5-src/himi-events-detail/index.ts +112 -21
  69. package/templates/yoga-studio/dev/index.ts +828 -39
  70. package/templates/yoga-studio/tier5-src/_shared/iap-attendance-form.ts +106 -0
  71. package/templates/yoga-studio/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  72. package/templates/yoga-studio/tier5-src/_shared/iap-attendance.ts +38 -0
  73. package/templates/yoga-studio/tier5-src/himi-booking-time/index.ts +52 -7
  74. package/templates/yoga-studio/tier5-src/himi-events-detail/index.ts +112 -21
package/dist/cli.mjs CHANGED
@@ -659,8 +659,8 @@ function mobileUxDocumentBody(mobile) {
659
659
  }
660
660
  return out2 + mobile.slice(last);
661
661
  }
662
- function mobileUxSection(text10, heading) {
663
- const match = new RegExp(`(?:^|\\n)##[ \\t]+${heading}\\b[^\\n]*([\\s\\S]*?)(?=\\n##[ \\t]|$)`, "i").exec(text10);
662
+ function mobileUxSection(text11, heading) {
663
+ const match = new RegExp(`(?:^|\\n)##[ \\t]+${heading}\\b[^\\n]*([\\s\\S]*?)(?=\\n##[ \\t]|$)`, "i").exec(text11);
664
664
  return match ? match[1] : null;
665
665
  }
666
666
  function sectionTables(markdown) {
@@ -689,8 +689,8 @@ function namesOneCta(cell2) {
689
689
  if (!cell2) return false;
690
690
  return !/[,;]|\s\/\s/.test(cell2);
691
691
  }
692
- function declaredStates(text10) {
693
- const contract = section(text10, "Screen contract");
692
+ function declaredStates(text11) {
693
+ const contract = section(text11, "Screen contract");
694
694
  if (!contract) return [];
695
695
  const states = [];
696
696
  for (const bullet of contract.matchAll(/^[ \t]*[-*][ \t]*[^:\n]*\bstates?[ \t]*:[ \t]*(\S.*)$/gim)) {
@@ -700,8 +700,8 @@ function declaredStates(text10) {
700
700
  }
701
701
  return [...new Set(states.map((state) => state.toLowerCase()))];
702
702
  }
703
- function primaryCtaStructureGap(text10) {
704
- const acceptance = section(text10, "Implementation acceptance");
703
+ function primaryCtaStructureGap(text11) {
704
+ const acceptance = section(text11, "Implementation acceptance");
705
705
  if (acceptance === null) return "There is no `## Implementation acceptance` section to read it from.";
706
706
  const tables = sectionTables(acceptance).filter((table) => table.data.length > 0);
707
707
  if (!tables.length) return "Its acceptance table has no rows.";
@@ -714,7 +714,7 @@ function primaryCtaStructureGap(text10) {
714
714
  const data = ctaTables.flatMap(({ table }) => table.data);
715
715
  const flat = (value) => value.toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();
716
716
  const rowText = data.map((row) => flat(row.join(" ")));
717
- const missing2 = declaredStates(text10).filter((state) => !rowText.some((row) => row.includes(flat(state))));
717
+ const missing2 = declaredStates(text11).filter((state) => !rowText.some((row) => row.includes(flat(state))));
718
718
  if (missing2.length) return `The acceptance table has no row for the declared state(s): ${missing2.join(", ")}.`;
719
719
  return null;
720
720
  }
@@ -729,16 +729,16 @@ function hasUnterminatedComment(mobile) {
729
729
  }
730
730
  }
731
731
  function mobileUxMarkerFindings(mobile, renderedWidths = []) {
732
- const text10 = mobileUxDocumentBody(mobile);
732
+ const text11 = mobileUxDocumentBody(mobile);
733
733
  const findings = [];
734
- if (!/^## Implementation acceptance\b/im.test(text10)) {
734
+ if (!/^## Implementation acceptance\b/im.test(text11)) {
735
735
  findings.push({ code: "missing-acceptance-matrix", message: "MOBILE-UX.md must contain the heading `## Implementation acceptance` at the start of a line. Case is not checked, but use this spelling: other tooling addresses the document by it." });
736
736
  }
737
- if (!/^## Evidence\b/im.test(text10)) {
737
+ if (!/^## Evidence\b/im.test(text11)) {
738
738
  findings.push({ code: "missing-evidence-section", message: "MOBILE-UX.md must contain the heading `## Evidence` at the start of a line. Case is not checked, but use this spelling: other tooling addresses the document by it." });
739
739
  }
740
- if (!/one primary CTA per state/i.test(text10)) {
741
- const gap = primaryCtaStructureGap(text10);
740
+ if (!/one primary CTA per state/i.test(text11)) {
741
+ const gap = primaryCtaStructureGap(text11);
742
742
  if (gap) {
743
743
  findings.push({
744
744
  code: "missing-primary-cta-rule",
@@ -746,8 +746,8 @@ function mobileUxMarkerFindings(mobile, renderedWidths = []) {
746
746
  });
747
747
  }
748
748
  }
749
- if (!hasWidthEvidence(text10, renderedWidths)) {
750
- findings.push({ code: "missing-width-evidence", message: widthEvidenceMessage(text10, renderedWidths) });
749
+ if (!hasWidthEvidence(text11, renderedWidths)) {
750
+ findings.push({ code: "missing-width-evidence", message: widthEvidenceMessage(text11, renderedWidths) });
751
751
  }
752
752
  if (findings.length && hasUnterminatedComment(mobile)) {
753
753
  return [{
@@ -757,15 +757,15 @@ function mobileUxMarkerFindings(mobile, renderedWidths = []) {
757
757
  }
758
758
  return findings;
759
759
  }
760
- function widthMentions(text10) {
760
+ function widthMentions(text11) {
761
761
  const mentions = [];
762
- for (const match of text10.matchAll(/\d+/g)) {
762
+ for (const match of text11.matchAll(/\d+/g)) {
763
763
  const value = Number(match[0]);
764
764
  const start = match.index ?? 0;
765
765
  if (!inRange(value)) continue;
766
766
  const end = start + match[0].length;
767
- const after = text10.slice(end, end + EDGE_WINDOW);
768
- const before = text10.slice(Math.max(0, start - EDGE_WINDOW), start);
767
+ const after = text11.slice(end, end + EDGE_WINDOW);
768
+ const before = text11.slice(Math.max(0, start - EDGE_WINDOW), start);
769
769
  if (looksLikeYear(value) && !(UNIT_ATTACHED.test(after) || UNIT_WORD_ATTACHED.test(after))) continue;
770
770
  const spelledAsWidth = UNIT_ATTACHED.test(after) || UNIT_WORD_ATTACHED.test(after) || FILENAME_AFTER.test(after);
771
771
  const vetoed = spelledAsWidth && (ANTI_CUE_BEFORE.test(before) || PAIR_HEIGHT_BEFORE.test(before) || ANTI_CUE_AFTER.test(after));
@@ -3463,8 +3463,8 @@ var init_catalog_cache = __esm({
3463
3463
  let prior;
3464
3464
  if (existsSync4(channelPath)) {
3465
3465
  try {
3466
- const text10 = readFileSync5(channelPath, "utf8");
3467
- if (Buffer.byteLength(text10) <= MAX_METADATA) prior = JSON.parse(text10);
3466
+ const text11 = readFileSync5(channelPath, "utf8");
3467
+ if (Buffer.byteLength(text11) <= MAX_METADATA) prior = JSON.parse(text11);
3468
3468
  } catch {
3469
3469
  }
3470
3470
  }
@@ -4090,8 +4090,8 @@ var init_catalog_v2 = __esm({
4090
4090
  "../html-to-t5/catalog.v2.json"() {
4091
4091
  catalog_v2_default = {
4092
4092
  encoding: "gzip-base64",
4093
- sha256: "6a5579023a608d429ce3498e16211c378ac5914dda5e53dbf26f1a816fdcd58a",
4094
- data: "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"
4093
+ sha256: "c54c4867c4ceeb2712fe45fd349ca9fd8ab3254879549c7d437790ab15deb67a",
4094
+ data: "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"
4095
4095
  };
4096
4096
  }
4097
4097
  });
@@ -4393,15 +4393,15 @@ function analyzeController(source, file2, profile, diagnostics) {
4393
4393
  error(declaration ?? sf2, "Default-export defineController({ initialState, handlers }).");
4394
4394
  return;
4395
4395
  }
4396
- const object8 = declaration.expression.arguments[0];
4397
- if (!object8 || !ts2.isObjectLiteralExpression(object8)) {
4396
+ const object9 = declaration.expression.arguments[0];
4397
+ if (!object9 || !ts2.isObjectLiteralExpression(object9)) {
4398
4398
  error(declaration, "Controller definition must be an object literal.");
4399
4399
  return;
4400
4400
  }
4401
- const props = new Map(object8.properties.map((p2) => [p2.name?.getText(sf2).replace(/^["']|["']$/g, ""), p2]));
4401
+ const props = new Map(object9.properties.map((p2) => [p2.name?.getText(sf2).replace(/^["']|["']$/g, ""), p2]));
4402
4402
  const state = props.get("initialState"), handlers = props.get("handlers");
4403
4403
  if (!state || !ts2.isPropertyAssignment(state) || !handlers || !ts2.isPropertyAssignment(handlers) || !ts2.isObjectLiteralExpression(handlers.initializer)) {
4404
- error(object8, "initialState and handlers must be object literals.");
4404
+ error(object9, "initialState and handlers must be object literals.");
4405
4405
  return;
4406
4406
  }
4407
4407
  function literal(n2) {
@@ -4568,8 +4568,8 @@ function parseStyles(source, file2, diagnostics, origin = { line: 1, column: 1 }
4568
4568
  declarations[decl.prop] = decl.value;
4569
4569
  locations[decl.prop] = declLoc;
4570
4570
  }
4571
- for (const text10 of node.selector.split(",")) {
4572
- const s2 = text10.trim();
4571
+ for (const text11 of node.selector.split(",")) {
4572
+ const s2 = text11.trim();
4573
4573
  if (!s2 || !selector.test(s2)) {
4574
4574
  diagnostics.push({ ...loc, code: "HHP-CSS-SELECTOR", severity: "error", message: `Unsupported selector ${s2}.`, hint: "Use static tag, id, class, or compound selectors." });
4575
4575
  continue;
@@ -4591,7 +4591,7 @@ function translateStyle(style, profile, type, props, mods, error) {
4591
4591
  if (!/^(?:0|\d+(?:\.\d+)?px)$/.test(v2)) throw new Error(`Expected a nonnegative px length, received ${v2}.`);
4592
4592
  return parseFloat(v2);
4593
4593
  };
4594
- const numeric = (v2) => {
4594
+ const numeric2 = (v2) => {
4595
4595
  if (!/^-?\d+(?:\.\d+)?$/.test(v2)) throw new Error(`Expected a number, received ${v2}.`);
4596
4596
  return Number(v2);
4597
4597
  };
@@ -4644,7 +4644,7 @@ function translateStyle(style, profile, type, props, mods, error) {
4644
4644
  mods.maxWidth = length(v2);
4645
4645
  break;
4646
4646
  case "flex-grow":
4647
- mods.weight = numeric(v2);
4647
+ mods.weight = numeric2(v2);
4648
4648
  break;
4649
4649
  case "color":
4650
4650
  props.color = token(v2, "colors");
@@ -4673,17 +4673,17 @@ function translateStyle(style, profile, type, props, mods, error) {
4673
4673
  mods.shadow = { token: token(v2, "shadows") };
4674
4674
  break;
4675
4675
  case "opacity":
4676
- mods.opacity = numeric(v2);
4676
+ mods.opacity = numeric2(v2);
4677
4677
  if (Number(mods.opacity) < 0 || Number(mods.opacity) > 1) throw new Error("Opacity must be between zero and one.");
4678
4678
  break;
4679
4679
  case "aspect-ratio": {
4680
- const p2 = v2.split("/").map((x2) => numeric(x2.trim()));
4680
+ const p2 = v2.split("/").map((x2) => numeric2(x2.trim()));
4681
4681
  mods.aspectRatio = p2[0] / (p2[1] ?? 1);
4682
4682
  if (!Number.isFinite(mods.aspectRatio) || Number(mods.aspectRatio) <= 0) throw new Error("Aspect ratio must be positive.");
4683
4683
  break;
4684
4684
  }
4685
4685
  case "z-index":
4686
- mods.zIndex = numeric(v2);
4686
+ mods.zIndex = numeric2(v2);
4687
4687
  break;
4688
4688
  case "visibility":
4689
4689
  if (!["hidden", "visible"].includes(v2)) throw new Error("Unsupported visibility.");
@@ -4703,7 +4703,7 @@ function translateStyle(style, profile, type, props, mods, error) {
4703
4703
  const parts = [...v2.matchAll(/(translateX|translateY|scale|rotate)\(([^)]+)\)/g)];
4704
4704
  if (!parts.length || parts.map((p2) => p2[0]).join("") !== v2.replace(/\s+/g, "")) throw new Error("Supported transforms: translateX, translateY, scale, rotate.");
4705
4705
  for (const [, fn2, arg] of parts) {
4706
- if (fn2 === "scale") mods.scale = numeric(arg);
4706
+ if (fn2 === "scale") mods.scale = numeric2(arg);
4707
4707
  else if (fn2 === "rotate") {
4708
4708
  if (!/^-?\d+(?:\.\d+)?deg$/.test(arg)) throw new Error("Rotation uses degrees.");
4709
4709
  mods.rotation = parseFloat(arg);
@@ -5342,31 +5342,31 @@ function compileV2(html, profile, options) {
5342
5342
  return component;
5343
5343
  }
5344
5344
  const textNodes = element.contents().toArray().filter((n2) => n2.type === "text");
5345
- const text10 = textNodes.map((n2) => n2.data).join(" ").replace(/\s+/g, " ").trim();
5345
+ const text11 = textNodes.map((n2) => n2.data).join(" ").replace(/\s+/g, " ").trim();
5346
5346
  if (["Text", "RichText"].includes(type)) {
5347
- const matches = [...text10.matchAll(/{{\s*([\w.$]+)\s*}}/g)];
5348
- if (/{{|}}/.test(text10.replace(/{{\s*[\w.$]+\s*}}/g, ""))) error(el2, "HHP-TEXT-EXPRESSION", "Text interpolation accepts state/item paths; compute expressions in the controller.");
5347
+ const matches = [...text11.matchAll(/{{\s*([\w.$]+)\s*}}/g)];
5348
+ if (/{{|}}/.test(text11.replace(/{{\s*[\w.$]+\s*}}/g, ""))) error(el2, "HHP-TEXT-EXPRESSION", "Text interpolation accepts state/item paths; compute expressions in the controller.");
5349
5349
  if (matches.length) {
5350
- if (matches.length === 1 && matches[0][0] === text10 && type === "Text") {
5350
+ if (matches.length === 1 && matches[0][0] === text11 && type === "Text") {
5351
5351
  props.text = path2(el2, matches[0][1], row);
5352
5352
  } else if (controller && type === "Text") {
5353
5353
  for (const match of matches) path2(el2, match[1], row);
5354
5354
  const key3 = `t${textProjections.length}`;
5355
- const normalized = text10.replace(/{{\s*([\w.$]+)\s*}}/g, (_match, raw) => `{{${raw.startsWith("$item.") ? raw : statePath(raw)}}}`);
5355
+ const normalized = text11.replace(/{{\s*([\w.$]+)\s*}}/g, (_match, raw) => `{{${raw.startsWith("$item.") ? raw : statePath(raw)}}}`);
5356
5356
  textProjections.push({ key: key3, text: normalized, ...row ? { collection: row } : {} });
5357
5357
  props.text = row ? `$item.__hhpText_${key3}` : `$service:${serviceName}.__hhpText.${key3}`;
5358
5358
  } else {
5359
5359
  if (profile.surfaces.some((surface) => surface === "ios" || surface === "android" || surface === "macos"))
5360
5360
  error(el2, "HHP-TEXT-TEMPLATE-SURFACE", "Text templates are not implemented by the enabled native renderers.", "Compute the complete string in controller state and bind it on a Text component with {{path}} or bind:content.");
5361
5361
  const params = {};
5362
- let template = text10;
5362
+ let template = text11;
5363
5363
  matches.forEach((m2, i2) => {
5364
5364
  params[`v${i2}`] = path2(el2, m2[1], row);
5365
5365
  template = template.replace(m2[0], `{v${i2}}`);
5366
5366
  });
5367
5367
  props.template = { template, params };
5368
5368
  }
5369
- } else if (text10) props.text = text10;
5369
+ } else if (text11) props.text = text11;
5370
5370
  if (/^h[1-6]$/.test(tag) && props.style === void 0) {
5371
5371
  const candidates = tag === "h1" ? ["largeTitle", "title1", "body"] : tag === "h2" ? ["title1", "headline", "body"] : ["headline", "body"];
5372
5372
  const available = profile.tokens.typography ?? [];
@@ -5374,8 +5374,8 @@ function compileV2(html, profile, options) {
5374
5374
  if (heading) props.style = heading;
5375
5375
  else error(el2, "HHP-TOKEN", "Headings require a body, title1, headline, or largeTitle typography token.");
5376
5376
  }
5377
- } else if (type === "Button" && (text10 || attrs.title)) props.title = text10 || attrs.title;
5378
- else if (text10) error(el2, "HHP-TEXT", "Wrap container text in a paragraph or span.");
5377
+ } else if (type === "Button" && (text11 || attrs.title)) props.title = text11 || attrs.title;
5378
+ else if (text11) error(el2, "HHP-TEXT", "Wrap container text in a paragraph or span.");
5379
5379
  if (type === "Image" && attrs.src) {
5380
5380
  if (/^https:\/\//.test(attrs.src)) props.url = attrs.src;
5381
5381
  else {
@@ -7391,17 +7391,17 @@ ${BLOCK_END}`;
7391
7391
  ${block}
7392
7392
  `;
7393
7393
  }
7394
- function markersIntact(text10) {
7395
- const begins = text10.split(BLOCK_BEGIN).length - 1;
7396
- const ends = text10.split(BLOCK_END).length - 1;
7394
+ function markersIntact(text11) {
7395
+ const begins = text11.split(BLOCK_BEGIN).length - 1;
7396
+ const ends = text11.split(BLOCK_END).length - 1;
7397
7397
  if (begins === 0 && ends === 0) return true;
7398
- return begins === 1 && ends === 1 && text10.indexOf(BLOCK_BEGIN) < text10.indexOf(BLOCK_END) && BLOCK_RE.test(text10);
7398
+ return begins === 1 && ends === 1 && text11.indexOf(BLOCK_BEGIN) < text11.indexOf(BLOCK_END) && BLOCK_RE.test(text11);
7399
7399
  }
7400
- function withoutBlock(text10) {
7401
- const m2 = BLOCK_RE.exec(text10);
7402
- if (!m2) return text10;
7403
- const before = text10.slice(0, m2.index).replace(/\n+$/, "");
7404
- const after = text10.slice(m2.index + m2[0].length).replace(/^\n+/, "");
7400
+ function withoutBlock(text11) {
7401
+ const m2 = BLOCK_RE.exec(text11);
7402
+ if (!m2) return text11;
7403
+ const before = text11.slice(0, m2.index).replace(/\n+$/, "");
7404
+ const after = text11.slice(m2.index + m2[0].length).replace(/^\n+/, "");
7405
7405
  if (!before) return after;
7406
7406
  if (!after) return `${before}
7407
7407
  `;
@@ -7409,8 +7409,8 @@ function withoutBlock(text10) {
7409
7409
 
7410
7410
  ${after}`;
7411
7411
  }
7412
- function blockVersion(text10) {
7413
- return STAMP_RE.exec(text10)?.[1] ?? null;
7412
+ function blockVersion(text11) {
7413
+ return STAMP_RE.exec(text11)?.[1] ?? null;
7414
7414
  }
7415
7415
  function agentsMdBody(appName2) {
7416
7416
  const gates = APPROVAL_GATES.map((g2) => `- \`${g2.id}\` \u2014 ${g2.label}`).join("\n");
@@ -7873,13 +7873,13 @@ function assertConfinedTsconfig(entry, contentRoot2, allows) {
7873
7873
  `refused to read ${p2}: ${why}. A tsconfig may extend a file from its own package or an installed dependency \u2014 nothing else.`
7874
7874
  );
7875
7875
  };
7876
- const stripJsonc = (text10) => {
7877
- if (text10.charCodeAt(0) === 65279) text10 = text10.slice(1);
7876
+ const stripJsonc = (text11) => {
7877
+ if (text11.charCodeAt(0) === 65279) text11 = text11.slice(1);
7878
7878
  let out2 = "";
7879
7879
  let inStr = false;
7880
7880
  let esc = false;
7881
- for (let i2 = 0; i2 < text10.length; i2++) {
7882
- const c2 = text10[i2];
7881
+ for (let i2 = 0; i2 < text11.length; i2++) {
7882
+ const c2 = text11[i2];
7883
7883
  if (inStr) {
7884
7884
  out2 += c2;
7885
7885
  if (esc) esc = false;
@@ -7892,13 +7892,13 @@ function assertConfinedTsconfig(entry, contentRoot2, allows) {
7892
7892
  out2 += c2;
7893
7893
  continue;
7894
7894
  }
7895
- if (c2 === "/" && text10[i2 + 1] === "/") {
7896
- while (i2 < text10.length && text10[i2] !== "\n") i2++;
7895
+ if (c2 === "/" && text11[i2 + 1] === "/") {
7896
+ while (i2 < text11.length && text11[i2] !== "\n") i2++;
7897
7897
  continue;
7898
7898
  }
7899
- if (c2 === "/" && text10[i2 + 1] === "*") {
7899
+ if (c2 === "/" && text11[i2 + 1] === "*") {
7900
7900
  i2 += 2;
7901
- while (i2 < text10.length && !(text10[i2] === "*" && text10[i2 + 1] === "/")) i2++;
7901
+ while (i2 < text11.length && !(text11[i2] === "*" && text11[i2 + 1] === "/")) i2++;
7902
7902
  i2++;
7903
7903
  continue;
7904
7904
  }
@@ -12468,8 +12468,8 @@ function pushSpan(out2, s2) {
12468
12468
  else out2.push(s2);
12469
12469
  }
12470
12470
  function spanOf(textNode) {
12471
- const text10 = str(at(textNode, "textData", "text"));
12472
- if (text10 === "") return null;
12471
+ const text11 = str(at(textNode, "textData", "text"));
12472
+ if (text11 === "") return null;
12473
12473
  let bold = false, italic = false, underline = false;
12474
12474
  let link;
12475
12475
  const decorations = at(textNode, "textData", "decorations");
@@ -12496,7 +12496,7 @@ function spanOf(textNode) {
12496
12496
  }
12497
12497
  }
12498
12498
  }
12499
- const span = { text: text10 };
12499
+ const span = { text: text11 };
12500
12500
  if (bold) span.bold = true;
12501
12501
  if (italic) span.italic = true;
12502
12502
  if (underline) span.underline = true;
@@ -12718,8 +12718,8 @@ function blockOf(ids, n2, path2) {
12718
12718
  const { title, url } = cardFields(n2, type);
12719
12719
  return [card(ids.claim(n2, path2), type, title, url)];
12720
12720
  }
12721
- const text10 = plainText(n2);
12722
- return text10.trim() !== "" ? [{ kind: "paragraph", id: ids.claim(n2, path2), spans: [{ text: text10 }] }] : [];
12721
+ const text11 = plainText(n2);
12722
+ return text11.trim() !== "" ? [{ kind: "paragraph", id: ids.claim(n2, path2), spans: [{ text: text11 }] }] : [];
12723
12723
  }
12724
12724
  }
12725
12725
  }
@@ -14241,26 +14241,26 @@ function serviceOnlyBindingValues(props, key3) {
14241
14241
  });
14242
14242
  return out2;
14243
14243
  }
14244
- function matchBraceSafe(text10, open) {
14244
+ function matchBraceSafe(text11, open) {
14245
14245
  let depth = 0;
14246
- for (let i2 = open; i2 < text10.length; i2++) {
14247
- const c2 = text10[i2];
14246
+ for (let i2 = open; i2 < text11.length; i2++) {
14247
+ const c2 = text11[i2];
14248
14248
  if (c2 === '"' || c2 === "'" || c2 === "`") {
14249
14249
  const q2 = c2;
14250
14250
  i2++;
14251
- while (i2 < text10.length && text10[i2] !== q2) {
14252
- if (text10[i2] === "\\") i2++;
14251
+ while (i2 < text11.length && text11[i2] !== q2) {
14252
+ if (text11[i2] === "\\") i2++;
14253
14253
  i2++;
14254
14254
  }
14255
14255
  continue;
14256
14256
  }
14257
- if (c2 === "/" && text10[i2 + 1] === "/") {
14258
- while (i2 < text10.length && text10[i2] !== "\n") i2++;
14257
+ if (c2 === "/" && text11[i2 + 1] === "/") {
14258
+ while (i2 < text11.length && text11[i2] !== "\n") i2++;
14259
14259
  continue;
14260
14260
  }
14261
- if (c2 === "/" && text10[i2 + 1] === "*") {
14261
+ if (c2 === "/" && text11[i2 + 1] === "*") {
14262
14262
  i2 += 2;
14263
- while (i2 < text10.length && !(text10[i2] === "*" && text10[i2 + 1] === "/")) i2++;
14263
+ while (i2 < text11.length && !(text11[i2] === "*" && text11[i2 + 1] === "/")) i2++;
14264
14264
  i2++;
14265
14265
  continue;
14266
14266
  }
@@ -17352,11 +17352,11 @@ function strip(line) {
17352
17352
  function scalar(v2) {
17353
17353
  return v2.trim().replace(/^["']|["']$/g, "");
17354
17354
  }
17355
- function parseRolloutYaml(text10) {
17355
+ function parseRolloutYaml(text11) {
17356
17356
  const cfg = { app: "", rings: [] };
17357
17357
  let cur = null;
17358
17358
  let inRings = false;
17359
- for (const raw of text10.split("\n")) {
17359
+ for (const raw of text11.split("\n")) {
17360
17360
  const line = strip(raw);
17361
17361
  if (!line.trim()) continue;
17362
17362
  const top = /^([a-zA-Z_]+):\s*(.*)$/.exec(line);
@@ -17387,10 +17387,10 @@ function assignRing(r3, key3, val) {
17387
17387
  else if (key3 === "percent") r3.percent = Number(v2);
17388
17388
  else if (key3 === "minBinaryVersion") r3.minBinaryVersion = v2;
17389
17389
  }
17390
- function parseRevocationsYaml(text10) {
17390
+ function parseRevocationsYaml(text11) {
17391
17391
  const out2 = { app: "", revoked: [] };
17392
17392
  let inList = false;
17393
- for (const raw of text10.split("\n")) {
17393
+ for (const raw of text11.split("\n")) {
17394
17394
  const line = strip(raw);
17395
17395
  if (!line.trim()) continue;
17396
17396
  const top = /^([a-zA-Z_]+):\s*(.*)$/.exec(line);
@@ -17767,14 +17767,14 @@ function discoverNativeActions(appDir3) {
17767
17767
  }
17768
17768
  const sources = roots2.flatMap(({ directory, extension, buildDirMaxDepth }) => nativeSourceFiles(resolve16(appDir3, directory), extension, buildDirMaxDepth));
17769
17769
  const registered = sources.flatMap((source) => {
17770
- let text10;
17770
+ let text11;
17771
17771
  try {
17772
- text10 = readFileSync16(source, "utf8");
17772
+ text11 = readFileSync16(source, "utf8");
17773
17773
  } catch (err) {
17774
17774
  if (!vanished(err)) throw err;
17775
17775
  return [];
17776
17776
  }
17777
- return registeredActions(text10);
17777
+ return registeredActions(text11);
17778
17778
  });
17779
17779
  return {
17780
17780
  registered: new Set(registered),
@@ -21178,9 +21178,9 @@ var init_wix_cache_policy = __esm({
21178
21178
  });
21179
21179
 
21180
21180
  // ../../core/dev-server/src/l10n-catalog.ts
21181
- function parseCatalog(text10) {
21181
+ function parseCatalog(text11) {
21182
21182
  try {
21183
- const c2 = JSON.parse(text10);
21183
+ const c2 = JSON.parse(text11);
21184
21184
  return c2 && typeof c2 === "object" && c2.messages && typeof c2.messages === "object" ? c2 : void 0;
21185
21185
  } catch {
21186
21186
  return void 0;
@@ -22149,7 +22149,6 @@ function resolveIdiom(tokens2, ctx = {}) {
22149
22149
  var IDIOM_CONTEXTS, UNSAFE_KEYS;
22150
22150
  var init_idiom = __esm({
22151
22151
  "../../core/ts/src/idiom.ts"() {
22152
- "use strict";
22153
22152
  IDIOM_CONTEXTS = {
22154
22153
  ios: { native: ["ios"] },
22155
22154
  android: { native: ["material"] },
@@ -26720,10 +26719,10 @@ async function mintAnonymousVisitor(clientId, fetchImpl = fetch) {
26720
26719
  headers: { "Content-Type": "application/json" },
26721
26720
  body: JSON.stringify({ clientId, grantType: "anonymous" })
26722
26721
  });
26723
- const text10 = await res.text();
26722
+ const text11 = await res.text();
26724
26723
  let j2 = {};
26725
26724
  try {
26726
- j2 = text10 ? JSON.parse(text10) : {};
26725
+ j2 = text11 ? JSON.parse(text11) : {};
26727
26726
  } catch {
26728
26727
  }
26729
26728
  if (res.status !== 200 || !j2.access_token) throw new Error(`visitor mint failed (${res.status})`);
@@ -27069,10 +27068,10 @@ ${session}`);
27069
27068
  }),
27070
27069
  timedOut
27071
27070
  ]);
27072
- const text10 = await Promise.race([res.text(), timedOut]);
27071
+ const text11 = await Promise.race([res.text(), timedOut]);
27073
27072
  let j2 = {};
27074
27073
  try {
27075
- j2 = text10 ? JSON.parse(text10) : {};
27074
+ j2 = text11 ? JSON.parse(text11) : {};
27076
27075
  } catch {
27077
27076
  }
27078
27077
  if (res.status < 200 || res.status >= 300 || !j2.signedInstance)
@@ -27258,7 +27257,7 @@ ${session}`);
27258
27257
  });
27259
27258
  const xsrf = /(?:^|;\s*)XSRF-TOKEN=([^;]+)/.exec(sessionCookie)?.[1];
27260
27259
  let status;
27261
- let text10;
27260
+ let text11;
27262
27261
  try {
27263
27262
  const res = await Promise.race([
27264
27263
  this.fetchImpl(`${ONE_APP_SESSION}/${msid}/signed-instance?signed_instance_type=Member`, {
@@ -27270,7 +27269,7 @@ ${session}`);
27270
27269
  timedOut
27271
27270
  ]);
27272
27271
  status = res.status;
27273
- text10 = await Promise.race([res.text(), timedOut]);
27272
+ text11 = await Promise.race([res.text(), timedOut]);
27274
27273
  } catch (e2) {
27275
27274
  return refuse7(new SiteInstanceUnavailable(msid, `mint failed: ${e2?.message ?? e2}`), MEMBER_TRANSIENT_TTL_MS);
27276
27275
  } finally {
@@ -27280,7 +27279,7 @@ ${session}`);
27280
27279
  if (status === 401) return refuse7(new AccountSessionExpired(msid, `mint refused (${status})`), MEMBER_TRANSIENT_TTL_MS);
27281
27280
  let instance;
27282
27281
  try {
27283
- instance = JSON.parse(text10).signedInstance;
27282
+ instance = JSON.parse(text11).signedInstance;
27284
27283
  } catch {
27285
27284
  }
27286
27285
  if (status < 200 || status >= 300 || typeof instance !== "string" || !instance) {
@@ -27358,8 +27357,8 @@ async function postJson(path2, body, auth) {
27358
27357
  headers: { "Content-Type": "application/json", ...auth ? { Authorization: auth } : {} },
27359
27358
  body: JSON.stringify(body)
27360
27359
  });
27361
- const text10 = await res.text();
27362
- return { status: res.status, json: text10 ? JSON.parse(text10) : {} };
27360
+ const text11 = await res.text();
27361
+ return { status: res.status, json: text11 ? JSON.parse(text11) : {} };
27363
27362
  }
27364
27363
  async function mintVisitor(clientId) {
27365
27364
  const r3 = await postJson("/oauth2/token", { clientId, grantType: "anonymous" });
@@ -27629,13 +27628,13 @@ function recordWixTraffic(gw, app, adminUrl, ev) {
27629
27628
  full.respBody = truncate(redactBodyString(full.respBody));
27630
27629
  gw.traffic.push(full);
27631
27630
  if (gw.traffic.length > TRAFFIC_CAP) gw.traffic.splice(0, gw.traffic.length - TRAFFIC_CAP);
27632
- const text10 = `event: wix.traffic
27631
+ const text11 = `event: wix.traffic
27633
27632
  data: ${JSON.stringify(full)}
27634
27633
 
27635
27634
  `;
27636
27635
  for (const res of [...gw.clients]) {
27637
27636
  try {
27638
- res.write(text10);
27637
+ res.write(text11);
27639
27638
  } catch {
27640
27639
  gw.clients.delete(res);
27641
27640
  }
@@ -28138,13 +28137,13 @@ async function resolveWixAccounts(cookieHeader, fetchImpl = fetch, authorization
28138
28137
  if (res.status === 428 || res.status === 401 || res.status === 403) {
28139
28138
  return { ok: false, reason: "no_session" };
28140
28139
  }
28141
- const text10 = await res.text();
28140
+ const text11 = await res.text();
28142
28141
  if (!res.ok) {
28143
- return { ok: false, reason: "upstream_failed", status: res.status, detail: text10.slice(0, 200) };
28142
+ return { ok: false, reason: "upstream_failed", status: res.status, detail: text11.slice(0, 200) };
28144
28143
  }
28145
28144
  let parsed;
28146
28145
  try {
28147
- parsed = JSON.parse(text10);
28146
+ parsed = JSON.parse(text11);
28148
28147
  } catch {
28149
28148
  return { ok: false, reason: "upstream_failed", status: res.status, detail: "unparseable_body" };
28150
28149
  }
@@ -28185,13 +28184,13 @@ async function resolveAccountCredential(auth, fetchImpl) {
28185
28184
  if (res.status === 428 || res.status === 401 || res.status === 403 || res.status === 404) {
28186
28185
  return { ok: false, reason: "no_session" };
28187
28186
  }
28188
- const text10 = await res.text();
28187
+ const text11 = await res.text();
28189
28188
  if (!res.ok) {
28190
- return { ok: false, reason: "upstream_failed", status: res.status, detail: text10.slice(0, 200) };
28189
+ return { ok: false, reason: "upstream_failed", status: res.status, detail: text11.slice(0, 200) };
28191
28190
  }
28192
28191
  let parsed;
28193
28192
  try {
28194
- parsed = JSON.parse(text10);
28193
+ parsed = JSON.parse(text11);
28195
28194
  } catch {
28196
28195
  return { ok: false, reason: "upstream_failed", status: res.status, detail: "unparseable_body" };
28197
28196
  }
@@ -28843,9 +28842,9 @@ async function getAndroidPixelDims(serial) {
28843
28842
  try {
28844
28843
  const args = serial ? ["-s", serial, "shell", "wm", "size"] : ["shell", "wm", "size"];
28845
28844
  const out2 = await runner.capture(ADB_BIN, args);
28846
- const text10 = out2.toString("utf8");
28847
- const override = /Override size:\s*(\d+)x(\d+)/.exec(text10);
28848
- const physical = /Physical size:\s*(\d+)x(\d+)/.exec(text10);
28845
+ const text11 = out2.toString("utf8");
28846
+ const override = /Override size:\s*(\d+)x(\d+)/.exec(text11);
28847
+ const physical = /Physical size:\s*(\d+)x(\d+)/.exec(text11);
28849
28848
  const m2 = override ?? physical;
28850
28849
  if (!m2) throw new Error("could not parse wm size");
28851
28850
  const dims = { width: parseInt(m2[1], 10), height: parseInt(m2[2], 10) };
@@ -30751,9 +30750,9 @@ function mdScan(src, linkStyle = "") {
30751
30750
  }
30752
30751
  return out2 + mdEsc(src.slice(last));
30753
30752
  }
30754
- function mdInline(text10, linkColor) {
30753
+ function mdInline(text11, linkColor) {
30755
30754
  const safe = typeof linkColor === "string" && /^[#a-zA-Z0-9(),.%\s-]+$/.test(linkColor) ? linkColor : "";
30756
- return { __html: mdScan(text10, safe ? ` style="color:${safe}"` : "") };
30755
+ return { __html: mdScan(text11, safe ? ` style="color:${safe}"` : "") };
30757
30756
  }
30758
30757
  function sevColor(ctx, sev) {
30759
30758
  switch (sev) {
@@ -31442,7 +31441,7 @@ function PickerLeadingVisual({ option, ctx, size = 20 }) {
31442
31441
  return null;
31443
31442
  }
31444
31443
  }
31445
- function PickerFieldBox({ look, ctx, option, text: text10, isPlaceholder, font, style }) {
31444
+ function PickerFieldBox({ look, ctx, option, text: text11, isPlaceholder, font, style }) {
31446
31445
  const C2 = ctx.color;
31447
31446
  return /* @__PURE__ */ jsxs2(
31448
31447
  "div",
@@ -31466,7 +31465,7 @@ function PickerFieldBox({ look, ctx, option, text: text10, isPlaceholder, font,
31466
31465
  },
31467
31466
  children: [
31468
31467
  !isPlaceholder && /* @__PURE__ */ jsx5(PickerLeadingVisual, { option, ctx }),
31469
- /* @__PURE__ */ jsx5("span", { style: { flex: 1, minWidth: 0, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", color: isPlaceholder ? C2(look.placeholderColor, "#888") : C2("textPrimary", "#111") }, children: text10 }),
31468
+ /* @__PURE__ */ jsx5("span", { style: { flex: 1, minWidth: 0, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", color: isPlaceholder ? C2(look.placeholderColor, "#888") : C2("textPrimary", "#111") }, children: text11 }),
31470
31469
  look.chevronIcon && /* @__PURE__ */ jsx5("span", { "data-picker-chevron": "", style: { flex: "none", display: "inline-grid", placeItems: "center" }, children: iconSvg(look.chevronIcon, { size: 16, color: C2("textSecondary", "#636b78") }) })
31471
31470
  ]
31472
31471
  }
@@ -31884,9 +31883,9 @@ function createRicosHostSession(o2) {
31884
31883
  if (!state.ready || state.unavailable) return;
31885
31884
  o2.send({ v: 1, type: "command", name, ...arg?.level ? { level: arg.level } : {}, ...arg?.value ? { value: arg.value } : {} });
31886
31885
  },
31887
- insertLink(url, text10) {
31886
+ insertLink(url, text11) {
31888
31887
  if (!state.ready || state.unavailable || !isSafeEditorLink(url)) return false;
31889
- o2.send({ v: 1, type: "insertLink", url: url.trim(), ...text10 ? { text: text10 } : {} });
31888
+ o2.send({ v: 1, type: "insertLink", url: url.trim(), ...text11 ? { text: text11 } : {} });
31890
31889
  return true;
31891
31890
  },
31892
31891
  removeLink() {
@@ -34358,8 +34357,8 @@ var init_esm = __esm({
34358
34357
 
34359
34358
  // ../../core/ts/src/rich-text-field.ts
34360
34359
  function richTextHtmlToPlainText(html) {
34361
- const text10 = decodeHTML(html.replace(/<(script|style)\b[^>]*>[\s\S]*?<\/\1\s*>/gi, "").replace(/<li\b[^>]*>/gi, "\u2022 ").replace(/<br\s*\/?>|<\/(?:p|div|li|h[1-6]|blockquote|pre|tr)\s*>/gi, "\n").replace(/<[^>]*>/g, ""));
34362
- return text10.replace(/\r\n?/g, "\n").replace(/\n{3,}/g, "\n\n").trim();
34360
+ const text11 = decodeHTML(html.replace(/<(script|style)\b[^>]*>[\s\S]*?<\/\1\s*>/gi, "").replace(/<li\b[^>]*>/gi, "\u2022 ").replace(/<br\s*\/?>|<\/(?:p|div|li|h[1-6]|blockquote|pre|tr)\s*>/gi, "\n").replace(/<[^>]*>/g, ""));
34361
+ return text11.replace(/\r\n?/g, "\n").replace(/\n{3,}/g, "\n\n").trim();
34363
34362
  }
34364
34363
  function richTextPlainTextToHtml(value) {
34365
34364
  if (value === "") return "";
@@ -34382,9 +34381,9 @@ function richTextEditedHtml(originalHtml, originalText, nextText) {
34382
34381
  if (/<(script|style)\b/i.test(source)) return richTextPlainTextToHtml(nextText);
34383
34382
  const spans = [];
34384
34383
  let visible = "";
34385
- const append = (text10, start, end, structural = false) => {
34386
- visible += text10;
34387
- for (let i2 = 0; i2 < text10.length; i2++) spans.push({ start, end, structural });
34384
+ const append = (text11, start, end, structural = false) => {
34385
+ visible += text11;
34386
+ for (let i2 = 0; i2 < text11.length; i2++) spans.push({ start, end, structural });
34388
34387
  };
34389
34388
  const token = /<[^>]*>|&(?:#\d+|#x[\da-f]+|[a-z][\da-z]+);?|[^<&]+/gi;
34390
34389
  for (const match of source.matchAll(token)) {
@@ -34438,7 +34437,7 @@ function richTextEditedHtml(originalHtml, originalText, nextText) {
34438
34437
  let edited = source;
34439
34438
  for (const span of removed.slice().reverse()) edited = edited.slice(0, span.start) + edited.slice(span.end);
34440
34439
  const insertionAfterDelete = insertionAt - removed.filter((span) => span.end <= insertionAt).reduce((n2, span) => n2 + span.end - span.start, 0);
34441
- const escape3 = (text10) => text10.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/\"/g, "&quot;").replace(/'/g, "&#39;").replace(/\n/g, "<br>");
34440
+ const escape3 = (text11) => text11.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/\"/g, "&quot;").replace(/'/g, "&#39;").replace(/\n/g, "<br>");
34442
34441
  const replacement = escape3(nextText.slice(prefix, newEnd));
34443
34442
  return edited.slice(0, insertionAfterDelete) + replacement + edited.slice(insertionAfterDelete);
34444
34443
  }
@@ -34543,13 +34542,13 @@ function NamedImage({ node, alt, env }) {
34543
34542
  }
34544
34543
  function Block({ b: b2, env, depth }) {
34545
34544
  const { ctx } = env;
34546
- const text10 = ctx.color("textPrimary", "#13171e");
34545
+ const text11 = ctx.color("textPrimary", "#13171e");
34547
34546
  const secondary = ctx.color("textSecondary", "#5c6370");
34548
34547
  const border = ctx.color("border", "#e5e5e5");
34549
34548
  switch (b2.kind) {
34550
34549
  case "paragraph":
34551
34550
  return /* @__PURE__ */ jsx9("p", { ...tid(env, b2.id, b2.kind), style: {
34552
- ...textStyle(ctx, "body", text10),
34551
+ ...textStyle(ctx, "body", text11),
34553
34552
  textAlign: b2.align,
34554
34553
  paddingInlineStart: b2.indent ? Math.min(b2.indent, 8) * 16 : void 0,
34555
34554
  minHeight: b2.spans.length ? void 0 : "1.5em"
@@ -34557,7 +34556,7 @@ function Block({ b: b2, env, depth }) {
34557
34556
  case "heading":
34558
34557
  return React9.createElement(
34559
34558
  `h${b2.level}`,
34560
- { ...tid(env, b2.id, b2.kind), style: textStyle(ctx, RICH_CONTENT_HEADING_TOKENS[b2.level - 1], text10) },
34559
+ { ...tid(env, b2.id, b2.kind), style: textStyle(ctx, RICH_CONTENT_HEADING_TOKENS[b2.level - 1], text11) },
34561
34560
  /* @__PURE__ */ jsx9(Spans, { spans: b2.spans, env })
34562
34561
  );
34563
34562
  case "list": {
@@ -34567,7 +34566,7 @@ function Block({ b: b2, env, depth }) {
34567
34566
  {
34568
34567
  ...tid(env, b2.id, b2.kind),
34569
34568
  start: b2.ordered ? b2.start : void 0,
34570
- style: { ...textStyle(ctx, "body", text10), paddingInlineStart: 24, listStyleType: b2.ordered ? "decimal" : depth % 2 ? "circle" : "disc" },
34569
+ style: { ...textStyle(ctx, "body", text11), paddingInlineStart: 24, listStyleType: b2.ordered ? "decimal" : depth % 2 ? "circle" : "disc" },
34571
34570
  children: b2.items.map((item, i2) => /* @__PURE__ */ jsx9("li", { "data-component-id": `${env.componentId}/${item.id}`, id: `${env.componentId}/${item.id}`, style: { marginBottom: 6 }, children: /* @__PURE__ */ jsx9("div", { style: { display: "flex", flexDirection: "column", gap: 6 }, children: item.blocks.map((child, j2) => /* @__PURE__ */ jsx9(Block, { b: child, env, depth: depth + 1 }, `${j2}:${child.id}`)) }) }, `${i2}:${item.id}`))
34572
34571
  }
34573
34572
  );
@@ -34581,7 +34580,7 @@ function Block({ b: b2, env, depth }) {
34581
34580
  overflowWrap: "anywhere",
34582
34581
  fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
34583
34582
  fontSize: "0.9em",
34584
- color: text10,
34583
+ color: text11,
34585
34584
  background: ctx.color("surfaceSecondary", "#f5f5f7"),
34586
34585
  padding: 10,
34587
34586
  borderRadius: 6
@@ -34600,11 +34599,11 @@ function Block({ b: b2, env, depth }) {
34600
34599
  case "button":
34601
34600
  return /* @__PURE__ */ jsx9(LinkButton, { label: b2.label, url: b2.url, env, testId: `${env.componentId}/${b2.id}` });
34602
34601
  case "table":
34603
- return /* @__PURE__ */ jsx9("table", { ...tid(env, b2.id, b2.kind), style: { width: "100%", borderCollapse: "collapse", ...textStyle(ctx, "body", text10) }, children: /* @__PURE__ */ jsx9("tbody", { children: b2.rows.map((row, r3) => /* @__PURE__ */ jsx9("tr", { children: row.map((cell2, c2) => /* @__PURE__ */ jsx9("td", { style: { border: `1px solid ${border}`, padding: 6, whiteSpace: "pre-wrap", verticalAlign: "top" }, children: cell2 }, c2)) }, r3)) }) });
34602
+ return /* @__PURE__ */ jsx9("table", { ...tid(env, b2.id, b2.kind), style: { width: "100%", borderCollapse: "collapse", ...textStyle(ctx, "body", text11) }, children: /* @__PURE__ */ jsx9("tbody", { children: b2.rows.map((row, r3) => /* @__PURE__ */ jsx9("tr", { children: row.map((cell2, c2) => /* @__PURE__ */ jsx9("td", { style: { border: `1px solid ${border}`, padding: 6, whiteSpace: "pre-wrap", verticalAlign: "top" }, children: cell2 }, c2)) }, r3)) }) });
34604
34603
  case "card": {
34605
34604
  const title = richContentCardTitle(b2);
34606
34605
  return /* @__PURE__ */ jsxs6("div", { ...tid(env, b2.id, b2.kind), role: "group", "aria-label": title, style: { border: `1px solid ${border}`, borderRadius: 8, padding: 12, display: "flex", flexDirection: "column", gap: 6 }, children: [
34607
- /* @__PURE__ */ jsx9("div", { style: textStyle(ctx, "bodyEmphasis", text10), children: title }),
34606
+ /* @__PURE__ */ jsx9("div", { style: textStyle(ctx, "bodyEmphasis", text11), children: title }),
34608
34607
  b2.url ? /* @__PURE__ */ jsxs6(Fragment3, { children: [
34609
34608
  /* @__PURE__ */ jsx9("div", { style: textStyle(ctx, "caption", secondary), children: richContentHost(b2.url) }),
34610
34609
  /* @__PURE__ */ jsx9(LinkButton, { label: RICH_CONTENT_OPEN_LABEL, url: b2.url, env, testId: `${env.componentId}/${b2.id}/open` })
@@ -34633,10 +34632,10 @@ var init_richContent = __esm({
34633
34632
 
34634
34633
  // ../../core/web-renderer/src/pdfPageCount.ts
34635
34634
  function pdfPageCount(bytes2) {
34636
- const text10 = pdfObjectSyntax(new TextDecoder("latin1").decode(bytes2));
34637
- const rooted = pdfRootPageCount(text10);
34635
+ const text11 = pdfObjectSyntax(new TextDecoder("latin1").decode(bytes2));
34636
+ const rooted = pdfRootPageCount(text11);
34638
34637
  let scanned = null;
34639
- for (const m2 of text10.matchAll(/<<((?:(?!<<|>>)[\s\S])*)>>/g)) {
34638
+ for (const m2 of text11.matchAll(/<<((?:(?!<<|>>)[\s\S])*)>>/g)) {
34640
34639
  const dict = m2[1];
34641
34640
  if (!/\/Type\s*\/Pages(?![A-Za-z])/.test(dict)) continue;
34642
34641
  const c2 = /\/Count\s+(\d+)/.exec(dict);
@@ -34648,24 +34647,24 @@ function pdfPageCount(bytes2) {
34648
34647
  if (rooted !== null && scanned !== null && rooted !== scanned) return null;
34649
34648
  return count2 <= PDF_MAX_PLAUSIBLE_PAGES ? count2 : null;
34650
34649
  }
34651
- function pdfObjectSyntax(text10) {
34652
- const out2 = text10.split("");
34650
+ function pdfObjectSyntax(text11) {
34651
+ const out2 = text11.split("");
34653
34652
  const blank = (from, to2) => {
34654
34653
  for (let k2 = from; k2 < to2; k2++) out2[k2] = " ";
34655
34654
  };
34656
34655
  let i2 = 0;
34657
- while (i2 < text10.length) {
34658
- const c2 = text10[i2];
34656
+ while (i2 < text11.length) {
34657
+ const c2 = text11[i2];
34659
34658
  if (c2 === "%") {
34660
- const eol = text10.slice(i2).search(/[\r\n]/);
34661
- const end = eol < 0 ? text10.length : i2 + eol;
34659
+ const eol = text11.slice(i2).search(/[\r\n]/);
34660
+ const end = eol < 0 ? text11.length : i2 + eol;
34662
34661
  blank(i2, end);
34663
34662
  i2 = end;
34664
34663
  } else if (c2 === "(") {
34665
34664
  let depth = 0;
34666
34665
  let j2 = i2;
34667
- for (; j2 < text10.length; j2++) {
34668
- const d2 = text10[j2];
34666
+ for (; j2 < text11.length; j2++) {
34667
+ const d2 = text11[j2];
34669
34668
  if (d2 === "\\") {
34670
34669
  j2++;
34671
34670
  continue;
@@ -34675,21 +34674,21 @@ function pdfObjectSyntax(text10) {
34675
34674
  }
34676
34675
  blank(i2, j2 + 1);
34677
34676
  i2 = j2 + 1;
34678
- } else if (c2 === "<" && text10[i2 + 1] !== "<") {
34679
- const end = text10.indexOf(">", i2);
34680
- const stop = end < 0 ? text10.length : end + 1;
34677
+ } else if (c2 === "<" && text11[i2 + 1] !== "<") {
34678
+ const end = text11.indexOf(">", i2);
34679
+ const stop = end < 0 ? text11.length : end + 1;
34681
34680
  blank(i2, stop);
34682
34681
  i2 = stop;
34683
- } else if (c2 === "<" && text10[i2 + 1] === "<") {
34682
+ } else if (c2 === "<" && text11[i2 + 1] === "<") {
34684
34683
  i2 += 2;
34685
34684
  } else if (
34686
34685
  // The `stream` KEYWORD, not the tail of a name (`/my-stream`) or of `endstream`: preceded by
34687
34686
  // whitespace or the `>>` that closes its dictionary, and followed by CRLF or LF (PDF 32000
34688
34687
  // §7.3.8.1 — a CR alone is not allowed there).
34689
- text10.startsWith("stream", i2) && /[\s>]/.test(text10[i2 - 1] ?? "") && (text10[i2 + 6] === "\n" || text10.startsWith("\r\n", i2 + 6))
34688
+ text11.startsWith("stream", i2) && /[\s>]/.test(text11[i2 - 1] ?? "") && (text11[i2 + 6] === "\n" || text11.startsWith("\r\n", i2 + 6))
34690
34689
  ) {
34691
- const end = text10.indexOf("endstream", i2 + 6);
34692
- const stop = end < 0 ? text10.length : end;
34690
+ const end = text11.indexOf("endstream", i2 + 6);
34691
+ const stop = end < 0 ? text11.length : end;
34693
34692
  blank(i2 + 6, stop);
34694
34693
  i2 = stop + "endstream".length;
34695
34694
  } else {
@@ -36127,19 +36126,19 @@ function getFilenameFromContentDispositionHeader(contentDisposition) {
36127
36126
  if (!value.startsWith("=?") || /[\x00-\x19\x80-\xff]/.test(value)) {
36128
36127
  return value;
36129
36128
  }
36130
- return value.replaceAll(/=\?([\w-]*)\?([QB])\?((?:[^?]|\?(?!=))*)\?=/gi, function(matches, charset, encoding, text10) {
36129
+ return value.replaceAll(/=\?([\w-]*)\?([QB])\?((?:[^?]|\?(?!=))*)\?=/gi, function(matches, charset, encoding, text11) {
36131
36130
  if (encoding === "q" || encoding === "Q") {
36132
- text10 = text10.replaceAll("_", " ");
36133
- text10 = text10.replaceAll(/=([0-9a-f]{2})/gi, function(match, hex2) {
36131
+ text11 = text11.replaceAll("_", " ");
36132
+ text11 = text11.replaceAll(/=([0-9a-f]{2})/gi, function(match, hex2) {
36134
36133
  return String.fromCharCode(parseInt(hex2, 16));
36135
36134
  });
36136
- return textdecode(charset, text10);
36135
+ return textdecode(charset, text11);
36137
36136
  }
36138
36137
  try {
36139
- text10 = atob(text10);
36138
+ text11 = atob(text11);
36140
36139
  } catch {
36141
36140
  }
36142
- return textdecode(charset, text10);
36141
+ return textdecode(charset, text11);
36143
36142
  });
36144
36143
  }
36145
36144
  return "";
@@ -37009,11 +37008,11 @@ var init_pdf = __esm({
37009
37008
  var DESCRIPTORS = __webpack_require__3(3724);
37010
37009
  var definePropertyModule = __webpack_require__3(4913);
37011
37010
  var createPropertyDescriptor = __webpack_require__3(6980);
37012
- module.exports = DESCRIPTORS ? function(object8, key3, value) {
37013
- return definePropertyModule.f(object8, key3, createPropertyDescriptor(1, value));
37014
- } : function(object8, key3, value) {
37015
- object8[key3] = value;
37016
- return object8;
37011
+ module.exports = DESCRIPTORS ? function(object9, key3, value) {
37012
+ return definePropertyModule.f(object9, key3, createPropertyDescriptor(1, value));
37013
+ } : function(object9, key3, value) {
37014
+ object9[key3] = value;
37015
+ return object9;
37017
37016
  };
37018
37017
  },
37019
37018
  /***/
@@ -37032,9 +37031,9 @@ var init_pdf = __esm({
37032
37031
  var DESCRIPTORS = __webpack_require__3(3724);
37033
37032
  var definePropertyModule = __webpack_require__3(4913);
37034
37033
  var createPropertyDescriptor = __webpack_require__3(6980);
37035
- module.exports = function(object8, key3, value) {
37036
- if (DESCRIPTORS) definePropertyModule.f(object8, key3, createPropertyDescriptor(0, value));
37037
- else object8[key3] = value;
37034
+ module.exports = function(object9, key3, value) {
37035
+ if (DESCRIPTORS) definePropertyModule.f(object9, key3, createPropertyDescriptor(0, value));
37036
+ else object9[key3] = value;
37038
37037
  };
37039
37038
  },
37040
37039
  /***/
@@ -37324,9 +37323,9 @@ var init_pdf = __esm({
37324
37323
  6706(module, __unused_webpack_exports, __webpack_require__3) {
37325
37324
  var uncurryThis = __webpack_require__3(9504);
37326
37325
  var aCallable = __webpack_require__3(9306);
37327
- module.exports = function(object8, key3, method) {
37326
+ module.exports = function(object9, key3, method) {
37328
37327
  try {
37329
- return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object8, key3)[method]));
37328
+ return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object9, key3)[method]));
37330
37329
  } catch (error) {
37331
37330
  }
37332
37331
  };
@@ -38294,13 +38293,13 @@ var init_pdf = __esm({
38294
38293
  var $Object = Object;
38295
38294
  var ObjectPrototype = $Object.prototype;
38296
38295
  module.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function(O2) {
38297
- var object8 = toObject(O2);
38298
- if (hasOwn(object8, IE_PROTO)) return object8[IE_PROTO];
38299
- var constructor = object8.constructor;
38300
- if (isCallable(constructor) && object8 instanceof constructor) {
38296
+ var object9 = toObject(O2);
38297
+ if (hasOwn(object9, IE_PROTO)) return object9[IE_PROTO];
38298
+ var constructor = object9.constructor;
38299
+ if (isCallable(constructor) && object9 instanceof constructor) {
38301
38300
  return constructor.prototype;
38302
38301
  }
38303
- return object8 instanceof $Object ? ObjectPrototype : null;
38302
+ return object9 instanceof $Object ? ObjectPrototype : null;
38304
38303
  };
38305
38304
  },
38306
38305
  /***/
@@ -38316,8 +38315,8 @@ var init_pdf = __esm({
38316
38315
  var indexOf = __webpack_require__3(9617).indexOf;
38317
38316
  var hiddenKeys = __webpack_require__3(421);
38318
38317
  var push = uncurryThis([].push);
38319
- module.exports = function(object8, names2) {
38320
- var O2 = toIndexedObject(object8);
38318
+ module.exports = function(object9, names2) {
38319
+ var O2 = toIndexedObject(object9);
38321
38320
  var i2 = 0;
38322
38321
  var result = [];
38323
38322
  var key3;
@@ -39760,13 +39759,13 @@ var init_pdf = __esm({
39760
39759
  }
39761
39760
  return call(reviver, holder, name, val, context);
39762
39761
  };
39763
- var internalizeProperty = function(object8, key3, value) {
39762
+ var internalizeProperty = function(object9, key3, value) {
39764
39763
  if (DESCRIPTORS) {
39765
- var descriptor = getOwnPropertyDescriptor(object8, key3);
39764
+ var descriptor = getOwnPropertyDescriptor(object9, key3);
39766
39765
  if (descriptor && !descriptor.configurable) return;
39767
39766
  }
39768
- if (value === void 0) delete object8[key3];
39769
- else createProperty(object8, key3, value);
39767
+ if (value === void 0) delete object9[key3];
39768
+ else createProperty(object9, key3, value);
39770
39769
  };
39771
39770
  var Node2 = function(value, end, source, nodes) {
39772
39771
  this.value = value;
@@ -39811,7 +39810,7 @@ var init_pdf = __esm({
39811
39810
  var source = this.source;
39812
39811
  var i2 = this.index + 1;
39813
39812
  var expectKeypair = false;
39814
- var object8 = {};
39813
+ var object9 = {};
39815
39814
  var nodes = {};
39816
39815
  var closed = false;
39817
39816
  while (i2 < source.length) {
@@ -39828,7 +39827,7 @@ var init_pdf = __esm({
39828
39827
  i2 = this.skip(IS_WHITESPACE, i2);
39829
39828
  result = this.fork(i2).parse();
39830
39829
  createProperty(nodes, key3, result);
39831
- createProperty(object8, key3, result.value);
39830
+ createProperty(object9, key3, result.value);
39832
39831
  i2 = this.until([",", "}"], result.end);
39833
39832
  var chr = at2(source, i2);
39834
39833
  if (chr === ",") {
@@ -39841,7 +39840,7 @@ var init_pdf = __esm({
39841
39840
  }
39842
39841
  }
39843
39842
  if (!closed) throw new SyntaxError2("Unterminated object at: " + i2);
39844
- return this.node(OBJECT, object8, this.index, i2, nodes);
39843
+ return this.node(OBJECT, object9, this.index, i2, nodes);
39845
39844
  },
39846
39845
  array: function() {
39847
39846
  var source = this.source;
@@ -39931,8 +39930,8 @@ var init_pdf = __esm({
39931
39930
  return 1 / nativeParse("-0 ") !== -Infinity;
39932
39931
  });
39933
39932
  $2({ target: "JSON", stat: true, forced: NO_SOURCE_SUPPORT }, {
39934
- parse: function parse4(text10, reviver) {
39935
- return PROPER_BASE_PARSE && !isCallable(reviver) ? nativeParse(text10) : $parse(text10, reviver);
39933
+ parse: function parse4(text11, reviver) {
39934
+ return PROPER_BASE_PARSE && !isCallable(reviver) ? nativeParse(text11) : $parse(text11, reviver);
39936
39935
  }
39937
39936
  });
39938
39937
  },
@@ -40070,7 +40069,7 @@ var init_pdf = __esm({
40070
40069
  return ordered;
40071
40070
  };
40072
40071
  if ($stringify) $2({ target: "JSON", stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE || !NATIVE_RAW_JSON }, {
40073
- stringify: function stringify(text10, replacer, space) {
40072
+ stringify: function stringify(text11, replacer, space) {
40074
40073
  var replacerFunction = isCallable(replacer) ? replacer : void 0;
40075
40074
  var propertyList = replacerFunction ? void 0 : getPropertyList(replacer);
40076
40075
  var keyPrefix = propertyList && getKeyPrefix(propertyList);
@@ -40080,7 +40079,7 @@ var init_pdf = __esm({
40080
40079
  var currentOrdered;
40081
40080
  var marked = false;
40082
40081
  var root = true;
40083
- var json8 = stringifyWithProperSymbolsConversion(text10, function(key3, value) {
40082
+ var json8 = stringifyWithProperSymbolsConversion(text11, function(key3, value) {
40084
40083
  key3 = $String(key3);
40085
40084
  if (propertyList) {
40086
40085
  if (key3 === END_MARK) {
@@ -43152,7 +43151,7 @@ var init_pdf = __esm({
43152
43151
  focusNode,
43153
43152
  focusOffset
43154
43153
  } = selection;
43155
- const text10 = selection.toString();
43154
+ const text11 = selection.toString();
43156
43155
  const anchorElement = this.#getAnchorElementForSelection(selection);
43157
43156
  const textLayer = anchorElement.closest(".textLayer");
43158
43157
  const boxes = this.getSelectionBoxes(textLayer);
@@ -43173,7 +43172,7 @@ var init_pdf = __esm({
43173
43172
  anchorOffset,
43174
43173
  focusNode,
43175
43174
  focusOffset,
43176
- text: text10
43175
+ text: text11
43177
43176
  });
43178
43177
  if (isNoneMode) {
43179
43178
  this.showAllEditors("highlight", true, true);
@@ -44879,32 +44878,32 @@ var init_pdf = __esm({
44879
44878
  deleted: this.isDeleted()
44880
44879
  };
44881
44880
  }
44882
- set data(text10) {
44883
- if (text10 !== this.#text) {
44881
+ set data(text11) {
44882
+ if (text11 !== this.#text) {
44884
44883
  this.#richText = null;
44885
44884
  }
44886
- if (text10 === null) {
44885
+ if (text11 === null) {
44887
44886
  this.#text = "";
44888
44887
  this.#deleted = true;
44889
44888
  return;
44890
44889
  }
44891
- this.#text = text10;
44890
+ this.#text = text11;
44892
44891
  this.#date = /* @__PURE__ */ new Date();
44893
44892
  this.#deleted = false;
44894
44893
  }
44895
44894
  restoreData({
44896
- text: text10,
44895
+ text: text11,
44897
44896
  richText,
44898
44897
  date
44899
44898
  }) {
44900
- this.#text = text10;
44899
+ this.#text = text11;
44901
44900
  this.#richText = richText;
44902
44901
  this.#date = date;
44903
44902
  this.#deleted = false;
44904
44903
  }
44905
- setInitialText(text10, richText = null) {
44906
- this.#initialText = text10;
44907
- this.data = text10;
44904
+ setInitialText(text11, richText = null) {
44905
+ this.#initialText = text11;
44906
+ this.data = text11;
44908
44907
  this.#date = null;
44909
44908
  this.#richText = richText;
44910
44909
  }
@@ -45955,8 +45954,8 @@ var init_pdf = __esm({
45955
45954
  get guessedAltText() {
45956
45955
  return this.#altText?.guessedText;
45957
45956
  }
45958
- async setGuessedAltText(text10) {
45959
- await this.#altText?.setGuessedText(text10);
45957
+ async setGuessedAltText(text11) {
45958
+ await this.#altText?.setGuessedText(text11);
45960
45959
  }
45961
45960
  serializeAltText(isForCopying) {
45962
45961
  return this.#altText?.serialize(isForCopying);
@@ -46003,13 +46002,13 @@ var init_pdf = __esm({
46003
46002
  const {
46004
46003
  data: {
46005
46004
  richText,
46006
- text: text10,
46005
+ text: text11,
46007
46006
  date,
46008
46007
  deleted
46009
46008
  }
46010
46009
  } = this.#comment;
46011
46010
  return {
46012
- text: text10,
46011
+ text: text11,
46013
46012
  richText,
46014
46013
  date,
46015
46014
  deleted,
@@ -56803,13 +56802,13 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
56803
56802
  } = this;
56804
56803
  return this.annotationStorage.getRawValue(`${AnnotationEditorPrefix}${data.id}`)?.popup?.contents || data.contentsObj?.str || "";
56805
56804
  }
56806
- set commentText(text10) {
56805
+ set commentText(text11) {
56807
56806
  const {
56808
56807
  data
56809
56808
  } = this;
56810
56809
  const popup = {
56811
- deleted: !text10,
56812
- contents: text10 || ""
56810
+ deleted: !text11,
56811
+ contents: text11 || ""
56813
56812
  };
56814
56813
  if (!this.annotationStorage.updateEditor(data.id, {
56815
56814
  popup
@@ -56823,7 +56822,7 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
56823
56822
  modificationDate: /* @__PURE__ */ new Date()
56824
56823
  });
56825
56824
  }
56826
- if (!text10) {
56825
+ if (!text11) {
56827
56826
  this.removePopup();
56828
56827
  }
56829
56828
  }
@@ -57375,9 +57374,9 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
57375
57374
  get commentText() {
57376
57375
  return this.editor.comment.text;
57377
57376
  }
57378
- set commentText(text10) {
57379
- this.editor.comment = text10;
57380
- if (!text10) {
57377
+ set commentText(text11) {
57378
+ this.editor.comment = text11;
57379
+ if (!text11) {
57381
57380
  this.removePopup();
57382
57381
  }
57383
57382
  }
@@ -58835,11 +58834,11 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
58835
58834
  this.#commentText ||= this.#firstElement.commentText;
58836
58835
  return this.#commentText;
58837
58836
  }
58838
- set comment(text10) {
58839
- if (text10 === this.comment) {
58837
+ set comment(text11) {
58838
+ if (text11 === this.comment) {
58840
58839
  return;
58841
58840
  }
58842
- this.#firstElement.commentText = this.#commentText = text10;
58841
+ this.#firstElement.commentText = this.#commentText = text11;
58843
58842
  }
58844
58843
  focus() {
58845
58844
  this.#firstElement.container?.focus();
@@ -58956,10 +58955,10 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
58956
58955
  get #fontColor() {
58957
58956
  return this.#html?.attributes?.style?.color || null;
58958
58957
  }
58959
- #makePopupContent(text10) {
58958
+ #makePopupContent(text11) {
58960
58959
  const popupLines = [];
58961
58960
  const popupContent = {
58962
- str: text10,
58961
+ str: text11,
58963
58962
  html: {
58964
58963
  name: "div",
58965
58964
  attributes: {
@@ -58977,7 +58976,7 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
58977
58976
  fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--total-scale-factor))` : ""
58978
58977
  }
58979
58978
  };
58980
- for (const line of text10.split("\n")) {
58979
+ for (const line of text11.split("\n")) {
58981
58980
  popupLines.push({
58982
58981
  name: "span",
58983
58982
  value: line,
@@ -60486,9 +60485,9 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
60486
60485
  if (savedText === newText) {
60487
60486
  return;
60488
60487
  }
60489
- const setText = (text10) => {
60490
- this.#content = text10;
60491
- if (!text10) {
60488
+ const setText = (text11) => {
60489
+ this.#content = text11;
60490
+ if (!text11) {
60492
60491
  this.remove();
60493
60492
  return;
60494
60493
  }
@@ -64303,7 +64302,7 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
64303
64302
  const uint8Buf = this.#toUint8(grayImage);
64304
64303
  return [uint8Buf, newWidth, newHeight];
64305
64304
  }
64306
- static extractContoursFromText(text10, {
64305
+ static extractContoursFromText(text11, {
64307
64306
  fontFamily,
64308
64307
  fontStyle,
64309
64308
  fontWeight
@@ -64322,7 +64321,7 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
64322
64321
  fontBoundingBoxAscent,
64323
64322
  fontBoundingBoxDescent,
64324
64323
  width
64325
- } = ctx.measureText(text10);
64324
+ } = ctx.measureText(text11);
64326
64325
  const SCALE = 1.5;
64327
64326
  const canvasWidth = Math.ceil(Math.max(Math.abs(actualBoundingBoxLeft) + Math.abs(actualBoundingBoxRight) || 0, width) * SCALE);
64328
64327
  const canvasHeight = Math.ceil(Math.max(Math.abs(actualBoundingBoxAscent) + Math.abs(actualBoundingBoxDescent) || fontSize, Math.abs(fontBoundingBoxAscent) + Math.abs(fontBoundingBoxDescent) || fontSize) * SCALE);
@@ -64336,7 +64335,7 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
64336
64335
  ctx.fillStyle = "white";
64337
64336
  ctx.fillRect(0, 0, canvasWidth, canvasHeight);
64338
64337
  ctx.fillStyle = "black";
64339
- ctx.fillText(text10, canvasWidth * (SCALE - 1) / 2, canvasHeight * (3 - SCALE) / 2);
64338
+ ctx.fillText(text11, canvasWidth * (SCALE - 1) / 2, canvasHeight * (3 - SCALE) / 2);
64340
64339
  const uint8Buf = this.#toUint8(ctx.getImageData(0, 0, canvasWidth, canvasHeight).data);
64341
64340
  const histogram = this.#getHistogram(uint8Buf);
64342
64341
  const threshold = this.#guessThreshold(histogram);
@@ -64838,7 +64837,7 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
64838
64837
  } = this.parent.viewport;
64839
64838
  return SignatureExtractor.process(bitmap, pageWidth, pageHeight, rotation, _SignatureEditor._INNER_MARGIN);
64840
64839
  }
64841
- getFromText(text10, fontInfo) {
64840
+ getFromText(text11, fontInfo) {
64842
64841
  const {
64843
64842
  rawDims: {
64844
64843
  pageWidth,
@@ -64846,7 +64845,7 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
64846
64845
  },
64847
64846
  rotation
64848
64847
  } = this.parent.viewport;
64849
- return SignatureExtractor.extractContoursFromText(text10, fontInfo, pageWidth, pageHeight, rotation, _SignatureEditor._INNER_MARGIN);
64848
+ return SignatureExtractor.extractContoursFromText(text11, fontInfo, pageWidth, pageHeight, rotation, _SignatureEditor._INNER_MARGIN);
64850
64849
  }
64851
64850
  getDrawnSignature(curves) {
64852
64851
  const {
@@ -116189,11 +116188,11 @@ function pluralArgNames(pattern) {
116189
116188
  return out2;
116190
116189
  }
116191
116190
  function formatInterpolated(pattern, params, resolvedByKey, ctx) {
116192
- const numeric = pluralArgNames(pattern);
116191
+ const numeric2 = pluralArgNames(pattern);
116193
116192
  const args = {};
116194
116193
  for (const [k2, raw] of Object.entries(params)) {
116195
116194
  const v2 = k2 in resolvedByKey ? resolvedByKey[k2] : raw;
116196
- if (!numeric.has(k2)) {
116195
+ if (!numeric2.has(k2)) {
116197
116196
  args[k2] = v2;
116198
116197
  continue;
116199
116198
  }
@@ -116729,9 +116728,9 @@ function withExtras(name, render) {
116729
116728
  Wrapped.displayName = name;
116730
116729
  return Wrapped;
116731
116730
  }
116732
- function rememberReveal(text10, n2) {
116731
+ function rememberReveal(text11, n2) {
116733
116732
  if (revealProgress.size > 500) revealProgress.clear();
116734
- revealProgress.set(text10, n2);
116733
+ revealProgress.set(text11, n2);
116735
116734
  }
116736
116735
  function revealHtml(html, shown2, fade) {
116737
116736
  let w2 = 0;
@@ -117575,8 +117574,8 @@ function applyA11ySemantics(node, ctx, extra) {
117575
117574
  extra["aria-live"] = str11(announce.politeness) === "assertive" ? "assertive" : "polite";
117576
117575
  extra["aria-atomic"] = "true";
117577
117576
  extra["aria-relevant"] = trigger === "on_appear" ? "additions" : trigger === "both" ? "additions text" : "text";
117578
- const text10 = str11(announce.text);
117579
- if (text10 && extra["aria-label"] == null) extra["aria-label"] = text10;
117577
+ const text11 = str11(announce.text);
117578
+ if (text11 && extra["aria-label"] == null) extra["aria-label"] = text11;
117580
117579
  }
117581
117580
  }
117582
117581
  return hint;
@@ -119902,13 +119901,13 @@ var init_renderNode = __esm({
119902
119901
  const C2 = ctx.color;
119903
119902
  const isBoundText = typeof props.textPath === "string" && isBinding(props.textPath);
119904
119903
  const bound = useResolvedScalar(isBoundText ? props.textPath : void 0, ctx);
119905
- const text10 = isBoundText ? typeof bound === "string" || typeof bound === "number" ? String(bound) : "" : literalErrorText;
119904
+ const text11 = isBoundText ? typeof bound === "string" || typeof bound === "number" ? String(bound) : "" : literalErrorText;
119906
119905
  if (props.visible === false) return null;
119907
- if (isBoundText && !text10) return null;
119906
+ if (isBoundText && !text11) return null;
119908
119907
  const c2 = (props.severity ?? "error") === "warning" ? C2("warning", "#E89F00") : C2("danger", "#E62214");
119909
119908
  return /* @__PURE__ */ jsxs8("div", { role: "alert", style: { display: "flex", gap: 6, alignItems: "center", color: c2, fontSize: pxToRem(13), fontFamily: bodyFont(ctx), ...wrap }, children: [
119910
119909
  /* @__PURE__ */ jsx11("span", { "aria-hidden": "true", children: "\u26A0" }),
119911
- text10
119910
+ text11
119912
119911
  ] });
119913
119912
  });
119914
119913
  FormView = withExtras("FormView", ({ props, ctx, wrap }) => {
@@ -120534,7 +120533,7 @@ var init_renderNode = __esm({
120534
120533
  const data = base + pdfOpenFragment(sourceHash, { page, zoom: zoomable ? view.zoom : null, fitWidth: !zoomable });
120535
120534
  const label3 = typeof props.title === "string" && props.title ? props.title : "PDF document";
120536
120535
  const documentStyle = showPageControls || zoomable || allowShare ? { display: "block", width: "100%", flex: "1 1 auto", minHeight: ph ? 0 : 280, border: "none" } : frame;
120537
- const object8 = typeof window === "undefined" ? /* @__PURE__ */ jsx11("object", { "data-himalaya-pdf": "static-fallback", data, type: "application/pdf", "aria-label": label3, style: documentStyle }) : /* @__PURE__ */ jsx11(React11.Suspense, { fallback: /* @__PURE__ */ jsx11("div", { "data-himalaya-pdf": "loading", role: "img", "aria-label": "loading document", "aria-busy": "true", style: documentStyle }), children: /* @__PURE__ */ jsx11(
120536
+ const object9 = typeof window === "undefined" ? /* @__PURE__ */ jsx11("object", { "data-himalaya-pdf": "static-fallback", data, type: "application/pdf", "aria-label": label3, style: documentStyle }) : /* @__PURE__ */ jsx11(React11.Suspense, { fallback: /* @__PURE__ */ jsx11("div", { "data-himalaya-pdf": "loading", role: "img", "aria-label": "loading document", "aria-busy": "true", style: documentStyle }), children: /* @__PURE__ */ jsx11(
120538
120537
  PdfDocumentCanvas,
120539
120538
  {
120540
120539
  src: loadSrc ?? src,
@@ -120548,7 +120547,7 @@ var init_renderNode = __esm({
120548
120547
  style: documentStyle
120549
120548
  }
120550
120549
  ) });
120551
- if (!showPageControls && !zoomable && !allowShare) return object8;
120550
+ if (!showPageControls && !zoomable && !allowShare) return object9;
120552
120551
  const C2 = ctx.color;
120553
120552
  const go2 = (p2) => setNav({ from: rawUrl, page: Math.max(1, pageCount != null ? Math.min(p2, pageCount) : p2), zoom: view.zoom });
120554
120553
  const zoomBy = (d2) => setNav({ from: rawUrl, page: view.page, zoom: pdfZoomStep(view.zoom ?? sourceZoomPercent(sourceHash) ?? null, d2) });
@@ -120566,7 +120565,7 @@ var init_renderNode = __esm({
120566
120565
  const downloadHref = plan?.mode === "retype" ? base : directDoc?.blobUrl ?? null;
120567
120566
  const openHref = base + pdfOpenFragment(sourceHash, { page: shownPage, zoom: zoomable ? view.zoom : null, viewerChrome: true });
120568
120567
  return /* @__PURE__ */ jsxs8("div", { "data-himalaya-pdf": "reader", style: { ...frame, display: "flex", flexDirection: "column", background: C2("surfaceTertiary", "#f4f4f4") }, children: [
120569
- object8,
120568
+ object9,
120570
120569
  /* @__PURE__ */ jsxs8(
120571
120570
  "div",
120572
120571
  {
@@ -120675,8 +120674,8 @@ var init_renderNode = __esm({
120675
120674
  const look = pickerFieldLook(props.field, ctx);
120676
120675
  const shownSel = ctx.onAction ? sel : ctx.empty ? null : selectedId;
120677
120676
  const picked = opts.find((o2) => o2 != null && String(o2.id) === String(shownSel ?? ""));
120678
- const text10 = picked ? labelOf(picked) : String(placeholderText || "Select");
120679
- const box = /* @__PURE__ */ jsx11(PickerFieldBox, { look, ctx, option: picked, text: text10, isPlaceholder: !picked, font: bodyFont(ctx) });
120677
+ const text11 = picked ? labelOf(picked) : String(placeholderText || "Select");
120678
+ const box = /* @__PURE__ */ jsx11(PickerFieldBox, { look, ctx, option: picked, text: text11, isPlaceholder: !picked, font: bodyFont(ctx) });
120680
120679
  if (!ctx.onAction) return /* @__PURE__ */ jsx11("div", { style: { width: "100%", ...wrap }, children: box });
120681
120680
  return /* @__PURE__ */ jsxs8("div", { ...{ [A11Y_PART]: "root" }, "data-hm-picker-focus": "", style: { position: "relative", width: "100%", ...wrap }, children: [
120682
120681
  box,
@@ -120695,7 +120694,7 @@ var init_renderNode = __esm({
120695
120694
  ...pickerA11yProps,
120696
120695
  style: { position: "absolute", inset: 0, width: "100%", height: "100%", opacity: 0, cursor: "pointer", margin: 0, border: 0, fontSize: pxToRem(15) },
120697
120696
  children: [
120698
- !picked && /* @__PURE__ */ jsx11("option", { value: "", disabled: true, children: text10 }),
120697
+ !picked && /* @__PURE__ */ jsx11("option", { value: "", disabled: true, children: text11 }),
120699
120698
  opts.map((o2, i2) => /* @__PURE__ */ jsx11("option", { value: o2?.id, disabled: !pickerOptionPickable(o2), children: labelOf(o2) }, o2?.id ?? i2))
120700
120699
  ]
120701
120700
  }
@@ -121145,37 +121144,37 @@ var init_renderNode = __esm({
121145
121144
  REVEAL_BUFFER = 12;
121146
121145
  revealProgress = /* @__PURE__ */ new Map();
121147
121146
  countWords = (s2) => s2.split(/\s+/).filter((t2) => t2 !== "").length;
121148
- RevealText = ({ text: text10, reduce, markdownHtml }) => {
121149
- const tokens2 = React11.useMemo(() => text10.split(/(\s+)/).filter((t2) => t2 !== ""), [text10]);
121147
+ RevealText = ({ text: text11, reduce, markdownHtml }) => {
121148
+ const tokens2 = React11.useMemo(() => text11.split(/(\s+)/).filter((t2) => t2 !== ""), [text11]);
121150
121149
  const total = React11.useMemo(
121151
- () => markdownHtml != null ? revealHtml(markdownHtml, 0, void 0).total : countWords(text10),
121152
- [text10, markdownHtml]
121150
+ () => markdownHtml != null ? revealHtml(markdownHtml, 0, void 0).total : countWords(text11),
121151
+ [text11, markdownHtml]
121153
121152
  );
121154
121153
  const [shown2, setShown] = React11.useState(total);
121155
121154
  const prevRef = React11.useRef(null);
121156
121155
  useIsomorphicLayoutEffect(() => {
121157
121156
  const prev = prevRef.current;
121158
- prevRef.current = text10;
121157
+ prevRef.current = text11;
121159
121158
  if (reduce) {
121160
- rememberReveal(text10, total);
121159
+ rememberReveal(text11, total);
121161
121160
  setShown(total);
121162
121161
  return;
121163
121162
  }
121164
- let start = revealProgress.get(text10);
121165
- if (start == null) start = prev != null && text10.startsWith(prev) ? revealProgress.get(prev) ?? countWords(prev) : 0;
121163
+ let start = revealProgress.get(text11);
121164
+ if (start == null) start = prev != null && text11.startsWith(prev) ? revealProgress.get(prev) ?? countWords(prev) : 0;
121166
121165
  start = Math.max(start, total - REVEAL_BUFFER);
121167
- rememberReveal(text10, start);
121166
+ rememberReveal(text11, start);
121168
121167
  setShown(start);
121169
121168
  if (start >= total) return;
121170
121169
  let n2 = start;
121171
121170
  const id = setInterval(() => {
121172
121171
  n2 += 1;
121173
- rememberReveal(text10, n2);
121172
+ rememberReveal(text11, n2);
121174
121173
  setShown(n2);
121175
121174
  if (n2 >= total) clearInterval(id);
121176
121175
  }, REVEAL_RELEASE_MS);
121177
121176
  return () => clearInterval(id);
121178
- }, [text10, reduce, total]);
121177
+ }, [text11, reduce, total]);
121179
121178
  const fade = reduce ? void 0 : `opacity ${REVEAL_FADE_MS}ms ease-out`;
121180
121179
  if (markdownHtml != null) {
121181
121180
  return /* @__PURE__ */ jsx11(
@@ -122178,7 +122177,7 @@ var init_renderNode = __esm({
122178
122177
  TooltipNode = withExtras("TooltipNode", ({ props, ctx, wrap }) => {
122179
122178
  const C2 = ctx.color;
122180
122179
  const title = useBoundString(props.title, ctx);
122181
- const text10 = useBoundString(props.text, ctx);
122180
+ const text11 = useBoundString(props.text, ctx);
122182
122181
  const rich = title !== "";
122183
122182
  const trigger = resolveTooltipTrigger(props.trigger, "pointer");
122184
122183
  const edge = resolveOverlayEdge("Tooltip", props.edge);
@@ -122268,7 +122267,7 @@ var init_renderNode = __esm({
122268
122267
  // A held press would otherwise open the browser's own context menu over the bubble.
122269
122268
  onContextMenu: (e2) => e2.preventDefault()
122270
122269
  };
122271
- const hint = [title, text10].filter((s2) => s2 !== "").join(". ");
122270
+ const hint = [title, text11].filter((s2) => s2 !== "").join(". ");
122272
122271
  const anchor = props.anchor ? renderNode(props.anchor, ctx) : null;
122273
122272
  const wrapperHintId = `hm-tip-hint${React11.useId()}`;
122274
122273
  useIsomorphicLayoutEffect(() => {
@@ -122301,7 +122300,7 @@ var init_renderNode = __esm({
122301
122300
  ] }) }),
122302
122301
  open && /* @__PURE__ */ jsxs8("div", { ref: bubbleRef, role: "tooltip", "data-hm-tooltip-edge": placed, style: { position: "absolute", zIndex: 45, maxWidth: Math.min(240, placement.maxWidth), overflowWrap: placement.maxWidth < 240 ? "anywhere" : void 0, width: "max-content", background: C2("textPrimary", "#13171e"), color: C2("textOnAccent", "#fff"), borderRadius: 8, padding: rich ? "10px 12px" : "6px 10px", fontFamily: bodyFont(ctx), fontSize: pxToRem(13), lineHeight: 1.35, boxShadow: "0 4px 14px rgba(0,0,0,.18)", ...overlayEdgeStyle(placed, TOOLTIP_GAP), translate: `${placement.x}px ${placement.y}px` }, children: [
122303
122302
  rich && /* @__PURE__ */ jsx11("div", { style: { fontWeight: 700, marginBottom: 3 }, children: title }),
122304
- text10
122303
+ text11
122305
122304
  ] })
122306
122305
  ] });
122307
122306
  });
@@ -124895,8 +124894,8 @@ function buildRenderTree(node, path2 = "$", provider = null, itemScope = void 0,
124895
124894
  const asText3 = VALUE_PATH_TEXT.get(type);
124896
124895
  if (typeof valuePath === "string" && asText3 && (valuePath.startsWith("$service:") || /^\$item\.[^.]/.test(valuePath))) {
124897
124896
  const r3 = resolveTreeScalar(valuePath, provider, itemScope);
124898
- const text10 = asText3(r3, props);
124899
- if (text10 !== void 0) values.value = text10;
124897
+ const text11 = asText3(r3, props);
124898
+ if (text11 !== void 0) values.value = text11;
124900
124899
  else if (r3 !== void 0 && r3 !== null) {
124901
124900
  delete values.value;
124902
124901
  }
@@ -126845,11 +126844,11 @@ async function handleOwnerChatRequest(req, res) {
126845
126844
  return sendJson(res, 400, { error: "invalid_json" }, cors);
126846
126845
  }
126847
126846
  const chatroomId = (parsed.chatroomId ?? "").trim();
126848
- const text10 = (parsed.text ?? "").trim();
126849
- if (!chatroomId || !text10) return sendJson(res, 400, { error: "chatroomId_and_text_required" }, cors);
126847
+ const text11 = (parsed.text ?? "").trim();
126848
+ if (!chatroomId || !text11) return sendJson(res, 400, { error: "chatroomId_and_text_required" }, cors);
126850
126849
  const metaSiteId = (parsed.metaSiteId ?? "").trim() || await resolveMetaSiteId();
126851
126850
  if (!metaSiteId) return sendJson(res, 400, { error: "no_meta_site" }, cors);
126852
- const result = await sendChatMessageLive(metaSiteId, chatroomId, text10);
126851
+ const result = await sendChatMessageLive(metaSiteId, chatroomId, text11);
126853
126852
  if (result.ok) return sendJson(res, 200, { ok: true, message: result.message }, cors);
126854
126853
  return sendJson(res, result.status >= 400 && result.status < 600 ? result.status : 502, { ok: false, status: result.status, error: result.error }, cors);
126855
126854
  }
@@ -127143,13 +127142,13 @@ function invalidate(state, ...screenIds) {
127143
127142
  publishSSE(state, "screen.invalidated", { screenIds });
127144
127143
  }
127145
127144
  function publishSSE(state, type, payload) {
127146
- const text10 = `event: ${type}
127145
+ const text11 = `event: ${type}
127147
127146
  data: ${JSON.stringify(payload)}
127148
127147
 
127149
127148
  `;
127150
127149
  for (const res of [...state.sseClients]) {
127151
127150
  try {
127152
- res.write(text10);
127151
+ res.write(text11);
127153
127152
  } catch {
127154
127153
  state.sseClients.delete(res);
127155
127154
  }
@@ -127165,13 +127164,13 @@ function publishAdminSSE(state, type, payload) {
127165
127164
  state.lastDeviceScreen.set(key3, screenId);
127166
127165
  }
127167
127166
  }
127168
- const text10 = `event: ${type}
127167
+ const text11 = `event: ${type}
127169
127168
  data: ${JSON.stringify(payload)}
127170
127169
 
127171
127170
  `;
127172
127171
  for (const res of [...state.adminClients]) {
127173
127172
  try {
127174
- res.write(text10);
127173
+ res.write(text11);
127175
127174
  } catch {
127176
127175
  state.adminClients.delete(res);
127177
127176
  }
@@ -127192,12 +127191,12 @@ function publishDevReady(state, res, extra = {}) {
127192
127191
  hotReloadEnabled: state.hotReloadEnabled,
127193
127192
  ...extra
127194
127193
  };
127195
- const text10 = `event: dev.ready
127194
+ const text11 = `event: dev.ready
127196
127195
  data: ${JSON.stringify(payload)}
127197
127196
 
127198
127197
  `;
127199
127198
  if (res) {
127200
- res.write(text10);
127199
+ res.write(text11);
127201
127200
  } else {
127202
127201
  publishSSE(state, "dev.ready", payload);
127203
127202
  }
@@ -129246,9 +129245,9 @@ async function handleLiveSubscription(req, res, state) {
129246
129245
  },
129247
129246
  body: JSON.stringify({ ...body, app })
129248
129247
  });
129249
- const text10 = await upstream.text();
129248
+ const text11 = await upstream.text();
129250
129249
  res.writeHead(upstream.status, { "Content-Type": "application/json", ...cors });
129251
- res.end(text10 || JSON.stringify({ ok: upstream.ok }));
129250
+ res.end(text11 || JSON.stringify({ ok: upstream.ok }));
129252
129251
  } catch (error) {
129253
129252
  sendJson(res, 502, { error: "admin_server_unreachable", detail: String(error) }, cors);
129254
129253
  }
@@ -130203,8 +130202,8 @@ function sha256hex(b2) {
130203
130202
  function stableStringify(value) {
130204
130203
  if (value === null || typeof value !== "object") return JSON.stringify(value);
130205
130204
  if (Array.isArray(value)) return "[" + value.map(stableStringify).join(",") + "]";
130206
- const object8 = value;
130207
- return "{" + Object.keys(object8).sort().map((key3) => JSON.stringify(key3) + ":" + stableStringify(object8[key3])).join(",") + "}";
130205
+ const object9 = value;
130206
+ return "{" + Object.keys(object9).sort().map((key3) => JSON.stringify(key3) + ":" + stableStringify(object9[key3])).join(",") + "}";
130208
130207
  }
130209
130208
  function manifestContent(m2) {
130210
130209
  const {
@@ -131537,10 +131536,10 @@ function componentModuleIds() {
131537
131536
  function usageStringCopyFor(permissionCopy) {
131538
131537
  const out2 = {};
131539
131538
  for (const [rawId, copy] of Object.entries(permissionCopy ?? {})) {
131540
- const text10 = typeof copy === "string" ? copy.trim() : "";
131541
- if (!text10) continue;
131539
+ const text11 = typeof copy === "string" ? copy.trim() : "";
131540
+ if (!text11) continue;
131542
131541
  const req = CAPABILITY_NATIVE[catalogKey(rawId)];
131543
- for (const u2 of [...req?.ios?.usageStrings ?? [], ...req?.macos?.usageStrings ?? []]) out2[u2.key] = text10;
131542
+ for (const u2 of [...req?.ios?.usageStrings ?? [], ...req?.macos?.usageStrings ?? []]) out2[u2.key] = text11;
131544
131543
  }
131545
131544
  return out2;
131546
131545
  }
@@ -132465,10 +132464,10 @@ function netTransport(rules) {
132465
132464
  if (res.needsUpstream) {
132466
132465
  throw new Error(`net fixture rule ${res.ruleId} is a \`transform\` rule, which needs a real upstream \u2014 not usable in a hermetic crawl`);
132467
132466
  }
132468
- const { status, body: text10 } = res.resolved;
132467
+ const { status, body: text11 } = res.resolved;
132469
132468
  if (status < 200 || status >= 300) throw new Error(`Wix ${status} for ${method} ${bare}`);
132470
132469
  try {
132471
- return text10 ? JSON.parse(text10) : {};
132470
+ return text11 ? JSON.parse(text11) : {};
132472
132471
  } catch {
132473
132472
  return {};
132474
132473
  }
@@ -132512,10 +132511,10 @@ function layeredTransport(layers3) {
132512
132511
  });
132513
132512
  if (res.matched) {
132514
132513
  if (res.needsUpstream) throw new Error(`net fixture rule ${res.ruleId} is a \`transform\` rule, which needs a real upstream \u2014 not usable in a hermetic crawl`);
132515
- const { status, body: text10 } = res.resolved;
132514
+ const { status, body: text11 } = res.resolved;
132516
132515
  if (status < 200 || status >= 300) throw new Error(`Wix ${status} for ${m2} ${bare}`);
132517
132516
  try {
132518
- return text10 ? JSON.parse(text10) : {};
132517
+ return text11 ? JSON.parse(text11) : {};
132519
132518
  } catch {
132520
132519
  return {};
132521
132520
  }
@@ -134689,13 +134688,13 @@ var init_build2 = __esm({
134689
134688
  });
134690
134689
 
134691
134690
  // ../mobile-dist/release-pin.ts
134692
- function withPinnedRelease(text10, releaseId) {
134693
- if (!releaseId) return text10;
134691
+ function withPinnedRelease(text11, releaseId) {
134692
+ if (!releaseId) return text11;
134694
134693
  let cfg;
134695
134694
  try {
134696
- cfg = JSON.parse(text10);
134695
+ cfg = JSON.parse(text11);
134697
134696
  } catch {
134698
- return text10;
134697
+ return text11;
134699
134698
  }
134700
134699
  cfg.releaseId = releaseId;
134701
134700
  cfg.releasePinned = true;
@@ -135068,18 +135067,18 @@ async function bakeCatalogs(app, locale, fetchCatalog, putDoc) {
135068
135067
  const source = locale?.default ?? "en";
135069
135068
  const tags = [.../* @__PURE__ */ new Set([source, ...declared])];
135070
135069
  for (const tag of tags) {
135071
- const text10 = await fetchCatalog(tag);
135072
- if (!text10) continue;
135073
- if (!declared.length && !servesMessages(text10)) continue;
135074
- const hash2 = sha2563(text10);
135075
- await putDoc(app, hash2, text10);
135070
+ const text11 = await fetchCatalog(tag);
135071
+ if (!text11) continue;
135072
+ if (!declared.length && !servesMessages(text11)) continue;
135073
+ const hash2 = sha2563(text11);
135074
+ await putDoc(app, hash2, text11);
135076
135075
  out2[tag] = hash2;
135077
135076
  }
135078
135077
  return out2;
135079
135078
  }
135080
- function servesMessages(text10) {
135079
+ function servesMessages(text11) {
135081
135080
  try {
135082
- const m2 = JSON.parse(text10).messages;
135081
+ const m2 = JSON.parse(text11).messages;
135083
135082
  return !!m2 && typeof m2 === "object" && Object.keys(m2).length > 0;
135084
135083
  } catch {
135085
135084
  return false;
@@ -135174,9 +135173,9 @@ async function snapshotTokens(app, base, fetchTokens, put) {
135174
135173
  }
135175
135174
  };
135176
135175
  }
135177
- const text10 = await res.text();
135178
- await put(text10);
135179
- return { hash: sha2563(text10) };
135176
+ const text11 = await res.text();
135177
+ await put(text11);
135178
+ return { hash: sha2563(text11) };
135180
135179
  }
135181
135180
  function tokensSnapshotMessage(app, base, status) {
135182
135181
  const why = status === 400 ? `the dev-server rejected the app id as malformed (400 bad_app). It must be lowercase letters, digits and hyphens, starting with a letter or digit, at most 63 characters, with at most one interior dot \u2014 so a leading underscore or an uppercase letter fails, on every build of that app. A single dot is FINE (an owner-namespaced slug), so do not remove one to get past this` : `${status} from the tokens route`;
@@ -135277,23 +135276,23 @@ function maximumBinaryVersion(current, candidate) {
135277
135276
  }
135278
135277
  return current;
135279
135278
  }
135280
- async function withStoreNavBundle(text10, address) {
135279
+ async function withStoreNavBundle(text11, address) {
135281
135280
  let cfg;
135282
135281
  try {
135283
- cfg = JSON.parse(text10);
135282
+ cfg = JSON.parse(text11);
135284
135283
  } catch {
135285
- return text10;
135284
+ return text11;
135286
135285
  }
135287
135286
  const refs = [cfg?.app?.logicBundle, cfg?.navigation?.navLogicBundle, cfg?.navLogicBundle].filter(
135288
135287
  (r3) => !!r3 && typeof r3 === "object" && typeof r3.url === "string"
135289
135288
  );
135290
- if (refs.length === 0) return text10;
135289
+ if (refs.length === 0) return text11;
135291
135290
  const resolved2 = [];
135292
135291
  for (const ref of refs) {
135293
135292
  const name = bundleNameFromUrl(ref.url);
135294
- if (!name) return text10;
135293
+ if (!name) return text11;
135295
135294
  const addressed = await address(name);
135296
- if (!addressed) return text10;
135295
+ if (!addressed) return text11;
135297
135296
  resolved2.push({ ref, url: addressed.url, sri: addressed.sri });
135298
135297
  }
135299
135298
  for (const { ref, url, sri: integrity2 } of resolved2) {
@@ -135302,10 +135301,10 @@ async function withStoreNavBundle(text10, address) {
135302
135301
  }
135303
135302
  return JSON.stringify(cfg);
135304
135303
  }
135305
- function linkableScreenIdsFrom(text10) {
135304
+ function linkableScreenIdsFrom(text11) {
135306
135305
  let cfg;
135307
135306
  try {
135308
- cfg = JSON.parse(text10);
135307
+ cfg = JSON.parse(text11);
135309
135308
  } catch {
135310
135309
  return [];
135311
135310
  }
@@ -135317,24 +135316,24 @@ function linkableScreenIdsFrom(text10) {
135317
135316
  }
135318
135317
  return [...ids];
135319
135318
  }
135320
- function withoutDevOnlyAppConfig(text10) {
135319
+ function withoutDevOnlyAppConfig(text11) {
135321
135320
  let cfg;
135322
135321
  try {
135323
- cfg = JSON.parse(text10);
135322
+ cfg = JSON.parse(text11);
135324
135323
  } catch {
135325
- return text10;
135324
+ return text11;
135326
135325
  }
135327
- if (!cfg || typeof cfg !== "object" || !("devGatewayConfig" in cfg)) return text10;
135326
+ if (!cfg || typeof cfg !== "object" || !("devGatewayConfig" in cfg)) return text11;
135328
135327
  delete cfg.devGatewayConfig;
135329
135328
  return JSON.stringify(cfg);
135330
135329
  }
135331
- function withProdServeAppConfig(text10, prod) {
135332
- if (!prod?.serve) return text10;
135330
+ function withProdServeAppConfig(text11, prod) {
135331
+ if (!prod?.serve) return text11;
135333
135332
  let cfg;
135334
135333
  try {
135335
- cfg = JSON.parse(text10);
135334
+ cfg = JSON.parse(text11);
135336
135335
  } catch {
135337
- return text10;
135336
+ return text11;
135338
135337
  }
135339
135338
  cfg.useProdServe = true;
135340
135339
  cfg.prodServeBaseUrl = prod.serve;
@@ -135717,10 +135716,10 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
135717
135716
  if (bytes2.length === 0 || bytes2.length > MAX_AUTHORING_DOC_BYTES) {
135718
135717
  throw new Error(`${file2} must be non-empty and at most ${MAX_AUTHORING_DOC_BYTES} bytes to ship with a release.`);
135719
135718
  }
135720
- const text10 = bytes2.toString("utf8");
135721
- if (!Buffer.from(text10, "utf8").equals(bytes2)) throw new Error(`${file2} must be canonical UTF-8 Markdown.`);
135719
+ const text11 = bytes2.toString("utf8");
135720
+ if (!Buffer.from(text11, "utf8").equals(bytes2)) throw new Error(`${file2} must be canonical UTF-8 Markdown.`);
135722
135721
  const hash2 = sha2563(bytes2);
135723
- await store.putDoc(app, hash2, text10);
135722
+ await store.putDoc(app, hash2, text11);
135724
135723
  authoringDocs[name] = { sha256: hash2, sri: sri2(bytes2), bytes: bytes2.length, contentType: "text/markdown; charset=utf-8" };
135725
135724
  }
135726
135725
  }
@@ -135873,10 +135872,10 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
135873
135872
  base = BAKE_OFFLINE_BASE;
135874
135873
  }
135875
135874
  const devFetch = (url, init) => dev.inject(new Request(url, init));
135876
- const depthRefusalFromText = (status, text10) => {
135875
+ const depthRefusalFromText = (status, text11) => {
135877
135876
  if (status !== 422) return null;
135878
135877
  try {
135879
- const body = JSON.parse(text10);
135878
+ const body = JSON.parse(text11);
135880
135879
  return body?.error === "depth_budget_exceeded" && body.finding ? body.finding : null;
135881
135880
  } catch {
135882
135881
  return null;
@@ -135884,8 +135883,8 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
135884
135883
  };
135885
135884
  const depthRefusalOf = async (res) => depthRefusalFromText(res.status, await res.text());
135886
135885
  const recordUnbuilt = async (screenId, res) => {
135887
- const text10 = await res.text();
135888
- const finding = depthRefusalFromText(res.status, text10);
135886
+ const text11 = await res.text();
135887
+ const finding = depthRefusalFromText(res.status, text11);
135889
135888
  if (finding) {
135890
135889
  failedToBuild.push({ screenId, status: res.status, error: finding.message });
135891
135890
  if (!depthRefusals.some((r3) => r3.screenId === screenId)) depthRefusals.push({ screenId, finding });
@@ -135894,7 +135893,7 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
135894
135893
  }
135895
135894
  return;
135896
135895
  }
135897
- failedToBuild.push({ screenId, status: res.status, error: text10.slice(0, 2e3) });
135896
+ failedToBuild.push({ screenId, status: res.status, error: text11.slice(0, 2e3) });
135898
135897
  };
135899
135898
  try {
135900
135899
  for (const screenId of screenIds) {
@@ -136139,11 +136138,11 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
136139
136138
  ok: res.ok,
136140
136139
  status: res.status,
136141
136140
  text: async () => {
136142
- const text10 = await res.text();
136141
+ const text11 = await res.text();
136143
136142
  try {
136144
- const doc = JSON.parse(text10);
136143
+ const doc = JSON.parse(text11);
136145
136144
  if (!publishedFontPlan) {
136146
- if (!("fontFaces" in doc)) return text10;
136145
+ if (!("fontFaces" in doc)) return text11;
136147
136146
  const kept = publishableFontFaces(doc.fontFaces);
136148
136147
  if (kept) doc.fontFaces = kept;
136149
136148
  else delete doc.fontFaces;
@@ -136152,12 +136151,12 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
136152
136151
  doc.fontFaces = servedProjection(publishedFontPlan);
136153
136152
  return JSON.stringify(doc);
136154
136153
  } catch {
136155
- return text10;
136154
+ return text11;
136156
136155
  }
136157
136156
  }
136158
136157
  };
136159
136158
  },
136160
- (text10) => store.putTokens(app, text10)
136159
+ (text11) => store.putTokens(app, text11)
136161
136160
  );
136162
136161
  if (snapshot2.hash) tokensHash = snapshot2.hash;
136163
136162
  if (snapshot2.failure) {
@@ -136187,14 +136186,14 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
136187
136186
  if (streamPolicyErrors.length) {
136188
136187
  throw new Error(`invalid streamPolicy for release ${app}: ${streamPolicyErrors.join("; ")}`);
136189
136188
  }
136190
- const text10 = await withStoreNavBundle(prodText, async (name) => {
136189
+ const text11 = await withStoreNavBundle(prodText, async (name) => {
136191
136190
  const hash2 = await addressBundle(name) ?? null;
136192
136191
  const entry = hash2 ? bundles[name] : void 0;
136193
136192
  return entry ? { url: store.bundleUrl(app, entry.sha256), sri: entry.sri } : null;
136194
136193
  });
136195
- await store.putAppConfig(app, text10);
136196
- appConfigHash = sha2563(text10);
136197
- if (collect2?.descriptors) for (const id of linkableScreenIdsFrom(text10)) linkable.add(id);
136194
+ await store.putAppConfig(app, text11);
136195
+ appConfigHash = sha2563(text11);
136196
+ if (collect2?.descriptors) for (const id of linkableScreenIdsFrom(text11)) linkable.add(id);
136198
136197
  }
136199
136198
  const ahRes = await devFetch(`${base}/v1/action-handlers/${encodeURIComponent(app)}`, { headers: { "X-Himalaya-App": app } });
136200
136199
  if (ahRes.ok) {
@@ -137123,8 +137122,8 @@ function penalty(m2, size) {
137123
137122
  score += Math.floor(Math.abs(dark * 20 - total * 10) / total) * 10;
137124
137123
  return score;
137125
137124
  }
137126
- function encodeQr(text10) {
137127
- const bytes2 = [...new TextEncoder().encode(text10)];
137125
+ function encodeQr(text11) {
137126
+ const bytes2 = [...new TextEncoder().encode(text11)];
137128
137127
  const version5 = fitVersion(bytes2.length);
137129
137128
  if (!version5) {
137130
137129
  throw new RangeError(`QR payload too long: ${bytes2.length} bytes exceeds version ${QR_MAX_VERSION} at EC level L`);
@@ -137364,14 +137363,14 @@ function headline(changes) {
137364
137363
  function boardLines(changes) {
137365
137364
  const lines = [];
137366
137365
  for (const c2 of changes.items) {
137367
- const text10 = lineOf(c2);
137368
- const same3 = lines.find((l2) => l2.text === text10);
137366
+ const text11 = lineOf(c2);
137367
+ const same3 = lines.find((l2) => l2.text === text11);
137369
137368
  if (same3) {
137370
137369
  same3.n++;
137371
137370
  continue;
137372
137371
  }
137373
137372
  lines.push({
137374
- text: text10,
137373
+ text: text11,
137375
137374
  n: 1,
137376
137375
  ...c2.kind === "token" && c2.from && HEX.test(c2.from) ? { from: c2.from } : {},
137377
137376
  ...c2.kind === "token" && c2.to && HEX.test(c2.to) ? { to: c2.to } : {}
@@ -138158,10 +138157,10 @@ function ownerTransport(msid, fetchImpl = fetch, timeoutMs = DEFAULT_TIMEOUT_MS,
138158
138157
  }
138159
138158
  throw new Error(`${method} ${path2} failed: ${err?.message ?? String(e2)}`);
138160
138159
  }
138161
- const text10 = await res.text();
138162
- let parsed = text10;
138160
+ const text11 = await res.text();
138161
+ let parsed = text11;
138163
138162
  try {
138164
- parsed = text10 ? JSON.parse(text10) : null;
138163
+ parsed = text11 ? JSON.parse(text11) : null;
138165
138164
  } catch {
138166
138165
  }
138167
138166
  if (!res.ok) throw new WixApiError(res.status, method, path2, parsed);
@@ -138343,10 +138342,10 @@ function scalar3(v2) {
138343
138342
  }
138344
138343
  return t2;
138345
138344
  }
138346
- function parseStoreConfig(text10) {
138345
+ function parseStoreConfig(text11) {
138347
138346
  const cfg = {};
138348
138347
  let section3 = null;
138349
- for (const raw of text10.split("\n")) {
138348
+ for (const raw of text11.split("\n")) {
138350
138349
  const line = strip2(raw);
138351
138350
  if (!line.trim()) continue;
138352
138351
  const indented = /^\s+/.test(raw);
@@ -143504,7 +143503,7 @@ function prettify(node, options, matcher, readonlyMatcher) {
143504
143503
  return compress(node, options, matcher, readonlyMatcher);
143505
143504
  }
143506
143505
  function compress(arr2, options, matcher, readonlyMatcher) {
143507
- let text10;
143506
+ let text11;
143508
143507
  const compressedObj = {};
143509
143508
  for (let i2 = 0; i2 < arr2.length; i2++) {
143510
143509
  const tagObj = arr2[i2];
@@ -143517,8 +143516,8 @@ function compress(arr2, options, matcher, readonlyMatcher) {
143517
143516
  matcher.push(property2, rawAttrs);
143518
143517
  }
143519
143518
  if (property2 === options.textNodeName) {
143520
- if (text10 === void 0) text10 = tagObj[property2];
143521
- else text10 += "" + tagObj[property2];
143519
+ if (text11 === void 0) text11 = tagObj[property2];
143520
+ else text11 += "" + tagObj[property2];
143522
143521
  } else if (property2 === void 0) {
143523
143522
  continue;
143524
143523
  } else if (tagObj[property2]) {
@@ -143556,9 +143555,9 @@ function compress(arr2, options, matcher, readonlyMatcher) {
143556
143555
  }
143557
143556
  }
143558
143557
  }
143559
- if (typeof text10 === "string") {
143560
- if (text10.length > 0) compressedObj[options.textNodeName] = text10;
143561
- } else if (text10 !== void 0) compressedObj[options.textNodeName] = text10;
143558
+ if (typeof text11 === "string") {
143559
+ if (text11.length > 0) compressedObj[options.textNodeName] = text11;
143560
+ } else if (text11 !== void 0) compressedObj[options.textNodeName] = text11;
143562
143561
  return compressedObj;
143563
143562
  }
143564
143563
  function propName2(obj5) {
@@ -143736,9 +143735,9 @@ function arrToStr(arr2, options, indentation, matcher, stopNodeExpressions, xmlV
143736
143735
  }
143737
143736
  if (!Array.isArray(arr2)) {
143738
143737
  if (arr2 !== void 0 && arr2 !== null) {
143739
- let text10 = arr2.toString();
143740
- text10 = replaceEntitiesValue2(text10, options);
143741
- return text10;
143738
+ let text11 = arr2.toString();
143739
+ text11 = replaceEntitiesValue2(text11, options);
143740
+ return text11;
143742
143741
  }
143743
143742
  return "";
143744
143743
  }
@@ -144024,22 +144023,22 @@ function resolveTagName2(name, isAttribute2, options, matcher, xmlVersion) {
144024
144023
  if (qName(name, { xmlVersion })) return name;
144025
144024
  return options.sanitizeName(name, { isAttribute: isAttribute2, matcher: matcher.readOnly() });
144026
144025
  }
144027
- function processTextOrObjNode(object8, key3, level, matcher, xmlVersion) {
144028
- const attrValues = this.extractAttributes(object8);
144026
+ function processTextOrObjNode(object9, key3, level, matcher, xmlVersion) {
144027
+ const attrValues = this.extractAttributes(object9);
144029
144028
  matcher.push(key3, attrValues);
144030
144029
  const isStopNode = this.checkStopNode(matcher);
144031
144030
  if (isStopNode) {
144032
- const rawContent = this.buildRawContent(object8);
144033
- const attrStr = this.buildAttributesForStopNode(object8);
144031
+ const rawContent = this.buildRawContent(object9);
144032
+ const attrStr = this.buildAttributesForStopNode(object9);
144034
144033
  matcher.pop();
144035
144034
  return this.buildObjectNode(rawContent, key3, attrStr, level);
144036
144035
  }
144037
- const result = this.j2x(object8, level + 1, matcher, xmlVersion);
144036
+ const result = this.j2x(object9, level + 1, matcher, xmlVersion);
144038
144037
  matcher.pop();
144039
144038
  if (key3[0] === "?") {
144040
144039
  return this.buildTextValNode("", key3, result.attrStr, level, matcher);
144041
- } else if (object8[this.options.textNodeName] !== void 0 && Object.keys(object8).length === 1) {
144042
- return this.buildTextValNode(object8[this.options.textNodeName], key3, result.attrStr, level, matcher);
144040
+ } else if (object9[this.options.textNodeName] !== void 0 && Object.keys(object9).length === 1) {
144041
+ return this.buildTextValNode(object9[this.options.textNodeName], key3, result.attrStr, level, matcher);
144043
144042
  } else {
144044
144043
  return this.buildObjectNode(result.val, key3, result.attrStr, level);
144045
144044
  }
@@ -146018,9 +146017,9 @@ function bundlesOf(block) {
146018
146017
  walk2(block);
146019
146018
  return [...out2];
146020
146019
  }
146021
- function parseJson2(text10, what) {
146020
+ function parseJson2(text11, what) {
146022
146021
  try {
146023
- const value = JSON.parse(text10);
146022
+ const value = JSON.parse(text11);
146024
146023
  if (!value || typeof value !== "object" || Array.isArray(value)) throw new Error("not an object");
146025
146024
  return value;
146026
146025
  } catch (e2) {
@@ -146605,9 +146604,9 @@ function planTrim(src, keepIds, links) {
146605
146604
  for (const r3 of keptRoutes) for (const b2 of r3.bundles) keptWorkers.add(b2);
146606
146605
  const importsOf2 = (dir) => {
146607
146606
  const out2 = [];
146608
- for (const [rel, text10] of Object.entries(src.workerFiles)) {
146607
+ for (const [rel, text11] of Object.entries(src.workerFiles)) {
146609
146608
  if (!rel.startsWith(`tier5-src/${dir}/`)) continue;
146610
- for (const m2 of text10.matchAll(/(?:\bfrom\s*|\bimport\s*\(?\s*|\brequire\s*\(\s*)["']\.\.\/([A-Za-z0-9_.-]+)(?:\/|["'])/g)) out2.push(m2[1]);
146609
+ for (const m2 of text11.matchAll(/(?:\bfrom\s*|\bimport\s*\(?\s*|\brequire\s*\(\s*)["']\.\.\/([A-Za-z0-9_.-]+)(?:\/|["'])/g)) out2.push(m2[1]);
146611
146610
  }
146612
146611
  return out2;
146613
146612
  };
@@ -146653,9 +146652,9 @@ function planTrim(src, keepIds, links) {
146653
146652
  continue;
146654
146653
  }
146655
146654
  const block = edited.get(r3);
146656
- let text10 = block ? serializeAt(block, app.dev, r3.open) : void 0;
146657
- if (r3 === app.home && homeModules?.text !== void 0) text10 = homeModules.text;
146658
- if (text10 !== void 0) cut2(r3.open, r3.close, text10);
146655
+ let text11 = block ? serializeAt(block, app.dev, r3.open) : void 0;
146656
+ if (r3 === app.home && homeModules?.text !== void 0) text11 = homeModules.text;
146657
+ if (text11 !== void 0) cut2(r3.open, r3.close, text11);
146659
146658
  }
146660
146659
  if (templatedEmptied) cut2(templatedEmptied[0], templatedEmptied[1], "\n");
146661
146660
  dev += app.dev.slice(cursor);
@@ -146708,9 +146707,9 @@ function homeModulesPass(app, kept, edited) {
146708
146707
  const removedVertical = verticals.some(([, card2]) => !kept.has(app.exact.get(card2.screenId)));
146709
146708
  if (!removedVertical) return { dropped: [] };
146710
146709
  const block = edited.get(app.home);
146711
- const text10 = block ? serializeAt(block, app.dev, app.home.open) : app.dev.slice(app.home.open, app.home.close);
146710
+ const text11 = block ? serializeAt(block, app.dev, app.home.open) : app.dev.slice(app.home.open, app.home.close);
146712
146711
  const installed = verticals.filter(([, card2]) => kept.has(app.exact.get(card2.screenId))).map(([v2]) => v2);
146713
- const patched = patchHomeModules(text10, installed);
146712
+ const patched = patchHomeModules(text11, installed);
146714
146713
  if (!patched.droppedModules.length) return { dropped: [] };
146715
146714
  return { text: patched.src, dropped: patched.droppedModules };
146716
146715
  }
@@ -147092,8 +147091,8 @@ function workerReach(src) {
147092
147091
  const f2 = queue.shift();
147093
147092
  if (seen.has(f2)) continue;
147094
147093
  seen.add(f2);
147095
- const text10 = all.get(f2) ?? "";
147096
- for (const m2 of text10.matchAll(RELATIVE_IMPORT)) {
147094
+ const text11 = all.get(f2) ?? "";
147095
+ for (const m2 of text11.matchAll(RELATIVE_IMPORT)) {
147097
147096
  const r3 = resolveImport(f2, m2[1], all);
147098
147097
  if (r3 && !seen.has(r3)) queue.push(r3);
147099
147098
  }
@@ -147103,11 +147102,11 @@ function workerReach(src) {
147103
147102
  let fetchCall = false;
147104
147103
  const hits = [];
147105
147104
  for (const f2 of [...seen].sort()) {
147106
- const text10 = all.get(f2) ?? "";
147105
+ const text11 = all.get(f2) ?? "";
147107
147106
  const before = wix.size;
147108
- for (const m2 of text10.matchAll(WIX_MODULE)) wix.add(m2[1].replace(/^@wix\/himalaya\//, "@himalaya/"));
147109
- const r3 = /\bwixApi\b/.test(text10);
147110
- const fe2 = /(?<![.\w])fetch\s*\(/.test(text10);
147107
+ for (const m2 of text11.matchAll(WIX_MODULE)) wix.add(m2[1].replace(/^@wix\/himalaya\//, "@himalaya/"));
147108
+ const r3 = /\bwixApi\b/.test(text11);
147109
+ const fe2 = /(?<![.\w])fetch\s*\(/.test(text11);
147111
147110
  if (wix.size > before || r3 || fe2) hits.push(f2);
147112
147111
  raw ||= r3;
147113
147112
  fetchCall ||= fe2;
@@ -147519,10 +147518,10 @@ async function pushSetupRequest(options) {
147519
147518
  signal: AbortSignal.timeout(options.timeoutMs ?? (setup ? 12e4 : 3e4)),
147520
147519
  ...setup ? { body: JSON.stringify(options.body) } : {}
147521
147520
  });
147522
- const text10 = await response.text();
147521
+ const text11 = await response.text();
147523
147522
  let parsed = null;
147524
147523
  try {
147525
- const value = text10 ? JSON.parse(text10) : null;
147524
+ const value = text11 ? JSON.parse(text11) : null;
147526
147525
  parsed = value && typeof value === "object" && !Array.isArray(value) ? value : null;
147527
147526
  } catch {
147528
147527
  parsed = null;
@@ -147666,8 +147665,8 @@ function appendProperties(literal, file2, lines) {
147666
147665
  const at2 = trailing ? literal.properties.end : last.end;
147667
147666
  const lead = trailing ? "" : ",";
147668
147667
  if (onOneLine(literal, file2)) {
147669
- const text10 = inline();
147670
- return { at: at2, end: at2, text: `${lead} ${trailing ? text10 : text10.replace(/,$/, "")}` };
147668
+ const text11 = inline();
147669
+ return { at: at2, end: at2, text: `${lead} ${trailing ? text11 : text11.replace(/,$/, "")}` };
147671
147670
  }
147672
147671
  const indent = lineIndent2(file2.text, last.getStart(file2));
147673
147672
  return { at: at2, end: at2, text: lead + lines.map((line) => `
@@ -147677,9 +147676,9 @@ function onOneLine(node, file2) {
147677
147676
  const line = (position) => file2.getLineAndCharacterOfPosition(position).line;
147678
147677
  return line(node.getStart(file2)) === line(node.getEnd());
147679
147678
  }
147680
- function lineIndent2(text10, position) {
147681
- const lineStart = text10.lastIndexOf("\n", position - 1) + 1;
147682
- return /^[ \t]*/.exec(text10.slice(lineStart))[0];
147679
+ function lineIndent2(text11, position) {
147680
+ const lineStart = text11.lastIndexOf("\n", position - 1) + 1;
147681
+ return /^[ \t]*/.exec(text11.slice(lineStart))[0];
147683
147682
  }
147684
147683
  function applySplices(source, splices) {
147685
147684
  return [...splices].sort((a2, b2) => b2.at - a2.at).reduce((out2, s2) => out2.slice(0, s2.at) + s2.text + out2.slice(s2.end), source);
@@ -149187,9 +149186,9 @@ __export(screen_state_exports, {
149187
149186
  import { createHash as createHash26 } from "node:crypto";
149188
149187
  import { lstatSync as lstatSync15, readFileSync as readFileSync51 } from "node:fs";
149189
149188
  import { join as join40 } from "node:path";
149190
- function quotableLine(text10) {
149191
- if (!text10) return void 0;
149192
- const first = text10.split(/\r?\n/).map((l2) => l2.trim()).find(Boolean);
149189
+ function quotableLine(text11) {
149190
+ if (!text11) return void 0;
149191
+ const first = text11.split(/\r?\n/).map((l2) => l2.trim()).find(Boolean);
149193
149192
  if (!first) return void 0;
149194
149193
  let line = first.replace(/\s+/g, " ");
149195
149194
  if (line.length > LINE_MAX) {
@@ -149202,9 +149201,9 @@ function quotableLine(text10) {
149202
149201
  function visibleText(html) {
149203
149202
  return html.replace(/<(script|style)\b[\s\S]*?<\/\1>/gi, " ").replace(/<[^>]*>/g, " ").replace(/&#x([0-9a-f]+);/gi, (_2, h2) => String.fromCodePoint(parseInt(h2, 16))).replace(/&#(\d+);/g, (_2, d2) => String.fromCodePoint(Number(d2))).replace(/&quot;/g, '"').replace(/&apos;/g, "'").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&nbsp;/g, " ").replace(/&amp;/g, "&").replace(/\s+/g, " ");
149204
149203
  }
149205
- function painted(text10, page) {
149204
+ function painted(text11, page) {
149206
149205
  if (page === void 0) return true;
149207
- const probe = text10.replace(/\s+/g, " ").trim().slice(0, 60);
149206
+ const probe = text11.replace(/\s+/g, " ").trim().slice(0, 60);
149208
149207
  return !!probe && page.includes(probe);
149209
149208
  }
149210
149209
  function errorMessageOf(s2) {
@@ -150414,8 +150413,8 @@ var init_cms_schema = __esm({
150414
150413
 
150415
150414
  // ../native-config/car.ts
150416
150415
  function parseCarConfig(configTs) {
150417
- const { text: text10, inString } = scanConfig(configTs);
150418
- for (const m2 of text10.matchAll(/\bcar\s*[:=]\s*\{([^}]*)\}/g)) {
150416
+ const { text: text11, inString } = scanConfig(configTs);
150417
+ for (const m2 of text11.matchAll(/\bcar\s*[:=]\s*\{([^}]*)\}/g)) {
150419
150418
  if (inString[m2.index]) continue;
150420
150419
  return { category: /category\s*:\s*["']([^"']+)["']/.exec(m2[1])?.[1] };
150421
150420
  }
@@ -150940,10 +150939,10 @@ function tokenColorIssues(dir, tokensPathOverride) {
150940
150939
  if (controlButton === void 0 || controlButton === null || typeof controlButton !== "object" || Array.isArray(controlButton)) return;
150941
150940
  const btn = controlButton;
150942
150941
  for (const size of ["sm", "md", "lg"]) {
150943
- const text10 = btn[size]?.text;
150944
- if (text10 === void 0 || typeof text10 === "string" && typo.has(text10)) continue;
150942
+ const text11 = btn[size]?.text;
150943
+ if (text11 === void 0 || typeof text11 === "string" && typo.has(text11)) continue;
150945
150944
  error(
150946
- `${tokensPath}: ${where}controls.button.${size}.text is ${JSON.stringify(text10)}, which names no \`typography\` token \u2014 every renderer would keep the built-in Button label. Name one that exists.`
150945
+ `${tokensPath}: ${where}controls.button.${size}.text is ${JSON.stringify(text11)}, which names no \`typography\` token \u2014 every renderer would keep the built-in Button label. Name one that exists.`
150947
150946
  );
150948
150947
  }
150949
150948
  const variants = btn.variants;
@@ -151373,16 +151372,16 @@ function encode(value, quote) {
151373
151372
  if (quote === "'") return `'${value.replace(/[\\']/g, "\\$&").replace(/\n/g, "\\n")}'`;
151374
151373
  return `\`${value.replace(/[\\`]|\$(?=\{)/g, "\\$&")}\``;
151375
151374
  }
151376
- function syntaxErrors(file2, text10) {
151375
+ function syntaxErrors(file2, text11) {
151377
151376
  if (file2.endsWith(".json")) {
151378
151377
  try {
151379
- JSON.parse(text10);
151378
+ JSON.parse(text11);
151380
151379
  return [];
151381
151380
  } catch (e2) {
151382
151381
  return [e2.message];
151383
151382
  }
151384
151383
  }
151385
- const out2 = ts7.transpileModule(text10, { fileName: file2, reportDiagnostics: true, compilerOptions: { target: ts7.ScriptTarget.ES2022 } });
151384
+ const out2 = ts7.transpileModule(text11, { fileName: file2, reportDiagnostics: true, compilerOptions: { target: ts7.ScriptTarget.ES2022 } });
151386
151385
  return (out2.diagnostics ?? []).map((d2) => ts7.flattenDiagnosticMessageText(d2.messageText, "\n"));
151387
151386
  }
151388
151387
  function sweepCopy(dir, pairs, dryRun) {
@@ -151394,10 +151393,10 @@ function sweepCopy(dir, pairs, dryRun) {
151394
151393
  const next = /* @__PURE__ */ new Map();
151395
151394
  const replaced = pairs.map(([from, to2]) => ({ from, to: to2, files: {} }));
151396
151395
  for (const f2 of files) {
151397
- const text10 = readFileSync59(join49(dir, f2), "utf8");
151398
- if (!pairs.some(([from]) => text10.includes(from) || text10.includes(JSON.stringify(from).slice(1, -1)))) continue;
151396
+ const text11 = readFileSync59(join49(dir, f2), "utf8");
151397
+ if (!pairs.some(([from]) => text11.includes(from) || text11.includes(JSON.stringify(from).slice(1, -1)))) continue;
151399
151398
  const kind = f2.endsWith(".json") ? ts7.ScriptKind.JSON : f2.endsWith("x") ? ts7.ScriptKind.TSX : ts7.ScriptKind.TS;
151400
- const sf2 = ts7.createSourceFile(f2, text10, ts7.ScriptTarget.Latest, true, kind);
151399
+ const sf2 = ts7.createSourceFile(f2, text11, ts7.ScriptTarget.Latest, true, kind);
151401
151400
  const edits = [];
151402
151401
  const visit = (node) => {
151403
151402
  if ((ts7.isStringLiteral(node) || ts7.isNoSubstitutionTemplateLiteral(node)) && isCopy(node, f2)) {
@@ -151410,14 +151409,14 @@ function sweepCopy(dir, pairs, dryRun) {
151410
151409
  });
151411
151410
  if (value !== node.text) {
151412
151411
  const start = node.getStart(sf2);
151413
- edits.push({ start, end: node.end, text: encode(value, text10[start]) });
151412
+ edits.push({ start, end: node.end, text: encode(value, text11[start]) });
151414
151413
  }
151415
151414
  }
151416
151415
  ts7.forEachChild(node, visit);
151417
151416
  };
151418
151417
  visit(sf2);
151419
151418
  if (!edits.length) continue;
151420
- let out2 = text10;
151419
+ let out2 = text11;
151421
151420
  for (const e2 of edits.sort((a2, b2) => b2.start - a2.start)) out2 = out2.slice(0, e2.start) + e2.text + out2.slice(e2.end);
151422
151421
  const errors = syntaxErrors(f2, out2);
151423
151422
  if (errors.length) throw new TrimRefusal(`the sweep would break ${f2} \u2014 nothing written: ${errors[0]}`);
@@ -151711,9 +151710,9 @@ function verticalsFromBook(path2) {
151711
151710
  throw new Error(`no book.json / provisioning.overlay.json under ${path2} \u2014 run \`himi site analyze\` first, or pass --verticals`);
151712
151711
  }
151713
151712
  function recommendTemplates(input) {
151714
- const text10 = input.text ?? "";
151715
- const owner = OWNER_WORDS.test(text10);
151716
- const want = new Set(tokens(text10));
151713
+ const text11 = input.text ?? "";
151714
+ const owner = OWNER_WORDS.test(text11);
151715
+ const want = new Set(tokens(text11));
151717
151716
  const byName3 = /* @__PURE__ */ new Map();
151718
151717
  for (const row of input.catalog) {
151719
151718
  const reasons = [];
@@ -151727,7 +151726,7 @@ function recommendTemplates(input) {
151727
151726
  reasons.push(`matches ${hit.map((h2) => `"${h2}"`).join(", ")}`);
151728
151727
  }
151729
151728
  }
151730
- if (text10) {
151729
+ if (text11) {
151731
151730
  if (owner === isOwner) {
151732
151731
  score += 0.3;
151733
151732
  reasons.push(owner ? "owner/operations app, and this is an owner template" : "customer-facing app, and this is a customer template");
@@ -153335,9 +153334,9 @@ function xmlAttr(value) {
153335
153334
  return value.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
153336
153335
  }
153337
153336
  function renderHealthPermissionCopyXml(copy, indent) {
153338
- const text10 = copy?.trim();
153339
- if (!text10) return [];
153340
- return [`${indent}<meta-data android:name="${HEALTH_PERMISSION_COPY_META}" android:value="${xmlAttr(text10)}" />`];
153337
+ const text11 = copy?.trim();
153338
+ if (!text11) return [];
153339
+ return [`${indent}<meta-data android:name="${HEALTH_PERMISSION_COPY_META}" android:value="${xmlAttr(text11)}" />`];
153341
153340
  }
153342
153341
  function renderModulesIosPackage(products, indent) {
153343
153342
  return products.flatMap((p2) => {
@@ -153504,8 +153503,8 @@ function swiftFilesWithModuleMarkers(app) {
153504
153503
  if (entry.isDirectory()) {
153505
153504
  if (!entry.name.endsWith(".xcodeproj")) stack.push(path2);
153506
153505
  } else if (entry.isFile() && entry.name.endsWith(".swift")) {
153507
- const text10 = readFileSync64(path2, "utf8");
153508
- if (hasMarkers(text10, "slash", LABEL_MODULES_SWIFT_IMPORT) || hasMarkers(text10, "slash", LABEL_MODULES_SWIFT_INSTALL)) out2.push(path2);
153506
+ const text11 = readFileSync64(path2, "utf8");
153507
+ if (hasMarkers(text11, "slash", LABEL_MODULES_SWIFT_IMPORT) || hasMarkers(text11, "slash", LABEL_MODULES_SWIFT_INSTALL)) out2.push(path2);
153509
153508
  }
153510
153509
  }
153511
153510
  }
@@ -153540,8 +153539,8 @@ function kotlinBootSourcesUnder(root) {
153540
153539
  }
153541
153540
  return out2.sort();
153542
153541
  }
153543
- function stripComments2(text10) {
153544
- return text10.replace(/\/\*[\s\S]*?\*\//g, (c2) => c2.replace(/[^\n]/g, " ")).replace(/\/\/[^\n]*/g, "");
153542
+ function stripComments2(text11) {
153543
+ return text11.replace(/\/\*[\s\S]*?\*\//g, (c2) => c2.replace(/[^\n]/g, " ")).replace(/\/\/[^\n]*/g, "");
153545
153544
  }
153546
153545
  function duplicateModuleInstalls(...texts) {
153547
153546
  const calls = ["installLinkedModules", ...NATIVE_MODULES.flatMap((m2) => m2.ios ? [`${m2.ios.product}.install`] : [])];
@@ -153603,19 +153602,19 @@ function hostAppliesDeferredWidgetActions(app) {
153603
153602
  }
153604
153603
  return false;
153605
153604
  }
153606
- function countBeginMarkers(text10, kind, label3) {
153607
- return text10.split("\n").filter((l2) => isBegin(l2, kind, label3)).length;
153605
+ function countBeginMarkers(text11, kind, label3) {
153606
+ return text11.split("\n").filter((l2) => isBegin(l2, kind, label3)).length;
153608
153607
  }
153609
- function countEndMarkers(text10, kind, label3) {
153610
- return text10.split("\n").filter((l2) => isEnd(l2, kind, label3)).length;
153608
+ function countEndMarkers(text11, kind, label3) {
153609
+ return text11.split("\n").filter((l2) => isEnd(l2, kind, label3)).length;
153611
153610
  }
153612
- function hasMarkers(text10, kind, label3) {
153613
- const lines = text10.split("\n");
153611
+ function hasMarkers(text11, kind, label3) {
153612
+ const lines = text11.split("\n");
153614
153613
  return lines.some((l2) => isBegin(l2, kind, label3)) && lines.some((l2) => isEnd(l2, kind, label3));
153615
153614
  }
153616
- function assertSingleMarkerPair(text10, kind, label3, where = "the file") {
153617
- const opens = countBeginMarkers(text10, kind, label3);
153618
- const closes = countEndMarkers(text10, kind, label3);
153615
+ function assertSingleMarkerPair(text11, kind, label3, where = "the file") {
153616
+ const opens = countBeginMarkers(text11, kind, label3);
153617
+ const closes = countEndMarkers(text11, kind, label3);
153619
153618
  if (opens > 1 || closes > 1) {
153620
153619
  const which = opens > 1 ? `">>> ${label3}" opens ${opens} times` : `"<<< ${label3}" closes ${closes} times`;
153621
153620
  throw new Error(
@@ -153623,9 +153622,9 @@ function assertSingleMarkerPair(text10, kind, label3, where = "the file") {
153623
153622
  );
153624
153623
  }
153625
153624
  }
153626
- function injectBlock(text10, kind, label3, render, where = "the file") {
153627
- assertSingleMarkerPair(text10, kind, label3, where);
153628
- const lines = text10.split("\n");
153625
+ function injectBlock(text11, kind, label3, render, where = "the file") {
153626
+ assertSingleMarkerPair(text11, kind, label3, where);
153627
+ const lines = text11.split("\n");
153629
153628
  const beginIdx = lines.findIndex((l2) => isBegin(l2, kind, label3));
153630
153629
  const endIdx = lines.findIndex((l2) => isEnd(l2, kind, label3));
153631
153630
  if (beginIdx === -1 || endIdx === -1 || endIdx < beginIdx) {
@@ -153665,8 +153664,8 @@ function applyToFile(path2, kind, label3, render, check) {
153665
153664
  function assertModuleFlagsMarkers(paths) {
153666
153665
  for (const path2 of paths) {
153667
153666
  if (!existsSync54(path2)) continue;
153668
- const text10 = readFileSync64(path2, "utf8");
153669
- if (hasMarkers(text10, "yaml", LABEL_MODULES_IOS_LINK) && !hasMarkers(text10, "yaml", LABEL_MODULES_IOS_FLAGS)) {
153667
+ const text11 = readFileSync64(path2, "utf8");
153668
+ if (hasMarkers(text11, "yaml", LABEL_MODULES_IOS_LINK) && !hasMarkers(text11, "yaml", LABEL_MODULES_IOS_FLAGS)) {
153670
153669
  throw new Error(`${path2} links modules (${LABEL_MODULES_IOS_LINK}) but has no ${LABEL_MODULES_IOS_FLAGS} block under its project-level settings:, so no module would install. Add the markers (see apps/_template).`);
153671
153670
  }
153672
153671
  }
@@ -153902,8 +153901,8 @@ function genNativeConfig(app, opts = {}) {
153902
153901
  }
153903
153902
  }
153904
153903
  for (const swift of swiftFilesWithModuleMarkers(app)) {
153905
- const text10 = readFileSync64(swift, "utf8");
153906
- if (!hasMarkers(text10, "slash", LABEL_MODULES_SWIFT_IMPORT) || !hasMarkers(text10, "slash", LABEL_MODULES_SWIFT_INSTALL)) {
153904
+ const text11 = readFileSync64(swift, "utf8");
153905
+ if (!hasMarkers(text11, "slash", LABEL_MODULES_SWIFT_IMPORT) || !hasMarkers(text11, "slash", LABEL_MODULES_SWIFT_INSTALL)) {
153907
153906
  throw new Error(`${app}: ${swift} must carry both ${LABEL_MODULES_SWIFT_IMPORT} and ${LABEL_MODULES_SWIFT_INSTALL} markers`);
153908
153907
  }
153909
153908
  files.push(applyToFile(swift, "slash", LABEL_MODULES_SWIFT_IMPORT, renderModulesSwiftImport, check));
@@ -153912,8 +153911,8 @@ function genNativeConfig(app, opts = {}) {
153912
153911
  files.push(...genCapabilityRegistrations(appDir(app), ids, check));
153913
153912
  const rce = declaresRichContentEditor(configTs);
153914
153913
  for (const yml of [iosYml, macosProjectYml(app)]) {
153915
- const text10 = existsSync54(yml) ? readFileSync64(yml, "utf8") : "";
153916
- const r3 = applyToFile(yml, "yaml", LABEL_LOCALWEB, renderLocalWebYaml(resourcesDirOf(text10), rce), check);
153914
+ const text11 = existsSync54(yml) ? readFileSync64(yml, "utf8") : "";
153915
+ const r3 = applyToFile(yml, "yaml", LABEL_LOCALWEB, renderLocalWebYaml(resourcesDirOf(text11), rce), check);
153917
153916
  if (existsSync54(yml)) assertLocalWebBlockLanded(app, rce, yml, r3.outcome);
153918
153917
  files.push(r3);
153919
153918
  }
@@ -154894,8 +154893,8 @@ function renderBase44Types(entities, app) {
154894
154893
  for (const f2 of fields) body.push(` ${key2(f2.key)}${required3.has(f2.key) ? "" : "?"}: ${fieldType(f2)};`);
154895
154894
  body.push("};", `export const ${name} = entities<${name}Row>(${JSON.stringify(physicalEntityName(e2, app))});`);
154896
154895
  }
154897
- const text10 = body.join("\n");
154898
- const types = ["Json", "JsonObject"].filter((t2) => new RegExp(`\\b${t2}\\b`).test(text10)).map((t2) => `type ${t2}`);
154896
+ const text11 = body.join("\n");
154897
+ const types = ["Json", "JsonObject"].filter((t2) => new RegExp(`\\b${t2}\\b`).test(text11)).map((t2) => `type ${t2}`);
154899
154898
  if (usable.length) L2.push(`import { ${["entities", ...types].join(", ")} } from "@himalaya/base44";`);
154900
154899
  return [...L2, ...body].join("\n") + "\n";
154901
154900
  }
@@ -154907,14 +154906,14 @@ async function declaredEntities(dir) {
154907
154906
  async function writeBase44Types(dir, app) {
154908
154907
  const list = await declaredEntities(dir);
154909
154908
  if (!list?.length) throw new Base44TypesError("no_base44_entities", "config.ts declares no base44.entities \u2014 nothing to type. Declare them (or run `himi base44 adopt`) first.");
154910
- const text10 = renderBase44Types(list, app);
154909
+ const text11 = renderBase44Types(list, app);
154911
154910
  const path2 = join56(dir, BASE44_TYPES_PATH);
154912
- const changed = !existsSync56(path2) || readFileSync66(path2, "utf8") !== text10;
154911
+ const changed = !existsSync56(path2) || readFileSync66(path2, "utf8") !== text11;
154913
154912
  if (changed) {
154914
154913
  mkdirSync26(dirname32(path2), { recursive: true });
154915
- writeFileSync22(path2, text10);
154914
+ writeFileSync22(path2, text11);
154916
154915
  }
154917
- return { path: path2, changed, entities: text10.split("\nexport const ").length - 1 };
154916
+ return { path: path2, changed, entities: text11.split("\nexport const ").length - 1 };
154918
154917
  }
154919
154918
  async function base44TypesIssues(dir, app, strict) {
154920
154919
  const path2 = join56(dir, BASE44_TYPES_PATH);
@@ -155872,8 +155871,8 @@ function isNoneEntry(entry) {
155872
155871
  const head = entryHead(entry);
155873
155872
  return NONE.test(entry) || head !== "" && NONE.test(head);
155874
155873
  }
155875
- function parseDataAccess(text10, from) {
155876
- const body = text10.replace(/<!--[\s\S]*?(?:-->|$)/g, "");
155874
+ function parseDataAccess(text11, from) {
155875
+ const body = text11.replace(/<!--[\s\S]*?(?:-->|$)/g, "");
155877
155876
  const heading = new RegExp(`(?:^|\\n)##[ \\t]+${DATA_ACCESS_HEADING}\\b[^\\n]*([\\s\\S]*?)(?=\\n##[ \\t]|$)`, "i").exec(body);
155878
155877
  if (!heading) return null;
155879
155878
  const lines = heading[1].split("\n").map((l2) => l2.trim()).filter((l2) => l2.startsWith("|"));
@@ -155900,13 +155899,13 @@ function readDataAccess(dir) {
155900
155899
  for (const name of ["SPEC.md", "MOBILE-UX.md"]) {
155901
155900
  const p2 = join62(dir, name);
155902
155901
  if (!existsSync61(p2)) continue;
155903
- let text10;
155902
+ let text11;
155904
155903
  try {
155905
- text10 = readFileSync71(p2, "utf8");
155904
+ text11 = readFileSync71(p2, "utf8");
155906
155905
  } catch {
155907
155906
  continue;
155908
155907
  }
155909
- const plan = parseDataAccess(text10, name);
155908
+ const plan = parseDataAccess(text11, name);
155910
155909
  if (plan) return plan;
155911
155910
  }
155912
155911
  return null;
@@ -156062,7 +156061,7 @@ function readTestConfig(dir) {
156062
156061
  if (input !== void 0 && (!input || typeof input !== "object" || Array.isArray(input) || Object.values(input).some((v2) => typeof v2 !== "string"))) {
156063
156062
  throw new Error(`${TEST_CONFIG_FILE}: journeys[${i2}].input must be an object of string values \u2014 the screen input a nav edge would send, e.g. { "id": "svc-0001" }`);
156064
156063
  }
156065
- if (!Array.isArray(journey.expectText) || !journey.expectText.length || journey.expectText.some((text10) => typeof text10 !== "string" || !text10.trim())) {
156064
+ if (!Array.isArray(journey.expectText) || !journey.expectText.length || journey.expectText.some((text11) => typeof text11 !== "string" || !text11.trim())) {
156066
156065
  throw new Error(`${TEST_CONFIG_FILE}: journeys[${i2}] needs non-empty expectText values that prove a visible result`);
156067
156066
  }
156068
156067
  });
@@ -157752,14 +157751,14 @@ import { join as join68 } from "node:path";
157752
157751
  function mobileUxIssues(dir, strict) {
157753
157752
  const file2 = join68(dir, "MOBILE-UX.md");
157754
157753
  if (!existsSync65(file2)) return [];
157755
- let text10;
157754
+ let text11;
157756
157755
  try {
157757
- text10 = readFileSync76(file2, "utf8");
157756
+ text11 = readFileSync76(file2, "utf8");
157758
157757
  } catch {
157759
157758
  return [];
157760
157759
  }
157761
- if (!text10) return [];
157762
- return mobileUxMarkerFindings(text10, recordedRenderWidths(dir)).map((finding) => {
157760
+ if (!text11) return [];
157761
+ return mobileUxMarkerFindings(text11, recordedRenderWidths(dir)).map((finding) => {
157763
157762
  const scaffoldAdvisory = finding.code === "missing-width-evidence";
157764
157763
  return {
157765
157764
  screen: null,
@@ -159583,12 +159582,12 @@ async function runRemoteFunctionOperation(input) {
159583
159582
  if (input.boCookie) headers2.cookie = input.boCookie;
159584
159583
  if (input.previewToken) headers2["x-himalaya-preview-token"] = input.previewToken;
159585
159584
  const response = await (input.fetchImpl ?? fetch)(url, { method, headers: headers2 });
159586
- const text10 = await response.text();
159585
+ const text11 = await response.text();
159587
159586
  let body;
159588
159587
  try {
159589
- body = JSON.parse(text10);
159588
+ body = JSON.parse(text11);
159590
159589
  } catch {
159591
- body = text10;
159590
+ body = text11;
159592
159591
  }
159593
159592
  return { ok: response.ok, status: response.status, body };
159594
159593
  }
@@ -163267,10 +163266,10 @@ async function hostedAuthUrl(req, visitorToken, fetchImpl = fetch) {
163267
163266
  }
163268
163267
  })
163269
163268
  });
163270
- const text10 = await res.text();
163269
+ const text11 = await res.text();
163271
163270
  let parsed = {};
163272
163271
  try {
163273
- parsed = text10 ? JSON.parse(text10) : {};
163272
+ parsed = text11 ? JSON.parse(text11) : {};
163274
163273
  } catch {
163275
163274
  }
163276
163275
  const fullUrl = parsed.redirectSession?.fullUrl;
@@ -163290,10 +163289,10 @@ async function exchangeAuthCode(cfg, code, verifier, fetchImpl = fetch) {
163290
163289
  redirectUri: cfg.redirectUri
163291
163290
  })
163292
163291
  });
163293
- const text10 = await res.text();
163292
+ const text11 = await res.text();
163294
163293
  let parsed = {};
163295
163294
  try {
163296
- parsed = text10 ? JSON.parse(text10) : {};
163295
+ parsed = text11 ? JSON.parse(text11) : {};
163297
163296
  } catch {
163298
163297
  }
163299
163298
  if (res.status !== 200 || !parsed.access_token) throw new Error(`token exchange failed (${res.status})`);
@@ -164829,11 +164828,11 @@ async function localizeConfigResponse(res, kind, header) {
164829
164828
  header
164830
164829
  )
164831
164830
  };
164832
- const text10 = JSON.stringify(next);
164831
+ const text11 = JSON.stringify(next);
164833
164832
  const headers2 = new Headers(res.headers);
164834
164833
  headers2.delete("etag");
164835
- headers2.set("content-length", String(new TextEncoder().encode(text10).length));
164836
- return new Response(text10, { status: 200, headers: headers2 });
164834
+ headers2.set("content-length", String(new TextEncoder().encode(text11).length));
164835
+ return new Response(text11, { status: 200, headers: headers2 });
164837
164836
  }
164838
164837
  function makeRunHandler(opts) {
164839
164838
  const mount = opts.chrome === "app" ? "/app" : "/preview";
@@ -165042,8 +165041,8 @@ var init_node_adapter = __esm({
165042
165041
  function authConfigOf(appConfig) {
165043
165042
  if (!appConfig) return void 0;
165044
165043
  try {
165045
- const text10 = typeof appConfig === "string" ? appConfig : new TextDecoder().decode(appConfig);
165046
- return JSON.parse(text10)?.authConfig ?? void 0;
165044
+ const text11 = typeof appConfig === "string" ? appConfig : new TextDecoder().decode(appConfig);
165045
+ return JSON.parse(text11)?.authConfig ?? void 0;
165047
165046
  } catch {
165048
165047
  return void 0;
165049
165048
  }
@@ -165407,16 +165406,16 @@ async function releasePayloadFromDir(root, app, header) {
165407
165406
  const manifest = await store.getManifest(app);
165408
165407
  if (!manifest) throw new Error(`no release manifest for ${app} under ${root}`);
165409
165408
  const b64 = (b2) => b2 ? Buffer.from(b2).toString("base64") : void 0;
165410
- const text10 = (b2) => b2 ? new TextDecoder().decode(b2) : void 0;
165409
+ const text11 = (b2) => b2 ? new TextDecoder().decode(b2) : void 0;
165411
165410
  const screens = {};
165412
165411
  const docs = {};
165413
165412
  const addDoc = async (hash2) => {
165414
165413
  if (!hash2 || docs[hash2] !== void 0) return;
165415
- const d2 = text10(await store.getDoc?.(app, hash2) ?? null);
165414
+ const d2 = text11(await store.getDoc?.(app, hash2) ?? null);
165416
165415
  if (d2 !== void 0) docs[hash2] = d2;
165417
165416
  };
165418
165417
  for (const [id, meta] of Object.entries(manifest.screens ?? {})) {
165419
- const s2 = text10(await store.getScreen(app, id));
165418
+ const s2 = text11(await store.getScreen(app, id));
165420
165419
  if (s2 !== void 0) screens[id] = s2;
165421
165420
  await addDoc(meta.descriptorHash);
165422
165421
  }
@@ -165437,10 +165436,10 @@ async function releasePayloadFromDir(root, app, header) {
165437
165436
  }
165438
165437
  const widgets = {};
165439
165438
  for (const id of Object.keys(manifest.widgets ?? {})) {
165440
- const w2 = text10(await store.getWidget?.(app, id) ?? null);
165439
+ const w2 = text11(await store.getWidget?.(app, id) ?? null);
165441
165440
  if (w2 !== void 0) widgets[id] = w2;
165442
165441
  }
165443
- const appConfig = text10(await store.getAppConfig(app));
165442
+ const appConfig = text11(await store.getAppConfig(app));
165444
165443
  const wixClientId = appConfigWixClientId(appConfig);
165445
165444
  return {
165446
165445
  app,
@@ -165450,7 +165449,7 @@ async function releasePayloadFromDir(root, app, header) {
165450
165449
  docs,
165451
165450
  assets,
165452
165451
  widgets,
165453
- tokens: text10(await store.getTokens(app)),
165452
+ tokens: text11(await store.getTokens(app)),
165454
165453
  appConfig,
165455
165454
  icon: b64(await store.getIcon?.(app) ?? null),
165456
165455
  header,
@@ -165846,13 +165845,18 @@ function appleSaleRules(options = {}) {
165846
165845
  return {
165847
165846
  onlineProgram: ONLINE_PROGRAM_SALE_RULE,
165848
165847
  ...(options.storesAppleSalesEnabled ?? STORES_APPLE_SALES_ENABLED) || (options.storesItemPaymentEnabled ?? STORES_ITEM_PAYMENT_ENABLED) ? { storesProduct: STORES_PRODUCT_SALE_RULE } : {},
165849
- ...options.pricingPlanAppleSalesEnabled ?? PRICING_PLAN_APPLE_SALES_ENABLED ? { pricingPlan: PRICING_PLAN_SALE_RULE } : {}
165848
+ ...options.pricingPlanAppleSalesEnabled ?? PRICING_PLAN_APPLE_SALES_ENABLED ? { pricingPlan: PRICING_PLAN_SALE_RULE } : {},
165849
+ ...options.bookingsAppleSalesEnabled ?? BOOKINGS_APPLE_SALES_ENABLED ? { bookingsService: ATTENDANCE_SALE_RULE } : {},
165850
+ ...options.eventsAppleSalesEnabled ?? EVENTS_APPLE_SALES_ENABLED ? { eventsTicket: ATTENDANCE_SALE_RULE } : {}
165850
165851
  };
165851
165852
  }
165852
- var HIMALAYA_SERVE_IAP_ROUTE, STORES_ITEM_PAYMENT_ENABLED, STORES_APPLE_SALES_ENABLED, STORES_PRODUCT_SALE_RULE, ONLINE_PROGRAM_SALE_RULE, PRICING_PLAN_APPLE_SALES_ENABLED, PRICING_PLAN_SALE_RULE, APPLE_SALE_RULES;
165853
+ var HIMALAYA_SERVE_IAP_ROUTE, BOOKINGS_APPLE_SALES_ENABLED, EVENTS_APPLE_SALES_ENABLED, ATTENDANCE_SALE_RULE, STORES_ITEM_PAYMENT_ENABLED, STORES_APPLE_SALES_ENABLED, STORES_PRODUCT_SALE_RULE, ONLINE_PROGRAM_SALE_RULE, PRICING_PLAN_APPLE_SALES_ENABLED, PRICING_PLAN_SALE_RULE, APPLE_SALE_RULES, APPLE_PROVISIONING_RULES;
165853
165854
  var init_wix_payments_contract = __esm({
165854
165855
  "../../core/sdk/iap/src/wix-payments-contract.ts"() {
165855
165856
  HIMALAYA_SERVE_IAP_ROUTE = { prefix: "/himalaya-serve/v1/iap" };
165857
+ BOOKINGS_APPLE_SALES_ENABLED = false;
165858
+ EVENTS_APPLE_SALES_ENABLED = false;
165859
+ ATTENDANCE_SALE_RULE = { appProductId: (id) => id, productType: "CONSUMABLE" };
165856
165860
  STORES_ITEM_PAYMENT_ENABLED = false;
165857
165861
  STORES_APPLE_SALES_ENABLED = true;
165858
165862
  STORES_PRODUCT_SALE_RULE = { appProductId: (id) => id, productType: "NON_CONSUMABLE" };
@@ -165860,6 +165864,11 @@ var init_wix_payments_contract = __esm({
165860
165864
  PRICING_PLAN_APPLE_SALES_ENABLED = true;
165861
165865
  PRICING_PLAN_SALE_RULE = { appProductId: (id) => id, productType: "NON_CONSUMABLE" };
165862
165866
  APPLE_SALE_RULES = appleSaleRules();
165867
+ APPLE_PROVISIONING_RULES = {
165868
+ ...APPLE_SALE_RULES,
165869
+ bookingsService: ATTENDANCE_SALE_RULE,
165870
+ eventsTicket: ATTENDANCE_SALE_RULE
165871
+ };
165863
165872
  }
165864
165873
  });
165865
165874
 
@@ -165978,11 +165987,11 @@ async function registerBundleId(opts) {
165978
165987
  const j2 = await res.json();
165979
165988
  return { status: "created", id: j2.data?.id };
165980
165989
  }
165981
- const text10 = await res.text();
165982
- if (res.status === 409 || /already (exists|in use)|duplicate|ENTITY_ERROR.*identifier/i.test(text10)) {
165990
+ const text11 = await res.text();
165991
+ if (res.status === 409 || /already (exists|in use)|duplicate|ENTITY_ERROR.*identifier/i.test(text11)) {
165983
165992
  return { status: "exists" };
165984
165993
  }
165985
- throw new Error(`POST /v1/bundleIds \u2192 ${res.status}: ${text10.slice(0, 300)}`);
165994
+ throw new Error(`POST /v1/bundleIds \u2192 ${res.status}: ${text11.slice(0, 300)}`);
165986
165995
  }
165987
165996
  async function main() {
165988
165997
  const [app, ...rest] = process.argv.slice(2);
@@ -166235,9 +166244,9 @@ var init_iap_client = __esm({
166235
166244
  retryAfterMs(response.headers.get("retry-after"), this.now())
166236
166245
  );
166237
166246
  }
166238
- scrub(text10) {
166247
+ scrub(text11) {
166239
166248
  const { keyId, issuerId, privateKeyPem } = this.options.key;
166240
- let out2 = text10;
166249
+ let out2 = text11;
166241
166250
  for (const literal of [this.token?.value, privateKeyPem, issuerId, keyId]) {
166242
166251
  if (literal) out2 = out2.split(literal).join("[redacted]");
166243
166252
  }
@@ -166407,19 +166416,19 @@ var init_iap_api = __esm({
166407
166416
  });
166408
166417
  return toVersion(requireSingle(doc, "in-app purchase version"));
166409
166418
  }
166410
- async createLocalization(versionId, text10) {
166419
+ async createLocalization(versionId, text11) {
166411
166420
  const doc = await this.client.post("/v2/inAppPurchaseLocalizations", {
166412
166421
  data: {
166413
166422
  type: "inAppPurchaseLocalizations",
166414
- attributes: { locale: text10.locale, name: text10.name, description: text10.description },
166423
+ attributes: { locale: text11.locale, name: text11.name, description: text11.description },
166415
166424
  relationships: { version: related("inAppPurchaseVersions", versionId) }
166416
166425
  }
166417
166426
  });
166418
166427
  return toLocalization(requireSingle(doc, "localization"));
166419
166428
  }
166420
- async updateLocalization(localizationId, text10) {
166429
+ async updateLocalization(localizationId, text11) {
166421
166430
  const doc = await this.client.patch(`/v2/inAppPurchaseLocalizations/${enc(localizationId)}`, {
166422
- data: { type: "inAppPurchaseLocalizations", id: localizationId, attributes: { name: text10.name, description: text10.description } }
166431
+ data: { type: "inAppPurchaseLocalizations", id: localizationId, attributes: { name: text11.name, description: text11.description } }
166423
166432
  });
166424
166433
  return toLocalization(requireSingle(doc, "localization"));
166425
166434
  }
@@ -166523,7 +166532,7 @@ function createCatalogIapApi(client2, appId2, uploadMedia) {
166523
166532
  const points = async (id, territory) => (await client2.listResources(appId2, "PRICE_POINT", { inAppPurchaseId: id, territory })).resources.map((point) => ({ id: point.id, customerPrice: text8(point, "customerPrice") }));
166524
166533
  const desired = (item) => ({ localizations: item.localizations, price: selection(item.price), territories: item.territories });
166525
166534
  const mapping = async (item) => {
166526
- const rule = item.wix && !item.unlocks?.length ? APPLE_SALE_RULES[item.wix.entityType] : void 0;
166535
+ const rule = item.wix && !item.unlocks?.length ? APPLE_PROVISIONING_RULES[item.wix.entityType] : void 0;
166527
166536
  if (!rule || !item.wix || rule.productType !== appleProductType(item.type)) throw new IapCatalogError("mapping_unsupported", `No supported Wix mapping identity for ${item.productId}`);
166528
166537
  const expected = rule.appProductId(item.wix.entityId);
166529
166538
  const catalog3 = await client2.listProducts(appId2);
@@ -166787,8 +166796,8 @@ function reportDuplicateMappings(reader, items) {
166787
166796
  reader.duplicates(items.flatMap((i2) => [i2.entitlement, ...(i2.unlocks ?? []).map((u2) => u2.entitlement)]), "items", "entitlement");
166788
166797
  reader.duplicates(items.map((i2) => i2.referenceName), "items", "referenceName");
166789
166798
  }
166790
- function looksLikeCredential(text10) {
166791
- return CREDENTIAL_SHAPES.some((shape) => shape.test(text10));
166799
+ function looksLikeCredential(text11) {
166800
+ return CREDENTIAL_SHAPES.some((shape) => shape.test(text11));
166792
166801
  }
166793
166802
  function reportCredentialMaterial(reader, value, path2) {
166794
166803
  if (typeof value === "string") {
@@ -166801,15 +166810,15 @@ function reportCredentialMaterial(reader, value, path2) {
166801
166810
  for (const [key3, v2] of Object.entries(value)) reportCredentialMaterial(reader, v2, childPath(path2, key3));
166802
166811
  }
166803
166812
  }
166804
- function parseJson3(text10, label3) {
166813
+ function parseJson3(text11, label3) {
166805
166814
  try {
166806
- return JSON.parse(text10);
166815
+ return JSON.parse(text11);
166807
166816
  } catch (e2) {
166808
166817
  throw new Error(`${label3} is not valid JSON: ${e2.message}`);
166809
166818
  }
166810
166819
  }
166811
- function parseIapManifest(text10, label3) {
166812
- const doc = parseJson3(text10, label3);
166820
+ function parseIapManifest(text11, label3) {
166821
+ const doc = parseJson3(text11, label3);
166813
166822
  const reader = new ManifestReader();
166814
166823
  const obj5 = reader.object(doc, "", MANIFEST_KEYS);
166815
166824
  if (obj5.manifestVersion !== 1) reader.problems.push("manifestVersion must be 1");
@@ -167759,9 +167768,9 @@ async function ensure(spec, sleep) {
167759
167768
  }
167760
167769
  }
167761
167770
  function textFor(item, locale) {
167762
- const text10 = item.localizations.find((l2) => l2.locale === locale);
167763
- if (!text10) throw new Error(`no ${locale} localization in the manifest for ${item.productId}`);
167764
- return text10;
167771
+ const text11 = item.localizations.find((l2) => l2.locale === locale);
167772
+ if (!text11) throw new Error(`no ${locale} localization in the manifest for ${item.productId}`);
167773
+ return text11;
167765
167774
  }
167766
167775
  async function findProduct(api2, appId2, productId) {
167767
167776
  return (await api2.listProducts(appId2)).find((p2) => p2.productId === productId);
@@ -167820,14 +167829,14 @@ async function deleteLeftoverScreenshot(context, resourceId) {
167820
167829
  }
167821
167830
  async function upsertManagedLocalization(run2, locale, context) {
167822
167831
  const resourceId = required(run2.resourceId, "the product id");
167823
- const text10 = textFor(run2.item, locale);
167832
+ const text11 = textFor(run2.item, locale);
167824
167833
  const { api: api2, sleep } = context;
167825
167834
  const find2 = async () => {
167826
167835
  const version5 = await findDraft(api2, resourceId);
167827
- const localization2 = version5 && await findLocalization(api2, version5.id, locale, text10);
167836
+ const localization2 = version5 && await findLocalization(api2, version5.id, locale, text11);
167828
167837
  return version5 && localization2 ? { version: version5, localization: localization2, outcome: "ALREADY_APPLIED" } : void 0;
167829
167838
  };
167830
- const { value, state } = await ensure({ write: () => api2.managed.upsertLocalization(resourceId, text10), find: find2 }, sleep);
167839
+ const { value, state } = await ensure({ write: () => api2.managed.upsertLocalization(resourceId, text11), find: find2 }, sleep);
167831
167840
  run2.versionId = value.version.id;
167832
167841
  return { state: value.outcome === "ALREADY_APPLIED" ? "reconciled" : state, resourceId: value.localization.id };
167833
167842
  }
@@ -167852,16 +167861,16 @@ function operationRunners(context, manifest) {
167852
167861
  createLocalization: async (run2, op) => {
167853
167862
  if (api2.managed) return upsertManagedLocalization(run2, op.locale, context);
167854
167863
  const versionId = required(run2.versionId, "the draft version");
167855
- const text10 = textFor(run2.item, op.locale);
167856
- const { value, state } = await ensure({ write: () => api2.createLocalization(versionId, text10), find: () => findLocalization(api2, versionId, text10.locale) }, sleep);
167864
+ const text11 = textFor(run2.item, op.locale);
167865
+ const { value, state } = await ensure({ write: () => api2.createLocalization(versionId, text11), find: () => findLocalization(api2, versionId, text11.locale) }, sleep);
167857
167866
  return { state, resourceId: value.id };
167858
167867
  },
167859
167868
  updateLocalization: async (run2, op) => {
167860
167869
  if (api2.managed) return upsertManagedLocalization(run2, op.locale, context);
167861
167870
  const versionId = required(run2.versionId, "the draft version");
167862
- const text10 = textFor(run2.item, op.locale);
167863
- const localizationId = required(run2.localizations.find((l2) => l2.locale === text10.locale)?.id, `the ${text10.locale} localization`);
167864
- const { value, state } = await ensure({ write: () => api2.updateLocalization(localizationId, text10), find: () => findLocalization(api2, versionId, text10.locale, text10) }, sleep);
167871
+ const text11 = textFor(run2.item, op.locale);
167872
+ const localizationId = required(run2.localizations.find((l2) => l2.locale === text11.locale)?.id, `the ${text11.locale} localization`);
167873
+ const { value, state } = await ensure({ write: () => api2.updateLocalization(localizationId, text11), find: () => findLocalization(api2, versionId, text11.locale, text11) }, sleep);
167865
167874
  return { state, resourceId: value.id };
167866
167875
  },
167867
167876
  setPrice: async (run2) => {
@@ -168126,10 +168135,10 @@ function profilePath(name, home = homedir11()) {
168126
168135
  }
168127
168136
  return join93(credentialsDir(home), `${name}.json`);
168128
168137
  }
168129
- function parseProfile(text10, label3) {
168138
+ function parseProfile(text11, label3) {
168130
168139
  let doc;
168131
168140
  try {
168132
- doc = JSON.parse(text10);
168141
+ doc = JSON.parse(text11);
168133
168142
  } catch (e2) {
168134
168143
  throw new Error(`${label3} is not valid JSON: ${e2.message}`);
168135
168144
  }
@@ -168291,9 +168300,9 @@ var init_iap_credentials = __esm({
168291
168300
 
168292
168301
  // ../store-release/iap-draft.ts
168293
168302
  import { createHash as createHash46 } from "node:crypto";
168294
- function fit(text10, max) {
168295
- const chars = [...text10];
168296
- return chars.length <= max ? text10 : `${chars.slice(0, max - 1).join("").trimEnd()}${ELLIPSIS}`;
168303
+ function fit(text11, max) {
168304
+ const chars = [...text11];
168305
+ return chars.length <= max ? text11 : `${chars.slice(0, max - 1).join("").trimEnd()}${ELLIPSIS}`;
168297
168306
  }
168298
168307
  function plainText2(html) {
168299
168308
  return html.replace(/<[^>]*>/g, " ").replace(/&(amp|nbsp|lt|gt|quot|#39);/g, (entity) => ENTITIES[entity]).replace(/\s+/g, " ").trim();
@@ -168343,7 +168352,7 @@ function perItemProduct(item, options, names2) {
168343
168352
  classification: "digital",
168344
168353
  entitlement: entityKey(item.source, item.id),
168345
168354
  productId: productIdFor(options.target.bundleId, SOURCE_SLUGS[item.source], item.id),
168346
- type: "nonConsumable",
168355
+ type: repeatable(item) ? "consumable" : "nonConsumable",
168347
168356
  referenceName: names2.claim(name, item.id),
168348
168357
  localizations: [{ locale: options.locale, name: displayName(name), description: fit(plainDescription || `Unlock ${name}`, APPLE_LIMITS.description) }],
168349
168358
  price: priceFor(item.price.amount, options),
@@ -168419,19 +168428,22 @@ function draftManifest(catalog3, options) {
168419
168428
  else toDraft.push(item);
168420
168429
  }
168421
168430
  }
168422
- const drafted = options.mode === "tiers" ? draftTiers(toDraft, options, names2, existingItems) : toDraft.map((item) => perItemProduct(item, options, names2));
168431
+ const perItem = toDraft.filter((item) => options.mode !== "tiers" || repeatable(item));
168432
+ const tiered = toDraft.filter((item) => options.mode === "tiers" && !repeatable(item));
168433
+ const drafted = [...perItem.map((item) => perItemProduct(item, options, names2)), ...draftTiers(tiered, options, names2, existingItems)];
168423
168434
  const items = [...existingItems, ...drafted];
168424
168435
  const newlyMapped = toDraft.length;
168425
168436
  if (!items.length) return { skipped, kept, newlyMapped };
168426
168437
  const manifest = { manifestVersion: 1, target: options.target, items };
168427
168438
  return { manifest: parseIapManifest(JSON.stringify(manifest), "the drafted manifest"), skipped, kept, newlyMapped };
168428
168439
  }
168429
- var SOURCE_SLUGS, SKIP_REASONS, TIER_DESCRIPTION, ELLIPSIS, entityKey, sha2, ENTITIES, MAX_SUFFIX, ReferenceNames, nameOf, tierProductId;
168440
+ var SOURCE_SLUGS, repeatable, SKIP_REASONS, TIER_DESCRIPTION, ELLIPSIS, entityKey, sha2, ENTITIES, MAX_SUFFIX, ReferenceNames, nameOf, tierProductId;
168430
168441
  var init_iap_draft = __esm({
168431
168442
  "../store-release/iap-draft.ts"() {
168432
168443
  init_iap_manifest();
168433
168444
  init_iap_pricing();
168434
- SOURCE_SLUGS = { storesProduct: "product", onlineProgram: "program", pricingPlan: "plan" };
168445
+ SOURCE_SLUGS = { storesProduct: "product", onlineProgram: "program", pricingPlan: "plan", bookingsService: "booking", eventsTicket: "ticket" };
168446
+ repeatable = (item) => item.source === "bookingsService" || item.source === "eventsTicket";
168435
168447
  SKIP_REASONS = {
168436
168448
  physical: "physical goods are never sold through in-app purchase",
168437
168449
  subscription: "a recurring plan needs an App Store subscription, which this version does not register",
@@ -168440,7 +168452,7 @@ var init_iap_draft = __esm({
168440
168452
  TIER_DESCRIPTION = "Unlocks one item in the app";
168441
168453
  ELLIPSIS = "\u2026";
168442
168454
  entityKey = (entityType, entityId) => `${entityType}:${entityId}`;
168443
- sha2 = (text10) => createHash46("sha256").update(text10).digest("hex");
168455
+ sha2 = (text11) => createHash46("sha256").update(text11).digest("hex");
168444
168456
  ENTITIES = { "&amp;": "&", "&nbsp;": " ", "&lt;": "<", "&gt;": ">", "&quot;": '"', "&#39;": "'" };
168445
168457
  MAX_SUFFIX = 24;
168446
168458
  ReferenceNames = class {
@@ -168890,14 +168902,104 @@ var init_iap_config_edit = __esm({
168890
168902
  }
168891
168903
  });
168892
168904
 
168905
+ // ../../core/sdk/iap/src/attendance-classifier.ts
168906
+ function classifyForApple(item, currency) {
168907
+ if (item.hidden !== false || item.attendance === "hybrid") return "decide";
168908
+ if (item.kind === "bookingsService") return bookingRoute(item, currency);
168909
+ return ticketRoute(item, currency);
168910
+ }
168911
+ function bookingRoute(item, currency) {
168912
+ if (item.onlineBooking !== true) return "decide";
168913
+ if (item.conferencing === false && item.locations?.length && item.locations.every((type) => type === "BUSINESS" || type === "CUSTOMER" || type === "CUSTOM")) {
168914
+ return item.attendance === "online" ? "decide" : "wixPayments";
168915
+ }
168916
+ if (item.conferencing !== true || item.attendance === "physical") return "decide";
168917
+ if (item.attendance !== "online" && (!item.locations || item.locations.length > 0)) return "decide";
168918
+ if (item.type === "APPOINTMENT") {
168919
+ return item.capacity === 1 && item.maxParticipantsPerBooking === 1 ? "wixPayments" : "decide";
168920
+ }
168921
+ if (item.type !== "CLASS" && item.type !== "COURSE" || !item.capacity || item.capacity <= 1) return "decide";
168922
+ if (item.priceType === "NO_FEE" || zeroPrice(item.amount)) return "wixPayments";
168923
+ if (item.onlinePayment !== true || item.deposit !== false || item.priceType !== "FIXED") return "decide";
168924
+ return fixedPriceRoute(item, currency);
168925
+ }
168926
+ function ticketRoute(item, currency) {
168927
+ if (item.location === "VENUE") return item.attendance === "online" ? "decide" : "wixPayments";
168928
+ if (item.location !== "ONLINE" || item.attendance === "physical" || item.registration !== "TICKETING") return "decide";
168929
+ if (item.eventStatus !== "UPCOMING" && item.eventStatus !== "STARTED") return "decide";
168930
+ if (item.saleStatus !== "SALE_STARTED") return "decide";
168931
+ if (zeroPrice(item.amount)) return "wixPayments";
168932
+ return item.priceType === "STANDARD" ? fixedPriceRoute(item, currency) : "decide";
168933
+ }
168934
+ function fixedPriceRoute(item, currency) {
168935
+ const amount = item.amount;
168936
+ return typeof amount === "string" && /^\d+(?:\.\d+)?$/.test(amount) && Number.isFinite(Number(amount)) && Number(amount) > 0 && /^[A-Z]{3}$/.test(currency) && item.currency === currency ? "appleIap" : "decide";
168937
+ }
168938
+ function bookingAttendanceOf(raw) {
168939
+ const s2 = object7(raw);
168940
+ const payment = object7(s2.payment);
168941
+ const fixed = object7(payment.fixed);
168942
+ const price = object7(fixed.price);
168943
+ const options = object7(payment.options);
168944
+ const policy = object7(object7(s2.bookingPolicy).participantsPolicy);
168945
+ return {
168946
+ kind: "bookingsService",
168947
+ type: text9(s2.type),
168948
+ capacity: numeric(s2.defaultCapacity),
168949
+ maxParticipantsPerBooking: policy.enabled === true ? numeric(policy.maxParticipantsPerBooking) : void 0,
168950
+ hidden: boolean2(s2.hidden),
168951
+ conferencing: boolean2(object7(s2.conferencing).enabled),
168952
+ locations: Array.isArray(s2.locations) ? s2.locations.map((l2) => text9(object7(l2).type) ?? "UNKNOWN") : void 0,
168953
+ onlineBooking: boolean2(object7(s2.onlineBooking).enabled),
168954
+ onlinePayment: boolean2(options.online),
168955
+ deposit: options.deposit === true || fixed.deposit !== void 0,
168956
+ priceType: text9(payment.rateType),
168957
+ amount: text9(price.value),
168958
+ currency: text9(price.currency)
168959
+ };
168960
+ }
168961
+ function ticketAttendanceOf(event, definition) {
168962
+ const e2 = object7(event);
168963
+ const t2 = object7(definition);
168964
+ const pricing = object7(t2.pricingMethod);
168965
+ const price = object7(pricing.fixedPrice);
168966
+ const registration = object7(e2.registration);
168967
+ const type = text9(registration.type) ?? text9(registration.initialType) ?? text9(e2.eventType);
168968
+ const status = text9(e2.status) ?? text9(e2.eventStatus);
168969
+ return {
168970
+ kind: "eventsTicket",
168971
+ location: text9(object7(e2.location).type),
168972
+ registration: type === "TICKETS" || type === "RSVP_AND_TICKETS" ? "TICKETING" : type,
168973
+ eventStatus: status === "SCHEDULED" ? "UPCOMING" : status,
168974
+ saleStatus: text9(t2.saleStatus),
168975
+ hidden: boolean2(t2.hidden),
168976
+ priceType: text9(pricing.pricingType),
168977
+ amount: text9(price.value),
168978
+ currency: text9(price.currency)
168979
+ };
168980
+ }
168981
+ function object7(value) {
168982
+ return value !== null && typeof value === "object" && !Array.isArray(value) ? value : {};
168983
+ }
168984
+ var text9, numeric, boolean2, zeroPrice;
168985
+ var init_attendance_classifier = __esm({
168986
+ "../../core/sdk/iap/src/attendance-classifier.ts"() {
168987
+ init_wix_payments_contract();
168988
+ text9 = (value) => typeof value === "string" ? value : void 0;
168989
+ numeric = (value) => typeof value === "number" ? value : void 0;
168990
+ boolean2 = (value) => typeof value === "boolean" ? value : void 0;
168991
+ zeroPrice = (value) => typeof value === "string" && /^0+(?:\.0+)?$/.test(value);
168992
+ }
168993
+ });
168994
+
168893
168995
  // src/store-iap-catalog.ts
168894
168996
  function amountText(value) {
168895
168997
  if (typeof value === "number" && Number.isFinite(value)) return String(value);
168896
168998
  return typeof value === "string" && value.trim() ? value.trim() : void 0;
168897
168999
  }
168898
169000
  function priceOf(amount, currency) {
168899
- const text10 = amountText(amount);
168900
- return text10 && typeof currency === "string" && currency ? { amount: text10, currency } : void 0;
169001
+ const text11 = amountText(amount);
169002
+ return text11 && typeof currency === "string" && currency ? { amount: text11, currency } : void 0;
168901
169003
  }
168902
169004
  function catalogItem(fields) {
168903
169005
  return Object.fromEntries(Object.entries(fields).filter(([, v2]) => v2 !== void 0 && v2 !== "" && v2 !== false));
@@ -169035,18 +169137,65 @@ async function readOneTimeUnlimitedPlanIds(wix) {
169035
169137
  }
169036
169138
  async function readWixCatalog(wix) {
169037
169139
  const notes = [];
169038
- const items = [...await readStores(wix, notes), ...await readPrograms(wix, notes), ...await readPlans(wix, notes)];
169039
- notes.push(NEVER_DRAFTED_NOTE);
169140
+ const items = [...await readStores(wix, notes), ...await readPrograms(wix, notes), ...await readPlans(wix, notes), ...await readAttendance(wix, notes)];
169040
169141
  return { items, notes };
169041
169142
  }
169042
- var PAGE4, MAX_PAGES3, PROGRAM_READ_CONCURRENCY, NEVER_DRAFTED_NOTE, isNotInstalled2, isWrongCatalogVersion;
169143
+ async function attendanceRows(wix, path2, key3, extra = {}) {
169144
+ return allByOffset(async (offset) => {
169145
+ const { query = {}, ...fields } = extra;
169146
+ const res = await wix("POST", path2, { ...fields, query: { ...query, paging: { limit: PAGE4, offset } } });
169147
+ return { rows: res[key3] ?? [], total: res.pagingMetadata?.total ?? res.metadata?.total };
169148
+ }, path2);
169149
+ }
169150
+ function attendanceKind(item) {
169151
+ const route = classifyForApple(item, item.currency ?? "");
169152
+ return route === "appleIap" ? "digital" : route === "wixPayments" ? "physical" : "unknown";
169153
+ }
169154
+ async function readAttendance(wix, notes) {
169155
+ let services = [];
169156
+ let events = [];
169157
+ try {
169158
+ services = await attendanceRows(wix, "/bookings/v2/services/query", "services");
169159
+ } catch (e2) {
169160
+ if (isNotInstalled2(e2)) notInstalled(notes, "Wix Bookings");
169161
+ else throw e2;
169162
+ }
169163
+ try {
169164
+ events = await attendanceRows(wix, "/events/v3/events/query", "events", { fields: ["REGISTRATION", "DETAILS"] });
169165
+ } catch (e2) {
169166
+ if (isNotInstalled2(e2)) notInstalled(notes, "Wix Events");
169167
+ else throw e2;
169168
+ }
169169
+ const tickets = await mapLimit(events.filter((e2) => ticketAttendanceOf(e2, {}).registration === "TICKETING"), PROGRAM_READ_CONCURRENCY, async (event) => {
169170
+ const definitions2 = await attendanceRows(wix, "/events/v3/ticket-definitions/query", "ticketDefinitions", { query: { filter: { eventId: { $eq: event.id } } } });
169171
+ return definitions2.map((t2) => catalogItem({
169172
+ source: "eventsTicket",
169173
+ id: t2.id,
169174
+ name: t2.name || t2.id,
169175
+ description: t2.description,
169176
+ kind: attendanceKind(ticketAttendanceOf(event, t2)),
169177
+ hidden: t2.hidden === true,
169178
+ price: priceOf(t2.pricingMethod?.fixedPrice?.value, t2.pricingMethod?.fixedPrice?.currency)
169179
+ }));
169180
+ });
169181
+ return [...services.map((s2) => catalogItem({
169182
+ source: "bookingsService",
169183
+ id: s2.id,
169184
+ name: s2.name || s2.id,
169185
+ description: s2.description,
169186
+ kind: attendanceKind(bookingAttendanceOf(s2)),
169187
+ hidden: s2.hidden === true,
169188
+ price: priceOf(s2.payment?.fixed?.price?.value, s2.payment?.fixed?.price?.currency)
169189
+ })), ...tickets.flat()];
169190
+ }
169191
+ var PAGE4, MAX_PAGES3, PROGRAM_READ_CONCURRENCY, isNotInstalled2, isWrongCatalogVersion;
169043
169192
  var init_store_iap_catalog = __esm({
169044
169193
  "src/store-iap-catalog.ts"() {
169194
+ init_attendance_classifier();
169045
169195
  init_wix_owner();
169046
169196
  PAGE4 = 100;
169047
169197
  MAX_PAGES3 = 500;
169048
169198
  PROGRAM_READ_CONCURRENCY = 4;
169049
- NEVER_DRAFTED_NOTE = "Bookings services and events are real-world services, which Apple does not allow as in-app purchases \u2014 they are never drafted.";
169050
169199
  isNotInstalled2 = (e2) => e2 instanceof WixApiError && e2.isAppNotInstalled;
169051
169200
  isWrongCatalogVersion = (e2) => e2 instanceof WixApiError && e2.status === 428 && /CATALOG_V1/.test(e2.message);
169052
169201
  }
@@ -169054,7 +169203,7 @@ var init_store_iap_catalog = __esm({
169054
169203
 
169055
169204
  // src/store-iap-connect.ts
169056
169205
  async function planCheck(items, deps) {
169057
- const rules = deps.saleRules ?? APPLE_SALE_RULES;
169206
+ const rules = deps.saleRules ?? APPLE_PROVISIONING_RULES;
169058
169207
  if (!rules.pricingPlan || !items.some((item) => item.wix?.entityType === "pricingPlan")) return { ok: true, ids: /* @__PURE__ */ new Set() };
169059
169208
  if (!deps.oneTimePlans) return { ok: false, why: "the site's plans were not read" };
169060
169209
  try {
@@ -169156,7 +169305,7 @@ function providerPlan(provider) {
169156
169305
  detail: "the appleIAP provider is connected through Serve's IAP routes (wix-iap ConnectProviderAccount), and this Serve target has none."
169157
169306
  };
169158
169307
  }
169159
- async function mapItems(api2, appId2, items, apply, plans, rules = APPLE_SALE_RULES) {
169308
+ async function mapItems(api2, appId2, items, apply, plans, rules = APPLE_PROVISIONING_RULES) {
169160
169309
  let catalog3;
169161
169310
  try {
169162
169311
  catalog3 = await api2.listProducts(appId2);
@@ -169188,7 +169337,7 @@ async function mapItems(api2, appId2, items, apply, plans, rules = APPLE_SALE_RU
169188
169337
  }
169189
169338
  return steps;
169190
169339
  }
169191
- function mappingTarget(item, plans, rules = APPLE_SALE_RULES) {
169340
+ function mappingTarget(item, plans, rules = APPLE_PROVISIONING_RULES) {
169192
169341
  const skip = (entity2, detail) => ({ skip: { entity: entity2, appProductId: null, storeProductId: item.productId, state: "skipped", code: "mapping_unsupported", detail } });
169193
169342
  if (!item.wix || item.unlocks?.length) {
169194
169343
  return skip(item.productId, "a consumable tier unlocks several Wix items, but a purchase pays one order item, so it cannot be mapped");
@@ -169227,7 +169376,7 @@ function decide(catalog3, target) {
169227
169376
  }
169228
169377
  return void 0;
169229
169378
  }
169230
- function mappingWithoutApp(item, planning, plans, rules = APPLE_SALE_RULES) {
169379
+ function mappingWithoutApp(item, planning, plans, rules = APPLE_PROVISIONING_RULES) {
169231
169380
  const target = mappingTarget(item, plans, rules);
169232
169381
  if ("skip" in target) return target.skip;
169233
169382
  return planning ? { ...target, state: "planned", detail: `map ${target.appProductId} \u2192 ${target.storeProductId}` } : { ...target, ...noApp("the app is not registered") };
@@ -169384,8 +169533,8 @@ async function shoot(selected, run2, outDir) {
169384
169533
  function visibleText2(html) {
169385
169534
  return html.replace(/&nbsp;|&#160;|&#xa0;/gi, "\xA0").replace(/&amp;/g, "&");
169386
169535
  }
169387
- function manifestWithScreenshots(text10, shot) {
169388
- const doc = JSON.parse(text10);
169536
+ function manifestWithScreenshots(text11, shot) {
169537
+ const doc = JSON.parse(text11);
169389
169538
  for (const [index, path2] of shot) doc.items[index].reviewScreenshot = path2;
169390
169539
  return `${JSON.stringify(doc, null, 2)}
169391
169540
  `;
@@ -169601,10 +169750,10 @@ function makeTransport(fetchImpl, auth, timeoutMs = DEFAULT_TIMEOUT_MS3) {
169601
169750
  body: body === void 0 ? void 0 : JSON.stringify(body),
169602
169751
  signal: AbortSignal.timeout(timeoutMs)
169603
169752
  });
169604
- const text10 = await res.text();
169605
- let parsed = text10;
169753
+ const text11 = await res.text();
169754
+ let parsed = text11;
169606
169755
  try {
169607
- parsed = text10 ? JSON.parse(text10) : null;
169756
+ parsed = text11 ? JSON.parse(text11) : null;
169608
169757
  } catch {
169609
169758
  }
169610
169759
  if (!res.ok) throw new WixApiError2(res.status, method, path2, parsed);
@@ -169742,9 +169891,9 @@ function manifestDirOf(manifestPath) {
169742
169891
  return dirname46(resolve70(manifestPath));
169743
169892
  }
169744
169893
  function readPlan(deps, path2) {
169745
- const text10 = readInput(deps, path2, "plan");
169894
+ const text11 = readInput(deps, path2, "plan");
169746
169895
  try {
169747
- return verifyPlan2(JSON.parse(text10));
169896
+ return verifyPlan2(JSON.parse(text11));
169748
169897
  } catch (e2) {
169749
169898
  if (e2 instanceof SyntaxError) throw new Error(`${path2} is not valid JSON: ${e2.message}`);
169750
169899
  throw e2;
@@ -169755,10 +169904,10 @@ function writeJson(deps, out2, path2, value) {
169755
169904
  `);
169756
169905
  }
169757
169906
  function writePlan(deps, out2, path2, plan) {
169758
- const text10 = `${JSON.stringify(plan, null, 2)}
169907
+ const text11 = `${JSON.stringify(plan, null, 2)}
169759
169908
  `;
169760
- if (out2.carriesSecret(text10)) throw new Error("refusing to write a plan that contains this run's App Store Connect credentials");
169761
- deps.writeFileAtomic(path2, text10);
169909
+ if (out2.carriesSecret(text11)) throw new Error("refusing to write a plan that contains this run's App Store Connect credentials");
169910
+ deps.writeFileAtomic(path2, text11);
169762
169911
  }
169763
169912
  function catalogRoutePrefix(flags, deps) {
169764
169913
  if (flags["catalog-route"] !== void 0 && !textFlag(flags, "catalog-route")) throw new IapCatalogError("catalog_route_unavailable", "--catalog-route needs an explicit gateway path");
@@ -170243,7 +170392,7 @@ async function screenshotsCommand(flags, deps, out2) {
170243
170392
  appleLocked: (item) => facts.get(item.productId)?.locked,
170244
170393
  appleRead: textFlag(flags, "profile") !== void 0,
170245
170394
  writeBytes: deps.writeBytes ?? writeBinaryFile,
170246
- writeText: (path2, text10) => deps.writeFileAtomic(path2, text10),
170395
+ writeText: (path2, text11) => deps.writeFileAtomic(path2, text11),
170247
170396
  ...only ? { only: new Set(only.split(",").map((id) => id.trim()).filter(Boolean)) } : {},
170248
170397
  ...outDir ? { outDir: resolve70(outDir) } : {},
170249
170398
  force: flags.force === true,
@@ -170397,8 +170546,8 @@ var init_store_iap = __esm({
170397
170546
  protectKey(key3) {
170398
170547
  this.secrets.push(key3.privateKey, key3.keyId);
170399
170548
  }
170400
- line(text10 = "") {
170401
- this.io.log(this.scrub(text10));
170549
+ line(text11 = "") {
170550
+ this.io.log(this.scrub(text11));
170402
170551
  }
170403
170552
  print(value) {
170404
170553
  this.io.log(this.serialize(value));
@@ -170411,11 +170560,11 @@ var init_store_iap = __esm({
170411
170560
  return JSON.stringify(scrubDeep(value, (t2) => this.scrub(t2)), null, 2);
170412
170561
  }
170413
170562
  /** This run's own key material, raw or JSON-escaped, anywhere in `text`. */
170414
- carriesSecret(text10) {
170415
- return this.secrets.some((secret) => secret && (text10.includes(secret) || text10.includes(JSON.stringify(secret).slice(1, -1))));
170563
+ carriesSecret(text11) {
170564
+ return this.secrets.some((secret) => secret && (text11.includes(secret) || text11.includes(JSON.stringify(secret).slice(1, -1))));
170416
170565
  }
170417
- scrub(text10) {
170418
- let out2 = text10;
170566
+ scrub(text11) {
170567
+ let out2 = text11;
170419
170568
  for (const secret of this.secrets) if (secret) out2 = out2.split(secret).join("[redacted]");
170420
170569
  return scrubString(out2);
170421
170570
  }
@@ -171769,12 +171918,12 @@ async function runRemoteSecretsCommand(operation, flags, io2, options) {
171769
171918
  body = JSON.stringify({ value });
171770
171919
  }
171771
171920
  const response = await (options.fetchImpl ?? fetch)(url, { method: operation === "list" ? "GET" : operation === "set" ? "PUT" : "POST", headers: headers2, body });
171772
- const text10 = await response.text();
171921
+ const text11 = await response.text();
171773
171922
  let output;
171774
171923
  try {
171775
- output = JSON.parse(text10);
171924
+ output = JSON.parse(text11);
171776
171925
  } catch {
171777
- output = text10;
171926
+ output = text11;
171778
171927
  }
171779
171928
  if (!response.ok) throw new Error(typeof output === "string" ? output : JSON.stringify(output));
171780
171929
  io2.log(JSON.stringify(output));
@@ -171832,9 +171981,9 @@ function headersFor(options) {
171832
171981
  ...options.previewTag ? { "x-wix-route-serve": options.previewTag } : {}
171833
171982
  };
171834
171983
  }
171835
- function objectFrom(text10) {
171984
+ function objectFrom(text11) {
171836
171985
  try {
171837
- const value = text10 ? JSON.parse(text10) : null;
171986
+ const value = text11 ? JSON.parse(text11) : null;
171838
171987
  return value && typeof value === "object" && !Array.isArray(value) ? value : null;
171839
171988
  } catch {
171840
171989
  return null;
@@ -172072,12 +172221,12 @@ async function runNotifyPing(flags, io2, deps = {}) {
172072
172221
  const flagError = flagRefusal(flags);
172073
172222
  if (flagError) return refuse6(io2, flagError);
172074
172223
  const allMembers = flags["all-members"] === true;
172075
- if (allMembers && text9(flags["member-email"])) return refuse6(io2, "recipient_conflict", "Choose --all-members or --member-email.");
172224
+ if (allMembers && text10(flags["member-email"])) return refuse6(io2, "recipient_conflict", "Choose --all-members or --member-email.");
172076
172225
  if (allMembers && flags["dry-run"] !== true && flags.yes !== true) return refuse6(io2, "confirmation_required", "Preview with --dry-run, then add --yes to send to every approved member.");
172077
- const input = mergePushInputs(pushInputsFromContent(resolve72(text9(flags.content) ?? process.cwd())), flags);
172078
- const missing2 = [...input.app ? [] : ["app"], ...input.site ? [] : ["site"], ...REQUIRED_FLAGS.filter((f2) => !(allMembers && f2 === "member-email") && !text9(flags[f2]))];
172226
+ const input = mergePushInputs(pushInputsFromContent(resolve72(text10(flags.content) ?? process.cwd())), flags);
172227
+ const missing2 = [...input.app ? [] : ["app"], ...input.site ? [] : ["site"], ...REQUIRED_FLAGS.filter((f2) => !(allMembers && f2 === "member-email") && !text10(flags[f2]))];
172079
172228
  if (missing2.length) return refuse6(io2, "needs_input", "Name the app and site (or --content), the member's login email, a title and a link.", 2, { missing: missing2 });
172080
- const requestId2 = text9(flags["request-id"]) ?? (deps.newRequestId ?? randomUUID10)();
172229
+ const requestId2 = text10(flags["request-id"]) ?? (deps.newRequestId ?? randomUUID10)();
172081
172230
  if (!UUID_RE.test(requestId2)) return refuse6(io2, "invalid_request_id", "Reuse the requestId a previous send printed.");
172082
172231
  const owner = await hostedOwnerSession(flags, deps);
172083
172232
  if (!owner.ok) return refuse6(io2, owner.error, owner.hint, owner.exit);
@@ -172094,10 +172243,10 @@ async function runNotifyPing(flags, io2, deps = {}) {
172094
172243
  const body = {
172095
172244
  app: ownership.slug,
172096
172245
  site: input.site,
172097
- memberEmail: text9(flags["member-email"]),
172098
- title: text9(flags.title),
172099
- ...text9(flags.body) ? { body: text9(flags.body) } : {},
172100
- link: text9(flags.link),
172246
+ memberEmail: text10(flags["member-email"]),
172247
+ title: text10(flags.title),
172248
+ ...text10(flags.body) ? { body: text10(flags.body) } : {},
172249
+ link: text10(flags.link),
172101
172250
  requestId: requestId2,
172102
172251
  ...flags["dry-run"] === true ? { dryRun: true } : {}
172103
172252
  };
@@ -172137,7 +172286,7 @@ async function runAllMembers(args) {
172137
172286
  const code = error instanceof PushSendError ? error.code : error instanceof Error && ROSTER_CODES.has(error.message) ? error.message : "member_lookup_unavailable";
172138
172287
  return refuse6(io2, code, void 0, 1);
172139
172288
  }
172140
- const base = { app: input.app, site: input.site, title: text9(flags.title), ...text9(flags.body) ? { body: text9(flags.body) } : {}, link: text9(flags.link) };
172289
+ const base = { app: input.app, site: input.site, title: text10(flags.title), ...text10(flags.body) ? { body: text10(flags.body) } : {}, link: text10(flags.link) };
172141
172290
  const send2 = (recipient, memberRequestId, dryRun = false) => pushSendRequest({
172142
172291
  target: session.target,
172143
172292
  wixToken: session.wixToken,
@@ -172220,7 +172369,7 @@ function summary(result, sent) {
172220
172369
  }
172221
172370
  return `Ping accepted request ${sent.requestId} for ${sent.memberEmail}. Ping does not confirm delivery: it reaches the member's signed-in devices with notifications allowed.`;
172222
172371
  }
172223
- var LOCAL_SENDER_FLAGS, SWITCHES, REQUIRED_FLAGS, UUID_RE, KNOWN_CODES, ROSTER_CODES, HINTS, text9;
172372
+ var LOCAL_SENDER_FLAGS, SWITCHES, REQUIRED_FLAGS, UUID_RE, KNOWN_CODES, ROSTER_CODES, HINTS, text10;
172224
172373
  var init_notify_ping = __esm({
172225
172374
  "src/notify-ping.ts"() {
172226
172375
  init_push_send();
@@ -172248,7 +172397,7 @@ var init_notify_ping = __esm({
172248
172397
  site_token_invalid: "Run wix login as the site owner; the site token must belong to the app owner's account.",
172249
172398
  ping_permission_denied: "Himi Serve is not permitted to send through Ping; this is a platform issue, not your setup."
172250
172399
  };
172251
- text9 = (v2) => typeof v2 === "string" && v2.length > 0 ? v2 : void 0;
172400
+ text10 = (v2) => typeof v2 === "string" && v2.length > 0 ? v2 : void 0;
172252
172401
  }
172253
172402
  });
172254
172403
 
@@ -173373,14 +173522,14 @@ async function callJson(t2, appId2, method, path2, what, body) {
173373
173522
  ...body !== void 0 ? { body: JSON.stringify(body) } : {}
173374
173523
  });
173375
173524
  if (!res.ok) {
173376
- const text11 = await res.text().catch(() => "");
173377
- throw new Base44RequestError(res.status, text11.slice(0, 500), what);
173525
+ const text12 = await res.text().catch(() => "");
173526
+ throw new Base44RequestError(res.status, text12.slice(0, 500), what);
173378
173527
  }
173379
- const text10 = await res.text();
173528
+ const text11 = await res.text();
173380
173529
  try {
173381
- return JSON.parse(text10);
173530
+ return JSON.parse(text11);
173382
173531
  } catch {
173383
- throw new Base44RequestError(res.status, `unreadable response: ${text10.slice(0, 200)}`, what);
173532
+ throw new Base44RequestError(res.status, `unreadable response: ${text11.slice(0, 200)}`, what);
173384
173533
  }
173385
173534
  }
173386
173535
  function requestFailure(e2) {
@@ -173648,16 +173797,16 @@ var init_seed = __esm({
173648
173797
  });
173649
173798
 
173650
173799
  // src/base44-analyze/project.ts
173651
- function parseJsonc(text10) {
173800
+ function parseJsonc(text11) {
173652
173801
  let out2 = "";
173653
173802
  let i2 = 0;
173654
173803
  let inStr = false;
173655
- while (i2 < text10.length) {
173656
- const c2 = text10[i2];
173804
+ while (i2 < text11.length) {
173805
+ const c2 = text11[i2];
173657
173806
  if (inStr) {
173658
173807
  out2 += c2;
173659
173808
  if (c2 === "\\") {
173660
- out2 += text10[i2 + 1] ?? "";
173809
+ out2 += text11[i2 + 1] ?? "";
173661
173810
  i2 += 2;
173662
173811
  continue;
173663
173812
  }
@@ -173669,11 +173818,11 @@ function parseJsonc(text10) {
173669
173818
  inStr = true;
173670
173819
  out2 += c2;
173671
173820
  i2++;
173672
- } else if (c2 === "/" && text10[i2 + 1] === "/") {
173673
- while (i2 < text10.length && text10[i2] !== "\n") i2++;
173674
- } else if (c2 === "/" && text10[i2 + 1] === "*") {
173821
+ } else if (c2 === "/" && text11[i2 + 1] === "/") {
173822
+ while (i2 < text11.length && text11[i2] !== "\n") i2++;
173823
+ } else if (c2 === "/" && text11[i2 + 1] === "*") {
173675
173824
  i2 += 2;
173676
- while (i2 < text10.length && !(text10[i2] === "*" && text10[i2 + 1] === "/")) i2++;
173825
+ while (i2 < text11.length && !(text11[i2] === "*" && text11[i2 + 1] === "/")) i2++;
173677
173826
  i2 += 2;
173678
173827
  } else {
173679
173828
  out2 += c2;
@@ -173682,32 +173831,32 @@ function parseJsonc(text10) {
173682
173831
  }
173683
173832
  return JSON.parse(dropTrailingCommas(out2));
173684
173833
  }
173685
- function dropTrailingCommas(text10) {
173834
+ function dropTrailingCommas(text11) {
173686
173835
  let out2 = "";
173687
173836
  let inStr = false;
173688
- for (let i2 = 0; i2 < text10.length; i2++) {
173689
- const c2 = text10[i2];
173837
+ for (let i2 = 0; i2 < text11.length; i2++) {
173838
+ const c2 = text11[i2];
173690
173839
  if (inStr) {
173691
173840
  out2 += c2;
173692
- if (c2 === "\\") out2 += text10[++i2] ?? "";
173841
+ if (c2 === "\\") out2 += text11[++i2] ?? "";
173693
173842
  else if (c2 === '"') inStr = false;
173694
173843
  continue;
173695
173844
  }
173696
173845
  if (c2 === '"') inStr = true;
173697
173846
  if (c2 === ",") {
173698
173847
  let j2 = i2 + 1;
173699
- while (j2 < text10.length && /\s/.test(text10[j2])) j2++;
173700
- if (text10[j2] === "}" || text10[j2] === "]") continue;
173848
+ while (j2 < text11.length && /\s/.test(text11[j2])) j2++;
173849
+ if (text11[j2] === "}" || text11[j2] === "]") continue;
173701
173850
  }
173702
173851
  out2 += c2;
173703
173852
  }
173704
173853
  return out2;
173705
173854
  }
173706
173855
  function readJson9(files, path2) {
173707
- const text10 = files.get(path2);
173708
- if (text10 === void 0) return void 0;
173856
+ const text11 = files.get(path2);
173857
+ if (text11 === void 0) return void 0;
173709
173858
  try {
173710
- const v2 = parseJsonc(text10);
173859
+ const v2 = parseJsonc(text11);
173711
173860
  return v2 && typeof v2 === "object" && !Array.isArray(v2) ? v2 : void 0;
173712
173861
  } catch {
173713
173862
  return void 0;
@@ -174237,11 +174386,11 @@ async function readEntitySnapshot(appId2, deps) {
174237
174386
  const { entries, skipped } = collectAppSource(dl2.dir);
174238
174387
  const files = new Map(entries.map((e2) => [e2.path, e2.bytes.toString("utf8")]));
174239
174388
  for (const cfgPath of ["base44/config.jsonc", "base44/config.json"]) {
174240
- const text10 = files.get(cfgPath);
174241
- if (text10 === void 0) continue;
174389
+ const text11 = files.get(cfgPath);
174390
+ if (text11 === void 0) continue;
174242
174391
  let cfg;
174243
174392
  try {
174244
- cfg = parseJsonc(text10);
174393
+ cfg = parseJsonc(text11);
174245
174394
  } catch (e2) {
174246
174395
  throw new Error(`${cfgPath} does not parse (${e2.message}) \u2014 the entity directory it names cannot be trusted, so the snapshot may be incomplete`);
174247
174396
  }
@@ -174254,11 +174403,11 @@ async function readEntitySnapshot(appId2, deps) {
174254
174403
  const isEntityFile = (p2) => entityDirs.some((d2) => p2.startsWith(d2) && !p2.slice(d2.length).includes("/") && JSON_FILE2.test(p2));
174255
174404
  const dropped = skipped.map((p2) => p2.split(/[\\/]/).join("/")).filter((p2) => entityDirs.some((d2) => p2.startsWith(d2) || d2.startsWith(`${p2}/`)));
174256
174405
  if (dropped.length) throw new Error(`the download's entity files include ones himi will not read (${dropped.join(", ")}) \u2014 a sync without them would delete those entities`);
174257
- for (const [path2, text10] of files) {
174406
+ for (const [path2, text11] of files) {
174258
174407
  if (!isEntityFile(path2)) continue;
174259
174408
  let v2;
174260
174409
  try {
174261
- v2 = parseJsonc(text10);
174410
+ v2 = parseJsonc(text11);
174262
174411
  } catch (e2) {
174263
174412
  throw new Error(`entity file ${path2} does not parse (${e2.message}) \u2014 a sync without it would delete that entity`);
174264
174413
  }
@@ -174451,16 +174600,16 @@ function isPrivateV4([a2, b2, c2]) {
174451
174600
  return a2 >= 224;
174452
174601
  }
174453
174602
  function v6Groups(host) {
174454
- let text10 = host;
174455
- const dotted = /:((?:\d{1,3}\.){3}\d{1,3})$/.exec(text10);
174603
+ let text11 = host;
174604
+ const dotted = /:((?:\d{1,3}\.){3}\d{1,3})$/.exec(text11);
174456
174605
  if (dotted) {
174457
174606
  const octets = ipv4Octets(dotted[1]);
174458
174607
  if (!octets) return null;
174459
174608
  const hi2 = (octets[0] << 8 | octets[1]).toString(16);
174460
174609
  const lo2 = (octets[2] << 8 | octets[3]).toString(16);
174461
- text10 = `${text10.slice(0, dotted.index)}:${hi2}:${lo2}`;
174610
+ text11 = `${text11.slice(0, dotted.index)}:${hi2}:${lo2}`;
174462
174611
  }
174463
- const halves = text10.split("::");
174612
+ const halves = text11.split("::");
174464
174613
  if (halves.length > 2) return null;
174465
174614
  const parts = (part3) => part3 ? part3.split(":") : [];
174466
174615
  const head = parts(halves[0]);
@@ -174740,28 +174889,28 @@ var init_net_guard = __esm({
174740
174889
  });
174741
174890
 
174742
174891
  // src/site-analyze/copy-clean.ts
174743
- function isTemplatePlaceholder(text10) {
174744
- return PLACEHOLDER_RE.test(text10);
174892
+ function isTemplatePlaceholder(text11) {
174893
+ return PLACEHOLDER_RE.test(text11);
174745
174894
  }
174746
174895
  function cleanText(raw, cap) {
174747
174896
  const s2 = String(raw ?? "").replace(/[\u0000-\u001F\u007F]/g, " ").replace(/\s+/g, " ").trim();
174748
174897
  return s2.length > cap ? `${s2.slice(0, cap - 1).trimEnd()}\u2026` : s2;
174749
174898
  }
174750
- function stripPii(text10) {
174751
- return text10.replace(EMAIL_RE2, "").replace(PHONE_SHAPE_RE, (m2) => {
174899
+ function stripPii(text11) {
174900
+ return text11.replace(EMAIL_RE2, "").replace(PHONE_SHAPE_RE, (m2) => {
174752
174901
  const digits2 = (m2.match(ANY_DIGIT_RE) ?? []).length;
174753
174902
  return digits2 >= PHONE_MIN_DIGITS && PHONE_DIGIT_RUN_RE.test(m2) ? "" : m2;
174754
174903
  }).replace(/\s+/g, " ").trim();
174755
174904
  }
174756
- function isBoilerplate(text10) {
174757
- return BOILERPLATE_RE.test(text10) || PLACEHOLDER_RE.test(text10);
174905
+ function isBoilerplate(text11) {
174906
+ return BOILERPLATE_RE.test(text11) || PLACEHOLDER_RE.test(text11);
174758
174907
  }
174759
174908
  function copyOrDrop(raw, cap) {
174760
- const text10 = stripPii(cleanText(raw, cap));
174761
- if (text10.length < 2) return "";
174762
- if (isBoilerplate(text10)) return "";
174763
- if (!/[A-Za-zͰ-῿぀-힯]/.test(text10)) return "";
174764
- return text10;
174909
+ const text11 = stripPii(cleanText(raw, cap));
174910
+ if (text11.length < 2) return "";
174911
+ if (isBoilerplate(text11)) return "";
174912
+ if (!/[A-Za-zͰ-῿぀-힯]/.test(text11)) return "";
174913
+ return text11;
174765
174914
  }
174766
174915
  function dedupe2(values, cap) {
174767
174916
  const out2 = [];
@@ -174857,8 +175006,8 @@ function parsePublishedHtml(html) {
174857
175006
  const rawHeadings = [];
174858
175007
  HEADING_RE.lastIndex = 0;
174859
175008
  while (m2 = HEADING_RE.exec(html)) {
174860
- const text10 = copyOrDrop(textFromHtml(m2[1] ?? ""), 120);
174861
- if (text10) rawHeadings.push(text10);
175009
+ const text11 = copyOrDrop(textFromHtml(m2[1] ?? ""), 120);
175010
+ if (text11) rawHeadings.push(text11);
174862
175011
  if (rawHeadings.length >= 40) break;
174863
175012
  }
174864
175013
  const headings = dedupe2(rawHeadings, 20);
@@ -174950,14 +175099,14 @@ async function readPublishedHtml(fetchImpl, siteUrl, opts) {
174950
175099
  const chunk = await reader.read();
174951
175100
  if (chunk.done) break;
174952
175101
  bytes2 += chunk.value.byteLength;
174953
- const text10 = decoder.decode(chunk.value, { stream: true });
174954
- html += text10;
174955
- if (CODE_APP_ID_DONE_RE.test(overlap + text10) || bytes2 >= maxBytes) {
175102
+ const text11 = decoder.decode(chunk.value, { stream: true });
175103
+ html += text11;
175104
+ if (CODE_APP_ID_DONE_RE.test(overlap + text11) || bytes2 >= maxBytes) {
174956
175105
  await reader.cancel().catch(() => {
174957
175106
  });
174958
175107
  break;
174959
175108
  }
174960
- overlap = (overlap + text10).slice(-80);
175109
+ overlap = (overlap + text11).slice(-80);
174961
175110
  }
174962
175111
  } catch (e2) {
174963
175112
  if (!opts.signal?.aborted) throw e2;
@@ -175182,9 +175331,9 @@ var init_permissions = __esm({
175182
175331
  function genericDescription(it2) {
175183
175332
  for (const field of DESCRIPTION_FIELDS) {
175184
175333
  const raw = it2[field];
175185
- const text10 = typeof raw === "string" ? raw : str8(raw?.text);
175186
- if (!text10) continue;
175187
- const plain2 = text10.replace(/<[^>]*>/g, " ").replace(/&nbsp;/g, " ");
175334
+ const text11 = typeof raw === "string" ? raw : str8(raw?.text);
175335
+ if (!text11) continue;
175336
+ const plain2 = text11.replace(/<[^>]*>/g, " ").replace(/&nbsp;/g, " ");
175188
175337
  if (plain2.trim()) return plain2;
175189
175338
  }
175190
175339
  return void 0;
@@ -175665,8 +175814,8 @@ function cmsStatusNote(taxonomy) {
175665
175814
  function yn2(v2) {
175666
175815
  return v2 == null || v2 === "" ? "\u2014" : String(v2);
175667
175816
  }
175668
- function isAuthPhrase(text10) {
175669
- const t2 = text10.trim();
175817
+ function isAuthPhrase(text11) {
175818
+ const t2 = text11.trim();
175670
175819
  return AUTH_ONLY_ASCII.test(t2) || LOGIN_HE.includes(t2);
175671
175820
  }
175672
175821
  function looksGated(page) {
@@ -176465,12 +176614,12 @@ function mergeWst(pages2) {
176465
176614
  return acc;
176466
176615
  }
176467
176616
  function fontSlug(value) {
176468
- let text10 = value;
176617
+ let text11 = value;
176469
176618
  try {
176470
- text10 = decodeURIComponent(value);
176619
+ text11 = decodeURIComponent(value);
176471
176620
  } catch {
176472
176621
  }
176473
- return text10.toLowerCase().replace(/[^a-z0-9]+/g, "");
176622
+ return text11.toLowerCase().replace(/[^a-z0-9]+/g, "");
176474
176623
  }
176475
176624
  function fontUrlSlug(url) {
176476
176625
  const last = url.split("?")[0].split("#")[0].split("/").pop() ?? "";
@@ -176558,9 +176707,9 @@ function attachVeloSources(book, sources, put) {
176558
176707
  if (isSecretVeloPath(f2.path)) continue;
176559
176708
  const rel = veloArtifactRelPath(f2.path);
176560
176709
  if (!rel) continue;
176561
- const text10 = byPath.get(f2.path) ?? f2.excerpt;
176562
- if (!text10) continue;
176563
- put(rel, text10);
176710
+ const text11 = byPath.get(f2.path) ?? f2.excerpt;
176711
+ if (!text11) continue;
176712
+ put(rel, text11);
176564
176713
  f2.localPath = rel;
176565
176714
  }
176566
176715
  }
@@ -176951,7 +177100,7 @@ function appIdFromUrl(raw) {
176951
177100
  return void 0;
176952
177101
  }
176953
177102
  }
176954
- function appIdFromText(text10) {
177103
+ function appIdFromText(text11) {
176955
177104
  const shapes = [
176956
177105
  // The published shell's own badge tag: `<script data-app-id="<id>" src="/static/js/badge.js">`.
176957
177106
  /\bdata-app-id\s*=\s*["']([a-f0-9]{24})["']/,
@@ -176962,7 +177111,7 @@ function appIdFromText(text10) {
176962
177111
  /\/apps\/([a-f0-9]{24})\b/
176963
177112
  ];
176964
177113
  for (const re2 of shapes) {
176965
- const m2 = re2.exec(text10);
177114
+ const m2 = re2.exec(text11);
176966
177115
  if (m2) return m2[1];
176967
177116
  }
176968
177117
  return void 0;
@@ -180410,8 +180559,8 @@ function copyFromEval(evaled) {
180410
180559
  evaled.meta?.ogTitle,
180411
180560
  evaled.meta?.ogDescription
180412
180561
  ].map((raw) => {
180413
- const text10 = cleanText(raw, 400);
180414
- return text10 && isTemplatePlaceholder(text10) ? stripPii(cleanText(text10, 90)) : "";
180562
+ const text11 = cleanText(raw, 400);
180563
+ return text11 && isTemplatePlaceholder(text11) ? stripPii(cleanText(text11, 90)) : "";
180415
180564
  }),
180416
180565
  8
180417
180566
  );
@@ -181513,27 +181662,27 @@ var init_collect = __esm({
181513
181662
 
181514
181663
  // src/one-app/navigation.ts
181515
181664
  function sourceNavigationKind(raw) {
181516
- const navigation = object7(raw.navigation);
181517
- if (object7(navigation.settings).drawerMode === true) return "side-menu";
181665
+ const navigation = object8(raw.navigation);
181666
+ if (object8(navigation.settings).drawerMode === true) return "side-menu";
181518
181667
  const entries = array4(navigation.bottomTabs);
181519
181668
  if (entries.length > 1) return "bottom-tabs";
181520
- const screens = object7(raw.screens);
181521
- const screenId = string5(object7(entries[0]).screenId);
181522
- const screen = screenId && Object.hasOwn(screens, screenId) ? object7(screens[screenId]) : {};
181523
- return object7(screen.layout).type === "TOP_TABS" ? "top-tabs" : "single";
181669
+ const screens = object8(raw.screens);
181670
+ const screenId = string5(object8(entries[0]).screenId);
181671
+ const screen = screenId && Object.hasOwn(screens, screenId) ? object8(screens[screenId]) : {};
181672
+ return object8(screen.layout).type === "TOP_TABS" ? "top-tabs" : "single";
181524
181673
  }
181525
181674
  function planNavigation(raw, policy = "bottom-tabs") {
181526
- const navigation = object7(raw.navigation);
181675
+ const navigation = object8(raw.navigation);
181527
181676
  const entries = array4(navigation.bottomTabs);
181528
- const screens = object7(raw.screens);
181529
- const layouts = object7(raw.layoutItems);
181677
+ const screens = object8(raw.screens);
181678
+ const layouts = object8(raw.layoutItems);
181530
181679
  const kind = sourceNavigationKind(raw);
181531
181680
  const warnings = [];
181532
- const firstEntry = object7(entries[0]);
181681
+ const firstEntry = object8(entries[0]);
181533
181682
  const rootScreenId = string5(firstEntry.screenId) ?? null;
181534
- const rootScreen = rootScreenId && Object.hasOwn(screens, rootScreenId) ? object7(screens[rootScreenId]) : {};
181535
- const rootLayout = object7(rootScreen.layout);
181536
- const settings = object7(navigation.settings);
181683
+ const rootScreen = rootScreenId && Object.hasOwn(screens, rootScreenId) ? object8(screens[rootScreenId]) : {};
181684
+ const rootLayout = object8(rootScreen.layout);
181685
+ const settings = object8(navigation.settings);
181537
181686
  const appInstance = string5(raw.appInstance) ?? null;
181538
181687
  const source = {
181539
181688
  kind,
@@ -181545,8 +181694,8 @@ function planNavigation(raw, policy = "bottom-tabs") {
181545
181694
  const next = "Build navigation from this plan with himi docs one-app-to-himi-app. Report every warning; the plan does not replace the source graph.";
181546
181695
  if (kind === "bottom-tabs") {
181547
181696
  entries.forEach((value, index) => {
181548
- const id = string5(object7(value).screenId);
181549
- if (id && Object.hasOwn(screens, id) && object7(object7(screens[id]).layout).type === "TOP_TABS") {
181697
+ const id = string5(object8(value).screenId);
181698
+ if (id && Object.hasOwn(screens, id) && object8(object8(screens[id]).layout).type === "TOP_TABS") {
181550
181699
  warnings.push({ code: "nested_top_tabs", pointer: `/screens/${part2(id)}/layout/type`, reference: `/navigation/bottomTabs/${index}` });
181551
181700
  }
181552
181701
  });
@@ -181557,14 +181706,14 @@ function planNavigation(raw, policy = "bottom-tabs") {
181557
181706
  const tabs = [];
181558
181707
  const hiddenPages = [];
181559
181708
  array4(rootLayout.items).forEach((value, index) => {
181560
- const layoutItemId = string5(object7(value).layoutItemId);
181709
+ const layoutItemId = string5(object8(value).layoutItemId);
181561
181710
  const itemPointer = `${pointer}/${index}`;
181562
181711
  if (!layoutItemId || !Object.hasOwn(layouts, layoutItemId)) {
181563
181712
  warnings.push({ code: "missing_reference", pointer: itemPointer, ...layoutItemId ? { reference: layoutItemId } : {} });
181564
181713
  return;
181565
181714
  }
181566
- const layout = object7(layouts[layoutItemId]);
181567
- if (object7(layout.settings).hideFromNavigation === true) {
181715
+ const layout = object8(layouts[layoutItemId]);
181716
+ if (object8(layout.settings).hideFromNavigation === true) {
181568
181717
  hiddenPages.push({ layoutItemId, pointer: itemPointer });
181569
181718
  return;
181570
181719
  }
@@ -181609,10 +181758,10 @@ function planNavigation(raw, policy = "bottom-tabs") {
181609
181758
  next
181610
181759
  };
181611
181760
  }
181612
- var object7, array4, string5, part2, TOP_TABS_POLICIES, MAX_BAR_TABS;
181761
+ var object8, array4, string5, part2, TOP_TABS_POLICIES, MAX_BAR_TABS;
181613
181762
  var init_navigation = __esm({
181614
181763
  "src/one-app/navigation.ts"() {
181615
- object7 = (value) => value !== null && typeof value === "object" && !Array.isArray(value) ? value : {};
181764
+ object8 = (value) => value !== null && typeof value === "object" && !Array.isArray(value) ? value : {};
181616
181765
  array4 = (value) => Array.isArray(value) ? value : [];
181617
181766
  string5 = (value) => typeof value === "string" && value ? value : void 0;
181618
181767
  part2 = (value) => value.replaceAll("~", "~0").replaceAll("/", "~1");
@@ -182415,10 +182564,10 @@ async function mintVisitorToken(fetchImpl, clientId) {
182415
182564
  body: JSON.stringify({ clientId, grantType: "anonymous" }),
182416
182565
  signal: AbortSignal.timeout(8e3)
182417
182566
  });
182418
- const text10 = await res.text();
182419
- let parsed = text10;
182567
+ const text11 = await res.text();
182568
+ let parsed = text11;
182420
182569
  try {
182421
- parsed = text10 ? JSON.parse(text10) : null;
182570
+ parsed = text11 ? JSON.parse(text11) : null;
182422
182571
  } catch {
182423
182572
  }
182424
182573
  if (!res.ok) throw new WixApiError2(res.status, "POST", "/oauth2/token", parsed);
@@ -183056,8 +183205,8 @@ var init_copy = __esm({
183056
183205
  function textFields(look) {
183057
183206
  if (look.unavailable) return [];
183058
183207
  const out2 = [];
183059
- const add = (text10, where, narrative = false) => {
183060
- if (text10 && text10.trim()) out2.push({ text: text10, where, narrative });
183208
+ const add = (text11, where, narrative = false) => {
183209
+ if (text11 && text11.trim()) out2.push({ text: text11, where, narrative });
183061
183210
  };
183062
183211
  for (const label3 of look.navLabels) add(label3, "nav");
183063
183212
  for (const p2 of look.pages) {
@@ -183746,8 +183895,8 @@ async function analyzeSite(input, ports) {
183746
183895
  if (locale) plan.provisioning.locale = locale;
183747
183896
  const velo = buildVeloChapter({ look, owner: ownerVelo });
183748
183897
  const veloFiles = ownerVelo.files.flatMap((f2) => {
183749
- const text10 = f2.content ?? f2.excerpt;
183750
- return text10 ? [{ path: f2.path, text: text10 }] : [];
183898
+ const text11 = f2.content ?? f2.excerpt;
183899
+ return text11 ? [{ path: f2.path, text: text11 }] : [];
183751
183900
  }).slice(0, 80);
183752
183901
  const permissions = buildPermissionsChapter({
183753
183902
  cms,
@@ -185053,13 +185202,13 @@ async function veloCall(fetchImpl, method, url, opts = {}) {
185053
185202
  body: opts.body === void 0 ? void 0 : JSON.stringify(opts.body),
185054
185203
  signal: AbortSignal.timeout(opts.timeoutMs ?? 3e4)
185055
185204
  });
185056
- const text10 = await res.text();
185057
- let json8 = text10;
185205
+ const text11 = await res.text();
185206
+ let json8 = text11;
185058
185207
  try {
185059
- json8 = text10 ? JSON.parse(text10) : null;
185208
+ json8 = text11 ? JSON.parse(text11) : null;
185060
185209
  } catch {
185061
185210
  }
185062
- return { status: res.status, json: json8, text: text10 };
185211
+ return { status: res.status, json: json8, text: text11 };
185063
185212
  }
185064
185213
  function snippet2(x2, cap = 180) {
185065
185214
  const s2 = typeof x2 === "string" ? x2 : JSON.stringify(x2) ?? "";
@@ -185616,10 +185765,10 @@ function accountTransport(fetchImpl = fetch, timeoutMs = DEFAULT_TIMEOUT_MS5, sp
185616
185765
  }
185617
185766
  throw new Error(`${method} ${path2} failed: ${err?.message ?? String(e2)}`);
185618
185767
  }
185619
- const text10 = await res.text();
185620
- let parsed = text10;
185768
+ const text11 = await res.text();
185769
+ let parsed = text11;
185621
185770
  try {
185622
- parsed = text10 ? JSON.parse(text10) : null;
185771
+ parsed = text11 ? JSON.parse(text11) : null;
185623
185772
  } catch {
185624
185773
  }
185625
185774
  if (!res.ok) throw new WixApiError(res.status, method, path2, parsed);
@@ -185680,16 +185829,16 @@ async function installVerticals(msid, wanted, token, fetchImpl = fetch, timeoutM
185680
185829
  body: JSON.stringify({ apps: wanted.map((w2) => ({ id: w2.appDefId })) }),
185681
185830
  signal: AbortSignal.timeout(timeoutMs)
185682
185831
  });
185683
- const text10 = await res.text();
185832
+ const text11 = await res.text();
185684
185833
  if (!res.ok) {
185685
185834
  return {
185686
185835
  ...empty2,
185687
- errors: wanted.map((w2) => ({ ...w2, message: `bulk-install -> ${res.status}: ${text10.slice(0, 200)}` }))
185836
+ errors: wanted.map((w2) => ({ ...w2, message: `bulk-install -> ${res.status}: ${text11.slice(0, 200)}` }))
185688
185837
  };
185689
185838
  }
185690
185839
  let body = {};
185691
185840
  try {
185692
- body = text10 ? JSON.parse(text10) : {};
185841
+ body = text11 ? JSON.parse(text11) : {};
185693
185842
  } catch {
185694
185843
  }
185695
185844
  const nameOf2 = (appDefId) => wanted.find((w2) => w2.appDefId === appDefId)?.vertical ?? appDefId;
@@ -186295,9 +186444,9 @@ function redactVeloSource(source, knownSecrets = []) {
186295
186444
  const visitLiterals = (node) => {
186296
186445
  if (ts10.isStringLiteral(node) || ts10.isNoSubstitutionTemplateLiteral(node) || ts10.isTemplateExpression(node)) {
186297
186446
  const start = node.getStart(clean2);
186298
- const text10 = source.slice(start, node.end);
186299
- const redacted = redactLiteral(text10, start);
186300
- if (redacted !== text10) {
186447
+ const text11 = source.slice(start, node.end);
186448
+ const redacted = redactLiteral(text11, start);
186449
+ if (redacted !== text11) {
186301
186450
  edits.push({ start, end: node.end, text: redacted });
186302
186451
  return;
186303
186452
  }
@@ -186721,10 +186870,10 @@ var ServeCliClient = class {
186721
186870
  ...carriesCredential ? { redirect: "error" } : {},
186722
186871
  body: opts.rawBody !== void 0 ? new Uint8Array(opts.rawBody) : opts.body !== void 0 ? JSON.stringify(opts.body) : void 0
186723
186872
  });
186724
- const text10 = await res.text();
186873
+ const text11 = await res.text();
186725
186874
  let json8 = null;
186726
186875
  try {
186727
- json8 = text10 ? JSON.parse(text10) : null;
186876
+ json8 = text11 ? JSON.parse(text11) : null;
186728
186877
  } catch {
186729
186878
  json8 = null;
186730
186879
  }
@@ -186732,7 +186881,7 @@ var ServeCliClient = class {
186732
186881
  res.headers.forEach((v2, k2) => {
186733
186882
  h2[k2] = v2;
186734
186883
  });
186735
- return { status: res.status, ok: res.ok, json: json8, text: text10, headers: h2 };
186884
+ return { status: res.status, ok: res.ok, json: json8, text: text11, headers: h2 };
186736
186885
  }
186737
186886
  // ---- serve (device-facing reads) ----
186738
186887
  health(plane) {
@@ -187519,15 +187668,15 @@ function summarizeLint(app, bres, outcome, strict, extraIssues = []) {
187519
187668
  }
187520
187669
  };
187521
187670
  const record2 = (value) => value && typeof value === "object" && !Array.isArray(value) ? value : {};
187522
- const text10 = (value) => typeof value === "string" && value ? value : void 0;
187671
+ const text11 = (value) => typeof value === "string" && value ? value : void 0;
187523
187672
  const message = (value) => {
187524
187673
  const item = record2(value);
187525
- if (text10(item.message)) return text10(item.message);
187526
- if (text10(item.error)) return text10(item.error);
187674
+ if (text11(item.message)) return text11(item.message);
187675
+ if (text11(item.error)) return text11(item.error);
187527
187676
  if (Array.isArray(item.errors)) {
187528
187677
  const diagnostics = item.errors.map((entry) => {
187529
187678
  const diagnostic = record2(entry);
187530
- return text10(diagnostic.text) ?? text10(diagnostic.message);
187679
+ return text11(diagnostic.text) ?? text11(diagnostic.message);
187531
187680
  }).filter((entry) => !!entry);
187532
187681
  if (diagnostics.length) return diagnostics.join("; ");
187533
187682
  }
@@ -187540,29 +187689,29 @@ function summarizeLint(app, bres, outcome, strict, extraIssues = []) {
187540
187689
  ...issues,
187541
187690
  ...bres.compileErrors.map((value) => ({
187542
187691
  pass: "compile",
187543
- path: text10(record2(value).bundle),
187692
+ path: text11(record2(value).bundle),
187544
187693
  ruleCode: "compile-error",
187545
187694
  severity: "error",
187546
187695
  message: message(value)
187547
187696
  })),
187548
187697
  ...outcome.failedToBuild.map((value) => ({
187549
187698
  pass: "build",
187550
- screen: text10(record2(value).screenId),
187699
+ screen: text11(record2(value).screenId),
187551
187700
  ruleCode: "failed-to-build",
187552
187701
  severity: "error",
187553
187702
  message: message(value)
187554
187703
  })),
187555
187704
  ...outcome.missingBundles.map((value) => ({
187556
187705
  pass: "build",
187557
- screen: text10(record2(value).screen),
187558
- path: text10(record2(value).bundle),
187706
+ screen: text11(record2(value).screen),
187707
+ path: text11(record2(value).bundle),
187559
187708
  ruleCode: "missing-bundle",
187560
187709
  severity: "error",
187561
187710
  message: message(value)
187562
187711
  })),
187563
187712
  ...workerThrows.map((value) => ({
187564
187713
  pass: "worker",
187565
- path: text10(record2(value).bundle),
187714
+ path: text11(record2(value).bundle),
187566
187715
  ruleCode: "worker-threw",
187567
187716
  severity: "error",
187568
187717
  message: message(value.threw)
@@ -187777,14 +187926,14 @@ function contentDir(flags) {
187777
187926
  return resolve32(str3(flags.content) ?? process.cwd());
187778
187927
  }
187779
187928
  function renameRestoredSource(restored, declaredApp, renamed) {
187780
- const text10 = {};
187929
+ const text11 = {};
187781
187930
  for (const entry of restored) {
187782
187931
  const decoded = entry.bytes.toString("utf8");
187783
- if (Buffer.from(decoded, "utf8").equals(entry.bytes)) text10[entry.path] = decoded;
187932
+ if (Buffer.from(decoded, "utf8").equals(entry.bytes)) text11[entry.path] = decoded;
187784
187933
  }
187785
- const sentineled = sentinelizeArchive(text10, declaredApp);
187934
+ const sentineled = sentinelizeArchive(text11, declaredApp);
187786
187935
  for (const entry of restored) {
187787
- if (!(entry.path in text10)) continue;
187936
+ if (!(entry.path in text11)) continue;
187788
187937
  const body = sentineled[entry.path];
187789
187938
  if (body !== void 0) entry.bytes = Buffer.from(substituteIdentity(body, renamed), "utf8");
187790
187939
  }
@@ -190078,8 +190227,8 @@ async function templateCommand(ctx) {
190078
190227
  io2.error(JSON.stringify({ ok: false, error: e2.message }));
190079
190228
  return 2;
190080
190229
  }
190081
- const text10 = str3(flags.text) ?? (pos.slice(2).join(" ") || void 0);
190082
- if (!text10 && !verticals?.length) {
190230
+ const text11 = str3(flags.text) ?? (pos.slice(2).join(" ") || void 0);
190231
+ if (!text11 && !verticals?.length) {
190083
190232
  io2.error(JSON.stringify({
190084
190233
  ok: false,
190085
190234
  error: 'nothing to match \u2014 pass a business description (--text "\u2026"), --verticals stores,bookings, or --book <site analyze dir>',
@@ -190100,7 +190249,7 @@ async function templateCommand(ctx) {
190100
190249
  note = `remote catalog unreachable (${e2.message}); ranked the embedded templates only`;
190101
190250
  }
190102
190251
  }
190103
- const res = recommendTemplates2({ catalog: catalog3, verticals, text: text10 });
190252
+ const res = recommendTemplates2({ catalog: catalog3, verticals, text: text11 });
190104
190253
  print({
190105
190254
  ok: true,
190106
190255
  ...verticals?.length ? { verticals } : {},
@@ -190721,9 +190870,9 @@ function dpxSessionPresent(path2 = dpxSessionTokenPath()) {
190721
190870
  return false;
190722
190871
  }
190723
190872
  }
190724
- function isPortInUseError(text10) {
190725
- if (!text10) return false;
190726
- return /EADDRINUSE/i.test(text10) || new RegExp(`(:::|:)${DPX_SESSION_PORT}\\b`).test(text10);
190873
+ function isPortInUseError(text11) {
190874
+ if (!text11) return false;
190875
+ return /EADDRINUSE/i.test(text11) || new RegExp(`(:::|:)${DPX_SESSION_PORT}\\b`).test(text11);
190727
190876
  }
190728
190877
  function parseDpxAuthStatusIdentity(stdout) {
190729
190878
  if (!stdout) return void 0;
@@ -190875,23 +191024,23 @@ async function functionsCommand(ctx) {
190875
191024
  const app = str3(flags.app) ?? loaded.app;
190876
191025
  const invoked2 = await invokeRemoteFunction2({ baseUrl: target.baseUrl, app, definition, body: input, params, releaseId: remoteRelease, previewToken: str3(flags["preview-token"]), boCookie: boCookie() });
190877
191026
  const response = invoked2.response;
190878
- const text11 = await response.text();
191027
+ const text12 = await response.text();
190879
191028
  let body2;
190880
191029
  try {
190881
- body2 = JSON.parse(text11);
191030
+ body2 = JSON.parse(text12);
190882
191031
  } catch {
190883
- body2 = text11;
191032
+ body2 = text12;
190884
191033
  }
190885
191034
  print({ ok: response.ok, app, releaseId: remoteRelease ?? null, url: invoked2.url, status: response.status, body: body2 });
190886
191035
  return response.ok ? 0 : 1;
190887
191036
  }
190888
191037
  const invoked = await invokeLocalFunction2(loaded, name, input, params);
190889
- const text10 = await invoked.response.text();
191038
+ const text11 = await invoked.response.text();
190890
191039
  let body;
190891
191040
  try {
190892
- body = JSON.parse(text10);
191041
+ body = JSON.parse(text11);
190893
191042
  } catch {
190894
- body = text10;
191043
+ body = text11;
190895
191044
  }
190896
191045
  print({ ok: invoked.response.ok, app: loaded.app, releaseId: invoked.releaseId, status: invoked.response.status, body });
190897
191046
  return invoked.response.ok ? 0 : 1;
@@ -191173,18 +191322,18 @@ function walkSource(dir, root = dir) {
191173
191322
  const ext = entry.name.slice(entry.name.lastIndexOf("."));
191174
191323
  if (!SOURCE_EXTENSIONS.has(ext)) continue;
191175
191324
  const absolute = join76(dir, entry.name);
191176
- const text10 = readText2(absolute);
191177
- if (text10 !== null) found.push({ path: relative14(root, absolute), text: text10 });
191325
+ const text11 = readText2(absolute);
191326
+ if (text11 !== null) found.push({ path: relative14(root, absolute), text: text11 });
191178
191327
  }
191179
191328
  return found;
191180
191329
  }
191181
- function blankMatrixRows(text10) {
191182
- const acceptance = mobileUxSection(mobileUxDocumentBody(text10), "Implementation acceptance") ?? "";
191330
+ function blankMatrixRows(text11) {
191331
+ const acceptance = mobileUxSection(mobileUxDocumentBody(text11), "Implementation acceptance") ?? "";
191183
191332
  return /\|\s*(?:Ready|Empty|Add\s*\/\s*edit|Saved\s*\/\s*completed|Error\s*\/\s*recovery)\s*\|\s*\|\s*\|\s*\|\s*\|/i.test(acceptance);
191184
191333
  }
191185
191334
  function usesAppNetwork(source) {
191186
- const code = (text10) => text10.replace(/\/\*[\s\S]*?\*\//g, "").replace(/\/\/[^\n]*/g, "");
191187
- return source.some(({ text: text10 }) => /\bwixApi\b|(?:from|import)\s*["']@(?:himalaya|wix\/himalaya)\/wix-[^"']+["']/.test(code(text10)));
191335
+ const code = (text11) => text11.replace(/\/\*[\s\S]*?\*\//g, "").replace(/\/\/[^\n]*/g, "");
191336
+ return source.some(({ text: text11 }) => /\bwixApi\b|(?:from|import)\s*["']@(?:himalaya|wix\/himalaya)\/wix-[^"']+["']/.test(code(text11)));
191188
191337
  }
191189
191338
  function auditUx(content, strict = false) {
191190
191339
  const dir = resolve60(content);
@@ -193413,8 +193562,8 @@ import { resolve as resolve67 } from "node:path";
193413
193562
 
193414
193563
  // ../../core/admin-web/src/utils/qr-terminal.ts
193415
193564
  init_qr();
193416
- function qrTerminal(text10, opts = {}) {
193417
- const { modules, size } = encodeQr(text10);
193565
+ function qrTerminal(text11, opts = {}) {
193566
+ const { modules, size } = encodeQr(text11);
193418
193567
  const quietZone = opts.quietZone ?? 4;
193419
193568
  const dim = size + quietZone * 2;
193420
193569
  const dark = (x2, y2) => x2 >= quietZone && x2 < quietZone + size && y2 >= quietZone && y2 < quietZone + size ? modules[y2 - quietZone][x2 - quietZone] : false;
@@ -198067,14 +198216,14 @@ function createTrimValidator(deps = {}, spawnFn = spawn7) {
198067
198216
  const parsed = JSON.parse(report3);
198068
198217
  counts = parsed.counts;
198069
198218
  if (Array.isArray(parsed.findings)) {
198070
- const text10 = (v2) => typeof v2 === "string" && v2 ? v2 : void 0;
198219
+ const text11 = (v2) => typeof v2 === "string" && v2 ? v2 : void 0;
198071
198220
  errors = parsed.findings.filter((f2) => f2 && f2.severity === "error" && typeof f2.id === "string").map((f2) => ({
198072
198221
  id: f2.id,
198073
- message: text10(f2.message) ?? "",
198074
- ...text10(f2.pass) ? { pass: text10(f2.pass) } : {},
198075
- ...text10(f2.screen) ? { screen: text10(f2.screen) } : {},
198076
- ...text10(f2.path) ? { path: text10(f2.path) } : {},
198077
- ...text10(f2.ruleCode) ? { ruleCode: text10(f2.ruleCode) } : {}
198222
+ message: text11(f2.message) ?? "",
198223
+ ...text11(f2.pass) ? { pass: text11(f2.pass) } : {},
198224
+ ...text11(f2.screen) ? { screen: text11(f2.screen) } : {},
198225
+ ...text11(f2.path) ? { path: text11(f2.path) } : {},
198226
+ ...text11(f2.ruleCode) ? { ruleCode: text11(f2.ruleCode) } : {}
198078
198227
  }));
198079
198228
  }
198080
198229
  } catch {