@bridge-ds/core 0.19.0 → 0.21.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 (45) hide show
  1. package/LICENSE +17 -0
  2. package/bridge.config.schema.json +5 -0
  3. package/dist/audit/index.js +275 -52
  4. package/dist/audit/index.js.map +1 -1
  5. package/dist/audit/missing-pieces.d.ts +4 -0
  6. package/dist/component-spec.d.ts +13 -0
  7. package/dist/config.d.ts +5 -0
  8. package/dist/exploration-done-github.d.ts +50 -0
  9. package/dist/exploration-resume.d.ts +136 -0
  10. package/dist/explorations-github.d.ts +75 -3
  11. package/dist/explorations.d.ts +137 -8
  12. package/dist/fidelity.d.ts +12 -1
  13. package/dist/figma-fix-loop.d.ts +1 -1
  14. package/dist/figma-fix-run.d.ts +103 -0
  15. package/dist/figma-fixes.d.ts +14 -2
  16. package/dist/gap-case.d.ts +1 -2
  17. package/dist/github-client.d.ts +17 -0
  18. package/dist/index.d.ts +6 -0
  19. package/dist/index.js +2139 -1290
  20. package/dist/index.js.map +1 -1
  21. package/dist/measure-location.d.ts +42 -0
  22. package/dist/measure-workflow.d.ts +48 -0
  23. package/dist/measured-only.d.ts +15 -1
  24. package/dist/node/index.js +15 -12
  25. package/dist/node/index.js.map +1 -1
  26. package/dist/previews-github.d.ts +13 -0
  27. package/dist/previews.d.ts +8 -1
  28. package/dist/{prod-branch-Bdx_2bRQ.js → prod-branch-C7tphFAA.js} +257 -192
  29. package/dist/prod-branch-C7tphFAA.js.map +1 -0
  30. package/dist/prod-branch-github.d.ts +54 -4
  31. package/dist/prod-branch.d.ts +42 -1
  32. package/dist/products.d.ts +17 -0
  33. package/dist/repo-model.d.ts +2 -0
  34. package/dist/{repo-source-m0Tc603o.js → repo-source-CEBBBtm1.js} +2183 -1937
  35. package/dist/repo-source-CEBBBtm1.js.map +1 -0
  36. package/dist/{report-DFPKygfk.js → report-B7wNAnSu.js} +38 -38
  37. package/dist/{report-DFPKygfk.js.map → report-B7wNAnSu.js.map} +1 -1
  38. package/dist/review-gate.d.ts +7 -1
  39. package/dist/suggestion-review.d.ts +43 -2
  40. package/dist/suggestions-github.d.ts +12 -1
  41. package/dist/tier1-publish.d.ts +48 -0
  42. package/dist/try-in-product.d.ts +4 -1
  43. package/package.json +1 -1
  44. package/dist/prod-branch-Bdx_2bRQ.js.map +0 -1
  45. package/dist/repo-source-m0Tc603o.js.map +0 -1
