Tags: techouse/qs
Tags
🔖 release v1.7.1
## 1.7.1
* [FIX] restore robust cyclic detection when `filter` callbacks wrap values in fresh containers by tracking object identity before filter/date transformations
* [FIX] improve deep path handling in encoder key materialization/dot-encoding via iterative `KeyPathNode` caching (avoids recursive overflow risk and reuses ancestor caches)
* [CHORE] refactor encoder internals to share immutable frame config through new `EncodeConfig` and reduce per-frame option duplication
* [CHORE] replace `weak_map` usage in encode cycle tracking with identity-based `Set<Object>` side-channel and remove `weak_map` dependency
* [CHORE] expand encoder regression coverage with new tests for filter-wrapped cycles, `KeyPathNode` caching/encoding edge cases, and `EncodeConfig.copyWith` sentinel behavior
* [CHORE] refine decode internals with clearer duplicate-handling branching and a small dot-decoding fast-path guard (`cleanRoot.contains('%2')`)
🔖 release v1.7.0
## 1.7.0
* [FEAT] add `DecodeOptions.throwOnLimitExceeded` for strict limit enforcement on parameter, list, and depth overflows
* [FIX] tolerate malformed UTF-8 when encoding `ByteBuffer` values to match Node `Buffer.toString('utf8')`
* [FIX] encode `ByteBuffer` values via charset even when `encode=false` (avoid `Instance of 'ByteBuffer'` output)
* [FIX] ensure invalid charset in `Utils.encode` consistently throws `ArgumentError`
* [FIX] improve merge semantics for lists/maps (hole replacement, undefined normalization under `parseLists=false`, and non-mutating list/set merges)
* [FIX] add runtime validation and DecodeOptions constructor asserts for invalid charsets and inconsistent dot options
* [CHORE] refactor encode/merge internals to stack-based frames (`EncodeFrame`, `MergeFrame`, `MergePhase`) for deep-nesting safety
* [CHORE] expand coverage for encode/decode/merge edge cases and add a shared `FakeEncoding` test helper
🔖 release v1.5.3 ## 1.5.3 * [FIX] fix handling of degenerate dot cases in key splitting logic * [FIX] fix bracketed key detection in dot decoding logic * [FIX] fix normalization of synthetic bracket segments for unterminated groups in key decoding * [FIX] fix list limit error messaging and improve bracket counting logic in key decoding * [FIX] fix list parsing logic by removing unnecessary bracketed check for index assignment * [CHORE] add comprehensive tests for encoded dot behavior in key decoding * [CHORE] add tests for key splitting behavior with depth remainder and strictDepth options * [CHORE] add tests for leading and encoded dot handling in key decoding
🔖 release v1.5.2 ## 1.5.2 - [FIX] enforce `decodeDotInKeys` and `allowDots` option consistency; clarify dot decoding in documentation - [FIX] fix dot notation encoding in key splitter; handle top-level dots and bracket depth correctly - [FIX] fix list limit check to account for current list length when splitting comma-separated values - [FIX] fix parameter splitting to correctly enforce limit and wrap excess bracket groups as single segment - [FIX] fix list limit enforcement and unify key/value decoding in parser - [FIX] preserve leading dot in key decoding except for degenerate ".[" case - [CHORE] add tests for `allowDots` and `decodeDotInKeys` consistency in `DecodeOptions` - [CHORE] add comprehensive tests for encoded dot behavior in keys to ensure C# port (QsNet) parity and option consistency - [CHORE]️ refactor `DecodeOptions` to support legacy decoders and unify decode logic; add `decodeKey`/`decodeValue` helpers - [CHORE] add tests for encoded dot handling in keys and custom decoder behavior in `DecodeOptions` - [CHORE] remove unused import of `DecodeKind` from qs.dart - [CHORE] update decode.dart comments to clarify key decoding and dot/bracket handling logic - [CHORE] clarify `DecodeOptions` docs for `allowDots` and `decodeDotInKeys` interaction; improve `charsetSentinel` and decoder behavior descriptions - [CHORE]️ simplify custom decoder handling in `DecodeOptions`; remove dynamic invocation and legacy overloads - [CHORE] update tests to use new decoder signature with `DecodeKind`; remove legacy dynamic invocation cases - [CHORE] add tests for leading and double dot handling with `allowDots=true` - [CHORE] remove legacy dynamic decoder fallback tests and helper class - [CHORE] fix custom percent-decoding logic to handle non-encoded characters and improve byte extraction - [CHORE] clarify negative `listLimit` behavior and list growth checks in decode logic comments - [CHORE] clarify `listLimit` negative value behavior and `throwOnLimitExceeded` interaction in decode options comments - [CHORE] improve decode tests for nested list handling, list limit error matching, and long input parsing; fix percent-decoding to handle '+' as space - [CHORE] clarify handling of percent-encoded dots in keys and list growth with negative `listLimit` in decode logic comments
PreviousNext