yaml 2.8.2 → 3.0.0-0

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 (238) hide show
  1. package/README.md +65 -85
  2. package/{bin.mjs → bin.js} +1 -1
  3. package/dist/chunk-BYypO7fO.js +18 -0
  4. package/dist/cli.d.ts +10 -7
  5. package/dist/cli.js +181 -0
  6. package/dist/directives-CG6n4xSM.js +2856 -0
  7. package/dist/index.d.ts +335 -25
  8. package/dist/index.js +4 -49
  9. package/dist/line-counter-TFl552k_.js +3098 -0
  10. package/dist/public-api-BE74JyVm.js +79 -0
  11. package/dist/stringifyString-S_ITVLTO.d.ts +1306 -0
  12. package/dist/test-events.d.ts +6 -3
  13. package/dist/test-events.js +98 -124
  14. package/dist/util.d.ts +2 -16
  15. package/dist/util.js +2 -27
  16. package/package.json +20 -44
  17. package/browser/dist/compose/compose-collection.js +0 -88
  18. package/browser/dist/compose/compose-doc.js +0 -43
  19. package/browser/dist/compose/compose-node.js +0 -102
  20. package/browser/dist/compose/compose-scalar.js +0 -86
  21. package/browser/dist/compose/composer.js +0 -217
  22. package/browser/dist/compose/resolve-block-map.js +0 -115
  23. package/browser/dist/compose/resolve-block-scalar.js +0 -198
  24. package/browser/dist/compose/resolve-block-seq.js +0 -49
  25. package/browser/dist/compose/resolve-end.js +0 -37
  26. package/browser/dist/compose/resolve-flow-collection.js +0 -207
  27. package/browser/dist/compose/resolve-flow-scalar.js +0 -223
  28. package/browser/dist/compose/resolve-props.js +0 -146
  29. package/browser/dist/compose/util-contains-newline.js +0 -34
  30. package/browser/dist/compose/util-empty-scalar-position.js +0 -26
  31. package/browser/dist/compose/util-flow-indent-check.js +0 -15
  32. package/browser/dist/compose/util-map-includes.js +0 -13
  33. package/browser/dist/doc/Document.js +0 -335
  34. package/browser/dist/doc/anchors.js +0 -71
  35. package/browser/dist/doc/applyReviver.js +0 -55
  36. package/browser/dist/doc/createNode.js +0 -88
  37. package/browser/dist/doc/directives.js +0 -176
  38. package/browser/dist/errors.js +0 -57
  39. package/browser/dist/index.js +0 -17
  40. package/browser/dist/log.js +0 -11
  41. package/browser/dist/nodes/Alias.js +0 -114
  42. package/browser/dist/nodes/Collection.js +0 -147
  43. package/browser/dist/nodes/Node.js +0 -38
  44. package/browser/dist/nodes/Pair.js +0 -36
  45. package/browser/dist/nodes/Scalar.js +0 -24
  46. package/browser/dist/nodes/YAMLMap.js +0 -144
  47. package/browser/dist/nodes/YAMLSeq.js +0 -113
  48. package/browser/dist/nodes/addPairToJSMap.js +0 -63
  49. package/browser/dist/nodes/identity.js +0 -36
  50. package/browser/dist/nodes/toJS.js +0 -37
  51. package/browser/dist/parse/cst-scalar.js +0 -214
  52. package/browser/dist/parse/cst-stringify.js +0 -61
  53. package/browser/dist/parse/cst-visit.js +0 -97
  54. package/browser/dist/parse/cst.js +0 -98
  55. package/browser/dist/parse/lexer.js +0 -717
  56. package/browser/dist/parse/line-counter.js +0 -39
  57. package/browser/dist/parse/parser.js +0 -967
  58. package/browser/dist/public-api.js +0 -102
  59. package/browser/dist/schema/Schema.js +0 -37
  60. package/browser/dist/schema/common/map.js +0 -17
  61. package/browser/dist/schema/common/null.js +0 -15
  62. package/browser/dist/schema/common/seq.js +0 -17
  63. package/browser/dist/schema/common/string.js +0 -14
  64. package/browser/dist/schema/core/bool.js +0 -19
  65. package/browser/dist/schema/core/float.js +0 -43
  66. package/browser/dist/schema/core/int.js +0 -38
  67. package/browser/dist/schema/core/schema.js +0 -23
  68. package/browser/dist/schema/json/schema.js +0 -62
  69. package/browser/dist/schema/tags.js +0 -96
  70. package/browser/dist/schema/yaml-1.1/binary.js +0 -58
  71. package/browser/dist/schema/yaml-1.1/bool.js +0 -26
  72. package/browser/dist/schema/yaml-1.1/float.js +0 -46
  73. package/browser/dist/schema/yaml-1.1/int.js +0 -71
  74. package/browser/dist/schema/yaml-1.1/merge.js +0 -64
  75. package/browser/dist/schema/yaml-1.1/omap.js +0 -74
  76. package/browser/dist/schema/yaml-1.1/pairs.js +0 -78
  77. package/browser/dist/schema/yaml-1.1/schema.js +0 -39
  78. package/browser/dist/schema/yaml-1.1/set.js +0 -93
  79. package/browser/dist/schema/yaml-1.1/timestamp.js +0 -101
  80. package/browser/dist/stringify/foldFlowLines.js +0 -146
  81. package/browser/dist/stringify/stringify.js +0 -128
  82. package/browser/dist/stringify/stringifyCollection.js +0 -143
  83. package/browser/dist/stringify/stringifyComment.js +0 -20
  84. package/browser/dist/stringify/stringifyDocument.js +0 -85
  85. package/browser/dist/stringify/stringifyNumber.js +0 -24
  86. package/browser/dist/stringify/stringifyPair.js +0 -150
  87. package/browser/dist/stringify/stringifyString.js +0 -336
  88. package/browser/dist/util.js +0 -11
  89. package/browser/dist/visit.js +0 -233
  90. package/browser/index.js +0 -5
  91. package/browser/package.json +0 -3
  92. package/dist/cli.mjs +0 -201
  93. package/dist/compose/compose-collection.d.ts +0 -11
  94. package/dist/compose/compose-collection.js +0 -90
  95. package/dist/compose/compose-doc.d.ts +0 -7
  96. package/dist/compose/compose-doc.js +0 -45
  97. package/dist/compose/compose-node.d.ts +0 -29
  98. package/dist/compose/compose-node.js +0 -105
  99. package/dist/compose/compose-scalar.d.ts +0 -5
  100. package/dist/compose/compose-scalar.js +0 -88
  101. package/dist/compose/composer.d.ts +0 -63
  102. package/dist/compose/composer.js +0 -222
  103. package/dist/compose/resolve-block-map.d.ts +0 -6
  104. package/dist/compose/resolve-block-map.js +0 -117
  105. package/dist/compose/resolve-block-scalar.d.ts +0 -11
  106. package/dist/compose/resolve-block-scalar.js +0 -200
  107. package/dist/compose/resolve-block-seq.d.ts +0 -6
  108. package/dist/compose/resolve-block-seq.js +0 -51
  109. package/dist/compose/resolve-end.d.ts +0 -6
  110. package/dist/compose/resolve-end.js +0 -39
  111. package/dist/compose/resolve-flow-collection.d.ts +0 -7
  112. package/dist/compose/resolve-flow-collection.js +0 -209
  113. package/dist/compose/resolve-flow-scalar.d.ts +0 -10
  114. package/dist/compose/resolve-flow-scalar.js +0 -225
  115. package/dist/compose/resolve-props.d.ts +0 -23
  116. package/dist/compose/resolve-props.js +0 -148
  117. package/dist/compose/util-contains-newline.d.ts +0 -2
  118. package/dist/compose/util-contains-newline.js +0 -36
  119. package/dist/compose/util-empty-scalar-position.d.ts +0 -2
  120. package/dist/compose/util-empty-scalar-position.js +0 -28
  121. package/dist/compose/util-flow-indent-check.d.ts +0 -3
  122. package/dist/compose/util-flow-indent-check.js +0 -17
  123. package/dist/compose/util-map-includes.d.ts +0 -4
  124. package/dist/compose/util-map-includes.js +0 -15
  125. package/dist/doc/Document.d.ts +0 -141
  126. package/dist/doc/Document.js +0 -337
  127. package/dist/doc/anchors.d.ts +0 -24
  128. package/dist/doc/anchors.js +0 -76
  129. package/dist/doc/applyReviver.d.ts +0 -9
  130. package/dist/doc/applyReviver.js +0 -57
  131. package/dist/doc/createNode.d.ts +0 -17
  132. package/dist/doc/createNode.js +0 -90
  133. package/dist/doc/directives.d.ts +0 -49
  134. package/dist/doc/directives.js +0 -178
  135. package/dist/errors.d.ts +0 -21
  136. package/dist/errors.js +0 -62
  137. package/dist/log.d.ts +0 -3
  138. package/dist/log.js +0 -19
  139. package/dist/nodes/Alias.d.ts +0 -29
  140. package/dist/nodes/Alias.js +0 -116
  141. package/dist/nodes/Collection.d.ts +0 -73
  142. package/dist/nodes/Collection.js +0 -151
  143. package/dist/nodes/Node.d.ts +0 -53
  144. package/dist/nodes/Node.js +0 -40
  145. package/dist/nodes/Pair.d.ts +0 -22
  146. package/dist/nodes/Pair.js +0 -39
  147. package/dist/nodes/Scalar.d.ts +0 -43
  148. package/dist/nodes/Scalar.js +0 -27
  149. package/dist/nodes/YAMLMap.d.ts +0 -53
  150. package/dist/nodes/YAMLMap.js +0 -147
  151. package/dist/nodes/YAMLSeq.d.ts +0 -60
  152. package/dist/nodes/YAMLSeq.js +0 -115
  153. package/dist/nodes/addPairToJSMap.d.ts +0 -4
  154. package/dist/nodes/addPairToJSMap.js +0 -65
  155. package/dist/nodes/identity.d.ts +0 -23
  156. package/dist/nodes/identity.js +0 -53
  157. package/dist/nodes/toJS.d.ts +0 -29
  158. package/dist/nodes/toJS.js +0 -39
  159. package/dist/options.d.ts +0 -344
  160. package/dist/parse/cst-scalar.d.ts +0 -64
  161. package/dist/parse/cst-scalar.js +0 -218
  162. package/dist/parse/cst-stringify.d.ts +0 -8
  163. package/dist/parse/cst-stringify.js +0 -63
  164. package/dist/parse/cst-visit.d.ts +0 -39
  165. package/dist/parse/cst-visit.js +0 -99
  166. package/dist/parse/cst.d.ts +0 -109
  167. package/dist/parse/cst.js +0 -112
  168. package/dist/parse/lexer.d.ts +0 -87
  169. package/dist/parse/lexer.js +0 -719
  170. package/dist/parse/line-counter.d.ts +0 -22
  171. package/dist/parse/line-counter.js +0 -41
  172. package/dist/parse/parser.d.ts +0 -84
  173. package/dist/parse/parser.js +0 -972
  174. package/dist/public-api.d.ts +0 -44
  175. package/dist/public-api.js +0 -107
  176. package/dist/schema/Schema.d.ts +0 -17
  177. package/dist/schema/Schema.js +0 -39
  178. package/dist/schema/common/map.d.ts +0 -2
  179. package/dist/schema/common/map.js +0 -19
  180. package/dist/schema/common/null.d.ts +0 -4
  181. package/dist/schema/common/null.js +0 -17
  182. package/dist/schema/common/seq.d.ts +0 -2
  183. package/dist/schema/common/seq.js +0 -19
  184. package/dist/schema/common/string.d.ts +0 -2
  185. package/dist/schema/common/string.js +0 -16
  186. package/dist/schema/core/bool.d.ts +0 -4
  187. package/dist/schema/core/bool.js +0 -21
  188. package/dist/schema/core/float.d.ts +0 -4
  189. package/dist/schema/core/float.js +0 -47
  190. package/dist/schema/core/int.d.ts +0 -4
  191. package/dist/schema/core/int.js +0 -42
  192. package/dist/schema/core/schema.d.ts +0 -1
  193. package/dist/schema/core/schema.js +0 -25
  194. package/dist/schema/json/schema.d.ts +0 -2
  195. package/dist/schema/json/schema.js +0 -64
  196. package/dist/schema/json-schema.d.ts +0 -69
  197. package/dist/schema/tags.d.ts +0 -48
  198. package/dist/schema/tags.js +0 -99
  199. package/dist/schema/types.d.ts +0 -92
  200. package/dist/schema/yaml-1.1/binary.d.ts +0 -2
  201. package/dist/schema/yaml-1.1/binary.js +0 -70
  202. package/dist/schema/yaml-1.1/bool.d.ts +0 -7
  203. package/dist/schema/yaml-1.1/bool.js +0 -29
  204. package/dist/schema/yaml-1.1/float.d.ts +0 -4
  205. package/dist/schema/yaml-1.1/float.js +0 -50
  206. package/dist/schema/yaml-1.1/int.d.ts +0 -5
  207. package/dist/schema/yaml-1.1/int.js +0 -76
  208. package/dist/schema/yaml-1.1/merge.d.ts +0 -9
  209. package/dist/schema/yaml-1.1/merge.js +0 -68
  210. package/dist/schema/yaml-1.1/omap.d.ts +0 -22
  211. package/dist/schema/yaml-1.1/omap.js +0 -77
  212. package/dist/schema/yaml-1.1/pairs.d.ts +0 -10
  213. package/dist/schema/yaml-1.1/pairs.js +0 -82
  214. package/dist/schema/yaml-1.1/schema.d.ts +0 -1
  215. package/dist/schema/yaml-1.1/schema.js +0 -41
  216. package/dist/schema/yaml-1.1/set.d.ts +0 -28
  217. package/dist/schema/yaml-1.1/set.js +0 -96
  218. package/dist/schema/yaml-1.1/timestamp.d.ts +0 -6
  219. package/dist/schema/yaml-1.1/timestamp.js +0 -105
  220. package/dist/stringify/foldFlowLines.d.ts +0 -34
  221. package/dist/stringify/foldFlowLines.js +0 -151
  222. package/dist/stringify/stringify.d.ts +0 -21
  223. package/dist/stringify/stringify.js +0 -131
  224. package/dist/stringify/stringifyCollection.d.ts +0 -17
  225. package/dist/stringify/stringifyCollection.js +0 -145
  226. package/dist/stringify/stringifyComment.d.ts +0 -10
  227. package/dist/stringify/stringifyComment.js +0 -24
  228. package/dist/stringify/stringifyDocument.d.ts +0 -4
  229. package/dist/stringify/stringifyDocument.js +0 -87
  230. package/dist/stringify/stringifyNumber.d.ts +0 -2
  231. package/dist/stringify/stringifyNumber.js +0 -26
  232. package/dist/stringify/stringifyPair.d.ts +0 -3
  233. package/dist/stringify/stringifyPair.js +0 -152
  234. package/dist/stringify/stringifyString.d.ts +0 -9
  235. package/dist/stringify/stringifyString.js +0 -338
  236. package/dist/visit.d.ts +0 -102
  237. package/dist/visit.js +0 -236
  238. package/util.js +0 -2
