Releases: eemeli/yaml
v2.0.0-1
This version yaml
has been published to npm using the next
dist-tag, so install it with:
npm install --save-exact yaml@next
This release continues from where 2.0.0-0
left off to make incremental changes to the library, mostly in order to further improve JSON compatibility and to make custom tags easier to write. For details on the breaking changes, please see PRs #189 and #201.
It's likely that the next release after this will incorporate #203, which is a rather more significant change to the parsing internals and the CST API.
BREAKING CHANGES
Improve JSON compatibility (#189)
- Add
doc.toJS()
, replacing mostdoc.toJSON()
calls - Drop
keepBlobsInJSON
option - The
toJSON()
utility exported by 'yaml/util' is renamed astoJS()
. - Add
keepUndefined
option & by default returnundefined
forstringify(undefined)
(#187) - Add optional
replacer
argument forstringify
,new Document
&doc.createNode
- Add JSON reviver support to
parse()
anddoc.toJS()
- Encode strings with unpaired surrogate code points as double-quoted
- Allow third arg of
stringify
to be a number or string setting indent
Refactor tag resolve() API (#201)
All tag resolvers are now called with two arguments:
value: string | YAMLMap | YAMLSeq
onError(message: string): void
with the value being determined solely by the node's shape, rather than
any explicit tag it may have.
Also:
- Drop exports of
{ parseMap, parseSeq }
from 'yaml/util' - Refactor
resolveString()
arguments - Use
re.test(str)
rather thanstr.match(re)
for default tags - Refactor away
schema.tags.scalarFallback
New Features
- Remember source string for null scalars (#193)
- Support
asBigInt
option for sexagesimal integer values (04b2d65)
Bugfixes
- Correct the output of the readme example (#188)
- Support for
__proto__
as mapping key & anchor identifier (#192) - Dump long keys properly (#195)
- When folding highly indented lines, require at least minContentWidth chars on the first line (#196)
- Fix YAML.stringify() for certain null values (#197)
- Drop obsolete Travis CI badge from README (3b807a1)
Internal Refactorings
v2.0.0-0
This version yaml
has been published to npm using the next
dist-tag, so install it with:
npm install --save-exact yaml@next
Be aware that further breaking changes are likely before we get to a final 2.0.0 release. However, at least so far the basic YAML.parse()
and YAML.stringify()
APIs are pretty much unaffected by any of the breaking changes.
BREAKING CHANGES
Drop deprecated end points, members, options & defaults (#171)
- The following entry points are removed:
- 'yaml/map'
- 'yaml/pair'
- 'yaml/scalar'
- 'yaml/schema'
- 'yaml/seq'
- 'yaml/types/binary'
- 'yaml/types/omap'
- 'yaml/types/pairs'
- 'yaml/types/set'
- 'yaml/types/timestamp'
- The package.json
"exports"
no longer include an"./": "./"
escape hatch. Schema.defaultTags
andSchema.defaultPrefix
are removed.- The
tags
alias for thecustomTags
option is removed, andprettyErrors
is now default-true. - Custom tags that use
class
instead ofidentify()
are no longer supported.
Breaking changes to Document & createNode APIs (#186)
See the PR for usage examples of:
new YAML.Document(value, options?)
- The Document constructor gets a new first argumentvalue
. This allows for much more ergonomic document creation.doc.createNode(value, options?)
- The methodsYAML.createNode()
anddoc.schema.createNode()
are replaced by a singledoc.createNode()
. Their non-value arguments are also collected into an options object.doc.createPair(key, value, options?)
- The methoddoc.schema.createPair()
is replaced bydoc.createPair()
, and also uses an options bag instead of named positional arguments.
When creating a mapping from a JS Object, drop undefined values (#173)
When creating a YAML mapping from a JS Object, keys with undefined
values are not included. This matches the behaviour of JSON.stringify()
. In all other cases, the handling of undefined
is unchanged, so e.g. [1, undefined, 2]
will still result in a sequence of three items, the second of which has a null
value. This too matches the behaviour of JSON.stringify()
.
Previously, undefined
object values were mapped to null
.
Retain existing nodes when using set() in mappings & sequences (#185)
When overwriting a Scalar
value with a scalar using set(), the original node is retained.
New Features
v1.10.0
This will probably be the last minor release of yaml@1
. I'm aiming to release yaml@2
within a few months; prereleases of that will be published using the next
dist-tag on npm. Patch releases for 1.10 may still happen, if necessary.
New Features
- Use Rollup for Node.js & browser builds (#165)
- This removes most of the internal
dist/
paths from the release. If you want/need to use a class or function that is no longer public, please file an issue and we can add it to the exports. - Drop dependency on
@babel/runtime
. After this, the package has 0 runtime dependencies. 🎉 - Add exports
{ Alias, Collection, Merge, Node }
to 'yaml/types'
- This removes most of the internal
- Document
Schema.createPair()
& make itsctx
arg optional (#157) - Always indent top-level scalars with lines starting with document markers or % directives (#162)
- Use double-space when forcing top-level block scalar indent, for clarity (#162)
- Add
getNodes(): string[]
method to Anchors (#166) - Refactor Jest config, adding tests for compiled
dist/
endpoints - Rename & refactor source files. This should have no effect on the results, but lots of stuff moved around
Improved Errors & Warnings
- Throw more helpful error when setting Pair.commentBefore incorrectly (#157)
- Better errors for bad indents (#169)
- Drop incorrect error for flow mapping keys with length > 1024 chars
- Add errors for plain scalars that start with reserved indicators
- Add more explicit errors for block scalar values with bad indents
- Enable log prints during
npm start
debugging
Improved TypeScript declarations
- Fix/simplify export mapping of 'yaml/types' and 'yaml/util'
- Fix types, dropping
AST.{AstNode,ScalarNode,CollectionNode}
(#160) - Add missing
toString()
methods to AST nodes (#159) - Add directivesEndMarker to Document type (#167)
Bugfixes
- Use CommonJS for top-level default-exporting browser endpoints (#163)
- docs: Add note about simpleKeys for null values (#170)
- Update dev & playground dependencies, including eslint 7 & jest 26
- Update yaml-test-suite, fixing errors in remaining invalid-input tests
- Add explicit error for block scalars with more-indented leading empty lines (S98Z)
- Properly add error for tab-indented map values (4EJS)
- Add error for multiline implicit flow sequence pair key (DK4H & ZXT5)
- Require space after comma before comment in flow collections (CVW2)
- Use
mapAsMap: true
for out.yaml tests (4FJ6)
v1.9.2
v1.9.1
v1.9.0
New Features
- Add custom ES module exports for browsers (#145)
- Drop
__esModule
markers from CJS transpilation (#145) - Support
BigInt
values (#146) - Add
YAML.scalarOptions
(#146) - Add
indent
option: number of spaces (default:2
) (#147) - Add
indentSeq
option: if false, consider-
as indentation (default:true
) (#147) - Add TypeScript typings, based on
@types/yaml
by @ikatyang, with contributions from @ColinBradley and @shirk3y (#153)
Bugfixes
- Only use named exports internally (#145)
- Clean up & document warning silencing, also supporting process.env (Fixes #148)
- Fix typo in flow collection parsing (Fixes #149)
- Accept that multiple blank lines generate multiple nodes (Closes #150)
- Use cross-env to enable building on Windows (#152 by @shirk3y)
- Specify
Document.cstNode
type - Add
Pair.Type
enum - Export
YAMLError
from 'yaml/util'
v1.8.3
v1.8.2
v1.8.0
New Features
- Add ES module exports + set type in package.json (Fixes #138)
- Add custom identifiers for core tags
- Add
sortMapEntries
option (#44) - Use ES modules in browser build (supported by all modern bundlers and other packagers)
Bugfixes
- Create missing intermediate collections in addIn & setIn (Fixes #131)
- Account for initial indentation when stringifying values (Fixes #133)
- Use a Map for prevObjects in createNode (#137)
- YAML.createNode sets tag in the result, if explicitly given
- Drop Node 6 tests due to incompatibility with Jest 25 (transpilation remains as Node 6)
- cst: Minor refactoring to improve legibility, add some comments
- cst: Drop Node.atCollectionItem as unused since 93a8a44
- cst: Drop Directive.endOfDirective as unused since 307df17
- Clean up YAML 1.1 & JSON boolean tag objects
- Add tests to improve code coverage
- Update dependencies