yaml 2.6.1 → 2.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/README.md +29 -8
  2. package/browser/dist/compose/compose-collection.js +2 -2
  3. package/browser/dist/compose/resolve-props.js +1 -1
  4. package/browser/dist/log.js +1 -4
  5. package/browser/dist/parse/parser.js +14 -1
  6. package/browser/dist/schema/yaml-1.1/binary.js +4 -11
  7. package/browser/dist/schema/yaml-1.1/timestamp.js +1 -1
  8. package/browser/dist/util.js +1 -1
  9. package/dist/compose/compose-collection.d.ts +4 -4
  10. package/dist/compose/compose-collection.js +2 -2
  11. package/dist/compose/compose-doc.d.ts +6 -6
  12. package/dist/compose/compose-node.d.ts +7 -7
  13. package/dist/compose/compose-scalar.d.ts +4 -4
  14. package/dist/compose/composer.d.ts +7 -6
  15. package/dist/compose/composer.js +2 -1
  16. package/dist/compose/resolve-block-map.d.ts +5 -5
  17. package/dist/compose/resolve-block-scalar.d.ts +5 -5
  18. package/dist/compose/resolve-block-seq.d.ts +5 -5
  19. package/dist/compose/resolve-end.d.ts +2 -2
  20. package/dist/compose/resolve-flow-collection.d.ts +7 -7
  21. package/dist/compose/resolve-flow-scalar.d.ts +4 -4
  22. package/dist/compose/resolve-props.d.ts +2 -2
  23. package/dist/compose/resolve-props.js +1 -1
  24. package/dist/compose/util-contains-newline.d.ts +1 -1
  25. package/dist/compose/util-empty-scalar-position.d.ts +1 -1
  26. package/dist/compose/util-flow-indent-check.d.ts +2 -2
  27. package/dist/compose/util-map-includes.d.ts +3 -3
  28. package/dist/doc/Document.d.ts +11 -11
  29. package/dist/doc/anchors.d.ts +2 -2
  30. package/dist/doc/createNode.d.ts +4 -4
  31. package/dist/doc/directives.d.ts +1 -1
  32. package/dist/index.d.ts +21 -18
  33. package/dist/log.js +4 -2
  34. package/dist/nodes/Alias.d.ts +9 -8
  35. package/dist/nodes/Collection.d.ts +4 -4
  36. package/dist/nodes/Node.d.ts +10 -10
  37. package/dist/nodes/Pair.d.ts +9 -8
  38. package/dist/nodes/Scalar.d.ts +4 -3
  39. package/dist/nodes/YAMLMap.d.ts +10 -10
  40. package/dist/nodes/YAMLSeq.d.ts +10 -10
  41. package/dist/nodes/addPairToJSMap.d.ts +3 -3
  42. package/dist/nodes/identity.d.ts +7 -7
  43. package/dist/nodes/toJS.d.ts +2 -2
  44. package/dist/options.d.ts +10 -10
  45. package/dist/parse/cst-scalar.d.ts +4 -4
  46. package/dist/parse/cst-stringify.d.ts +1 -1
  47. package/dist/parse/cst-visit.d.ts +2 -2
  48. package/dist/parse/cst.d.ts +4 -3
  49. package/dist/parse/lexer.d.ts +1 -1
  50. package/dist/parse/parser.d.ts +4 -4
  51. package/dist/parse/parser.js +16 -2
  52. package/dist/public-api.d.ts +6 -5
  53. package/dist/schema/Schema.d.ts +4 -4
  54. package/dist/schema/common/map.d.ts +1 -1
  55. package/dist/schema/common/null.d.ts +1 -1
  56. package/dist/schema/common/seq.d.ts +1 -1
  57. package/dist/schema/common/string.d.ts +1 -1
  58. package/dist/schema/core/bool.d.ts +1 -1
  59. package/dist/schema/core/float.d.ts +1 -1
  60. package/dist/schema/core/int.d.ts +1 -1
  61. package/dist/schema/core/schema.d.ts +1 -1
  62. package/dist/schema/json/schema.d.ts +1 -1
  63. package/dist/schema/tags.d.ts +2 -2
  64. package/dist/schema/types.d.ts +8 -8
  65. package/dist/schema/yaml-1.1/binary.d.ts +1 -1
  66. package/dist/schema/yaml-1.1/binary.js +8 -5
  67. package/dist/schema/yaml-1.1/bool.d.ts +1 -1
  68. package/dist/schema/yaml-1.1/float.d.ts +1 -1
  69. package/dist/schema/yaml-1.1/int.d.ts +1 -1
  70. package/dist/schema/yaml-1.1/merge.d.ts +3 -3
  71. package/dist/schema/yaml-1.1/omap.d.ts +11 -17
  72. package/dist/schema/yaml-1.1/pairs.d.ts +7 -7
  73. package/dist/schema/yaml-1.1/schema.d.ts +1 -1
  74. package/dist/schema/yaml-1.1/set.d.ts +9 -9
  75. package/dist/schema/yaml-1.1/timestamp.d.ts +1 -1
  76. package/dist/schema/yaml-1.1/timestamp.js +1 -1
  77. package/dist/stringify/stringify.d.ts +3 -3
  78. package/dist/stringify/stringifyCollection.d.ts +2 -2
  79. package/dist/stringify/stringifyDocument.d.ts +3 -3
  80. package/dist/stringify/stringifyNumber.d.ts +1 -1
  81. package/dist/stringify/stringifyPair.d.ts +2 -2
  82. package/dist/stringify/stringifyString.d.ts +2 -2
  83. package/dist/util.d.ts +16 -12
  84. package/dist/util.js +2 -2
  85. package/dist/visit.d.ts +7 -7
  86. package/package.json +4 -4
