react-semaphor 0.1.419 → 0.1.421

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 (57) hide show
  1. package/dist/analytics-protocol/index.cjs +1 -1
  2. package/dist/analytics-protocol/index.js +28 -27
  3. package/dist/brand-studio/index.cjs +1 -1
  4. package/dist/brand-studio/index.js +2 -2
  5. package/dist/chunks/analyze-result-contract-B5Eeu7vD.js +1 -0
  6. package/dist/chunks/analyze-result-contract-sWcmvBOA.js +2070 -0
  7. package/dist/chunks/{calendar-preferences-dialog-f0Z7Kf-U.js → calendar-preferences-dialog-CscmhyuZ.js} +1 -1
  8. package/dist/chunks/{calendar-preferences-dialog-DIfAbE_y.js → calendar-preferences-dialog-cN3_2C-u.js} +3 -3
  9. package/dist/chunks/{dashboard-briefing-launcher-anh-Jy5v.js → dashboard-briefing-launcher-BYTBNetR.js} +4 -4
  10. package/dist/chunks/{dashboard-briefing-launcher-C3tNkGFG.js → dashboard-briefing-launcher-DmZkzIC3.js} +1 -1
  11. package/dist/chunks/{dashboard-controls-DQxlOxzy.js → dashboard-controls-9DFeKIP4.js} +1 -1
  12. package/dist/chunks/{dashboard-controls-8dCQaPaq.js → dashboard-controls-PhzuaTBj.js} +5 -5
  13. package/dist/chunks/{dashboard-json-i7Ae9KGD.js → dashboard-json-Cxhw2TZc.js} +3 -3
  14. package/dist/chunks/{dashboard-json-B309EInF.js → dashboard-json-DyRHI3mL.js} +1 -1
  15. package/dist/chunks/{edit-dashboard-visual-4HycwBHR.js → edit-dashboard-visual-3_jiBXsu.js} +1 -1
  16. package/dist/chunks/{edit-dashboard-visual-z3IqzYnj.js → edit-dashboard-visual-BigSJ3-x.js} +4 -4
  17. package/dist/chunks/{index-yxKWKFdr.js → index-BKDQw0aK.js} +2 -2
  18. package/dist/chunks/{index-B6DLEXRX.js → index-CH2ZzQo4.js} +5 -5
  19. package/dist/chunks/{switch-D6Ygf3wA.js → switch-CiOjVyVI.js} +1 -1
  20. package/dist/chunks/{switch-COWQU8aK.js → switch-TbCsyhv9.js} +1 -1
  21. package/dist/chunks/{update-policy-BzT2k4n6.js → update-policy-2MZ-Vf7v.js} +211 -187
  22. package/dist/chunks/update-policy-qpyAkOyO.js +3 -0
  23. package/dist/chunks/{use-create-flow-overlay-state-CX0D-6HM.js → use-create-flow-overlay-state-BzcJWNzh.js} +3 -3
  24. package/dist/chunks/{use-create-flow-overlay-state-DENfd7sW.js → use-create-flow-overlay-state-DUQmgb9H.js} +1 -1
  25. package/dist/chunks/{validators-Cxr9qbrR.js → validators-D0pfj3jJ.js} +93 -93
  26. package/dist/chunks/validators-Dj1Y-46V.js +1 -0
  27. package/dist/dashboard/index.cjs +1 -1
  28. package/dist/dashboard/index.js +1 -1
  29. package/dist/dashboard-authoring/index.cjs +1 -1
  30. package/dist/dashboard-authoring/index.js +14 -14
  31. package/dist/data-app-builder/index.cjs +1 -1
  32. package/dist/data-app-builder/index.js +2 -2
  33. package/dist/data-app-codegen/index.cjs +1 -1
  34. package/dist/data-app-codegen/index.js +2 -2
  35. package/dist/data-app-codegen-node/index.cjs +251 -139
  36. package/dist/data-app-codegen-node/index.js +806 -657
  37. package/dist/data-app-sdk/index.cjs +2 -2
  38. package/dist/data-app-sdk/index.js +743 -693
  39. package/dist/data-app-sdk-adapters/index.cjs +1 -1
  40. package/dist/data-app-sdk-adapters/index.js +51 -51
  41. package/dist/data-app-sdk-validation/index.cjs +1 -1
  42. package/dist/data-app-sdk-validation/index.js +2 -2
  43. package/dist/index.cjs +1 -1
  44. package/dist/index.js +7 -7
  45. package/dist/surfboard/index.cjs +1 -1
  46. package/dist/surfboard/index.js +2 -2
  47. package/dist/types/analytics-protocol.d.ts +12 -5
  48. package/dist/types/dashboard-assistant.d.ts +0 -5
  49. package/dist/types/data-app-codegen-node.d.ts +12 -2
  50. package/dist/types/data-app-codegen.d.ts +12 -2
  51. package/dist/types/data-app-sdk-validation.d.ts +0 -5
  52. package/dist/types/data-app-sdk.d.ts +17 -5
  53. package/package.json +1 -1
  54. package/dist/chunks/analyze-result-contract-DdhEt99q.js +0 -2004
  55. package/dist/chunks/analyze-result-contract-DwRzl7yJ.js +0 -1
  56. package/dist/chunks/update-policy-VloD-0YM.js +0 -3
  57. package/dist/chunks/validators-BMQo93Y0.js +0 -1
@@ -1,14 +1,14 @@
1
- import { S as Q, a as X, v as Z } from "./analyze-result-contract-DdhEt99q.js";
1
+ import { S as W, a as X, v as Z } from "./analyze-result-contract-sWcmvBOA.js";
2
2
  import { toSemaphorInputOptionsIntent as ee, toSemaphorAnalysisQueryOptions as te, toSemaphorAnalysisIntent as re, toSemaphorMetricIntent as ne, toSemaphorRecordsIntent as ae, toSemaphorMatrixIntent as se, toSemaphorSqlIntent as ie } from "../data-app-sdk-adapters/index.js";