@@ -613,7 +613,7 @@ function previewComment(input) {
613
613
  const sha7 = input.sha.slice(0, 7);
614
614
  const lines = [PREVIEW_COMMENT_MARKER, input.exploration ? "## Try this exploration in your product" : "## Try this DS branch in your product", ""];
615
615
  lines.push(`Snapshot of \`${sha7}\` on \`${input.branch}\`. Install it in a product branch that deploys to staging; production keeps the released version.`, "");
616
- if (input.exploration) lines.push("This is an exploration: it is never merged as is. Use it for a prototype, a user test, a demo or an A/B idea, then promote it to review or close it.", "");
616
+ if (input.exploration) lines.push("This is an exploration: it is never merged as is. Use it for a prototype, a user test, a demo or an A/B idea, then say it is done exploring: developers take it from there, and it stays open so this preview keeps working.", "");
617
617
  if (input.packages.length) {
618
618
  lines.push("```sh", installCommand(input.packages.map((p) => input.exploration ? `${p.name}@${p.url}` : p.url)), "```", "");
619
619
  lines.push("| Package | Install this package only |", "| --- | --- |");
@@ -717,7 +717,7 @@ const STATE_OF = {
717
717
  deployed: "ready",
718
718
  ready: "ready",
719
719
  ignored: "ready",
720
- // Vercel skipped the build (nothing changed for this app): the branch alias serves the last one.
720
+ // Vercel skipped the build: nothing to wait for. BranchPreview.skipped says the branch has no build of its own.
721
721
  pending: "building",
722
722
  queued: "building",
723
723
  in_progress: "building",
@@ -729,13 +729,15 @@ const STATE_OF = {
729
729
  canceled: "failed"
730
730
  };
731
731
  const stateOf = (s) => STATE_OF[(s ?? "").toLowerCase()] ?? "unknown";
732
+ const IGNORED_BUILD = /ignored build step/i;
732
733
  const isInspectorUrl = (u) => /^https:\/\/(?:www\.)?vercel\.com\//i.test(u);
733
734
  function resolveBranchPreviews(apps, ctx, sources = {}) {
734
735
  const seen = /* @__PURE__ */ new Map();
735
736
  const at = (app) => seen.get(app) ?? (seen.set(app, {}), seen.get(app));
736
- const offer = (app, url, urlSource, state, stateRank) => {
737
+ const offer = (app, url, urlSource, state, stateRank, skipped) => {
737
738
  if (!app) return;
738
739
  const s = at(app);
740
+ if (skipped !== void 0 && (s.skipRank === void 0 || stateRank < s.skipRank)) Object.assign(s, { skipped, skipRank: stateRank });
739
741
  if (url && !s.url) Object.assign(s, { url, urlSource });
740
742
  if (state !== "unknown" && (s.stateRank === void 0 || stateRank < s.stateRank)) Object.assign(s, { state, stateRank });
741
743
  };
@@ -746,7 +748,7 @@ function resolveBranchPreviews(apps, ctx, sources = {}) {
746
748
  const project = projectOfLabel(st.context);
747
749
  if (!project) continue;
748
750
  const url = httpsUrl(st.target_url);
749
- offer(appForProject(project, apps), url && !isInspectorUrl(url) ? url : null, "status", stateOf(st.state), 0);
751
+ offer(appForProject(project, apps), url && !isInspectorUrl(url) ? url : null, "status", stateOf(st.state), 0, IGNORED_BUILD.test(st.description ?? ""));
750
752
  }
751
753
  for (const d of sources.deployments ?? []) {
752
754
  const project = projectOfLabel(d.environment);
@@ -758,18 +760,18 @@ function resolveBranchPreviews(apps, ctx, sources = {}) {
758
760
  const state = stateOf(d.state);
759
761
  if (state !== "unknown" && (s.stateRank === void 0 || 1 < s.stateRank)) Object.assign(s, { state, stateRank: 1 });
760
762
  }
761
- for (const p of parseVercelComment(findVercelComment(sources.comments ?? [])?.body) ?? []) offer(appForProject(p.name, apps), p.previewUrl, "vercel-comment", stateOf(p.status), 2);
763
+ for (const p of parseVercelComment(findVercelComment(sources.comments ?? [])?.body) ?? []) offer(appForProject(p.name, apps), p.previewUrl, "vercel-comment", stateOf(p.status), 2, p.status ? p.status.toUpperCase() === "IGNORED" : void 0);
762
764
  const out = [];
763
765
  for (const app of Object.keys(PREVIEW_APP_LABELS)) {
764
766
  if (!apps[app]) continue;
765
767
  const s = seen.get(app) ?? {};
766
768
  const url = s.url ?? previewUrl(apps[app], ctx);
767
769
  const source = s.url ? s.urlSource : url ? "template" : null;
768
- out.push({ app, label: PREVIEW_APP_LABELS[app], url, state: s.state ?? "unknown", source });
770
+ out.push({ app, label: PREVIEW_APP_LABELS[app], url, state: s.state ?? "unknown", source, ...s.skipped ? { skipped: true } : {} });
769
771
  }
770
772
  return out;
771
773
  }
772
- const previewLinksOf = (previews) => previews.filter((p) => !!p.url).map((p) => ({ app: p.app, label: p.label, url: p.url }));
774
+ const previewLinksOf = (previews) => previews.filter((p) => !!p.url && !p.skipped).map((p) => ({ app: p.app, label: p.label, url: p.url }));
773
775
  const previewsSettled = (previews) => previews.every((p) => p.state === "failed" || !!p.url && p.state === "ready");
774
776
  const LOGIN = /^[A-Za-z0-9](?:[A-Za-z0-9]|-(?=[A-Za-z0-9])){0,38}$/;
775
777
  const SLUG = /^[A-Za-z0-9][A-Za-z0-9._-]{0,99}$/;
@@ -1165,6 +1167,27 @@ function productForPlace(products, place) {
1165
1167
  }
1166
1168
  return { product: defaultProduct(products), how: "default" };
1167
1169
  }
1170
+ function productRepoOf(p, designSystemRepo) {
1171
+ const repo = p?.repo?.trim();
1172
+ if (!repo || !REPO.test(repo)) return null;
1173
+ return repo.toLowerCase() === (designSystemRepo ?? "").trim().toLowerCase() ? null : repo;
1174
+ }
1175
+ function productRepos(products, designSystemRepo) {
1176
+ const seen = /* @__PURE__ */ new Set();
1177
+ const out = [];
1178
+ for (const p of products) {
1179
+ const repo = productRepoOf(p, designSystemRepo);
1180
+ if (!repo || seen.has(repo.toLowerCase())) continue;
1181
+ seen.add(repo.toLowerCase());
1182
+ out.push({ product: p, repo });
1183
+ }
1184
+ return out;
1185
+ }
1186
+ function productOfRepo(products, repo, designSystemRepo) {
1187
+ const r = (repo ?? "").trim().toLowerCase();
1188
+ if (!r) return void 0;
1189
+ return productRepos(products, designSystemRepo).find((x) => x.repo.toLowerCase() === r)?.product;
1190
+ }
1168
1191
  const KEY = /^[a-z0-9][a-z0-9-]*$/;
1169
1192
  const REPO = /^[\w.-]+\/[\w.-]+$/;
1170
1193
  const FIELDS = ["key", "name", "repo", "path", "preview", "framework", "default"];
@@ -1352,7 +1375,8 @@ function defineConfig(input) {
1352
1375
  }
1353
1376
  } : {},
1354
1377
  ...g.rights ? { rights: normalizeRights(g.rights) } : {},
1355
- ...g.soloOwnerCanApproveBoth === true ? { soloOwnerCanApproveBoth: true } : {}
1378
+ ...g.soloOwnerCanApproveBoth === true ? { soloOwnerCanApproveBoth: true } : {},
1379
+ ...g.leadsPublishTier1 === false ? { leadsPublishTier1: false } : {}
1356
1380
  },
1357
1381
  products: input.products?.length ? input.products.map((p) => ({ ...p })) : DEFAULT_PRODUCTS.map((p) => ({ ...p })),
1358
1382
  changes: input.changes === "direct" ? "direct" : DEFAULT_CHANGES_MODE,
@@ -1480,6 +1504,7 @@ function loadConfig(source) {
1480
1504
  }
1481
1505
  problems.push(...rightsProblems(gov.rights));
1482
1506
  if (gov.soloOwnerCanApproveBoth !== void 0 && typeof gov.soloOwnerCanApproveBoth !== "boolean") problems.push('"governance.soloOwnerCanApproveBoth" must be true or false');
1507
+ if (gov.leadsPublishTier1 !== void 0 && typeof gov.leadsPublishTier1 !== "boolean") problems.push('"governance.leadsPublishTier1" must be true or false');
1483
1508
  }
1484
1509
  }