package/README.md CHANGED
@@ -24,6 +24,8 @@ To install:
24
24
 
25
25
  ```sh
26
26
  npm install yaml
27
+ # or
28
+ deno add jsr:@eemeli/yaml
27
29
  ```
28
30
 
29
31
  **Note:** These docs are for `yaml@2`. For v1, see the [v1.10.0 tag](https://github.com/eemeli/yaml/tree/v1.10.0) for the source and [eemeli.org/yaml/v1](https://eemeli.org/yaml/v1/) for the documentation.
@@ -55,24 +57,29 @@ The first has the simplest API and "just works", the second gets you all the bel
55
57
 
56
58
  A [command-line tool](https://eemeli.org/yaml/#command-line-tool) is also included.
57
59
 
60
+ ### Parse & Stringify
61
+
58
62
  ```js
59
63
  import { parse, stringify } from 'yaml'
60
- // or
61
- import YAML from 'yaml'
62
- // or
63
- const YAML = require('yaml')
64
64
  ```
65
65
 
66
- ### Parse & Stringify
67
-
68
66
  - [`parse(str, reviver?, options?): value`](https://eemeli.org/yaml/#yaml-parse)
69
67
  - [`stringify(value, replacer?, options?): string`](https://eemeli.org/yaml/#yaml-stringify)
70
68
 
71
69
  ### Documents
72
70
 
71
+ <!-- prettier-ignore -->
72
+ ```js
73
+ import {
74
+ Document,
75
+ isDocument,
76
+ parseAllDocuments,
77
+ parseDocument
78
+ } from 'yaml'
79
+ ```
80
+
73
81
  - [`Document`](https://eemeli.org/yaml/#documents)
74
82
  - [`constructor(value, replacer?, options?)`](https://eemeli.org/yaml/#creating-documents)
75
- - [`#anchors`](https://eemeli.org/yaml/#working-with-anchors)
76
83
  - [`#contents`](https://eemeli.org/yaml/#content-nodes)
77
84
  - [`#directives`](https://eemeli.org/yaml/#stream-directives)
78
85
  - [`#errors`](https://eemeli.org/yaml/#errors)
@@ -83,6 +90,15 @@ const YAML = require('yaml')
83
90
 
84
91
  ### Content Nodes
85
92
 
93
+ <!-- prettier-ignore -->
94
+ ```js
95
+ import {
96
+ isAlias, isCollection, isMap, isNode,
97
+ isPair, isScalar, isSeq, Scalar,
98
+ visit, visitAsync, YAMLMap, YAMLSeq
99
+ } from 'yaml'
100
+ ```
101
+
86
102
  - [`isAlias(foo): boolean`](https://eemeli.org/yaml/#identifying-node-types)
87
103
  - [`isCollection(foo): boolean`](https://eemeli.org/yaml/#identifying-node-types)
88
104
  - [`isMap(foo): boolean`](https://eemeli.org/yaml/#identifying-node-types)
@@ -93,13 +109,18 @@ const YAML = require('yaml')
93
109
  - [`new Scalar(value)`](https://eemeli.org/yaml/#scalar-values)
94
110
  - [`new YAMLMap()`](https://eemeli.org/yaml/#collections)
95
111
  - [`new YAMLSeq()`](https://eemeli.org/yaml/#collections)
96
- - [`doc.createAlias(node, name?): Alias`](https://eemeli.org/yaml/#working-with-anchors)
112
+ - [`doc.createAlias(node, name?): Alias`](https://eemeli.org/yaml/#creating-nodes)
97
113
  - [`doc.createNode(value, options?): Node`](https://eemeli.org/yaml/#creating-nodes)
98
114
  - [`doc.createPair(key, value): Pair`](https://eemeli.org/yaml/#creating-nodes)
99
115
  - [`visit(node, visitor)`](https://eemeli.org/yaml/#finding-and-modifying-nodes)
116
+ - [`visitAsync(node, visitor)`](https://eemeli.org/yaml/#finding-and-modifying-nodes)
100
117
 
101
118
  ### Parsing YAML
102
119
 
120
+ ```js
121
+ import { Composer, Lexer, Parser } from 'yaml'
122
+ ```
123
+
103
124
  - [`new Lexer().lex(src)`](https://eemeli.org/yaml/#lexer)
104
125
  - [`new Parser(onNewLine?).parse(src)`](https://eemeli.org/yaml/#parser)
105
126
  - [`new Composer(options?).compose(tokens)`](https://eemeli.org/yaml/#composer)
@@ -64,8 +64,8 @@ function composeCollection(CN, ctx, token, props, onError) {
64
64
  tag = kt;
65
65
  }
66
66
  else {
67
- if (kt?.collection) {
68
- onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection}`, true);
67
+ if (kt) {
68
+ onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection ?? 'scalar'}`, true);
69
69
  }
70
70
  else {
71
71
  onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);
@@ -55,7 +55,7 @@ function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIn
55
55
  if (atNewline) {
56
56
  if (comment)
57
57
  comment += token.source;
58
- else
58
+ else if (!found || indicator !== 'seq-item-ind')
59
59
  spaceBefore = true;
60
60
  }
61
61
  else
@@ -4,10 +4,7 @@ function debug(logLevel, ...messages) {
4
4
  }
5
5
  function warn(logLevel, warning) {
6
6
  if (logLevel === 'debug' || logLevel === 'warn') {
7
- if (typeof process !== 'undefined' && process.emitWarning)
8
- process.emitWarning(warning);
9
- else
10
- console.warn(warning);
7
+ console.warn(warning);
11
8
  }
12
9
  }
13
10
 
@@ -668,7 +668,20 @@ class Parser {
668
668
  default: {
669
669
  const bv = this.startBlockValue(map);
670
670
  if (bv) {
671
- if (atMapIndent && bv.type !== 'block-seq') {
671
+ if (bv.type === 'block-seq') {
672
+ if (!it.explicitKey &&
673
+ it.sep &&
674
+ !includesToken(it.sep, 'newline')) {
675
+ yield* this.pop({
676
+ type: 'error',
677
+ offset: this.offset,
678
+ message: 'Unexpected block-seq-ind on same line with key',
679
+ source: this.source
680
+ });
681
+ return;
682
+ }
683
+ }
684
+ else if (atMapIndent) {
672
685
  map.items.push({ start });
673
686
  }
674
687
  this.stack.push(bv);
@@ -14,10 +14,7 @@ const binary = {
14
14
  * document.querySelector('#photo').src = URL.createObjectURL(blob)
15
15
  */
16
16
  resolve(src, onError) {
17
- if (typeof Buffer === 'function') {
18
- return Buffer.from(src, 'base64');
19
- }
20
- else if (typeof atob === 'function') {
17
+ if (typeof atob === 'function') {
21
18
  // On IE 11, atob() can't handle newlines
22
19
  const str = atob(src.replace(/[\n\r]/g, ''));
23
20
  const buffer = new Uint8Array(str.length);
@@ -31,15 +28,11 @@ const binary = {
31
28
  }
32
29
  },
33
30
  stringify({ comment, type, value }, ctx, onComment, onChompKeep) {
31
+ if (!value)
32
+ return '';
34
33
  const buf = value; // checked earlier by binary.identify()
35
34
  let str;
36
- if (typeof Buffer === 'function') {
37
- str =
38
- buf instanceof Buffer
39
- ? buf.toString('base64')
40
- : Buffer.from(buf.buffer).toString('base64');
41
- }
42
- else if (typeof btoa === 'function') {
35
+ if (typeof btoa === 'function') {
43
36
  let s = '';
44
37
  for (let i = 0; i < buf.length; ++i)
45
38
  s += String.fromCharCode(buf[i]);
@@ -95,7 +95,7 @@ const timestamp = {
95
95
  }
96
96
  return new Date(date);
97
97
  },
98
- stringify: ({ value }) => value.toISOString().replace(/(T00:00:00)?\.000Z$/, '')
98
+ stringify: ({ value }) => value?.toISOString().replace(/(T00:00:00)?\.000Z$/, '') ?? ''
99
99
  };
100
100
 
101
101
  export { floatTime, intTime, timestamp };
@@ -1,8 +1,8 @@
1
1
  export { createNode } from './doc/createNode.js';
2
2
  export { debug, warn } from './log.js';
3
3
  export { createPair } from './nodes/Pair.js';
4
- export { findPair } from './nodes/YAMLMap.js';
5
4
  export { toJS } from './nodes/toJS.js';
5
+ export { findPair } from './nodes/YAMLMap.js';
6
6
  export { map as mapTag } from './schema/common/map.js';
7
7
  export { seq as seqTag } from './schema/common/seq.js';
8
8
  export { string as stringTag } from './schema/common/string.js';
@@ -1,7 +1,7 @@
1
- import type { ParsedNode } from '../nodes/Node.js';
2
- import type { BlockMap, BlockSequence, FlowCollection, SourceToken } from '../parse/cst.js';
3
- import type { ComposeContext, ComposeNode } from './compose-node.js';
4
- import type { ComposeErrorHandler } from './composer.js';
1
+ import type { ParsedNode } from '../nodes/Node';
2
+ import type { BlockMap, BlockSequence, FlowCollection, SourceToken } from '../parse/cst';
3
+ import type { ComposeContext, ComposeNode } from './compose-node';
4
+ import type { ComposeErrorHandler } from './composer';
5
5
  interface Props {
6
6
  anchor: SourceToken | null;
7
7
  tag: SourceToken | null;
@@ -66,8 +66,8 @@ function composeCollection(CN, ctx, token, props, onError) {
66
66
  tag = kt;
67
67
  }
68
68
  else {
69
- if (kt?.collection) {
70
- onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection}`, true);
69
+ if (kt) {
70
+ onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection ?? 'scalar'}`, true);
71
71
  }
72
72
  else {
73
73
  onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);
@@ -1,7 +1,7 @@
1
- import type { Directives } from '../doc/directives.js';
2
- import { Document } from '../doc/Document.js';
3
- import type { ParsedNode } from '../nodes/Node.js';
4
- import type { DocumentOptions, ParseOptions, SchemaOptions } from '../options.js';
5
- import type * as CST from '../parse/cst.js';
6
- import type { ComposeErrorHandler } from './composer.js';
1
+ import type { Directives } from '../doc/directives';
2
+ import { Document } from '../doc/Document';
3
+ import type { ParsedNode } from '../nodes/Node';
4
+ import type { DocumentOptions, ParseOptions, SchemaOptions } from '../options';
5
+ import type * as CST from '../parse/cst';
6
+ import type { ComposeErrorHandler } from './composer';
7
7
  export declare function composeDoc<Contents extends ParsedNode = ParsedNode, Strict extends boolean = true>(options: ParseOptions & DocumentOptions & SchemaOptions, directives: Directives, { offset, start, value, end }: CST.Document, onError: ComposeErrorHandler): Document.Parsed<Contents, Strict>;
@@ -1,9 +1,9 @@
1
- import type { Directives } from '../doc/directives.js';
2
- import type { ParsedNode } from '../nodes/Node.js';
3
- import type { ParseOptions } from '../options.js';
4
- import type { SourceToken, Token } from '../parse/cst.js';
5
- import type { Schema } from '../schema/Schema.js';
6
- import type { ComposeErrorHandler } from './composer.js';
1
+ import type { Directives } from '../doc/directives';
2
+ import type { ParsedNode } from '../nodes/Node';
3
+ import type { ParseOptions } from '../options';
4
+ import type { SourceToken, Token } from '../parse/cst';
5
+ import type { Schema } from '../schema/Schema';
6
+ import type { ComposeErrorHandler } from './composer';
7
7
  export interface ComposeContext {
8
8
  atKey: boolean;
9
9
  atRoot: boolean;
@@ -25,5 +25,5 @@ declare const CN: {
25
25
  };
26
26
  export type ComposeNode = typeof CN;
27
27
  export declare function composeNode(ctx: ComposeContext, token: Token, props: Props, onError: ComposeErrorHandler): ParsedNode;
28
- export declare function composeEmptyNode(ctx: ComposeContext, offset: number, before: Token[] | undefined, pos: number | null, { spaceBefore, comment, anchor, tag, end }: Props, onError: ComposeErrorHandler): import("../index.js").Scalar.Parsed;
28
+ export declare function composeEmptyNode(ctx: ComposeContext, offset: number, before: Token[] | undefined, pos: number | null, { spaceBefore, comment, anchor, tag, end }: Props, onError: ComposeErrorHandler): import('../index').Scalar.Parsed;
29
29
  export {};
@@ -1,5 +1,5 @@
1
- import { Scalar } from '../nodes/Scalar.js';
2
- import type { BlockScalar, FlowScalar, SourceToken } from '../parse/cst.js';
3
- import type { ComposeContext } from './compose-node.js';
4
- import type { ComposeErrorHandler } from './composer.js';
1
+ import { Scalar } from '../nodes/Scalar';
2
+ import type { BlockScalar, FlowScalar, SourceToken } from '../parse/cst';
3
+ import type { ComposeContext } from './compose-node';
4
+ import type { ComposeErrorHandler } from './composer';
5
5
  export declare function composeScalar(ctx: ComposeContext, token: FlowScalar | BlockScalar, tagToken: SourceToken | null, onError: ComposeErrorHandler): Scalar.Parsed;
@@ -1,9 +1,10 @@
1
- import { Directives } from '../doc/directives.js';
2
- import { Document } from '../doc/Document.js';
3
- import { ErrorCode, YAMLParseError, YAMLWarning } from '../errors.js';
4
- import type { ParsedNode, Range } from '../nodes/Node.js';
5
- import type { DocumentOptions, ParseOptions, SchemaOptions } from '../options.js';
6
- import type { Token } from '../parse/cst.js';
1
+ import { Directives } from '../doc/directives';
2
+ import { Document } from '../doc/Document';
3
+ import type { ErrorCode } from '../errors';
4
+ import { YAMLParseError, YAMLWarning } from '../errors';
5
+ import type { ParsedNode, Range } from '../nodes/Node';
6
+ import type { DocumentOptions, ParseOptions, SchemaOptions } from '../options';
7
+ import type { Token } from '../parse/cst';
7
8
  type ErrorSource = number | [number, number] | Range | {
8
9
  offset: number;
9
10
  source?: string;
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var node_process = require('node:process');
3
4
  var directives = require('../doc/directives.js');
4
5
  var Document = require('../doc/Document.js');
5
6
  var errors = require('../errors.js');
@@ -133,7 +134,7 @@ class Composer {
133
134
  }
134
135
  /** Advance the composer by one CST token. */
135
136
  *next(token) {
136
- if (process.env.LOG_STREAM)
137
+ if (node_process.env.LOG_STREAM)
137
138
  console.dir(token, { depth: null });
138
139
  switch (token.type) {
139
140
  case 'directive':
@@ -1,6 +1,6 @@
1
- import { YAMLMap } from '../nodes/YAMLMap.js';
2
- import type { BlockMap } from '../parse/cst.js';
3
- import { CollectionTag } from '../schema/types.js';
4
- import type { ComposeContext, ComposeNode } from './compose-node.js';
5
- import type { ComposeErrorHandler } from './composer.js';
1
+ import { YAMLMap } from '../nodes/YAMLMap';
2
+ import type { BlockMap } from '../parse/cst';
3
+ import type { CollectionTag } from '../schema/types';
4
+ import type { ComposeContext, ComposeNode } from './compose-node';
5
+ import type { ComposeErrorHandler } from './composer';
6
6
  export declare function resolveBlockMap({ composeNode, composeEmptyNode }: ComposeNode, ctx: ComposeContext, bm: BlockMap, onError: ComposeErrorHandler, tag?: CollectionTag): YAMLMap.Parsed;
@@ -1,8 +1,8 @@
1
- import { Range } from '../nodes/Node.js';
2
- import { Scalar } from '../nodes/Scalar.js';
3
- import type { BlockScalar } from '../parse/cst.js';
4
- import type { ComposeContext } from './compose-node.js';
5
- import type { ComposeErrorHandler } from './composer.js';
1
+ import type { Range } from '../nodes/Node';
2
+ import { Scalar } from '../nodes/Scalar';
3
+ import type { BlockScalar } from '../parse/cst';
4
+ import type { ComposeContext } from './compose-node';
5
+ import type { ComposeErrorHandler } from './composer';
6
6
  export declare function resolveBlockScalar(ctx: ComposeContext, scalar: BlockScalar, onError: ComposeErrorHandler): {
7
7
  value: string;
8
8
  type: Scalar.BLOCK_FOLDED | Scalar.BLOCK_LITERAL | null;
@@ -1,6 +1,6 @@
1
- import { YAMLSeq } from '../nodes/YAMLSeq.js';
2
- import type { BlockSequence } from '../parse/cst.js';
3
- import { CollectionTag } from '../schema/types.js';
4
- import type { ComposeContext, ComposeNode } from './compose-node.js';
5
- import type { ComposeErrorHandler } from './composer.js';
1
+ import { YAMLSeq } from '../nodes/YAMLSeq';
2
+ import type { BlockSequence } from '../parse/cst';
3
+ import type { CollectionTag } from '../schema/types';
4
+ import type { ComposeContext, ComposeNode } from './compose-node';
5
+ import type { ComposeErrorHandler } from './composer';
6
6
  export declare function resolveBlockSeq({ composeNode, composeEmptyNode }: ComposeNode, ctx: ComposeContext, bs: BlockSequence, onError: ComposeErrorHandler, tag?: CollectionTag): YAMLSeq.Parsed;
@@ -1,5 +1,5 @@
1
- import type { SourceToken } from '../parse/cst.js';
2
- import type { ComposeErrorHandler } from './composer.js';
1
+ import type { SourceToken } from '../parse/cst';
2
+ import type { ComposeErrorHandler } from './composer';
3
3
  export declare function resolveEnd(end: SourceToken[] | undefined, offset: number, reqSpace: boolean, onError: ComposeErrorHandler): {
4
4
  comment: string;
5
5
  offset: number;
@@ -1,7 +1,7 @@
1
- import { YAMLMap } from '../nodes/YAMLMap.js';
2
- import { YAMLSeq } from '../nodes/YAMLSeq.js';
3
- import type { FlowCollection } from '../parse/cst.js';
4
- import { CollectionTag } from '../schema/types.js';
5
- import type { ComposeContext, ComposeNode } from './compose-node.js';
6
- import type { ComposeErrorHandler } from './composer.js';
7
- export declare function resolveFlowCollection({ composeNode, composeEmptyNode }: ComposeNode, ctx: ComposeContext, fc: FlowCollection, onError: ComposeErrorHandler, tag?: CollectionTag): YAMLMap.Parsed<import("../index.js").ParsedNode, import("../index.js").ParsedNode | null> | YAMLSeq.Parsed<import("../index.js").ParsedNode>;
1
+ import { YAMLMap } from '../nodes/YAMLMap';
2
+ import { YAMLSeq } from '../nodes/YAMLSeq';
3
+ import type { FlowCollection } from '../parse/cst';
4
+ import type { CollectionTag } from '../schema/types';
5
+ import type { ComposeContext, ComposeNode } from './compose-node';
6
+ import type { ComposeErrorHandler } from './composer';
7
+ export declare function resolveFlowCollection({ composeNode, composeEmptyNode }: ComposeNode, ctx: ComposeContext, fc: FlowCollection, onError: ComposeErrorHandler, tag?: CollectionTag): YAMLMap.Parsed<import('../index').ParsedNode, import('../index').ParsedNode | null> | YAMLSeq.Parsed<import('../index').ParsedNode>;
@@ -1,7 +1,7 @@
1
- import { Range } from '../nodes/Node.js';
2
- import { Scalar } from '../nodes/Scalar.js';
3
- import type { FlowScalar } from '../parse/cst.js';
4
- import type { ComposeErrorHandler } from './composer.js';
1
+ import type { Range } from '../nodes/Node';
2
+ import { Scalar } from '../nodes/Scalar';
3
+ import type { FlowScalar } from '../parse/cst';
4
+ import type { ComposeErrorHandler } from './composer';
5
5
  export declare function resolveFlowScalar(scalar: FlowScalar, strict: boolean, onError: ComposeErrorHandler): {
6
6
  value: string;
7
7
  type: Scalar.PLAIN | Scalar.QUOTE_DOUBLE | Scalar.QUOTE_SINGLE | null;
@@ -1,5 +1,5 @@
1
- import type { SourceToken, Token } from '../parse/cst.js';
2
- import type { ComposeErrorHandler } from './composer.js';
1
+ import type { SourceToken, Token } from '../parse/cst';
2
+ import type { ComposeErrorHandler } from './composer';
3
3
  export interface ResolvePropsArg {
4
4
  flow?: 'flow map' | 'flow sequence';
5
5
  indicator: 'doc-start' | 'explicit-key-ind' | 'map-value-ind' | 'seq-item-ind';
@@ -57,7 +57,7 @@ function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIn
57
57
  if (atNewline) {
58
58
  if (comment)
59
59
  comment += token.source;
60
- else
60
+ else if (!found || indicator !== 'seq-item-ind')
61
61
  spaceBefore = true;
62
62
  }
63
63
  else
@@ -1,2 +1,2 @@
1
- import type { Token } from '../parse/cst.js';
1
+ import type { Token } from '../parse/cst';
2
2
  export declare function containsNewline(key: Token | null | undefined): boolean | null;
@@ -1,2 +1,2 @@
1
- import type { Token } from '../parse/cst.js';
1
+ import type { Token } from '../parse/cst';
2
2
  export declare function emptyScalarPosition(offset: number, before: Token[] | undefined, pos: number | null): number;
@@ -1,3 +1,3 @@
1
- import { Token } from '../parse/cst';
2
- import { ComposeErrorHandler } from './composer';
1
+ import type { Token } from '../parse/cst';
2
+ import type { ComposeErrorHandler } from './composer';
3
3
  export declare function flowIndentCheck(indent: number, fc: Token | null | undefined, onError: ComposeErrorHandler): void;
@@ -1,4 +1,4 @@
1
- import type { ParsedNode } from '../nodes/Node.js';
2
- import type { Pair } from '../nodes/Pair.js';
3
- import type { ComposeContext } from './compose-node.js';
1
+ import type { ParsedNode } from '../nodes/Node';
2
+ import type { Pair } from '../nodes/Pair';
3
+ import type { ComposeContext } from './compose-node';
4
4
  export declare function mapIncludes(ctx: ComposeContext, items: Pair<ParsedNode>[], search: ParsedNode): boolean;
@@ -1,14 +1,14 @@
1
- import type { YAMLError, YAMLWarning } from '../errors.js';
2
- import { Alias } from '../nodes/Alias.js';
3
- import { NODE_TYPE } from '../nodes/identity.js';
4
- import type { Node, NodeType, ParsedNode, Range } from '../nodes/Node.js';
5
- import { Pair } from '../nodes/Pair.js';
6
- import type { Scalar } from '../nodes/Scalar.js';
7
- import type { YAMLMap } from '../nodes/YAMLMap.js';
8
- import type { YAMLSeq } from '../nodes/YAMLSeq.js';
9
- import type { CreateNodeOptions, DocumentOptions, ParseOptions, SchemaOptions, ToJSOptions, ToStringOptions } from '../options.js';
10
- import { Schema } from '../schema/Schema.js';
11
- import { Directives } from './directives.js';
1
+ import type { YAMLError, YAMLWarning } from '../errors';
2
+ import { Alias } from '../nodes/Alias';
3
+ import { NODE_TYPE } from '../nodes/identity';
4
+ import type { Node, NodeType, ParsedNode, Range } from '../nodes/Node';
5
+ import { Pair } from '../nodes/Pair';
6
+ import type { Scalar } from '../nodes/Scalar';
7
+ import type { YAMLMap } from '../nodes/YAMLMap';
8
+ import type { YAMLSeq } from '../nodes/YAMLSeq';
9
+ import type { CreateNodeOptions, DocumentOptions, ParseOptions, SchemaOptions, ToJSOptions, ToStringOptions } from '../options';
10
+ import { Schema } from '../schema/Schema';
11
+ import { Directives } from './directives';
12
12
  export type Replacer = any[] | ((key: any, value: any) => unknown);
13
13
  export declare namespace Document {
14
14
  /** @ts-ignore The typing of directives fails in TS <= 4.2 */
@@ -1,5 +1,5 @@
1
- import type { Node } from '../nodes/Node.js';
2
- import type { Document } from './Document.js';
1
+ import type { Node } from '../nodes/Node';
2
+ import type { Document } from './Document';
3
3
  /**
4
4
  * Verify that the input string is a valid anchor.
5
5
  *
@@ -1,7 +1,7 @@
1
- import type { Node } from '../nodes/Node.js';
2
- import type { Schema } from '../schema/Schema.js';
3
- import type { CollectionTag, ScalarTag } from '../schema/types.js';
4
- import type { Replacer } from './Document.js';
1
+ import type { Node } from '../nodes/Node';
2
+ import type { Schema } from '../schema/Schema';
3
+ import type { CollectionTag, ScalarTag } from '../schema/types';
4
+ import type { Replacer } from './Document';
5
5
  export interface CreateNodeContext {
6
6
  aliasDuplicateObjects: boolean;
7
7
  keepUndefined: boolean;
@@ -1,4 +1,4 @@
1
- import type { Document } from './Document.js';
1
+ import type { Document } from './Document';
2
2
  export declare class Directives {
3
3
  static defaultYaml: Directives['yaml'];
4
4
  static defaultTags: Directives['tags'];
package/dist/index.d.ts CHANGED
@@ -1,22 +1,25 @@
1
- export { Composer } from './compose/composer.js';
2
- export { Document } from './doc/Document.js';
3
- export { Schema } from './schema/Schema.js';
4
- export { ErrorCode, YAMLError, YAMLParseError, YAMLWarning } from './errors.js';
5
- export { Alias } from './nodes/Alias.js';
6
- export { isAlias, isCollection, isDocument, isMap, isNode, isPair, isScalar, isSeq } from './nodes/identity.js';
7
- export { Node, ParsedNode, Range } from './nodes/Node.js';
8
- export { Pair } from './nodes/Pair.js';
9
- export { Scalar } from './nodes/Scalar.js';
10
- export { YAMLMap } from './nodes/YAMLMap.js';
11
- export { YAMLSeq } from './nodes/YAMLSeq.js';
12
- export type { CreateNodeOptions, DocumentOptions, ParseOptions, SchemaOptions, ToJSOptions, ToStringOptions } from './options.js';
13
- export * as CST from './parse/cst.js';
14
- export { Lexer } from './parse/lexer.js';
15
- export { LineCounter } from './parse/line-counter.js';
16
- export { Parser } from './parse/parser.js';
17
- export { EmptyStream, parse, parseAllDocuments, parseDocument, stringify } from './public-api.js';
1
+ export { Composer } from './compose/composer';
2
+ export { Document } from './doc/Document';
3
+ export { Schema } from './schema/Schema';
4
+ export type { ErrorCode } from './errors';
5
+ export { YAMLError, YAMLParseError, YAMLWarning } from './errors';
6
+ export { Alias } from './nodes/Alias';
7
+ export { isAlias, isCollection, isDocument, isMap, isNode, isPair, isScalar, isSeq } from './nodes/identity';
8
+ export type { Node, ParsedNode, Range } from './nodes/Node';
9
+ export { Pair } from './nodes/Pair';
10
+ export { Scalar } from './nodes/Scalar';
11
+ export { YAMLMap } from './nodes/YAMLMap';
12
+ export { YAMLSeq } from './nodes/YAMLSeq';
13
+ export type { CreateNodeOptions, DocumentOptions, ParseOptions, SchemaOptions, ToJSOptions, ToStringOptions } from './options';
14
+ export * as CST from './parse/cst';
15
+ export { Lexer } from './parse/lexer';
16
+ export { LineCounter } from './parse/line-counter';
17
+ export { Parser } from './parse/parser';
18
+ export type { EmptyStream } from './public-api';
19
+ export { parse, parseAllDocuments, parseDocument, stringify } from './public-api';
18
20
  export type { TagId, Tags } from './schema/tags';
19
21
  export type { CollectionTag, ScalarTag } from './schema/types';
20
22
  export type { YAMLOMap } from './schema/yaml-1.1/omap';
21
23
  export type { YAMLSet } from './schema/yaml-1.1/set';
22
- export { asyncVisitor, asyncVisitorFn, visit, visitAsync, visitor, visitorFn } from './visit.js';
24
+ export type { asyncVisitor, asyncVisitorFn, visitor, visitorFn } from './visit';
25
+ export { visit, visitAsync } from './visit';
package/dist/log.js CHANGED
@@ -1,13 +1,15 @@
1
1
  'use strict';
2
2
 
3
+ var node_process = require('node:process');
4
+
3
5
  function debug(logLevel, ...messages) {
4
6
  if (logLevel === 'debug')
5
7
  console.log(...messages);
6
8
  }
7
9
  function warn(logLevel, warning) {
8
10
  if (logLevel === 'debug' || logLevel === 'warn') {
9
- if (typeof process !== 'undefined' && process.emitWarning)
10
- process.emitWarning(warning);
11
+ if (typeof node_process.emitWarning === 'function')
12
+ node_process.emitWarning(warning);
11
13
  else
12
14
  console.warn(warning);
13
15
  }
@@ -1,11 +1,12 @@
1
- import type { Document } from '../doc/Document.js';
2
- import type { FlowScalar } from '../parse/cst.js';
3
- import type { StringifyContext } from '../stringify/stringify.js';
4
- import { NodeBase, Range } from './Node.js';
1
+ import type { Document } from '../doc/Document';
2
+ import type { FlowScalar } from '../parse/cst';
3
+ import type { StringifyContext } from '../stringify/stringify';
4
+ import type { Range } from './Node';
5
+ import { NodeBase } from './Node';
5
6
  import type { Scalar } from './Scalar';
6
- import { ToJSContext } from './toJS.js';
7
- import type { YAMLMap } from './YAMLMap.js';
8
- import type { YAMLSeq } from './YAMLSeq.js';
7
+ import type { ToJSContext } from './toJS';
8
+ import type { YAMLMap } from './YAMLMap';
9
+ import type { YAMLSeq } from './YAMLSeq';
9
10
  export declare namespace Alias {
10
11
  interface Parsed extends Alias {
11
12
  range: Range;
@@ -23,6 +24,6 @@ export declare class Alias extends NodeBase {
23
24
  * instance of the `source` anchor before this node.
24
25
  */
25
26
  resolve(doc: Document): Scalar | YAMLMap | YAMLSeq | undefined;
26
- toJSON(_arg?: unknown, ctx?: ToJSContext): {} | null;
27
+ toJSON(_arg?: unknown, ctx?: ToJSContext): unknown;
27
28
  toString(ctx?: StringifyContext, _onComment?: () => void, _onChompKeep?: () => void): string;
28
29
  }
@@ -1,7 +1,7 @@
1
- import type { Schema } from '../schema/Schema.js';
2
- import { NODE_TYPE } from './identity.js';
3
- import { NodeBase } from './Node.js';
4
- export declare function collectionFromPath(schema: Schema, path: unknown[], value: unknown): import("./Node.js").Node;
1
+ import type { Schema } from '../schema/Schema';
2
+ import { NODE_TYPE } from './identity';
3
+ import { NodeBase } from './Node';
4
+ export declare function collectionFromPath(schema: Schema, path: unknown[], value: unknown): import('./Node').Node;
5
5
  export declare const isEmptyPath: (path: Iterable<unknown> | null | undefined) => path is null | undefined;
6
6
  export declare abstract class Collection extends NodeBase {
7
7
  schema: Schema | undefined;
@@ -1,13 +1,13 @@
1
- import type { Document } from '../doc/Document.js';
2
- import type { ToJSOptions } from '../options.js';
3
- import { Token } from '../parse/cst.js';
4
- import type { StringifyContext } from '../stringify/stringify.js';
5
- import type { Alias } from './Alias.js';
6
- import { NODE_TYPE } from './identity.js';
7
- import type { Scalar } from './Scalar.js';
8
- import { ToJSContext } from './toJS.js';
9
- import type { MapLike, YAMLMap } from './YAMLMap.js';
10
- import type { YAMLSeq } from './YAMLSeq.js';
1
+ import type { Document } from '../doc/Document';
2
+ import type { ToJSOptions } from '../options';
3
+ import type { Token } from '../parse/cst';
4
+ import type { StringifyContext } from '../stringify/stringify';
5
+ import type { Alias } from './Alias';
6
+ import { NODE_TYPE } from './identity';
7
+ import type { Scalar } from './Scalar';
8
+ import type { ToJSContext } from './toJS';
9
+ import type { MapLike, YAMLMap } from './YAMLMap';
10
+ import type { YAMLSeq } from './YAMLSeq';
11
11
  export type Node<T = unknown> = Alias | Scalar<T> | YAMLMap<unknown, T> | YAMLSeq<T>;
12
12
  /** Utility type mapper */
13
13
  export type NodeType<T> = T extends string | number | bigint | boolean | null | undefined ? Scalar<T> : T extends Date ? Scalar<string | Date> : T extends Array<any> ? YAMLSeq<NodeType<T[number]>> : T extends {