Skip to content

Latest commit

 

History

History
354 lines (253 loc) · 28.5 KB

File metadata and controls

354 lines (253 loc) · 28.5 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

v1.10.0 - 2026-07-10

Merged

  • [New] parse: add opt-in splitUnquoted option for shell field-splitting of unquoted expansions #1

Commits

  • [Fix] parse: match nested ${...} braces so nested parameter expansion is consumed as one substitution c0842c8
  • [Tests] parse: pin single-quote literalness and unmatched-quote handling a0d03e3
  • [readme] remove the space in js code fences so evalmd evaluates them 2116fa3
  • [Tests] quote: pin conservative escaping of =, @, ^, ,, :, ! (#11) 1c36f3f
  • [readme] document that quote outputs POSIX quoting, not cmd.exe/PowerShell 100e96e
  • [readme] document parse's supported parameter-expansion subset e1c75cd
  • [Fix] parse: a backslash inside single quotes must not escape the closing quote 5d460a3
  • [readme] fix stale example outputs 2de86f5
  • [Tests] quote: pin that a backslash with whitespace is not doubled in single quotes (#14) 190e236
  • [readme] quote: use output verbatim; do not re-quote it (#11) 1b36468
  • [Refactor] parse: fix swapped SINGLE_QUOTE/DOUBLE_QUOTE variable names 801af5c
  • [types] fix an error TS v6 ignores but v7 fails on 59bbf8b
  • [Dev Deps] update @arethetypeswrong/cli, evalmd a04d475
  • [Dev Deps] update @arethetypeswrong/ci, eslint d390f9a
  • [Tests] quote: the tilde test escapes every ~, not just a leading one (#9) 617d119

v1.9.0 - 2026-06-24

Commits

  • [New] add types dca6e21
  • [Dev Deps] update eslint 9aa9e8f
  • [Fix] parse: finalize tokens in linear time (GHSA-395f-4hp3-45gv) 7ff5488
  • [actions] update workflows 75e8497
  • [actions] Windows + node 4/6/7: pin eslint to 9 before install, since npm 2/3 cannot stage eslint 10@types/esrecurse 3fb739d
  • [actions] retry npm install on Windows to survive npm 2/3 staging-rename flake abe0163
  • [actions] Windows + node 5/7: install deps with a modern node b4bafa2
  • [Fix] quote: escape leading ~ to prevent shell tilde-expansion 7a76c1a
  • [Dev Deps] update auto-changelog, tape 7184b44
  • [Dev Deps] apparently jackspeak is no longer in the graph 9ba368a

v1.8.4 - 2026-05-22

Commits

  • [Fix] quote: validate object-token shapes 4378a6e
  • [Dev Deps] update @ljharb/eslint-config, auto-changelog, eslint, npmignore 22ebec0
  • [Tests] increase coverage 9f3caa3
  • [readme] replace runkit CI badge with shields.io check-runs badge 3344a04
  • [Dev Deps] update @ljharb/eslint-config 699c511

v1.8.3 - 2025-06-01

Fixed

  • [Fix] remove unnecessary backslash escaping in single quotes #15

v1.8.2 - 2024-11-27

Fixed

  • [Fix] quote: preserve empty strings #18

Commits

  • [meta] fix changelog tags 0fb9fd8
  • [actions] split out node 10-20, and 20+ 819bd84
  • [Dev Deps] update @ljharb/eslint-config, auto-changelog, npmignore, tape fc56408
  • [actions] update npm for windows tests fdeb0fd
  • [Dev Deps] update @ljharb/eslint-config, aud, tape b8a4a3b
  • [actions] prevent node 14 on ARM mac from failing 9eecafc
  • [meta] exclude more files from the package 4044e7f
  • [Tests] replace aud with npm audit 8cfdbd8
  • [meta] add missing engines.node 843820e
  • [Dev Deps] add missing peer dep 4c3b88d
  • [Dev Deps] pin jackspeak since 2.1.2+ depends on npm aliases, which kill the install process in npm < 6 80322ed

v1.8.1 - 2023-04-07

Fixed

  • [Fix] parse: preserve whitespace in comments #6
  • [Fix] properly support the escape option #5

Commits

  • [Refactor] parse: hoist getVar to module level b42ac73
  • [Refactor] hoist some vars to module level 8f0c5c3
  • [Refactor] parse: use slice over substr, cache some values fcb2e1a
  • [Refactor] parse: a bit of cleanup 6780ec5
  • [Refactor] parse: tweak the regex to not match nothing 227d474
  • [Tests] increase coverage a66de94
  • [Refactor] parse: avoid shadowing a function arg 1d58679

v1.8.0 - 2023-01-30

Commits

  • [New] extract parse and quote to their own deep imports 553fdfc
  • [Tests] add nyc coverage fd7ddcd
  • [New] Add support for here strings (&lt;&lt;&lt;) 9802fb3
  • [New] parse: Add syntax support for duplicating input file descriptors 216b198
  • [Dev Deps] update @ljharb/eslint-config, aud, tape 85f8e31
  • [Tests] add evalmd c5549fc
  • [actions] update checkout action 62e9b49

v1.7.4 - 2022-10-12

Merged

  • Add node_modules to .gitignore #48

Commits

  • [eslint] fix indentation and whitespace aaa9d1f
  • [eslint] additional cleanup 397cb62
  • [meta] add auto-changelog 497fca5
  • [actions] add reusable workflows 4763c36
  • [eslint] add eslint 6ee1437
  • [readme] rename, add badges 7eb5134
  • [meta] update URLs 67381b6
  • [meta] create FUNDING.yml; add funding in package.json 8641572
  • [meta] use npmignore to autogenerate an npmignore file 2e2007a
  • Only apps should have lockfiles f97411e
  • [Dev Deps] update tape 051f608
  • [meta] add safe-publish-latest 18cadf9
  • [Tests] add aud in posttest dc1cc12

v1.7.3 - 2021-10-20

  • Fix a security issue where the regex for windows drive letters allowed some shell meta-characters to escape the quoting rules. (CVE-2021-42740)

v1.7.2 - 2019-08-30

  • Fix a regression introduced in 1.6.3. This reverts the Windows path quoting fix. (144e1c2)

v1.7.1 - 2019-08-13

  • Fix $ being removed when not part of an environment variable name. (@Adman in #32)

v1.7.0 - 2019-08-13

  • Add support for parsing >> and >& redirection operators. (@forivall in #16)
  • Add support for parsing <( process substitution operator. (@cuonglm in #15)

v1.6.3 - 2019-08-13

  • Fix Windows path quoting problems. (@dy in #34)

v1.6.2 - 2019-08-13

Merged

  • Use native JSON and Array methods #21

Commits

1.6.1 - 2016-06-17

Commits

  • Fix some more escaping for .quote() ace52f4
  • Fix escaping for greater than and less than 70e9eb2

1.6.0 - 2016-04-23

Commits

  • add comment parsing feature b8b5c31

1.5.0 - 2016-03-16

Commits

  • add escape option to .parse 4d400e7

1.4.3 - 2015-03-07

Commits

  • Fix quote() with special chars 811b5a0

1.4.2 - 2014-07-20

Commits

1.4.1 - 2013-12-24

Commits

1.4.0 - 2013-10-17

Merged

  • Add MIT LICENSE file #6

Commits

  • Rewrite parser as a character based scanner c7ca9a2
  • Add tests for glob patterns 3418892
  • Update algo description e1442cf
  • Fix test case for backslash in double quotes 89bc550
  • Add failing tests for crazy quoting tricks 58a5e48

1.3.3 - 2013-06-24

Commits

  • failing set test with an env cb 9fb2096
  • remove the broken special case f9a0ee5

1.3.2 - 2013-06-24

Commits

  • tests for setting env vars f44b039
  • fixed the parse test, broke the op tests 74d6686
  • factored out single and double quote regex de9e0a5
  • updated set env test, already passes 7d5636b
  • ops fixed 2b4e1b1
  • passing all tests 44177e3
  • backreferences in negated capture groups don't actually work e189d9d
  • another crazy ridiculous passing parse test d1beb6b
  • failing test for quoted whitespace and nested quotes 9a4c11c
  • failing test for quotes embedded inside barewords d997384

1.3.1 - 2013-05-13

Commits

1.3.0 - 2013-05-13

Commits

  • hacky tokenizer is much simpler 7e91b18
  • nearly passing with a clunky state env parser, array issues d6d6416
  • test for functional env expansion 666395f
  • upgrade travis versions, tape f6f8bd6
  • 1.3.0, document env() lookups 041c5da
  • first half of functional env() works 7a0cf79
  • env() objects even work inside quote strings 16139f5
  • another check just to make sure env() works 914a1a9

1.2.0 - 2013-05-13

Commits

  • failing test for special shell parameter env vars 728862a
  • add the special vars to the replace regex but the chunker breaks on them d1ff82a
  • fixed the env test, everything is fine a45897f

1.1.0 - 2013-05-13

Commits

  • quote all ops objects ac7be63
  • test for parsed ops objects in quote() 59fb71b
  • another test for op object quoting 5819a31

1.0.0 - 2013-05-13

Commits

  • document ops, op example a6381e6
  • some more passing double-char op tests fbc6e5c
  • failing test for | and & ops d817736
  • labeled regex states 8c008b2
  • refactored the chunker regex into a string 0331c7f
  • simple failing double-char op test e51fa90
  • failing expanded single-op tests for ; and () 710bb24
  • now passing all the single-char op tests e3e9ac1
  • using the control ops directly from the docs f535987
  • first part of op parsing works e6f9199
  • failing redirect tests cb94c10
  • another double-char op test just to be sure 5cf1bf2
  • 1.0.0 for ops 17a40ed
  • adding redirect <> ops to CONTROL makes the tests pass 48b1eb9
  • double-char op test now passing 3998b0f
  • using the meta chars directly from the docs b009ef6
  • the spec says tabs are also allowed 2adb373
  • op test completely passing 20a0147

0.1.1 - 2013-04-17

Commits

  • Return empty list when parsing an empty (or whitespace-only) string 1475717

0.1.0 - 2013-04-14

Commits

  • externalize the regex declaration 37d6058
  • modernize the readme 24106f5
  • factor out interpolation 1b21b01
  • half the env tests are working with basic interpolation 5891471
  • env parse example 5757c42
  • failing tests for unimplemented env interpolation 590534a
  • denormalize the interpolate logic to make room for special cases c669d2e
  • cleaner implementation recursing on the double quote case adae66f
  • one test was wrong, checking for pre escapes 42b5f83
  • finally passing all the tests efa4084
  • one more test passing with quote recursion e9537b9
  • use tape everywhere ed0c1c6
  • some extra metacharacter tests just to be sure a6782ae
  • minor fix to an env test 601b340
  • document parse env cc0efba
  • better parse recursion to capture the containing quotes 8467961
  • now just 2 tests failing with a subtle regex reordering 5448a02
  • pass another test by using "" as the undefined 46e6cf4
  • fixed a failing env test 17d1fda
  • actually the test was wrong, module works fine 9d7b727
  • another test to be even more sure 5afd47b
  • failing test for: echo "foo = "foo"" 8dbb280

0.0.1 - 2012-05-18

Commits

  • fixed unescaped metachars and bump 5ce339f
  • failing test for unescaped metachars a315125
  • fix for escaped spaces 669b616
  • failing test for escaped space c6ff3dc

0.0.0 - 2012-05-18

Commits