Skip to content

Releases: techouse/qs

1.7.3

04 Mar 19:56
3f8a932

Choose a tag to compare

1.7.3

  • [PERF] speed up decode for flat and mixed query workloads via structured-key pre-scan, flat-query early return, and parse/merge bypass when safe
  • [PERF] optimize decode tokenization/list hot paths with capped splitting for String/RegExp/Pattern delimiters, capped comma splitting, and lower-overhead substring/index usage
  • [FIX] tighten strict list-limit behavior and list-growth detection (including root [] map input, scalar→list transitions, and ignoring []= substrings inside values)
  • [CHORE] add targeted decode regression coverage for new fast paths and delimiter/list-limit edge cases
  • [CHORE] add tool/decode_perf_snapshot.dart for repeatable decode perf snapshots and remove obsolete JS-style slice list/string extensions

https://pub.dev/packages/qs_dart/versions/1.7.3

1.7.2

27 Feb 19:08
729f970

Choose a tag to compare

1.7.2

  • [PERF] optimize deep encode=false workloads with a guarded single-key linear map fast path, segment-string reuse, and lower-allocation top-level fragment assembly
  • [PERF] refactor iterative encoder traversal to phase-driven frames, removing per-child callback allocation and preserving existing cycle/null/comma semantics
  • [PERF] make KeyPathNode.materialize() linear-time by replacing per-step toString() materialization with one final string build
  • [CHORE] add tool/perf_snapshot.dart for repeatable deep encode snapshots (2000/5000/12000, median-of-7 with warmup)
  • [CHORE] expand encode/key-path regression coverage for deep chains and fast-path fallback scenarios

https://pub.dev/packages/qs_dart/versions/1.7.2

1.7.1

23 Feb 23:33
9385664

Choose a tag to compare

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'))

https://pub.dev/packages/qs_dart/versions/1.7.1

1.7.0

09 Feb 18:31
b659d62

Choose a tag to compare

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

https://pub.dev/packages/qs_dart/versions/1.7.0

1.6.1

11 Jan 19:43
f8f06cc

Choose a tag to compare

1.6.1

  • [FIX] prevent DecodeOptions.listLimit bypass in bracket notation to mitigate potential DoS via memory exhaustion

https://pub.dev/packages/qs_dart/versions/1.6.1

1.6.0

03 Nov 21:53
a70a9b8

Choose a tag to compare

1.6.0

  • [FEAT] add EncodeOptions.commaCompactNulls, allowing omission of null entries in lists when using the ListFormat.comma. This results in cleaner output (e.g., [true, false, null, true] becomes "true,false,true").

https://pub.dev/packages/qs_dart/versions/1.6.0

1.5.6

03 Sep 08:13
ce84f0d

Choose a tag to compare

1.5.6

  • [CHORE] add highlights section outlining key features to README

https://pub.dev/packages/qs_dart/versions/1.5.6

1.5.5

27 Aug 12:54
da0978a

Choose a tag to compare

1.5.5

  • [CHORE] add screenshots section with package logo to pubspec.yaml

https://pub.dev/packages/qs_dart/versions/1.5.5

1.5.4

24 Aug 08:25
640849b

Choose a tag to compare

1.5.4

  • [CHORE] add issue tracker and funding links to pubspec.yaml

https://pub.dev/packages/qs_dart/versions/1.5.4

1.5.3

23 Aug 22:59
10894f9

Choose a tag to compare

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

https://pub.dev/packages/qs_dart/versions/1.5.3