js-yaml v4.0.0 Release Notes
Release Date: 2021-01-03 // over 5 years ago-
🔄 Changed
- Check [migration guide](migrate_v3_to_v4.md) to see details for all breaking changes.
- 💥 Breaking: "unsafe" tags
!!js/function,!!js/regexp,!!js/undefinedare moved to js-yaml-js-types package. - 💥 Breaking: removed
safe*functions. Useload,loadAll,dumpinstead which are all now safe by default. yaml.DEFAULT_SAFE_SCHEMAandyaml.DEFAULT_FULL_SCHEMAare removed, useyaml.DEFAULT_SCHEMAinstead.- 🚚
yaml.Schema.create(schema, tags)is removed, useschema.extend(tags)instead. !!binarynow always mapped toUint8Arrayon load.- ⬇️ Reduced nesting of
/libfolder. - 📜 Parse numbers according to YAML 1.2 instead of YAML 1.1 (
01234is now decimal,0o1234is octal,1:23is parsed as string instead of base60). dump()no longer quotes:,[,],(,)except when necessary, #470, #557.- Line and column in exceptions are now formatted as
(X:Y)instead ofat line X, column Y(also present in compact format), #332. - Code snippet created in exceptions now contains multiple lines with line numbers.
- 🚚
dump()now serializesundefinedasnullin collections and removes keys withundefinedin mappings, #571. dump()withskipInvalid=truenow serializes invalid items in collections as null.- Custom tags starting with
!are now dumped as!taginstead of!<!tag>, #576. - Custom tags starting with
tag:yaml.org,2002:are now shorthanded using!!, #258.
➕ Added
- ➕ Added
.mjs(es modules) support. - ➕ Added
quotingTypeandforceQuotesoptions for dumper to configure string literal style, #290, #529. - ➕ Added
styles: { '!!null': 'empty' }option for dumper (serializes{ foo: null }as "foo:"), #570. - ➕ Added
replaceroption (similar to option in JSON.stringify), #339. - Custom
Tagcan now handle all tags or multiple tags with the same prefix, #385.
🛠 Fixed
- Astral characters are no longer encoded by
dump(), #587. - 👻 "duplicate mapping key" exception now points at the correct column, #452.
- 👻 Extra commas in flow collections (e.g.
[foo,,bar]) now throw an exception instead of producing null, #321. __proto__key no longer overrides object prototype, #164.- ✂ Removed
bower.json. - 🏷 Tags are now url-decoded in
load()and url-encoded indump()(previously usage of custom non-ascii tags may have led to invalid YAML that can't be parsed). - Anchors now work correctly with empty nodes, #301.
- 🛠 Fix incorrect parsing of invalid block mapping syntax, #418.
- Throw an error if block sequence/mapping indent contains a tab, #80.