dsh-data-quality 0.1.2 → 0.2.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 (96) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.es.md +8 -2
  3. package/README.hi.md +8 -2
  4. package/README.md +22 -9
  5. package/README.pt.md +8 -2
  6. package/README.zh.md +8 -2
  7. package/cordis.patch.yml +11 -0
  8. package/lib/index.js +1411 -145
  9. package/lib/types/config.d.ts +12 -0
  10. package/lib/types/config.d.ts.map +1 -1
  11. package/lib/types/config.js +35 -0
  12. package/lib/types/config.js.map +1 -1
  13. package/lib/types/contract.d.ts +83 -0
  14. package/lib/types/contract.d.ts.map +1 -0
  15. package/lib/types/contract.js +144 -0
  16. package/lib/types/contract.js.map +1 -0
  17. package/lib/types/dataset.d.ts +50 -3
  18. package/lib/types/dataset.d.ts.map +1 -1
  19. package/lib/types/dataset.js +76 -21
  20. package/lib/types/dataset.js.map +1 -1
  21. package/lib/types/events.d.ts +2 -0
  22. package/lib/types/events.d.ts.map +1 -1
  23. package/lib/types/events.js.map +1 -1
  24. package/lib/types/index.d.ts +11 -8
  25. package/lib/types/index.d.ts.map +1 -1
  26. package/lib/types/index.js +15 -6
  27. package/lib/types/index.js.map +1 -1
  28. package/lib/types/presets.d.ts +28 -0
  29. package/lib/types/presets.d.ts.map +1 -0
  30. package/lib/types/presets.js +134 -0
  31. package/lib/types/presets.js.map +1 -0
  32. package/lib/types/profile.d.ts +38 -1
  33. package/lib/types/profile.d.ts.map +1 -1
  34. package/lib/types/profile.js +64 -10
  35. package/lib/types/profile.js.map +1 -1
  36. package/lib/types/provider-local.d.ts +7 -1
  37. package/lib/types/provider-local.d.ts.map +1 -1
  38. package/lib/types/provider-local.js +78 -4
  39. package/lib/types/provider-local.js.map +1 -1
  40. package/lib/types/scorecard.d.ts +50 -0
  41. package/lib/types/scorecard.d.ts.map +1 -0
  42. package/lib/types/scorecard.js +186 -0
  43. package/lib/types/scorecard.js.map +1 -0
  44. package/lib/types/service.d.ts +32 -2
  45. package/lib/types/service.d.ts.map +1 -1
  46. package/lib/types/service.js.map +1 -1
  47. package/lib/types/store.d.ts +21 -1
  48. package/lib/types/store.d.ts.map +1 -1
  49. package/lib/types/store.js +13 -1
  50. package/lib/types/store.js.map +1 -1
  51. package/lib/types/tools/clean.d.ts.map +1 -1
  52. package/lib/types/tools/clean.js +76 -1
  53. package/lib/types/tools/clean.js.map +1 -1
  54. package/lib/types/tools/profile-report-schema.d.ts +315 -0
  55. package/lib/types/tools/profile-report-schema.d.ts.map +1 -0
  56. package/lib/types/tools/profile-report-schema.js +95 -0
  57. package/lib/types/tools/profile-report-schema.js.map +1 -0
  58. package/lib/types/tools/profile.d.ts.map +1 -1
  59. package/lib/types/tools/profile.js +6 -53
  60. package/lib/types/tools/profile.js.map +1 -1
  61. package/lib/types/tools/report.d.ts +14 -0
  62. package/lib/types/tools/report.d.ts.map +1 -0
  63. package/lib/types/tools/report.js +86 -0
  64. package/lib/types/tools/report.js.map +1 -0
  65. package/lib/types/tools/shared.d.ts.map +1 -1
  66. package/lib/types/tools/shared.js +22 -2
  67. package/lib/types/tools/shared.js.map +1 -1
  68. package/lib/types/tools/verify.d.ts.map +1 -1
  69. package/lib/types/tools/verify.js +36 -1
  70. package/lib/types/tools/verify.js.map +1 -1
  71. package/lib/types/verify.d.ts +49 -3
  72. package/lib/types/verify.d.ts.map +1 -1
  73. package/lib/types/verify.js +111 -4
  74. package/lib/types/verify.js.map +1 -1
  75. package/lib/types/version.d.ts +1 -1
  76. package/lib/types/version.js +1 -1
  77. package/package.json +1 -1
  78. package/src/config.ts +52 -0
  79. package/src/contract.ts +190 -0
  80. package/src/dataset.ts +101 -21
  81. package/src/events.ts +2 -0
  82. package/src/index.ts +25 -8
  83. package/src/presets.ts +146 -0
  84. package/src/profile.ts +101 -11
  85. package/src/provider-local.ts +83 -5
  86. package/src/scorecard.ts +244 -0
  87. package/src/service.ts +34 -2
  88. package/src/store.ts +28 -2
  89. package/src/tools/clean.ts +76 -1
  90. package/src/tools/profile-report-schema.ts +97 -0
  91. package/src/tools/profile.ts +8 -56
  92. package/src/tools/report.ts +108 -0
  93. package/src/tools/shared.ts +21 -2
  94. package/src/tools/verify.ts +40 -2
  95. package/src/verify.ts +151 -5
  96. package/src/version.ts +1 -1
@@ -20,6 +20,19 @@ export class VerifyRuleError extends Error {
20
20
  this.name = 'VerifyRuleError';
21
21
  }
22
22
  }
