@wix/himalaya-cli 0.1496.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 (71) 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 -666
  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/iap-attendance-form.ts +106 -0
  26. package/templates/branded-lite/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  27. package/templates/branded-lite/tier5-src/_shared/iap-attendance.ts +38 -0
  28. package/templates/branded-lite/tier5-src/himi-booking-time/index.ts +52 -7
  29. package/templates/branded-lite/tier5-src/himi-events-detail/index.ts +112 -21
  30. package/templates/community-club/dev/index.ts +397 -2
  31. package/templates/community-club/tier5-src/_shared/iap-attendance-form.ts +106 -0
  32. package/templates/community-club/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  33. package/templates/community-club/tier5-src/_shared/iap-attendance.ts +38 -0
  34. package/templates/community-club/tier5-src/himi-events-detail/index.ts +112 -21
  35. package/templates/events-meetups/dev/index.ts +397 -2
  36. package/templates/events-meetups/tier5-src/_shared/iap-attendance-form.ts +106 -0
  37. package/templates/events-meetups/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  38. package/templates/events-meetups/tier5-src/_shared/iap-attendance.ts +38 -0
  39. package/templates/events-meetups/tier5-src/himi-events-detail/index.ts +112 -21
  40. package/templates/gym-fitness/dev/index.ts +828 -39
  41. package/templates/gym-fitness/tier5-src/_shared/iap-attendance-form.ts +106 -0
  42. package/templates/gym-fitness/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  43. package/templates/gym-fitness/tier5-src/_shared/iap-attendance.ts +38 -0
  44. package/templates/gym-fitness/tier5-src/himi-booking-time/index.ts +52 -7
  45. package/templates/gym-fitness/tier5-src/himi-events-detail/index.ts +112 -21
  46. package/templates/nonprofit-cause/dev/index.ts +397 -2
  47. package/templates/nonprofit-cause/tier5-src/_shared/iap-attendance-form.ts +106 -0
  48. package/templates/nonprofit-cause/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  49. package/templates/nonprofit-cause/tier5-src/_shared/iap-attendance.ts +38 -0
  50. package/templates/nonprofit-cause/tier5-src/himi-events-detail/index.ts +112 -21
  51. package/templates/podcast-creator/dev/index.ts +397 -2
  52. package/templates/podcast-creator/tier5-src/_shared/iap-attendance-form.ts +106 -0
  53. package/templates/podcast-creator/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  54. package/templates/podcast-creator/tier5-src/_shared/iap-attendance.ts +38 -0
  55. package/templates/podcast-creator/tier5-src/himi-events-detail/index.ts +112 -21
  56. package/templates/portfolio-creative/dev/index.ts +397 -2
  57. package/templates/portfolio-creative/tier5-src/_shared/iap-attendance-form.ts +106 -0
  58. package/templates/portfolio-creative/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  59. package/templates/portfolio-creative/tier5-src/_shared/iap-attendance.ts +38 -0
  60. package/templates/portfolio-creative/tier5-src/himi-events-detail/index.ts +112 -21
  61. package/templates/restaurant/dev/index.ts +397 -2
  62. package/templates/restaurant/tier5-src/_shared/iap-attendance-form.ts +106 -0
  63. package/templates/restaurant/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  64. package/templates/restaurant/tier5-src/_shared/iap-attendance.ts +38 -0
  65. package/templates/restaurant/tier5-src/himi-events-detail/index.ts +112 -21
  66. package/templates/yoga-studio/dev/index.ts +828 -39
  67. package/templates/yoga-studio/tier5-src/_shared/iap-attendance-form.ts +106 -0
  68. package/templates/yoga-studio/tier5-src/_shared/iap-attendance-purchase.ts +211 -0
  69. package/templates/yoga-studio/tier5-src/_shared/iap-attendance.ts +38 -0
  70. package/templates/yoga-studio/tier5-src/himi-booking-time/index.ts +52 -7
  71. 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;
@@ -26719,10 +26719,10 @@ async function mintAnonymousVisitor(clientId, fetchImpl = fetch) {
26719
26719
  headers: { "Content-Type": "application/json" },
26720
26720
  body: JSON.stringify({ clientId, grantType: "anonymous" })
26721
26721
  });
26722
- const text10 = await res.text();
26722
+ const text11 = await res.text();
26723
26723
  let j2 = {};
26724
26724
  try {
26725
- j2 = text10 ? JSON.parse(text10) : {};
26725
+ j2 = text11 ? JSON.parse(text11) : {};
26726
26726
  } catch {
26727
26727
  }
26728
26728
  if (res.status !== 200 || !j2.access_token) throw new Error(`visitor mint failed (${res.status})`);
@@ -27068,10 +27068,10 @@ ${session}`);
27068
27068
  }),
27069
27069
  timedOut
27070
27070
  ]);
27071
- const text10 = await Promise.race([res.text(), timedOut]);
27071
+ const text11 = await Promise.race([res.text(), timedOut]);
27072
27072
  let j2 = {};
27073
27073
  try {
27074
- j2 = text10 ? JSON.parse(text10) : {};
27074
+ j2 = text11 ? JSON.parse(text11) : {};
27075
27075
  } catch {
27076
27076
  }
27077
27077
  if (res.status < 200 || res.status >= 300 || !j2.signedInstance)
@@ -27257,7 +27257,7 @@ ${session}`);
27257
27257
  });
27258
27258
  const xsrf = /(?:^|;\s*)XSRF-TOKEN=([^;]+)/.exec(sessionCookie)?.[1];
27259
27259
  let status;
27260
- let text10;
27260
+ let text11;
27261
27261
  try {
27262
27262
  const res = await Promise.race([
27263
27263
  this.fetchImpl(`${ONE_APP_SESSION}/${msid}/signed-instance?signed_instance_type=Member`, {
@@ -27269,7 +27269,7 @@ ${session}`);
27269
27269
  timedOut
27270
27270
  ]);
27271
27271
  status = res.status;
27272
- text10 = await Promise.race([res.text(), timedOut]);
27272
+ text11 = await Promise.race([res.text(), timedOut]);
27273
27273
  } catch (e2) {
27274
27274
  return refuse7(new SiteInstanceUnavailable(msid, `mint failed: ${e2?.message ?? e2}`), MEMBER_TRANSIENT_TTL_MS);
27275
27275
  } finally {
@@ -27279,7 +27279,7 @@ ${session}`);
27279
27279
  if (status === 401) return refuse7(new AccountSessionExpired(msid, `mint refused (${status})`), MEMBER_TRANSIENT_TTL_MS);
27280
27280
  let instance;
27281
27281
  try {
27282
- instance = JSON.parse(text10).signedInstance;
27282
+ instance = JSON.parse(text11).signedInstance;
27283
27283
  } catch {
27284
27284
  }
27285
27285
  if (status < 200 || status >= 300 || typeof instance !== "string" || !instance) {
@@ -27357,8 +27357,8 @@ async function postJson(path2, body, auth) {
27357
27357
  headers: { "Content-Type": "application/json", ...auth ? { Authorization: auth } : {} },
27358
27358
  body: JSON.stringify(body)
27359
27359
  });
27360
- const text10 = await res.text();
27361
- 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) : {} };
27362
27362
  }
27363
27363
  async function mintVisitor(clientId) {
27364
27364
  const r3 = await postJson("/oauth2/token", { clientId, grantType: "anonymous" });
@@ -27628,13 +27628,13 @@ function recordWixTraffic(gw, app, adminUrl, ev) {
27628
27628
  full.respBody = truncate(redactBodyString(full.respBody));
27629
27629
  gw.traffic.push(full);
27630
27630
  if (gw.traffic.length > TRAFFIC_CAP) gw.traffic.splice(0, gw.traffic.length - TRAFFIC_CAP);
27631
- const text10 = `event: wix.traffic
27631
+ const text11 = `event: wix.traffic
27632
27632
  data: ${JSON.stringify(full)}
27633
27633
 
27634
27634
  `;
27635
27635
  for (const res of [...gw.clients]) {
27636
27636
  try {
27637
- res.write(text10);
27637
+ res.write(text11);
27638
27638
  } catch {
27639
27639
  gw.clients.delete(res);
27640
27640
  }
@@ -28137,13 +28137,13 @@ async function resolveWixAccounts(cookieHeader, fetchImpl = fetch, authorization
28137
28137
  if (res.status === 428 || res.status === 401 || res.status === 403) {
28138
28138
  return { ok: false, reason: "no_session" };
28139
28139
  }
28140
- const text10 = await res.text();
28140
+ const text11 = await res.text();
28141
28141
  if (!res.ok) {
28142
- 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) };
28143
28143
  }
28144
28144
  let parsed;
28145
28145
  try {
28146
- parsed = JSON.parse(text10);
28146
+ parsed = JSON.parse(text11);
28147
28147
  } catch {
28148
28148
  return { ok: false, reason: "upstream_failed", status: res.status, detail: "unparseable_body" };
28149
28149
  }
@@ -28184,13 +28184,13 @@ async function resolveAccountCredential(auth, fetchImpl) {
28184
28184
  if (res.status === 428 || res.status === 401 || res.status === 403 || res.status === 404) {
28185
28185
  return { ok: false, reason: "no_session" };
28186
28186
  }
28187
- const text10 = await res.text();
28187
+ const text11 = await res.text();
28188
28188
  if (!res.ok) {
28189
- 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) };
28190
28190
  }
28191
28191
  let parsed;
28192
28192
  try {
28193
- parsed = JSON.parse(text10);
28193
+ parsed = JSON.parse(text11);
28194
28194
  } catch {
28195
28195
  return { ok: false, reason: "upstream_failed", status: res.status, detail: "unparseable_body" };
28196
28196
  }
@@ -28842,9 +28842,9 @@ async function getAndroidPixelDims(serial) {
28842
28842
  try {
28843
28843
  const args = serial ? ["-s", serial, "shell", "wm", "size"] : ["shell", "wm", "size"];
28844
28844
  const out2 = await runner.capture(ADB_BIN, args);
28845
- const text10 = out2.toString("utf8");
28846
- const override = /Override size:\s*(\d+)x(\d+)/.exec(text10);
28847
- 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);
28848
28848
  const m2 = override ?? physical;
28849
28849
  if (!m2) throw new Error("could not parse wm size");
28850
28850
  const dims = { width: parseInt(m2[1], 10), height: parseInt(m2[2], 10) };
@@ -30750,9 +30750,9 @@ function mdScan(src, linkStyle = "") {
30750
30750
  }
30751
30751
  return out2 + mdEsc(src.slice(last));
30752
30752
  }
30753
- function mdInline(text10, linkColor) {
30753
+ function mdInline(text11, linkColor) {
30754
30754
  const safe = typeof linkColor === "string" && /^[#a-zA-Z0-9(),.%\s-]+$/.test(linkColor) ? linkColor : "";
30755
- return { __html: mdScan(text10, safe ? ` style="color:${safe}"` : "") };
30755
+ return { __html: mdScan(text11, safe ? ` style="color:${safe}"` : "") };
30756
30756
  }
30757
30757
  function sevColor(ctx, sev) {
30758
30758
  switch (sev) {
@@ -31441,7 +31441,7 @@ function PickerLeadingVisual({ option, ctx, size = 20 }) {
31441
31441
  return null;
31442
31442
  }
31443
31443
  }
31444
- function PickerFieldBox({ look, ctx, option, text: text10, isPlaceholder, font, style }) {
31444
+ function PickerFieldBox({ look, ctx, option, text: text11, isPlaceholder, font, style }) {
31445
31445
  const C2 = ctx.color;
31446
31446
  return /* @__PURE__ */ jsxs2(
31447
31447
  "div",
@@ -31465,7 +31465,7 @@ function PickerFieldBox({ look, ctx, option, text: text10, isPlaceholder, font,
31465
31465
  },
31466
31466
  children: [
31467
31467
  !isPlaceholder && /* @__PURE__ */ jsx5(PickerLeadingVisual, { option, ctx }),
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: 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 }),
31469
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") }) })
31470
31470
  ]
31471
31471
  }
@@ -31883,9 +31883,9 @@ function createRicosHostSession(o2) {
31883
31883
  if (!state.ready || state.unavailable) return;
31884
31884
  o2.send({ v: 1, type: "command", name, ...arg?.level ? { level: arg.level } : {}, ...arg?.value ? { value: arg.value } : {} });
31885
31885
  },
31886
- insertLink(url, text10) {
31886
+ insertLink(url, text11) {
31887
31887
  if (!state.ready || state.unavailable || !isSafeEditorLink(url)) return false;
31888
- 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 } : {} });
31889
31889
  return true;
31890
31890
  },
31891
31891
  removeLink() {
@@ -34357,8 +34357,8 @@ var init_esm = __esm({
34357
34357
 
34358
34358
  // ../../core/ts/src/rich-text-field.ts
34359
34359
  function richTextHtmlToPlainText(html) {
34360
- 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, ""));
34361
- 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();
34362
34362
  }
34363
34363
  function richTextPlainTextToHtml(value) {
34364
34364
  if (value === "") return "";
@@ -34381,9 +34381,9 @@ function richTextEditedHtml(originalHtml, originalText, nextText) {
34381
34381
  if (/<(script|style)\b/i.test(source)) return richTextPlainTextToHtml(nextText);
34382
34382
  const spans = [];
34383
34383
  let visible = "";
34384
- const append = (text10, start, end, structural = false) => {
34385
- visible += text10;
34386
- 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 });
34387
34387
  };
34388
34388
  const token = /<[^>]*>|&(?:#\d+|#x[\da-f]+|[a-z][\da-z]+);?|[^<&]+/gi;
34389
34389
  for (const match of source.matchAll(token)) {
@@ -34437,7 +34437,7 @@ function richTextEditedHtml(originalHtml, originalText, nextText) {
34437
34437
  let edited = source;
34438
34438
  for (const span of removed.slice().reverse()) edited = edited.slice(0, span.start) + edited.slice(span.end);
34439
34439
  const insertionAfterDelete = insertionAt - removed.filter((span) => span.end <= insertionAt).reduce((n2, span) => n2 + span.end - span.start, 0);
34440
- 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>");
34441
34441
  const replacement = escape3(nextText.slice(prefix, newEnd));
34442
34442
  return edited.slice(0, insertionAfterDelete) + replacement + edited.slice(insertionAfterDelete);
34443
34443
  }
@@ -34542,13 +34542,13 @@ function NamedImage({ node, alt, env }) {
34542
34542
  }
34543
34543
  function Block({ b: b2, env, depth }) {
34544
34544
  const { ctx } = env;
34545
- const text10 = ctx.color("textPrimary", "#13171e");
34545
+ const text11 = ctx.color("textPrimary", "#13171e");
34546
34546
  const secondary = ctx.color("textSecondary", "#5c6370");
34547
34547
  const border = ctx.color("border", "#e5e5e5");
34548
34548
  switch (b2.kind) {
34549
34549
  case "paragraph":
34550
34550
  return /* @__PURE__ */ jsx9("p", { ...tid(env, b2.id, b2.kind), style: {
34551
- ...textStyle(ctx, "body", text10),
34551
+ ...textStyle(ctx, "body", text11),
34552
34552
  textAlign: b2.align,
34553
34553
  paddingInlineStart: b2.indent ? Math.min(b2.indent, 8) * 16 : void 0,
34554
34554
  minHeight: b2.spans.length ? void 0 : "1.5em"
@@ -34556,7 +34556,7 @@ function Block({ b: b2, env, depth }) {
34556
34556
  case "heading":
34557
34557
  return React9.createElement(
34558
34558
  `h${b2.level}`,
34559
- { ...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) },
34560
34560
  /* @__PURE__ */ jsx9(Spans, { spans: b2.spans, env })
34561
34561
  );
34562
34562
  case "list": {
@@ -34566,7 +34566,7 @@ function Block({ b: b2, env, depth }) {
34566
34566
  {
34567
34567
  ...tid(env, b2.id, b2.kind),
34568
34568
  start: b2.ordered ? b2.start : void 0,
34569
- 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" },
34570
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}`))
34571
34571
  }
34572
34572
  );