1485
1510
  problems.push(...visualImpactProblems(d.visualImpact));
@@ -2691,6 +2716,7 @@ ${body}
2691
2716
 
2692
2717
  ${footer}`;
2693
2718
  }
2719
+ const pieceValueField = (v) => `${v.property ?? v.category}${v.part ? ` (${v.part})` : ""}`;
2694
2720
  const PIECES_MARK = "bridge-pieces";
2695
2721
  const NEEDED_MARK = "bridge-needed-by";
2696
2722
  const SECTION = "### Missing from the library";
@@ -2716,7 +2742,7 @@ function piecesSection(r) {
2716
2742
  const link = (p) => r.links.find((l) => l.piece === p.id);
2717
2743
  const lines = r.pieces.length ? r.pieces.map((p) => {
2718
2744
  const l = link(p);
2719
- return `- **${p.title}**: ${p.summary}${l ? ` ${cap(KIND_WORD[l.kind])}: #${l.number}.` : " No library branch yet."}`;
2745
+ return `- **${p.title}**: ${p.summary}${l ? ` ${cap(KIND_WORD[l.kind])}: ${l.repo ?? ""}#${l.number}.` : " No library branch yet."}`;
2720
2746
  }) : ["- Nothing: every value and component comes from the library."];
2721
2747
  return [SECTION, "", `Checked ${r.checkedAt.slice(0, 10)}${r.headSha ? ` on ${r.headSha.slice(0, 7)}` : ""} by Bridge.`, "", ...lines, "", hiddenJson(PIECES_MARK, r)].join("\n");
2722
2748
  }
@@ -2742,10 +2768,12 @@ function mergePiecesRecord(prev, next) {
2742
2768
  function withLink(r, l) {
2743
2769
  return { ...r, links: [...r.links.filter((x) => x.piece !== l.piece), l] };
2744
2770
  }
2771
+ const prRef = (b) => `${b.repo ? b.repo : ""}#${b.pr}`;
2745
2772
  function neededBySection(n) {
2746
2773
  const who = n.author ? ` for @${n.author}` : "";
2747
- const near = n.nearest ? ` The closest the library has today is ${n.nearest}${n.nearestToken ? ` (\`${n.nearestToken}\`)` : ""}.` : "";
2748
- return [`**Needed by:** [${n.title}](${n.url}) (#${n.pr}) in ${n.productName}${who}.${near}`, "", hiddenJson(NEEDED_MARK, n)].join("\n");
2774
+ const detail = [n.nearestToken ? `\`${n.nearestToken}\`` : "", n.nearestValue ?? ""].filter(Boolean).join(", ");
2775
+ const near = n.nearest ? ` The closest the library has today is ${n.nearest}${detail ? ` (${detail})` : ""}.` : "";
2776
+ return [`**Needed by:** [${n.title}](${n.url}) (${prRef(n)}) in ${n.productName}${who}.${near}`, "", hiddenJson(NEEDED_MARK, n)].join("\n");
2749
2777
  }
2750
2778
  function parseNeededBy(body) {
2751
2779
  const n = readHidden(NEEDED_MARK, body);
@@ -2764,7 +2792,8 @@ function withNeededBy(body, n) {
2764
2792
  ${b}` : ""}`;
2765
2793
  }
2766
2794
  const cap = (s) => s ? s.charAt(0).toUpperCase() + s.slice(1) : s;
2767
- const forLine = (b) => `${b.productName} needs it for "${b.title.replace(/"/g, "'")}" (#${b.pr})`;
2795
+ const withoutNear = (summary) => summary.replace(/\s*(?:It looks a lot like|The closest in the library is) .*?\.(?=\s|$)/, "").trim();
2796
+ const forLine = (b) => `${b.productName} needs it for "${b.title.replace(/"/g, "'")}" (${prRef(b)})`;
2768
2797
  function libraryBranchPlan(piece, branch, opts = {}) {
2769
2798
  const neededBy = {
2770
2799
  pr: branch.pr,
@@ -2776,9 +2805,10 @@ function libraryBranchPlan(piece, branch, opts = {}) {
2776
2805
  ...branch.author ? { author: branch.author } : {},
2777
2806
  piece: piece.id,
2778
2807
  pieceTitle: piece.title,
2779
- ...piece.nearest ? { nearest: piece.nearest.label, nearestToken: piece.nearest.token } : {}
2808
+ ...piece.nearest ? { nearest: piece.nearest.label, nearestToken: piece.nearest.token, nearestValue: piece.nearest.value } : {},
2809
+ ...branch.repo ? { repo: branch.repo } : {}
2780
2810
  };
2781
- const near = piece.nearest ? ` The closest the library has today is ${piece.nearest.label} (${piece.nearest.token}, ${piece.nearest.value}).` : "";
2811
+ const said = `${forLine(branch)}: ${withoutNear(piece.summary)}`;
2782
2812
  if (piece.kind === "token" && piece.token) {
2783
2813
  const t = piece.token;
2784
2814
  const files = t.files.length ? t.files : [void 0];
@@ -2790,34 +2820,39 @@ function libraryBranchPlan(piece, branch, opts = {}) {
2790
2820
  description: `${cap(piece.name)}: ${forLine(branch)}.${files.length > 1 ? " Same value in every theme: review it in each." : ""}`,
2791
2821
  ...file ? { file } : {}
2792
2822
  }));
2793
- return { kind: "token-change", title: `Add ${t.path}`, summary: `${forLine(branch)}: ${piece.summary}${near}`, edits, neededBy };
2823
+ return { kind: "token-change", title: `Add ${t.path}`, summary: said, edits, neededBy };
2794
2824
  }
2795
2825
  if (piece.kind === "variant" && piece.component && opts.mode === "suggest") {
2796
2826
  const request2 = {
2797
2827
  component: piece.component,
2798
2828
  kind: "new-variant",
2799
2829
  title: piece.title,
2800
- summary: `${forLine(branch)}: ${piece.summary}${near}`,
2801
- changes: piece.values.slice(0, 6).map((v) => ({ field: v.property ?? v.category, after: v.value })),
2830
+ summary: said,
2831
+ changes: piece.values.slice(0, 6).map((v) => ({ field: pieceValueField(v), after: v.value })),
2802
2832
  source: opts.source ?? "mcp",
2803
2833
  ...opts.requestedBy ? { requestedBy: opts.requestedBy } : {}
2804
2834
  };
2805
2835
  return { kind: "request", title: piece.title, request: request2, neededBy };
2806
2836
  }
2807
2837
  if (piece.kind === "variant" && piece.component) {
2808
- const values = piece.values.map((v) => `${v.property ?? v.category} ${v.value}`).join(", ");
2838
+ const values = piece.values.map((v) => `${pieceValueField(v)} ${v.value}`).join(", ");
2839
+ const r = piece.restyle;
2840
+ const what = r?.state ? `a look when ${r.state}` : `${/^[aeiou]/i.test(piece.name) ? "an" : "a"} ${piece.name} ${piece.aspect ?? "style"}`;
2809
2841
  const exploration = {
2810
2842
  name: piece.title,
2811
- purpose: `${forLine(branch)}: ${/^[aeiou]/i.test(piece.name) ? "an" : "a"} ${piece.name} ${piece.aspect ?? "style"} on ${piece.component} (${values}).${near}`,
2843
+ purpose: `${forLine(branch)}: ${what} on ${piece.component} (${values}).`,
2812
2844
  useCase: "terminal",
2813
2845
  experimental: [piece.title],
2814
2846
  source: opts.source === "figma" ? "figma" : opts.source ?? "mcp"
2815
2847
  };
2816
- const brief = [
2848
+ const brief = (r ? [
2849
+ `Add ${what} to ${piece.component} in the library, on this exploration branch.`,
2850
+ `The product branch restyles ${piece.component} from outside with tokens (\`${r.selector}\`: ${values}). Build it into the component (its own state style or a prop, on component tokens), add it to the docs and examples, and keep every existing ${piece.component} unchanged.`
2851
+ ] : [
2817
2852
  `Add the ${piece.name} ${piece.aspect ?? "style"} to ${piece.component} in the library, on this exploration branch.`,
2818
2853
  `The product branch writes it by hand: ${values}. Express it with tokens (a component or semantic token per value), add it to the component's props, docs and examples, and keep every existing ${piece.component} unchanged.`,
2819
2854
  piece.nearest ? `Say in the pull request why ${piece.nearest.label} is not enough, or recommend it instead.` : ""
2820
- ].filter(Boolean).join(" ");
2855
+ ]).filter(Boolean).join(" ");
2821
2856
  return { kind: "exploration", title: piece.title, exploration, neededBy, brief };
2822
2857
  }
2823
2858
  const name = piece.component ?? cap(piece.name);
@@ -2825,13 +2860,38 @@ function libraryBranchPlan(piece, branch, opts = {}) {
2825
2860
  component: name,
2826
2861
  kind: "new-component",
2827
2862
  title: `Add ${name}`,
2828
- summary: `${forLine(branch)}: ${piece.summary}${near}`,
2829
- changes: piece.values.slice(0, 6).map((v) => ({ field: v.property ?? v.category, after: v.value })),
2863
+ summary: said,
2864
+ changes: piece.values.slice(0, 6).map((v) => ({ field: pieceValueField(v), after: v.value })),
2830
2865
  source: opts.source ?? "mcp",
2831
2866
  ...opts.requestedBy ? { requestedBy: opts.requestedBy } : {}
2832
2867
  };
2833
2868
  return { kind: "request", title: `New component: ${name}`, request, neededBy };
2834
2869
  }
2870
+ function pieceRequest(piece, branch, opts = {}) {
2871
+ const plan = libraryBranchPlan(piece, branch, { ...opts.source ? { source: opts.source } : {}, ...opts.requestedBy ? { requestedBy: opts.requestedBy } : {}, mode: "suggest" });
2872
+ const own = `${forLine(branch)}: ${withoutNear(piece.summary)}`;
2873
+ const context = opts.previewUrl ? ` See it in context in the exploration's preview: ${opts.previewUrl}` : ` See it in context in the exploration: ${branch.url}`;
2874
+ const base = {
2875
+ source: opts.source ?? "mcp",
2876
+ ...opts.requestedBy ? { requestedBy: opts.requestedBy } : {},
2877
+ changes: piece.values.slice(0, 6).map((v) => ({ field: pieceValueField(v), after: v.value }))
2878
+ };
2879
+ let request;
2880
+ if (plan.kind === "request") request = { ...plan.request, summary: `${own}${context}` };
2881
+ else if (piece.kind === "token" && piece.token) {
2882
+ request = {
2883
+ ...base,
2884
+ component: "Tokens",
2885
+ kind: "other",
2886
+ title: `Add ${piece.token.path}`,
2887
+ summary: `${own} Proposed: ${piece.token.path} = ${piece.token.value}, beside the closest token.${context}`,
2888
+ changes: [{ field: piece.token.path, after: piece.token.value }]
2889
+ };
2890
+ } else {
2891
+ request = { ...base, component: piece.component ?? cap(piece.name), kind: piece.component ? "new-variant" : "new-component", title: piece.title, summary: `${own}${context}` };
2892
+ }
2893
+ return { request, neededBy: plan.neededBy };
2894
+ }
2835
2895
  const STATUS_LABEL = {
2836
2896
  draft: "Draft",
2837
2897
  "in-review": "In review",
@@ -2886,7 +2946,7 @@ function linkStatus(x) {
2886
2946
  }
2887
2947
  if (x.state === "merged") return make("shipped");
2888
2948
  if (x.state !== "open") return make("closed");
2889
- if ((x.labels ?? []).includes("exploration")) return make("exploring");
2949
+ if ((x.labels ?? []).includes("exploration") || x.draft && (x.labels ?? []).includes("ready-for-devs")) return make("exploring");
2890
2950
  if (x.draft) return make("draft");
2891
2951
  const latest = /* @__PURE__ */ new Map();
2892
2952
  for (const r of x.reviews ?? []) if (r.user && r.state !== "COMMENTED") latest.set(r.user, r.state);
@@ -2944,7 +3004,7 @@ function nearestQuestion(n, opts = {}) {
2944
3004
  }
2945
3005
  function suggestNearestComment(n) {
2946
3006
  if (!n.nearest) return null;
2947
- return `Let's not add it to the library: ${n.nearest}${n.nearestToken ? ` (\`${n.nearestToken}\`)` : ""} covers it. Use it on ${n.title} (#${n.pr}) instead, then close this branch.`;
3007
+ return `Let's not add it to the library: ${n.nearest}${n.nearestToken ? ` (\`${n.nearestToken}\`)` : ""} covers it. Use it on ${n.title} (${prRef(n)}) instead, then close this branch.`;
2948
3008
  }
2949
3009
  function pieceId(parts) {
2950
3010
  return slugify(parts.filter(Boolean).join(" "), 48);
@@ -2966,7 +3026,7 @@ function proposedTokenPath(nearest, name, category) {
2966
3026
  return [...parts.slice(0, -1), slug].join(".");
2967
3027
  }
2968
3028
  export {
2969
- layoutOptions as $,
3029
+ productRepos as $,
2970
3030
  formatValue as A,
2971
3031
  resolve as B,
2972
3032
  moveToken as C,
@@ -2993,175 +3053,180 @@ export {
2993
3053
  previewLinks as X,
2994
3054
  findPreviewComment as Y,
2995
3055
  previewsSettled as Z,
2996
- DEFAULT_TOKEN_PATHS as _,
3056
+ previewUrl as _,
2997
3057
  proposedTokenPath as a,
2998
- colorsEqual as a$,
2999
- buildTokenSet as a0,
3000
- readPreviewComment as a1,
3001
- linkStatus as a2,
3002
- libraryPreviewState as a3,
3003
- parsePiecesRecord as a4,
3004
- libraryBranchPlan as a5,
3005
- NEEDED_BY_LABEL as a6,
3006
- withNeededBy as a7,
3007
- withLink as a8,
3008
- withPiecesRecord as a9,
3009
- PREVIEW_PLACEHOLDERS as aA,
3010
- PRIMITIVE_MODE as aB,
3011
- PRODUCT_LABEL_PREFIX as aC,
3012
- RIGHTS as aD,
3013
- RIGHT_LABEL as aE,
3014
- RISK_TIER as aF,
3015
- TEAM_NAME_MAX as aG,
3016
- TIER_ORDER as aH,
3017
- TeamDirectory as aI,
3018
- VISUAL_CHECKS_DOCS as aJ,
3019
- VISUAL_CHECK_LABEL as aK,
3020
- VISUAL_WORKFLOW_FILES as aL,
3021
- affectedContrast as aM,
3022
- aliasOf as aN,
3023
- appForProject as aO,
3024
- appUrl as aP,
3025
- approverEntries as aQ,
3026
- approverLists as aR,
3027
- baseBranchOf as aS,
3028
- branchName as aT,
3029
- branchSlug as aU,
3030
- canShip as aV,
3031
- changeKind as aW,
3032
- changedModes as aX,
3033
- changesMode as aY,
3034
- clearRawDeep as aZ,
3035
- colorToCss as a_,
3036
- productBranchSentence as aa,
3058
+ changedModes as a$,
3059
+ linkStatus as a0,
3060
+ libraryPreviewState as a1,
3061
+ parsePiecesRecord as a2,
3062
+ libraryBranchPlan as a3,
3063
+ NEEDED_BY_LABEL as a4,
3064
+ withNeededBy as a5,
3065
+ withLink as a6,
3066
+ withPiecesRecord as a7,
3067
+ productBranchSentence as a8,
3068
+ productOfBranch as a9,
3069
+ JsonParseError as aA,
3070
+ LINK_STATUS_TONE as aB,
3071
+ OWNER_GROUPS as aC,
3072
+ PREVIEW_APP_LABELS as aD,
3073
+ PREVIEW_COMMENT_MARKER as aE,
3074
+ PREVIEW_PLACEHOLDERS as aF,
3075
+ PRIMITIVE_MODE as aG,
3076
+ PRODUCT_LABEL_PREFIX as aH,
3077
+ RIGHTS as aI,
3078
+ RIGHT_LABEL as aJ,
3079
+ RISK_TIER as aK,
3080
+ TEAM_NAME_MAX as aL,
3081
+ TIER_ORDER as aM,
3082
+ TeamDirectory as aN,
3083
+ VISUAL_CHECKS_DOCS as aO,
3084
+ VISUAL_CHECK_LABEL as aP,
3085
+ VISUAL_WORKFLOW_FILES as aQ,
3086
+ affectedContrast as aR,
3087
+ aliasOf as aS,
3088
+ appForProject as aT,
3089
+ appUrl as aU,
3090
+ approverEntries as aV,
3091
+ approverLists as aW,
3092
+ branchName as aX,
3093
+ branchSlug as aY,
3094
+ canShip as aZ,
3095
+ changeKind as a_,
3096
+ pieceRequest as aa,
3037
3097
  mergePiecesRecord as ab,
3038
- productOfBranch as ac,
3039
- defaultProduct as ad,
3040
- slugify as ae,
3041
- defineConfig as af,
3042
- globToRegExp as ag,
3043
- ConfigError as ah,
3044
- DEFAULT_CHANGES_MODE as ai,
3045
- DEFAULT_OVERRIDE as aj,
3046
- DEFAULT_PRODUCTS as ak,
3047
- isGuardrail as al,
3048
- AAA_MIN as am,
3049
- AA_MIN as an,
3050
- CHANGES_MODES as ao,
3051
- CONTRAST_CELL_MAX as ap,
3052
- CONTRAST_CHECKS_FILE as aq,
3053
- DEFAULT_GOVERNANCE as ar,
3054
- DEFAULT_RIGHTS as as,
3055
- DEFAULT_VISUAL_IMPACT as at,
3056
- DTCG_TYPES as au,
3057
- JsonParseError as av,
3058
- LINK_STATUS_TONE as aw,
3059
- OWNER_GROUPS as ax,
3060
- PREVIEW_APP_LABELS as ay,
3061
- PREVIEW_COMMENT_MARKER as az,
3098
+ defaultProduct as ac,
3099
+ productOfRepo as ad,
3100
+ baseBranchOf as ae,
3101
+ DEFAULT_TOKEN_PATHS as af,
3102
+ layoutOptions as ag,
3103
+ buildTokenSet as ah,
3104
+ readPreviewComment as ai,
3105
+ slugify as aj,
3106
+ defineConfig as ak,
3107
+ globToRegExp as al,
3108
+ ConfigError as am,
3109
+ DEFAULT_CHANGES_MODE as an,
3110
+ DEFAULT_OVERRIDE as ao,
3111
+ DEFAULT_PRODUCTS as ap,
3112
+ isGuardrail as aq,
3113
+ AAA_MIN as ar,
3114
+ AA_MIN as as,
3115
+ CHANGES_MODES as at,
3116
+ CONTRAST_CELL_MAX as au,
3117
+ CONTRAST_CHECKS_FILE as av,
3118
+ DEFAULT_GOVERNANCE as aw,
3119
+ DEFAULT_RIGHTS as ax,
3120
+ DEFAULT_VISUAL_IMPACT as ay,
3121
+ DTCG_TYPES as az,
3062
3122
  modesOf as b,
3063
- productProblems as b$,
3064
- comboKey as b0,
3065
- commitMessage as b1,
3066
- compactJson as b2,
3067
- composePrBody as b3,
3068
- composite as b4,
3069
- contextFor as b5,
3070
- contrastLevel as b6,
3071
- contrastPair as b7,
3072
- contrastRatio as b8,
3073
- defaultContext as b9,
3074
- isTeamEntry as bA,
3075
- isTokenFile as bB,
3076
- isVercelComment as bC,
3077
- kindForMin as bD,
3078
- layeredParityIssues as bE,
3079
- libraryIsPublic as bF,
3080
- luminance as bG,
3081
- nearestQuestion as bH,
3082
- neededBySection as bI,
3083
- nodesEqual as bJ,
3084
- normalizeRights as bK,
3085
- overrideKey as bL,
3086
- ownerEntryProblems as bM,
3087
- pairKey as bN,
3088
- parseDimension as bO,
3089
- parseJson as bP,
3090
- parseNeededBy as bQ,
3091
- parseOwnerEntry as bR,
3092
- parseVercelComment as bS,
3093
- piecesSection as bT,
3094
- plainEqual as bU,
3095
- previewComment as bV,
3096
- previewLinksOf as bW,
3097
- previewUrl as bX,
3098
- productForPlace as bY,
3099
- productLabel as bZ,
3100
- productMarks as b_,
3101
- defaultTitle as ba,
3102
- detectLayout as bb,
3103
- entriesFor as bc,
3104
- entryLabel as bd,
3105
- expandEntries as be,
3106
- expandOwners as bf,
3107
- fieldChanges as bg,
3108
- figmaPushNextLine as bh,
3109
- figmaPushTierLabel as bi,
3110
- findProduct as bj,
3111
- findToken as bk,
3112
- findVercelComment as bl,
3113
- flattenLayerFile as bm,
3114
- formatNumber as bn,
3115
- formatOwnerEntry as bo,
3116
- fromPlain as bp,
3117
- getChild as bq,
3118
- getEntry as br,
3119
- groupsPhrase as bs,
3120
- hasVisualWorkflow as bt,
3121
- hexToRgba as bu,
3122
- holdersOf as bv,
3123
- indexByPath as bw,
3124
- inheritedTypeAt as bx,
3125
- installCommand as by,
3126
- installCommandFromPreviewComment as bz,
3123
+ previewLinksOf as b$,
3124
+ changesMode as b0,
3125
+ clearRawDeep as b1,
3126
+ colorToCss as b2,
3127
+ colorsEqual as b3,
3128
+ comboKey as b4,
3129
+ commitMessage as b5,
3130
+ compactJson as b6,
3131
+ composePrBody as b7,
3132
+ composite as b8,
3133
+ contextFor as b9,
3134
+ indexByPath as bA,
3135
+ inheritedTypeAt as bB,
3136
+ installCommand as bC,
3137
+ installCommandFromPreviewComment as bD,
3138
+ isTeamEntry as bE,
3139
+ isTokenFile as bF,
3140
+ isVercelComment as bG,
3141
+ kindForMin as bH,
3142
+ layeredParityIssues as bI,
3143
+ libraryIsPublic as bJ,
3144
+ luminance as bK,
3145
+ nearestQuestion as bL,
3146
+ neededBySection as bM,
3147
+ nodesEqual as bN,
3148
+ normalizeRights as bO,
3149
+ overrideKey as bP,
3150
+ ownerEntryProblems as bQ,
3151
+ pairKey as bR,
3152
+ parseDimension as bS,
3153
+ parseJson as bT,
3154
+ parseNeededBy as bU,
3155
+ parseOwnerEntry as bV,
3156
+ parseVercelComment as bW,
3157
+ pieceValueField as bX,
3158
+ piecesSection as bY,
3159
+ plainEqual as bZ,
3160
+ previewComment as b_,
3161
+ contrastLevel as ba,
3162
+ contrastPair as bb,
3163
+ contrastRatio as bc,
3164
+ defaultContext as bd,
3165
+ defaultTitle as be,
3166
+ detectLayout as bf,
3167
+ entriesFor as bg,
3168
+ entryLabel as bh,
3169
+ expandEntries as bi,
3170
+ expandOwners as bj,
3171
+ fieldChanges as bk,
3172
+ figmaPushNextLine as bl,
3173
+ figmaPushTierLabel as bm,
3174
+ findProduct as bn,
3175
+ findToken as bo,
3176
+ findVercelComment as bp,
3177
+ flattenLayerFile as bq,
3178
+ formatNumber as br,
3179
+ formatOwnerEntry as bs,
3180
+ fromPlain as bt,
3181
+ getChild as bu,
3182
+ getEntry as bv,
3183
+ groupsPhrase as bw,
3184
+ hasVisualWorkflow as bx,
3185
+ hexToRgba as by,
3186
+ holdersOf as bz,
3127
3187
  TIER_AXIS as c,
3128
- productsOf as c0,
3129
- projectOfLabel as c1,
3130
- protectedBranchesOf as c2,
3131
- renderedColor as c3,
3132
- rgbaToDtcg as c4,
3133
- rightsProblems as c5,
3134
- sameProducts as c6,
3135
- sameToken as c7,
3136
- serializeJson as c8,
3137
- shipPolicy as c9,
3138
- whyItExists as cA,
3139
- snapshotUrl as ca,
3140
- soloApprover as cb,
3141
- soloOwnerOf as cc,
3142
- soloOwnerSentence as cd,
3143
- storybookUrl as ce,
3144
- suggestNearestComment as cf,
3145
- summarizeTokenChange as cg,
3146
- tarballAssetName as ch,
3147
- tarballUrl as ci,
3148
- teamKey as cj,
3149
- teamKeyOf as ck,
3150
- teamName as cl,
3151
- teamUnreadableMessage as cm,
3152
- teamsIn as cn,
3153
- toAlias as co,
3154
- toMap as cp,
3155
- toPlain as cq,
3156
- tokenBump as cr,
3157
- tokenNode as cs,
3158
- unreadableShipTeams as ct,
3159
- unreadableTeams as cu,
3160
- valueIn as cv,
3161
- valueToCss as cw,
3162
- visualImpactProblems as cx,
3163
- visualOffer as cy,
3164
- whoCanShipSentence as cz,
3188
+ productForPlace as c0,
3189
+ productLabel as c1,
3190
+ productMarks as c2,
3191
+ productProblems as c3,
3192
+ productRepoOf as c4,
3193
+ productsOf as c5,
3194
+ projectOfLabel as c6,
3195
+ protectedBranchesOf as c7,
3196
+ renderedColor as c8,
3197
+ rgbaToDtcg as c9,
3198
+ valueIn as cA,
3199
+ valueToCss as cB,
3200
+ visualImpactProblems as cC,
3201
+ visualOffer as cD,
3202
+ whoCanShipSentence as cE,
3203
+ whyItExists as cF,
3204
+ rightsProblems as ca,
3205
+ sameProducts as cb,
3206
+ sameToken as cc,
3207
+ serializeJson as cd,
3208
+ shipPolicy as ce,
3209
+ snapshotUrl as cf,
3210
+ soloApprover as cg,
3211
+ soloOwnerOf as ch,
3212
+ soloOwnerSentence as ci,
3213
+ storybookUrl as cj,
3214
+ suggestNearestComment as ck,
3215
+ summarizeTokenChange as cl,
3216
+ tarballAssetName as cm,
3217
+ tarballUrl as cn,
3218
+ teamKey as co,
3219
+ teamKeyOf as cp,
3220
+ teamName as cq,
3221
+ teamUnreadableMessage as cr,
3222
+ teamsIn as cs,
3223
+ toAlias as ct,
3224
+ toMap as cu,
3225
+ toPlain as cv,
3226
+ tokenBump as cw,
3227
+ tokenNode as cx,
3228
+ unreadableShipTeams as cy,
3229
+ unreadableTeams as cz,
3165
3230
  collectRefs as d,
3166
3231
  evaluatePairs as e,
3167
3232
  findReferenceProblems as f,
@@ -3186,4 +3251,4 @@ export {
3186
3251
  parseColor as y,
3187
3252
  rgbaToHex as z
3188
3253
  };
3189
- //# sourceMappingURL=prod-branch-Bdx_2bRQ.js.map
3254
+ //# sourceMappingURL=prod-branch-C7tphFAA.js.map