23
+ /** Raised for invalid expectations; `message` names the expectation index and reason. */
24
+ export class VerifyExpectationError extends Error {
25
+ expectationIndex;
26
+ /**
27
+ * @param expectationIndex - index of the offending expectation in the request array.
28
+ * @param message - actionable human-readable detail.
29
+ */
30
+ constructor(expectationIndex, message) {
31
+ super(message);
32
+ this.expectationIndex = expectationIndex;
33
+ this.name = 'VerifyExpectationError';
34
+ }
35
+ }
23
36
  /** Assert `column` exists. */
24
37
  function requireColumn(columns, column, ruleIndex) {
25
38
  if (!columns.includes(column)) {
@@ -63,13 +76,101 @@ function evaluate(table, ruleIndex, ruleName, columns, predicate, evidenceRowLim
63
76
  };
64
77
  }
65
78
  const CROSS_OPS = ['<', '<=', '==', '!=', '>=', '>'];
79
+ /** The metric ids, for validation and diagnostics. */
80
+ const VERIFY_METRICS = ['rowCount', 'columnSum', 'columnMean', 'uniqueCount', 'nullCount'];
81
+ /** Throw unless the expectation is well-formed (metric/column/tolerance). */
82
+ function validateExpectation(table, expectation, index) {
83
+ if (!VERIFY_METRICS.includes(expectation.metric)) {
84
+ throw new VerifyExpectationError(index, `expectation ${index}: unknown metric ${JSON.stringify(expectation.metric)} (expected one of ${VERIFY_METRICS.join(', ')})`);
85
+ }
86
+ if (expectation.metric !== 'rowCount') {
87
+ if (expectation.column === undefined || expectation.column === '') {
88
+ throw new VerifyExpectationError(index, `expectation ${index}: metric ${expectation.metric} requires a column`);
89
+ }
90
+ if (!table.columns.includes(expectation.column)) {
91
+ throw new VerifyExpectationError(index, `expectation ${index}: unknown column ${JSON.stringify(expectation.column)} (columns: ${table.columns.join(', ')})`);
92
+ }
93
+ }
94
+ else if (expectation.column !== undefined) {
95
+ throw new VerifyExpectationError(index, `expectation ${index}: metric rowCount takes no column, got ${JSON.stringify(expectation.column)}`);
96
+ }
97
+ if (expectation.tolerance !== undefined && (typeof expectation.tolerance !== 'number' || !Number.isFinite(expectation.tolerance) || expectation.tolerance < 0 || expectation.tolerance > 1)) {
98
+ throw new VerifyExpectationError(index, `expectation ${index}: tolerance must be a finite number in [0, 1], got ${String(expectation.tolerance)}`);
99
+ }
100
+ }
101
+ /** Compute the deterministic actual value of one expectation's metric. */
102
+ function metricValueOf(table, expectation) {
103
+ switch (expectation.metric) {
104
+ case 'rowCount':
105
+ return table.rows.length;
106
+ case 'nullCount': {
107
+ let count = 0;
108
+ for (const row of table.rows) {
109
+ if (isMissing(row[expectation.column]))
110
+ count += 1;
111
+ }
112
+ return count;
113
+ }
114
+ case 'uniqueCount': {
115
+ const distinct = new Set();
116
+ for (const row of table.rows) {
117
+ const cell = row[expectation.column];
118
+ if (isMissing(cell))
119
+ continue;
120
+ distinct.add(typeof cell === 'string' ? cell : JSON.stringify(cell));
121
+ }
122
+ return distinct.size;
123
+ }
124
+ case 'columnSum':
125
+ case 'columnMean': {
126
+ let sum = 0;
127
+ let count = 0;
128
+ for (const row of table.rows) {
129
+ const value = parseNumeric(row[expectation.column]);
130
+ if (value === undefined)
131
+ continue;
132
+ sum += value;
133
+ count += 1;
134
+ }
135
+ return expectation.metric === 'columnSum' ? sum : count === 0 ? 0 : sum / count;
136
+ }
137
+ }
138
+ }
139
+ /**
140
+ * Reconcile each expectation against its deterministic actual value. A
141
+ * mismatch is a normal `passed: false` result, never a thrown error; invalid
142
+ * metrics, columns, and tolerances fail loud.
143
+ * @param table - the parsed dataset.
144
+ * @param expectations - the expectations to reconcile.
145
+ * @param defaultTolerance - configured fallback relative tolerance.
146
+ * @param signal - optional abort signal.
147
+ * @returns one outcome per expectation.
148
+ */
149
+ export function verifyExpectations(table, expectations, defaultTolerance, signal) {
150
+ return expectations.map((expectation, index) => {
151
+ throwIfAborted(signal);
152
+ validateExpectation(table, expectation, index);
153
+ const actual = metricValueOf(table, expectation);
154
+ const tolerance = expectation.tolerance ?? defaultTolerance;
155
+ const passed = numericClose(actual, expectation.expected, tolerance);
156
+ return {
157
+ metric: expectation.metric,
158
+ ...(expectation.column !== undefined ? { column: expectation.column } : {}),
159
+ expected: expectation.expected,
160
+ actual,
161
+ tolerance,
162
+ passed,
163
+ };
164
+ });
165
+ }
66
166
  /**
67
167
  * Apply verification rules over a parsed table. A missing cell fails every
68
- * rule that reads it. The overall `passed` is the conjunction of rule passes;
69
- * a failing dataset is a normal result, never a thrown error.
168
+ * rule that reads it. The overall `passed` is the conjunction of rule passes
169
+ * and expectation passes; a failing dataset is a normal result, never a
170
+ * thrown error.
70
171
  * @param table - the parsed dataset.
71
172
  * @param rules - non-empty rule list.
72
- * @param options - evidence cap, injected clock for `freshness`, abort signal.
173
+ * @param options - evidence cap, injected clock for `freshness`, optional expectations, default tolerance, abort signal.
73
174
  * @returns the verify report (without the dataset label; the caller adds it).
74
175
  */
75
176
  export function verifyTable(table, rules, options) {
@@ -233,10 +334,12 @@ export function verifyTable(table, rules, options) {
233
334
  }
234
335
  results.push(result);
235
336
  }
337
+ const expectations = verifyExpectations(table, options.expectations ?? [], options.defaultTolerance ?? 1e-9, options.signal);
236
338
  return {
237
- passed: results.every((result) => result.passed),
339
+ passed: results.every((result) => result.passed) && expectations.every((expectation) => expectation.passed),
238
340
  rowCount: table.rows.length,
239
341
  rules: results,
342
+ expectations,
240
343
  generatedAt: options.now(),
241
344
  };
242
345
  }