@@ -34580,7 +34580,7 @@ function Block({ b: b2, env, depth }) {
34580
34580
  overflowWrap: "anywhere",
34581
34581
  fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
34582
34582
  fontSize: "0.9em",
34583
- color: text10,
34583
+ color: text11,
34584
34584
  background: ctx.color("surfaceSecondary", "#f5f5f7"),
34585
34585
  padding: 10,
34586
34586
  borderRadius: 6
@@ -34599,11 +34599,11 @@ function Block({ b: b2, env, depth }) {
34599
34599
  case "button":
34600
34600
  return /* @__PURE__ */ jsx9(LinkButton, { label: b2.label, url: b2.url, env, testId: `${env.componentId}/${b2.id}` });
34601
34601
  case "table":
34602
- 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)) }) });
34603
34603
  case "card": {
34604
34604
  const title = richContentCardTitle(b2);
34605
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: [
34606
- /* @__PURE__ */ jsx9("div", { style: textStyle(ctx, "bodyEmphasis", text10), children: title }),
34606
+ /* @__PURE__ */ jsx9("div", { style: textStyle(ctx, "bodyEmphasis", text11), children: title }),
34607
34607
  b2.url ? /* @__PURE__ */ jsxs6(Fragment3, { children: [
34608
34608
  /* @__PURE__ */ jsx9("div", { style: textStyle(ctx, "caption", secondary), children: richContentHost(b2.url) }),
34609
34609
  /* @__PURE__ */ jsx9(LinkButton, { label: RICH_CONTENT_OPEN_LABEL, url: b2.url, env, testId: `${env.componentId}/${b2.id}/open` })
@@ -34632,10 +34632,10 @@ var init_richContent = __esm({
34632
34632
 
34633
34633
  // ../../core/web-renderer/src/pdfPageCount.ts
34634
34634
  function pdfPageCount(bytes2) {
34635
- const text10 = pdfObjectSyntax(new TextDecoder("latin1").decode(bytes2));
34636
- const rooted = pdfRootPageCount(text10);
34635
+ const text11 = pdfObjectSyntax(new TextDecoder("latin1").decode(bytes2));
34636
+ const rooted = pdfRootPageCount(text11);
34637
34637
  let scanned = null;
34638
- for (const m2 of text10.matchAll(/<<((?:(?!<<|>>)[\s\S])*)>>/g)) {
34638
+ for (const m2 of text11.matchAll(/<<((?:(?!<<|>>)[\s\S])*)>>/g)) {
34639
34639
  const dict = m2[1];
34640
34640
  if (!/\/Type\s*\/Pages(?![A-Za-z])/.test(dict)) continue;
34641
34641
  const c2 = /\/Count\s+(\d+)/.exec(dict);
@@ -34647,24 +34647,24 @@ function pdfPageCount(bytes2) {
34647
34647
  if (rooted !== null && scanned !== null && rooted !== scanned) return null;
34648
34648
  return count2 <= PDF_MAX_PLAUSIBLE_PAGES ? count2 : null;
34649
34649
  }
34650
- function pdfObjectSyntax(text10) {
34651
- const out2 = text10.split("");
34650
+ function pdfObjectSyntax(text11) {
34651
+ const out2 = text11.split("");
34652
34652
  const blank = (from, to2) => {
34653
34653
  for (let k2 = from; k2 < to2; k2++) out2[k2] = " ";
34654
34654
  };
34655
34655
  let i2 = 0;
34656
- while (i2 < text10.length) {
34657
- const c2 = text10[i2];
34656
+ while (i2 < text11.length) {
34657
+ const c2 = text11[i2];
34658
34658
  if (c2 === "%") {
34659
- const eol = text10.slice(i2).search(/[\r\n]/);
34660
- 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;
34661
34661
  blank(i2, end);
34662
34662
  i2 = end;
34663
34663
  } else if (c2 === "(") {
34664
34664
  let depth = 0;
34665
34665
  let j2 = i2;
34666
- for (; j2 < text10.length; j2++) {
34667
- const d2 = text10[j2];
34666
+ for (; j2 < text11.length; j2++) {
34667
+ const d2 = text11[j2];
34668
34668
  if (d2 === "\\") {
34669
34669
  j2++;
34670
34670
  continue;
@@ -34674,21 +34674,21 @@ function pdfObjectSyntax(text10) {
34674
34674
  }
34675
34675
  blank(i2, j2 + 1);
34676
34676
  i2 = j2 + 1;
34677
- } else if (c2 === "<" && text10[i2 + 1] !== "<") {
34678
- const end = text10.indexOf(">", i2);
34679
- 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;
34680
34680
  blank(i2, stop);
34681
34681
  i2 = stop;
34682
- } else if (c2 === "<" && text10[i2 + 1] === "<") {
34682
+ } else if (c2 === "<" && text11[i2 + 1] === "<") {
34683
34683
  i2 += 2;
34684
34684
  } else if (
34685
34685
  // The `stream` KEYWORD, not the tail of a name (`/my-stream`) or of `endstream`: preceded by
34686
34686
  // whitespace or the `>>` that closes its dictionary, and followed by CRLF or LF (PDF 32000
34687
34687
  // §7.3.8.1 — a CR alone is not allowed there).
34688
- 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))
34689
34689
  ) {
34690
- const end = text10.indexOf("endstream", i2 + 6);
34691
- const stop = end < 0 ? text10.length : end;
34690
+ const end = text11.indexOf("endstream", i2 + 6);
34691
+ const stop = end < 0 ? text11.length : end;
34692
34692
  blank(i2 + 6, stop);
34693
34693
  i2 = stop + "endstream".length;
34694
34694
  } else {
@@ -36126,19 +36126,19 @@ function getFilenameFromContentDispositionHeader(contentDisposition) {
36126
36126
  if (!value.startsWith("=?") || /[\x00-\x19\x80-\xff]/.test(value)) {
36127
36127
  return value;
36128
36128
  }
36129
- return value.replaceAll(/=\?([\w-]*)\?([QB])\?((?:[^?]|\?(?!=))*)\?=/gi, function(matches, charset, encoding, text10) {
36129
+ return value.replaceAll(/=\?([\w-]*)\?([QB])\?((?:[^?]|\?(?!=))*)\?=/gi, function(matches, charset, encoding, text11) {
36130
36130
  if (encoding === "q" || encoding === "Q") {
36131
- text10 = text10.replaceAll("_", " ");
36132
- 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) {
36133
36133
  return String.fromCharCode(parseInt(hex2, 16));
36134
36134
  });
36135
- return textdecode(charset, text10);
36135
+ return textdecode(charset, text11);
36136
36136
  }
36137
36137
  try {
36138
- text10 = atob(text10);
36138
+ text11 = atob(text11);
36139
36139
  } catch {
36140
36140
  }
36141
- return textdecode(charset, text10);
36141
+ return textdecode(charset, text11);
36142
36142
  });
36143
36143
  }
36144
36144
  return "";
@@ -37008,11 +37008,11 @@ var init_pdf = __esm({
37008
37008
  var DESCRIPTORS = __webpack_require__3(3724);
37009
37009
  var definePropertyModule = __webpack_require__3(4913);
37010
37010
  var createPropertyDescriptor = __webpack_require__3(6980);
37011
- module.exports = DESCRIPTORS ? function(object8, key3, value) {
37012
- return definePropertyModule.f(object8, key3, createPropertyDescriptor(1, value));
37013
- } : function(object8, key3, value) {
37014
- object8[key3] = value;
37015
- 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;
37016
37016
  };
37017
37017
  },
37018
37018
  /***/
@@ -37031,9 +37031,9 @@ var init_pdf = __esm({
37031
37031
  var DESCRIPTORS = __webpack_require__3(3724);
37032
37032
  var definePropertyModule = __webpack_require__3(4913);
37033
37033
  var createPropertyDescriptor = __webpack_require__3(6980);
37034
- module.exports = function(object8, key3, value) {
37035
- if (DESCRIPTORS) definePropertyModule.f(object8, key3, createPropertyDescriptor(0, value));
37036
- 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;
37037
37037
  };
37038
37038
  },
37039
37039
  /***/
@@ -37323,9 +37323,9 @@ var init_pdf = __esm({
37323
37323
  6706(module, __unused_webpack_exports, __webpack_require__3) {
37324
37324
  var uncurryThis = __webpack_require__3(9504);
37325
37325
  var aCallable = __webpack_require__3(9306);
37326
- module.exports = function(object8, key3, method) {
37326
+ module.exports = function(object9, key3, method) {
37327
37327
  try {
37328
- return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object8, key3)[method]));
37328
+ return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object9, key3)[method]));
37329
37329
  } catch (error) {
37330
37330
  }
37331
37331
  };
@@ -38293,13 +38293,13 @@ var init_pdf = __esm({
38293
38293
  var $Object = Object;
38294
38294
  var ObjectPrototype = $Object.prototype;
38295
38295
  module.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function(O2) {
38296
- var object8 = toObject(O2);
38297
- if (hasOwn(object8, IE_PROTO)) return object8[IE_PROTO];
38298
- var constructor = object8.constructor;
38299
- 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) {
38300
38300
  return constructor.prototype;
38301
38301
  }
38302
- return object8 instanceof $Object ? ObjectPrototype : null;
38302
+ return object9 instanceof $Object ? ObjectPrototype : null;
38303
38303
  };
38304
38304
  },
38305
38305
  /***/
@@ -38315,8 +38315,8 @@ var init_pdf = __esm({
38315
38315
  var indexOf = __webpack_require__3(9617).indexOf;
38316
38316
  var hiddenKeys = __webpack_require__3(421);
38317
38317
  var push = uncurryThis([].push);
38318
- module.exports = function(object8, names2) {
38319
- var O2 = toIndexedObject(object8);
38318
+ module.exports = function(object9, names2) {
38319
+ var O2 = toIndexedObject(object9);
38320
38320
  var i2 = 0;
38321
38321
  var result = [];
38322
38322
  var key3;
@@ -39759,13 +39759,13 @@ var init_pdf = __esm({
39759
39759
  }
39760
39760
  return call(reviver, holder, name, val, context);
39761
39761
  };
39762
- var internalizeProperty = function(object8, key3, value) {
39762
+ var internalizeProperty = function(object9, key3, value) {
39763
39763
  if (DESCRIPTORS) {
39764
- var descriptor = getOwnPropertyDescriptor(object8, key3);
39764
+ var descriptor = getOwnPropertyDescriptor(object9, key3);
39765
39765
  if (descriptor && !descriptor.configurable) return;
39766
39766
  }
39767
- if (value === void 0) delete object8[key3];
39768
- else createProperty(object8, key3, value);
39767
+ if (value === void 0) delete object9[key3];
39768
+ else createProperty(object9, key3, value);
39769
39769
  };
39770
39770
  var Node2 = function(value, end, source, nodes) {
39771
39771
  this.value = value;
@@ -39810,7 +39810,7 @@ var init_pdf = __esm({
39810
39810
  var source = this.source;
39811
39811
  var i2 = this.index + 1;
39812
39812
  var expectKeypair = false;
39813
- var object8 = {};
39813
+ var object9 = {};
39814
39814
  var nodes = {};
39815
39815
  var closed = false;
39816
39816
  while (i2 < source.length) {
@@ -39827,7 +39827,7 @@ var init_pdf = __esm({
39827
39827
  i2 = this.skip(IS_WHITESPACE, i2);
39828
39828
  result = this.fork(i2).parse();
39829
39829
  createProperty(nodes, key3, result);
39830
- createProperty(object8, key3, result.value);
39830
+ createProperty(object9, key3, result.value);
39831
39831
  i2 = this.until([",", "}"], result.end);
39832
39832
  var chr = at2(source, i2);
39833
39833
  if (chr === ",") {
@@ -39840,7 +39840,7 @@ var init_pdf = __esm({
39840
39840
  }
39841
39841
  }
39842
39842
  if (!closed) throw new SyntaxError2("Unterminated object at: " + i2);
39843
- return this.node(OBJECT, object8, this.index, i2, nodes);
39843
+ return this.node(OBJECT, object9, this.index, i2, nodes);
39844
39844
  },
39845
39845
  array: function() {
39846
39846
  var source = this.source;
@@ -39930,8 +39930,8 @@ var init_pdf = __esm({
39930
39930
  return 1 / nativeParse("-0 ") !== -Infinity;
39931
39931
  });
39932
39932
  $2({ target: "JSON", stat: true, forced: NO_SOURCE_SUPPORT }, {
39933
- parse: function parse4(text10, reviver) {
39934
- 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);
39935
39935
  }
39936
39936
  });
39937
39937
  },
@@ -40069,7 +40069,7 @@ var init_pdf = __esm({
40069
40069
  return ordered;
40070
40070
  };
40071
40071
  if ($stringify) $2({ target: "JSON", stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE || !NATIVE_RAW_JSON }, {
40072
- stringify: function stringify(text10, replacer, space) {
40072
+ stringify: function stringify(text11, replacer, space) {
40073
40073
  var replacerFunction = isCallable(replacer) ? replacer : void 0;
40074
40074
  var propertyList = replacerFunction ? void 0 : getPropertyList(replacer);
40075
40075
  var keyPrefix = propertyList && getKeyPrefix(propertyList);
@@ -40079,7 +40079,7 @@ var init_pdf = __esm({
40079
40079
  var currentOrdered;
40080
40080
  var marked = false;
40081
40081
  var root = true;
40082
- var json8 = stringifyWithProperSymbolsConversion(text10, function(key3, value) {
40082
+ var json8 = stringifyWithProperSymbolsConversion(text11, function(key3, value) {
40083
40083
  key3 = $String(key3);
40084
40084
  if (propertyList) {
40085
40085
  if (key3 === END_MARK) {
@@ -43151,7 +43151,7 @@ var init_pdf = __esm({
43151
43151
  focusNode,
43152
43152
  focusOffset
43153
43153
  } = selection;
43154
- const text10 = selection.toString();
43154
+ const text11 = selection.toString();
43155
43155
  const anchorElement = this.#getAnchorElementForSelection(selection);
43156
43156
  const textLayer = anchorElement.closest(".textLayer");
43157
43157
  const boxes = this.getSelectionBoxes(textLayer);
@@ -43172,7 +43172,7 @@ var init_pdf = __esm({
43172
43172
  anchorOffset,
43173
43173
  focusNode,
43174
43174
  focusOffset,
43175
- text: text10
43175
+ text: text11
43176
43176
  });
43177
43177
  if (isNoneMode) {
43178
43178
  this.showAllEditors("highlight", true, true);
@@ -44878,32 +44878,32 @@ var init_pdf = __esm({
44878
44878
  deleted: this.isDeleted()
44879
44879
  };
44880
44880
  }
44881
- set data(text10) {
44882
- if (text10 !== this.#text) {
44881
+ set data(text11) {
44882
+ if (text11 !== this.#text) {
44883
44883
  this.#richText = null;
44884
44884
  }
44885
- if (text10 === null) {
44885
+ if (text11 === null) {
44886
44886
  this.#text = "";
44887
44887
  this.#deleted = true;
44888
44888
  return;
44889
44889
  }
44890
- this.#text = text10;
44890
+ this.#text = text11;
44891
44891
  this.#date = /* @__PURE__ */ new Date();
44892
44892
  this.#deleted = false;
44893
44893
  }
44894
44894
  restoreData({
44895
- text: text10,
44895
+ text: text11,
44896
44896
  richText,
44897
44897
  date
44898
44898
  }) {
44899
- this.#text = text10;
44899
+ this.#text = text11;
44900
44900
  this.#richText = richText;
44901
44901
  this.#date = date;
44902
44902
  this.#deleted = false;
44903
44903
  }
44904
- setInitialText(text10, richText = null) {
44905
- this.#initialText = text10;
44906
- this.data = text10;
44904
+ setInitialText(text11, richText = null) {
44905
+ this.#initialText = text11;
44906
+ this.data = text11;
44907
44907
  this.#date = null;
44908
44908
  this.#richText = richText;
44909
44909
  }
@@ -45954,8 +45954,8 @@ var init_pdf = __esm({
45954
45954
  get guessedAltText() {
45955
45955
  return this.#altText?.guessedText;
45956
45956
  }
45957
- async setGuessedAltText(text10) {
45958
- await this.#altText?.setGuessedText(text10);
45957
+ async setGuessedAltText(text11) {
45958
+ await this.#altText?.setGuessedText(text11);
45959
45959
  }
45960
45960
  serializeAltText(isForCopying) {
45961
45961
  return this.#altText?.serialize(isForCopying);
@@ -46002,13 +46002,13 @@ var init_pdf = __esm({
46002
46002
  const {
46003
46003
  data: {
46004
46004
  richText,
46005
- text: text10,
46005
+ text: text11,
46006
46006
  date,
46007
46007
  deleted
46008
46008
  }
46009
46009
  } = this.#comment;
46010
46010
  return {
46011
- text: text10,
46011
+ text: text11,
46012
46012
  richText,
46013
46013
  date,
46014
46014
  deleted,
@@ -56802,13 +56802,13 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
56802
56802
  } = this;
56803
56803
  return this.annotationStorage.getRawValue(`${AnnotationEditorPrefix}${data.id}`)?.popup?.contents || data.contentsObj?.str || "";
56804
56804
  }
56805
- set commentText(text10) {
56805
+ set commentText(text11) {
56806
56806
  const {
56807
56807
  data
56808
56808
  } = this;
56809
56809
  const popup = {
56810
- deleted: !text10,
56811
- contents: text10 || ""
56810
+ deleted: !text11,
56811
+ contents: text11 || ""
56812
56812
  };
56813
56813
  if (!this.annotationStorage.updateEditor(data.id, {
56814
56814
  popup
@@ -56822,7 +56822,7 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
56822
56822
  modificationDate: /* @__PURE__ */ new Date()
56823
56823
  });
56824
56824
  }
56825
- if (!text10) {
56825
+ if (!text11) {
56826
56826
  this.removePopup();
56827
56827
  }
56828
56828
  }
@@ -57374,9 +57374,9 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
57374
57374
  get commentText() {
57375
57375
  return this.editor.comment.text;
57376
57376
  }
57377
- set commentText(text10) {
57378
- this.editor.comment = text10;
57379
- if (!text10) {
57377
+ set commentText(text11) {
57378
+ this.editor.comment = text11;
57379
+ if (!text11) {
57380
57380
  this.removePopup();
57381
57381
  }
57382
57382
  }
@@ -58834,11 +58834,11 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
58834
58834
  this.#commentText ||= this.#firstElement.commentText;
58835
58835
  return this.#commentText;
58836
58836
  }
58837
- set comment(text10) {
58838
- if (text10 === this.comment) {
58837
+ set comment(text11) {
58838
+ if (text11 === this.comment) {
58839
58839
  return;
58840
58840
  }
58841
- this.#firstElement.commentText = this.#commentText = text10;
58841
+ this.#firstElement.commentText = this.#commentText = text11;
58842
58842
  }
58843
58843
  focus() {
58844
58844
  this.#firstElement.container?.focus();
@@ -58955,10 +58955,10 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
58955
58955
  get #fontColor() {
58956
58956
  return this.#html?.attributes?.style?.color || null;
58957
58957
  }
58958
- #makePopupContent(text10) {
58958
+ #makePopupContent(text11) {
58959
58959
  const popupLines = [];
58960
58960
  const popupContent = {
58961
- str: text10,
58961
+ str: text11,
58962
58962
  html: {
58963
58963
  name: "div",
58964
58964
  attributes: {
@@ -58976,7 +58976,7 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
58976
58976
  fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--total-scale-factor))` : ""
58977
58977
  }
58978
58978
  };
58979
- for (const line of text10.split("\n")) {
58979
+ for (const line of text11.split("\n")) {
58980
58980
  popupLines.push({
58981
58981
  name: "span",
58982
58982
  value: line,
@@ -60485,9 +60485,9 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
60485
60485
  if (savedText === newText) {
60486
60486
  return;
60487
60487
  }
60488
- const setText = (text10) => {
60489
- this.#content = text10;
60490
- if (!text10) {
60488
+ const setText = (text11) => {
60489
+ this.#content = text11;
60490
+ if (!text11) {
60491
60491
  this.remove();
60492
60492
  return;
60493
60493
  }
@@ -64302,7 +64302,7 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
64302
64302
  const uint8Buf = this.#toUint8(grayImage);
64303
64303
  return [uint8Buf, newWidth, newHeight];
64304
64304
  }
64305
- static extractContoursFromText(text10, {
64305
+ static extractContoursFromText(text11, {
64306
64306
  fontFamily,
64307
64307
  fontStyle,
64308
64308
  fontWeight
@@ -64321,7 +64321,7 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
64321
64321
  fontBoundingBoxAscent,
64322
64322
  fontBoundingBoxDescent,
64323
64323
  width
64324
- } = ctx.measureText(text10);
64324
+ } = ctx.measureText(text11);
64325
64325
  const SCALE = 1.5;
64326
64326
  const canvasWidth = Math.ceil(Math.max(Math.abs(actualBoundingBoxLeft) + Math.abs(actualBoundingBoxRight) || 0, width) * SCALE);
64327
64327
  const canvasHeight = Math.ceil(Math.max(Math.abs(actualBoundingBoxAscent) + Math.abs(actualBoundingBoxDescent) || fontSize, Math.abs(fontBoundingBoxAscent) + Math.abs(fontBoundingBoxDescent) || fontSize) * SCALE);
@@ -64335,7 +64335,7 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
64335
64335
  ctx.fillStyle = "white";
64336
64336
  ctx.fillRect(0, 0, canvasWidth, canvasHeight);
64337
64337
  ctx.fillStyle = "black";
64338
- ctx.fillText(text10, canvasWidth * (SCALE - 1) / 2, canvasHeight * (3 - SCALE) / 2);
64338
+ ctx.fillText(text11, canvasWidth * (SCALE - 1) / 2, canvasHeight * (3 - SCALE) / 2);
64339
64339
  const uint8Buf = this.#toUint8(ctx.getImageData(0, 0, canvasWidth, canvasHeight).data);
64340
64340
  const histogram = this.#getHistogram(uint8Buf);
64341
64341
  const threshold = this.#guessThreshold(histogram);
@@ -64837,7 +64837,7 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
64837
64837
  } = this.parent.viewport;
64838
64838
  return SignatureExtractor.process(bitmap, pageWidth, pageHeight, rotation, _SignatureEditor._INNER_MARGIN);
64839
64839
  }
64840
- getFromText(text10, fontInfo) {
64840
+ getFromText(text11, fontInfo) {
64841
64841
  const {
64842
64842
  rawDims: {
64843
64843
  pageWidth,
@@ -64845,7 +64845,7 @@ fn fs_main(in : VertexOutput) -> @location(0) vec4<f32> {
64845
64845
  },
64846
64846
  rotation
64847
64847
  } = this.parent.viewport;
64848
- return SignatureExtractor.extractContoursFromText(text10, fontInfo, pageWidth, pageHeight, rotation, _SignatureEditor._INNER_MARGIN);
64848
+ return SignatureExtractor.extractContoursFromText(text11, fontInfo, pageWidth, pageHeight, rotation, _SignatureEditor._INNER_MARGIN);
64849
64849
  }
64850
64850
  getDrawnSignature(curves) {
64851
64851
  const {
@@ -116188,11 +116188,11 @@ function pluralArgNames(pattern) {
116188
116188
  return out2;
116189
116189
  }
116190
116190
  function formatInterpolated(pattern, params, resolvedByKey, ctx) {
116191
- const numeric = pluralArgNames(pattern);
116191
+ const numeric2 = pluralArgNames(pattern);
116192
116192
  const args = {};
116193
116193
  for (const [k2, raw] of Object.entries(params)) {
116194
116194
  const v2 = k2 in resolvedByKey ? resolvedByKey[k2] : raw;
116195
- if (!numeric.has(k2)) {
116195
+ if (!numeric2.has(k2)) {
116196
116196
  args[k2] = v2;
116197
116197
  continue;
116198
116198
  }
@@ -116728,9 +116728,9 @@ function withExtras(name, render) {
116728
116728
  Wrapped.displayName = name;
116729
116729
  return Wrapped;
116730
116730
  }
116731
- function rememberReveal(text10, n2) {
116731
+ function rememberReveal(text11, n2) {
116732
116732
  if (revealProgress.size > 500) revealProgress.clear();
116733
- revealProgress.set(text10, n2);
116733
+ revealProgress.set(text11, n2);
116734
116734
  }
116735
116735
  function revealHtml(html, shown2, fade) {
116736
116736
  let w2 = 0;
@@ -117574,8 +117574,8 @@ function applyA11ySemantics(node, ctx, extra) {
117574
117574
  extra["aria-live"] = str11(announce.politeness) === "assertive" ? "assertive" : "polite";
117575
117575
  extra["aria-atomic"] = "true";
117576
117576
  extra["aria-relevant"] = trigger === "on_appear" ? "additions" : trigger === "both" ? "additions text" : "text";
117577
- const text10 = str11(announce.text);
117578
- 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;
117579
117579
  }
117580
117580
  }
117581
117581
  return hint;
@@ -119901,13 +119901,13 @@ var init_renderNode = __esm({
119901
119901
  const C2 = ctx.color;
119902
119902
  const isBoundText = typeof props.textPath === "string" && isBinding(props.textPath);
119903
119903
  const bound = useResolvedScalar(isBoundText ? props.textPath : void 0, ctx);
119904
- 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;
119905
119905
  if (props.visible === false) return null;
119906
- if (isBoundText && !text10) return null;
119906
+ if (isBoundText && !text11) return null;
119907
119907
  const c2 = (props.severity ?? "error") === "warning" ? C2("warning", "#E89F00") : C2("danger", "#E62214");
119908
119908
  return /* @__PURE__ */ jsxs8("div", { role: "alert", style: { display: "flex", gap: 6, alignItems: "center", color: c2, fontSize: pxToRem(13), fontFamily: bodyFont(ctx), ...wrap }, children: [
119909
119909
  /* @__PURE__ */ jsx11("span", { "aria-hidden": "true", children: "\u26A0" }),
119910
- text10
119910
+ text11
119911
119911
  ] });
119912
119912
  });
119913
119913
  FormView = withExtras("FormView", ({ props, ctx, wrap }) => {
@@ -120533,7 +120533,7 @@ var init_renderNode = __esm({
120533
120533
  const data = base + pdfOpenFragment(sourceHash, { page, zoom: zoomable ? view.zoom : null, fitWidth: !zoomable });
120534
120534
  const label3 = typeof props.title === "string" && props.title ? props.title : "PDF document";
120535
120535
  const documentStyle = showPageControls || zoomable || allowShare ? { display: "block", width: "100%", flex: "1 1 auto", minHeight: ph ? 0 : 280, border: "none" } : frame;
120536
- 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(
120537
120537
  PdfDocumentCanvas,
120538
120538
  {
120539
120539
  src: loadSrc ?? src,
@@ -120547,7 +120547,7 @@ var init_renderNode = __esm({
120547
120547
  style: documentStyle
120548
120548
  }
120549
120549
  ) });
120550
- if (!showPageControls && !zoomable && !allowShare) return object8;
120550
+ if (!showPageControls && !zoomable && !allowShare) return object9;
120551
120551
  const C2 = ctx.color;
120552
120552
  const go2 = (p2) => setNav({ from: rawUrl, page: Math.max(1, pageCount != null ? Math.min(p2, pageCount) : p2), zoom: view.zoom });
120553
120553
  const zoomBy = (d2) => setNav({ from: rawUrl, page: view.page, zoom: pdfZoomStep(view.zoom ?? sourceZoomPercent(sourceHash) ?? null, d2) });
@@ -120565,7 +120565,7 @@ var init_renderNode = __esm({
120565
120565
  const downloadHref = plan?.mode === "retype" ? base : directDoc?.blobUrl ?? null;
120566
120566
  const openHref = base + pdfOpenFragment(sourceHash, { page: shownPage, zoom: zoomable ? view.zoom : null, viewerChrome: true });
120567
120567
  return /* @__PURE__ */ jsxs8("div", { "data-himalaya-pdf": "reader", style: { ...frame, display: "flex", flexDirection: "column", background: C2("surfaceTertiary", "#f4f4f4") }, children: [
120568
- object8,
120568
+ object9,
120569
120569
  /* @__PURE__ */ jsxs8(
120570
120570
  "div",
120571
120571
  {
@@ -120674,8 +120674,8 @@ var init_renderNode = __esm({
120674
120674
  const look = pickerFieldLook(props.field, ctx);
120675
120675
  const shownSel = ctx.onAction ? sel : ctx.empty ? null : selectedId;
120676
120676
  const picked = opts.find((o2) => o2 != null && String(o2.id) === String(shownSel ?? ""));
120677
- const text10 = picked ? labelOf(picked) : String(placeholderText || "Select");
120678
- 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) });
120679
120679
  if (!ctx.onAction) return /* @__PURE__ */ jsx11("div", { style: { width: "100%", ...wrap }, children: box });
120680
120680
  return /* @__PURE__ */ jsxs8("div", { ...{ [A11Y_PART]: "root" }, "data-hm-picker-focus": "", style: { position: "relative", width: "100%", ...wrap }, children: [
120681
120681
  box,
@@ -120694,7 +120694,7 @@ var init_renderNode = __esm({
120694
120694
  ...pickerA11yProps,
120695
120695
  style: { position: "absolute", inset: 0, width: "100%", height: "100%", opacity: 0, cursor: "pointer", margin: 0, border: 0, fontSize: pxToRem(15) },
120696
120696
  children: [
120697
- !picked && /* @__PURE__ */ jsx11("option", { value: "", disabled: true, children: text10 }),
120697
+ !picked && /* @__PURE__ */ jsx11("option", { value: "", disabled: true, children: text11 }),
120698
120698
  opts.map((o2, i2) => /* @__PURE__ */ jsx11("option", { value: o2?.id, disabled: !pickerOptionPickable(o2), children: labelOf(o2) }, o2?.id ?? i2))
120699
120699
  ]
120700
120700
  }
@@ -121144,37 +121144,37 @@ var init_renderNode = __esm({
121144
121144
  REVEAL_BUFFER = 12;
121145
121145
  revealProgress = /* @__PURE__ */ new Map();
121146
121146
  countWords = (s2) => s2.split(/\s+/).filter((t2) => t2 !== "").length;
121147
- RevealText = ({ text: text10, reduce, markdownHtml }) => {
121148
- 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]);
121149
121149
  const total = React11.useMemo(
121150
- () => markdownHtml != null ? revealHtml(markdownHtml, 0, void 0).total : countWords(text10),
121151
- [text10, markdownHtml]
121150
+ () => markdownHtml != null ? revealHtml(markdownHtml, 0, void 0).total : countWords(text11),
121151
+ [text11, markdownHtml]
121152
121152
  );
121153
121153
  const [shown2, setShown] = React11.useState(total);
121154
121154
  const prevRef = React11.useRef(null);
121155
121155
  useIsomorphicLayoutEffect(() => {
121156
121156
  const prev = prevRef.current;
121157
- prevRef.current = text10;
121157
+ prevRef.current = text11;
121158
121158
  if (reduce) {
121159
- rememberReveal(text10, total);
121159
+ rememberReveal(text11, total);
121160
121160
  setShown(total);
121161
121161
  return;
121162
121162
  }
121163
- let start = revealProgress.get(text10);
121164
- 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;
121165
121165
  start = Math.max(start, total - REVEAL_BUFFER);
121166
- rememberReveal(text10, start);
121166
+ rememberReveal(text11, start);
121167
121167
  setShown(start);
121168
121168
  if (start >= total) return;
121169
121169
  let n2 = start;
121170
121170
  const id = setInterval(() => {
121171
121171
  n2 += 1;
121172
- rememberReveal(text10, n2);
121172
+ rememberReveal(text11, n2);
121173
121173
  setShown(n2);
121174
121174
  if (n2 >= total) clearInterval(id);
121175
121175
  }, REVEAL_RELEASE_MS);
121176
121176
  return () => clearInterval(id);
121177
- }, [text10, reduce, total]);
121177
+ }, [text11, reduce, total]);
121178
121178
  const fade = reduce ? void 0 : `opacity ${REVEAL_FADE_MS}ms ease-out`;
121179
121179
  if (markdownHtml != null) {
121180
121180
  return /* @__PURE__ */ jsx11(
@@ -122177,7 +122177,7 @@ var init_renderNode = __esm({
122177
122177
  TooltipNode = withExtras("TooltipNode", ({ props, ctx, wrap }) => {
122178
122178
  const C2 = ctx.color;
122179
122179
  const title = useBoundString(props.title, ctx);
122180
- const text10 = useBoundString(props.text, ctx);
122180
+ const text11 = useBoundString(props.text, ctx);
122181
122181
  const rich = title !== "";
122182
122182
  const trigger = resolveTooltipTrigger(props.trigger, "pointer");
122183
122183
  const edge = resolveOverlayEdge("Tooltip", props.edge);
@@ -122267,7 +122267,7 @@ var init_renderNode = __esm({
122267
122267
  // A held press would otherwise open the browser's own context menu over the bubble.
122268
122268
  onContextMenu: (e2) => e2.preventDefault()
122269
122269
  };
122270
- const hint = [title, text10].filter((s2) => s2 !== "").join(". ");
122270
+ const hint = [title, text11].filter((s2) => s2 !== "").join(". ");
122271
122271
  const anchor = props.anchor ? renderNode(props.anchor, ctx) : null;
122272
122272
  const wrapperHintId = `hm-tip-hint${React11.useId()}`;
122273
122273
  useIsomorphicLayoutEffect(() => {
@@ -122300,7 +122300,7 @@ var init_renderNode = __esm({
122300
122300
  ] }) }),
122301
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: [
122302
122302
  rich && /* @__PURE__ */ jsx11("div", { style: { fontWeight: 700, marginBottom: 3 }, children: title }),
122303
- text10
122303
+ text11
122304
122304
  ] })
122305
122305
  ] });
122306
122306
  });
@@ -124894,8 +124894,8 @@ function buildRenderTree(node, path2 = "$", provider = null, itemScope = void 0,
124894
124894
  const asText3 = VALUE_PATH_TEXT.get(type);
124895
124895
  if (typeof valuePath === "string" && asText3 && (valuePath.startsWith("$service:") || /^\$item\.[^.]/.test(valuePath))) {
124896
124896
  const r3 = resolveTreeScalar(valuePath, provider, itemScope);
124897
- const text10 = asText3(r3, props);
124898
- if (text10 !== void 0) values.value = text10;
124897
+ const text11 = asText3(r3, props);
124898
+ if (text11 !== void 0) values.value = text11;
124899
124899
  else if (r3 !== void 0 && r3 !== null) {
124900
124900
  delete values.value;
124901
124901
  }
@@ -126844,11 +126844,11 @@ async function handleOwnerChatRequest(req, res) {
126844
126844
  return sendJson(res, 400, { error: "invalid_json" }, cors);
126845
126845
  }
126846
126846
  const chatroomId = (parsed.chatroomId ?? "").trim();
126847
- const text10 = (parsed.text ?? "").trim();
126848
- 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);
126849
126849
  const metaSiteId = (parsed.metaSiteId ?? "").trim() || await resolveMetaSiteId();
126850
126850
  if (!metaSiteId) return sendJson(res, 400, { error: "no_meta_site" }, cors);
126851
- const result = await sendChatMessageLive(metaSiteId, chatroomId, text10);
126851
+ const result = await sendChatMessageLive(metaSiteId, chatroomId, text11);
126852
126852
  if (result.ok) return sendJson(res, 200, { ok: true, message: result.message }, cors);
126853
126853
  return sendJson(res, result.status >= 400 && result.status < 600 ? result.status : 502, { ok: false, status: result.status, error: result.error }, cors);
126854
126854
  }
@@ -127142,13 +127142,13 @@ function invalidate(state, ...screenIds) {
127142
127142
  publishSSE(state, "screen.invalidated", { screenIds });
127143
127143
  }
127144
127144
  function publishSSE(state, type, payload) {
127145
- const text10 = `event: ${type}
127145
+ const text11 = `event: ${type}
127146
127146
  data: ${JSON.stringify(payload)}
127147
127147
 
127148
127148
  `;
127149
127149
  for (const res of [...state.sseClients]) {
127150
127150
  try {
127151
- res.write(text10);
127151
+ res.write(text11);
127152
127152
  } catch {
127153
127153
  state.sseClients.delete(res);
127154
127154
  }
@@ -127164,13 +127164,13 @@ function publishAdminSSE(state, type, payload) {
127164
127164
  state.lastDeviceScreen.set(key3, screenId);
127165
127165
  }
127166
127166
  }
127167
- const text10 = `event: ${type}
127167
+ const text11 = `event: ${type}
127168
127168
  data: ${JSON.stringify(payload)}
127169
127169
 
127170
127170
  `;
127171
127171
  for (const res of [...state.adminClients]) {
127172
127172
  try {
127173
- res.write(text10);
127173
+ res.write(text11);
127174
127174
  } catch {
127175
127175
  state.adminClients.delete(res);
127176
127176
  }
@@ -127191,12 +127191,12 @@ function publishDevReady(state, res, extra = {}) {
127191
127191
  hotReloadEnabled: state.hotReloadEnabled,
127192
127192
  ...extra
127193
127193
  };
127194
- const text10 = `event: dev.ready
127194
+ const text11 = `event: dev.ready
127195
127195
  data: ${JSON.stringify(payload)}
127196
127196
 
127197
127197
  `;
127198
127198
  if (res) {
127199
- res.write(text10);
127199
+ res.write(text11);
127200
127200
  } else {
127201
127201
  publishSSE(state, "dev.ready", payload);
127202
127202
  }
@@ -129245,9 +129245,9 @@ async function handleLiveSubscription(req, res, state) {
129245
129245
  },
129246
129246
  body: JSON.stringify({ ...body, app })
129247
129247
  });
129248
- const text10 = await upstream.text();
129248
+ const text11 = await upstream.text();
129249
129249
  res.writeHead(upstream.status, { "Content-Type": "application/json", ...cors });
129250
- res.end(text10 || JSON.stringify({ ok: upstream.ok }));
129250
+ res.end(text11 || JSON.stringify({ ok: upstream.ok }));
129251
129251
  } catch (error) {
129252
129252
  sendJson(res, 502, { error: "admin_server_unreachable", detail: String(error) }, cors);
129253
129253
  }
@@ -130202,8 +130202,8 @@ function sha256hex(b2) {
130202
130202
  function stableStringify(value) {
130203
130203
  if (value === null || typeof value !== "object") return JSON.stringify(value);
130204
130204
  if (Array.isArray(value)) return "[" + value.map(stableStringify).join(",") + "]";
130205
- const object8 = value;
130206
- 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(",") + "}";
130207
130207
  }
130208
130208
  function manifestContent(m2) {
130209
130209
  const {
@@ -131536,10 +131536,10 @@ function componentModuleIds() {
131536
131536
  function usageStringCopyFor(permissionCopy) {
131537
131537
  const out2 = {};
131538
131538
  for (const [rawId, copy] of Object.entries(permissionCopy ?? {})) {
131539
- const text10 = typeof copy === "string" ? copy.trim() : "";
131540
- if (!text10) continue;
131539
+ const text11 = typeof copy === "string" ? copy.trim() : "";
131540
+ if (!text11) continue;
131541
131541
  const req = CAPABILITY_NATIVE[catalogKey(rawId)];
131542
- 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;
131543
131543
  }
131544
131544
  return out2;
131545
131545
  }
@@ -132464,10 +132464,10 @@ function netTransport(rules) {
132464
132464
  if (res.needsUpstream) {
132465
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`);
132466
132466
  }
132467
- const { status, body: text10 } = res.resolved;
132467
+ const { status, body: text11 } = res.resolved;
132468
132468
  if (status < 200 || status >= 300) throw new Error(`Wix ${status} for ${method} ${bare}`);
132469
132469
  try {
132470
- return text10 ? JSON.parse(text10) : {};
132470
+ return text11 ? JSON.parse(text11) : {};
132471
132471
  } catch {
132472
132472
  return {};
132473
132473
  }
@@ -132511,10 +132511,10 @@ function layeredTransport(layers3) {
132511
132511
  });
132512
132512
  if (res.matched) {
132513
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`);
132514
- const { status, body: text10 } = res.resolved;
132514
+ const { status, body: text11 } = res.resolved;
132515
132515
  if (status < 200 || status >= 300) throw new Error(`Wix ${status} for ${m2} ${bare}`);
132516
132516
  try {
132517
- return text10 ? JSON.parse(text10) : {};
132517
+ return text11 ? JSON.parse(text11) : {};
132518
132518
  } catch {
132519
132519
  return {};
132520
132520
  }
@@ -134688,13 +134688,13 @@ var init_build2 = __esm({
134688
134688
  });
134689
134689
 
134690
134690
  // ../mobile-dist/release-pin.ts
134691
- function withPinnedRelease(text10, releaseId) {
134692
- if (!releaseId) return text10;
134691
+ function withPinnedRelease(text11, releaseId) {
134692
+ if (!releaseId) return text11;
134693
134693
  let cfg;
134694
134694
  try {
134695
- cfg = JSON.parse(text10);
134695
+ cfg = JSON.parse(text11);
134696
134696
  } catch {
134697
- return text10;
134697
+ return text11;
134698
134698
  }
134699
134699
  cfg.releaseId = releaseId;
134700
134700
  cfg.releasePinned = true;
@@ -135067,18 +135067,18 @@ async function bakeCatalogs(app, locale, fetchCatalog, putDoc) {
135067
135067
  const source = locale?.default ?? "en";
135068
135068
  const tags = [.../* @__PURE__ */ new Set([source, ...declared])];
135069
135069
  for (const tag of tags) {
135070
- const text10 = await fetchCatalog(tag);
135071
- if (!text10) continue;
135072
- if (!declared.length && !servesMessages(text10)) continue;
135073
- const hash2 = sha2563(text10);
135074
- 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);
135075
135075
  out2[tag] = hash2;
135076
135076
  }
135077
135077
  return out2;
135078
135078
  }
135079
- function servesMessages(text10) {
135079
+ function servesMessages(text11) {
135080
135080
  try {
135081
- const m2 = JSON.parse(text10).messages;
135081
+ const m2 = JSON.parse(text11).messages;
135082
135082
  return !!m2 && typeof m2 === "object" && Object.keys(m2).length > 0;
135083
135083
  } catch {
135084
135084
  return false;
@@ -135173,9 +135173,9 @@ async function snapshotTokens(app, base, fetchTokens, put) {
135173
135173
  }
135174
135174
  };
135175
135175
  }
135176
- const text10 = await res.text();
135177
- await put(text10);
135178
- return { hash: sha2563(text10) };
135176
+ const text11 = await res.text();
135177
+ await put(text11);
135178
+ return { hash: sha2563(text11) };
135179
135179
  }
135180
135180
  function tokensSnapshotMessage(app, base, status) {
135181
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`;
@@ -135276,23 +135276,23 @@ function maximumBinaryVersion(current, candidate) {
135276
135276
  }
135277
135277
  return current;
135278
135278
  }
135279
- async function withStoreNavBundle(text10, address) {
135279
+ async function withStoreNavBundle(text11, address) {
135280
135280
  let cfg;
135281
135281
  try {
135282
- cfg = JSON.parse(text10);
135282
+ cfg = JSON.parse(text11);
135283
135283
  } catch {
135284
- return text10;
135284
+ return text11;
135285
135285
  }
135286
135286
  const refs = [cfg?.app?.logicBundle, cfg?.navigation?.navLogicBundle, cfg?.navLogicBundle].filter(
135287
135287
  (r3) => !!r3 && typeof r3 === "object" && typeof r3.url === "string"
135288
135288
  );
135289
- if (refs.length === 0) return text10;
135289
+ if (refs.length === 0) return text11;
135290
135290
  const resolved2 = [];
135291
135291
  for (const ref of refs) {
135292
135292
  const name = bundleNameFromUrl(ref.url);
135293
- if (!name) return text10;
135293
+ if (!name) return text11;
135294
135294
  const addressed = await address(name);
135295
- if (!addressed) return text10;
135295
+ if (!addressed) return text11;
135296
135296
  resolved2.push({ ref, url: addressed.url, sri: addressed.sri });
135297
135297
  }
135298
135298
  for (const { ref, url, sri: integrity2 } of resolved2) {
@@ -135301,10 +135301,10 @@ async function withStoreNavBundle(text10, address) {
135301
135301
  }
135302
135302
  return JSON.stringify(cfg);
135303
135303
  }
135304
- function linkableScreenIdsFrom(text10) {
135304
+ function linkableScreenIdsFrom(text11) {
135305
135305
  let cfg;
135306
135306
  try {
135307
- cfg = JSON.parse(text10);
135307
+ cfg = JSON.parse(text11);
135308
135308
  } catch {
135309
135309
  return [];
135310
135310
  }
@@ -135316,24 +135316,24 @@ function linkableScreenIdsFrom(text10) {
135316
135316
  }
135317
135317
  return [...ids];
135318
135318
  }
135319
- function withoutDevOnlyAppConfig(text10) {
135319
+ function withoutDevOnlyAppConfig(text11) {
135320
135320
  let cfg;
135321
135321
  try {
135322
- cfg = JSON.parse(text10);
135322
+ cfg = JSON.parse(text11);
135323
135323
  } catch {
135324
- return text10;
135324
+ return text11;
135325
135325
  }
135326
- if (!cfg || typeof cfg !== "object" || !("devGatewayConfig" in cfg)) return text10;
135326
+ if (!cfg || typeof cfg !== "object" || !("devGatewayConfig" in cfg)) return text11;
135327
135327
  delete cfg.devGatewayConfig;
135328
135328
  return JSON.stringify(cfg);
135329
135329
  }
135330
- function withProdServeAppConfig(text10, prod) {
135331
- if (!prod?.serve) return text10;
135330
+ function withProdServeAppConfig(text11, prod) {
135331
+ if (!prod?.serve) return text11;
135332
135332
  let cfg;
135333
135333
  try {
135334
- cfg = JSON.parse(text10);
135334
+ cfg = JSON.parse(text11);
135335
135335
  } catch {
135336
- return text10;
135336
+ return text11;
135337
135337
  }
135338
135338
  cfg.useProdServe = true;
135339
135339
  cfg.prodServeBaseUrl = prod.serve;
@@ -135716,10 +135716,10 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
135716
135716
  if (bytes2.length === 0 || bytes2.length > MAX_AUTHORING_DOC_BYTES) {
135717
135717
  throw new Error(`${file2} must be non-empty and at most ${MAX_AUTHORING_DOC_BYTES} bytes to ship with a release.`);
135718
135718
  }
135719
- const text10 = bytes2.toString("utf8");
135720
- 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.`);
135721
135721
  const hash2 = sha2563(bytes2);
135722
- await store.putDoc(app, hash2, text10);
135722
+ await store.putDoc(app, hash2, text11);
135723
135723
  authoringDocs[name] = { sha256: hash2, sri: sri2(bytes2), bytes: bytes2.length, contentType: "text/markdown; charset=utf-8" };
135724
135724
  }
135725
135725
  }
@@ -135872,10 +135872,10 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
135872
135872
  base = BAKE_OFFLINE_BASE;
135873
135873
  }
135874
135874
  const devFetch = (url, init) => dev.inject(new Request(url, init));
135875
- const depthRefusalFromText = (status, text10) => {
135875
+ const depthRefusalFromText = (status, text11) => {
135876
135876
  if (status !== 422) return null;
135877
135877
  try {
135878
- const body = JSON.parse(text10);
135878
+ const body = JSON.parse(text11);
135879
135879
  return body?.error === "depth_budget_exceeded" && body.finding ? body.finding : null;
135880
135880
  } catch {
135881
135881
  return null;
@@ -135883,8 +135883,8 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
135883
135883
  };
135884
135884
  const depthRefusalOf = async (res) => depthRefusalFromText(res.status, await res.text());
135885
135885
  const recordUnbuilt = async (screenId, res) => {
135886
- const text10 = await res.text();
135887
- const finding = depthRefusalFromText(res.status, text10);
135886
+ const text11 = await res.text();
135887
+ const finding = depthRefusalFromText(res.status, text11);
135888
135888
  if (finding) {
135889
135889
  failedToBuild.push({ screenId, status: res.status, error: finding.message });
135890
135890
  if (!depthRefusals.some((r3) => r3.screenId === screenId)) depthRefusals.push({ screenId, finding });
@@ -135893,7 +135893,7 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
135893
135893
  }
135894
135894
  return;
135895
135895
  }
135896
- failedToBuild.push({ screenId, status: res.status, error: text10.slice(0, 2e3) });
135896
+ failedToBuild.push({ screenId, status: res.status, error: text11.slice(0, 2e3) });
135897
135897
  };
135898
135898
  try {
135899
135899
  for (const screenId of screenIds) {
@@ -136138,11 +136138,11 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
136138
136138
  ok: res.ok,
136139
136139
  status: res.status,
136140
136140
  text: async () => {
136141
- const text10 = await res.text();
136141
+ const text11 = await res.text();
136142
136142
  try {
136143
- const doc = JSON.parse(text10);
136143
+ const doc = JSON.parse(text11);
136144
136144
  if (!publishedFontPlan) {
136145
- if (!("fontFaces" in doc)) return text10;
136145
+ if (!("fontFaces" in doc)) return text11;
136146
136146
  const kept = publishableFontFaces(doc.fontFaces);
136147
136147
  if (kept) doc.fontFaces = kept;
136148
136148
  else delete doc.fontFaces;
@@ -136151,12 +136151,12 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
136151
136151
  doc.fontFaces = servedProjection(publishedFontPlan);
136152
136152
  return JSON.stringify(doc);
136153
136153
  } catch {
136154
- return text10;
136154
+ return text11;
136155
136155
  }
136156
136156
  }
136157
136157
  };
136158
136158
  },
136159
- (text10) => store.putTokens(app, text10)
136159
+ (text11) => store.putTokens(app, text11)
136160
136160
  );
136161
136161
  if (snapshot2.hash) tokensHash = snapshot2.hash;
136162
136162
  if (snapshot2.failure) {
@@ -136186,14 +136186,14 @@ async function buildFromLoaded(preloaded, dest, opts = {}) {
136186
136186
  if (streamPolicyErrors.length) {
136187
136187
  throw new Error(`invalid streamPolicy for release ${app}: ${streamPolicyErrors.join("; ")}`);
136188
136188
  }
136189
- const text10 = await withStoreNavBundle(prodText, async (name) => {
136189
+ const text11 = await withStoreNavBundle(prodText, async (name) => {
136190
136190
  const hash2 = await addressBundle(name) ?? null;
136191
136191
  const entry = hash2 ? bundles[name] : void 0;
136192
136192
  return entry ? { url: store.bundleUrl(app, entry.sha256), sri: entry.sri } : null;
136193
136193
  });
136194
- await store.putAppConfig(app, text10);
136195
- appConfigHash = sha2563(text10);
136196
- 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);
136197
136197
  }
136198
136198
  const ahRes = await devFetch(`${base}/v1/action-handlers/${encodeURIComponent(app)}`, { headers: { "X-Himalaya-App": app } });
136199
136199
  if (ahRes.ok) {
@@ -137122,8 +137122,8 @@ function penalty(m2, size) {
137122
137122
  score += Math.floor(Math.abs(dark * 20 - total * 10) / total) * 10;
137123
137123
  return score;
137124
137124
  }
137125
- function encodeQr(text10) {
137126
- const bytes2 = [...new TextEncoder().encode(text10)];
137125
+ function encodeQr(text11) {
137126
+ const bytes2 = [...new TextEncoder().encode(text11)];
137127
137127
  const version5 = fitVersion(bytes2.length);
137128
137128
  if (!version5) {
137129
137129
  throw new RangeError(`QR payload too long: ${bytes2.length} bytes exceeds version ${QR_MAX_VERSION} at EC level L`);
@@ -137363,14 +137363,14 @@ function headline(changes) {
137363
137363
  function boardLines(changes) {
137364
137364
  const lines = [];
137365
137365
  for (const c2 of changes.items) {
137366
- const text10 = lineOf(c2);
137367
- const same3 = lines.find((l2) => l2.text === text10);
137366
+ const text11 = lineOf(c2);
137367
+ const same3 = lines.find((l2) => l2.text === text11);
137368
137368
  if (same3) {
137369
137369
  same3.n++;
137370
137370
  continue;
137371
137371
  }
137372
137372
  lines.push({
137373
- text: text10,
137373
+ text: text11,
137374
137374
  n: 1,
137375
137375
  ...c2.kind === "token" && c2.from && HEX.test(c2.from) ? { from: c2.from } : {},
137376
137376
  ...c2.kind === "token" && c2.to && HEX.test(c2.to) ? { to: c2.to } : {}
@@ -138157,10 +138157,10 @@ function ownerTransport(msid, fetchImpl = fetch, timeoutMs = DEFAULT_TIMEOUT_MS,
138157
138157
  }
138158
138158
  throw new Error(`${method} ${path2} failed: ${err?.message ?? String(e2)}`);
138159
138159
  }
138160
- const text10 = await res.text();
138161
- let parsed = text10;
138160
+ const text11 = await res.text();
138161
+ let parsed = text11;
138162
138162
  try {
138163
- parsed = text10 ? JSON.parse(text10) : null;
138163
+ parsed = text11 ? JSON.parse(text11) : null;
138164
138164
  } catch {
138165
138165
  }
138166
138166
  if (!res.ok) throw new WixApiError(res.status, method, path2, parsed);
@@ -138342,10 +138342,10 @@ function scalar3(v2) {
138342
138342
  }
138343
138343
  return t2;
138344
138344
  }
138345
- function parseStoreConfig(text10) {
138345
+ function parseStoreConfig(text11) {
138346
138346
  const cfg = {};
138347
138347
  let section3 = null;
138348
- for (const raw of text10.split("\n")) {
138348
+ for (const raw of text11.split("\n")) {
138349
138349
  const line = strip2(raw);
138350
138350
  if (!line.trim()) continue;
138351
138351
  const indented = /^\s+/.test(raw);
@@ -143503,7 +143503,7 @@ function prettify(node, options, matcher, readonlyMatcher) {
143503
143503
  return compress(node, options, matcher, readonlyMatcher);
143504
143504
  }
143505
143505
  function compress(arr2, options, matcher, readonlyMatcher) {
143506
- let text10;
143506
+ let text11;
143507
143507
  const compressedObj = {};
143508
143508
  for (let i2 = 0; i2 < arr2.length; i2++) {
143509
143509
  const tagObj = arr2[i2];
@@ -143516,8 +143516,8 @@ function compress(arr2, options, matcher, readonlyMatcher) {
143516
143516
  matcher.push(property2, rawAttrs);
143517
143517
  }
143518
143518
  if (property2 === options.textNodeName) {
143519
- if (text10 === void 0) text10 = tagObj[property2];
143520
- else text10 += "" + tagObj[property2];
143519
+ if (text11 === void 0) text11 = tagObj[property2];
143520
+ else text11 += "" + tagObj[property2];
143521
143521
  } else if (property2 === void 0) {
143522
143522
  continue;
143523
143523
  } else if (tagObj[property2]) {
@@ -143555,9 +143555,9 @@ function compress(arr2, options, matcher, readonlyMatcher) {
143555
143555
  }
143556
143556
  }
143557
143557
  }
143558
- if (typeof text10 === "string") {
143559
- if (text10.length > 0) compressedObj[options.textNodeName] = text10;
143560
- } 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;
143561
143561
  return compressedObj;
143562
143562
  }
143563
143563
  function propName2(obj5) {
@@ -143735,9 +143735,9 @@ function arrToStr(arr2, options, indentation, matcher, stopNodeExpressions, xmlV
143735
143735
  }
143736
143736
  if (!Array.isArray(arr2)) {
143737
143737
  if (arr2 !== void 0 && arr2 !== null) {
143738
- let text10 = arr2.toString();
143739
- text10 = replaceEntitiesValue2(text10, options);
143740
- return text10;
143738
+ let text11 = arr2.toString();
143739
+ text11 = replaceEntitiesValue2(text11, options);
143740
+ return text11;
143741
143741
  }
143742
143742
  return "";
143743
143743
  }
@@ -144023,22 +144023,22 @@ function resolveTagName2(name, isAttribute2, options, matcher, xmlVersion) {
144023
144023
  if (qName(name, { xmlVersion })) return name;
144024
144024
  return options.sanitizeName(name, { isAttribute: isAttribute2, matcher: matcher.readOnly() });
144025
144025
  }
144026
- function processTextOrObjNode(object8, key3, level, matcher, xmlVersion) {
144027
- const attrValues = this.extractAttributes(object8);
144026
+ function processTextOrObjNode(object9, key3, level, matcher, xmlVersion) {
144027
+ const attrValues = this.extractAttributes(object9);
144028
144028
  matcher.push(key3, attrValues);
144029
144029
  const isStopNode = this.checkStopNode(matcher);
144030
144030
  if (isStopNode) {
144031
- const rawContent = this.buildRawContent(object8);
144032
- const attrStr = this.buildAttributesForStopNode(object8);
144031
+ const rawContent = this.buildRawContent(object9);
144032
+ const attrStr = this.buildAttributesForStopNode(object9);
144033
144033
  matcher.pop();
144034
144034
  return this.buildObjectNode(rawContent, key3, attrStr, level);
144035
144035
  }
144036
- const result = this.j2x(object8, level + 1, matcher, xmlVersion);
144036
+ const result = this.j2x(object9, level + 1, matcher, xmlVersion);
144037
144037
  matcher.pop();
144038
144038
  if (key3[0] === "?") {
144039
144039
  return this.buildTextValNode("", key3, result.attrStr, level, matcher);
144040
- } else if (object8[this.options.textNodeName] !== void 0 && Object.keys(object8).length === 1) {
144041
- 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);
144042
144042
  } else {
144043
144043
  return this.buildObjectNode(result.val, key3, result.attrStr, level);
144044
144044
  }
@@ -146017,9 +146017,9 @@ function bundlesOf(block) {
146017
146017
  walk2(block);
146018
146018
  return [...out2];
146019
146019
  }
146020
- function parseJson2(text10, what) {
146020
+ function parseJson2(text11, what) {
146021
146021
  try {
146022
- const value = JSON.parse(text10);
146022
+ const value = JSON.parse(text11);
146023
146023
  if (!value || typeof value !== "object" || Array.isArray(value)) throw new Error("not an object");
146024
146024
  return value;
146025
146025
  } catch (e2) {
@@ -146604,9 +146604,9 @@ function planTrim(src, keepIds, links) {
146604
146604
  for (const r3 of keptRoutes) for (const b2 of r3.bundles) keptWorkers.add(b2);
146605
146605
  const importsOf2 = (dir) => {
146606
146606
  const out2 = [];
146607
- for (const [rel, text10] of Object.entries(src.workerFiles)) {
146607
+ for (const [rel, text11] of Object.entries(src.workerFiles)) {
146608
146608
  if (!rel.startsWith(`tier5-src/${dir}/`)) continue;
146609
- 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]);
146610
146610
  }
146611
146611
  return out2;
146612
146612
  };
@@ -146652,9 +146652,9 @@ function planTrim(src, keepIds, links) {
146652
146652
  continue;
146653
146653
  }
146654
146654
  const block = edited.get(r3);
146655
- let text10 = block ? serializeAt(block, app.dev, r3.open) : void 0;
146656
- if (r3 === app.home && homeModules?.text !== void 0) text10 = homeModules.text;
146657
- 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);
146658
146658
  }
146659
146659
  if (templatedEmptied) cut2(templatedEmptied[0], templatedEmptied[1], "\n");
146660
146660
  dev += app.dev.slice(cursor);
@@ -146707,9 +146707,9 @@ function homeModulesPass(app, kept, edited) {
146707
146707
  const removedVertical = verticals.some(([, card2]) => !kept.has(app.exact.get(card2.screenId)));
146708
146708
  if (!removedVertical) return { dropped: [] };
146709
146709
  const block = edited.get(app.home);
146710
- 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);
146711
146711
  const installed = verticals.filter(([, card2]) => kept.has(app.exact.get(card2.screenId))).map(([v2]) => v2);
146712
- const patched = patchHomeModules(text10, installed);
146712
+ const patched = patchHomeModules(text11, installed);
146713
146713
  if (!patched.droppedModules.length) return { dropped: [] };
146714
146714
  return { text: patched.src, dropped: patched.droppedModules };
146715
146715
  }
@@ -147091,8 +147091,8 @@ function workerReach(src) {
147091
147091
  const f2 = queue.shift();
147092
147092
  if (seen.has(f2)) continue;
147093
147093
  seen.add(f2);
147094
- const text10 = all.get(f2) ?? "";
147095
- for (const m2 of text10.matchAll(RELATIVE_IMPORT)) {
147094
+ const text11 = all.get(f2) ?? "";
147095
+ for (const m2 of text11.matchAll(RELATIVE_IMPORT)) {
147096
147096
  const r3 = resolveImport(f2, m2[1], all);
147097
147097
  if (r3 && !seen.has(r3)) queue.push(r3);
147098
147098
  }
@@ -147102,11 +147102,11 @@ function workerReach(src) {
147102
147102
  let fetchCall = false;
147103
147103
  const hits = [];
147104
147104
  for (const f2 of [...seen].sort()) {
147105
- const text10 = all.get(f2) ?? "";
147105
+ const text11 = all.get(f2) ?? "";
147106
147106
  const before = wix.size;
147107
- for (const m2 of text10.matchAll(WIX_MODULE)) wix.add(m2[1].replace(/^@wix\/himalaya\//, "@himalaya/"));
147108
- const r3 = /\bwixApi\b/.test(text10);
147109
- 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);
147110
147110
  if (wix.size > before || r3 || fe2) hits.push(f2);
147111
147111
  raw ||= r3;
147112
147112
  fetchCall ||= fe2;
@@ -147518,10 +147518,10 @@ async function pushSetupRequest(options) {
147518
147518
  signal: AbortSignal.timeout(options.timeoutMs ?? (setup ? 12e4 : 3e4)),
147519
147519
  ...setup ? { body: JSON.stringify(options.body) } : {}
147520
147520
  });
147521
- const text10 = await response.text();
147521
+ const text11 = await response.text();
147522
147522
  let parsed = null;
147523
147523
  try {
147524
- const value = text10 ? JSON.parse(text10) : null;
147524
+ const value = text11 ? JSON.parse(text11) : null;
147525
147525
  parsed = value && typeof value === "object" && !Array.isArray(value) ? value : null;
147526
147526
  } catch {
147527
147527
  parsed = null;
@@ -147665,8 +147665,8 @@ function appendProperties(literal, file2, lines) {
147665
147665
  const at2 = trailing ? literal.properties.end : last.end;
147666
147666
  const lead = trailing ? "" : ",";
147667
147667
  if (onOneLine(literal, file2)) {
147668
- const text10 = inline();
147669
- 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(/,$/, "")}` };
147670
147670
  }
147671
147671
  const indent = lineIndent2(file2.text, last.getStart(file2));
147672
147672
  return { at: at2, end: at2, text: lead + lines.map((line) => `
@@ -147676,9 +147676,9 @@ function onOneLine(node, file2) {
147676
147676
  const line = (position) => file2.getLineAndCharacterOfPosition(position).line;
147677
147677
  return line(node.getStart(file2)) === line(node.getEnd());
147678
147678
  }
147679
- function lineIndent2(text10, position) {
147680
- const lineStart = text10.lastIndexOf("\n", position - 1) + 1;
147681
- 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];
147682
147682
  }
147683
147683
  function applySplices(source, splices) {
147684
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);
@@ -149186,9 +149186,9 @@ __export(screen_state_exports, {
149186
149186
  import { createHash as createHash26 } from "node:crypto";
149187
149187
  import { lstatSync as lstatSync15, readFileSync as readFileSync51 } from "node:fs";
149188
149188
  import { join as join40 } from "node:path";
149189
- function quotableLine(text10) {
149190
- if (!text10) return void 0;
149191
- 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);
149192
149192
  if (!first) return void 0;
149193
149193
  let line = first.replace(/\s+/g, " ");
149194
149194
  if (line.length > LINE_MAX) {
@@ -149201,9 +149201,9 @@ function quotableLine(text10) {
149201
149201
  function visibleText(html) {
149202
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, " ");
149203
149203
  }
149204
- function painted(text10, page) {
149204
+ function painted(text11, page) {
149205
149205
  if (page === void 0) return true;
149206
- const probe = text10.replace(/\s+/g, " ").trim().slice(0, 60);
149206
+ const probe = text11.replace(/\s+/g, " ").trim().slice(0, 60);
149207
149207
  return !!probe && page.includes(probe);
149208
149208
  }
149209
149209
  function errorMessageOf(s2) {
@@ -150413,8 +150413,8 @@ var init_cms_schema = __esm({
150413
150413
 
150414
150414
  // ../native-config/car.ts
150415
150415
  function parseCarConfig(configTs) {
150416
- const { text: text10, inString } = scanConfig(configTs);
150417
- 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)) {
150418
150418
  if (inString[m2.index]) continue;
150419
150419
  return { category: /category\s*:\s*["']([^"']+)["']/.exec(m2[1])?.[1] };
150420
150420
  }
@@ -150939,10 +150939,10 @@ function tokenColorIssues(dir, tokensPathOverride) {
150939
150939
  if (controlButton === void 0 || controlButton === null || typeof controlButton !== "object" || Array.isArray(controlButton)) return;
150940
150940
  const btn = controlButton;
150941
150941
  for (const size of ["sm", "md", "lg"]) {
150942
- const text10 = btn[size]?.text;
150943
- 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;
150944
150944
  error(
150945
- `${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.`
150946
150946
  );
150947
150947
  }
150948
150948
  const variants = btn.variants;
@@ -151372,16 +151372,16 @@ function encode(value, quote) {
151372
151372
  if (quote === "'") return `'${value.replace(/[\\']/g, "\\$&").replace(/\n/g, "\\n")}'`;
151373
151373
  return `\`${value.replace(/[\\`]|\$(?=\{)/g, "\\$&")}\``;
151374
151374
  }
151375
- function syntaxErrors(file2, text10) {
151375
+ function syntaxErrors(file2, text11) {
151376
151376
  if (file2.endsWith(".json")) {
151377
151377
  try {
151378
- JSON.parse(text10);
151378
+ JSON.parse(text11);
151379
151379
  return [];
151380
151380
  } catch (e2) {
151381
151381
  return [e2.message];
151382
151382
  }
151383
151383
  }
151384
- 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 } });
151385
151385
  return (out2.diagnostics ?? []).map((d2) => ts7.flattenDiagnosticMessageText(d2.messageText, "\n"));
151386
151386
  }
151387
151387
  function sweepCopy(dir, pairs, dryRun) {
@@ -151393,10 +151393,10 @@ function sweepCopy(dir, pairs, dryRun) {
151393
151393
  const next = /* @__PURE__ */ new Map();
151394
151394
  const replaced = pairs.map(([from, to2]) => ({ from, to: to2, files: {} }));
151395
151395
  for (const f2 of files) {
151396
- const text10 = readFileSync59(join49(dir, f2), "utf8");
151397
- 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;
151398
151398
  const kind = f2.endsWith(".json") ? ts7.ScriptKind.JSON : f2.endsWith("x") ? ts7.ScriptKind.TSX : ts7.ScriptKind.TS;
151399
- const sf2 = ts7.createSourceFile(f2, text10, ts7.ScriptTarget.Latest, true, kind);
151399
+ const sf2 = ts7.createSourceFile(f2, text11, ts7.ScriptTarget.Latest, true, kind);
151400
151400
  const edits = [];
151401
151401
  const visit = (node) => {
151402
151402
  if ((ts7.isStringLiteral(node) || ts7.isNoSubstitutionTemplateLiteral(node)) && isCopy(node, f2)) {
@@ -151409,14 +151409,14 @@ function sweepCopy(dir, pairs, dryRun) {
151409
151409
  });
151410
151410
  if (value !== node.text) {
151411
151411
  const start = node.getStart(sf2);
151412
- edits.push({ start, end: node.end, text: encode(value, text10[start]) });
151412
+ edits.push({ start, end: node.end, text: encode(value, text11[start]) });
151413
151413
  }
151414
151414
  }
151415
151415
  ts7.forEachChild(node, visit);
151416
151416
  };
151417
151417
  visit(sf2);
151418
151418
  if (!edits.length) continue;
151419
- let out2 = text10;
151419
+ let out2 = text11;
151420
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);
151421
151421
  const errors = syntaxErrors(f2, out2);
151422
151422
  if (errors.length) throw new TrimRefusal(`the sweep would break ${f2} \u2014 nothing written: ${errors[0]}`);
@@ -151710,9 +151710,9 @@ function verticalsFromBook(path2) {
151710
151710
  throw new Error(`no book.json / provisioning.overlay.json under ${path2} \u2014 run \`himi site analyze\` first, or pass --verticals`);
151711
151711
  }
151712
151712
  function recommendTemplates(input) {
151713
- const text10 = input.text ?? "";
151714
- const owner = OWNER_WORDS.test(text10);
151715
- 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));
151716
151716
  const byName3 = /* @__PURE__ */ new Map();
151717
151717
  for (const row of input.catalog) {
151718
151718
  const reasons = [];
@@ -151726,7 +151726,7 @@ function recommendTemplates(input) {
151726
151726
  reasons.push(`matches ${hit.map((h2) => `"${h2}"`).join(", ")}`);
151727
151727
  }
151728
151728
  }
151729
- if (text10) {
151729
+ if (text11) {
151730
151730
  if (owner === isOwner) {
151731
151731
  score += 0.3;
151732
151732
  reasons.push(owner ? "owner/operations app, and this is an owner template" : "customer-facing app, and this is a customer template");
@@ -153334,9 +153334,9 @@ function xmlAttr(value) {
153334
153334
  return value.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
153335
153335
  }
153336
153336
  function renderHealthPermissionCopyXml(copy, indent) {
153337
- const text10 = copy?.trim();
153338
- if (!text10) return [];
153339
- 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)}" />`];
153340
153340
  }
153341
153341
  function renderModulesIosPackage(products, indent) {
153342
153342
  return products.flatMap((p2) => {
@@ -153503,8 +153503,8 @@ function swiftFilesWithModuleMarkers(app) {
153503
153503
  if (entry.isDirectory()) {
153504
153504
  if (!entry.name.endsWith(".xcodeproj")) stack.push(path2);
153505
153505
  } else if (entry.isFile() && entry.name.endsWith(".swift")) {
153506
- const text10 = readFileSync64(path2, "utf8");
153507
- 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);
153508
153508
  }
153509
153509
  }
153510
153510
  }
@@ -153539,8 +153539,8 @@ function kotlinBootSourcesUnder(root) {
153539
153539
  }
153540
153540
  return out2.sort();
153541
153541
  }
153542
- function stripComments2(text10) {
153543
- 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, "");
153544
153544
  }
153545
153545
  function duplicateModuleInstalls(...texts) {
153546
153546
  const calls = ["installLinkedModules", ...NATIVE_MODULES.flatMap((m2) => m2.ios ? [`${m2.ios.product}.install`] : [])];
@@ -153602,19 +153602,19 @@ function hostAppliesDeferredWidgetActions(app) {
153602
153602
  }
153603
153603
  return false;
153604
153604
  }
153605
- function countBeginMarkers(text10, kind, label3) {
153606
- 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;
153607
153607
  }
153608
- function countEndMarkers(text10, kind, label3) {
153609
- 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;
153610
153610
  }
153611
- function hasMarkers(text10, kind, label3) {
153612
- const lines = text10.split("\n");
153611
+ function hasMarkers(text11, kind, label3) {
153612
+ const lines = text11.split("\n");
153613
153613
  return lines.some((l2) => isBegin(l2, kind, label3)) && lines.some((l2) => isEnd(l2, kind, label3));
153614
153614
  }
153615
- function assertSingleMarkerPair(text10, kind, label3, where = "the file") {
153616
- const opens = countBeginMarkers(text10, kind, label3);
153617
- 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);
153618
153618
  if (opens > 1 || closes > 1) {
153619
153619
  const which = opens > 1 ? `">>> ${label3}" opens ${opens} times` : `"<<< ${label3}" closes ${closes} times`;
153620
153620
  throw new Error(
@@ -153622,9 +153622,9 @@ function assertSingleMarkerPair(text10, kind, label3, where = "the file") {
153622
153622
  );
153623
153623
  }
153624
153624
  }
153625
- function injectBlock(text10, kind, label3, render, where = "the file") {
153626
- assertSingleMarkerPair(text10, kind, label3, where);
153627
- 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");
153628
153628
  const beginIdx = lines.findIndex((l2) => isBegin(l2, kind, label3));
153629
153629
  const endIdx = lines.findIndex((l2) => isEnd(l2, kind, label3));
153630
153630
  if (beginIdx === -1 || endIdx === -1 || endIdx < beginIdx) {
@@ -153664,8 +153664,8 @@ function applyToFile(path2, kind, label3, render, check) {
153664
153664
  function assertModuleFlagsMarkers(paths) {
153665
153665
  for (const path2 of paths) {
153666
153666
  if (!existsSync54(path2)) continue;
153667
- const text10 = readFileSync64(path2, "utf8");
153668
- 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)) {
153669
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).`);
153670
153670
  }
153671
153671
  }
@@ -153901,8 +153901,8 @@ function genNativeConfig(app, opts = {}) {
153901
153901
  }
153902
153902
  }
153903
153903
  for (const swift of swiftFilesWithModuleMarkers(app)) {
153904
- const text10 = readFileSync64(swift, "utf8");
153905
- 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)) {
153906
153906
  throw new Error(`${app}: ${swift} must carry both ${LABEL_MODULES_SWIFT_IMPORT} and ${LABEL_MODULES_SWIFT_INSTALL} markers`);
153907
153907
  }
153908
153908
  files.push(applyToFile(swift, "slash", LABEL_MODULES_SWIFT_IMPORT, renderModulesSwiftImport, check));
@@ -153911,8 +153911,8 @@ function genNativeConfig(app, opts = {}) {
153911
153911
  files.push(...genCapabilityRegistrations(appDir(app), ids, check));
153912
153912
  const rce = declaresRichContentEditor(configTs);
153913
153913
  for (const yml of [iosYml, macosProjectYml(app)]) {
153914
- const text10 = existsSync54(yml) ? readFileSync64(yml, "utf8") : "";
153915
- 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);
153916
153916
  if (existsSync54(yml)) assertLocalWebBlockLanded(app, rce, yml, r3.outcome);
153917
153917
  files.push(r3);
153918
153918
  }
@@ -154893,8 +154893,8 @@ function renderBase44Types(entities, app) {
154893
154893
  for (const f2 of fields) body.push(` ${key2(f2.key)}${required3.has(f2.key) ? "" : "?"}: ${fieldType(f2)};`);
154894
154894
  body.push("};", `export const ${name} = entities<${name}Row>(${JSON.stringify(physicalEntityName(e2, app))});`);
154895
154895
  }
154896
- const text10 = body.join("\n");
154897
- 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}`);
154898
154898
  if (usable.length) L2.push(`import { ${["entities", ...types].join(", ")} } from "@himalaya/base44";`);
154899
154899
  return [...L2, ...body].join("\n") + "\n";
154900
154900
  }
@@ -154906,14 +154906,14 @@ async function declaredEntities(dir) {
154906
154906
  async function writeBase44Types(dir, app) {
154907
154907
  const list = await declaredEntities(dir);
154908
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.");
154909
- const text10 = renderBase44Types(list, app);
154909
+ const text11 = renderBase44Types(list, app);
154910
154910
  const path2 = join56(dir, BASE44_TYPES_PATH);
154911
- const changed = !existsSync56(path2) || readFileSync66(path2, "utf8") !== text10;
154911
+ const changed = !existsSync56(path2) || readFileSync66(path2, "utf8") !== text11;
154912
154912
  if (changed) {
154913
154913
  mkdirSync26(dirname32(path2), { recursive: true });
154914
- writeFileSync22(path2, text10);
154914
+ writeFileSync22(path2, text11);
154915
154915
  }
154916
- return { path: path2, changed, entities: text10.split("\nexport const ").length - 1 };
154916
+ return { path: path2, changed, entities: text11.split("\nexport const ").length - 1 };
154917
154917
  }
154918
154918
  async function base44TypesIssues(dir, app, strict) {
154919
154919
  const path2 = join56(dir, BASE44_TYPES_PATH);
@@ -155871,8 +155871,8 @@ function isNoneEntry(entry) {
155871
155871
  const head = entryHead(entry);
155872
155872
  return NONE.test(entry) || head !== "" && NONE.test(head);
155873
155873
  }
155874
- function parseDataAccess(text10, from) {
155875
- const body = text10.replace(/<!--[\s\S]*?(?:-->|$)/g, "");
155874
+ function parseDataAccess(text11, from) {
155875
+ const body = text11.replace(/<!--[\s\S]*?(?:-->|$)/g, "");
155876
155876
  const heading = new RegExp(`(?:^|\\n)##[ \\t]+${DATA_ACCESS_HEADING}\\b[^\\n]*([\\s\\S]*?)(?=\\n##[ \\t]|$)`, "i").exec(body);
155877
155877
  if (!heading) return null;
155878
155878
  const lines = heading[1].split("\n").map((l2) => l2.trim()).filter((l2) => l2.startsWith("|"));
@@ -155899,13 +155899,13 @@ function readDataAccess(dir) {
155899
155899
  for (const name of ["SPEC.md", "MOBILE-UX.md"]) {
155900
155900
  const p2 = join62(dir, name);
155901
155901
  if (!existsSync61(p2)) continue;
155902
- let text10;
155902
+ let text11;
155903
155903
  try {
155904
- text10 = readFileSync71(p2, "utf8");
155904
+ text11 = readFileSync71(p2, "utf8");
155905
155905
  } catch {
155906
155906
  continue;
155907
155907
  }
155908
- const plan = parseDataAccess(text10, name);
155908
+ const plan = parseDataAccess(text11, name);
155909
155909
  if (plan) return plan;
155910
155910
  }
155911
155911
  return null;
@@ -156061,7 +156061,7 @@ function readTestConfig(dir) {
156061
156061
  if (input !== void 0 && (!input || typeof input !== "object" || Array.isArray(input) || Object.values(input).some((v2) => typeof v2 !== "string"))) {
156062
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" }`);
156063
156063
  }
156064
- 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())) {
156065
156065
  throw new Error(`${TEST_CONFIG_FILE}: journeys[${i2}] needs non-empty expectText values that prove a visible result`);
156066
156066
  }
156067
156067
  });
@@ -157751,14 +157751,14 @@ import { join as join68 } from "node:path";
157751
157751
  function mobileUxIssues(dir, strict) {
157752
157752
  const file2 = join68(dir, "MOBILE-UX.md");
157753
157753
  if (!existsSync65(file2)) return [];
157754
- let text10;
157754
+ let text11;
157755
157755
  try {
157756
- text10 = readFileSync76(file2, "utf8");
157756
+ text11 = readFileSync76(file2, "utf8");
157757
157757
  } catch {
157758
157758
  return [];
157759
157759
  }
157760
- if (!text10) return [];
157761
- return mobileUxMarkerFindings(text10, recordedRenderWidths(dir)).map((finding) => {
157760
+ if (!text11) return [];
157761
+ return mobileUxMarkerFindings(text11, recordedRenderWidths(dir)).map((finding) => {
157762
157762
  const scaffoldAdvisory = finding.code === "missing-width-evidence";
157763
157763
  return {
157764
157764
  screen: null,
@@ -159582,12 +159582,12 @@ async function runRemoteFunctionOperation(input) {
159582
159582
  if (input.boCookie) headers2.cookie = input.boCookie;
159583
159583
  if (input.previewToken) headers2["x-himalaya-preview-token"] = input.previewToken;
159584
159584
  const response = await (input.fetchImpl ?? fetch)(url, { method, headers: headers2 });
159585
- const text10 = await response.text();
159585
+ const text11 = await response.text();
159586
159586
  let body;
159587
159587
  try {
159588
- body = JSON.parse(text10);
159588
+ body = JSON.parse(text11);
159589
159589
  } catch {
159590
- body = text10;
159590
+ body = text11;
159591
159591
  }
159592
159592
  return { ok: response.ok, status: response.status, body };
159593
159593
  }
@@ -163266,10 +163266,10 @@ async function hostedAuthUrl(req, visitorToken, fetchImpl = fetch) {
163266
163266
  }
163267
163267
  })
163268
163268
  });
163269
- const text10 = await res.text();
163269
+ const text11 = await res.text();
163270
163270
  let parsed = {};
163271
163271
  try {
163272
- parsed = text10 ? JSON.parse(text10) : {};
163272
+ parsed = text11 ? JSON.parse(text11) : {};
163273
163273
  } catch {
163274
163274
  }
163275
163275
  const fullUrl = parsed.redirectSession?.fullUrl;
@@ -163289,10 +163289,10 @@ async function exchangeAuthCode(cfg, code, verifier, fetchImpl = fetch) {
163289
163289
  redirectUri: cfg.redirectUri
163290
163290
  })
163291
163291
  });
163292
- const text10 = await res.text();
163292
+ const text11 = await res.text();
163293
163293
  let parsed = {};
163294
163294
  try {
163295
- parsed = text10 ? JSON.parse(text10) : {};
163295
+ parsed = text11 ? JSON.parse(text11) : {};
163296
163296
  } catch {
163297
163297
  }
163298
163298
  if (res.status !== 200 || !parsed.access_token) throw new Error(`token exchange failed (${res.status})`);
@@ -164828,11 +164828,11 @@ async function localizeConfigResponse(res, kind, header) {
164828
164828
  header
164829
164829
  )
164830
164830
  };
164831
- const text10 = JSON.stringify(next);
164831
+ const text11 = JSON.stringify(next);
164832
164832
  const headers2 = new Headers(res.headers);
164833
164833
  headers2.delete("etag");
164834
- headers2.set("content-length", String(new TextEncoder().encode(text10).length));
164835
- 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 });
164836
164836
  }
164837
164837
  function makeRunHandler(opts) {
164838
164838
  const mount = opts.chrome === "app" ? "/app" : "/preview";
@@ -165041,8 +165041,8 @@ var init_node_adapter = __esm({
165041
165041
  function authConfigOf(appConfig) {
165042
165042
  if (!appConfig) return void 0;
165043
165043
  try {
165044
- const text10 = typeof appConfig === "string" ? appConfig : new TextDecoder().decode(appConfig);
165045
- 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;
165046
165046
  } catch {
165047
165047
  return void 0;
165048
165048
  }
@@ -165406,16 +165406,16 @@ async function releasePayloadFromDir(root, app, header) {
165406
165406
  const manifest = await store.getManifest(app);
165407
165407
  if (!manifest) throw new Error(`no release manifest for ${app} under ${root}`);
165408
165408
  const b64 = (b2) => b2 ? Buffer.from(b2).toString("base64") : void 0;
165409
- const text10 = (b2) => b2 ? new TextDecoder().decode(b2) : void 0;
165409
+ const text11 = (b2) => b2 ? new TextDecoder().decode(b2) : void 0;
165410
165410
  const screens = {};
165411
165411
  const docs = {};
165412
165412
  const addDoc = async (hash2) => {
165413
165413
  if (!hash2 || docs[hash2] !== void 0) return;
165414
- const d2 = text10(await store.getDoc?.(app, hash2) ?? null);
165414
+ const d2 = text11(await store.getDoc?.(app, hash2) ?? null);
165415
165415
  if (d2 !== void 0) docs[hash2] = d2;
165416
165416
  };
165417
165417
  for (const [id, meta] of Object.entries(manifest.screens ?? {})) {
165418
- const s2 = text10(await store.getScreen(app, id));
165418
+ const s2 = text11(await store.getScreen(app, id));
165419
165419
  if (s2 !== void 0) screens[id] = s2;
165420
165420
  await addDoc(meta.descriptorHash);
165421
165421
  }
@@ -165436,10 +165436,10 @@ async function releasePayloadFromDir(root, app, header) {
165436
165436
  }
165437
165437
  const widgets = {};
165438
165438
  for (const id of Object.keys(manifest.widgets ?? {})) {
165439
- const w2 = text10(await store.getWidget?.(app, id) ?? null);
165439
+ const w2 = text11(await store.getWidget?.(app, id) ?? null);
165440
165440
  if (w2 !== void 0) widgets[id] = w2;
165441
165441
  }
165442
- const appConfig = text10(await store.getAppConfig(app));
165442
+ const appConfig = text11(await store.getAppConfig(app));
165443
165443
  const wixClientId = appConfigWixClientId(appConfig);
165444
165444
  return {
165445
165445
  app,
@@ -165449,7 +165449,7 @@ async function releasePayloadFromDir(root, app, header) {
165449
165449
  docs,
165450
165450
  assets,
165451
165451
  widgets,
165452
- tokens: text10(await store.getTokens(app)),
165452
+ tokens: text11(await store.getTokens(app)),
165453
165453
  appConfig,
165454
165454
  icon: b64(await store.getIcon?.(app) ?? null),
165455
165455
  header,
@@ -165845,13 +165845,18 @@ function appleSaleRules(options = {}) {
165845
165845
  return {
165846
165846
  onlineProgram: ONLINE_PROGRAM_SALE_RULE,
165847
165847
  ...(options.storesAppleSalesEnabled ?? STORES_APPLE_SALES_ENABLED) || (options.storesItemPaymentEnabled ?? STORES_ITEM_PAYMENT_ENABLED) ? { storesProduct: STORES_PRODUCT_SALE_RULE } : {},
165848
- ...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 } : {}
165849
165851
  };
165850
165852
  }
165851
- 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;
165852
165854
  var init_wix_payments_contract = __esm({
165853
165855
  "../../core/sdk/iap/src/wix-payments-contract.ts"() {
165854
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" };
165855
165860
  STORES_ITEM_PAYMENT_ENABLED = false;
165856
165861
  STORES_APPLE_SALES_ENABLED = true;
165857
165862
  STORES_PRODUCT_SALE_RULE = { appProductId: (id) => id, productType: "NON_CONSUMABLE" };
@@ -165859,6 +165864,11 @@ var init_wix_payments_contract = __esm({
165859
165864
  PRICING_PLAN_APPLE_SALES_ENABLED = true;
165860
165865
  PRICING_PLAN_SALE_RULE = { appProductId: (id) => id, productType: "NON_CONSUMABLE" };
165861
165866
  APPLE_SALE_RULES = appleSaleRules();
165867
+ APPLE_PROVISIONING_RULES = {
165868
+ ...APPLE_SALE_RULES,
165869
+ bookingsService: ATTENDANCE_SALE_RULE,
165870
+ eventsTicket: ATTENDANCE_SALE_RULE
165871
+ };
165862
165872
  }
165863
165873
  });
165864
165874
 
@@ -165977,11 +165987,11 @@ async function registerBundleId(opts) {
165977
165987
  const j2 = await res.json();
165978
165988
  return { status: "created", id: j2.data?.id };
165979
165989
  }
165980
- const text10 = await res.text();
165981
- 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)) {
165982
165992
  return { status: "exists" };
165983
165993
  }
165984
- 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)}`);
165985
165995
  }
165986
165996
  async function main() {
165987
165997
  const [app, ...rest] = process.argv.slice(2);
@@ -166234,9 +166244,9 @@ var init_iap_client = __esm({
166234
166244
  retryAfterMs(response.headers.get("retry-after"), this.now())
166235
166245
  );
166236
166246
  }
166237
- scrub(text10) {
166247
+ scrub(text11) {
166238
166248
  const { keyId, issuerId, privateKeyPem } = this.options.key;
166239
- let out2 = text10;
166249
+ let out2 = text11;
166240
166250
  for (const literal of [this.token?.value, privateKeyPem, issuerId, keyId]) {
166241
166251
  if (literal) out2 = out2.split(literal).join("[redacted]");
166242
166252
  }
@@ -166406,19 +166416,19 @@ var init_iap_api = __esm({
166406
166416
  });
166407
166417
  return toVersion(requireSingle(doc, "in-app purchase version"));
166408
166418
  }
166409
- async createLocalization(versionId, text10) {
166419
+ async createLocalization(versionId, text11) {
166410
166420
  const doc = await this.client.post("/v2/inAppPurchaseLocalizations", {
166411
166421
  data: {
166412
166422
  type: "inAppPurchaseLocalizations",
166413
- attributes: { locale: text10.locale, name: text10.name, description: text10.description },
166423
+ attributes: { locale: text11.locale, name: text11.name, description: text11.description },
166414
166424
  relationships: { version: related("inAppPurchaseVersions", versionId) }
166415
166425
  }
166416
166426
  });
166417
166427
  return toLocalization(requireSingle(doc, "localization"));
166418
166428
  }
166419
- async updateLocalization(localizationId, text10) {
166429
+ async updateLocalization(localizationId, text11) {
166420
166430
  const doc = await this.client.patch(`/v2/inAppPurchaseLocalizations/${enc(localizationId)}`, {
166421
- 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 } }
166422
166432
  });
166423
166433
  return toLocalization(requireSingle(doc, "localization"));
166424
166434
  }
@@ -166522,7 +166532,7 @@ function createCatalogIapApi(client2, appId2, uploadMedia) {
166522
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") }));
166523
166533
  const desired = (item) => ({ localizations: item.localizations, price: selection(item.price), territories: item.territories });
166524
166534
  const mapping = async (item) => {
166525
- 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;
166526
166536
  if (!rule || !item.wix || rule.productType !== appleProductType(item.type)) throw new IapCatalogError("mapping_unsupported", `No supported Wix mapping identity for ${item.productId}`);
166527
166537
  const expected = rule.appProductId(item.wix.entityId);
166528
166538
  const catalog3 = await client2.listProducts(appId2);
@@ -166786,8 +166796,8 @@ function reportDuplicateMappings(reader, items) {
166786
166796
  reader.duplicates(items.flatMap((i2) => [i2.entitlement, ...(i2.unlocks ?? []).map((u2) => u2.entitlement)]), "items", "entitlement");
166787
166797
  reader.duplicates(items.map((i2) => i2.referenceName), "items", "referenceName");
166788
166798
  }
166789
- function looksLikeCredential(text10) {
166790
- return CREDENTIAL_SHAPES.some((shape) => shape.test(text10));
166799
+ function looksLikeCredential(text11) {
166800
+ return CREDENTIAL_SHAPES.some((shape) => shape.test(text11));
166791
166801
  }
166792
166802
  function reportCredentialMaterial(reader, value, path2) {
166793
166803
  if (typeof value === "string") {
@@ -166800,15 +166810,15 @@ function reportCredentialMaterial(reader, value, path2) {
166800
166810
  for (const [key3, v2] of Object.entries(value)) reportCredentialMaterial(reader, v2, childPath(path2, key3));
166801
166811
  }
166802
166812
  }
166803
- function parseJson3(text10, label3) {
166813
+ function parseJson3(text11, label3) {
166804
166814
  try {
166805
- return JSON.parse(text10);
166815
+ return JSON.parse(text11);
166806
166816
  } catch (e2) {
166807
166817
  throw new Error(`${label3} is not valid JSON: ${e2.message}`);
166808
166818
  }
166809
166819
  }
166810
- function parseIapManifest(text10, label3) {
166811
- const doc = parseJson3(text10, label3);
166820
+ function parseIapManifest(text11, label3) {
166821
+ const doc = parseJson3(text11, label3);
166812
166822
  const reader = new ManifestReader();
166813
166823
  const obj5 = reader.object(doc, "", MANIFEST_KEYS);
166814
166824
  if (obj5.manifestVersion !== 1) reader.problems.push("manifestVersion must be 1");
@@ -167758,9 +167768,9 @@ async function ensure(spec, sleep) {
167758
167768
  }
167759
167769
  }
167760
167770
  function textFor(item, locale) {
167761
- const text10 = item.localizations.find((l2) => l2.locale === locale);
167762
- if (!text10) throw new Error(`no ${locale} localization in the manifest for ${item.productId}`);
167763
- 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;
167764
167774
  }
167765
167775
  async function findProduct(api2, appId2, productId) {
167766
167776
  return (await api2.listProducts(appId2)).find((p2) => p2.productId === productId);
@@ -167819,14 +167829,14 @@ async function deleteLeftoverScreenshot(context, resourceId) {
167819
167829
  }
167820
167830
  async function upsertManagedLocalization(run2, locale, context) {
167821
167831
  const resourceId = required(run2.resourceId, "the product id");
167822
- const text10 = textFor(run2.item, locale);
167832
+ const text11 = textFor(run2.item, locale);
167823
167833
  const { api: api2, sleep } = context;
167824
167834
  const find2 = async () => {
167825
167835
  const version5 = await findDraft(api2, resourceId);
167826
- const localization2 = version5 && await findLocalization(api2, version5.id, locale, text10);
167836
+ const localization2 = version5 && await findLocalization(api2, version5.id, locale, text11);
167827
167837
  return version5 && localization2 ? { version: version5, localization: localization2, outcome: "ALREADY_APPLIED" } : void 0;
167828
167838
  };
167829
- 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);
167830
167840
  run2.versionId = value.version.id;
167831
167841
  return { state: value.outcome === "ALREADY_APPLIED" ? "reconciled" : state, resourceId: value.localization.id };
167832
167842
  }
@@ -167851,16 +167861,16 @@ function operationRunners(context, manifest) {
167851
167861
  createLocalization: async (run2, op) => {
167852
167862
  if (api2.managed) return upsertManagedLocalization(run2, op.locale, context);
167853
167863
  const versionId = required(run2.versionId, "the draft version");
167854
- const text10 = textFor(run2.item, op.locale);
167855
- 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);
167856
167866
  return { state, resourceId: value.id };
167857
167867
  },
167858
167868
  updateLocalization: async (run2, op) => {
167859
167869
  if (api2.managed) return upsertManagedLocalization(run2, op.locale, context);
167860
167870
  const versionId = required(run2.versionId, "the draft version");
167861
- const text10 = textFor(run2.item, op.locale);
167862
- const localizationId = required(run2.localizations.find((l2) => l2.locale === text10.locale)?.id, `the ${text10.locale} localization`);
167863
- 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);
167864
167874
  return { state, resourceId: value.id };
167865
167875
  },
167866
167876
  setPrice: async (run2) => {
@@ -168125,10 +168135,10 @@ function profilePath(name, home = homedir11()) {
168125
168135
  }
168126
168136
  return join93(credentialsDir(home), `${name}.json`);
168127
168137
  }
168128
- function parseProfile(text10, label3) {
168138
+ function parseProfile(text11, label3) {
168129
168139
  let doc;
168130
168140
  try {
168131
- doc = JSON.parse(text10);
168141
+ doc = JSON.parse(text11);
168132
168142
  } catch (e2) {
168133
168143
  throw new Error(`${label3} is not valid JSON: ${e2.message}`);
168134
168144
  }
@@ -168290,9 +168300,9 @@ var init_iap_credentials = __esm({
168290
168300
 
168291
168301
  // ../store-release/iap-draft.ts
168292
168302
  import { createHash as createHash46 } from "node:crypto";
168293
- function fit(text10, max) {
168294
- const chars = [...text10];
168295
- 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}`;
168296
168306
  }
168297
168307
  function plainText2(html) {
168298
168308
  return html.replace(/<[^>]*>/g, " ").replace(/&(amp|nbsp|lt|gt|quot|#39);/g, (entity) => ENTITIES[entity]).replace(/\s+/g, " ").trim();
@@ -168342,7 +168352,7 @@ function perItemProduct(item, options, names2) {
168342
168352
  classification: "digital",
168343
168353
  entitlement: entityKey(item.source, item.id),
168344
168354
  productId: productIdFor(options.target.bundleId, SOURCE_SLUGS[item.source], item.id),
168345
- type: "nonConsumable",
168355
+ type: repeatable(item) ? "consumable" : "nonConsumable",
168346
168356
  referenceName: names2.claim(name, item.id),
168347
168357
  localizations: [{ locale: options.locale, name: displayName(name), description: fit(plainDescription || `Unlock ${name}`, APPLE_LIMITS.description) }],
168348
168358
  price: priceFor(item.price.amount, options),
@@ -168418,19 +168428,22 @@ function draftManifest(catalog3, options) {
168418
168428
  else toDraft.push(item);
168419
168429
  }
168420
168430
  }
168421
- 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)];
168422
168434
  const items = [...existingItems, ...drafted];
168423
168435
  const newlyMapped = toDraft.length;
168424
168436
  if (!items.length) return { skipped, kept, newlyMapped };
168425
168437
  const manifest = { manifestVersion: 1, target: options.target, items };
168426
168438
  return { manifest: parseIapManifest(JSON.stringify(manifest), "the drafted manifest"), skipped, kept, newlyMapped };
168427
168439
  }
168428
- 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;
168429
168441
  var init_iap_draft = __esm({
168430
168442
  "../store-release/iap-draft.ts"() {
168431
168443
  init_iap_manifest();
168432
168444
  init_iap_pricing();
168433
- 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";
168434
168447
  SKIP_REASONS = {
168435
168448
  physical: "physical goods are never sold through in-app purchase",
168436
168449
  subscription: "a recurring plan needs an App Store subscription, which this version does not register",
@@ -168439,7 +168452,7 @@ var init_iap_draft = __esm({
168439
168452
  TIER_DESCRIPTION = "Unlocks one item in the app";
168440
168453
  ELLIPSIS = "\u2026";
168441
168454
  entityKey = (entityType, entityId) => `${entityType}:${entityId}`;
168442
- sha2 = (text10) => createHash46("sha256").update(text10).digest("hex");
168455
+ sha2 = (text11) => createHash46("sha256").update(text11).digest("hex");
168443
168456
  ENTITIES = { "&amp;": "&", "&nbsp;": " ", "&lt;": "<", "&gt;": ">", "&quot;": '"', "&#39;": "'" };
168444
168457
  MAX_SUFFIX = 24;
168445
168458
  ReferenceNames = class {
@@ -168889,14 +168902,104 @@ var init_iap_config_edit = __esm({
168889
168902
  }
168890
168903
  });
168891
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
+
168892
168995
  // src/store-iap-catalog.ts
168893
168996
  function amountText(value) {
168894
168997
  if (typeof value === "number" && Number.isFinite(value)) return String(value);
168895
168998
  return typeof value === "string" && value.trim() ? value.trim() : void 0;
168896
168999
  }
168897
169000
  function priceOf(amount, currency) {
168898
- const text10 = amountText(amount);
168899
- 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;
168900
169003
  }
168901
169004
  function catalogItem(fields) {
168902
169005
  return Object.fromEntries(Object.entries(fields).filter(([, v2]) => v2 !== void 0 && v2 !== "" && v2 !== false));
@@ -169034,18 +169137,65 @@ async function readOneTimeUnlimitedPlanIds(wix) {
169034
169137
  }
169035
169138
  async function readWixCatalog(wix) {
169036
169139
  const notes = [];
169037
- const items = [...await readStores(wix, notes), ...await readPrograms(wix, notes), ...await readPlans(wix, notes)];
169038
- notes.push(NEVER_DRAFTED_NOTE);
169140
+ const items = [...await readStores(wix, notes), ...await readPrograms(wix, notes), ...await readPlans(wix, notes), ...await readAttendance(wix, notes)];
169039
169141
  return { items, notes };
169040
169142
  }
169041
- 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;
169042
169192
  var init_store_iap_catalog = __esm({
169043
169193
  "src/store-iap-catalog.ts"() {
169194
+ init_attendance_classifier();
169044
169195
  init_wix_owner();
169045
169196
  PAGE4 = 100;
169046
169197
  MAX_PAGES3 = 500;
169047
169198
  PROGRAM_READ_CONCURRENCY = 4;
169048
- 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.";
169049
169199
  isNotInstalled2 = (e2) => e2 instanceof WixApiError && e2.isAppNotInstalled;
169050
169200
  isWrongCatalogVersion = (e2) => e2 instanceof WixApiError && e2.status === 428 && /CATALOG_V1/.test(e2.message);
169051
169201
  }
@@ -169053,7 +169203,7 @@ var init_store_iap_catalog = __esm({
169053
169203
 
169054
169204
  // src/store-iap-connect.ts
169055
169205
  async function planCheck(items, deps) {
169056
- const rules = deps.saleRules ?? APPLE_SALE_RULES;
169206
+ const rules = deps.saleRules ?? APPLE_PROVISIONING_RULES;
169057
169207
  if (!rules.pricingPlan || !items.some((item) => item.wix?.entityType === "pricingPlan")) return { ok: true, ids: /* @__PURE__ */ new Set() };
169058
169208
  if (!deps.oneTimePlans) return { ok: false, why: "the site's plans were not read" };
169059
169209
  try {
@@ -169155,7 +169305,7 @@ function providerPlan(provider) {
169155
169305
  detail: "the appleIAP provider is connected through Serve's IAP routes (wix-iap ConnectProviderAccount), and this Serve target has none."
169156
169306
  };
169157
169307
  }
169158
- 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) {
169159
169309
  let catalog3;
169160
169310
  try {
169161
169311
  catalog3 = await api2.listProducts(appId2);
@@ -169187,7 +169337,7 @@ async function mapItems(api2, appId2, items, apply, plans, rules = APPLE_SALE_RU
169187
169337
  }
169188
169338
  return steps;
169189
169339
  }
169190
- function mappingTarget(item, plans, rules = APPLE_SALE_RULES) {
169340
+ function mappingTarget(item, plans, rules = APPLE_PROVISIONING_RULES) {
169191
169341
  const skip = (entity2, detail) => ({ skip: { entity: entity2, appProductId: null, storeProductId: item.productId, state: "skipped", code: "mapping_unsupported", detail } });
169192
169342
  if (!item.wix || item.unlocks?.length) {
169193
169343
  return skip(item.productId, "a consumable tier unlocks several Wix items, but a purchase pays one order item, so it cannot be mapped");
@@ -169226,7 +169376,7 @@ function decide(catalog3, target) {
169226
169376
  }
169227
169377
  return void 0;
169228
169378
  }
169229
- function mappingWithoutApp(item, planning, plans, rules = APPLE_SALE_RULES) {
169379
+ function mappingWithoutApp(item, planning, plans, rules = APPLE_PROVISIONING_RULES) {
169230
169380
  const target = mappingTarget(item, plans, rules);
169231
169381
  if ("skip" in target) return target.skip;
169232
169382
  return planning ? { ...target, state: "planned", detail: `map ${target.appProductId} \u2192 ${target.storeProductId}` } : { ...target, ...noApp("the app is not registered") };
@@ -169383,8 +169533,8 @@ async function shoot(selected, run2, outDir) {
169383
169533
  function visibleText2(html) {
169384
169534
  return html.replace(/&nbsp;|&#160;|&#xa0;/gi, "\xA0").replace(/&amp;/g, "&");
169385
169535
  }
169386
- function manifestWithScreenshots(text10, shot) {
169387
- const doc = JSON.parse(text10);
169536
+ function manifestWithScreenshots(text11, shot) {
169537
+ const doc = JSON.parse(text11);
169388
169538
  for (const [index, path2] of shot) doc.items[index].reviewScreenshot = path2;
169389
169539
  return `${JSON.stringify(doc, null, 2)}
169390
169540
  `;
@@ -169600,10 +169750,10 @@ function makeTransport(fetchImpl, auth, timeoutMs = DEFAULT_TIMEOUT_MS3) {
169600
169750
  body: body === void 0 ? void 0 : JSON.stringify(body),
169601
169751
  signal: AbortSignal.timeout(timeoutMs)
169602
169752
  });
169603
- const text10 = await res.text();
169604
- let parsed = text10;
169753
+ const text11 = await res.text();
169754
+ let parsed = text11;
169605
169755
  try {
169606
- parsed = text10 ? JSON.parse(text10) : null;
169756
+ parsed = text11 ? JSON.parse(text11) : null;
169607
169757
  } catch {
169608
169758
  }
169609
169759
  if (!res.ok) throw new WixApiError2(res.status, method, path2, parsed);
@@ -169741,9 +169891,9 @@ function manifestDirOf(manifestPath) {
169741
169891
  return dirname46(resolve70(manifestPath));
169742
169892
  }
169743
169893
  function readPlan(deps, path2) {
169744
- const text10 = readInput(deps, path2, "plan");
169894
+ const text11 = readInput(deps, path2, "plan");
169745
169895
  try {
169746
- return verifyPlan2(JSON.parse(text10));
169896
+ return verifyPlan2(JSON.parse(text11));
169747
169897
  } catch (e2) {
169748
169898
  if (e2 instanceof SyntaxError) throw new Error(`${path2} is not valid JSON: ${e2.message}`);
169749
169899
  throw e2;
@@ -169754,10 +169904,10 @@ function writeJson(deps, out2, path2, value) {
169754
169904
  `);
169755
169905
  }
169756
169906
  function writePlan(deps, out2, path2, plan) {
169757
- const text10 = `${JSON.stringify(plan, null, 2)}
169907
+ const text11 = `${JSON.stringify(plan, null, 2)}
169758
169908
  `;
169759
- if (out2.carriesSecret(text10)) throw new Error("refusing to write a plan that contains this run's App Store Connect credentials");
169760
- 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);
169761
169911
  }
169762
169912
  function catalogRoutePrefix(flags, deps) {
169763
169913
  if (flags["catalog-route"] !== void 0 && !textFlag(flags, "catalog-route")) throw new IapCatalogError("catalog_route_unavailable", "--catalog-route needs an explicit gateway path");
@@ -170242,7 +170392,7 @@ async function screenshotsCommand(flags, deps, out2) {
170242
170392
  appleLocked: (item) => facts.get(item.productId)?.locked,
170243
170393
  appleRead: textFlag(flags, "profile") !== void 0,
170244
170394
  writeBytes: deps.writeBytes ?? writeBinaryFile,
170245
- writeText: (path2, text10) => deps.writeFileAtomic(path2, text10),
170395
+ writeText: (path2, text11) => deps.writeFileAtomic(path2, text11),
170246
170396
  ...only ? { only: new Set(only.split(",").map((id) => id.trim()).filter(Boolean)) } : {},
170247
170397
  ...outDir ? { outDir: resolve70(outDir) } : {},
170248
170398
  force: flags.force === true,
@@ -170396,8 +170546,8 @@ var init_store_iap = __esm({
170396
170546
  protectKey(key3) {
170397
170547
  this.secrets.push(key3.privateKey, key3.keyId);
170398
170548
  }
170399
- line(text10 = "") {
170400
- this.io.log(this.scrub(text10));
170549
+ line(text11 = "") {
170550
+ this.io.log(this.scrub(text11));
170401
170551
  }
170402
170552
  print(value) {
170403
170553
  this.io.log(this.serialize(value));
@@ -170410,11 +170560,11 @@ var init_store_iap = __esm({
170410
170560
  return JSON.stringify(scrubDeep(value, (t2) => this.scrub(t2)), null, 2);
170411
170561
  }
170412
170562
  /** This run's own key material, raw or JSON-escaped, anywhere in `text`. */
170413
- carriesSecret(text10) {
170414
- 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))));
170415
170565
  }
170416
- scrub(text10) {
170417
- let out2 = text10;
170566
+ scrub(text11) {
170567
+ let out2 = text11;
170418
170568
  for (const secret of this.secrets) if (secret) out2 = out2.split(secret).join("[redacted]");
170419
170569
  return scrubString(out2);
170420
170570
  }
@@ -171768,12 +171918,12 @@ async function runRemoteSecretsCommand(operation, flags, io2, options) {
171768
171918
  body = JSON.stringify({ value });
171769
171919
  }
171770
171920
  const response = await (options.fetchImpl ?? fetch)(url, { method: operation === "list" ? "GET" : operation === "set" ? "PUT" : "POST", headers: headers2, body });
171771
- const text10 = await response.text();
171921
+ const text11 = await response.text();
171772
171922
  let output;
171773
171923
  try {
171774
- output = JSON.parse(text10);
171924
+ output = JSON.parse(text11);
171775
171925
  } catch {
171776
- output = text10;
171926
+ output = text11;
171777
171927
  }
171778
171928
  if (!response.ok) throw new Error(typeof output === "string" ? output : JSON.stringify(output));
171779
171929
  io2.log(JSON.stringify(output));
@@ -171831,9 +171981,9 @@ function headersFor(options) {
171831
171981
  ...options.previewTag ? { "x-wix-route-serve": options.previewTag } : {}
171832
171982
  };
171833
171983
  }
171834
- function objectFrom(text10) {
171984
+ function objectFrom(text11) {
171835
171985
  try {
171836
- const value = text10 ? JSON.parse(text10) : null;
171986
+ const value = text11 ? JSON.parse(text11) : null;
171837
171987
  return value && typeof value === "object" && !Array.isArray(value) ? value : null;
171838
171988
  } catch {
171839
171989
  return null;
@@ -172071,12 +172221,12 @@ async function runNotifyPing(flags, io2, deps = {}) {
172071
172221
  const flagError = flagRefusal(flags);
172072
172222
  if (flagError) return refuse6(io2, flagError);
172073
172223
  const allMembers = flags["all-members"] === true;
172074
- 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.");
172075
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.");
172076
- const input = mergePushInputs(pushInputsFromContent(resolve72(text9(flags.content) ?? process.cwd())), flags);
172077
- 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]))];
172078
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 });
172079
- const requestId2 = text9(flags["request-id"]) ?? (deps.newRequestId ?? randomUUID10)();
172229
+ const requestId2 = text10(flags["request-id"]) ?? (deps.newRequestId ?? randomUUID10)();
172080
172230
  if (!UUID_RE.test(requestId2)) return refuse6(io2, "invalid_request_id", "Reuse the requestId a previous send printed.");
172081
172231
  const owner = await hostedOwnerSession(flags, deps);
172082
172232
  if (!owner.ok) return refuse6(io2, owner.error, owner.hint, owner.exit);
@@ -172093,10 +172243,10 @@ async function runNotifyPing(flags, io2, deps = {}) {
172093
172243
  const body = {
172094
172244
  app: ownership.slug,
172095
172245
  site: input.site,
172096
- memberEmail: text9(flags["member-email"]),
172097
- title: text9(flags.title),
172098
- ...text9(flags.body) ? { body: text9(flags.body) } : {},
172099
- 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),
172100
172250
  requestId: requestId2,
172101
172251
  ...flags["dry-run"] === true ? { dryRun: true } : {}
172102
172252
  };
@@ -172136,7 +172286,7 @@ async function runAllMembers(args) {
172136
172286
  const code = error instanceof PushSendError ? error.code : error instanceof Error && ROSTER_CODES.has(error.message) ? error.message : "member_lookup_unavailable";
172137
172287
  return refuse6(io2, code, void 0, 1);
172138
172288
  }
172139
- 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) };
172140
172290
  const send2 = (recipient, memberRequestId, dryRun = false) => pushSendRequest({
172141
172291
  target: session.target,
172142
172292
  wixToken: session.wixToken,
@@ -172219,7 +172369,7 @@ function summary(result, sent) {
172219
172369
  }
172220
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.`;
172221
172371
  }
172222
- 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;
172223
172373
  var init_notify_ping = __esm({
172224
172374
  "src/notify-ping.ts"() {
172225
172375
  init_push_send();
@@ -172247,7 +172397,7 @@ var init_notify_ping = __esm({
172247
172397
  site_token_invalid: "Run wix login as the site owner; the site token must belong to the app owner's account.",
172248
172398
  ping_permission_denied: "Himi Serve is not permitted to send through Ping; this is a platform issue, not your setup."
172249
172399
  };
172250
- text9 = (v2) => typeof v2 === "string" && v2.length > 0 ? v2 : void 0;
172400
+ text10 = (v2) => typeof v2 === "string" && v2.length > 0 ? v2 : void 0;
172251
172401
  }
172252
172402
  });
172253
172403
 
@@ -173372,14 +173522,14 @@ async function callJson(t2, appId2, method, path2, what, body) {
173372
173522
  ...body !== void 0 ? { body: JSON.stringify(body) } : {}
173373
173523
  });
173374
173524
  if (!res.ok) {
173375
- const text11 = await res.text().catch(() => "");
173376
- 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);
173377
173527
  }
173378
- const text10 = await res.text();
173528
+ const text11 = await res.text();
173379
173529
  try {
173380
- return JSON.parse(text10);
173530
+ return JSON.parse(text11);
173381
173531
  } catch {
173382
- 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);
173383
173533
  }
173384
173534
  }
173385
173535
  function requestFailure(e2) {
@@ -173647,16 +173797,16 @@ var init_seed = __esm({
173647
173797
  });
173648
173798
 
173649
173799
  // src/base44-analyze/project.ts
173650
- function parseJsonc(text10) {
173800
+ function parseJsonc(text11) {
173651
173801
  let out2 = "";
173652
173802
  let i2 = 0;
173653
173803
  let inStr = false;
173654
- while (i2 < text10.length) {
173655
- const c2 = text10[i2];
173804
+ while (i2 < text11.length) {
173805
+ const c2 = text11[i2];
173656
173806
  if (inStr) {
173657
173807
  out2 += c2;
173658
173808
  if (c2 === "\\") {
173659
- out2 += text10[i2 + 1] ?? "";
173809
+ out2 += text11[i2 + 1] ?? "";
173660
173810
  i2 += 2;
173661
173811
  continue;
173662
173812
  }
@@ -173668,11 +173818,11 @@ function parseJsonc(text10) {
173668
173818
  inStr = true;
173669
173819
  out2 += c2;
173670
173820
  i2++;
173671
- } else if (c2 === "/" && text10[i2 + 1] === "/") {
173672
- while (i2 < text10.length && text10[i2] !== "\n") i2++;
173673
- } 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] === "*") {
173674
173824
  i2 += 2;
173675
- while (i2 < text10.length && !(text10[i2] === "*" && text10[i2 + 1] === "/")) i2++;
173825
+ while (i2 < text11.length && !(text11[i2] === "*" && text11[i2 + 1] === "/")) i2++;
173676
173826
  i2 += 2;
173677
173827
  } else {
173678
173828
  out2 += c2;
@@ -173681,32 +173831,32 @@ function parseJsonc(text10) {
173681
173831
  }
173682
173832
  return JSON.parse(dropTrailingCommas(out2));
173683
173833
  }
173684
- function dropTrailingCommas(text10) {
173834
+ function dropTrailingCommas(text11) {
173685
173835
  let out2 = "";
173686
173836
  let inStr = false;
173687
- for (let i2 = 0; i2 < text10.length; i2++) {
173688
- const c2 = text10[i2];
173837
+ for (let i2 = 0; i2 < text11.length; i2++) {
173838
+ const c2 = text11[i2];
173689
173839
  if (inStr) {
173690
173840
  out2 += c2;
173691
- if (c2 === "\\") out2 += text10[++i2] ?? "";
173841
+ if (c2 === "\\") out2 += text11[++i2] ?? "";
173692
173842
  else if (c2 === '"') inStr = false;
173693
173843
  continue;
173694
173844
  }
173695
173845
  if (c2 === '"') inStr = true;
173696
173846
  if (c2 === ",") {
173697
173847
  let j2 = i2 + 1;
173698
- while (j2 < text10.length && /\s/.test(text10[j2])) j2++;
173699
- if (text10[j2] === "}" || text10[j2] === "]") continue;
173848
+ while (j2 < text11.length && /\s/.test(text11[j2])) j2++;
173849
+ if (text11[j2] === "}" || text11[j2] === "]") continue;
173700
173850
  }
173701
173851
  out2 += c2;
173702
173852
  }
173703
173853
  return out2;
173704
173854
  }
173705
173855
  function readJson9(files, path2) {
173706
- const text10 = files.get(path2);
173707
- if (text10 === void 0) return void 0;
173856
+ const text11 = files.get(path2);
173857
+ if (text11 === void 0) return void 0;
173708
173858
  try {
173709
- const v2 = parseJsonc(text10);
173859
+ const v2 = parseJsonc(text11);
173710
173860
  return v2 && typeof v2 === "object" && !Array.isArray(v2) ? v2 : void 0;
173711
173861
  } catch {
173712
173862
  return void 0;
@@ -174236,11 +174386,11 @@ async function readEntitySnapshot(appId2, deps) {
174236
174386
  const { entries, skipped } = collectAppSource(dl2.dir);
174237
174387
  const files = new Map(entries.map((e2) => [e2.path, e2.bytes.toString("utf8")]));
174238
174388
  for (const cfgPath of ["base44/config.jsonc", "base44/config.json"]) {
174239
- const text10 = files.get(cfgPath);
174240
- if (text10 === void 0) continue;
174389
+ const text11 = files.get(cfgPath);
174390
+ if (text11 === void 0) continue;
174241
174391
  let cfg;
174242
174392
  try {
174243
- cfg = parseJsonc(text10);
174393
+ cfg = parseJsonc(text11);
174244
174394
  } catch (e2) {
174245
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`);
174246
174396
  }
@@ -174253,11 +174403,11 @@ async function readEntitySnapshot(appId2, deps) {
174253
174403
  const isEntityFile = (p2) => entityDirs.some((d2) => p2.startsWith(d2) && !p2.slice(d2.length).includes("/") && JSON_FILE2.test(p2));
174254
174404
  const dropped = skipped.map((p2) => p2.split(/[\\/]/).join("/")).filter((p2) => entityDirs.some((d2) => p2.startsWith(d2) || d2.startsWith(`${p2}/`)));
174255
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`);
174256
- for (const [path2, text10] of files) {
174406
+ for (const [path2, text11] of files) {
174257
174407
  if (!isEntityFile(path2)) continue;
174258
174408
  let v2;
174259
174409
  try {
174260
- v2 = parseJsonc(text10);
174410
+ v2 = parseJsonc(text11);
174261
174411
  } catch (e2) {
174262
174412
  throw new Error(`entity file ${path2} does not parse (${e2.message}) \u2014 a sync without it would delete that entity`);
174263
174413
  }
@@ -174450,16 +174600,16 @@ function isPrivateV4([a2, b2, c2]) {
174450
174600
  return a2 >= 224;
174451
174601
  }
174452
174602
  function v6Groups(host) {
174453
- let text10 = host;
174454
- 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);
174455
174605
  if (dotted) {
174456
174606
  const octets = ipv4Octets(dotted[1]);
174457
174607
  if (!octets) return null;
174458
174608
  const hi2 = (octets[0] << 8 | octets[1]).toString(16);
174459
174609
  const lo2 = (octets[2] << 8 | octets[3]).toString(16);
174460
- text10 = `${text10.slice(0, dotted.index)}:${hi2}:${lo2}`;
174610
+ text11 = `${text11.slice(0, dotted.index)}:${hi2}:${lo2}`;
174461
174611
  }
174462
- const halves = text10.split("::");
174612
+ const halves = text11.split("::");
174463
174613
  if (halves.length > 2) return null;
174464
174614
  const parts = (part3) => part3 ? part3.split(":") : [];
174465
174615
  const head = parts(halves[0]);
@@ -174739,28 +174889,28 @@ var init_net_guard = __esm({
174739
174889
  });
174740
174890
 
174741
174891
  // src/site-analyze/copy-clean.ts
174742
- function isTemplatePlaceholder(text10) {
174743
- return PLACEHOLDER_RE.test(text10);
174892
+ function isTemplatePlaceholder(text11) {
174893
+ return PLACEHOLDER_RE.test(text11);
174744
174894
  }
174745
174895
  function cleanText(raw, cap) {
174746
174896
  const s2 = String(raw ?? "").replace(/[\u0000-\u001F\u007F]/g, " ").replace(/\s+/g, " ").trim();
174747
174897
  return s2.length > cap ? `${s2.slice(0, cap - 1).trimEnd()}\u2026` : s2;
174748
174898
  }
174749
- function stripPii(text10) {
174750
- 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) => {
174751
174901
  const digits2 = (m2.match(ANY_DIGIT_RE) ?? []).length;
174752
174902
  return digits2 >= PHONE_MIN_DIGITS && PHONE_DIGIT_RUN_RE.test(m2) ? "" : m2;
174753
174903
  }).replace(/\s+/g, " ").trim();
174754
174904
  }
174755
- function isBoilerplate(text10) {
174756
- return BOILERPLATE_RE.test(text10) || PLACEHOLDER_RE.test(text10);
174905
+ function isBoilerplate(text11) {
174906
+ return BOILERPLATE_RE.test(text11) || PLACEHOLDER_RE.test(text11);
174757
174907
  }
174758
174908
  function copyOrDrop(raw, cap) {
174759
- const text10 = stripPii(cleanText(raw, cap));
174760
- if (text10.length < 2) return "";
174761
- if (isBoilerplate(text10)) return "";
174762
- if (!/[A-Za-zͰ-῿぀-힯]/.test(text10)) return "";
174763
- 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;
174764
174914
  }
174765
174915
  function dedupe2(values, cap) {
174766
174916
  const out2 = [];
@@ -174856,8 +175006,8 @@ function parsePublishedHtml(html) {
174856
175006
  const rawHeadings = [];
174857
175007
  HEADING_RE.lastIndex = 0;
174858
175008
  while (m2 = HEADING_RE.exec(html)) {
174859
- const text10 = copyOrDrop(textFromHtml(m2[1] ?? ""), 120);
174860
- if (text10) rawHeadings.push(text10);
175009
+ const text11 = copyOrDrop(textFromHtml(m2[1] ?? ""), 120);
175010
+ if (text11) rawHeadings.push(text11);
174861
175011
  if (rawHeadings.length >= 40) break;
174862
175012
  }
174863
175013
  const headings = dedupe2(rawHeadings, 20);
@@ -174949,14 +175099,14 @@ async function readPublishedHtml(fetchImpl, siteUrl, opts) {
174949
175099
  const chunk = await reader.read();
174950
175100
  if (chunk.done) break;
174951
175101
  bytes2 += chunk.value.byteLength;
174952
- const text10 = decoder.decode(chunk.value, { stream: true });
174953
- html += text10;
174954
- 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) {
174955
175105
  await reader.cancel().catch(() => {
174956
175106
  });
174957
175107
  break;
174958
175108
  }
174959
- overlap = (overlap + text10).slice(-80);
175109
+ overlap = (overlap + text11).slice(-80);
174960
175110
  }
174961
175111
  } catch (e2) {
174962
175112
  if (!opts.signal?.aborted) throw e2;
@@ -175181,9 +175331,9 @@ var init_permissions = __esm({
175181
175331
  function genericDescription(it2) {
175182
175332
  for (const field of DESCRIPTION_FIELDS) {
175183
175333
  const raw = it2[field];
175184
- const text10 = typeof raw === "string" ? raw : str8(raw?.text);
175185
- if (!text10) continue;
175186
- 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, " ");
175187
175337
  if (plain2.trim()) return plain2;
175188
175338
  }
175189
175339
  return void 0;
@@ -175664,8 +175814,8 @@ function cmsStatusNote(taxonomy) {
175664
175814
  function yn2(v2) {
175665
175815
  return v2 == null || v2 === "" ? "\u2014" : String(v2);
175666
175816
  }
175667
- function isAuthPhrase(text10) {
175668
- const t2 = text10.trim();
175817
+ function isAuthPhrase(text11) {
175818
+ const t2 = text11.trim();
175669
175819
  return AUTH_ONLY_ASCII.test(t2) || LOGIN_HE.includes(t2);
175670
175820
  }
175671
175821
  function looksGated(page) {
@@ -176464,12 +176614,12 @@ function mergeWst(pages2) {
176464
176614
  return acc;
176465
176615
  }
176466
176616
  function fontSlug(value) {
176467
- let text10 = value;
176617
+ let text11 = value;
176468
176618
  try {
176469
- text10 = decodeURIComponent(value);
176619
+ text11 = decodeURIComponent(value);
176470
176620
  } catch {
176471
176621
  }
176472
- return text10.toLowerCase().replace(/[^a-z0-9]+/g, "");
176622
+ return text11.toLowerCase().replace(/[^a-z0-9]+/g, "");
176473
176623
  }
176474
176624
  function fontUrlSlug(url) {
176475
176625
  const last = url.split("?")[0].split("#")[0].split("/").pop() ?? "";
@@ -176557,9 +176707,9 @@ function attachVeloSources(book, sources, put) {
176557
176707
  if (isSecretVeloPath(f2.path)) continue;
176558
176708
  const rel = veloArtifactRelPath(f2.path);
176559
176709
  if (!rel) continue;
176560
- const text10 = byPath.get(f2.path) ?? f2.excerpt;
176561
- if (!text10) continue;
176562
- put(rel, text10);
176710
+ const text11 = byPath.get(f2.path) ?? f2.excerpt;
176711
+ if (!text11) continue;
176712
+ put(rel, text11);
176563
176713
  f2.localPath = rel;
176564
176714
  }
176565
176715
  }
@@ -176950,7 +177100,7 @@ function appIdFromUrl(raw) {
176950
177100
  return void 0;
176951
177101
  }
176952
177102
  }
176953
- function appIdFromText(text10) {
177103
+ function appIdFromText(text11) {
176954
177104
  const shapes = [
176955
177105
  // The published shell's own badge tag: `<script data-app-id="<id>" src="/static/js/badge.js">`.
176956
177106
  /\bdata-app-id\s*=\s*["']([a-f0-9]{24})["']/,
@@ -176961,7 +177111,7 @@ function appIdFromText(text10) {
176961
177111
  /\/apps\/([a-f0-9]{24})\b/
176962
177112
  ];
176963
177113
  for (const re2 of shapes) {
176964
- const m2 = re2.exec(text10);
177114
+ const m2 = re2.exec(text11);
176965
177115
  if (m2) return m2[1];
176966
177116
  }
176967
177117
  return void 0;
@@ -180409,8 +180559,8 @@ function copyFromEval(evaled) {
180409
180559
  evaled.meta?.ogTitle,
180410
180560
  evaled.meta?.ogDescription
180411
180561
  ].map((raw) => {
180412
- const text10 = cleanText(raw, 400);
180413
- return text10 && isTemplatePlaceholder(text10) ? stripPii(cleanText(text10, 90)) : "";
180562
+ const text11 = cleanText(raw, 400);
180563
+ return text11 && isTemplatePlaceholder(text11) ? stripPii(cleanText(text11, 90)) : "";
180414
180564
  }),
180415
180565
  8
180416
180566
  );
@@ -181512,27 +181662,27 @@ var init_collect = __esm({
181512
181662
 
181513
181663
  // src/one-app/navigation.ts
181514
181664
  function sourceNavigationKind(raw) {
181515
- const navigation = object7(raw.navigation);
181516
- 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";
181517
181667
  const entries = array4(navigation.bottomTabs);
181518
181668
  if (entries.length > 1) return "bottom-tabs";
181519
- const screens = object7(raw.screens);
181520
- const screenId = string5(object7(entries[0]).screenId);
181521
- const screen = screenId && Object.hasOwn(screens, screenId) ? object7(screens[screenId]) : {};
181522
- 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";
181523
181673
  }
181524
181674
  function planNavigation(raw, policy = "bottom-tabs") {
181525
- const navigation = object7(raw.navigation);
181675
+ const navigation = object8(raw.navigation);
181526
181676
  const entries = array4(navigation.bottomTabs);
181527
- const screens = object7(raw.screens);
181528
- const layouts = object7(raw.layoutItems);
181677
+ const screens = object8(raw.screens);
181678
+ const layouts = object8(raw.layoutItems);
181529
181679
  const kind = sourceNavigationKind(raw);
181530
181680
  const warnings = [];
181531
- const firstEntry = object7(entries[0]);
181681
+ const firstEntry = object8(entries[0]);
181532
181682
  const rootScreenId = string5(firstEntry.screenId) ?? null;
181533
- const rootScreen = rootScreenId && Object.hasOwn(screens, rootScreenId) ? object7(screens[rootScreenId]) : {};
181534
- const rootLayout = object7(rootScreen.layout);
181535
- 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);
181536
181686
  const appInstance = string5(raw.appInstance) ?? null;
181537
181687
  const source = {
181538
181688
  kind,
@@ -181544,8 +181694,8 @@ function planNavigation(raw, policy = "bottom-tabs") {
181544
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.";
181545
181695
  if (kind === "bottom-tabs") {
181546
181696
  entries.forEach((value, index) => {
181547
- const id = string5(object7(value).screenId);
181548
- 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") {
181549
181699
  warnings.push({ code: "nested_top_tabs", pointer: `/screens/${part2(id)}/layout/type`, reference: `/navigation/bottomTabs/${index}` });
181550
181700
  }
181551
181701
  });
@@ -181556,14 +181706,14 @@ function planNavigation(raw, policy = "bottom-tabs") {
181556
181706
  const tabs = [];
181557
181707
  const hiddenPages = [];
181558
181708
  array4(rootLayout.items).forEach((value, index) => {
181559
- const layoutItemId = string5(object7(value).layoutItemId);
181709
+ const layoutItemId = string5(object8(value).layoutItemId);
181560
181710
  const itemPointer = `${pointer}/${index}`;
181561
181711
  if (!layoutItemId || !Object.hasOwn(layouts, layoutItemId)) {
181562
181712
  warnings.push({ code: "missing_reference", pointer: itemPointer, ...layoutItemId ? { reference: layoutItemId } : {} });
181563
181713
  return;
181564
181714
  }
181565
- const layout = object7(layouts[layoutItemId]);
181566
- if (object7(layout.settings).hideFromNavigation === true) {
181715
+ const layout = object8(layouts[layoutItemId]);
181716
+ if (object8(layout.settings).hideFromNavigation === true) {
181567
181717
  hiddenPages.push({ layoutItemId, pointer: itemPointer });
181568
181718
  return;
181569
181719
  }
@@ -181608,10 +181758,10 @@ function planNavigation(raw, policy = "bottom-tabs") {
181608
181758
  next
181609
181759
  };
181610
181760
  }
181611
- var object7, array4, string5, part2, TOP_TABS_POLICIES, MAX_BAR_TABS;
181761
+ var object8, array4, string5, part2, TOP_TABS_POLICIES, MAX_BAR_TABS;
181612
181762
  var init_navigation = __esm({
181613
181763
  "src/one-app/navigation.ts"() {
181614
- object7 = (value) => value !== null && typeof value === "object" && !Array.isArray(value) ? value : {};
181764
+ object8 = (value) => value !== null && typeof value === "object" && !Array.isArray(value) ? value : {};
181615
181765
  array4 = (value) => Array.isArray(value) ? value : [];
181616
181766
  string5 = (value) => typeof value === "string" && value ? value : void 0;
181617
181767
  part2 = (value) => value.replaceAll("~", "~0").replaceAll("/", "~1");
@@ -182414,10 +182564,10 @@ async function mintVisitorToken(fetchImpl, clientId) {
182414
182564
  body: JSON.stringify({ clientId, grantType: "anonymous" }),
182415
182565
  signal: AbortSignal.timeout(8e3)
182416
182566
  });
182417
- const text10 = await res.text();
182418
- let parsed = text10;
182567
+ const text11 = await res.text();
182568
+ let parsed = text11;
182419
182569
  try {
182420
- parsed = text10 ? JSON.parse(text10) : null;
182570
+ parsed = text11 ? JSON.parse(text11) : null;
182421
182571
  } catch {
182422
182572
  }
182423
182573
  if (!res.ok) throw new WixApiError2(res.status, "POST", "/oauth2/token", parsed);
@@ -183055,8 +183205,8 @@ var init_copy = __esm({
183055
183205
  function textFields(look) {
183056
183206
  if (look.unavailable) return [];
183057
183207
  const out2 = [];
183058
- const add = (text10, where, narrative = false) => {
183059
- 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 });
183060
183210
  };
183061
183211
  for (const label3 of look.navLabels) add(label3, "nav");
183062
183212
  for (const p2 of look.pages) {
@@ -183745,8 +183895,8 @@ async function analyzeSite(input, ports) {
183745
183895
  if (locale) plan.provisioning.locale = locale;
183746
183896
  const velo = buildVeloChapter({ look, owner: ownerVelo });
183747
183897
  const veloFiles = ownerVelo.files.flatMap((f2) => {
183748
- const text10 = f2.content ?? f2.excerpt;
183749
- return text10 ? [{ path: f2.path, text: text10 }] : [];
183898
+ const text11 = f2.content ?? f2.excerpt;
183899
+ return text11 ? [{ path: f2.path, text: text11 }] : [];
183750
183900
  }).slice(0, 80);
183751
183901
  const permissions = buildPermissionsChapter({
183752
183902
  cms,
@@ -185052,13 +185202,13 @@ async function veloCall(fetchImpl, method, url, opts = {}) {
185052
185202
  body: opts.body === void 0 ? void 0 : JSON.stringify(opts.body),
185053
185203
  signal: AbortSignal.timeout(opts.timeoutMs ?? 3e4)
185054
185204
  });
185055
- const text10 = await res.text();
185056
- let json8 = text10;
185205
+ const text11 = await res.text();
185206
+ let json8 = text11;
185057
185207
  try {
185058
- json8 = text10 ? JSON.parse(text10) : null;
185208
+ json8 = text11 ? JSON.parse(text11) : null;
185059
185209
  } catch {
185060
185210
  }
185061
- return { status: res.status, json: json8, text: text10 };
185211
+ return { status: res.status, json: json8, text: text11 };
185062
185212
  }
185063
185213
  function snippet2(x2, cap = 180) {
185064
185214
  const s2 = typeof x2 === "string" ? x2 : JSON.stringify(x2) ?? "";
@@ -185615,10 +185765,10 @@ function accountTransport(fetchImpl = fetch, timeoutMs = DEFAULT_TIMEOUT_MS5, sp
185615
185765
  }
185616
185766
  throw new Error(`${method} ${path2} failed: ${err?.message ?? String(e2)}`);
185617
185767
  }
185618
- const text10 = await res.text();
185619
- let parsed = text10;
185768
+ const text11 = await res.text();
185769
+ let parsed = text11;
185620
185770
  try {
185621
- parsed = text10 ? JSON.parse(text10) : null;
185771
+ parsed = text11 ? JSON.parse(text11) : null;
185622
185772
  } catch {
185623
185773
  }
185624
185774
  if (!res.ok) throw new WixApiError(res.status, method, path2, parsed);
@@ -185679,16 +185829,16 @@ async function installVerticals(msid, wanted, token, fetchImpl = fetch, timeoutM
185679
185829
  body: JSON.stringify({ apps: wanted.map((w2) => ({ id: w2.appDefId })) }),
185680
185830
  signal: AbortSignal.timeout(timeoutMs)
185681
185831
  });
185682
- const text10 = await res.text();
185832
+ const text11 = await res.text();
185683
185833
  if (!res.ok) {
185684
185834
  return {
185685
185835
  ...empty2,
185686
- 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)}` }))
185687
185837
  };
185688
185838
  }
185689
185839
  let body = {};
185690
185840
  try {
185691
- body = text10 ? JSON.parse(text10) : {};
185841
+ body = text11 ? JSON.parse(text11) : {};
185692
185842
  } catch {
185693
185843
  }
185694
185844
  const nameOf2 = (appDefId) => wanted.find((w2) => w2.appDefId === appDefId)?.vertical ?? appDefId;
@@ -186294,9 +186444,9 @@ function redactVeloSource(source, knownSecrets = []) {
186294
186444
  const visitLiterals = (node) => {
186295
186445
  if (ts10.isStringLiteral(node) || ts10.isNoSubstitutionTemplateLiteral(node) || ts10.isTemplateExpression(node)) {
186296
186446
  const start = node.getStart(clean2);
186297
- const text10 = source.slice(start, node.end);
186298
- const redacted = redactLiteral(text10, start);
186299
- if (redacted !== text10) {
186447
+ const text11 = source.slice(start, node.end);
186448
+ const redacted = redactLiteral(text11, start);
186449
+ if (redacted !== text11) {
186300
186450
  edits.push({ start, end: node.end, text: redacted });
186301
186451
  return;
186302
186452
  }
@@ -186720,10 +186870,10 @@ var ServeCliClient = class {
186720
186870
  ...carriesCredential ? { redirect: "error" } : {},
186721
186871
  body: opts.rawBody !== void 0 ? new Uint8Array(opts.rawBody) : opts.body !== void 0 ? JSON.stringify(opts.body) : void 0
186722
186872
  });
186723
- const text10 = await res.text();
186873
+ const text11 = await res.text();
186724
186874
  let json8 = null;
186725
186875
  try {
186726
- json8 = text10 ? JSON.parse(text10) : null;
186876
+ json8 = text11 ? JSON.parse(text11) : null;
186727
186877
  } catch {
186728
186878
  json8 = null;
186729
186879
  }
@@ -186731,7 +186881,7 @@ var ServeCliClient = class {
186731
186881
  res.headers.forEach((v2, k2) => {
186732
186882
  h2[k2] = v2;
186733
186883
  });
186734
- 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 };
186735
186885
  }
186736
186886
  // ---- serve (device-facing reads) ----
186737
186887
  health(plane) {
@@ -187518,15 +187668,15 @@ function summarizeLint(app, bres, outcome, strict, extraIssues = []) {
187518
187668
  }
187519
187669
  };
187520
187670
  const record2 = (value) => value && typeof value === "object" && !Array.isArray(value) ? value : {};
187521
- const text10 = (value) => typeof value === "string" && value ? value : void 0;
187671
+ const text11 = (value) => typeof value === "string" && value ? value : void 0;
187522
187672
  const message = (value) => {
187523
187673
  const item = record2(value);
187524
- if (text10(item.message)) return text10(item.message);
187525
- 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);
187526
187676
  if (Array.isArray(item.errors)) {
187527
187677
  const diagnostics = item.errors.map((entry) => {
187528
187678
  const diagnostic = record2(entry);
187529
- return text10(diagnostic.text) ?? text10(diagnostic.message);
187679
+ return text11(diagnostic.text) ?? text11(diagnostic.message);
187530
187680
  }).filter((entry) => !!entry);
187531
187681
  if (diagnostics.length) return diagnostics.join("; ");
187532
187682
  }
@@ -187539,29 +187689,29 @@ function summarizeLint(app, bres, outcome, strict, extraIssues = []) {
187539
187689
  ...issues,
187540
187690
  ...bres.compileErrors.map((value) => ({
187541
187691
  pass: "compile",
187542
- path: text10(record2(value).bundle),
187692
+ path: text11(record2(value).bundle),
187543
187693
  ruleCode: "compile-error",
187544
187694
  severity: "error",
187545
187695
  message: message(value)
187546
187696
  })),
187547
187697
  ...outcome.failedToBuild.map((value) => ({
187548
187698
  pass: "build",
187549
- screen: text10(record2(value).screenId),
187699
+ screen: text11(record2(value).screenId),
187550
187700
  ruleCode: "failed-to-build",
187551
187701
  severity: "error",
187552
187702
  message: message(value)
187553
187703
  })),
187554
187704
  ...outcome.missingBundles.map((value) => ({
187555
187705
  pass: "build",
187556
- screen: text10(record2(value).screen),
187557
- path: text10(record2(value).bundle),
187706
+ screen: text11(record2(value).screen),
187707
+ path: text11(record2(value).bundle),
187558
187708
  ruleCode: "missing-bundle",
187559
187709
  severity: "error",
187560
187710
  message: message(value)
187561
187711
  })),
187562
187712
  ...workerThrows.map((value) => ({
187563
187713
  pass: "worker",
187564
- path: text10(record2(value).bundle),
187714
+ path: text11(record2(value).bundle),
187565
187715
  ruleCode: "worker-threw",
187566
187716
  severity: "error",
187567
187717
  message: message(value.threw)
@@ -187776,14 +187926,14 @@ function contentDir(flags) {
187776
187926
  return resolve32(str3(flags.content) ?? process.cwd());
187777
187927
  }
187778
187928
  function renameRestoredSource(restored, declaredApp, renamed) {
187779
- const text10 = {};
187929
+ const text11 = {};
187780
187930
  for (const entry of restored) {
187781
187931
  const decoded = entry.bytes.toString("utf8");
187782
- 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;
187783
187933
  }
187784
- const sentineled = sentinelizeArchive(text10, declaredApp);
187934
+ const sentineled = sentinelizeArchive(text11, declaredApp);
187785
187935
  for (const entry of restored) {
187786
- if (!(entry.path in text10)) continue;
187936
+ if (!(entry.path in text11)) continue;
187787
187937
  const body = sentineled[entry.path];
187788
187938
  if (body !== void 0) entry.bytes = Buffer.from(substituteIdentity(body, renamed), "utf8");
187789
187939
  }
@@ -190077,8 +190227,8 @@ async function templateCommand(ctx) {
190077
190227
  io2.error(JSON.stringify({ ok: false, error: e2.message }));
190078
190228
  return 2;
190079
190229
  }
190080
- const text10 = str3(flags.text) ?? (pos.slice(2).join(" ") || void 0);
190081
- if (!text10 && !verticals?.length) {
190230
+ const text11 = str3(flags.text) ?? (pos.slice(2).join(" ") || void 0);
190231
+ if (!text11 && !verticals?.length) {
190082
190232
  io2.error(JSON.stringify({
190083
190233
  ok: false,
190084
190234
  error: 'nothing to match \u2014 pass a business description (--text "\u2026"), --verticals stores,bookings, or --book <site analyze dir>',
@@ -190099,7 +190249,7 @@ async function templateCommand(ctx) {
190099
190249
  note = `remote catalog unreachable (${e2.message}); ranked the embedded templates only`;
190100
190250
  }
190101
190251
  }
190102
- const res = recommendTemplates2({ catalog: catalog3, verticals, text: text10 });
190252
+ const res = recommendTemplates2({ catalog: catalog3, verticals, text: text11 });
190103
190253
  print({
190104
190254
  ok: true,
190105
190255
  ...verticals?.length ? { verticals } : {},
@@ -190720,9 +190870,9 @@ function dpxSessionPresent(path2 = dpxSessionTokenPath()) {
190720
190870
  return false;
190721
190871
  }
190722
190872
  }
190723
- function isPortInUseError(text10) {
190724
- if (!text10) return false;
190725
- 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);
190726
190876
  }
190727
190877
  function parseDpxAuthStatusIdentity(stdout) {
190728
190878
  if (!stdout) return void 0;
@@ -190874,23 +191024,23 @@ async function functionsCommand(ctx) {
190874
191024
  const app = str3(flags.app) ?? loaded.app;
190875
191025
  const invoked2 = await invokeRemoteFunction2({ baseUrl: target.baseUrl, app, definition, body: input, params, releaseId: remoteRelease, previewToken: str3(flags["preview-token"]), boCookie: boCookie() });
190876
191026
  const response = invoked2.response;
190877
- const text11 = await response.text();
191027
+ const text12 = await response.text();
190878
191028
  let body2;
190879
191029
  try {
190880
- body2 = JSON.parse(text11);
191030
+ body2 = JSON.parse(text12);
190881
191031
  } catch {
190882
- body2 = text11;
191032
+ body2 = text12;
190883
191033
  }
190884
191034
  print({ ok: response.ok, app, releaseId: remoteRelease ?? null, url: invoked2.url, status: response.status, body: body2 });
190885
191035
  return response.ok ? 0 : 1;
190886
191036
  }
190887
191037
  const invoked = await invokeLocalFunction2(loaded, name, input, params);
190888
- const text10 = await invoked.response.text();
191038
+ const text11 = await invoked.response.text();
190889
191039
  let body;
190890
191040
  try {
190891
- body = JSON.parse(text10);
191041
+ body = JSON.parse(text11);
190892
191042
  } catch {
190893
- body = text10;
191043
+ body = text11;
190894
191044
  }
190895
191045
  print({ ok: invoked.response.ok, app: loaded.app, releaseId: invoked.releaseId, status: invoked.response.status, body });
190896
191046
  return invoked.response.ok ? 0 : 1;
@@ -191172,18 +191322,18 @@ function walkSource(dir, root = dir) {
191172
191322
  const ext = entry.name.slice(entry.name.lastIndexOf("."));
191173
191323
  if (!SOURCE_EXTENSIONS.has(ext)) continue;
191174
191324
  const absolute = join76(dir, entry.name);
191175
- const text10 = readText2(absolute);
191176
- 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 });
191177
191327
  }
191178
191328
  return found;
191179
191329
  }
191180
- function blankMatrixRows(text10) {
191181
- const acceptance = mobileUxSection(mobileUxDocumentBody(text10), "Implementation acceptance") ?? "";
191330
+ function blankMatrixRows(text11) {
191331
+ const acceptance = mobileUxSection(mobileUxDocumentBody(text11), "Implementation acceptance") ?? "";
191182
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);
191183
191333
  }
191184
191334
  function usesAppNetwork(source) {
191185
- const code = (text10) => text10.replace(/\/\*[\s\S]*?\*\//g, "").replace(/\/\/[^\n]*/g, "");
191186
- 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)));
191187
191337
  }
191188
191338
  function auditUx(content, strict = false) {
191189
191339
  const dir = resolve60(content);
@@ -193412,8 +193562,8 @@ import { resolve as resolve67 } from "node:path";
193412
193562
 
193413
193563
  // ../../core/admin-web/src/utils/qr-terminal.ts
193414
193564
  init_qr();
193415
- function qrTerminal(text10, opts = {}) {
193416
- const { modules, size } = encodeQr(text10);
193565
+ function qrTerminal(text11, opts = {}) {
193566
+ const { modules, size } = encodeQr(text11);
193417
193567
  const quietZone = opts.quietZone ?? 4;
193418
193568
  const dim = size + quietZone * 2;
193419
193569
  const dark = (x2, y2) => x2 >= quietZone && x2 < quietZone + size && y2 >= quietZone && y2 < quietZone + size ? modules[y2 - quietZone][x2 - quietZone] : false;
@@ -198066,14 +198216,14 @@ function createTrimValidator(deps = {}, spawnFn = spawn7) {
198066
198216
  const parsed = JSON.parse(report3);
198067
198217
  counts = parsed.counts;
198068
198218
  if (Array.isArray(parsed.findings)) {
198069
- const text10 = (v2) => typeof v2 === "string" && v2 ? v2 : void 0;
198219
+ const text11 = (v2) => typeof v2 === "string" && v2 ? v2 : void 0;
198070
198220
  errors = parsed.findings.filter((f2) => f2 && f2.severity === "error" && typeof f2.id === "string").map((f2) => ({
198071
198221
  id: f2.id,
198072
- message: text10(f2.message) ?? "",
198073
- ...text10(f2.pass) ? { pass: text10(f2.pass) } : {},
198074
- ...text10(f2.screen) ? { screen: text10(f2.screen) } : {},
198075
- ...text10(f2.path) ? { path: text10(f2.path) } : {},
198076
- ...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) } : {}
198077
198227
  }));
198078
198228
  }
198079
198229
  } catch {