inspector/clients/web/src/test
Repository files (latest commit first)
Filename Latest commit message Latest commit date
cliffhall 7bcf155e06 fix: scope the value ceiling to the names a template references
Addresses Copilot's round-19 review on #2035 -- a divergence introduced by
my own round-14 guard rather than by the original code.

The SDK validated a value inside `encodeValue`, i.e. only after looking one
up by a DECLARED name. The restored guard checked the caller's whole map, so
an unrelated entry failed a template that never mentions it. Measured on
9caac43d:

  tryExpandUriTemplate("x://{id}", { id: "7", stale: "a".repeat(1_000_001) })
    =>  error: The value for "stale" exceeds the 1000000-character limit

RFC 6570 ignores an extra variable, so this refused a perfectly valid read.
`valueLengthError` now takes the names to consider and both callers pass the
template's declared set.

Copilot's second half is worth taking on its own: strict expansion parsed
the template THREE times -- inside `templateError`, again for the name list,
again to expand -- and the template is server-controlled and may be 1 MB.
It is now parsed once and reused, with validation split into
`sdkTemplateError` (the constructor's unclosed-brace and length/count
limits) and `partsError` (this module's own grammar), so `templateError` and
strict expansion share both halves rather than duplicating either.

npm run ci passes.

Signed-off-by: cliffhall <cliff@futurescale.com>
2026-08-17 01:54:37 -04:00
..
core fix: scope the value ceiling to the names a template references 2026-08-17 01:54:37 -04:00
fixtures Thread cacheMode through managed list refresh via SDK cache-aware verbs (#1721) (#1723) 2026-07-19 01:06:31 -04:00
integration test: pin the InspectorClient wiring, and correct a false claim about the SDK 2026-08-17 00:59:30 -04:00
leakedTimers.test.tsx fix(test): treat timer handles as opaque; the numeric guard never matched 2026-08-12 01:23:21 -04:00
PreviewAnnotations.stories.tsx chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
renderWithMantine.tsx fix(test): cancel queued frames before sweeping timers 2026-08-12 00:58:44 -04:00
scrollAreaStoryAssertions.ts chore(lint): enable no-floating-promises in all five ESLint scopes 2026-08-16 20:57:32 -04:00
setup.ts fix(test): treat timer handles as opaque; the numeric guard never matched 2026-08-12 01:23:21 -04:00