@@ -254,6 +357,10 @@ export function renderVerifyText(report) {
254
357
  lines.push(` … and ${rule.failedCount - rule.evidence.length} more failing row(s)`);
255
358
  }
256
359
  }
360
+ for (const expectation of report.expectations) {
361
+ const target = expectation.column !== undefined ? `${expectation.metric}(${expectation.column})` : expectation.metric;
362
+ lines.push(`- [${expectation.passed ? 'pass' : 'FAIL'}] expectation ${target}: actual ${expectation.actual} vs expected ${expectation.expected} (tolerance ${expectation.tolerance})`);
363
+ }
257
364
  return lines.join('\n');
258
365
  }
259
366
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/verify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAsD,MAAM,cAAc,CAAA;AAmBrI,2EAA2E;AAC3E,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAM7B;IALX;;;OAGG;IACH,YACW,SAAiB,EAC1B,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAA;QAHL,cAAS,GAAT,SAAS,CAAQ;QAI1B,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;IAC/B,CAAC;CACF;AA0BD,yFAAyF;AACzF,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAMpC;IALX;;;OAGG;IACH,YACW,gBAAwB,EACjC,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAA;QAHL,qBAAgB,GAAhB,gBAAgB,CAAQ;QAIjC,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAA;IACtC,CAAC;CACF;AAqCD,8BAA8B;AAC9B,SAAS,aAAa,CAAC,OAA0B,EAAE,MAAc,EAAE,SAAiB;IAClF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,eAAe,CAAC,SAAS,EAAE,QAAQ,SAAS,oBAAoB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACtI,CAAC;AACH,CAAC;AAED,kFAAkF;AAClF,SAAS,MAAM,CAAC,IAAsB;IACpC,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,IAAI,EAAE,CAAA;IAChD,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,CAAA;IAClD,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IACzD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAA;AACrB,CAAC;AAED,6DAA6D;AAC7D,SAAS,QAAQ,CACf,KAAY,EACZ,SAAiB,EACjB,QAA4B,EAC5B,OAA0B,EAC1B,SAAgC,EAChC,gBAAwB,EACxB,MAAoB;IAEpB,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,MAAM,QAAQ,GAAwB,EAAE,CAAA;IACxC,KAAK,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACnD,IAAI,QAAQ,GAAG,IAAI,KAAK,CAAC;YAAE,cAAc,CAAC,MAAM,CAAC,CAAA;QACjD,IAAI,SAAS,CAAC,GAAG,CAAC;YAAE,SAAQ;QAC5B,WAAW,IAAI,CAAC,CAAA;QAChB,IAAI,QAAQ,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;YACvC,MAAM,MAAM,GAAyB,EAAE,CAAA;YACvC,KAAK,MAAM,MAAM,IAAI,OAAO;gBAAE,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAA;YAClE,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;QACrC,CAAC;IACH,CAAC;IACD,OAAO;QACL,SAAS;QACT,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,WAAW,KAAK,CAAC;QACzB,WAAW;QACX,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM;QAC/B,QAAQ;KACT,CAAA;AACH,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAU,CAAA;AAE7D,sDAAsD;AACtD,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,CAAU,CAAA;AAEnG,6EAA6E;AAC7E,SAAS,mBAAmB,CAAC,KAAY,EAAE,WAA8B,EAAE,KAAa;IACtF,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,sBAAsB,CAAC,KAAK,EAAE,eAAe,KAAK,oBAAoB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,qBAAqB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACtK,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACtC,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YAClE,MAAM,IAAI,sBAAsB,CAAC,KAAK,EAAE,eAAe,KAAK,YAAY,WAAW,CAAC,MAAM,oBAAoB,CAAC,CAAA;QACjH,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,sBAAsB,CAAC,KAAK,EAAE,eAAe,KAAK,oBAAoB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC9J,CAAC;IACH,CAAC;SAAM,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5C,MAAM,IAAI,sBAAsB,CAAC,KAAK,EAAE,eAAe,KAAK,0CAA0C,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC7I,CAAC;IACD,IAAI,WAAW,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,OAAO,WAAW,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,SAAS,GAAG,CAAC,IAAI,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;QAC5L,MAAM,IAAI,sBAAsB,CAAC,KAAK,EAAE,eAAe,KAAK,sDAAsD,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IACpJ,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,SAAS,aAAa,CAAC,KAAY,EAAE,WAA8B;IACjE,QAAQ,WAAW,CAAC,MAAM,EAAE,CAAC;QAC3B,KAAK,UAAU;YACb,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAA;QAC1B,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,IAAI,KAAK,GAAG,CAAC,CAAA;YACb,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC7B,IAAI,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,MAAgB,CAAC,CAAC;oBAAE,KAAK,IAAI,CAAC,CAAA;YAC9D,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAA;YAClC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,MAAgB,CAAC,CAAA;gBAC9C,IAAI,SAAS,CAAC,IAAI,CAAC;oBAAE,SAAQ;gBAC7B,QAAQ,CAAC,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;YACtE,CAAC;YACD,OAAO,QAAQ,CAAC,IAAI,CAAA;QACtB,CAAC;QACD,KAAK,WAAW,CAAC;QACjB,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,IAAI,GAAG,GAAG,CAAC,CAAA;YACX,IAAI,KAAK,GAAG,CAAC,CAAA;YACb,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,MAAgB,CAAC,CAAC,CAAA;gBAC7D,IAAI,KAAK,KAAK,SAAS;oBAAE,SAAQ;gBACjC,GAAG,IAAI,KAAK,CAAA;gBACZ,KAAK,IAAI,CAAC,CAAA;YACZ,CAAC;YACD,OAAO,WAAW,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAA;QACjF,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAY,EACZ,YAA0C,EAC1C,gBAAwB,EACxB,MAAoB;IAEpB,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE;QAC7C,cAAc,CAAC,MAAM,CAAC,CAAA;QACtB,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAA;QAC9C,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;QAChD,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,IAAI,gBAAgB,CAAA;QAC3D,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QACpE,OAAO;YACL,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,GAAG,CAAC,WAAW,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,MAAM;YACN,SAAS;YACT,MAAM;SACP,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CACzB,KAAY,EACZ,KAA4B,EAC5B,OAMC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,eAAe,CAAC,CAAC,EAAE,iCAAiC,CAAC,CAAA;IACjE,CAAC;IACD,MAAM,OAAO,GAAuB,EAAE,CAAA;IACtC,KAAK,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAChD,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAC9B,IAAI,MAAwB,CAAA;QAC5B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;gBACpD,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;gBAC9I,MAAK;YACP,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC9B,MAAM,IAAI,eAAe,CAAC,SAAS,EAAE,QAAQ,SAAS,uCAAuC,CAAC,CAAA;gBAChG,CAAC;gBACD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO;oBAAE,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;gBAClF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAA;gBACxC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA;oBAC7E,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC7C,CAAC;gBACD,MAAM,GAAG,QAAQ,CACf,KAAK,EACL,SAAS,EACT,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO,EACZ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EACnG,OAAO,CAAC,gBAAgB,EACxB,OAAO,CAAC,MAAM,CACf,CAAA;gBACD,MAAK;YACP,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;gBACpD,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;oBACrD,MAAM,IAAI,eAAe,CAAC,SAAS,EAAE,QAAQ,SAAS,0CAA0C,CAAC,CAAA;gBACnG,CAAC;gBACD,MAAM,GAAG,QAAQ,CACf,KAAK,EACL,SAAS,EACT,IAAI,CAAC,IAAI,EACT,CAAC,IAAI,CAAC,MAAM,CAAC,EACb,CAAC,GAAG,EAAE,EAAE;oBACN,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;oBAC5C,IAAI,KAAK,KAAK,SAAS;wBAAE,OAAO,KAAK,CAAA;oBACrC,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG;wBAAE,OAAO,KAAK,CAAA;oBAC5D,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG;wBAAE,OAAO,KAAK,CAAA;oBAC5D,OAAO,IAAI,CAAA;gBACb,CAAC,EACD,OAAO,CAAC,gBAAgB,EACxB,OAAO,CAAC,MAAM,CACf,CAAA;gBACD,MAAK;YACP,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;gBACpD,IAAI,OAAe,CAAA;gBACnB,IAAI,CAAC;oBACH,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;gBACtD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,IAAI,eAAe,CAAC,SAAS,EAAE,QAAQ,SAAS,mBAAmB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;gBACrK,CAAC;gBACD,MAAM,GAAG,QAAQ,CACf,KAAK,EACL,SAAS,EACT,IAAI,CAAC,IAAI,EACT,CAAC,IAAI,CAAC,MAAM,CAAC,EACb,CAAC,GAAG,EAAE,EAAE;oBACN,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;oBAC7B,IAAI,SAAS,CAAC,IAAI,CAAC;wBAAE,OAAO,KAAK,CAAA;oBACjC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAA;oBACrB,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;gBACnC,CAAC,EACD,OAAO,CAAC,gBAAgB,EACxB,OAAO,CAAC,MAAM,CACf,CAAA;gBACD,MAAK;YACP,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;gBACpD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC7B,MAAM,IAAI,eAAe,CAAC,SAAS,EAAE,QAAQ,SAAS,0CAA0C,CAAC,CAAA;gBACnG,CAAC;gBACD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBACpC,MAAM,GAAG,QAAQ,CACf,KAAK,EACL,SAAS,EACT,IAAI,CAAC,IAAI,EACT,CAAC,IAAI,CAAC,MAAM,CAAC,EACb,CAAC,GAAG,EAAE,EAAE;oBACN,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;oBAC7B,IAAI,SAAS,CAAC,IAAI,CAAC;wBAAE,OAAO,KAAK,CAAA;oBACjC,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;gBAClC,CAAC,EACD,OAAO,CAAC,gBAAgB,EACxB,OAAO,CAAC,MAAM,CACf,CAAA;gBACD,MAAK;YACP,CAAC;YACD,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;gBAClD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;oBACjC,MAAM,IAAI,eAAe,CAAC,SAAS,EAAE,QAAQ,SAAS,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;gBACtG,CAAC;gBACD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,KAAK,SAAS,CAAA;gBAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAA;gBACzC,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;oBAC3B,MAAM,IAAI,eAAe,CAAC,SAAS,EAAE,QAAQ,SAAS,uDAAuD,CAAC,CAAA;gBAChH,CAAC;gBACD,IAAI,SAAS;oBAAE,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,WAAqB,EAAE,SAAS,CAAC,CAAA;gBAClF,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACjF,MAAM,GAAG,QAAQ,CACf,KAAK,EACL,SAAS,EACT,IAAI,CAAC,IAAI,EACT,OAAO,EACP,CAAC,GAAG,EAAE,EAAE;oBACN,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBAC3B,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAqB,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,KAAyB,CAAA;oBAC3F,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC;wBAAE,OAAO,KAAK,CAAA;oBACrD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;oBAClC,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;oBACpC,IAAI,OAAO,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;wBACpD,QAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;4BAChB,KAAK,GAAG,CAAC,CAAC,OAAO,OAAO,GAAG,QAAQ,CAAA;4BACnC,KAAK,IAAI,CAAC,CAAC,OAAO,OAAO,IAAI,QAAQ,CAAA;4BACrC,KAAK,GAAG,CAAC,CAAC,OAAO,OAAO,GAAG,QAAQ,CAAA;4BACnC,KAAK,IAAI,CAAC,CAAC,OAAO,OAAO,IAAI,QAAQ,CAAA;4BACrC,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;4BAC5G,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;wBAC7G,CAAC;oBACH,CAAC;oBACD,2FAA2F;oBAC3F,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;oBAChC,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;oBAClC,IAAI,QAAQ,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;wBACtD,QAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;4BAChB,KAAK,GAAG,CAAC,CAAC,OAAO,QAAQ,GAAG,SAAS,CAAA;4BACrC,KAAK,IAAI,CAAC,CAAC,OAAO,QAAQ,IAAI,SAAS,CAAA;4BACvC,KAAK,GAAG,CAAC,CAAC,OAAO,QAAQ,GAAG,SAAS,CAAA;4BACrC,KAAK,IAAI,CAAC,CAAC,OAAO,QAAQ,IAAI,SAAS,CAAA;4BACvC,KAAK,IAAI,CAAC,CAAC,OAAO,QAAQ,KAAK,SAAS,CAAA;4BACxC,KAAK,IAAI,CAAC,CAAC,OAAO,QAAQ,KAAK,SAAS,CAAA;wBAC1C,CAAC;oBACH,CAAC;oBACD,wDAAwD;oBACxD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;oBAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;oBAC/B,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI;wBAAE,OAAO,QAAQ,KAAK,SAAS,CAAA;oBACnD,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI;wBAAE,OAAO,QAAQ,KAAK,SAAS,CAAA;oBACnD,OAAO,KAAK,CAAA;gBACd,CAAC,EACD,OAAO,CAAC,gBAAgB,EACxB,OAAO,CAAC,MAAM,CACf,CAAA;gBACD,MAAK;YACP,CAAC;YACD,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;gBACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC;oBAC9D,MAAM,IAAI,eAAe,CAAC,SAAS,EAAE,QAAQ,SAAS,yDAAyD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;gBAC3I,CAAC;gBACD,IAAI,IAAY,CAAA;gBAChB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC5B,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACnC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;wBACzB,MAAM,IAAI,eAAe,CAAC,SAAS,EAAE,QAAQ,SAAS,8CAA8C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;oBAClI,CAAC;oBACD,IAAI,GAAG,MAAM,CAAA;gBACf,CAAC;qBAAM,CAAC;oBACN,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;gBACtB,CAAC;gBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;gBAC7C,MAAM,GAAG,QAAQ,CACf,KAAK,EACL,SAAS,EACT,IAAI,CAAC,IAAI,EACT,CAAC,IAAI,CAAC,MAAM,CAAC,EACb,CAAC,GAAG,EAAE,EAAE;oBACN,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;oBACzC,IAAI,KAAK,KAAK,SAAS;wBAAE,OAAO,KAAK,CAAA;oBACrC,OAAO,IAAI,GAAG,KAAK,IAAI,QAAQ,CAAA;gBACjC,CAAC,EACD,OAAO,CAAC,gBAAgB,EACxB,OAAO,CAAC,MAAM,CACf,CAAA;gBACD,MAAK;YACP,CAAC;YACD;gBACE,MAAM,IAAI,eAAe,CAAC,SAAS,EAAE,QAAQ,SAAS,uBAAuB,IAAI,CAAC,SAAS,CAAE,IAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC7H,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACtB,CAAC;IACD,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE,EAAE,OAAO,CAAC,gBAAgB,IAAI,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5H,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC;QAC3G,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM;QAC3B,KAAK,EAAE,OAAO;QACd,YAAY;QACZ,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE;KAC3B,CAAA;AACH,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,gBAAgB,CAAC,MAAoB;IACnD,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,UAAU,MAAM,CAAC,KAAK,CAAC,MAAM,SAAS,CAAC,CAAA;IAC/I,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,UAAU,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,gBAAgB,CAAC,CAAA;QAChJ,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAClH,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC,CAAA;QACjD,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC5C,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,sBAAsB,CAAC,CAAA;QACxF,CAAC;IACH,CAAC;IACD,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAA;QACrH,KAAK,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,iBAAiB,MAAM,YAAY,WAAW,CAAC,MAAM,gBAAgB,WAAW,CAAC,QAAQ,eAAe,WAAW,CAAC,SAAS,GAAG,CAAC,CAAA;IACxL,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAQD;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IAC7E,MAAM,QAAQ,GAAqB,EAAE,CAAA;IACrC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7D,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC3G,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9F,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IACzE,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,6FAA6F;AAC7F,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;AAErC,uGAAuG;AACvG,SAAS,WAAW,CAAC,IAAkB,EAAE,QAAmC;IAC1E,IAAI,OAAO,GAAY,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAA;IACtG,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,OAAO,SAAS,CAAA;YAC/F,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC;gBAAE,OAAO,SAAS,CAAA;YACjF,OAAO,GAAI,OAAmC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC7D,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,OAAO,CAAC,MAAM;gBAAE,OAAO,SAAS,CAAA;YACxE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,yEAAyE;AACzE,SAAS,YAAY,CAAC,MAAc,EAAE,KAAa,EAAE,SAAiB;IACpE,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;AAC9G,CAAC;AAED,mGAAmG;AACnG,SAAS,aAAa,CAAC,OAAgB;IACrC,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAA;IAC/C,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAA;IACvF,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,MAAM,CAAA;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IACxC,OAAO,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;AAC5D,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAkB,EAClB,SAA4C,EAC5C,gBAAwB;IAExB,MAAM,OAAO,GAAmC,EAAE,CAAA;IAClD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,OAAgB,CAAA;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,MAAM,EAAE,WAAW;gBACnB,IAAI,EAAE,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aAChI,CAAC,CAAA;YACF,SAAQ;QACV,CAAC;QACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,oBAAoB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;YACjH,SAAQ;QACV,CAAC;QACD,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvC,MAAM,YAAY,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,OAAe,CAAC,CAAA;YAC1F,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/B,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;gBACtC,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,QAAQ,CAAC,EAAE;oBACf,MAAM,EAAE,cAAc;oBACtB,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrD,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,6CAA6C,QAAQ,CAAC,KAAK,EAAE;iBAC7G,CAAC,CAAA;gBACF,SAAQ;YACV,CAAC;YACD,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,gBAAgB,CAAA;YACxD,IAAI,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;gBAC1D,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,6BAA6B,SAAS,EAAE,EAAE,CAAC,CAAA;YAC7H,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,QAAQ,CAAC,EAAE;oBACf,MAAM,EAAE,UAAU;oBAClB,MAAM,EAAE,YAAY;oBACpB,IAAI,EAAE,SAAS,QAAQ,CAAC,KAAK,wBAAwB,YAAY,8BAA8B,SAAS,EAAE;iBAC3G,CAAC,CAAA;YACJ,CAAC;YACD,SAAQ;QACV,CAAC;QACD,iEAAiE;QACjE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,OAAO,KAAK,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;YACxE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;YAC9J,CAAC;YACD,SAAQ;QACV,CAAC;QACD,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;QACtC,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,MAAM,EAAE,cAAc;YACtB,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,IAAI,EAAE,YAAY,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,OAAO,OAAO,kCAAkC;SACvG,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,CAAA;AACpB,CAAC"}
@@ -4,5 +4,5 @@
4
4
  * @module dsh-data-quality/version
