@telora/daemon 0.22.293 → 0.22.306
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.
- package/build-info.json +2 -2
- package/dist/completion/review-exit/review-census-record.d.ts.map +1 -1
- package/dist/completion/review-exit/review-census-record.js +1 -0
- package/dist/completion/review-exit/review-census-record.js.map +1 -1
- package/dist/completion/review-exit/review-exit-deps.d.ts +1 -0
- package/dist/completion/review-exit/review-exit-deps.d.ts.map +1 -1
- package/dist/completion/review-exit/review-exit-phase.js +7 -4
- package/dist/completion/review-exit/review-exit-phase.js.map +1 -1
- package/dist/completion/review-exit-holds/review-exit-verdict-gate.d.ts +17 -1
- package/dist/completion/review-exit-holds/review-exit-verdict-gate.d.ts.map +1 -1
- package/dist/completion/review-exit-holds/review-exit-verdict-gate.js +21 -0
- package/dist/completion/review-exit-holds/review-exit-verdict-gate.js.map +1 -1
- package/dist/completion/state-cascade/standing-approval-convergence.d.ts +7 -2
- package/dist/completion/state-cascade/standing-approval-convergence.d.ts.map +1 -1
- package/dist/completion/state-cascade/standing-approval-convergence.js +56 -31
- package/dist/completion/state-cascade/standing-approval-convergence.js.map +1 -1
- package/dist/completion/state-cascade/standing-approval-stranded.d.ts +39 -0
- package/dist/completion/state-cascade/standing-approval-stranded.d.ts.map +1 -0
- package/dist/completion/state-cascade/standing-approval-stranded.js +142 -0
- package/dist/completion/state-cascade/standing-approval-stranded.js.map +1 -0
- package/dist/composition/commit-gate-context.d.ts.map +1 -1
- package/dist/composition/commit-gate-context.js +2 -1
- package/dist/composition/commit-gate-context.js.map +1 -1
- package/dist/composition/standing-approval-context.d.ts.map +1 -1
- package/dist/composition/standing-approval-context.js +2 -0
- package/dist/composition/standing-approval-context.js.map +1 -1
- package/dist/prompt-sections/persona-sections.d.ts.map +1 -1
- package/dist/prompt-sections/persona-sections.js +3 -0
- package/dist/prompt-sections/persona-sections.js.map +1 -1
- package/dist/prompt-sections/routing-decider-sections.d.ts.map +1 -1
- package/dist/prompt-sections/routing-decider-sections.js +2 -0
- package/dist/prompt-sections/routing-decider-sections.js.map +1 -1
- package/dist/queries/api-client/shared.js +1 -1
- package/dist/queries/escalations/cause-key.d.ts +11 -0
- package/dist/queries/escalations/cause-key.d.ts.map +1 -1
- package/dist/queries/escalations/cause-key.js +15 -0
- package/dist/queries/escalations/cause-key.js.map +1 -1
- package/dist/queries/escalations/escalation-consumption.d.ts.map +1 -1
- package/dist/queries/escalations/escalation-consumption.js +1 -0
- package/dist/queries/escalations/escalation-consumption.js.map +1 -1
- package/dist/queries/escalations/filing-observation.d.ts.map +1 -1
- package/dist/queries/escalations/filing-observation.js +1 -0
- package/dist/queries/escalations/filing-observation.js.map +1 -1
- package/dist/supervision/agent-resolvable-promotion.d.ts +14 -2
- package/dist/supervision/agent-resolvable-promotion.d.ts.map +1 -1
- package/dist/supervision/agent-resolvable-promotion.js +24 -3
- package/dist/supervision/agent-resolvable-promotion.js.map +1 -1
- package/dist/supervision/escalation-filing.js +1 -1
- package/dist/supervision/escalation-suppression.js +1 -1
- package/dist/supervision/focus-delivery-aggregate-phase.d.ts.map +1 -1
- package/dist/supervision/focus-delivery-aggregate-phase.js +1 -0
- package/dist/supervision/focus-delivery-aggregate-phase.js.map +1 -1
- package/dist/supervision/stop-registry.d.ts +1 -0
- package/dist/supervision/stop-registry.d.ts.map +1 -1
- package/dist/supervision/stop-rows-delivery.d.ts +6 -0
- package/dist/supervision/stop-rows-delivery.d.ts.map +1 -1
- package/dist/supervision/stop-rows-delivery.js +20 -0
- package/dist/supervision/stop-rows-delivery.js.map +1 -1
- package/dist/testing/fixtures/api-client.js +1 -1
- package/dist/testing/fixtures/index.js +1 -1
- package/dist/types/index.js +1 -1
- package/dist/verify/gate-config/commit-gate-configured.d.ts +2 -0
- package/dist/verify/gate-config/commit-gate-configured.d.ts.map +1 -1
- package/dist/verify/gate-config/commit-gate-configured.js.map +1 -1
- package/dist/verify/shortfalls/each-table.d.ts +45 -0
- package/dist/verify/shortfalls/each-table.d.ts.map +1 -0
- package/dist/verify/shortfalls/each-table.js +219 -0
- package/dist/verify/shortfalls/each-table.js.map +1 -0
- package/dist/verify/shortfalls/each-title-render.d.ts +67 -0
- package/dist/verify/shortfalls/each-title-render.d.ts.map +1 -0
- package/dist/verify/shortfalls/each-title-render.js +473 -0
- package/dist/verify/shortfalls/each-title-render.js.map +1 -0
- package/dist/verify/shortfalls/generated-test-titles.d.ts +18 -0
- package/dist/verify/shortfalls/generated-test-titles.d.ts.map +1 -0
- package/dist/verify/shortfalls/generated-test-titles.js +232 -0
- package/dist/verify/shortfalls/generated-test-titles.js.map +1 -0
- package/dist/verify/shortfalls/ruling-evidence-resolution.d.ts.map +1 -1
- package/dist/verify/shortfalls/ruling-evidence-resolution.js +6 -2
- package/dist/verify/shortfalls/ruling-evidence-resolution.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,473 @@
|
|
|
1
|
+
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
+
// Pinned by: packages/daemon/src/verify/shortfalls/each-title-render.test.ts,
|
|
3
|
+
// packages/daemon/src/verify/shortfalls/generated-test-titles.test.ts
|
|
4
|
+
// PINNED-BY-END
|
|
5
|
+
/**
|
|
6
|
+
* The titles a test runner gives the rows of a `.each` table: the exact text of
|
|
7
|
+
* each, or null for a row this reader cannot reproduce.
|
|
8
|
+
*
|
|
9
|
+
* verify/shortfalls/generated-test-titles.ts resolves a cited test name only when
|
|
10
|
+
* it IS a title the source generates, so each row's title must be the one the
|
|
11
|
+
* runner prints. Each runner's title algorithm is PORTED here from its source and
|
|
12
|
+
* replayed on the table's literal values (property walks, Number / parseInt run
|
|
13
|
+
* natively on those values); only the value printers are reproduced by hand:
|
|
14
|
+
*
|
|
15
|
+
* jest-each 30 (its table array, template and interpolation modules): an array
|
|
16
|
+
* table whose title has no `%[#Odfijops]` once `%%` is protected, whose
|
|
17
|
+
* elements are all objects and not all arrays, interpolates `$key` (keys
|
|
18
|
+
* longest-first, getPath, `$#` the index); every other array table formats
|
|
19
|
+
* row by row -- `%#` / `%$` first, then per argument `%p` (pretty-format min,
|
|
20
|
+
* depth 1), `%j` (JSON) or Node util.format (whose `%s` of an object is
|
|
21
|
+
* util.inspect at depth 0, compact 3). A tagged-template row interpolates
|
|
22
|
+
* `$key` only.
|
|
23
|
+
* vitest 4 (@vitest/runner formatTitle): `%#` / `%$` first, then printf over the
|
|
24
|
+
* row (format from @vitest/utils) and `$key` via objectAttr + objDisplay.
|
|
25
|
+
*
|
|
26
|
+
* The printers reproduced: pretty-format min; Node util.inspect of literal
|
|
27
|
+
* values that fit one line (depth 0, compact 3, breakLength 80, strEscape
|
|
28
|
+
* quoting); loupe's single-line inspect (vitest `%s` of an object, an array's own
|
|
29
|
+
* toString) and objDisplay below its truncation (40). What they would print
|
|
30
|
+
* otherwise -- a multi-line inspect, a truncated objDisplay, a value the source
|
|
31
|
+
* does not spell out (UNKNOWN), `%o` / `%O` -- makes that row null: no pattern,
|
|
32
|
+
* fail closed. `unknown` (a file naming neither runner) keeps a row only when
|
|
33
|
+
* both runners give it the identical title.
|
|
34
|
+
*
|
|
35
|
+
* A template-literal title's `${...}` parts carry scope values this reader cannot
|
|
36
|
+
* see; they are assumed to hold no placeholder and match any text.
|
|
37
|
+
*
|
|
38
|
+
* Pinned by titles the real runners printed (each-title-render.test.ts). Pure.
|
|
39
|
+
*
|
|
40
|
+
* @module verify/shortfalls/each-title-render
|
|
41
|
+
*/
|
|
42
|
+
import { UNKNOWN } from './each-table.js';
|
|
43
|
+
/** The runner a test file's own imports / globals name, or unknown when they name neither or both. */
|
|
44
|
+
export function eachRunnerOf(source) {
|
|
45
|
+
const vitest = /\bfrom\s+['"]vitest['"]|require\(\s*['"]vitest['"]\s*\)|\bvi\.(?:fn|mock|spyOn|hoisted)\b/.test(source);
|
|
46
|
+
const jest = /\bfrom\s+['"]@jest\/globals['"]|require\(\s*['"]@jest\/globals['"]\s*\)|\bjest\.(?:fn|mock|spyOn)\b/.test(source);
|
|
47
|
+
return vitest === jest ? 'unknown' : vitest ? 'vitest' : 'jest';
|
|
48
|
+
}
|
|
49
|
+
/** Raised where a runner would print something this reader does not reproduce; the row gets no title. */
|
|
50
|
+
class NotReproduced extends Error {
|
|
51
|
+
}
|
|
52
|
+
const fail = (why) => { throw new NotReproduced(why); };
|
|
53
|
+
/** Whether `v` is spelled out entirely (no UNKNOWN anywhere in it). */
|
|
54
|
+
function isPlain(v) {
|
|
55
|
+
if (v === UNKNOWN)
|
|
56
|
+
return false;
|
|
57
|
+
if (Array.isArray(v))
|
|
58
|
+
return v.every(isPlain);
|
|
59
|
+
if (typeof v === 'object' && v !== null)
|
|
60
|
+
return Object.values(v).every(isPlain);
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
function plain(v) {
|
|
64
|
+
return isPlain(v) ? v : fail('a value the source does not spell out');
|
|
65
|
+
}
|
|
66
|
+
const isPrimitive = (v) => Object(v) !== v;
|
|
67
|
+
const hasOwn = (o, k) => Object.prototype.hasOwnProperty.call(o, k);
|
|
68
|
+
// ── printers ──────────────────────────────────────────────────────────
|
|
69
|
+
/** pretty-format `{ min: true, maxDepth: 1 }`: strings double-quoted (only `"` and `\` escaped), keys sorted. */
|
|
70
|
+
export function prettyMin(v, depth = 0) {
|
|
71
|
+
if (typeof v === 'string')
|
|
72
|
+
return `"${v.replace(/["\\]/g, '\\$&')}"`;
|
|
73
|
+
if (Object.is(v, -0))
|
|
74
|
+
return '-0';
|
|
75
|
+
if (v === null || v === undefined || typeof v === 'number' || typeof v === 'boolean')
|
|
76
|
+
return String(v);
|
|
77
|
+
if (Array.isArray(v))
|
|
78
|
+
return depth >= 1 ? '[Array]' : `[${v.map((x) => prettyMin(x, depth + 1)).join(', ')}]`;
|
|
79
|
+
if (typeof v === 'object') {
|
|
80
|
+
if (depth >= 1)
|
|
81
|
+
return '[Object]';
|
|
82
|
+
const o = v;
|
|
83
|
+
return `{${Object.keys(o).sort().map((k) => `${prettyMin(k)}: ${prettyMin(o[k], depth + 1)}`).join(', ')}}`;
|
|
84
|
+
}
|
|
85
|
+
return fail('pretty-format of a non-literal');
|
|
86
|
+
}
|
|
87
|
+
const NODE_META = { 8: '\\b', 9: '\\t', 10: '\\n', 12: '\\f', 13: '\\r' };
|
|
88
|
+
/** Node util.inspect's quoting of a string (strEscape): the quote it picks, `\\` and that quote escaped, control characters as `\\n` / `\\x0B`. */
|
|
89
|
+
function nodeString(s) {
|
|
90
|
+
const quote = !s.includes("'") ? "'" : !s.includes('"') ? '"' : !s.includes('`') && !s.includes('${') ? '`' : "'";
|
|
91
|
+
let out = '';
|
|
92
|
+
for (const ch of s) {
|
|
93
|
+
const code = ch.charCodeAt(0);
|
|
94
|
+
if (ch === quote || ch === '\\')
|
|
95
|
+
out += `\\${ch}`;
|
|
96
|
+
else if (code < 0x20 || code === 0x7f)
|
|
97
|
+
out += NODE_META[code] ?? `\\x${code.toString(16).toUpperCase().padStart(2, '0')}`;
|
|
98
|
+
else
|
|
99
|
+
out += ch;
|
|
100
|
+
}
|
|
101
|
+
return `${quote}${out}${quote}`;
|
|
102
|
+
}
|
|
103
|
+
const NODE_KEY_RE = /^[a-zA-Z_][a-zA-Z_0-9]*$/;
|
|
104
|
+
/** Node util.inspect(v, { depth: 0, compact: 3, breakLength: 80 }) of a literal value; fails when it would span lines. */
|
|
105
|
+
function nodeInspect(v, nested = false) {
|
|
106
|
+
if (typeof v === 'string') {
|
|
107
|
+
if (nested && v.length > 16 && v.length > 76 && v.includes('\n'))
|
|
108
|
+
fail('a string Node splits across lines');
|
|
109
|
+
return nodeString(v);
|
|
110
|
+
}
|
|
111
|
+
if (Object.is(v, -0))
|
|
112
|
+
return '-0';
|
|
113
|
+
if (v === null || v === undefined || typeof v === 'number' || typeof v === 'boolean')
|
|
114
|
+
return String(v);
|
|
115
|
+
if (Array.isArray(v)) {
|
|
116
|
+
if (v.length === 0)
|
|
117
|
+
return '[]';
|
|
118
|
+
if (nested)
|
|
119
|
+
return '[Array]';
|
|
120
|
+
if (v.length > 6)
|
|
121
|
+
fail('an array Node may group into columns');
|
|
122
|
+
return singleLine(v.map((x) => nodeInspect(x, true)), '[', ']');
|
|
123
|
+
}
|
|
124
|
+
if (typeof v === 'object' && v !== null) {
|
|
125
|
+
const o = v;
|
|
126
|
+
const keys = Object.keys(o);
|
|
127
|
+
if (keys.length === 0)
|
|
128
|
+
return '{}';
|
|
129
|
+
if (nested)
|
|
130
|
+
return '[Object]';
|
|
131
|
+
return singleLine(keys.map((k) => `${NODE_KEY_RE.test(k) ? k : nodeString(k)}: ${nodeInspect(o[k], true)}`), '{', '}');
|
|
132
|
+
}
|
|
133
|
+
return fail('inspect of a non-literal');
|
|
134
|
+
}
|
|
135
|
+
/** Node's reduceToSingleString at the top level: one line when isBelowBreakLength, else (multi-line) not reproduced. */
|
|
136
|
+
function singleLine(output, open, close) {
|
|
137
|
+
const start = output.length + open.length + 10;
|
|
138
|
+
let total = output.length + start;
|
|
139
|
+
if (total + output.length > 80)
|
|
140
|
+
fail('inspect output over the break length');
|
|
141
|
+
for (const entry of output) {
|
|
142
|
+
total += entry.length;
|
|
143
|
+
if (total > 80)
|
|
144
|
+
fail('inspect output over the break length');
|
|
145
|
+
}
|
|
146
|
+
return `${open} ${output.join(', ')} ${close}`;
|
|
147
|
+
}
|
|
148
|
+
const LOUPE_KEY_RE = /^[a-zA-Z_][a-zA-Z_0-9]*$/;
|
|
149
|
+
/**
|
|
150
|
+
* loupe's stringEscapeChars, as a test on one UTF-16 code unit (its regex has no `u`
|
|
151
|
+
* flag): `'`, C0 / C1 controls, and the invisible format ranges it lists. `\\` is
|
|
152
|
+
* in its escape map but not in this set, so it is never escaped.
|
|
153
|
+
*/
|
|
154
|
+
function loupeEscapes(code) {
|
|
155
|
+
return code === 0x27 || code <= 0x1f || (code >= 0x7f && code <= 0x9f) || code === 0xad
|
|
156
|
+
|| (code >= 0x600 && code <= 0x604) || code === 0x70f || code === 0x17b4 || code === 0x17b5
|
|
157
|
+
|| (code >= 0x200c && code <= 0x200f) || (code >= 0x2028 && code <= 0x202f)
|
|
158
|
+
|| (code >= 0x2060 && code <= 0x206f) || code === 0xfeff || code >= 0xfff0;
|
|
159
|
+
}
|
|
160
|
+
const LOUPE_ESCAPES = { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', "'": "\\'" };
|
|
161
|
+
/** loupe's truncate: past `length`, cut to `length - 1` and append `…`, stepping back off a high surrogate. */
|
|
162
|
+
function loupeTruncate(s, length) {
|
|
163
|
+
const tail = '\u2026';
|
|
164
|
+
if (tail.length > length && s.length > tail.length)
|
|
165
|
+
return tail;
|
|
166
|
+
if (s.length > length && s.length > tail.length) {
|
|
167
|
+
let end = length - tail.length;
|
|
168
|
+
if (end > 0 && (s[end - 1] ?? '') >= '\ud800' && (s[end - 1] ?? '') <= '\udbff')
|
|
169
|
+
end -= 1;
|
|
170
|
+
return `${s.slice(0, end)}${tail}`;
|
|
171
|
+
}
|
|
172
|
+
return s;
|
|
173
|
+
}
|
|
174
|
+
/** loupe's inspectString: escape, then truncate to `truncate - 2` inside single quotes (untruncated by default). */
|
|
175
|
+
function loupeString(s, truncate = Infinity) {
|
|
176
|
+
let escaped = '';
|
|
177
|
+
for (let i = 0; i < s.length; i++) {
|
|
178
|
+
const ch = s[i] ?? '';
|
|
179
|
+
const code = s.charCodeAt(i);
|
|
180
|
+
escaped += loupeEscapes(code) ? (LOUPE_ESCAPES[ch] ?? `\\u${`0000${code.toString(16)}`.slice(-4)}`) : ch;
|
|
181
|
+
}
|
|
182
|
+
return `'${loupeTruncate(escaped, truncate - 2)}'`;
|
|
183
|
+
}
|
|
184
|
+
/** loupe's single-line inspect of a literal value, untruncated (vitest's %s of a structure). */
|
|
185
|
+
function loupeInspect(v) {
|
|
186
|
+
if (typeof v === 'string')
|
|
187
|
+
return loupeString(v);
|
|
188
|
+
if (Object.is(v, -0))
|
|
189
|
+
return '-0';
|
|
190
|
+
if (v === 0)
|
|
191
|
+
return '+0';
|
|
192
|
+
if (v === null || v === undefined || typeof v === 'number' || typeof v === 'boolean')
|
|
193
|
+
return String(v);
|
|
194
|
+
if (Array.isArray(v))
|
|
195
|
+
return v.length === 0 ? '[]' : `[ ${v.map((x) => loupeInspect(x)).join(', ')} ]`;
|
|
196
|
+
if (typeof v === 'object') {
|
|
197
|
+
const o = v;
|
|
198
|
+
const keys = Object.keys(o);
|
|
199
|
+
if (keys.length === 0)
|
|
200
|
+
return '{}';
|
|
201
|
+
return `{ ${keys.map((k) => `${LOUPE_KEY_RE.test(k) ? k : loupeString(k)}: ${loupeInspect(o[k])}`).join(', ')} }`;
|
|
202
|
+
}
|
|
203
|
+
return fail('loupe of a non-literal');
|
|
204
|
+
}
|
|
205
|
+
function containerDepth(v) {
|
|
206
|
+
if (Array.isArray(v))
|
|
207
|
+
return 1 + Math.max(0, ...v.map(containerDepth));
|
|
208
|
+
if (typeof v === 'object' && v !== null)
|
|
209
|
+
return 1 + Math.max(0, ...Object.values(v).map(containerDepth));
|
|
210
|
+
return 0;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* vitest objDisplay (truncate 40): a string as loupe prints it (escaped, then cut
|
|
214
|
+
* to 38 with `…`); a structure whose untruncated inspect is shorter than 40 and
|
|
215
|
+
* nested no deeper than observed printing whole (3 levels). A longer structure is
|
|
216
|
+
* summarised by rules not reproduced here.
|
|
217
|
+
*/
|
|
218
|
+
function loupeDisplay(v) {
|
|
219
|
+
if (typeof v === 'string')
|
|
220
|
+
return loupeString(v, 40); // objDisplay returns a string's inspect at any length
|
|
221
|
+
if (containerDepth(v) > 3)
|
|
222
|
+
fail('nesting deeper than observed');
|
|
223
|
+
const shown = loupeInspect(v);
|
|
224
|
+
return shown.length >= 40 && typeof v === 'object' && v !== null ? fail('objDisplay truncation') : shown;
|
|
225
|
+
}
|
|
226
|
+
/** `%d` / `%i` / `%f` over one value, as Node and @vitest/utils both compute them (formatNumber: -0 as `-0`). */
|
|
227
|
+
function numeric(spec, v, minusZero) {
|
|
228
|
+
plain(v);
|
|
229
|
+
const n = spec === 'd' ? Number(v) : spec === 'i' ? Number.parseInt(String(v)) : Number.parseFloat(String(v));
|
|
230
|
+
return minusZero && Object.is(n, -0) ? '-0' : n.toString();
|
|
231
|
+
}
|
|
232
|
+
// ── jest-each 30 ──────────────────────────────────────────────────────
|
|
233
|
+
const JEST_SUPPORTED = /%[#Odfijops]/;
|
|
234
|
+
const JEST_ESCAPE = '@@__JEST_EACH_PLACEHOLDER_ESCAPE__@@';
|
|
235
|
+
/** Node util.format(fmt, arg) with the one argument jest-each passes it. */
|
|
236
|
+
function nodeFormat1(fmt, arg) {
|
|
237
|
+
let out = '';
|
|
238
|
+
let last = 0;
|
|
239
|
+
let consumed = false;
|
|
240
|
+
for (let i = 0; i < fmt.length - 1; i++) {
|
|
241
|
+
if (fmt[i] !== '%')
|
|
242
|
+
continue;
|
|
243
|
+
const c = fmt[i + 1] ?? '';
|
|
244
|
+
if (c === '%') {
|
|
245
|
+
out += fmt.slice(last, i);
|
|
246
|
+
last = i + 1;
|
|
247
|
+
i++;
|
|
248
|
+
continue;
|
|
249
|
+
}
|
|
250
|
+
if (consumed || !'sjdOoifc'.includes(c))
|
|
251
|
+
continue;
|
|
252
|
+
let piece;
|
|
253
|
+
if (c === 's') {
|
|
254
|
+
plain(arg);
|
|
255
|
+
piece = typeof arg === 'number' ? (Object.is(arg, -0) ? '-0' : String(arg))
|
|
256
|
+
: typeof arg !== 'object' || arg === null ? String(arg) : nodeInspect(arg);
|
|
257
|
+
}
|
|
258
|
+
else if (c === 'j')
|
|
259
|
+
piece = String(JSON.stringify(plain(arg)));
|
|
260
|
+
else if (c === 'd' || c === 'i' || c === 'f')
|
|
261
|
+
piece = numeric(c, arg, true);
|
|
262
|
+
else if (c === 'c')
|
|
263
|
+
piece = '';
|
|
264
|
+
else
|
|
265
|
+
piece = fail('%o / %O');
|
|
266
|
+
out += fmt.slice(last, i) + piece;
|
|
267
|
+
last = i + 2;
|
|
268
|
+
i++;
|
|
269
|
+
consumed = true;
|
|
270
|
+
}
|
|
271
|
+
out += fmt.slice(last);
|
|
272
|
+
if (!consumed)
|
|
273
|
+
out += ` ${typeof arg === 'string' ? arg : nodeInspect(plain(arg))}`;
|
|
274
|
+
return out;
|
|
275
|
+
}
|
|
276
|
+
/** jest-each getPath: stop at the first key the current value does not own. */
|
|
277
|
+
function jestGetPath(template, path) {
|
|
278
|
+
let cur = template;
|
|
279
|
+
for (const head of path) {
|
|
280
|
+
if (cur === null)
|
|
281
|
+
return 'null';
|
|
282
|
+
if (cur === undefined)
|
|
283
|
+
return 'undefined';
|
|
284
|
+
if (cur === UNKNOWN)
|
|
285
|
+
return fail('a value the source does not spell out');
|
|
286
|
+
if (!head || !hasOwn(cur, head))
|
|
287
|
+
return cur;
|
|
288
|
+
cur = cur[head];
|
|
289
|
+
}
|
|
290
|
+
if (cur === null)
|
|
291
|
+
return 'null';
|
|
292
|
+
if (cur === undefined)
|
|
293
|
+
return 'undefined';
|
|
294
|
+
return cur;
|
|
295
|
+
}
|
|
296
|
+
const escapeStrForRegex = (s) => s.replace(/[$()*+.?[\\\]^{|}]/g, '\\$&');
|
|
297
|
+
/** jest-each interpolateVariables. */
|
|
298
|
+
function jestInterpolate(title, template, index) {
|
|
299
|
+
const keys = Object.keys(template).filter((k) => k.length > 0).sort((a, b) => b.length - a.length);
|
|
300
|
+
if (keys.length === 0)
|
|
301
|
+
return title.replace('$#', `${index}`);
|
|
302
|
+
const re = new RegExp(`\\$(${keys.map(escapeStrForRegex).join('|')})[.\\w]*`, 'g');
|
|
303
|
+
return title.replace(re, (match) => {
|
|
304
|
+
const value = plain(jestGetPath(template, match.slice(1).split('.')));
|
|
305
|
+
return isPrimitive(value) ? String(value) : prettyMin(value);
|
|
306
|
+
}).replace('$#', `${index}`);
|
|
307
|
+
}
|
|
308
|
+
/** jest-each formatTitle for one array-table row. */
|
|
309
|
+
function jestFormatTitle(title, row, index) {
|
|
310
|
+
let t = title.split('%%').join(JEST_ESCAPE).replace('%#', index.toString()).replace('%$', (index + 1).toString());
|
|
311
|
+
for (const value of row) {
|
|
312
|
+
const placeholder = JEST_SUPPORTED.exec(t)?.[0];
|
|
313
|
+
if (placeholder === undefined)
|
|
314
|
+
continue;
|
|
315
|
+
const v = typeof value === 'string' ? value.split('%').join(JEST_ESCAPE) : value;
|
|
316
|
+
if (placeholder === '%p')
|
|
317
|
+
t = t.replace('%p', () => prettyMin(plain(v)));
|
|
318
|
+
else if (placeholder === '%j')
|
|
319
|
+
t = t.replace('%j', () => String(JSON.stringify(plain(v))));
|
|
320
|
+
else
|
|
321
|
+
t = nodeFormat1(t, v);
|
|
322
|
+
}
|
|
323
|
+
return t.split(JEST_ESCAPE).join('%');
|
|
324
|
+
}
|
|
325
|
+
function jestTitles(title, table) {
|
|
326
|
+
if (table.kind === 'template')
|
|
327
|
+
return table.rows.map((row, i) => attempt(() => jestInterpolate(title, row, i)));
|
|
328
|
+
const items = table.items;
|
|
329
|
+
if (items.some((x) => x === UNKNOWN))
|
|
330
|
+
return items.map(() => null); // the table's shape decides every row's path
|
|
331
|
+
const isTable = items.every(Array.isArray);
|
|
332
|
+
const templates = !JEST_SUPPORTED.test(title.split('%%').join(JEST_ESCAPE))
|
|
333
|
+
&& !isTable && items.every((c) => c !== null && typeof c === 'object');
|
|
334
|
+
if (templates) {
|
|
335
|
+
return items.map((t, i) => attempt(() => jestInterpolate(title, t, i).split('%%').join('%')));
|
|
336
|
+
}
|
|
337
|
+
const rows = isTable ? items : items.map((c) => [c]);
|
|
338
|
+
return rows.map((row, i) => attempt(() => jestFormatTitle(title, row, i)));
|
|
339
|
+
}
|
|
340
|
+
// ── vitest 4 ──────────────────────────────────────────────────────────
|
|
341
|
+
const VITEST_FORMAT_RE = /%[sdjifoOc%]/g;
|
|
342
|
+
/** @vitest/utils format(spec, value), for the one value formatTitle passes it. */
|
|
343
|
+
function vitestFormat(spec, v) {
|
|
344
|
+
if (spec === '%%')
|
|
345
|
+
return `% ${isPrimitive(plain(v)) ? String(v) : loupeInspect(v)}`;
|
|
346
|
+
if (spec === '%s') {
|
|
347
|
+
plain(v);
|
|
348
|
+
if (typeof v === 'number' && Object.is(v, -0))
|
|
349
|
+
return '-0';
|
|
350
|
+
if (Array.isArray(v))
|
|
351
|
+
return String(v); // an array's own toString, which @vitest/utils prefers to inspect
|
|
352
|
+
return typeof v === 'object' && v !== null ? loupeInspect(v) : String(v);
|
|
353
|
+
}
|
|
354
|
+
if (spec === '%d')
|
|
355
|
+
return numeric('d', v, false);
|
|
356
|
+
if (spec === '%i')
|
|
357
|
+
return numeric('i', v, false);
|
|
358
|
+
if (spec === '%f')
|
|
359
|
+
return numeric('f', v, false);
|
|
360
|
+
if (spec === '%j')
|
|
361
|
+
return String(JSON.stringify(plain(v)));
|
|
362
|
+
if (spec === '%c')
|
|
363
|
+
return '';
|
|
364
|
+
return fail('%o / %O');
|
|
365
|
+
}
|
|
366
|
+
/** @vitest/utils objectAttr. */
|
|
367
|
+
function vitestAttr(source, path, fallback) {
|
|
368
|
+
let result = source;
|
|
369
|
+
for (const p of path.replace(/\[(\d+)\]/g, '.$1').split('.')) {
|
|
370
|
+
if (result === UNKNOWN)
|
|
371
|
+
return fail('a value the source does not spell out');
|
|
372
|
+
result = new Object(result)[p];
|
|
373
|
+
if (result === undefined)
|
|
374
|
+
return fallback;
|
|
375
|
+
}
|
|
376
|
+
return result;
|
|
377
|
+
}
|
|
378
|
+
/** @vitest/runner formatTitle for one row's items. */
|
|
379
|
+
function vitestFormatTitle(template, items, idx) {
|
|
380
|
+
let t = template;
|
|
381
|
+
if (t.includes('%#') || t.includes('%$')) {
|
|
382
|
+
t = t.replace(/%%/g, '__vitest_escaped_%__').replace(/%#/g, `${idx}`).replace(/%\$/g, `${idx + 1}`).replace(/__vitest_escaped_%__/g, '%%');
|
|
383
|
+
}
|
|
384
|
+
if (t.includes('%f') && items.some((x) => Object.is(x, -0)))
|
|
385
|
+
fail('the -0 %f rewrite');
|
|
386
|
+
const count = t.split('%').length - 1;
|
|
387
|
+
const first = items[0];
|
|
388
|
+
const isObjectItem = first !== null && typeof first === 'object' && !Array.isArray(first);
|
|
389
|
+
const attribute = (s) => s.replace(/\$([$\w.]+)/g, (_m, key) => {
|
|
390
|
+
const isArrayKey = /^\d+$/.test(key);
|
|
391
|
+
if (!isObjectItem && !isArrayKey)
|
|
392
|
+
return `$${key}`;
|
|
393
|
+
const arrayElement = isArrayKey ? vitestAttr(items, key, undefined) : undefined;
|
|
394
|
+
const value = isObjectItem ? vitestAttr(first, key, arrayElement) : arrayElement;
|
|
395
|
+
return loupeDisplay(plain(value));
|
|
396
|
+
});
|
|
397
|
+
let out = '';
|
|
398
|
+
let last = 0;
|
|
399
|
+
let i = 0;
|
|
400
|
+
for (const m of t.matchAll(VITEST_FORMAT_RE)) {
|
|
401
|
+
if ((m.index ?? 0) > last)
|
|
402
|
+
out += attribute(t.slice(last, m.index));
|
|
403
|
+
out += i < count ? vitestFormat(m[0], items[i++]) : m[0];
|
|
404
|
+
last = (m.index ?? 0) + m[0].length;
|
|
405
|
+
}
|
|
406
|
+
if (last < t.length)
|
|
407
|
+
out += attribute(t.slice(last));
|
|
408
|
+
return out;
|
|
409
|
+
}
|
|
410
|
+
function vitestTitles(title, table) {
|
|
411
|
+
const rows = table.kind === 'template'
|
|
412
|
+
? table.rows.map((r) => [r])
|
|
413
|
+
: table.items.map((i) => (i === UNKNOWN ? [UNKNOWN] : Array.isArray(i) ? i : [i]));
|
|
414
|
+
return rows.map((items, idx) => attempt(() => {
|
|
415
|
+
if (items.length === 1 && items[0] === UNKNOWN)
|
|
416
|
+
fail('a row the source does not spell out');
|
|
417
|
+
return vitestFormatTitle(title, items, idx);
|
|
418
|
+
}));
|
|
419
|
+
}
|
|
420
|
+
// ── shared ────────────────────────────────────────────────────────────
|
|
421
|
+
function attempt(render) {
|
|
422
|
+
try {
|
|
423
|
+
return render();
|
|
424
|
+
}
|
|
425
|
+
catch (err) {
|
|
426
|
+
if (err instanceof NotReproduced || err instanceof TypeError)
|
|
427
|
+
return null;
|
|
428
|
+
throw err;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
/** A marker standing in for a `${...}` part while the runner's algorithm runs over the whole title. */
|
|
432
|
+
const marker = (k) => `\uE001${k}\uE002`;
|
|
433
|
+
/** A rendered title cut at its markers: the literal segments around each `${...}`; null unless every marker survived once, in order. */
|
|
434
|
+
function segmentsOf(rendered, wildcards) {
|
|
435
|
+
if (rendered === null)
|
|
436
|
+
return null;
|
|
437
|
+
const segments = [];
|
|
438
|
+
let rest = rendered;
|
|
439
|
+
for (let k = 0; k < wildcards; k++) {
|
|
440
|
+
const at = rest.indexOf(marker(k));
|
|
441
|
+
if (at < 0)
|
|
442
|
+
return null;
|
|
443
|
+
segments.push(rest.slice(0, at));
|
|
444
|
+
rest = rest.slice(at + marker(k).length);
|
|
445
|
+
}
|
|
446
|
+
if (rest.includes('\uE001'))
|
|
447
|
+
return null;
|
|
448
|
+
segments.push(rest);
|
|
449
|
+
return segments;
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Each row's title exactly as `runner` names the test, as the literal segments
|
|
453
|
+
* between the title's `${...}` parts (one segment when it has none), or null for
|
|
454
|
+
* a row not reproduced. An unknown runner keeps a row only when vitest and jest
|
|
455
|
+
* give it the identical title.
|
|
456
|
+
*/
|
|
457
|
+
export function renderTableTitles(parts, table, runner) {
|
|
458
|
+
let k = 0;
|
|
459
|
+
const title = parts.map((p) => (p.wildcard ? marker(k++) : p.text)).join('');
|
|
460
|
+
const jest = runner === 'vitest' ? null : jestTitles(title, table);
|
|
461
|
+
const vitest = runner === 'jest' ? null : vitestTitles(title, table);
|
|
462
|
+
const pick = (i) => {
|
|
463
|
+
if (runner === 'jest')
|
|
464
|
+
return jest?.[i] ?? null;
|
|
465
|
+
if (runner === 'vitest')
|
|
466
|
+
return vitest?.[i] ?? null;
|
|
467
|
+
const j = jest?.[i] ?? null;
|
|
468
|
+
return j !== null && j === (vitest?.[i] ?? null) ? j : null;
|
|
469
|
+
};
|
|
470
|
+
const size = table.kind === 'array' ? table.items.length : table.rows.length;
|
|
471
|
+
return Array.from({ length: size }, (_x, i) => segmentsOf(pick(i), k));
|
|
472
|
+
}
|
|
473
|
+
//# sourceMappingURL=each-title-render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"each-title-render.js","sourceRoot":"","sources":["../../../src/verify/shortfalls/each-title-render.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type EachRunner, type EachTableInput } from './each-title-render.js';
|
|
2
|
+
/**
|
|
3
|
+
* One pattern per table row an each-style title generates under `runner`: the
|
|
4
|
+
* row's exact title (each-title-render.ts), with a template title's `${...}`
|
|
5
|
+
* substitutions matching any text. Rows whose title is not reproduced contribute
|
|
6
|
+
* none.
|
|
7
|
+
*/
|
|
8
|
+
export declare function eachTitlePatterns(title: string, table: EachTableInput, runner: EachRunner, template?: boolean): RegExp[];
|
|
9
|
+
/** A pattern for a template-literal title: every `${...}` (braces balanced) matches any text. */
|
|
10
|
+
export declare function templateTitlePattern(body: string): RegExp;
|
|
11
|
+
/** Every generated test title in `source`, as patterns an expanded name matches. Pure. */
|
|
12
|
+
export declare function generatedTitlePatterns(source: string): RegExp[];
|
|
13
|
+
/**
|
|
14
|
+
* Whether `testName` is the expanded name of a test `source` generates: the whole
|
|
15
|
+
* name, or its last ` > ` segment, matches one generated title's pattern. Pure.
|
|
16
|
+
*/
|
|
17
|
+
export declare function matchesGeneratedTestTitle(source: string, testName: string): boolean;
|
|
18
|
+
//# sourceMappingURL=generated-test-titles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-test-titles.d.ts","sourceRoot":"","sources":["../../../src/verify/shortfalls/generated-test-titles.ts"],"names":[],"mappings":"AAuCA,OAAO,EAAmC,KAAK,UAAU,EAAE,KAAK,cAAc,EAAkB,MAAM,wBAAwB,CAAC;AAuG/H;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,UAAQ,GAAG,MAAM,EAAE,CAKtH;AAyBD,iGAAiG;AACjG,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGzD;AA2BD,0FAA0F;AAC1F,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAM/D;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAMnF"}
|