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.
- Types are now exported as
yaml.types.XXX
.
- Every type now has
options
property with original arguments kept as they were
(see yaml.types.int.options
as an example).
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 as abcd
instead of cbad
).
- Check migration guide 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. Use load
, loadAll
, dump
instead which are all now safe by default.
yaml.DEFAULT_SAFE_SCHEMA
and yaml.DEFAULT_FULL_SCHEMA
are removed, use
yaml.DEFAULT_SCHEMA
instead.
yaml.Schema.create(schema, tags)
is removed, use schema.extend(tags)
instead.
!!binary
now always mapped to Uint8Array
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 of
at line X, column Y
(also present in compact format), #332.
- Code snippet created in exceptions now contains multiple lines with line numbers.
dump()
now serializes undefined
as null
in collections and removes keys with
undefined
in mappings, #571.
dump()
with skipInvalid=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
.mjs
(es modules) support.
- Added
quotingType
and forceQuotes
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.
- 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 in dump()
(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.
- Fix possible code execution in (already unsafe)
.load()
(in &anchor).
- Support
safe/loadAll(input, options)
variant of call.
- CI: drop outdated nodejs versions.
- Dev deps bump.
- Quote
=
in plain scalars #519.
- Check the node type for
!<?>
tag in case user manually specifies it.
- Verify that there are no null-bytes in input.
- Fix wrong quote position when writing condensed flow, #526.
- Fix possible code execution in (already unsafe)
.load()
, #480.
- Security fix:
safeLoad()
can hang when arrays with nested refs
used as key. Now throws exception for nested arrays. #475.
- Fix
noArrayIndent
option for root level, #468.
- Added
noArrayIndent
option, #432.
- Support arrow functions without a block statement, #421.
- Add arrow functions suport for
!!js/function
.
- Fix dump in bin/octal/hex formats for negative integers, #399.
- Fix
condenseFlow
output (quote keys for sure, instead of spaces), #371, #370.
- Dump astrals as codepoints instead of surrogate pair, #368.
- Ensure stack is present for custom errors in node 7.+, #351.
- Add
condenseFlow
option (to create pretty URL query params), #346.
- Support array return from safeLoadAll/loadAll, #350.
- Dumper: prevent space after dash for arrays that wrap, #343.
- Should not allow numbers to begin and end with underscore, #335.
- Fix
!!float 123
(integers) parse, #333.
- Don't allow leading zeros in floats (except 0, 0.xxx).
- Allow positive exponent without sign in floats.
- Maintenance: update browserified build.
- Fix reported position for
duplicated mapping key
errors.
Now points to block start instead of block end.
(#243, thanks to @shockey).
- Support polymorphism for tags (#300, thanks to @monken).
- Fix parsing of quotes followed by newlines (#304, thanks to @dplepage).
- Fix output cut on a pipe, #286.
- Dumper rewrite, fix multiple bugs with trailing
\n
.
Big thanks to @aepsilon!
- Loader: fix leading/trailing newlines in block scalars, @aepsilon.
- Date parse fix: don't allow dates with on digit in month and day, #268.
noCompatMode
for dumper, to disable quoting YAML 1.1 values.
- Maintenance: missed comma in bower config.
- Removed
inherit
dependency, #239.
- Better browserify workaround for esprima load.
- Demo rewrite.
- Dumper. Fold strings only, #217.
- Dumper.
norefs
option, to clone linked objects, #229.
- Loader. Throw a warning for duplicate keys, #166.
- Improved browserify support (mark
esprima
& Buffer
excluded).
- Use standalone
inherit
to keep browserified files clear.
- Added
lineWidth
option to dumper.
- Fixed floats dump (missed dot for scientific format), #220.
- Allow non-printable characters inside quoted scalars, #192.
- Maintenance release - deps bump (esprima, argparse).
- Fixed serialization of duplicated entries in sequences, #205.
Thanks to @vogelsgesang.
- Fixed stacktrace handling in generated errors, for browsers (FF/IE).
- Don't throw on warnings anymore. Use
onWarning
option to catch.
- Throw error on unknown tags (was warning before).
- Reworked internals of error class.
- Fixed multiline keys dump, #197. Thanks to @tcr.
- Fixed heading line breaks in some scalars (regression).
- Added
.sortKeys
dumper option, thanks to @rjmunro.
- Fixed astral characters support, #191.
- Significantly improved long strings formatting in dumper, thanks to @isaacs.
- Strip BOM if exists.
- Maintenance release.
- Updated dependencies.
- HISTORY.md -> CHANGELOG.md
- Fixed encoding of UTF-16 surrogate pairs. (e.g. "\U0001F431" CAT FACE).
- Fixed demo dates dump (#113, thanks to @Hypercubed).
- Fixed resolving of all built-in types on empty nodes.
- Fixed invalid warning on empty lines within quoted scalars and flow collections.
- Fixed bug: Tag on an empty node didn't resolve in some cases.
- Fixed resolving of !!null tag on an empty node.
- Implemented dumping of objects with circular and cross references.
- Partially fixed aliasing of constructed objects. (see issue #141 for details)
- Fixed infinite loop on unindented block scalars.
- Rewritten base64 encode/decode in binary type, to keep code licence clear.
- Nothig new. Just fix npm publish error.
- Added input piping support to CLI.
- Fixed typo, that could cause hand on initial indent (#139).
- 1.5x-2x speed boost.
- Removed deprecated
require('xxx.yml')
support.
- Significant code cleanup and refactoring.
- Internal API changed. If you used custom types - see updated examples.
Others are not affected.
- Even if the input string has no trailing line break character,
it will be parsed as if it has one.
- Added benchmark scripts.
- Moved bower files to /dist folder
- Bugfixes.
- Fixed bug: "constructor" string parsed as
null
.
- Fixed parsing of literal scalars. (issue #108)
- Prevented adding unnecessary spaces in object dumps. (issue #68)
- Fixed dumping of objects with very long (> 1024 in length) keys.
- Refactored code. Changed API for custom types.
- Removed output colors in CLI, dump json by default.
- Removed big dependencies from browser version (esprima, buffer). Load
esprima
manually, if !!js/function
needed. !!bin
now returns Array in browser
- AMD support.
- Don't quote dumped strings because of
-
& ?
(if not first char).
- Deprecated loading yaml files via
require()
, as not recommended
behaviour for node.
- Fix wrong loading of empty block scalars.
- Fix unwanted line breaks in folded scalars.
- Dumper now respects deprecated booleans syntax from YAML 1.0/1.1
- Fixed reader bug in JSON-like sequences/mappings.
- Add standard YAML schemas: Failsafe (
FAILSAFE_SCHEMA
),
JSON (JSON_SCHEMA
) and Core (CORE_SCHEMA
).
- Add
skipInvalid
dumper option.
- Rename
DEFAULT_SCHEMA
to DEFAULT_FULL_SCHEMA
and SAFE_SCHEMA
to DEFAULT_SAFE_SCHEMA
.
- Use
safeLoad
for require
extension.
- Bug fix: export
NIL
constant from the public interface.
- Close security issue in !!js/function constructor.
Big thanks to @nealpoole for security audit.
- Updated .npmignore to reduce package size
- Fixed dumping of empty arrays ans objects. ([] and {} instead of null)
- Fixed input validation: tabs are printable characters.
- Fixed error, when options not passed to function cass
- Full rewrite. New architecture. Fast one-stage parsing.
- Changed custom types API.
- Added YAML dumper.
- Fixed utf-8 files loading.
- Pull out hand-written shims. Use ES5-Shims for old browsers support. See #44.
- Fix timstamps incorectly parsed in local time when no time part specified.
- Fixes
TypeError: 'undefined' is not an object
under Safari. Thanks Phuong.
- Fix timestamps incorrectly parsed in local time. Thanks @caolan. Closes #46.
y
, yes
, n
, no
, on
, off
are not converted to Booleans anymore.
Fixes #42.
require(filename)
now returns a single document and throws an Error if
file contains more than one document.
- CLI was merged back from js-yaml.bin
- Fix export of
addConstructor()
. Closes #39.
- Removed AMD parts - too buggy to use. Need help to rewrite from scratch
- Removed YUI compressor warning (renamed
double
variable). Closes #40.
- Workagound for .npmignore fuckup under windows. Thanks to airportyh.
- Fixes str[] for oldIEs support.
- Adds better has change support for browserified demo.
- improves compact output of Error. Closes #33.
- adds
compact
stringification of Errors.
- jsyaml executable moved to separate module.
- Added jsyaml executable.
- Added !!js/function support. Closes #12.
- Fixes ug with block style scalars. Closes #26.
- All sources are passing JSLint now.
- Fixes bug in Safari. Closes #28.
- Fixes bug in Opers. Closes #29.
- Improves browser support. Closes #20.
- Added AMD support for browserified version.
- Added permalinks for online demo YAML snippets. Now we have YPaste service, lol.
- Added !!js/regexp and !!js/undefined types. Partially solves #12.
- Wrapped browserified js-yaml into closure.
- Fixed the resolvement of non-specific tags. Closes #17.
- Fixed !!set mapping.
- Fixed month parse in dates. Closes #19.
- Added browserified version. Closes #13.
- Added live demo of browserified version.
- Ported some of the PyYAML tests. See #14.
- Removed JS.Class dependency. Closes #3.
- Fixed timestamp bug when fraction was given.
- Fixed crash on docs without ---. Closes #8.
- Fixed multiline string parse
- Fixed tests/comments for using array as key
- Fixed short file read (<4k). Closes #9.