5
5
  */
6
6
  /** The package version reported in persisted reports. */
7
- export declare const VERSION = "0.1.2";
7
+ export declare const VERSION = "0.2.0";
8
8
  //# sourceMappingURL=version.d.ts.map
@@ -4,5 +4,5 @@
4
4
  * @module dsh-data-quality/version
5
5
  */
6
6
  /** The package version reported in persisted reports. */
7
- export const VERSION = '0.1.2';
7
+ export const VERSION = '0.2.0';
8
8
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-data-quality",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "description": "Deterministic data profiling, cleaning, and verification for DeepSeek Harness: a ctx.dataQuality capability seam (Service Definition / local Provider / tool Consumers) with data_profile, data_clean, and data_verify model tools, a frozen cross-plugin verifyCitations contract, durable reports in a storage domain, and data-quality/* session events on hosts that support them.",
5
5
  "author": "dsh-data-quality contributors",
6
6
  "private": false,
package/src/config.ts CHANGED
@@ -7,6 +7,29 @@
7
7
 
8
8
  import z from '@deepseek-ai/schemastery'
9
9
 
10
+ /** Per-dimension scorecard weights (all optional; defaults fill to `1` = equal). */
11
+ export interface ScorecardWeights {
12
+ completeness?: number
13
+ uniqueness?: number
14
+ validity?: number
15
+ consistency?: number
16
+ timeliness?: number
17
+ accuracy?: number
18
+ }
19
+
20
+ /** The six scorecard dimension ids, in report order (kept in sync with `scorecard.ts`). */
21
+ const SCORECARD_DIMENSIONS = ['completeness', 'uniqueness', 'validity', 'consistency', 'timeliness', 'accuracy'] as const
22
+
23
+ /** Equal-weight defaults for {@link ScorecardWeights}. */
24
+ const EQUAL_WEIGHTS: Required<ScorecardWeights> = {
25
+ completeness: 1,
26
+ uniqueness: 1,
27
+ validity: 1,
28
+ consistency: 1,
29
+ timeliness: 1,
30
+ accuracy: 1,
31
+ }
32
+
10
33
  /** Raw plugin config — every field optional; {@link resolveConfig} supplies the defaults. */
