js-yaml v4.1.0 Release Notes
Release Date: 2021-04-15 // over 3 years ago-
➕ Added
- Types are now exported as
yaml.types.XXX
. - Every type now has
options
property with original arguments kept as they were (seeyaml.types.int.options
as an example).
🔄 Changed
Schema.extend()
now keeps old type order in case of conflicts (e.g. Schema.extend([ a, b, c ]).extend([ b, a, d ]) is now ordered asabcd
instead ofcbad
).
- Types are now exported as
Previous changes from v4.0.0
-
🔄 Changed
- Check [migration guide](migrate_v3_to_v4.md) to see details for all breaking changes.
- 💥 Breaking: "unsafe" tags
!!js/function
,!!js/regexp
,!!js/undefined
are moved to js-yaml-js-types package. - 💥 Breaking: removed
safe*
functions. Useload
,loadAll
,dump
instead which are all now safe by default. yaml.DEFAULT_SAFE_SCHEMA
andyaml.DEFAULT_FULL_SCHEMA
are removed, useyaml.DEFAULT_SCHEMA
instead.- 🚚
yaml.Schema.create(schema, tags)
is removed, useschema.extend(tags)
instead. !!binary
now always mapped toUint8Array
on load.- ⬇️ Reduced nesting of
/lib
folder. - 📜 Parse numbers according to YAML 1.2 instead of YAML 1.1 (
01234
is now decimal,0o1234
is octal,1:23
is 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 serializesundefined
asnull
in collections and removes keys withundefined
in mappings, #571. dump()
withskipInvalid=true
now serializes invalid items in collections as null.- Custom tags starting with
!
are now dumped as!tag
instead of!<!tag>
, #576. - Custom tags starting with
tag:yaml.org,2002:
are now shorthanded using!!
, #258.
➕ Added
- ➕ Added
.mjs
(es modules) support. - ➕ Added
quotingType
andforceQuotes
options for dumper to configure string literal style, #290, #529. - ➕ Added
styles: { '!!null': 'empty' }
option for dumper (serializes{ foo: null }
as "foo:
"), #570. - ➕ Added
replacer
option (similar to option in JSON.stringify), #339. - Custom
Tag
can 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.