@@ -1,73 +0,0 @@
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
- export declare const isEmptyPath: (path: Iterable<unknown> | null | undefined) => path is null | undefined;
6
- export declare abstract class Collection extends NodeBase {
7
- schema: Schema | undefined;
8
- [NODE_TYPE]: symbol;
9
- items: unknown[];
10
- /** An optional anchor on this node. Used by alias nodes. */
11
- anchor?: string;
12
- /**
13
- * If true, stringify this and all child nodes using flow rather than
14
- * block styles.
15
- */
16
- flow?: boolean;
17
- constructor(type: symbol, schema?: Schema);
18
- /**
19
- * Create a copy of this collection.
20
- *
21
- * @param schema - If defined, overwrites the original's schema
22
- */
23
- clone(schema?: Schema): Collection;
24
- /** Adds a value to the collection. */
25
- abstract add(value: unknown): void;
26
- /**
27
- * Removes a value from the collection.
28
- * @returns `true` if the item was found and removed.
29
- */
30
- abstract delete(key: unknown): boolean;
31
- /**
32
- * Returns item at `key`, or `undefined` if not found. By default unwraps
33
- * scalar values from their surrounding node; to disable set `keepScalar` to
34
- * `true` (collections are always returned intact).
35
- */
36
- abstract get(key: unknown, keepScalar?: boolean): unknown;
37
- /**
38
- * Checks if the collection includes a value with the key `key`.
39
- */
40
- abstract has(key: unknown): boolean;
41
- /**
42
- * Sets a value in this collection. For `!!set`, `value` needs to be a
43
- * boolean to add/remove the item from the set.
44
- */
45
- abstract set(key: unknown, value: unknown): void;
46
- /**
47
- * Adds a value to the collection. For `!!map` and `!!omap` the value must
48
- * be a Pair instance or a `{ key, value }` object, which may not have a key
49
- * that already exists in the map.
50
- */
51
- addIn(path: Iterable<unknown>, value: unknown): void;
52
- /**
53
- * Removes a value from the collection.
54
- * @returns `true` if the item was found and removed.
55
- */
56
- deleteIn(path: Iterable<unknown>): boolean;
57
- /**
58
- * Returns item at `key`, or `undefined` if not found. By default unwraps
59
- * scalar values from their surrounding node; to disable set `keepScalar` to
60
- * `true` (collections are always returned intact).
61
- */
62
- getIn(path: Iterable<unknown>, keepScalar?: boolean): unknown;
63
- hasAllNullValues(allowScalar?: boolean): boolean;
64
- /**
65
- * Checks if the collection includes a value with the key `key`.
66
- */
67
- hasIn(path: Iterable<unknown>): boolean;
68
- /**
69
- * Sets a value in this collection. For `!!set`, `value` needs to be a
70
- * boolean to add/remove the item from the set.
71
- */
72
- setIn(path: Iterable<unknown>, value: unknown): void;
73
- }
@@ -1,151 +0,0 @@
1
- 'use strict';
2
-
3
- var createNode = require('../doc/createNode.js');
4
- var identity = require('./identity.js');
5
- var Node = require('./Node.js');
6
-
7
- function collectionFromPath(schema, path, value) {
8
- let v = value;
9
- for (let i = path.length - 1; i >= 0; --i) {
10
- const k = path[i];
11
- if (typeof k === 'number' && Number.isInteger(k) && k >= 0) {
12
- const a = [];
13
- a[k] = v;
14
- v = a;
15
- }
16
- else {
17
- v = new Map([[k, v]]);
18
- }
19
- }
20
- return createNode.createNode(v, undefined, {
21
- aliasDuplicateObjects: false,
22
- keepUndefined: false,
23
- onAnchor: () => {
24
- throw new Error('This should not happen, please report a bug.');
25
- },
26
- schema,
27
- sourceObjects: new Map()
28
- });
29
- }
30
- // Type guard is intentionally a little wrong so as to be more useful,
31
- // as it does not cover untypable empty non-string iterables (e.g. []).
32
- const isEmptyPath = (path) => path == null ||
33
- (typeof path === 'object' && !!path[Symbol.iterator]().next().done);
34
- class Collection extends Node.NodeBase {
35
- constructor(type, schema) {
36
- super(type);
37
- Object.defineProperty(this, 'schema', {
38
- value: schema,
39
- configurable: true,
40
- enumerable: false,
41
- writable: true
42
- });
43
- }
44
- /**
45
- * Create a copy of this collection.
46
- *
47
- * @param schema - If defined, overwrites the original's schema
48
- */
49
- clone(schema) {
50
- const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));
51
- if (schema)
52
- copy.schema = schema;
53
- copy.items = copy.items.map(it => identity.isNode(it) || identity.isPair(it) ? it.clone(schema) : it);
54
- if (this.range)
55
- copy.range = this.range.slice();
56
- return copy;
57
- }
58
- /**
59
- * Adds a value to the collection. For `!!map` and `!!omap` the value must
60
- * be a Pair instance or a `{ key, value }` object, which may not have a key
61
- * that already exists in the map.
62
- */
63
- addIn(path, value) {
64
- if (isEmptyPath(path))
65
- this.add(value);
66
- else {
67
- const [key, ...rest] = path;
68
- const node = this.get(key, true);
69
- if (identity.isCollection(node))
70
- node.addIn(rest, value);
71
- else if (node === undefined && this.schema)
72
- this.set(key, collectionFromPath(this.schema, rest, value));
73
- else
74
- throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);
75
- }
76
- }
77
- /**
78
- * Removes a value from the collection.
79
- * @returns `true` if the item was found and removed.
80
- */
81
- deleteIn(path) {
82
- const [key, ...rest] = path;
83
- if (rest.length === 0)
84
- return this.delete(key);
85
- const node = this.get(key, true);
86
- if (identity.isCollection(node))
87
- return node.deleteIn(rest);
88
- else
89
- throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);
90
- }
91
- /**
92
- * Returns item at `key`, or `undefined` if not found. By default unwraps
93
- * scalar values from their surrounding node; to disable set `keepScalar` to
94
- * `true` (collections are always returned intact).
95
- */
96
- getIn(path, keepScalar) {
97
- const [key, ...rest] = path;
98
- const node = this.get(key, true);
99
- if (rest.length === 0)
100
- return !keepScalar && identity.isScalar(node) ? node.value : node;
101
- else
102
- return identity.isCollection(node) ? node.getIn(rest, keepScalar) : undefined;
103
- }
104
- hasAllNullValues(allowScalar) {
105
- return this.items.every(node => {
106
- if (!identity.isPair(node))
107
- return false;
108
- const n = node.value;
109
- return (n == null ||
110
- (allowScalar &&
111
- identity.isScalar(n) &&
112
- n.value == null &&
113
- !n.commentBefore &&
114
- !n.comment &&
115
- !n.tag));
116
- });
117
- }
118
- /**
119
- * Checks if the collection includes a value with the key `key`.
120
- */
121
- hasIn(path) {
122
- const [key, ...rest] = path;
123
- if (rest.length === 0)
124
- return this.has(key);
125
- const node = this.get(key, true);
126
- return identity.isCollection(node) ? node.hasIn(rest) : false;
127
- }
128
- /**
129
- * Sets a value in this collection. For `!!set`, `value` needs to be a
130
- * boolean to add/remove the item from the set.
131
- */
132
- setIn(path, value) {
133
- const [key, ...rest] = path;
134
- if (rest.length === 0) {
135
- this.set(key, value);
136
- }
137
- else {
138
- const node = this.get(key, true);
139
- if (identity.isCollection(node))
140
- node.setIn(rest, value);
141
- else if (node === undefined && this.schema)
142
- this.set(key, collectionFromPath(this.schema, rest, value));
143
- else
144
- throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);
145
- }
146
- }
147
- }
148
-
149
- exports.Collection = Collection;
150
- exports.collectionFromPath = collectionFromPath;
151
- exports.isEmptyPath = isEmptyPath;
@@ -1,53 +0,0 @@
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
- export type Node<T = unknown> = Alias | Scalar<T> | YAMLMap<unknown, T> | YAMLSeq<T>;
12
- /** Utility type mapper */
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 {
14
- [key: string]: any;
15
- } ? YAMLMap<NodeType<keyof T>, NodeType<T[keyof T]>> : T extends {
16
- [key: number]: any;
17
- } ? YAMLMap<NodeType<keyof T>, NodeType<T[keyof T]>> : Node;
18
- export type ParsedNode = Alias.Parsed | Scalar.Parsed | YAMLMap.Parsed | YAMLSeq.Parsed;
19
- /** `[start, value-end, node-end]` */
20
- export type Range = [number, number, number];
21
- export declare abstract class NodeBase {
22
- readonly [NODE_TYPE]: symbol;
23
- /** A comment on or immediately after this */
24
- comment?: string | null;
25
- /** A comment before this */
26
- commentBefore?: string | null;
27
- /**
28
- * The `[start, value-end, node-end]` character offsets for the part of the
29
- * source parsed into this node (undefined if not parsed). The `value-end`
30
- * and `node-end` positions are themselves not included in their respective
31
- * ranges.
32
- */
33
- range?: Range | null;
34
- /** A blank line before this node and its commentBefore */
35
- spaceBefore?: boolean;
36
- /** The CST token that was composed into this node. */
37
- srcToken?: Token;
38
- /** A fully qualified tag, if required */
39
- tag?: string;
40
- /**
41
- * Customize the way that a key-value pair is resolved.
42
- * Used for YAML 1.1 !!merge << handling.
43
- */
44
- addToJSMap?: (ctx: ToJSContext | undefined, map: MapLike, value: unknown) => void;
45
- /** A plain JS representation of this node */
46
- abstract toJSON(): any;
47
- abstract toString(ctx?: StringifyContext, onComment?: () => void, onChompKeep?: () => void): string;
48
- constructor(type: symbol);
49
- /** Create a copy of this node. */
50
- clone(): NodeBase;
51
- /** A plain JavaScript representation of this node. */
52
- toJS(doc: Document<Node, boolean>, { mapAsMap, maxAliasCount, onAnchor, reviver }?: ToJSOptions): any;
53
- }
@@ -1,40 +0,0 @@
1
- 'use strict';
2
-
3
- var applyReviver = require('../doc/applyReviver.js');
4
- var identity = require('./identity.js');
5
- var toJS = require('./toJS.js');
6
-
7
- class NodeBase {
8
- constructor(type) {
9
- Object.defineProperty(this, identity.NODE_TYPE, { value: type });
10
- }
11
- /** Create a copy of this node. */
12
- clone() {
13
- const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));
14
- if (this.range)
15
- copy.range = this.range.slice();
16
- return copy;
17
- }
18
- /** A plain JavaScript representation of this node. */
19
- toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {
20
- if (!identity.isDocument(doc))
21
- throw new TypeError('A document argument is required');
22
- const ctx = {
23
- anchors: new Map(),
24
- doc,
25
- keep: true,
26
- mapAsMap: mapAsMap === true,
27
- mapKeyWarned: false,
28
- maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100
29
- };
30
- const res = toJS.toJS(this, '', ctx);
31
- if (typeof onAnchor === 'function')
32
- for (const { count, res } of ctx.anchors.values())
33
- onAnchor(res, count);
34
- return typeof reviver === 'function'
35
- ? applyReviver.applyReviver(reviver, { '': res }, '', res)
36
- : res;
37
- }
38
- }
39
-
40
- exports.NodeBase = NodeBase;
@@ -1,22 +0,0 @@
1
- import type { CreateNodeContext } from '../doc/createNode';
2
- import type { CollectionItem } from '../parse/cst';
3
- import type { Schema } from '../schema/Schema';
4
- import type { StringifyContext } from '../stringify/stringify';
5
- import { addPairToJSMap } from './addPairToJSMap';
6
- import { NODE_TYPE } from './identity';
7
- import type { Node } from './Node';
8
- import type { ToJSContext } from './toJS';
9
- export declare function createPair(key: unknown, value: unknown, ctx: CreateNodeContext): Pair<Node, Node>;
10
- export declare class Pair<K = unknown, V = unknown> {
11
- readonly [NODE_TYPE]: symbol;
12
- /** Always Node or null when parsed, but can be set to anything. */
13
- key: K;
14
- /** Always Node or null when parsed, but can be set to anything. */
15
- value: V | null;
16
- /** The CST token that was composed into this pair. */
17
- srcToken?: CollectionItem;
18
- constructor(key: K, value?: V | null);
19
- clone(schema?: Schema): Pair<K, V>;
20
- toJSON(_?: unknown, ctx?: ToJSContext): ReturnType<typeof addPairToJSMap>;
21
- toString(ctx?: StringifyContext, onComment?: () => void, onChompKeep?: () => void): string;
22
- }
@@ -1,39 +0,0 @@
1
- 'use strict';
2
-
3
- var createNode = require('../doc/createNode.js');
4
- var stringifyPair = require('../stringify/stringifyPair.js');
5
- var addPairToJSMap = require('./addPairToJSMap.js');
6
- var identity = require('./identity.js');
7
-
8
- function createPair(key, value, ctx) {
9
- const k = createNode.createNode(key, undefined, ctx);
10
- const v = createNode.createNode(value, undefined, ctx);
11
- return new Pair(k, v);
12
- }
13
- class Pair {
14
- constructor(key, value = null) {
15
- Object.defineProperty(this, identity.NODE_TYPE, { value: identity.PAIR });
16
- this.key = key;
17
- this.value = value;
18
- }
19
- clone(schema) {
20
- let { key, value } = this;
21
- if (identity.isNode(key))
22
- key = key.clone(schema);
23
- if (identity.isNode(value))
24
- value = value.clone(schema);
25
- return new Pair(key, value);
26
- }
27
- toJSON(_, ctx) {
28
- const pair = ctx?.mapAsMap ? new Map() : {};
29
- return addPairToJSMap.addPairToJSMap(ctx, pair, this);
30
- }
31
- toString(ctx, onComment, onChompKeep) {
32
- return ctx?.doc
33
- ? stringifyPair.stringifyPair(this, ctx, onComment, onChompKeep)
34
- : JSON.stringify(this);
35
- }
36
- }
37
-
38
- exports.Pair = Pair;
39
- exports.createPair = createPair;
@@ -1,43 +0,0 @@
1
- import type { BlockScalar, FlowScalar } from '../parse/cst';
2
- import type { Range } from './Node';
3
- import { NodeBase } from './Node';
4
- import type { ToJSContext } from './toJS';
5
- export declare const isScalarValue: (value: unknown) => boolean;
6
- export declare namespace Scalar {
7
- interface Parsed extends Scalar {
8
- range: Range;
9
- source: string;
10
- srcToken?: FlowScalar | BlockScalar;
11
- }
12
- type BLOCK_FOLDED = 'BLOCK_FOLDED';
13
- type BLOCK_LITERAL = 'BLOCK_LITERAL';
14
- type PLAIN = 'PLAIN';
15
- type QUOTE_DOUBLE = 'QUOTE_DOUBLE';
16
- type QUOTE_SINGLE = 'QUOTE_SINGLE';
17
- type Type = BLOCK_FOLDED | BLOCK_LITERAL | PLAIN | QUOTE_DOUBLE | QUOTE_SINGLE;
18
- }
19
- export declare class Scalar<T = unknown> extends NodeBase {
20
- static readonly BLOCK_FOLDED = "BLOCK_FOLDED";
21
- static readonly BLOCK_LITERAL = "BLOCK_LITERAL";
22
- static readonly PLAIN = "PLAIN";
23
- static readonly QUOTE_DOUBLE = "QUOTE_DOUBLE";
24
- static readonly QUOTE_SINGLE = "QUOTE_SINGLE";
25
- value: T;
26
- /** An optional anchor on this node. Used by alias nodes. */
27
- anchor?: string;
28
- /**
29
- * By default (undefined), numbers use decimal notation.
30
- * The YAML 1.2 core schema only supports 'HEX' and 'OCT'.
31
- * The YAML 1.1 schema also supports 'BIN' and 'TIME'
32
- */
33
- format?: string;
34
- /** If `value` is a number, use this value when stringifying this node. */
35
- minFractionDigits?: number;
36
- /** Set during parsing to the source string value */
37
- source?: string;
38
- /** The scalar style used for the node's string representation */
39
- type?: Scalar.Type;
40
- constructor(value: T);
41
- toJSON(arg?: any, ctx?: ToJSContext): any;
42
- toString(): string;
43
- }
@@ -1,27 +0,0 @@
1
- 'use strict';
2
-
3
- var identity = require('./identity.js');
4
- var Node = require('./Node.js');
5
- var toJS = require('./toJS.js');
6
-
7
- const isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');
8
- class Scalar extends Node.NodeBase {
9
- constructor(value) {
10
- super(identity.SCALAR);
11
- this.value = value;
12
- }
13
- toJSON(arg, ctx) {
14
- return ctx?.keep ? this.value : toJS.toJS(this.value, arg, ctx);
15
- }
16
- toString() {
17
- return String(this.value);
18
- }
19
- }
20
- Scalar.BLOCK_FOLDED = 'BLOCK_FOLDED';
21
- Scalar.BLOCK_LITERAL = 'BLOCK_LITERAL';
22
- Scalar.PLAIN = 'PLAIN';
23
- Scalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';
24
- Scalar.QUOTE_SINGLE = 'QUOTE_SINGLE';
25
-
26
- exports.Scalar = Scalar;
27
- exports.isScalarValue = isScalarValue;
@@ -1,53 +0,0 @@
1
- import type { BlockMap, FlowCollection } from '../parse/cst';
2
- import type { Schema } from '../schema/Schema';
3
- import type { StringifyContext } from '../stringify/stringify';
4
- import type { CreateNodeContext } from '../util';
5
- import { Collection } from './Collection';
6
- import type { ParsedNode, Range } from './Node';
7
- import { Pair } from './Pair';
8
- import type { Scalar } from './Scalar';
9
- import type { ToJSContext } from './toJS';
10
- export type MapLike = Map<unknown, unknown> | Set<unknown> | Record<string | number | symbol, unknown>;
11
- export declare function findPair<K = unknown, V = unknown>(items: Iterable<Pair<K, V>>, key: unknown): Pair<K, V> | undefined;
12
- export declare namespace YAMLMap {
13
- interface Parsed<K extends ParsedNode = ParsedNode, V extends ParsedNode | null = ParsedNode | null> extends YAMLMap<K, V> {
14
- items: Pair<K, V>[];
15
- range: Range;
16
- srcToken?: BlockMap | FlowCollection;
17
- }
18
- }
19
- export declare class YAMLMap<K = unknown, V = unknown> extends Collection {
20
- static get tagName(): 'tag:yaml.org,2002:map';
21
- items: Pair<K, V>[];
22
- constructor(schema?: Schema);
23
- /**
24
- * A generic collection parsing method that can be extended
25
- * to other node classes that inherit from YAMLMap
26
- */
27
- static from(schema: Schema, obj: unknown, ctx: CreateNodeContext): YAMLMap;
28
- /**
29
- * Adds a value to the collection.
30
- *
31
- * @param overwrite - If not set `true`, using a key that is already in the
32
- * collection will throw. Otherwise, overwrites the previous value.
33
- */
34
- add(pair: Pair<K, V> | {
35
- key: K;
36
- value: V;
37
- }, overwrite?: boolean): void;
38
- delete(key: unknown): boolean;
39
- get(key: unknown, keepScalar: true): Scalar<V> | undefined;
40
- get(key: unknown, keepScalar?: false): V | undefined;
41
- get(key: unknown, keepScalar?: boolean): V | Scalar<V> | undefined;
42
- has(key: unknown): boolean;
43
- set(key: K, value: V): void;
44
- /**
45
- * @param ctx - Conversion context, originally set in Document#toJS()
46
- * @param {Class} Type - If set, forces the returned collection type
47
- * @returns Instance of Type, Map, or Object
48
- */
49
- toJSON<T extends MapLike = Map<unknown, unknown>>(_?: unknown, ctx?: ToJSContext, Type?: {
50
- new (): T;
51
- }): any;
52
- toString(ctx?: StringifyContext, onComment?: () => void, onChompKeep?: () => void): string;
53
- }
@@ -1,147 +0,0 @@
1
- 'use strict';
2
-
3
- var stringifyCollection = require('../stringify/stringifyCollection.js');
4
- var addPairToJSMap = require('./addPairToJSMap.js');
5
- var Collection = require('./Collection.js');
6
- var identity = require('./identity.js');
7
- var Pair = require('./Pair.js');
8
- var Scalar = require('./Scalar.js');
9
-
10
- function findPair(items, key) {
11
- const k = identity.isScalar(key) ? key.value : key;
12
- for (const it of items) {
13
- if (identity.isPair(it)) {
14
- if (it.key === key || it.key === k)
15
- return it;
16
- if (identity.isScalar(it.key) && it.key.value === k)
17
- return it;
18
- }
19
- }
20
- return undefined;
21
- }
22
- class YAMLMap extends Collection.Collection {
23
- static get tagName() {
24
- return 'tag:yaml.org,2002:map';
25
- }
26
- constructor(schema) {
27
- super(identity.MAP, schema);
28
- this.items = [];
29
- }
30
- /**
31
- * A generic collection parsing method that can be extended
32
- * to other node classes that inherit from YAMLMap
33
- */
34
- static from(schema, obj, ctx) {
35
- const { keepUndefined, replacer } = ctx;
36
- const map = new this(schema);
37
- const add = (key, value) => {
38
- if (typeof replacer === 'function')
39
- value = replacer.call(obj, key, value);
40
- else if (Array.isArray(replacer) && !replacer.includes(key))
41
- return;
42
- if (value !== undefined || keepUndefined)
43
- map.items.push(Pair.createPair(key, value, ctx));
44
- };
45
- if (obj instanceof Map) {
46
- for (const [key, value] of obj)
47
- add(key, value);
48
- }
49
- else if (obj && typeof obj === 'object') {
50
- for (const key of Object.keys(obj))
51
- add(key, obj[key]);
52
- }
53
- if (typeof schema.sortMapEntries === 'function') {
54
- map.items.sort(schema.sortMapEntries);
55
- }
56
- return map;
57
- }
58
- /**
59
- * Adds a value to the collection.
60
- *
61
- * @param overwrite - If not set `true`, using a key that is already in the
62
- * collection will throw. Otherwise, overwrites the previous value.
63
- */
64
- add(pair, overwrite) {
65
- let _pair;
66
- if (identity.isPair(pair))
67
- _pair = pair;
68
- else if (!pair || typeof pair !== 'object' || !('key' in pair)) {
69
- // In TypeScript, this never happens.
70
- _pair = new Pair.Pair(pair, pair?.value);
71
- }
72
- else
73
- _pair = new Pair.Pair(pair.key, pair.value);
74
- const prev = findPair(this.items, _pair.key);
75
- const sortEntries = this.schema?.sortMapEntries;
76
- if (prev) {
77
- if (!overwrite)
78
- throw new Error(`Key ${_pair.key} already set`);
79
- // For scalars, keep the old node & its comments and anchors
80
- if (identity.isScalar(prev.value) && Scalar.isScalarValue(_pair.value))
81
- prev.value.value = _pair.value;
82
- else
83
- prev.value = _pair.value;
84
- }
85
- else if (sortEntries) {
86
- const i = this.items.findIndex(item => sortEntries(_pair, item) < 0);
87
- if (i === -1)
88
- this.items.push(_pair);
89
- else
90
- this.items.splice(i, 0, _pair);
91
- }
92
- else {
93
- this.items.push(_pair);
94
- }
95
- }
96
- delete(key) {
97
- const it = findPair(this.items, key);
98
- if (!it)
99
- return false;
100
- const del = this.items.splice(this.items.indexOf(it), 1);
101
- return del.length > 0;
102
- }
103
- get(key, keepScalar) {
104
- const it = findPair(this.items, key);
105
- const node = it?.value;
106
- return (!keepScalar && identity.isScalar(node) ? node.value : node) ?? undefined;
107
- }
108
- has(key) {
109
- return !!findPair(this.items, key);
110
- }
111
- set(key, value) {
112
- this.add(new Pair.Pair(key, value), true);
113
- }
114
- /**
115
- * @param ctx - Conversion context, originally set in Document#toJS()
116
- * @param {Class} Type - If set, forces the returned collection type
117
- * @returns Instance of Type, Map, or Object
118
- */
119
- toJSON(_, ctx, Type) {
120
- const map = Type ? new Type() : ctx?.mapAsMap ? new Map() : {};
121
- if (ctx?.onCreate)
122
- ctx.onCreate(map);
123
- for (const item of this.items)
124
- addPairToJSMap.addPairToJSMap(ctx, map, item);
125
- return map;
126
- }
127
- toString(ctx, onComment, onChompKeep) {
128
- if (!ctx)
129
- return JSON.stringify(this);
130
- for (const item of this.items) {
131
- if (!identity.isPair(item))
132
- throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);
133
- }
134
- if (!ctx.allNullValues && this.hasAllNullValues(false))
135
- ctx = Object.assign({}, ctx, { allNullValues: true });
136
- return stringifyCollection.stringifyCollection(this, ctx, {
137
- blockItemPrefix: '',
138
- flowChars: { start: '{', end: '}' },
139
- itemIndent: ctx.indent || '',
140
- onChompKeep,
141
- onComment
142
- });
143
- }
144
- }
145
-
146
- exports.YAMLMap = YAMLMap;
147
- exports.findPair = findPair;