11
34
  export interface Config {
12
35
  /** Master switch; `false` mounts nothing. */
@@ -25,6 +48,8 @@ export interface Config {
25
48
  workspaceRoot?: string
26
49
  /** Persist reports to the `data_quality` storage domain. */
27
50
  storeReports?: boolean
51
+ /** Per-dimension weights for the scorecard's weighted overall total (non-negative). */
52
+ scorecardWeights?: ScorecardWeights
28
53
  }
29
54
 
30
55
  /** Fully resolved config handed to the runtime. */
@@ -37,6 +62,7 @@ export interface ResolvedConfig {
37
62
  readonly allowedExtensions: readonly string[]
38
63
  readonly workspaceRoot: string
39
64
  readonly storeReports: boolean
65
+ readonly scorecardWeights: Required<ScorecardWeights>
40
66
  }
41
67
 
42
68
  /** Schemastery schema: the loader validates and fills defaults before `apply`. */
@@ -49,6 +75,16 @@ export const Config: z<Config> = z.object({
49
75
  allowedExtensions: z.array(z.string()).default(['.csv', '.tsv', '.json', '.jsonl']),
50
76
  workspaceRoot: z.string().default(''),
51
77
  storeReports: z.boolean().default(true),
78
+ scorecardWeights: z
79
+ .object({
80
+ completeness: z.number().default(1),
81
+ uniqueness: z.number().default(1),
82
+ validity: z.number().default(1),
83
+ consistency: z.number().default(1),
84
+ timeliness: z.number().default(1),
85
+ accuracy: z.number().default(1),
86
+ })
87
+ .default(EQUAL_WEIGHTS),
52
88
  })
53
89
 
54
90
  /** Throw unless `value` is a positive safe integer. */
@@ -91,6 +127,8 @@ export function resolveConfig(config: Config = {}): ResolvedConfig {
91
127
  throw new TypeError('allowedExtensions must not be empty')
92
128
  }
93
129
 
130
+ const scorecardWeights = resolveScorecardWeights(config.scorecardWeights)
131
+
94
132
  return {
95
133
  enabled: config.enabled ?? true,
96
134
  maxRows,
@@ -100,5 +138,19 @@ export function resolveConfig(config: Config = {}): ResolvedConfig {
100
138
  allowedExtensions,
101
139
  workspaceRoot: config.workspaceRoot ?? '',
102
140
  storeReports: config.storeReports ?? true,
141
+ scorecardWeights,
142
+ }
143
+ }
144
+
145
+ /** Resolve scorecard weights, filling defaults and rejecting non-negative violations loudly. */
146
+ function resolveScorecardWeights(weights: ScorecardWeights = {}): Required<ScorecardWeights> {
147
+ const out = {} as Required<ScorecardWeights>
148
+ for (const dimension of SCORECARD_DIMENSIONS) {
149
+ const value = weights[dimension] ?? 1
150
+ if (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {
151
+ throw new TypeError(`scorecardWeights.${dimension} must be a non-negative finite number, got ${String(value)}`)
152
+ }
153
+ out[dimension] = value
103
154
  }
155
+ return out
104
156
  }
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Delivery contract for `data_clean`: a deterministic pre-delivery validation
3
+ * summary (primary-key/type/dedupe row-count comparison plus uniqueness and
4
+ * non-null regression) and the clean before/after profile diff report. Pure —
5
+ * no I/O, no clock, no RNG; timestamps are injected.
6
+ * @module dsh-data-quality/contract
7
+ */
8
+
9
+ import { isMissing, parseBoolean, parseDate, parseNumeric, throwIfAborted, type Row, type Table } from './dataset.ts'
10
+ import type { CleanResult, CleanRule } from './clean.ts'
11
+ import { profileTable, type ProfileReport } from './profile.ts'
12
+ import type { ScorecardDimensionName } from './scorecard.ts'
13
+
14
+ /** The pre-delivery contract summary attached to a clean run. */
15
+ export interface CleanContractSummary {
16
+ /** Row count before cleaning. */
17
+ readonly inputRows: number
18
+ /** Row count after cleaning. */
19
+ readonly outputRows: number
20
+ /** Rows removed across all rules. */
21
+ readonly removedRows: number
22
+ /** Key columns of the first `dedupe` rule; `null` when no dedupe rule ran (uniqueness then covers full rows). */
23
+ readonly dedupeColumns: string[] | null
24
+ /** Whether the uniqueness key is free of duplicates in the cleaned output. */
25
+ readonly uniqueKeys: boolean
26
+ /** Remaining duplicate rows over the uniqueness key in the cleaned output. */
27
+ readonly remainingDuplicateRows: number
28
+ /** Non-null regression: remaining missing cells in columns a `fill-missing` rule targeted. */
29
+ readonly remainingMissing: Array<{ readonly column: string; readonly count: number }>
30
+ /** Type regression: remaining non-conforming cells in columns a `coerce-type` rule targeted. */
31
+ readonly typeConformance: Array<{ readonly column: string; readonly to: 'number' | 'date' | 'boolean'; readonly invalidCount: number }>
32
+ /** Per-column decision trace: which strategies touched each column and how many rows they affected. */
33
+ readonly columnDecisions: Array<{
34
+ readonly column: string
35
+ readonly decisions: Array<{ readonly strategy: string; readonly affectedRows: number }>
36
+ }>
37
+ }
38
+
39
+ /** The clean before/after profile diff report (persisted under the `clean-diff` report kind). */
40
+ export interface CleanProfileDiff {
41
+ readonly dataset: string
42
+ /** Full profile of the input dataset. */
43
+ readonly before: ProfileReport
44
+ /** Full profile of the cleaned output (including its scorecard). */
45
+ readonly after: ProfileReport
46
+ readonly generatedAt: number
47
+ }
48
+
49
+ /** Count missing cells in one column of the cleaned output. */
50
+ function countMissing(rows: readonly Row[], column: string, signal?: AbortSignal): number {
51
+ let count = 0
52
+ for (const [index, row] of rows.entries()) {
53
+ if (index % 1024 === 0) throwIfAborted(signal)
54
+ if (isMissing(row[column])) count += 1
55
+ }
56
+ return count
57
+ }
58
+
59
+ /** Count present cells in one column that still fail to parse as the requested type. */
60
+ function countNonConforming(rows: readonly Row[], column: string, to: 'number' | 'date' | 'boolean', signal?: AbortSignal): number {
61
+ let count = 0
62
+ for (const [index, row] of rows.entries()) {
63
+ if (index % 1024 === 0) throwIfAborted(signal)
64
+ const cell = row[column]
65
+ if (isMissing(cell)) continue
66
+ const conforms = to === 'number' ? parseNumeric(cell) !== undefined : to === 'date' ? parseDate(cell) !== undefined : parseBoolean(cell) !== undefined
67
+ if (!conforms) count += 1
68
+ }
69
+ return count
70
+ }
71
+
72
+ /**
73
+ * Compute the pre-delivery contract summary from a cleaning run: dedupe
74
+ * before/after row counts, the dedupe key's uniqueness regression, and the
75
+ * non-null/type regressions over the columns the rules targeted.
76
+ * @param result - the cleaning outcome (input/output rows plus cleaned rows).
77
+ * @param rules - the ordered rules that produced `result`.
78
+ * @param options - optional abort signal.
79
+ * @returns the contract summary.
80
+ */
81
+ export function computeCleanContract(
82
+ result: CleanResult,
83
+ rules: readonly CleanRule[],
84
+ options: { signal?: AbortSignal | undefined } = {},
85
+ ): CleanContractSummary {
86
+ const dedupeRule = rules.find((rule) => rule.rule === 'dedupe') as Extract<CleanRule, { rule: 'dedupe' }> | undefined
87
+ const dedupeColumns = dedupeRule === undefined ? null : [...(dedupeRule.columns ?? result.columns)]
88
+ const keyColumns = dedupeColumns ?? result.columns
89
+ const seen = new Set<string>()
90
+ let remainingDuplicateRows = 0
91
+ for (const [index, row] of result.rows.entries()) {
92
+ if (index % 1024 === 0) throwIfAborted(options.signal)
93
+ const key = JSON.stringify(keyColumns.map((column) => row[column] ?? null))
94
+ if (seen.has(key)) {
95
+ remainingDuplicateRows += 1
96
+ } else {
97
+ seen.add(key)
98
+ }
99
+ }
100
+ const remainingMissing = rules
101
+ .filter((rule) => rule.rule === 'fill-missing')
102
+ .map((rule) => {
103
+ const fill = rule as Extract<CleanRule, { rule: 'fill-missing' }>
104
+ return { column: fill.column, count: countMissing(result.rows, fill.column, options.signal) }
105
+ })
106
+ const typeConformance = rules
107
+ .filter((rule) => rule.rule === 'coerce-type')
108
+ .map((rule) => {
109
+ const coerce = rule as Extract<CleanRule, { rule: 'coerce-type' }>
110
+ return { column: coerce.column, to: coerce.to, invalidCount: countNonConforming(result.rows, coerce.column, coerce.to, options.signal) }
111
+ })
112
+ const columnDecisions = traceColumnDecisions(result, rules)
113
+ return {
114
+ inputRows: result.inputRows,
115
+ outputRows: result.outputRows,
116
+ removedRows: result.inputRows - result.outputRows,
117
+ dedupeColumns,
118
+ uniqueKeys: remainingDuplicateRows === 0,
119
+ remainingDuplicateRows,
120
+ remainingMissing,
121
+ typeConformance,
122
+ columnDecisions,
123
+ }
124
+ }
125
+
126
+ /** The columns a single rule targets (single-column rules target one column; trim/dedupe may target many). */
127
+ function ruleColumns(rule: CleanRule, allColumns: readonly string[]): string[] {
128
+ switch (rule.rule) {
129
+ case 'fill-missing':
130
+ case 'coerce-type':
131
+ case 'normalize-unit':
132
+ case 'map-values':
133
+ return [rule.column]
134
+ case 'trim':
135
+ case 'dedupe':
136
+ return [...(rule.columns ?? allColumns)]
137
+ default:
138
+ return []
139
+ }
140
+ }
141
+
142
+ /** Build the per-column decision trace: strategies + affected rows, in dataset column order. */
143
+ function traceColumnDecisions(
144
+ result: CleanResult,
145
+ rules: readonly CleanRule[],
146
+ ): CleanContractSummary['columnDecisions'] {
147
+ const byColumn = new Map<string, Array<{ strategy: string; affectedRows: number }>>()
148
+ for (const [index, rule] of rules.entries()) {
149
+ const log = result.logs[index]
150
+ if (log === undefined) continue
151
+ for (const column of ruleColumns(rule, result.columns)) {
152
+ const list = byColumn.get(column) ?? []
153
+ list.push({ strategy: rule.rule, affectedRows: log.affectedRows })
154
+ byColumn.set(column, list)
155
+ }
156
+ }
157
+ return result.columns
158
+ .filter((column) => byColumn.has(column))
159
+ .map((column) => ({ column, decisions: byColumn.get(column) as Array<{ strategy: string; affectedRows: number }> }))
160
+ }
161
+
162
+ /**
163
+ * Build the clean before/after profile diff: two full {@link ProfileReport}
164
+ * snapshots (input and cleaned output) under one envelope. Reuses the profile
165
+ * engine so the scorecard and duplicate detection stay consistent across the
166
+ * whole plugin.
167
+ * @param input - the input dataset.
168
+ * @param output - the cleaned dataset.
169
+ * @param options - dataset label, injected timestamp, optional weights, optional abort signal.
170
+ * @returns the diff report.
171
+ */
172
+ export function computeCleanProfileDiff(
173
+ input: Table,
174
+ output: Table,
175
+ options: { dataset: string; generatedAt: number; scorecardWeights?: Readonly<Record<ScorecardDimensionName, number>> | undefined; signal?: AbortSignal | undefined },
176
+ ): CleanProfileDiff {
177
+ const before = profileTable(input, {
178
+ dataset: options.dataset,
179
+ generatedAt: options.generatedAt,
180
+ scorecardWeights: options.scorecardWeights,
181
+ signal: options.signal,
182
+ })
183
+ const after = profileTable(output, {
184
+ dataset: options.dataset,
185
+ generatedAt: options.generatedAt,
186
+ scorecardWeights: options.scorecardWeights,
187
+ signal: options.signal,
188
+ })
189
+ return { dataset: options.dataset, before, after, generatedAt: options.generatedAt }
190
+ }