3
- const Ue = Q, j = X, x = "semaphor-generated-data-app-contract/v1", M = "semaphor-generated-data-app-contract-manifest/v1";
4
- function L(e) {
3
+ const Je = W, x = X, G = "semaphor-generated-data-app-contract/v1", T = "semaphor-generated-data-app-contract-manifest/v1";
4
+ function P(e) {
5
5
  return w(e) ? [
6
6
  ...Z(e).issues,
7
7
  ...oe(e)
8
8
  ] : ["Plan artifact must be a Semaphor codegenSummary object."];
9
9
  }
10
- function ze(e) {
11
- const t = L(e);
10
+ function Ye(e) {
11
+ const t = P(e);
12
12
  if (t.length > 0)
13
13
  throw new Error(`Invalid Semaphor codegenSummary:
14
14
  - ${t.join(`
@@ -48,14 +48,17 @@ const ce = [
48
48
  "metadata.ts",
49
49
  "index.ts"
50
50
  ], de = [
51
+ "USAGE.md"
52
+ ], ue = [
51
53
  ...ce,
54
+ ...de,
52
55
  "contract.manifest.json"
53
56
  ];
54
- async function Je({
57
+ async function Qe({
55
58
  manifest: e,
56
59
  generatedFiles: t
57
60
  }) {
58
- const n = [], r = h(e);
61
+ const n = [], r = y(e);
59
62
  if (!r)
60
63
  return {
61
64
  issues: [
@@ -65,16 +68,16 @@ async function Je({
65
68
  }
66
69
  ]
67
70
  };
68
- r.schemaVersion !== M && n.push({
71
+ r.schemaVersion !== T && n.push({
69
72
  path: "schemaVersion",
70
- message: `schemaVersion must be ${M}. Regenerate the contract with semaphor_create_data_app_contract.`,
73
+ message: `schemaVersion must be ${T}. Regenerate the contract with semaphor_create_data_app_contract.`,
71
74
  repairHint: "Regenerate the contract with semaphor_create_data_app_contract."
72
- }), r.generatedContractSchemaVersion !== x && n.push({
75
+ }), r.generatedContractSchemaVersion !== G && n.push({
73
76
  path: "generatedContractSchemaVersion",
74
- message: `generatedContractSchemaVersion must be ${x}. Regenerate the contract with semaphor_generate_data_app_contract.`,
77
+ message: `generatedContractSchemaVersion must be ${G}. Regenerate the contract with semaphor_generate_data_app_contract.`,
75
78
  repairHint: "Regenerate the contract with semaphor_generate_data_app_contract."
76
79
  });
77
- const s = h(r.generator);
80
+ const s = y(r.generator);
78
81
  S(s == null ? void 0 : s.name) || n.push({
79
82
  path: "generator.name",
80
83
  message: "generator.name is required.",
@@ -84,15 +87,15 @@ async function Je({
84
87
  message: "generator.version is required.",
85
88
  repairHint: "Regenerate the generated contract so manifest generator metadata is written deterministically."
86
89
  });
87
- for (const a of L(r.codegenSummary))
90
+ for (const a of P(r.codegenSummary))
88
91
  n.push({
89
92
  path: `codegenSummary.${a}`,
90
93
  message: `codegenSummary.${a}`,
91
94
  repairHint: "Regenerate the generated contract from a valid Data App codegenSummary."
92
95
  });
93
- if (r.codegenSummaryValidatorVersion !== j && n.push({
96
+ if (r.codegenSummaryValidatorVersion !== x && n.push({
94
97
  path: "codegenSummaryValidatorVersion",
95
- message: `codegenSummaryValidatorVersion must be ${j}. Regenerate the contract with semaphor_generate_data_app_contract.`,
98
+ message: `codegenSummaryValidatorVersion must be ${x}. Regenerate the contract with semaphor_generate_data_app_contract.`,
96
99
  repairHint: "Regenerate the contract with semaphor_generate_data_app_contract."
97
100
  }), typeof r.codegenSummaryHash != "string")
98
101
  n.push({
@@ -100,8 +103,8 @@ async function Je({
100
103
  message: "codegenSummaryHash is required.",
101
104
  repairHint: "Regenerate the generated contract so manifest hashes are written deterministically."
102
105
  });
103
- else if (h(r.codegenSummary)) {
104
- const a = await pe(
106
+ else if (y(r.codegenSummary)) {
107
+ const a = await me(
105
108
  r.codegenSummary
106
109
  );
107
110
  r.codegenSummaryHash !== a && n.push({
@@ -110,16 +113,16 @@ async function Je({
110
113
  repairHint: "Regenerate the generated contract instead of editing the manifest."
111
114
  });
112
115
  }
113
- n.push(...fe(r.codegenSummary));
114
- const o = t ? ue(t) : [];
115
- if (n.push(...o), typeof r.generatedContentHash != "string")
116
+ n.push(...ge(r.codegenSummary));
117
+ const o = t ? fe(t) : [];
118
+ if (n.push(...o), t && o.length === 0 && n.push(...pe(t)), typeof r.generatedContentHash != "string")
116
119
  n.push({
117
120
  path: "generatedContentHash",
118
121
  message: "generatedContentHash is required.",
119
122
  repairHint: "Regenerate the generated contract so manifest hashes are written deterministically."
120
123
  });
121
124
  else if (t && o.length === 0) {
122
- const a = await ge(t);
125
+ const a = await le(t);
123
126
  r.generatedContentHash !== a && n.push({
124
127
  path: "generatedContentHash",
125
128
  message: "generatedContentHash does not match generated TypeScript files. Regenerate the contract instead of hand-editing generated files.",
@@ -128,9 +131,9 @@ async function Je({
128
131
  }
129
132
  return { issues: n };
130
133
  }
131
- function ue(e) {
134
+ function fe(e) {
132
135
  var r;
133
- const t = [], n = new Set(de);
136
+ const t = [], n = new Set(ue);
134
137
  for (const s of Object.keys(e)) {
135
138
  if (s.includes("/") || s.includes("\\")) {
136
139
  const o = ((r = s.split("/").pop()) == null ? void 0 : r.split("\\").pop()) || s;
@@ -149,36 +152,57 @@ function ue(e) {
149
152
  }
150
153
  return t;
151
154
  }
152
- function fe(e) {
153
- const t = h(e);
155
+ function pe(e) {
156
+ const t = e["USAGE.md"];
157
+ return typeof t != "string" ? [{
158
+ path: "generatedFiles.USAGE.md",
159
+ message: "generatedFiles.USAGE.md is required.",
160
+ repairHint: "Regenerate the generated contract so the generated usage guide is written."
161
+ }] : [
162
+ "queries",
163
+ "queryOptionsForView",
164
+ "rowsForView",
165
+ "metricValuesForView",
166
+ "kpiPropsForView",
167
+ "roleValuesForView",
168
+ "appInputSpecs",
169
+ "inputOptionQueries"
170
+ ].filter((r) => !t.includes(`\`${r}\``)).map((r) => ({
171
+ path: "generatedFiles.USAGE.md",
172
+ message: `generatedFiles.USAGE.md must document ${r}.`,
173
+ repairHint: "Regenerate the generated contract so the usage guide matches generated exports."
174
+ }));
175
+ }
176
+ function ge(e) {
177
+ const t = y(e);
154
178
  if (!t)
155
179
  return [];
156
180
  const n = [], r = new Set(
157
- V(t.inputs).map((o) => {
181
+ C(t.inputs).map((o) => {
158
182
  var a;
159
- return (a = h(o)) == null ? void 0 : a.id;
183
+ return (a = y(o)) == null ? void 0 : a.id;
160
184
  }).filter(S)
161
185
  ), s = new Set(
162
- V(t.views).map((o) => {
186
+ C(t.views).map((o) => {
163
187
  var a;
164
- return (a = h(o)) == null ? void 0 : a.id;
188
+ return (a = y(o)) == null ? void 0 : a.id;
165
189
  }).filter(S)
166
190
  );
167
- return V(t.filterContracts).forEach((o, a) => {
168
- const i = h(o), c = i == null ? void 0 : i.inputId;
191
+ return C(t.filterContracts).forEach((o, a) => {
192
+ const i = y(o), c = i == null ? void 0 : i.inputId;
169
193
  (!S(c) || !r.has(c)) && n.push({
170
194
  path: `codegenSummary.filterContracts.${a}.inputId`,
171
195
  message: `codegenSummary.filterContracts.${a}.inputId must reference a generated input.`,
172
196
  repairHint: "Regenerate the generated contract from a valid planner output."
173
197
  }), Array.isArray(i == null ? void 0 : i.bindings) && i.bindings.forEach((u, f) => {
174
- const g = h(u), m = g == null ? void 0 : g.viewId;
198
+ const p = y(u), m = p == null ? void 0 : p.viewId;
175
199
  (!S(m) || !s.has(m)) && n.push({
176
200
  path: `codegenSummary.filterContracts.${a}.bindings.${f}.viewId`,
177
201
  message: `codegenSummary.filterContracts.${a}.bindings.${f}.viewId must reference a generated view.`,
178
202
  repairHint: "Regenerate the generated contract from a valid planner output."
179
203
  });
180
- const y = h(g == null ? void 0 : g.fieldRef);
181
- S(y == null ? void 0 : y.name) || n.push({
204
+ const h = y(p == null ? void 0 : p.fieldRef);
205
+ S(h == null ? void 0 : h.name) || n.push({
182
206
  path: `codegenSummary.filterContracts.${a}.bindings.${f}.fieldRef`,
183
207
  message: `codegenSummary.filterContracts.${a}.bindings.${f}.fieldRef is required.`,
184
208
  repairHint: "Regenerate the generated contract from a valid planner output."
@@ -186,49 +210,49 @@ function fe(e) {
186
210
  });
187
211
  }), n;
188
212
  }
189
- async function ge(e) {
213
+ async function le(e) {
190
214
  const t = Object.keys(e).filter((r) => r.endsWith(".ts")).sort();
191
215
  let n = "";
192
216
  for (const r of t)
193
217
  n += `${r}\0${e[r]}\0`;
194
- return `sha256:${await U(n)}`;
218
+ return `sha256:${await L(n)}`;
195
219
  }
196
- async function pe(e) {
197
- return `sha256:${await U(k(e))}`;
220
+ async function me(e) {
221
+ return `sha256:${await L(H(e))}`;
198
222
  }
199
- function k(e) {
223
+ function H(e) {
200
224
  if (e === null || typeof e != "object")
201
225
  return JSON.stringify(e);
202
226
  if (Array.isArray(e))
203
- return `[${e.map((r) => k(r)).join(",")}]`;
227
+ return `[${e.map((r) => H(r)).join(",")}]`;
204
228
  const t = e;
205
- return `{${Object.keys(t).sort().filter((r) => t[r] !== void 0).map((r) => `${JSON.stringify(r)}:${k(t[r])}`).join(",")}}`;
229
+ return `{${Object.keys(t).sort().filter((r) => t[r] !== void 0).map((r) => `${JSON.stringify(r)}:${H(t[r])}`).join(",")}}`;
206
230
  }
207
- async function U(e) {
231
+ async function L(e) {
208
232
  var r;
209
233
  if (!((r = globalThis.crypto) != null && r.subtle))
210
234
  throw new Error("SHA-256 digest support is required for generated contract validation.");
211
235
  const t = new TextEncoder().encode(e), n = await globalThis.crypto.subtle.digest("SHA-256", t);
212
236
  return Array.from(new Uint8Array(n)).map((s) => s.toString(16).padStart(2, "0")).join("");
213
237
  }
214
- function h(e) {
238
+ function y(e) {
215
239
  return e && typeof e == "object" && !Array.isArray(e) ? e : void 0;
216
240
  }
217
- function V(e) {
241
+ function C(e) {
218
242
  return Array.isArray(e) ? e : [];
219
243
  }
220
244
  function S(e) {
221
245
  return typeof e == "string" && e.length > 0;
222
246
  }
223
- function Ye(e) {
224
- const t = d(e), n = E(t), r = [], s = [];
225
- return $(t == null ? void 0 : t.views).filter((o) => {
247
+ function We(e) {
248
+ const t = d(e), n = V(t), r = [], s = [];
249
+ return I(t == null ? void 0 : t.views).filter((o) => {
226
250
  var i;
227
251
  const a = d((i = d(o)) == null ? void 0 : i.sdkSpec);
228
252
  return !!(a != null && a.builder && (a != null && a.spec));
229
253
  }).forEach((o, a) => {
230
254
  var u;
231
- const i = String(((u = d(o)) == null ? void 0 : u.id) || `view_${a}`), c = le(
255
+ const i = String(((u = d(o)) == null ? void 0 : u.id) || `view_${a}`), c = he(
232
256
  o,
233
257
  n
234
258
  );
@@ -243,18 +267,18 @@ function Ye(e) {
243
267
  });
244
268
  }), { requests: r, issues: s };
245
269
  }
246
- function le(e, t) {
270
+ function he(e, t) {
247
271
  const n = d(e), r = d(n == null ? void 0 : n.sdkSpec), s = d(r == null ? void 0 : r.spec);
248
272
  if (!n || !(r != null && r.builder) || !s)
249
273
  return null;
250
- const o = me(t) ? t : E(d(t)), a = Ne(r.builder), i = d(A(s, o)) || {}, c = he({
274
+ const o = ye(t) ? t : V(d(t)), a = He(r.builder), i = d(_(s, o)) || {}, c = Ae({
251
275
  view: n,
252
276
  builder: a,
253
277
  rawSpec: s,
254
278
  spec: {
255
279
  ...i,
256
280
  id: n.id,
257
- label: Ve(n, s)
281
+ label: Fe(n, s)
258
282
  },
259
283
  context: o
260
284
  });
@@ -292,7 +316,7 @@ function le(e, t) {
292
316
  }
293
317
  return null;
294
318
  }
295
- function We({
319
+ function Xe({
296
320
  input: e,
297
321
  filterContract: t,
298
322
  codegenSummary: n
@@ -300,12 +324,12 @@ function We({
300
324
  const r = d(e), s = d(t), o = d(r == null ? void 0 : r.optionQuery) || d(s == null ? void 0 : s.optionQuery);
301
325
  if (!r || !o)
302
326
  return null;
303
- const a = E(d(n)), i = d(o.spec), c = ye(o, i, a), u = o.valueFieldRef || o.valueField || (i == null ? void 0 : i.valueField), f = o.labelFieldRef || o.labelField || (i == null ? void 0 : i.labelField);
327
+ const a = V(d(n)), i = d(o.spec), c = Se(o, i, a), u = o.valueFieldRef || o.valueField || (i == null ? void 0 : i.valueField), f = o.labelFieldRef || o.labelField || (i == null ? void 0 : i.labelField);
304
328
  if (!c || !u || !f)
305
329
  return null;
306
330
  const m = {
307
331
  ...d(
308
- A(i || {}, a)
332
+ _(i || {}, a)
309
333
  ) || {},
310
334
  id: o.id || (i == null ? void 0 : i.id) || `${r.id}-options`,
311
335
  inputId: r.id,
@@ -318,47 +342,47 @@ function We({
318
342
  };
319
343
  try {
320
344
  return ee(
321
- A(m, a)
345
+ _(m, a)
322
346
  );
323
347
  } catch {
324
348
  return null;
325
349
  }
326
350
  }
327
- function Qe({
351
+ function Ze({
328
352
  input: e,
329
353
  filterContract: t,
330
354
  binding: n,
331
355
  option: r,
332
356
  codegenSummary: s
333
357
  }) {
334
- const o = E(d(s)), a = d(e), i = d(t), c = d(n), u = A(
358
+ const o = V(d(s)), a = d(e), i = d(t), c = d(n), u = _(
335
359
  (c == null ? void 0 : c.fieldRef) || (i == null ? void 0 : i.fieldRef) || (a == null ? void 0 : a.fieldRef),
336
360
  o
337
361
  ), f = String(
338
362
  (i == null ? void 0 : i.operator) || (a == null ? void 0 : a.operator) || "in"
339
- ), g = He(c);
363
+ ), p = ke(c);
340
364
  return {
341
365
  inputId: String((i == null ? void 0 : i.inputId) || (a == null ? void 0 : a.id) || ""),
342
366
  kind: "filter",
343
367
  operator: f,
344
- value: ke(f, r.value),
368
+ value: Ke(f, r.value),
345
369
  isActive: !0,
346
370
  ...u ? { field: u } : {},
347
- ...g ? { relationshipHint: g } : {}
371
+ ...p ? { relationshipHint: p } : {}
348
372
  };
349
373
  }
350
- function E(e) {
374
+ function V(e) {
351
375
  return {
352
376
  sourcesByKey: new Map(
353
- $(e == null ? void 0 : e.sources).map(d).filter(xe).filter((t) => typeof t.sourceKey == "string").map((t) => [String(t.sourceKey), J(t)])
377
+ I(e == null ? void 0 : e.sources).map(d).filter(Me).filter((t) => typeof t.sourceKey == "string").map((t) => [String(t.sourceKey), J(t)])
354
378
  )
355
379
  };
356
380
  }
357
- function me(e) {
381
+ function ye(e) {
358
382
  var t;
359
383
  return e instanceof Object && ((t = d(e)) == null ? void 0 : t.sourcesByKey) instanceof Map;
360
384
  }
361
- function ye(e, t, n) {
385
+ function Se(e, t, n) {
362
386
  if (typeof e.sourceKey == "string")
363
387
  return n.sourcesByKey.get(e.sourceKey) || { sourceKey: e.sourceKey };
364
388
  if (e.source)
@@ -368,7 +392,7 @@ function ye(e, t, n) {
368
392
  if (typeof (t == null ? void 0 : t.sourceKey) == "string")
369
393
  return n.sourcesByKey.get(t.sourceKey) || { sourceKey: t.sourceKey };
370
394
  }
371
- function he({
395
+ function Ae({
372
396
  view: e,
373
397
  builder: t,
374
398
  rawSpec: n,
@@ -382,11 +406,11 @@ function he({
382
406
  if (!o)
383
407
  return r;
384
408
  const a = { ...r };
385
- if (Ee(o) === "server" && (a.pagination = {
409
+ if (Ce(o) === "server" && (a.pagination = {
386
410
  page: 1,
387
- pageSize: Se({ tableBehavior: o, spec: r })
388
- }), t === "records" && Ce(o) === "server") {
389
- const c = _e({
411
+ pageSize: _e({ tableBehavior: o, spec: r })
412
+ }), t === "records" && Ne(o) === "server") {
413
+ const c = we({
390
414
  view: e,
391
415
  rawSpec: n,
392
416
  tableBehavior: o,
@@ -396,28 +420,28 @@ function he({
396
420
  }
397
421
  return a;
398
422
  }
399
- function Se({
423
+ function _e({
400
424
  tableBehavior: e,
401
425
  spec: t
402
426
  }) {
403
427
  const n = d(e.pagination), r = d(t.pagination);
404
428
  return N(n == null ? void 0 : n.pageSize) || N(r == null ? void 0 : r.pageSize) || N(t.limit) || 100;
405
429
  }
406
- function _e({
430
+ function we({
407
431
  view: e,
408
432
  rawSpec: t,
409
433
  tableBehavior: n,
410
434
  context: r
411
435
  }) {
412
- const s = d(n.sorting), o = p(s == null ? void 0 : s.defaultField);
436
+ const s = d(n.sorting), o = g(s == null ? void 0 : s.defaultField);
413
437
  if (!o)
414
438
  return;
415
- const i = Ae({
439
+ const i = ve({
416
440
  view: e,
417
441
  rawSpec: t,
418
442
  context: r
419
443
  }).filter(
420
- (c) => we(c.lookup).includes(o)
444
+ (c) => Ie(c.lookup).includes(o)
421
445
  );
422
446
  if (i.length === 1)
423
447
  return {
@@ -425,55 +449,55 @@ function _e({
425
449
  direction: (s == null ? void 0 : s.defaultDirection) === "desc" ? "desc" : "asc"
426
450
  };
427
451
  }
428
- function Ae({
452
+ function ve({
429
453
  view: e,
430
454
  rawSpec: t,
431
455
  context: n
432
456
  }) {
433
457
  var s;
434
458
  const r = [];
435
- for (const o of $(t.fields)) R(r, o, n);
459
+ for (const o of I(t.fields)) R(r, o, n);
436
460
  R(r, t.dateField, n), R(r, (s = d(t.orderBy)) == null ? void 0 : s.field, n);
437
- for (const o of $(e.fields))
461
+ for (const o of I(e.fields))
438
462
  R(r, o, n);
439
- return Fe(
463
+ return xe(
440
464
  r,
441
- (o) => ve(o.lookup)
465
+ (o) => $e(o.lookup)
442
466
  );
443
467
  }
444
468
  function R(e, t, n) {
445
469
  const r = d(t);
446
470
  if (typeof (r == null ? void 0 : r.name) != "string" || r.name.length === 0)
447
471
  return;
448
- const s = d(A(r, n)) || r;
472
+ const s = d(_(r, n)) || r;
449
473
  e.push({
450
474
  lookup: r,
451
475
  field: s
452
476
  });
453
477
  }
454
- function we(e) {
455
- return Ke([
456
- p(e.name),
478
+ function Ie(e) {
479
+ return Ge([
480
+ g(e.name),
457
481
  z(e),
458
- Ie(e)
482
+ Ee(e)
459
483
  ]);
460
484
  }
461
- function ve(e) {
485
+ function $e(e) {
462
486
  return [
463
487
  z(e),
464
- p(e.name),
465
- p(e.role),
466
- p(e.aggregate)
488
+ g(e.name),
489
+ g(e.role),
490
+ g(e.aggregate)
467
491
  ].join("|");
468
492
  }
469
493
  function z(e) {
470
494
  return [
471
- p(e.sourceKey) || $e(e.source),
472
- p(e.name),
473
- p(e.aggregate)
495
+ g(e.sourceKey) || Re(e.source),
496
+ g(e.name),
497
+ g(e.aggregate)
474
498
  ].filter(Boolean).join(":");
475
499
  }
476
- function $e(e) {
500
+ function Re(e) {
477
501
  const t = d(e);
478
502
  if (!t)
479
503
  return "";
@@ -485,43 +509,43 @@ function $e(e) {
485
509
  }
486
510
  return JSON.stringify(t);
487
511
  }
488
- function Ie(e) {
489
- return je([
490
- Re(e),
491
- p(e.aggregate).toLowerCase(),
492
- p(e.label) || p(e.name)
512
+ function Ee(e) {
513
+ return Te([
514
+ Oe(e),
515
+ g(e.aggregate).toLowerCase(),
516
+ g(e.label) || g(e.name)
493
517
  ].filter(Boolean));
494
518
  }
495
- function Re(e) {
496
- return typeof e.sourceKey == "string" ? Oe(e.sourceKey) : be(e.source);
519
+ function Oe(e) {
520
+ return typeof e.sourceKey == "string" ? be(e.sourceKey) : Ve(e.source);
497
521
  }
498
- function be(e) {
522
+ function Ve(e) {
499
523
  const t = d(e);
500
- return t ? p(t.datasetName) || p(t.datasetId) || p(t.name) || p(t.kind) : "";
524
+ return t ? g(t.datasetName) || g(t.datasetId) || g(t.name) || g(t.kind) : "";
501
525
  }
502
- function Oe(e) {
526
+ function be(e) {
503
527
  const t = String(e).split(":");
504
528
  return t[t.length - 1] || String(e);
505
529
  }
506
- function Ee(e) {
530
+ function Ce(e) {
507
531
  var t;
508
- return p((t = d(e.pagination)) == null ? void 0 : t.mode);
532
+ return g((t = d(e.pagination)) == null ? void 0 : t.mode);
509
533
  }
510
- function Ce(e) {
534
+ function Ne(e) {
511
535
  var t;
512
- return p((t = d(e.sorting)) == null ? void 0 : t.mode);
536
+ return g((t = d(e.sorting)) == null ? void 0 : t.mode);
513
537
  }
514
- function A(e, t) {
538
+ function _(e, t) {
515
539
  if (!e || typeof e != "object")
516
540
  return e;
517
541
  if (Array.isArray(e))
518
- return e.map((s) => A(s, t));
542
+ return e.map((s) => _(s, t));
519
543
  const n = e;
520
544
  if (typeof n.sourceKey == "string" && typeof n.kind == "string" && (typeof n.datasetName == "string" || typeof n.datasetId == "string"))
521
545
  return J(n);
522
546
  const r = {};
523
547
  for (const [s, o] of Object.entries(n))
524
- s !== "sourceKey" && (r[s] = A(o, t));
548
+ s !== "sourceKey" && (r[s] = _(o, t));
525
549
  if (typeof n.sourceKey == "string") {
526
550
  const s = t.sourcesByKey.get(n.sourceKey);
527
551
  s && !r.source && (r.source = s);
@@ -532,33 +556,33 @@ function J(e) {
532
556
  const { sourceKey: t, ...n } = e;
533
557
  return n;
534
558
  }
535
- function Ve(e, t) {
559
+ function Fe(e, t) {
536
560
  const n = d(e.visualSpec);
537
561
  return (n == null ? void 0 : n.title) || e.title || t.label;
538
562
  }
539
- function Ne(e) {
563
+ function He(e) {
540
564
  const t = String(e || "").replace(/^semaphor\./, "");
541
565
  return ["metric", "records", "analysis", "matrix", "sql"].includes(t) ? t : "";
542
566
  }
543
- function He(e) {
567
+ function ke(e) {
544
568
  if (e != null && e.relationshipHint)
545
569
  return e.relationshipHint;
546
- const t = $(e == null ? void 0 : e.relationshipsUsed).map((n) => {
570
+ const t = I(e == null ? void 0 : e.relationshipsUsed).map((n) => {
547
571
  var r;
548
572
  return (r = d(n)) == null ? void 0 : r.id;
549
573
  }).filter((n) => typeof n == "string" && n.length > 0);
550
574
  return t.length > 0 ? { relationshipIds: t } : void 0;
551
575
  }
552
- function ke(e, t) {
576
+ function Ke(e, t) {
553
577
  return e === "in" || e === "not_in" ? [t] : e === "between" ? Array.isArray(t) ? t : [t, t] : t;
554
578
  }
555
579
  function N(e) {
556
580
  return typeof e == "number" && Number.isFinite(e) ? e : void 0;
557
581
  }
558
- function p(e) {
582
+ function g(e) {
559
583
  return typeof e == "string" ? e : "";
560
584
  }
561
- function Fe(e, t) {
585
+ function xe(e, t) {
562
586
  const n = /* @__PURE__ */ new Set(), r = [];
563
587
  for (const s of e) {
564
588
  const o = t(s);
@@ -566,10 +590,10 @@ function Fe(e, t) {
566
590
  }
567
591
  return r;
568
592
  }
569
- function Ke(e) {
593
+ function Ge(e) {
570
594
  return Array.from(new Set(e.filter(Boolean)));
571
595
  }
572
- function je(e) {
596
+ function Te(e) {
573
597
  return (Array.isArray(e) ? e.join(" ") : e).replace(/[^a-zA-Z0-9]+/g, " ").trim().split(/\s+/).filter(Boolean).map((n, r) => {
574
598
  const s = n.toLowerCase();
575
599
  return r === 0 ? s : s.charAt(0).toUpperCase() + s.slice(1);
@@ -578,13 +602,13 @@ function je(e) {
578
602
  function d(e) {
579
603
  return e && typeof e == "object" && !Array.isArray(e) ? e : void 0;
580
604
  }
581
- function $(e) {
605
+ function I(e) {
582
606
  return Array.isArray(e) ? e : [];
583
607
  }
584
- function xe(e) {
608
+ function Me(e) {
585
609
  return e !== void 0;
586
610
  }
587
- const Me = /* @__PURE__ */ new Set([
611
+ const je = /* @__PURE__ */ new Set([
588
612
  "diagnostic_fix",
589
613
  "fix_diagnostics",
590
614
  "fix_inspector_warnings",
@@ -595,12 +619,12 @@ const Me = /* @__PURE__ */ new Set([
595
619
  "edit",
596
620
  "mixed",
597
621
  "remove"
598
- ]), D = /* @__PURE__ */ new Set([
622
+ ]), M = /* @__PURE__ */ new Set([
599
623
  "fields",
600
624
  "metricBindingKeys",
601
625
  "sdkSpec"
602
626
  ]);
603
- function Xe({
627
+ function et({
604
628
  beforeSummary: e,
605
629
  afterSummary: t,
606
630
  migrationReport: n,
@@ -622,7 +646,7 @@ function Xe({
622
646
  reason: "Use analytics_add, analytics_edit, analytics_remove, input_add, input_edit, layout_only, style_only, runtime_debug, semantic_model_repair, save_or_publish, or greenfield_create."
623
647
  }
624
648
  ]
625
- } : T(o) ? {
649
+ } : j(o) ? {
626
650
  ok: !1,
627
651
  policy: {
628
652
  kind: i,
@@ -635,7 +659,7 @@ function Xe({
635
659
  reason: "preferences is retired. Move measureAggregateOverrides to operationIntent.measureAggregateOverrides for update calls."
636
660
  }
637
661
  ]
638
- } : T(s) ? {
662
+ } : j(s) ? {
639
663
  ok: !1,
640
664
  policy: {
641
665
  kind: i,
@@ -648,22 +672,22 @@ function Xe({
648
672
  reason: "Move measureAggregateOverrides to operationIntent.measureAggregateOverrides for update calls."
649
673
  }
650
674
  ]
651
- } : Me.has(i) ? B({
675
+ } : je.has(i) ? D({
652
676
  beforeSummary: e,
653
677
  afterSummary: t,
654
678
  migrationReport: n,
655
679
  operationIntent: a,
656
680
  mode: "diagnostic_warning_fix",
657
- allowedViewChangeReasons: D,
681
+ allowedViewChangeReasons: M,
658
682
  label: "Diagnostic warning fixes",
659
683
  reason: "Diagnostic warning fixes are preserve-by-default and may not add/remove views, inputs, or filter contracts."
660
- }) : i === "analytics_edit" && Array.isArray(a == null ? void 0 : a.measureAggregateOverrides) && a.measureAggregateOverrides.length > 0 ? B({
684
+ }) : i === "analytics_edit" && Array.isArray(a == null ? void 0 : a.measureAggregateOverrides) && a.measureAggregateOverrides.length > 0 ? D({
661
685
  beforeSummary: e,
662
686
  afterSummary: t,
663
687
  migrationReport: n,
664
688
  operationIntent: a,
665
689
  mode: "metric_aggregate_override_edit",
666
- allowedViewChangeReasons: D,
690
+ allowedViewChangeReasons: M,
667
691
  label: "Metric aggregate override edits",
668
692
  reason: "Metric aggregate override edits are preserve-by-default and may only adjust fields/sdkSpec on targeted views."
669
693
  }) : {
@@ -676,11 +700,11 @@ function Xe({
676
700
  violations: []
677
701
  };
678
702
  }
679
- function T(e) {
703
+ function j(e) {
680
704
  var t;
681
705
  return Array.isArray((t = l(e)) == null ? void 0 : t.measureAggregateOverrides);
682
706
  }
683
- function B({
707
+ function D({
684
708
  beforeSummary: e,
685
709
  afterSummary: t,
686
710
  migrationReport: n,
@@ -694,55 +718,55 @@ function B({
694
718
  u.size === 0 && c.push({
695
719
  path: "operationIntent.targetViewIds",
696
720
  reason: `${a} must declare targetViewIds so the update cannot broaden to unrelated views.`
697
- }), H({
721
+ }), F({
698
722
  bucket: l(f.views),
699
723
  label: "views",
700
724
  operationLabel: a,
701
725
  violations: c
702
- }), H({
726
+ }), F({
703
727
  bucket: l(f.inputs),
704
728
  label: "inputs",
705
729
  operationLabel: a,
706
730
  violations: c
707
- }), q({
731
+ }), B({
708
732
  bucket: l(f.inputs),
709
733
  label: "inputs",
710
734
  operationLabel: a,
711
735
  violations: c
712
- }), H({
736
+ }), F({
713
737
  bucket: l(f.filterContracts),
714
738
  label: "filterContracts",
715
739
  operationLabel: a,
716
740
  violations: c
717
- }), q({
741
+ }), B({
718
742
  bucket: l(f.filterContracts),
719
743
  label: "filterContracts",
720
744
  operationLabel: a,
721
745
  violations: c
722
746
  });
723
747
  for (const m of Y(l(f.views))) {
724
- u.size > 0 && !u.has(_(m.id)) && c.push({
725
- path: `views.${_(m.id) || "<unknown>"}`,
748
+ u.size > 0 && !u.has(A(m.id)) && c.push({
749
+ path: `views.${A(m.id) || "<unknown>"}`,
726
750
  reason: `${a} may only change explicitly targeted views.`
727
751
  });
728
- const y = Array.isArray(m.reasons) ? m.reasons.filter(
752
+ const h = Array.isArray(m.reasons) ? m.reasons.filter(
729
753
  (v) => typeof v != "string" || !o.has(v)
730
754
  ) : [];
731
- y.length > 0 && c.push({
732
- path: `views.${_(m.id) || "<unknown>"}`,
733
- reason: `${a} may only adjust fields/sdkSpec/metricBindingKeys; changed ${y.join(", ")}.`
755
+ h.length > 0 && c.push({
756
+ path: `views.${A(m.id) || "<unknown>"}`,
757
+ reason: `${a} may only adjust fields/sdkSpec/metricBindingKeys; changed ${h.join(", ")}.`
734
758
  });
735
759
  }
736
- const g = Te({
760
+ const p = qe({
737
761
  beforeSummary: e,
738
762
  afterSummary: t,
739
763
  targetViewIds: u,
740
764
  label: a
741
765
  });
742
- return g && c.push(g), {
766
+ return p && c.push(p), {
743
767
  ok: c.length === 0,
744
768
  policy: {
745
- kind: _(r == null ? void 0 : r.kind) || "diagnostic_fix",
769
+ kind: A(r == null ? void 0 : r.kind) || "diagnostic_fix",
746
770
  mode: s,
747
771
  allowedViewChangeReasons: Array.from(o).sort(),
748
772
  targetViewIds: Array.from(u).sort(),
@@ -751,7 +775,7 @@ function B({
751
775
  violations: c
752
776
  };
753
777
  }
754
- function Te({
778
+ function qe({
755
779
  beforeSummary: e,
756
780
  afterSummary: t,
757
781
  targetViewIds: n,
@@ -763,30 +787,30 @@ function Te({
763
787
  path: "codegenSummary",
764
788
  reason: `${r} require before/after codegen summaries for full-scope verification.`
765
789
  };
766
- const a = G(s), i = G(o), c = P(s.views), u = P(o.views), f = Array.isArray(a.views) ? a.views : [];
790
+ const a = q(s), i = q(o), c = U(s.views), u = U(o.views), f = Array.isArray(a.views) ? a.views : [];
767
791
  a.views = f;
768
- for (const g of n) {
769
- const m = c.get(g), y = u.get(g);
770
- if (!m || !y)
792
+ for (const p of n) {
793
+ const m = c.get(p), h = u.get(p);
794
+ if (!m || !h)
771
795
  continue;
772
796
  const v = f.find(
773
- (W) => {
797
+ (Q) => {
774
798
  var K;
775
- return ((K = l(W)) == null ? void 0 : K.id) === g;
799
+ return ((K = l(Q)) == null ? void 0 : K.id) === p;
776
800
  }
777
- ), I = l(y);
778
- if (!v || !I)
801
+ ), $ = l(h);
802
+ if (!v || !$)
779
803
  continue;
780
- const C = v;
781
- C.fields = b(I.fields), C.metricBindingKeys = b(I.metricBindingKeys), C.sdkSpec = b(I.sdkSpec);
804
+ const b = v;
805
+ b.fields = E($.fields), b.metricBindingKeys = E($.metricBindingKeys), b.sdkSpec = E($.sdkSpec);
782
806
  }
783
807
  return O(a) === O(i) ? null : {
784
808
  path: "codegenSummary",
785
809
  reason: `${r} may only change fields/sdkSpec/metricBindingKeys on targetViewIds; another generated contract section changed.`
786
810
  };
787
811
  }
788
- function G(e) {
789
- const t = b(e);
812
+ function q(e) {
813
+ const t = E(e);
790
814
  for (const n of [
791
815
  "implementationChecklist",
792
816
  "assumptions",
@@ -795,26 +819,26 @@ function G(e) {
795
819
  "validation"
796
820
  ])
797
821
  delete t[n];
798
- return qe(t.unsupportedInsights) && delete t.unsupportedInsights, t;
822
+ return Pe(t.unsupportedInsights) && delete t.unsupportedInsights, t;
799
823
  }
800
- function H({
824
+ function F({
801
825
  bucket: e,
802
826
  label: t,
803
827
  operationLabel: n,
804
828
  violations: r
805
829
  }) {
806
- for (const s of F(e == null ? void 0 : e.added))
830
+ for (const s of k(e == null ? void 0 : e.added))
807
831
  r.push({
808
- path: `${t}.${_(s.id) || "<unknown>"}`,
832
+ path: `${t}.${A(s.id) || "<unknown>"}`,
809
833
  reason: `${n} may not add ${t}.`
810
834
  });
811
- for (const s of F(e == null ? void 0 : e.removed))
835
+ for (const s of k(e == null ? void 0 : e.removed))
812
836
  r.push({
813
- path: `${t}.${_(s.id) || "<unknown>"}`,
837
+ path: `${t}.${A(s.id) || "<unknown>"}`,
814
838
  reason: `${n} may not remove ${t}.`
815
839
  });
816
840
  }
817
- function q({
841
+ function B({
818
842
  bucket: e,
819
843
  label: t,
820
844
  operationLabel: n,
@@ -822,22 +846,22 @@ function q({
822
846
  }) {
823
847
  for (const s of Y(e))
824
848
  r.push({
825
- path: `${t}.${_(s.id) || "<unknown>"}`,
849
+ path: `${t}.${A(s.id) || "<unknown>"}`,
826
850
  reason: `${n} may not change ${t}.`
827
851
  });
828
852
  }
829
853
  function Y(e) {
830
- return F(e == null ? void 0 : e.changed);
854
+ return k(e == null ? void 0 : e.changed);
831
855
  }
832
- function F(e) {
833
- return Array.isArray(e) ? e.map(l).filter(Ge) : [];
856
+ function k(e) {
857
+ return Array.isArray(e) ? e.map(l).filter(Ue) : [];
834
858
  }
835
859
  function Be(e) {
836
860
  return Array.isArray(e) ? new Set(
837
861
  e.filter((t) => typeof t == "string" && t.trim().length > 0).map((t) => t.trim())
838
862
  ) : /* @__PURE__ */ new Set();
839
863
  }
840
- function P(e) {
864
+ function U(e) {
841
865
  var n;
842
866
  const t = /* @__PURE__ */ new Map();
843
867
  for (const r of Array.isArray(e) ? e : []) {
@@ -846,7 +870,7 @@ function P(e) {
846
870
  }
847
871
  return t;
848
872
  }
849
- function b(e) {
873
+ function E(e) {
850
874
  return e === void 0 ? e : JSON.parse(JSON.stringify(e));
851
875
  }
852
876
  function O(e) {
@@ -860,28 +884,28 @@ function O(e) {
860
884
  function l(e) {
861
885
  return e && typeof e == "object" && !Array.isArray(e) ? e : void 0;
862
886
  }
863
- function Ge(e) {
887
+ function Ue(e) {
864
888
  return e !== void 0;
865
889
  }
866
- function qe(e) {
890
+ function Pe(e) {
867
891
  return Array.isArray(e) && e.length === 0;
868
892
  }
869
- function _(e) {
893
+ function A(e) {
870
894
  return typeof e == "string" ? e : "";
871
895
  }
872
896
  export {
873
- Ue as C,
874
- x as G,
875
- de as R,
876
- j as a,
877
- M as b,
878
- ze as c,
879
- Je as d,
897
+ Je as C,
898
+ G,
899
+ ue as R,
900
+ x as a,
901
+ T as b,
902
+ Ye as c,
903
+ Qe as d,
880
904
  ce as e,
881
- Qe as f,
882
- We as g,
883
- le as h,
884
- Ye as i,
885
- Xe as j,
886
- L as v
905
+ Ze as f,
906
+ Xe as g,
907
+ he as h,
908
+ We as i,
909
+ et as j,
910
+ P as v
887
911
  };