phantom-pr 0.2.2 → 0.2.5
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.
- package/bin/phantom-pr.cjs +20 -0
- package/dist/cli.js +7 -0
- package/dist/cli.js.map +1 -1
- package/node_modules/ignore/LICENSE-MIT +21 -0
- package/node_modules/ignore/README.md +452 -0
- package/node_modules/ignore/index.d.ts +81 -0
- package/node_modules/ignore/index.js +784 -0
- package/node_modules/ignore/legacy.js +681 -0
- package/node_modules/ignore/package.json +87 -0
- package/node_modules/yaml/LICENSE +13 -0
- package/node_modules/yaml/README.md +172 -0
- package/node_modules/yaml/bin.mjs +11 -0
- package/node_modules/yaml/browser/dist/compose/compose-collection.js +88 -0
- package/node_modules/yaml/browser/dist/compose/compose-doc.js +43 -0
- package/node_modules/yaml/browser/dist/compose/compose-node.js +102 -0
- package/node_modules/yaml/browser/dist/compose/compose-scalar.js +86 -0
- package/node_modules/yaml/browser/dist/compose/composer.js +217 -0
- package/node_modules/yaml/browser/dist/compose/resolve-block-map.js +115 -0
- package/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +198 -0
- package/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +49 -0
- package/node_modules/yaml/browser/dist/compose/resolve-end.js +37 -0
- package/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +207 -0
- package/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +223 -0
- package/node_modules/yaml/browser/dist/compose/resolve-props.js +146 -0
- package/node_modules/yaml/browser/dist/compose/util-contains-newline.js +34 -0
- package/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +26 -0
- package/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +15 -0
- package/node_modules/yaml/browser/dist/compose/util-map-includes.js +13 -0
- package/node_modules/yaml/browser/dist/doc/Document.js +335 -0
- package/node_modules/yaml/browser/dist/doc/anchors.js +71 -0
- package/node_modules/yaml/browser/dist/doc/applyReviver.js +55 -0
- package/node_modules/yaml/browser/dist/doc/createNode.js +88 -0
- package/node_modules/yaml/browser/dist/doc/directives.js +176 -0
- package/node_modules/yaml/browser/dist/errors.js +57 -0
- package/node_modules/yaml/browser/dist/index.js +17 -0
- package/node_modules/yaml/browser/dist/log.js +11 -0
- package/node_modules/yaml/browser/dist/nodes/Alias.js +114 -0
- package/node_modules/yaml/browser/dist/nodes/Collection.js +147 -0
- package/node_modules/yaml/browser/dist/nodes/Node.js +38 -0
- package/node_modules/yaml/browser/dist/nodes/Pair.js +36 -0
- package/node_modules/yaml/browser/dist/nodes/Scalar.js +24 -0
- package/node_modules/yaml/browser/dist/nodes/YAMLMap.js +144 -0
- package/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +113 -0
- package/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +63 -0
- package/node_modules/yaml/browser/dist/nodes/identity.js +36 -0
- package/node_modules/yaml/browser/dist/nodes/toJS.js +37 -0
- package/node_modules/yaml/browser/dist/parse/cst-scalar.js +214 -0
- package/node_modules/yaml/browser/dist/parse/cst-stringify.js +61 -0
- package/node_modules/yaml/browser/dist/parse/cst-visit.js +97 -0
- package/node_modules/yaml/browser/dist/parse/cst.js +98 -0
- package/node_modules/yaml/browser/dist/parse/lexer.js +717 -0
- package/node_modules/yaml/browser/dist/parse/line-counter.js +39 -0
- package/node_modules/yaml/browser/dist/parse/parser.js +967 -0
- package/node_modules/yaml/browser/dist/public-api.js +102 -0
- package/node_modules/yaml/browser/dist/schema/Schema.js +37 -0
- package/node_modules/yaml/browser/dist/schema/common/map.js +17 -0
- package/node_modules/yaml/browser/dist/schema/common/null.js +15 -0
- package/node_modules/yaml/browser/dist/schema/common/seq.js +17 -0
- package/node_modules/yaml/browser/dist/schema/common/string.js +14 -0
- package/node_modules/yaml/browser/dist/schema/core/bool.js +19 -0
- package/node_modules/yaml/browser/dist/schema/core/float.js +43 -0
- package/node_modules/yaml/browser/dist/schema/core/int.js +38 -0
- package/node_modules/yaml/browser/dist/schema/core/schema.js +23 -0
- package/node_modules/yaml/browser/dist/schema/json/schema.js +62 -0
- package/node_modules/yaml/browser/dist/schema/tags.js +96 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +58 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +26 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +46 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +71 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +64 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +74 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +78 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +39 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +93 -0
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
- package/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +146 -0
- package/node_modules/yaml/browser/dist/stringify/stringify.js +128 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +143 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyComment.js +20 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +85 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +24 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyPair.js +150 -0
- package/node_modules/yaml/browser/dist/stringify/stringifyString.js +336 -0
- package/node_modules/yaml/browser/dist/util.js +11 -0
- package/node_modules/yaml/browser/dist/visit.js +233 -0
- package/node_modules/yaml/browser/index.js +5 -0
- package/node_modules/yaml/browser/package.json +3 -0
- package/node_modules/yaml/dist/cli.d.ts +8 -0
- package/node_modules/yaml/dist/cli.mjs +201 -0
- package/node_modules/yaml/dist/compose/compose-collection.d.ts +11 -0
- package/node_modules/yaml/dist/compose/compose-collection.js +90 -0
- package/node_modules/yaml/dist/compose/compose-doc.d.ts +7 -0
- package/node_modules/yaml/dist/compose/compose-doc.js +45 -0
- package/node_modules/yaml/dist/compose/compose-node.d.ts +29 -0
- package/node_modules/yaml/dist/compose/compose-node.js +105 -0
- package/node_modules/yaml/dist/compose/compose-scalar.d.ts +5 -0
- package/node_modules/yaml/dist/compose/compose-scalar.js +88 -0
- package/node_modules/yaml/dist/compose/composer.d.ts +63 -0
- package/node_modules/yaml/dist/compose/composer.js +222 -0
- package/node_modules/yaml/dist/compose/resolve-block-map.d.ts +6 -0
- package/node_modules/yaml/dist/compose/resolve-block-map.js +117 -0
- package/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +11 -0
- package/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
- package/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +6 -0
- package/node_modules/yaml/dist/compose/resolve-block-seq.js +51 -0
- package/node_modules/yaml/dist/compose/resolve-end.d.ts +6 -0
- package/node_modules/yaml/dist/compose/resolve-end.js +39 -0
- package/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +7 -0
- package/node_modules/yaml/dist/compose/resolve-flow-collection.js +209 -0
- package/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +10 -0
- package/node_modules/yaml/dist/compose/resolve-flow-scalar.js +225 -0
- package/node_modules/yaml/dist/compose/resolve-props.d.ts +23 -0
- package/node_modules/yaml/dist/compose/resolve-props.js +148 -0
- package/node_modules/yaml/dist/compose/util-contains-newline.d.ts +2 -0
- package/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
- package/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +2 -0
- package/node_modules/yaml/dist/compose/util-empty-scalar-position.js +28 -0
- package/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +3 -0
- package/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
- package/node_modules/yaml/dist/compose/util-map-includes.d.ts +4 -0
- package/node_modules/yaml/dist/compose/util-map-includes.js +15 -0
- package/node_modules/yaml/dist/doc/Document.d.ts +141 -0
- package/node_modules/yaml/dist/doc/Document.js +337 -0
- package/node_modules/yaml/dist/doc/anchors.d.ts +24 -0
- package/node_modules/yaml/dist/doc/anchors.js +76 -0
- package/node_modules/yaml/dist/doc/applyReviver.d.ts +9 -0
- package/node_modules/yaml/dist/doc/applyReviver.js +57 -0
- package/node_modules/yaml/dist/doc/createNode.d.ts +17 -0
- package/node_modules/yaml/dist/doc/createNode.js +90 -0
- package/node_modules/yaml/dist/doc/directives.d.ts +49 -0
- package/node_modules/yaml/dist/doc/directives.js +178 -0
- package/node_modules/yaml/dist/errors.d.ts +21 -0
- package/node_modules/yaml/dist/errors.js +62 -0
- package/node_modules/yaml/dist/index.d.ts +25 -0
- package/node_modules/yaml/dist/index.js +50 -0
- package/node_modules/yaml/dist/log.d.ts +3 -0
- package/node_modules/yaml/dist/log.js +19 -0
- package/node_modules/yaml/dist/nodes/Alias.d.ts +29 -0
- package/node_modules/yaml/dist/nodes/Alias.js +116 -0
- package/node_modules/yaml/dist/nodes/Collection.d.ts +73 -0
- package/node_modules/yaml/dist/nodes/Collection.js +151 -0
- package/node_modules/yaml/dist/nodes/Node.d.ts +53 -0
- package/node_modules/yaml/dist/nodes/Node.js +40 -0
- package/node_modules/yaml/dist/nodes/Pair.d.ts +22 -0
- package/node_modules/yaml/dist/nodes/Pair.js +39 -0
- package/node_modules/yaml/dist/nodes/Scalar.d.ts +43 -0
- package/node_modules/yaml/dist/nodes/Scalar.js +27 -0
- package/node_modules/yaml/dist/nodes/YAMLMap.d.ts +53 -0
- package/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
- package/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +60 -0
- package/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
- package/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +4 -0
- package/node_modules/yaml/dist/nodes/addPairToJSMap.js +65 -0
- package/node_modules/yaml/dist/nodes/identity.d.ts +23 -0
- package/node_modules/yaml/dist/nodes/identity.js +53 -0
- package/node_modules/yaml/dist/nodes/toJS.d.ts +29 -0
- package/node_modules/yaml/dist/nodes/toJS.js +39 -0
- package/node_modules/yaml/dist/options.d.ts +344 -0
- package/node_modules/yaml/dist/parse/cst-scalar.d.ts +64 -0
- package/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
- package/node_modules/yaml/dist/parse/cst-stringify.d.ts +8 -0
- package/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
- package/node_modules/yaml/dist/parse/cst-visit.d.ts +39 -0
- package/node_modules/yaml/dist/parse/cst-visit.js +99 -0
- package/node_modules/yaml/dist/parse/cst.d.ts +109 -0
- package/node_modules/yaml/dist/parse/cst.js +112 -0
- package/node_modules/yaml/dist/parse/lexer.d.ts +87 -0
- package/node_modules/yaml/dist/parse/lexer.js +719 -0
- package/node_modules/yaml/dist/parse/line-counter.d.ts +22 -0
- package/node_modules/yaml/dist/parse/line-counter.js +41 -0
- package/node_modules/yaml/dist/parse/parser.d.ts +84 -0
- package/node_modules/yaml/dist/parse/parser.js +972 -0
- package/node_modules/yaml/dist/public-api.d.ts +44 -0
- package/node_modules/yaml/dist/public-api.js +107 -0
- package/node_modules/yaml/dist/schema/Schema.d.ts +17 -0
- package/node_modules/yaml/dist/schema/Schema.js +39 -0
- package/node_modules/yaml/dist/schema/common/map.d.ts +2 -0
- package/node_modules/yaml/dist/schema/common/map.js +19 -0
- package/node_modules/yaml/dist/schema/common/null.d.ts +4 -0
- package/node_modules/yaml/dist/schema/common/null.js +17 -0
- package/node_modules/yaml/dist/schema/common/seq.d.ts +2 -0
- package/node_modules/yaml/dist/schema/common/seq.js +19 -0
- package/node_modules/yaml/dist/schema/common/string.d.ts +2 -0
- package/node_modules/yaml/dist/schema/common/string.js +16 -0
- package/node_modules/yaml/dist/schema/core/bool.d.ts +4 -0
- package/node_modules/yaml/dist/schema/core/bool.js +21 -0
- package/node_modules/yaml/dist/schema/core/float.d.ts +4 -0
- package/node_modules/yaml/dist/schema/core/float.js +47 -0
- package/node_modules/yaml/dist/schema/core/int.d.ts +4 -0
- package/node_modules/yaml/dist/schema/core/int.js +42 -0
- package/node_modules/yaml/dist/schema/core/schema.d.ts +1 -0
- package/node_modules/yaml/dist/schema/core/schema.js +25 -0
- package/node_modules/yaml/dist/schema/json/schema.d.ts +2 -0
- package/node_modules/yaml/dist/schema/json/schema.js +64 -0
- package/node_modules/yaml/dist/schema/json-schema.d.ts +69 -0
- package/node_modules/yaml/dist/schema/tags.d.ts +48 -0
- package/node_modules/yaml/dist/schema/tags.js +99 -0
- package/node_modules/yaml/dist/schema/types.d.ts +92 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +2 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/binary.js +70 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +7 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +4 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +5 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +9 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/merge.js +68 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +22 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +10 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/schema.js +41 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +28 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
- package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
- package/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +34 -0
- package/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
- package/node_modules/yaml/dist/stringify/stringify.d.ts +21 -0
- package/node_modules/yaml/dist/stringify/stringify.js +131 -0
- package/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +17 -0
- package/node_modules/yaml/dist/stringify/stringifyCollection.js +145 -0
- package/node_modules/yaml/dist/stringify/stringifyComment.d.ts +10 -0
- package/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
- package/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +4 -0
- package/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
- package/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +2 -0
- package/node_modules/yaml/dist/stringify/stringifyNumber.js +26 -0
- package/node_modules/yaml/dist/stringify/stringifyPair.d.ts +3 -0
- package/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
- package/node_modules/yaml/dist/stringify/stringifyString.d.ts +9 -0
- package/node_modules/yaml/dist/stringify/stringifyString.js +338 -0
- package/node_modules/yaml/dist/test-events.d.ts +4 -0
- package/node_modules/yaml/dist/test-events.js +134 -0
- package/node_modules/yaml/dist/util.d.ts +16 -0
- package/node_modules/yaml/dist/util.js +28 -0
- package/node_modules/yaml/dist/visit.d.ts +102 -0
- package/node_modules/yaml/dist/visit.js +236 -0
- package/node_modules/yaml/package.json +97 -0
- package/node_modules/yaml/util.js +2 -0
- package/package.json +7 -3
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { Composer } from './compose/composer.js';
|
|
2
|
+
import { Document } from './doc/Document.js';
|
|
3
|
+
import { prettifyError, YAMLParseError } from './errors.js';
|
|
4
|
+
import { warn } from './log.js';
|
|
5
|
+
import { isDocument } from './nodes/identity.js';
|
|
6
|
+
import { LineCounter } from './parse/line-counter.js';
|
|
7
|
+
import { Parser } from './parse/parser.js';
|
|
8
|
+
|
|
9
|
+
function parseOptions(options) {
|
|
10
|
+
const prettyErrors = options.prettyErrors !== false;
|
|
11
|
+
const lineCounter = options.lineCounter || (prettyErrors && new LineCounter()) || null;
|
|
12
|
+
return { lineCounter, prettyErrors };
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Parse the input as a stream of YAML documents.
|
|
16
|
+
*
|
|
17
|
+
* Documents should be separated from each other by `...` or `---` marker lines.
|
|
18
|
+
*
|
|
19
|
+
* @returns If an empty `docs` array is returned, it will be of type
|
|
20
|
+
* EmptyStream and contain additional stream information. In
|
|
21
|
+
* TypeScript, you should use `'empty' in docs` as a type guard for it.
|
|
22
|
+
*/
|
|
23
|
+
function parseAllDocuments(source, options = {}) {
|
|
24
|
+
const { lineCounter, prettyErrors } = parseOptions(options);
|
|
25
|
+
const parser = new Parser(lineCounter?.addNewLine);
|
|
26
|
+
const composer = new Composer(options);
|
|
27
|
+
const docs = Array.from(composer.compose(parser.parse(source)));
|
|
28
|
+
if (prettyErrors && lineCounter)
|
|
29
|
+
for (const doc of docs) {
|
|
30
|
+
doc.errors.forEach(prettifyError(source, lineCounter));
|
|
31
|
+
doc.warnings.forEach(prettifyError(source, lineCounter));
|
|
32
|
+
}
|
|
33
|
+
if (docs.length > 0)
|
|
34
|
+
return docs;
|
|
35
|
+
return Object.assign([], { empty: true }, composer.streamInfo());
|
|
36
|
+
}
|
|
37
|
+
/** Parse an input string into a single YAML.Document */
|
|
38
|
+
function parseDocument(source, options = {}) {
|
|
39
|
+
const { lineCounter, prettyErrors } = parseOptions(options);
|
|
40
|
+
const parser = new Parser(lineCounter?.addNewLine);
|
|
41
|
+
const composer = new Composer(options);
|
|
42
|
+
// `doc` is always set by compose.end(true) at the very latest
|
|
43
|
+
let doc = null;
|
|
44
|
+
for (const _doc of composer.compose(parser.parse(source), true, source.length)) {
|
|
45
|
+
if (!doc)
|
|
46
|
+
doc = _doc;
|
|
47
|
+
else if (doc.options.logLevel !== 'silent') {
|
|
48
|
+
doc.errors.push(new YAMLParseError(_doc.range.slice(0, 2), 'MULTIPLE_DOCS', 'Source contains multiple documents; please use YAML.parseAllDocuments()'));
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (prettyErrors && lineCounter) {
|
|
53
|
+
doc.errors.forEach(prettifyError(source, lineCounter));
|
|
54
|
+
doc.warnings.forEach(prettifyError(source, lineCounter));
|
|
55
|
+
}
|
|
56
|
+
return doc;
|
|
57
|
+
}
|
|
58
|
+
function parse(src, reviver, options) {
|
|
59
|
+
let _reviver = undefined;
|
|
60
|
+
if (typeof reviver === 'function') {
|
|
61
|
+
_reviver = reviver;
|
|
62
|
+
}
|
|
63
|
+
else if (options === undefined && reviver && typeof reviver === 'object') {
|
|
64
|
+
options = reviver;
|
|
65
|
+
}
|
|
66
|
+
const doc = parseDocument(src, options);
|
|
67
|
+
if (!doc)
|
|
68
|
+
return null;
|
|
69
|
+
doc.warnings.forEach(warning => warn(doc.options.logLevel, warning));
|
|
70
|
+
if (doc.errors.length > 0) {
|
|
71
|
+
if (doc.options.logLevel !== 'silent')
|
|
72
|
+
throw doc.errors[0];
|
|
73
|
+
else
|
|
74
|
+
doc.errors = [];
|
|
75
|
+
}
|
|
76
|
+
return doc.toJS(Object.assign({ reviver: _reviver }, options));
|
|
77
|
+
}
|
|
78
|
+
function stringify(value, replacer, options) {
|
|
79
|
+
let _replacer = null;
|
|
80
|
+
if (typeof replacer === 'function' || Array.isArray(replacer)) {
|
|
81
|
+
_replacer = replacer;
|
|
82
|
+
}
|
|
83
|
+
else if (options === undefined && replacer) {
|
|
84
|
+
options = replacer;
|
|
85
|
+
}
|
|
86
|
+
if (typeof options === 'string')
|
|
87
|
+
options = options.length;
|
|
88
|
+
if (typeof options === 'number') {
|
|
89
|
+
const indent = Math.round(options);
|
|
90
|
+
options = indent < 1 ? undefined : indent > 8 ? { indent: 8 } : { indent };
|
|
91
|
+
}
|
|
92
|
+
if (value === undefined) {
|
|
93
|
+
const { keepUndefined } = options ?? replacer ?? {};
|
|
94
|
+
if (!keepUndefined)
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
if (isDocument(value) && !_replacer)
|
|
98
|
+
return value.toString(options);
|
|
99
|
+
return new Document(value, _replacer, options).toString(options);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export { parse, parseAllDocuments, parseDocument, stringify };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { MAP, SCALAR, SEQ } from '../nodes/identity.js';
|
|
2
|
+
import { map } from './common/map.js';
|
|
3
|
+
import { seq } from './common/seq.js';
|
|
4
|
+
import { string } from './common/string.js';
|
|
5
|
+
import { getTags, coreKnownTags } from './tags.js';
|
|
6
|
+
|
|
7
|
+
const sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;
|
|
8
|
+
class Schema {
|
|
9
|
+
constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) {
|
|
10
|
+
this.compat = Array.isArray(compat)
|
|
11
|
+
? getTags(compat, 'compat')
|
|
12
|
+
: compat
|
|
13
|
+
? getTags(null, compat)
|
|
14
|
+
: null;
|
|
15
|
+
this.name = (typeof schema === 'string' && schema) || 'core';
|
|
16
|
+
this.knownTags = resolveKnownTags ? coreKnownTags : {};
|
|
17
|
+
this.tags = getTags(customTags, this.name, merge);
|
|
18
|
+
this.toStringOptions = toStringDefaults ?? null;
|
|
19
|
+
Object.defineProperty(this, MAP, { value: map });
|
|
20
|
+
Object.defineProperty(this, SCALAR, { value: string });
|
|
21
|
+
Object.defineProperty(this, SEQ, { value: seq });
|
|
22
|
+
// Used by createMap()
|
|
23
|
+
this.sortMapEntries =
|
|
24
|
+
typeof sortMapEntries === 'function'
|
|
25
|
+
? sortMapEntries
|
|
26
|
+
: sortMapEntries === true
|
|
27
|
+
? sortMapEntriesByKey
|
|
28
|
+
: null;
|
|
29
|
+
}
|
|
30
|
+
clone() {
|
|
31
|
+
const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this));
|
|
32
|
+
copy.tags = this.tags.slice();
|
|
33
|
+
return copy;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export { Schema };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { isMap } from '../../nodes/identity.js';
|
|
2
|
+
import { YAMLMap } from '../../nodes/YAMLMap.js';
|
|
3
|
+
|
|
4
|
+
const map = {
|
|
5
|
+
collection: 'map',
|
|
6
|
+
default: true,
|
|
7
|
+
nodeClass: YAMLMap,
|
|
8
|
+
tag: 'tag:yaml.org,2002:map',
|
|
9
|
+
resolve(map, onError) {
|
|
10
|
+
if (!isMap(map))
|
|
11
|
+
onError('Expected a mapping for this tag');
|
|
12
|
+
return map;
|
|
13
|
+
},
|
|
14
|
+
createNode: (schema, obj, ctx) => YAMLMap.from(schema, obj, ctx)
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export { map };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Scalar } from '../../nodes/Scalar.js';
|
|
2
|
+
|
|
3
|
+
const nullTag = {
|
|
4
|
+
identify: value => value == null,
|
|
5
|
+
createNode: () => new Scalar(null),
|
|
6
|
+
default: true,
|
|
7
|
+
tag: 'tag:yaml.org,2002:null',
|
|
8
|
+
test: /^(?:~|[Nn]ull|NULL)?$/,
|
|
9
|
+
resolve: () => new Scalar(null),
|
|
10
|
+
stringify: ({ source }, ctx) => typeof source === 'string' && nullTag.test.test(source)
|
|
11
|
+
? source
|
|
12
|
+
: ctx.options.nullStr
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export { nullTag };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { isSeq } from '../../nodes/identity.js';
|
|
2
|
+
import { YAMLSeq } from '../../nodes/YAMLSeq.js';
|
|
3
|
+
|
|
4
|
+
const seq = {
|
|
5
|
+
collection: 'seq',
|
|
6
|
+
default: true,
|
|
7
|
+
nodeClass: YAMLSeq,
|
|
8
|
+
tag: 'tag:yaml.org,2002:seq',
|
|
9
|
+
resolve(seq, onError) {
|
|
10
|
+
if (!isSeq(seq))
|
|
11
|
+
onError('Expected a sequence for this tag');
|
|
12
|
+
return seq;
|
|
13
|
+
},
|
|
14
|
+
createNode: (schema, obj, ctx) => YAMLSeq.from(schema, obj, ctx)
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export { seq };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { stringifyString } from '../../stringify/stringifyString.js';
|
|
2
|
+
|
|
3
|
+
const string = {
|
|
4
|
+
identify: value => typeof value === 'string',
|
|
5
|
+
default: true,
|
|
6
|
+
tag: 'tag:yaml.org,2002:str',
|
|
7
|
+
resolve: str => str,
|
|
8
|
+
stringify(item, ctx, onComment, onChompKeep) {
|
|
9
|
+
ctx = Object.assign({ actualString: true }, ctx);
|
|
10
|
+
return stringifyString(item, ctx, onComment, onChompKeep);
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export { string };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Scalar } from '../../nodes/Scalar.js';
|
|
2
|
+
|
|
3
|
+
const boolTag = {
|
|
4
|
+
identify: value => typeof value === 'boolean',
|
|
5
|
+
default: true,
|
|
6
|
+
tag: 'tag:yaml.org,2002:bool',
|
|
7
|
+
test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,
|
|
8
|
+
resolve: str => new Scalar(str[0] === 't' || str[0] === 'T'),
|
|
9
|
+
stringify({ source, value }, ctx) {
|
|
10
|
+
if (source && boolTag.test.test(source)) {
|
|
11
|
+
const sv = source[0] === 't' || source[0] === 'T';
|
|
12
|
+
if (value === sv)
|
|
13
|
+
return source;
|
|
14
|
+
}
|
|
15
|
+
return value ? ctx.options.trueStr : ctx.options.falseStr;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export { boolTag };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Scalar } from '../../nodes/Scalar.js';
|
|
2
|
+
import { stringifyNumber } from '../../stringify/stringifyNumber.js';
|
|
3
|
+
|
|
4
|
+
const floatNaN = {
|
|
5
|
+
identify: value => typeof value === 'number',
|
|
6
|
+
default: true,
|
|
7
|
+
tag: 'tag:yaml.org,2002:float',
|
|
8
|
+
test: /^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,
|
|
9
|
+
resolve: str => str.slice(-3).toLowerCase() === 'nan'
|
|
10
|
+
? NaN
|
|
11
|
+
: str[0] === '-'
|
|
12
|
+
? Number.NEGATIVE_INFINITY
|
|
13
|
+
: Number.POSITIVE_INFINITY,
|
|
14
|
+
stringify: stringifyNumber
|
|
15
|
+
};
|
|
16
|
+
const floatExp = {
|
|
17
|
+
identify: value => typeof value === 'number',
|
|
18
|
+
default: true,
|
|
19
|
+
tag: 'tag:yaml.org,2002:float',
|
|
20
|
+
format: 'EXP',
|
|
21
|
+
test: /^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,
|
|
22
|
+
resolve: str => parseFloat(str),
|
|
23
|
+
stringify(node) {
|
|
24
|
+
const num = Number(node.value);
|
|
25
|
+
return isFinite(num) ? num.toExponential() : stringifyNumber(node);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const float = {
|
|
29
|
+
identify: value => typeof value === 'number',
|
|
30
|
+
default: true,
|
|
31
|
+
tag: 'tag:yaml.org,2002:float',
|
|
32
|
+
test: /^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,
|
|
33
|
+
resolve(str) {
|
|
34
|
+
const node = new Scalar(parseFloat(str));
|
|
35
|
+
const dot = str.indexOf('.');
|
|
36
|
+
if (dot !== -1 && str[str.length - 1] === '0')
|
|
37
|
+
node.minFractionDigits = str.length - dot - 1;
|
|
38
|
+
return node;
|
|
39
|
+
},
|
|
40
|
+
stringify: stringifyNumber
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export { float, floatExp, floatNaN };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { stringifyNumber } from '../../stringify/stringifyNumber.js';
|
|
2
|
+
|
|
3
|
+
const intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);
|
|
4
|
+
const intResolve = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix));
|
|
5
|
+
function intStringify(node, radix, prefix) {
|
|
6
|
+
const { value } = node;
|
|
7
|
+
if (intIdentify(value) && value >= 0)
|
|
8
|
+
return prefix + value.toString(radix);
|
|
9
|
+
return stringifyNumber(node);
|
|
10
|
+
}
|
|
11
|
+
const intOct = {
|
|
12
|
+
identify: value => intIdentify(value) && value >= 0,
|
|
13
|
+
default: true,
|
|
14
|
+
tag: 'tag:yaml.org,2002:int',
|
|
15
|
+
format: 'OCT',
|
|
16
|
+
test: /^0o[0-7]+$/,
|
|
17
|
+
resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt),
|
|
18
|
+
stringify: node => intStringify(node, 8, '0o')
|
|
19
|
+
};
|
|
20
|
+
const int = {
|
|
21
|
+
identify: intIdentify,
|
|
22
|
+
default: true,
|
|
23
|
+
tag: 'tag:yaml.org,2002:int',
|
|
24
|
+
test: /^[-+]?[0-9]+$/,
|
|
25
|
+
resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),
|
|
26
|
+
stringify: stringifyNumber
|
|
27
|
+
};
|
|
28
|
+
const intHex = {
|
|
29
|
+
identify: value => intIdentify(value) && value >= 0,
|
|
30
|
+
default: true,
|
|
31
|
+
tag: 'tag:yaml.org,2002:int',
|
|
32
|
+
format: 'HEX',
|
|
33
|
+
test: /^0x[0-9a-fA-F]+$/,
|
|
34
|
+
resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),
|
|
35
|
+
stringify: node => intStringify(node, 16, '0x')
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export { int, intHex, intOct };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { map } from '../common/map.js';
|
|
2
|
+
import { nullTag } from '../common/null.js';
|
|
3
|
+
import { seq } from '../common/seq.js';
|
|
4
|
+
import { string } from '../common/string.js';
|
|
5
|
+
import { boolTag } from './bool.js';
|
|
6
|
+
import { floatNaN, floatExp, float } from './float.js';
|
|
7
|
+
import { intOct, int, intHex } from './int.js';
|
|
8
|
+
|
|
9
|
+
const schema = [
|
|
10
|
+
map,
|
|
11
|
+
seq,
|
|
12
|
+
string,
|
|
13
|
+
nullTag,
|
|
14
|
+
boolTag,
|
|
15
|
+
intOct,
|
|
16
|
+
int,
|
|
17
|
+
intHex,
|
|
18
|
+
floatNaN,
|
|
19
|
+
floatExp,
|
|
20
|
+
float
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
export { schema };
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Scalar } from '../../nodes/Scalar.js';
|
|
2
|
+
import { map } from '../common/map.js';
|
|
3
|
+
import { seq } from '../common/seq.js';
|
|
4
|
+
|
|
5
|
+
function intIdentify(value) {
|
|
6
|
+
return typeof value === 'bigint' || Number.isInteger(value);
|
|
7
|
+
}
|
|
8
|
+
const stringifyJSON = ({ value }) => JSON.stringify(value);
|
|
9
|
+
const jsonScalars = [
|
|
10
|
+
{
|
|
11
|
+
identify: value => typeof value === 'string',
|
|
12
|
+
default: true,
|
|
13
|
+
tag: 'tag:yaml.org,2002:str',
|
|
14
|
+
resolve: str => str,
|
|
15
|
+
stringify: stringifyJSON
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
identify: value => value == null,
|
|
19
|
+
createNode: () => new Scalar(null),
|
|
20
|
+
default: true,
|
|
21
|
+
tag: 'tag:yaml.org,2002:null',
|
|
22
|
+
test: /^null$/,
|
|
23
|
+
resolve: () => null,
|
|
24
|
+
stringify: stringifyJSON
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
identify: value => typeof value === 'boolean',
|
|
28
|
+
default: true,
|
|
29
|
+
tag: 'tag:yaml.org,2002:bool',
|
|
30
|
+
test: /^true$|^false$/,
|
|
31
|
+
resolve: str => str === 'true',
|
|
32
|
+
stringify: stringifyJSON
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
identify: intIdentify,
|
|
36
|
+
default: true,
|
|
37
|
+
tag: 'tag:yaml.org,2002:int',
|
|
38
|
+
test: /^-?(?:0|[1-9][0-9]*)$/,
|
|
39
|
+
resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10),
|
|
40
|
+
stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value)
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
identify: value => typeof value === 'number',
|
|
44
|
+
default: true,
|
|
45
|
+
tag: 'tag:yaml.org,2002:float',
|
|
46
|
+
test: /^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,
|
|
47
|
+
resolve: str => parseFloat(str),
|
|
48
|
+
stringify: stringifyJSON
|
|
49
|
+
}
|
|
50
|
+
];
|
|
51
|
+
const jsonError = {
|
|
52
|
+
default: true,
|
|
53
|
+
tag: '',
|
|
54
|
+
test: /^/,
|
|
55
|
+
resolve(str, onError) {
|
|
56
|
+
onError(`Unresolved plain scalar ${JSON.stringify(str)}`);
|
|
57
|
+
return str;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
const schema = [map, seq].concat(jsonScalars, jsonError);
|
|
61
|
+
|
|
62
|
+
export { schema };
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { map } from './common/map.js';
|
|
2
|
+
import { nullTag } from './common/null.js';
|
|
3
|
+
import { seq } from './common/seq.js';
|
|
4
|
+
import { string } from './common/string.js';
|
|
5
|
+
import { boolTag } from './core/bool.js';
|
|
6
|
+
import { floatNaN, floatExp, float } from './core/float.js';
|
|
7
|
+
import { intOct, intHex, int } from './core/int.js';
|
|
8
|
+
import { schema } from './core/schema.js';
|
|
9
|
+
import { schema as schema$1 } from './json/schema.js';
|
|
10
|
+
import { binary } from './yaml-1.1/binary.js';
|
|
11
|
+
import { merge } from './yaml-1.1/merge.js';
|
|
12
|
+
import { omap } from './yaml-1.1/omap.js';
|
|
13
|
+
import { pairs } from './yaml-1.1/pairs.js';
|
|
14
|
+
import { schema as schema$2 } from './yaml-1.1/schema.js';
|
|
15
|
+
import { set } from './yaml-1.1/set.js';
|
|
16
|
+
import { timestamp, intTime, floatTime } from './yaml-1.1/timestamp.js';
|
|
17
|
+
|
|
18
|
+
const schemas = new Map([
|
|
19
|
+
['core', schema],
|
|
20
|
+
['failsafe', [map, seq, string]],
|
|
21
|
+
['json', schema$1],
|
|
22
|
+
['yaml11', schema$2],
|
|
23
|
+
['yaml-1.1', schema$2]
|
|
24
|
+
]);
|
|
25
|
+
const tagsByName = {
|
|
26
|
+
binary,
|
|
27
|
+
bool: boolTag,
|
|
28
|
+
float,
|
|
29
|
+
floatExp,
|
|
30
|
+
floatNaN,
|
|
31
|
+
floatTime,
|
|
32
|
+
int,
|
|
33
|
+
intHex,
|
|
34
|
+
intOct,
|
|
35
|
+
intTime,
|
|
36
|
+
map,
|
|
37
|
+
merge,
|
|
38
|
+
null: nullTag,
|
|
39
|
+
omap,
|
|
40
|
+
pairs,
|
|
41
|
+
seq,
|
|
42
|
+
set,
|
|
43
|
+
timestamp
|
|
44
|
+
};
|
|
45
|
+
const coreKnownTags = {
|
|
46
|
+
'tag:yaml.org,2002:binary': binary,
|
|
47
|
+
'tag:yaml.org,2002:merge': merge,
|
|
48
|
+
'tag:yaml.org,2002:omap': omap,
|
|
49
|
+
'tag:yaml.org,2002:pairs': pairs,
|
|
50
|
+
'tag:yaml.org,2002:set': set,
|
|
51
|
+
'tag:yaml.org,2002:timestamp': timestamp
|
|
52
|
+
};
|
|
53
|
+
function getTags(customTags, schemaName, addMergeTag) {
|
|
54
|
+
const schemaTags = schemas.get(schemaName);
|
|
55
|
+
if (schemaTags && !customTags) {
|
|
56
|
+
return addMergeTag && !schemaTags.includes(merge)
|
|
57
|
+
? schemaTags.concat(merge)
|
|
58
|
+
: schemaTags.slice();
|
|
59
|
+
}
|
|
60
|
+
let tags = schemaTags;
|
|
61
|
+
if (!tags) {
|
|
62
|
+
if (Array.isArray(customTags))
|
|
63
|
+
tags = [];
|
|
64
|
+
else {
|
|
65
|
+
const keys = Array.from(schemas.keys())
|
|
66
|
+
.filter(key => key !== 'yaml11')
|
|
67
|
+
.map(key => JSON.stringify(key))
|
|
68
|
+
.join(', ');
|
|
69
|
+
throw new Error(`Unknown schema "${schemaName}"; use one of ${keys} or define customTags array`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (Array.isArray(customTags)) {
|
|
73
|
+
for (const tag of customTags)
|
|
74
|
+
tags = tags.concat(tag);
|
|
75
|
+
}
|
|
76
|
+
else if (typeof customTags === 'function') {
|
|
77
|
+
tags = customTags(tags.slice());
|
|
78
|
+
}
|
|
79
|
+
if (addMergeTag)
|
|
80
|
+
tags = tags.concat(merge);
|
|
81
|
+
return tags.reduce((tags, tag) => {
|
|
82
|
+
const tagObj = typeof tag === 'string' ? tagsByName[tag] : tag;
|
|
83
|
+
if (!tagObj) {
|
|
84
|
+
const tagName = JSON.stringify(tag);
|
|
85
|
+
const keys = Object.keys(tagsByName)
|
|
86
|
+
.map(key => JSON.stringify(key))
|
|
87
|
+
.join(', ');
|
|
88
|
+
throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`);
|
|
89
|
+
}
|
|
90
|
+
if (!tags.includes(tagObj))
|
|
91
|
+
tags.push(tagObj);
|
|
92
|
+
return tags;
|
|
93
|
+
}, []);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export { coreKnownTags, getTags };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Scalar } from '../../nodes/Scalar.js';
|
|
2
|
+
import { stringifyString } from '../../stringify/stringifyString.js';
|
|
3
|
+
|
|
4
|
+
const binary = {
|
|
5
|
+
identify: value => value instanceof Uint8Array, // Buffer inherits from Uint8Array
|
|
6
|
+
default: false,
|
|
7
|
+
tag: 'tag:yaml.org,2002:binary',
|
|
8
|
+
/**
|
|
9
|
+
* Returns a Buffer in node and an Uint8Array in browsers
|
|
10
|
+
*
|
|
11
|
+
* To use the resulting buffer as an image, you'll want to do something like:
|
|
12
|
+
*
|
|
13
|
+
* const blob = new Blob([buffer], { type: 'image/jpeg' })
|
|
14
|
+
* document.querySelector('#photo').src = URL.createObjectURL(blob)
|
|
15
|
+
*/
|
|
16
|
+
resolve(src, onError) {
|
|
17
|
+
if (typeof atob === 'function') {
|
|
18
|
+
// On IE 11, atob() can't handle newlines
|
|
19
|
+
const str = atob(src.replace(/[\n\r]/g, ''));
|
|
20
|
+
const buffer = new Uint8Array(str.length);
|
|
21
|
+
for (let i = 0; i < str.length; ++i)
|
|
22
|
+
buffer[i] = str.charCodeAt(i);
|
|
23
|
+
return buffer;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
onError('This environment does not support reading binary tags; either Buffer or atob is required');
|
|
27
|
+
return src;
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
stringify({ comment, type, value }, ctx, onComment, onChompKeep) {
|
|
31
|
+
if (!value)
|
|
32
|
+
return '';
|
|
33
|
+
const buf = value; // checked earlier by binary.identify()
|
|
34
|
+
let str;
|
|
35
|
+
if (typeof btoa === 'function') {
|
|
36
|
+
let s = '';
|
|
37
|
+
for (let i = 0; i < buf.length; ++i)
|
|
38
|
+
s += String.fromCharCode(buf[i]);
|
|
39
|
+
str = btoa(s);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');
|
|
43
|
+
}
|
|
44
|
+
type ?? (type = Scalar.BLOCK_LITERAL);
|
|
45
|
+
if (type !== Scalar.QUOTE_DOUBLE) {
|
|
46
|
+
const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth);
|
|
47
|
+
const n = Math.ceil(str.length / lineWidth);
|
|
48
|
+
const lines = new Array(n);
|
|
49
|
+
for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {
|
|
50
|
+
lines[i] = str.substr(o, lineWidth);
|
|
51
|
+
}
|
|
52
|
+
str = lines.join(type === Scalar.BLOCK_LITERAL ? '\n' : ' ');
|
|
53
|
+
}
|
|
54
|
+
return stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export { binary };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Scalar } from '../../nodes/Scalar.js';
|
|
2
|
+
|
|
3
|
+
function boolStringify({ value, source }, ctx) {
|
|
4
|
+
const boolObj = value ? trueTag : falseTag;
|
|
5
|
+
if (source && boolObj.test.test(source))
|
|
6
|
+
return source;
|
|
7
|
+
return value ? ctx.options.trueStr : ctx.options.falseStr;
|
|
8
|
+
}
|
|
9
|
+
const trueTag = {
|
|
10
|
+
identify: value => value === true,
|
|
11
|
+
default: true,
|
|
12
|
+
tag: 'tag:yaml.org,2002:bool',
|
|
13
|
+
test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,
|
|
14
|
+
resolve: () => new Scalar(true),
|
|
15
|
+
stringify: boolStringify
|
|
16
|
+
};
|
|
17
|
+
const falseTag = {
|
|
18
|
+
identify: value => value === false,
|
|
19
|
+
default: true,
|
|
20
|
+
tag: 'tag:yaml.org,2002:bool',
|
|
21
|
+
test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,
|
|
22
|
+
resolve: () => new Scalar(false),
|
|
23
|
+
stringify: boolStringify
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export { falseTag, trueTag };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Scalar } from '../../nodes/Scalar.js';
|
|
2
|
+
import { stringifyNumber } from '../../stringify/stringifyNumber.js';
|
|
3
|
+
|
|
4
|
+
const floatNaN = {
|
|
5
|
+
identify: value => typeof value === 'number',
|
|
6
|
+
default: true,
|
|
7
|
+
tag: 'tag:yaml.org,2002:float',
|
|
8
|
+
test: /^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,
|
|
9
|
+
resolve: (str) => str.slice(-3).toLowerCase() === 'nan'
|
|
10
|
+
? NaN
|
|
11
|
+
: str[0] === '-'
|
|
12
|
+
? Number.NEGATIVE_INFINITY
|
|
13
|
+
: Number.POSITIVE_INFINITY,
|
|
14
|
+
stringify: stringifyNumber
|
|
15
|
+
};
|
|
16
|
+
const floatExp = {
|
|
17
|
+
identify: value => typeof value === 'number',
|
|
18
|
+
default: true,
|
|
19
|
+
tag: 'tag:yaml.org,2002:float',
|
|
20
|
+
format: 'EXP',
|
|
21
|
+
test: /^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,
|
|
22
|
+
resolve: (str) => parseFloat(str.replace(/_/g, '')),
|
|
23
|
+
stringify(node) {
|
|
24
|
+
const num = Number(node.value);
|
|
25
|
+
return isFinite(num) ? num.toExponential() : stringifyNumber(node);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const float = {
|
|
29
|
+
identify: value => typeof value === 'number',
|
|
30
|
+
default: true,
|
|
31
|
+
tag: 'tag:yaml.org,2002:float',
|
|
32
|
+
test: /^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,
|
|
33
|
+
resolve(str) {
|
|
34
|
+
const node = new Scalar(parseFloat(str.replace(/_/g, '')));
|
|
35
|
+
const dot = str.indexOf('.');
|
|
36
|
+
if (dot !== -1) {
|
|
37
|
+
const f = str.substring(dot + 1).replace(/_/g, '');
|
|
38
|
+
if (f[f.length - 1] === '0')
|
|
39
|
+
node.minFractionDigits = f.length;
|
|
40
|
+
}
|
|
41
|
+
return node;
|
|
42
|
+
},
|
|
43
|
+
stringify: stringifyNumber
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export { float, floatExp, floatNaN };
|