phantom-pr 0.2.5 → 0.2.6

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 (242) hide show
  1. package/dist/core/index/indexer.js +3 -1
  2. package/dist/core/index/indexer.js.map +1 -1
  3. package/package.json +3 -7
  4. package/node_modules/ignore/LICENSE-MIT +0 -21
  5. package/node_modules/ignore/README.md +0 -452
  6. package/node_modules/ignore/index.d.ts +0 -81
  7. package/node_modules/ignore/index.js +0 -784
  8. package/node_modules/ignore/legacy.js +0 -681
  9. package/node_modules/ignore/package.json +0 -87
  10. package/node_modules/yaml/LICENSE +0 -13
  11. package/node_modules/yaml/README.md +0 -172
  12. package/node_modules/yaml/bin.mjs +0 -11
  13. package/node_modules/yaml/browser/dist/compose/compose-collection.js +0 -88
  14. package/node_modules/yaml/browser/dist/compose/compose-doc.js +0 -43
  15. package/node_modules/yaml/browser/dist/compose/compose-node.js +0 -102
  16. package/node_modules/yaml/browser/dist/compose/compose-scalar.js +0 -86
  17. package/node_modules/yaml/browser/dist/compose/composer.js +0 -217
  18. package/node_modules/yaml/browser/dist/compose/resolve-block-map.js +0 -115
  19. package/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +0 -198
  20. package/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +0 -49
  21. package/node_modules/yaml/browser/dist/compose/resolve-end.js +0 -37
  22. package/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +0 -207
  23. package/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +0 -223
  24. package/node_modules/yaml/browser/dist/compose/resolve-props.js +0 -146
  25. package/node_modules/yaml/browser/dist/compose/util-contains-newline.js +0 -34
  26. package/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +0 -26
  27. package/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +0 -15
  28. package/node_modules/yaml/browser/dist/compose/util-map-includes.js +0 -13
  29. package/node_modules/yaml/browser/dist/doc/Document.js +0 -335
  30. package/node_modules/yaml/browser/dist/doc/anchors.js +0 -71
  31. package/node_modules/yaml/browser/dist/doc/applyReviver.js +0 -55
  32. package/node_modules/yaml/browser/dist/doc/createNode.js +0 -88
  33. package/node_modules/yaml/browser/dist/doc/directives.js +0 -176
  34. package/node_modules/yaml/browser/dist/errors.js +0 -57
  35. package/node_modules/yaml/browser/dist/index.js +0 -17
  36. package/node_modules/yaml/browser/dist/log.js +0 -11
  37. package/node_modules/yaml/browser/dist/nodes/Alias.js +0 -114
  38. package/node_modules/yaml/browser/dist/nodes/Collection.js +0 -147
  39. package/node_modules/yaml/browser/dist/nodes/Node.js +0 -38
  40. package/node_modules/yaml/browser/dist/nodes/Pair.js +0 -36
  41. package/node_modules/yaml/browser/dist/nodes/Scalar.js +0 -24
  42. package/node_modules/yaml/browser/dist/nodes/YAMLMap.js +0 -144
  43. package/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +0 -113
  44. package/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +0 -63
  45. package/node_modules/yaml/browser/dist/nodes/identity.js +0 -36
  46. package/node_modules/yaml/browser/dist/nodes/toJS.js +0 -37
  47. package/node_modules/yaml/browser/dist/parse/cst-scalar.js +0 -214
  48. package/node_modules/yaml/browser/dist/parse/cst-stringify.js +0 -61
  49. package/node_modules/yaml/browser/dist/parse/cst-visit.js +0 -97
  50. package/node_modules/yaml/browser/dist/parse/cst.js +0 -98
  51. package/node_modules/yaml/browser/dist/parse/lexer.js +0 -717
  52. package/node_modules/yaml/browser/dist/parse/line-counter.js +0 -39
  53. package/node_modules/yaml/browser/dist/parse/parser.js +0 -967
  54. package/node_modules/yaml/browser/dist/public-api.js +0 -102
  55. package/node_modules/yaml/browser/dist/schema/Schema.js +0 -37
  56. package/node_modules/yaml/browser/dist/schema/common/map.js +0 -17
  57. package/node_modules/yaml/browser/dist/schema/common/null.js +0 -15
  58. package/node_modules/yaml/browser/dist/schema/common/seq.js +0 -17
  59. package/node_modules/yaml/browser/dist/schema/common/string.js +0 -14
  60. package/node_modules/yaml/browser/dist/schema/core/bool.js +0 -19
  61. package/node_modules/yaml/browser/dist/schema/core/float.js +0 -43
  62. package/node_modules/yaml/browser/dist/schema/core/int.js +0 -38
  63. package/node_modules/yaml/browser/dist/schema/core/schema.js +0 -23
  64. package/node_modules/yaml/browser/dist/schema/json/schema.js +0 -62
  65. package/node_modules/yaml/browser/dist/schema/tags.js +0 -96
  66. package/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +0 -58
  67. package/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +0 -26
  68. package/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +0 -46
  69. package/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +0 -71
  70. package/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +0 -64
  71. package/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +0 -74
  72. package/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +0 -78
  73. package/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +0 -39
  74. package/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +0 -93
  75. package/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +0 -101
  76. package/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +0 -146
  77. package/node_modules/yaml/browser/dist/stringify/stringify.js +0 -128
  78. package/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +0 -143
  79. package/node_modules/yaml/browser/dist/stringify/stringifyComment.js +0 -20
  80. package/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +0 -85
  81. package/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +0 -24
  82. package/node_modules/yaml/browser/dist/stringify/stringifyPair.js +0 -150
  83. package/node_modules/yaml/browser/dist/stringify/stringifyString.js +0 -336
  84. package/node_modules/yaml/browser/dist/util.js +0 -11
  85. package/node_modules/yaml/browser/dist/visit.js +0 -233
  86. package/node_modules/yaml/browser/index.js +0 -5
  87. package/node_modules/yaml/browser/package.json +0 -3
  88. package/node_modules/yaml/dist/cli.d.ts +0 -8
  89. package/node_modules/yaml/dist/cli.mjs +0 -201
  90. package/node_modules/yaml/dist/compose/compose-collection.d.ts +0 -11
  91. package/node_modules/yaml/dist/compose/compose-collection.js +0 -90
  92. package/node_modules/yaml/dist/compose/compose-doc.d.ts +0 -7
  93. package/node_modules/yaml/dist/compose/compose-doc.js +0 -45
  94. package/node_modules/yaml/dist/compose/compose-node.d.ts +0 -29
  95. package/node_modules/yaml/dist/compose/compose-node.js +0 -105
  96. package/node_modules/yaml/dist/compose/compose-scalar.d.ts +0 -5
  97. package/node_modules/yaml/dist/compose/compose-scalar.js +0 -88
  98. package/node_modules/yaml/dist/compose/composer.d.ts +0 -63
  99. package/node_modules/yaml/dist/compose/composer.js +0 -222
  100. package/node_modules/yaml/dist/compose/resolve-block-map.d.ts +0 -6
  101. package/node_modules/yaml/dist/compose/resolve-block-map.js +0 -117
  102. package/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +0 -11
  103. package/node_modules/yaml/dist/compose/resolve-block-scalar.js +0 -200
  104. package/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +0 -6
  105. package/node_modules/yaml/dist/compose/resolve-block-seq.js +0 -51
  106. package/node_modules/yaml/dist/compose/resolve-end.d.ts +0 -6
  107. package/node_modules/yaml/dist/compose/resolve-end.js +0 -39
  108. package/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +0 -7
  109. package/node_modules/yaml/dist/compose/resolve-flow-collection.js +0 -209
  110. package/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +0 -10
  111. package/node_modules/yaml/dist/compose/resolve-flow-scalar.js +0 -225
  112. package/node_modules/yaml/dist/compose/resolve-props.d.ts +0 -23
  113. package/node_modules/yaml/dist/compose/resolve-props.js +0 -148
  114. package/node_modules/yaml/dist/compose/util-contains-newline.d.ts +0 -2
  115. package/node_modules/yaml/dist/compose/util-contains-newline.js +0 -36
  116. package/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +0 -2
  117. package/node_modules/yaml/dist/compose/util-empty-scalar-position.js +0 -28
  118. package/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +0 -3
  119. package/node_modules/yaml/dist/compose/util-flow-indent-check.js +0 -17
  120. package/node_modules/yaml/dist/compose/util-map-includes.d.ts +0 -4
  121. package/node_modules/yaml/dist/compose/util-map-includes.js +0 -15
  122. package/node_modules/yaml/dist/doc/Document.d.ts +0 -141
  123. package/node_modules/yaml/dist/doc/Document.js +0 -337
  124. package/node_modules/yaml/dist/doc/anchors.d.ts +0 -24
  125. package/node_modules/yaml/dist/doc/anchors.js +0 -76
  126. package/node_modules/yaml/dist/doc/applyReviver.d.ts +0 -9
  127. package/node_modules/yaml/dist/doc/applyReviver.js +0 -57
  128. package/node_modules/yaml/dist/doc/createNode.d.ts +0 -17
  129. package/node_modules/yaml/dist/doc/createNode.js +0 -90
  130. package/node_modules/yaml/dist/doc/directives.d.ts +0 -49
  131. package/node_modules/yaml/dist/doc/directives.js +0 -178
  132. package/node_modules/yaml/dist/errors.d.ts +0 -21
  133. package/node_modules/yaml/dist/errors.js +0 -62
  134. package/node_modules/yaml/dist/index.d.ts +0 -25
  135. package/node_modules/yaml/dist/index.js +0 -50
  136. package/node_modules/yaml/dist/log.d.ts +0 -3
  137. package/node_modules/yaml/dist/log.js +0 -19
  138. package/node_modules/yaml/dist/nodes/Alias.d.ts +0 -29
  139. package/node_modules/yaml/dist/nodes/Alias.js +0 -116
  140. package/node_modules/yaml/dist/nodes/Collection.d.ts +0 -73
  141. package/node_modules/yaml/dist/nodes/Collection.js +0 -151
  142. package/node_modules/yaml/dist/nodes/Node.d.ts +0 -53
  143. package/node_modules/yaml/dist/nodes/Node.js +0 -40
  144. package/node_modules/yaml/dist/nodes/Pair.d.ts +0 -22
  145. package/node_modules/yaml/dist/nodes/Pair.js +0 -39
  146. package/node_modules/yaml/dist/nodes/Scalar.d.ts +0 -43
  147. package/node_modules/yaml/dist/nodes/Scalar.js +0 -27
  148. package/node_modules/yaml/dist/nodes/YAMLMap.d.ts +0 -53
  149. package/node_modules/yaml/dist/nodes/YAMLMap.js +0 -147
  150. package/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +0 -60
  151. package/node_modules/yaml/dist/nodes/YAMLSeq.js +0 -115
  152. package/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +0 -4
  153. package/node_modules/yaml/dist/nodes/addPairToJSMap.js +0 -65
  154. package/node_modules/yaml/dist/nodes/identity.d.ts +0 -23
  155. package/node_modules/yaml/dist/nodes/identity.js +0 -53
  156. package/node_modules/yaml/dist/nodes/toJS.d.ts +0 -29
  157. package/node_modules/yaml/dist/nodes/toJS.js +0 -39
  158. package/node_modules/yaml/dist/options.d.ts +0 -344
  159. package/node_modules/yaml/dist/parse/cst-scalar.d.ts +0 -64
  160. package/node_modules/yaml/dist/parse/cst-scalar.js +0 -218
  161. package/node_modules/yaml/dist/parse/cst-stringify.d.ts +0 -8
  162. package/node_modules/yaml/dist/parse/cst-stringify.js +0 -63
  163. package/node_modules/yaml/dist/parse/cst-visit.d.ts +0 -39
  164. package/node_modules/yaml/dist/parse/cst-visit.js +0 -99
  165. package/node_modules/yaml/dist/parse/cst.d.ts +0 -109
  166. package/node_modules/yaml/dist/parse/cst.js +0 -112
  167. package/node_modules/yaml/dist/parse/lexer.d.ts +0 -87
  168. package/node_modules/yaml/dist/parse/lexer.js +0 -719
  169. package/node_modules/yaml/dist/parse/line-counter.d.ts +0 -22
  170. package/node_modules/yaml/dist/parse/line-counter.js +0 -41
  171. package/node_modules/yaml/dist/parse/parser.d.ts +0 -84
  172. package/node_modules/yaml/dist/parse/parser.js +0 -972
  173. package/node_modules/yaml/dist/public-api.d.ts +0 -44
  174. package/node_modules/yaml/dist/public-api.js +0 -107
  175. package/node_modules/yaml/dist/schema/Schema.d.ts +0 -17
  176. package/node_modules/yaml/dist/schema/Schema.js +0 -39
  177. package/node_modules/yaml/dist/schema/common/map.d.ts +0 -2
  178. package/node_modules/yaml/dist/schema/common/map.js +0 -19
  179. package/node_modules/yaml/dist/schema/common/null.d.ts +0 -4
  180. package/node_modules/yaml/dist/schema/common/null.js +0 -17
  181. package/node_modules/yaml/dist/schema/common/seq.d.ts +0 -2
  182. package/node_modules/yaml/dist/schema/common/seq.js +0 -19
  183. package/node_modules/yaml/dist/schema/common/string.d.ts +0 -2
  184. package/node_modules/yaml/dist/schema/common/string.js +0 -16
  185. package/node_modules/yaml/dist/schema/core/bool.d.ts +0 -4
  186. package/node_modules/yaml/dist/schema/core/bool.js +0 -21
  187. package/node_modules/yaml/dist/schema/core/float.d.ts +0 -4
  188. package/node_modules/yaml/dist/schema/core/float.js +0 -47
  189. package/node_modules/yaml/dist/schema/core/int.d.ts +0 -4
  190. package/node_modules/yaml/dist/schema/core/int.js +0 -42
  191. package/node_modules/yaml/dist/schema/core/schema.d.ts +0 -1
  192. package/node_modules/yaml/dist/schema/core/schema.js +0 -25
  193. package/node_modules/yaml/dist/schema/json/schema.d.ts +0 -2
  194. package/node_modules/yaml/dist/schema/json/schema.js +0 -64
  195. package/node_modules/yaml/dist/schema/json-schema.d.ts +0 -69
  196. package/node_modules/yaml/dist/schema/tags.d.ts +0 -48
  197. package/node_modules/yaml/dist/schema/tags.js +0 -99
  198. package/node_modules/yaml/dist/schema/types.d.ts +0 -92
  199. package/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +0 -2
  200. package/node_modules/yaml/dist/schema/yaml-1.1/binary.js +0 -70
  201. package/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +0 -7
  202. package/node_modules/yaml/dist/schema/yaml-1.1/bool.js +0 -29
  203. package/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +0 -4
  204. package/node_modules/yaml/dist/schema/yaml-1.1/float.js +0 -50
  205. package/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +0 -5
  206. package/node_modules/yaml/dist/schema/yaml-1.1/int.js +0 -76
  207. package/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +0 -9
  208. package/node_modules/yaml/dist/schema/yaml-1.1/merge.js +0 -68
  209. package/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +0 -22
  210. package/node_modules/yaml/dist/schema/yaml-1.1/omap.js +0 -77
  211. package/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +0 -10
  212. package/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +0 -82
  213. package/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +0 -1
  214. package/node_modules/yaml/dist/schema/yaml-1.1/schema.js +0 -41
  215. package/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +0 -28
  216. package/node_modules/yaml/dist/schema/yaml-1.1/set.js +0 -96
  217. package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +0 -6
  218. package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +0 -105
  219. package/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +0 -34
  220. package/node_modules/yaml/dist/stringify/foldFlowLines.js +0 -151
  221. package/node_modules/yaml/dist/stringify/stringify.d.ts +0 -21
  222. package/node_modules/yaml/dist/stringify/stringify.js +0 -131
  223. package/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +0 -17
  224. package/node_modules/yaml/dist/stringify/stringifyCollection.js +0 -145
  225. package/node_modules/yaml/dist/stringify/stringifyComment.d.ts +0 -10
  226. package/node_modules/yaml/dist/stringify/stringifyComment.js +0 -24
  227. package/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +0 -4
  228. package/node_modules/yaml/dist/stringify/stringifyDocument.js +0 -87
  229. package/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +0 -2
  230. package/node_modules/yaml/dist/stringify/stringifyNumber.js +0 -26
  231. package/node_modules/yaml/dist/stringify/stringifyPair.d.ts +0 -3
  232. package/node_modules/yaml/dist/stringify/stringifyPair.js +0 -152
  233. package/node_modules/yaml/dist/stringify/stringifyString.d.ts +0 -9
  234. package/node_modules/yaml/dist/stringify/stringifyString.js +0 -338
  235. package/node_modules/yaml/dist/test-events.d.ts +0 -4
  236. package/node_modules/yaml/dist/test-events.js +0 -134
  237. package/node_modules/yaml/dist/util.d.ts +0 -16
  238. package/node_modules/yaml/dist/util.js +0 -28
  239. package/node_modules/yaml/dist/visit.d.ts +0 -102
  240. package/node_modules/yaml/dist/visit.js +0 -236
  241. package/node_modules/yaml/package.json +0 -97
  242. package/node_modules/yaml/util.js +0 -2
@@ -1,717 +0,0 @@
1
- import { BOM, DOCUMENT, FLOW_END, SCALAR } from './cst.js';
2
-
3
- /*
4
- START -> stream
5
-
6
- stream
7
- directive -> line-end -> stream
8
- indent + line-end -> stream
9
- [else] -> line-start
10
-
11
- line-end
12
- comment -> line-end
13
- newline -> .
14
- input-end -> END
15
-
16
- line-start
17
- doc-start -> doc
18
- doc-end -> stream
19
- [else] -> indent -> block-start
20
-
21
- block-start
22
- seq-item-start -> block-start
23
- explicit-key-start -> block-start
24
- map-value-start -> block-start
25
- [else] -> doc
26
-
27
- doc
28
- line-end -> line-start
29
- spaces -> doc
30
- anchor -> doc
31
- tag -> doc
32
- flow-start -> flow -> doc
33
- flow-end -> error -> doc
34
- seq-item-start -> error -> doc
35
- explicit-key-start -> error -> doc
36
- map-value-start -> doc
37
- alias -> doc
38
- quote-start -> quoted-scalar -> doc
39
- block-scalar-header -> line-end -> block-scalar(min) -> line-start
40
- [else] -> plain-scalar(false, min) -> doc
41
-
42
- flow
43
- line-end -> flow
44
- spaces -> flow
45
- anchor -> flow
46
- tag -> flow
47
- flow-start -> flow -> flow
48
- flow-end -> .
49
- seq-item-start -> error -> flow
50
- explicit-key-start -> flow
51
- map-value-start -> flow
52
- alias -> flow
53
- quote-start -> quoted-scalar -> flow
54
- comma -> flow
55
- [else] -> plain-scalar(true, 0) -> flow
56
-
57
- quoted-scalar
58
- quote-end -> .
59
- [else] -> quoted-scalar
60
-
61
- block-scalar(min)
62
- newline + peek(indent < min) -> .
63
- [else] -> block-scalar(min)
64
-
65
- plain-scalar(is-flow, min)
66
- scalar-end(is-flow) -> .
67
- peek(newline + (indent < min)) -> .
68
- [else] -> plain-scalar(min)
69
- */
70
- function isEmpty(ch) {
71
- switch (ch) {
72
- case undefined:
73
- case ' ':
74
- case '\n':
75
- case '\r':
76
- case '\t':
77
- return true;
78
- default:
79
- return false;
80
- }
81
- }
82
- const hexDigits = new Set('0123456789ABCDEFabcdef');
83
- const tagChars = new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()");
84
- const flowIndicatorChars = new Set(',[]{}');
85
- const invalidAnchorChars = new Set(' ,[]{}\n\r\t');
86
- const isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch);
87
- /**
88
- * Splits an input string into lexical tokens, i.e. smaller strings that are
89
- * easily identifiable by `tokens.tokenType()`.
90
- *
91
- * Lexing starts always in a "stream" context. Incomplete input may be buffered
92
- * until a complete token can be emitted.
93
- *
94
- * In addition to slices of the original input, the following control characters
95
- * may also be emitted:
96
- *
97
- * - `\x02` (Start of Text): A document starts with the next token
98
- * - `\x18` (Cancel): Unexpected end of flow-mode (indicates an error)
99
- * - `\x1f` (Unit Separator): Next token is a scalar value
100
- * - `\u{FEFF}` (Byte order mark): Emitted separately outside documents
101
- */
102
- class Lexer {
103
- constructor() {
104
- /**
105
- * Flag indicating whether the end of the current buffer marks the end of
106
- * all input
107
- */
108
- this.atEnd = false;
109
- /**
110
- * Explicit indent set in block scalar header, as an offset from the current
111
- * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not
112
- * explicitly set.
113
- */
114
- this.blockScalarIndent = -1;
115
- /**
116
- * Block scalars that include a + (keep) chomping indicator in their header
117
- * include trailing empty lines, which are otherwise excluded from the
118
- * scalar's contents.
119
- */
120
- this.blockScalarKeep = false;
121
- /** Current input */
122
- this.buffer = '';
123
- /**
124
- * Flag noting whether the map value indicator : can immediately follow this
125
- * node within a flow context.
126
- */
127
- this.flowKey = false;
128
- /** Count of surrounding flow collection levels. */
129
- this.flowLevel = 0;
130
- /**
131
- * Minimum level of indentation required for next lines to be parsed as a
132
- * part of the current scalar value.
133
- */
134
- this.indentNext = 0;
135
- /** Indentation level of the current line. */
136
- this.indentValue = 0;
137
- /** Position of the next \n character. */
138
- this.lineEndPos = null;
139
- /** Stores the state of the lexer if reaching the end of incpomplete input */
140
- this.next = null;
141
- /** A pointer to `buffer`; the current position of the lexer. */
142
- this.pos = 0;
143
- }
144
- /**
145
- * Generate YAML tokens from the `source` string. If `incomplete`,
146
- * a part of the last line may be left as a buffer for the next call.
147
- *
148
- * @returns A generator of lexical tokens
149
- */
150
- *lex(source, incomplete = false) {
151
- if (source) {
152
- if (typeof source !== 'string')
153
- throw TypeError('source is not a string');
154
- this.buffer = this.buffer ? this.buffer + source : source;
155
- this.lineEndPos = null;
156
- }
157
- this.atEnd = !incomplete;
158
- let next = this.next ?? 'stream';
159
- while (next && (incomplete || this.hasChars(1)))
160
- next = yield* this.parseNext(next);
161
- }
162
- atLineEnd() {
163
- let i = this.pos;
164
- let ch = this.buffer[i];
165
- while (ch === ' ' || ch === '\t')
166
- ch = this.buffer[++i];
167
- if (!ch || ch === '#' || ch === '\n')
168
- return true;
169
- if (ch === '\r')
170
- return this.buffer[i + 1] === '\n';
171
- return false;
172
- }
173
- charAt(n) {
174
- return this.buffer[this.pos + n];
175
- }
176
- continueScalar(offset) {
177
- let ch = this.buffer[offset];
178
- if (this.indentNext > 0) {
179
- let indent = 0;
180
- while (ch === ' ')
181
- ch = this.buffer[++indent + offset];
182
- if (ch === '\r') {
183
- const next = this.buffer[indent + offset + 1];
184
- if (next === '\n' || (!next && !this.atEnd))
185
- return offset + indent + 1;
186
- }
187
- return ch === '\n' || indent >= this.indentNext || (!ch && !this.atEnd)
188
- ? offset + indent
189
- : -1;
190
- }
191
- if (ch === '-' || ch === '.') {
192
- const dt = this.buffer.substr(offset, 3);
193
- if ((dt === '---' || dt === '...') && isEmpty(this.buffer[offset + 3]))
194
- return -1;
195
- }
196
- return offset;
197
- }
198
- getLine() {
199
- let end = this.lineEndPos;
200
- if (typeof end !== 'number' || (end !== -1 && end < this.pos)) {
201
- end = this.buffer.indexOf('\n', this.pos);
202
- this.lineEndPos = end;
203
- }
204
- if (end === -1)
205
- return this.atEnd ? this.buffer.substring(this.pos) : null;
206
- if (this.buffer[end - 1] === '\r')
207
- end -= 1;
208
- return this.buffer.substring(this.pos, end);
209
- }
210
- hasChars(n) {
211
- return this.pos + n <= this.buffer.length;
212
- }
213
- setNext(state) {
214
- this.buffer = this.buffer.substring(this.pos);
215
- this.pos = 0;
216
- this.lineEndPos = null;
217
- this.next = state;
218
- return null;
219
- }
220
- peek(n) {
221
- return this.buffer.substr(this.pos, n);
222
- }
223
- *parseNext(next) {
224
- switch (next) {
225
- case 'stream':
226
- return yield* this.parseStream();
227
- case 'line-start':
228
- return yield* this.parseLineStart();
229
- case 'block-start':
230
- return yield* this.parseBlockStart();
231
- case 'doc':
232
- return yield* this.parseDocument();
233
- case 'flow':
234
- return yield* this.parseFlowCollection();
235
- case 'quoted-scalar':
236
- return yield* this.parseQuotedScalar();
237
- case 'block-scalar':
238
- return yield* this.parseBlockScalar();
239
- case 'plain-scalar':
240
- return yield* this.parsePlainScalar();
241
- }
242
- }
243
- *parseStream() {
244
- let line = this.getLine();
245
- if (line === null)
246
- return this.setNext('stream');
247
- if (line[0] === BOM) {
248
- yield* this.pushCount(1);
249
- line = line.substring(1);
250
- }
251
- if (line[0] === '%') {
252
- let dirEnd = line.length;
253
- let cs = line.indexOf('#');
254
- while (cs !== -1) {
255
- const ch = line[cs - 1];
256
- if (ch === ' ' || ch === '\t') {
257
- dirEnd = cs - 1;
258
- break;
259
- }
260
- else {
261
- cs = line.indexOf('#', cs + 1);
262
- }
263
- }
264
- while (true) {
265
- const ch = line[dirEnd - 1];
266
- if (ch === ' ' || ch === '\t')
267
- dirEnd -= 1;
268
- else
269
- break;
270
- }
271
- const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true));
272
- yield* this.pushCount(line.length - n); // possible comment
273
- this.pushNewline();
274
- return 'stream';
275
- }
276
- if (this.atLineEnd()) {
277
- const sp = yield* this.pushSpaces(true);
278
- yield* this.pushCount(line.length - sp);
279
- yield* this.pushNewline();
280
- return 'stream';
281
- }
282
- yield DOCUMENT;
283
- return yield* this.parseLineStart();
284
- }
285
- *parseLineStart() {
286
- const ch = this.charAt(0);
287
- if (!ch && !this.atEnd)
288
- return this.setNext('line-start');
289
- if (ch === '-' || ch === '.') {
290
- if (!this.atEnd && !this.hasChars(4))
291
- return this.setNext('line-start');
292
- const s = this.peek(3);
293
- if ((s === '---' || s === '...') && isEmpty(this.charAt(3))) {
294
- yield* this.pushCount(3);
295
- this.indentValue = 0;
296
- this.indentNext = 0;
297
- return s === '---' ? 'doc' : 'stream';
298
- }
299
- }
300
- this.indentValue = yield* this.pushSpaces(false);
301
- if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1)))
302
- this.indentNext = this.indentValue;
303
- return yield* this.parseBlockStart();
304
- }
305
- *parseBlockStart() {
306
- const [ch0, ch1] = this.peek(2);
307
- if (!ch1 && !this.atEnd)
308
- return this.setNext('block-start');
309
- if ((ch0 === '-' || ch0 === '?' || ch0 === ':') && isEmpty(ch1)) {
310
- const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));
311
- this.indentNext = this.indentValue + 1;
312
- this.indentValue += n;
313
- return yield* this.parseBlockStart();
314
- }
315
- return 'doc';
316
- }
317
- *parseDocument() {
318
- yield* this.pushSpaces(true);
319
- const line = this.getLine();
320
- if (line === null)
321
- return this.setNext('doc');
322
- let n = yield* this.pushIndicators();
323
- switch (line[n]) {
324
- case '#':
325
- yield* this.pushCount(line.length - n);
326
- // fallthrough
327
- case undefined:
328
- yield* this.pushNewline();
329
- return yield* this.parseLineStart();
330
- case '{':
331
- case '[':
332
- yield* this.pushCount(1);
333
- this.flowKey = false;
334
- this.flowLevel = 1;
335
- return 'flow';
336
- case '}':
337
- case ']':
338
- // this is an error
339
- yield* this.pushCount(1);
340
- return 'doc';
341
- case '*':
342
- yield* this.pushUntil(isNotAnchorChar);
343
- return 'doc';
344
- case '"':
345
- case "'":
346
- return yield* this.parseQuotedScalar();
347
- case '|':
348
- case '>':
349
- n += yield* this.parseBlockScalarHeader();
350
- n += yield* this.pushSpaces(true);
351
- yield* this.pushCount(line.length - n);
352
- yield* this.pushNewline();
353
- return yield* this.parseBlockScalar();
354
- default:
355
- return yield* this.parsePlainScalar();
356
- }
357
- }
358
- *parseFlowCollection() {
359
- let nl, sp;
360
- let indent = -1;
361
- do {
362
- nl = yield* this.pushNewline();
363
- if (nl > 0) {
364
- sp = yield* this.pushSpaces(false);
365
- this.indentValue = indent = sp;
366
- }
367
- else {
368
- sp = 0;
369
- }
370
- sp += yield* this.pushSpaces(true);
371
- } while (nl + sp > 0);
372
- const line = this.getLine();
373
- if (line === null)
374
- return this.setNext('flow');
375
- if ((indent !== -1 && indent < this.indentNext && line[0] !== '#') ||
376
- (indent === 0 &&
377
- (line.startsWith('---') || line.startsWith('...')) &&
378
- isEmpty(line[3]))) {
379
- // Allowing for the terminal ] or } at the same (rather than greater)
380
- // indent level as the initial [ or { is technically invalid, but
381
- // failing here would be surprising to users.
382
- const atFlowEndMarker = indent === this.indentNext - 1 &&
383
- this.flowLevel === 1 &&
384
- (line[0] === ']' || line[0] === '}');
385
- if (!atFlowEndMarker) {
386
- // this is an error
387
- this.flowLevel = 0;
388
- yield FLOW_END;
389
- return yield* this.parseLineStart();
390
- }
391
- }
392
- let n = 0;
393
- while (line[n] === ',') {
394
- n += yield* this.pushCount(1);
395
- n += yield* this.pushSpaces(true);
396
- this.flowKey = false;
397
- }
398
- n += yield* this.pushIndicators();
399
- switch (line[n]) {
400
- case undefined:
401
- return 'flow';
402
- case '#':
403
- yield* this.pushCount(line.length - n);
404
- return 'flow';
405
- case '{':
406
- case '[':
407
- yield* this.pushCount(1);
408
- this.flowKey = false;
409
- this.flowLevel += 1;
410
- return 'flow';
411
- case '}':
412
- case ']':
413
- yield* this.pushCount(1);
414
- this.flowKey = true;
415
- this.flowLevel -= 1;
416
- return this.flowLevel ? 'flow' : 'doc';
417
- case '*':
418
- yield* this.pushUntil(isNotAnchorChar);
419
- return 'flow';
420
- case '"':
421
- case "'":
422
- this.flowKey = true;
423
- return yield* this.parseQuotedScalar();
424
- case ':': {
425
- const next = this.charAt(1);
426
- if (this.flowKey || isEmpty(next) || next === ',') {
427
- this.flowKey = false;
428
- yield* this.pushCount(1);
429
- yield* this.pushSpaces(true);
430
- return 'flow';
431
- }
432
- }
433
- // fallthrough
434
- default:
435
- this.flowKey = false;
436
- return yield* this.parsePlainScalar();
437
- }
438
- }
439
- *parseQuotedScalar() {
440
- const quote = this.charAt(0);
441
- let end = this.buffer.indexOf(quote, this.pos + 1);
442
- if (quote === "'") {
443
- while (end !== -1 && this.buffer[end + 1] === "'")
444
- end = this.buffer.indexOf("'", end + 2);
445
- }
446
- else {
447
- // double-quote
448
- while (end !== -1) {
449
- let n = 0;
450
- while (this.buffer[end - 1 - n] === '\\')
451
- n += 1;
452
- if (n % 2 === 0)
453
- break;
454
- end = this.buffer.indexOf('"', end + 1);
455
- }
456
- }
457
- // Only looking for newlines within the quotes
458
- const qb = this.buffer.substring(0, end);
459
- let nl = qb.indexOf('\n', this.pos);
460
- if (nl !== -1) {
461
- while (nl !== -1) {
462
- const cs = this.continueScalar(nl + 1);
463
- if (cs === -1)
464
- break;
465
- nl = qb.indexOf('\n', cs);
466
- }
467
- if (nl !== -1) {
468
- // this is an error caused by an unexpected unindent
469
- end = nl - (qb[nl - 1] === '\r' ? 2 : 1);
470
- }
471
- }
472
- if (end === -1) {
473
- if (!this.atEnd)
474
- return this.setNext('quoted-scalar');
475
- end = this.buffer.length;
476
- }
477
- yield* this.pushToIndex(end + 1, false);
478
- return this.flowLevel ? 'flow' : 'doc';
479
- }
480
- *parseBlockScalarHeader() {
481
- this.blockScalarIndent = -1;
482
- this.blockScalarKeep = false;
483
- let i = this.pos;
484
- while (true) {
485
- const ch = this.buffer[++i];
486
- if (ch === '+')
487
- this.blockScalarKeep = true;
488
- else if (ch > '0' && ch <= '9')
489
- this.blockScalarIndent = Number(ch) - 1;
490
- else if (ch !== '-')
491
- break;
492
- }
493
- return yield* this.pushUntil(ch => isEmpty(ch) || ch === '#');
494
- }
495
- *parseBlockScalar() {
496
- let nl = this.pos - 1; // may be -1 if this.pos === 0
497
- let indent = 0;
498
- let ch;
499
- loop: for (let i = this.pos; (ch = this.buffer[i]); ++i) {
500
- switch (ch) {
501
- case ' ':
502
- indent += 1;
503
- break;
504
- case '\n':
505
- nl = i;
506
- indent = 0;
507
- break;
508
- case '\r': {
509
- const next = this.buffer[i + 1];
510
- if (!next && !this.atEnd)
511
- return this.setNext('block-scalar');
512
- if (next === '\n')
513
- break;
514
- } // fallthrough
515
- default:
516
- break loop;
517
- }
518
- }
519
- if (!ch && !this.atEnd)
520
- return this.setNext('block-scalar');
521
- if (indent >= this.indentNext) {
522
- if (this.blockScalarIndent === -1)
523
- this.indentNext = indent;
524
- else {
525
- this.indentNext =
526
- this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext);
527
- }
528
- do {
529
- const cs = this.continueScalar(nl + 1);
530
- if (cs === -1)
531
- break;
532
- nl = this.buffer.indexOf('\n', cs);
533
- } while (nl !== -1);
534
- if (nl === -1) {
535
- if (!this.atEnd)
536
- return this.setNext('block-scalar');
537
- nl = this.buffer.length;
538
- }
539
- }
540
- // Trailing insufficiently indented tabs are invalid.
541
- // To catch that during parsing, we include them in the block scalar value.
542
- let i = nl + 1;
543
- ch = this.buffer[i];
544
- while (ch === ' ')
545
- ch = this.buffer[++i];
546
- if (ch === '\t') {
547
- while (ch === '\t' || ch === ' ' || ch === '\r' || ch === '\n')
548
- ch = this.buffer[++i];
549
- nl = i - 1;
550
- }
551
- else if (!this.blockScalarKeep) {
552
- do {
553
- let i = nl - 1;
554
- let ch = this.buffer[i];
555
- if (ch === '\r')
556
- ch = this.buffer[--i];
557
- const lastChar = i; // Drop the line if last char not more indented
558
- while (ch === ' ')
559
- ch = this.buffer[--i];
560
- if (ch === '\n' && i >= this.pos && i + 1 + indent > lastChar)
561
- nl = i;
562
- else
563
- break;
564
- } while (true);
565
- }
566
- yield SCALAR;
567
- yield* this.pushToIndex(nl + 1, true);
568
- return yield* this.parseLineStart();
569
- }
570
- *parsePlainScalar() {
571
- const inFlow = this.flowLevel > 0;
572
- let end = this.pos - 1;
573
- let i = this.pos - 1;
574
- let ch;
575
- while ((ch = this.buffer[++i])) {
576
- if (ch === ':') {
577
- const next = this.buffer[i + 1];
578
- if (isEmpty(next) || (inFlow && flowIndicatorChars.has(next)))
579
- break;
580
- end = i;
581
- }
582
- else if (isEmpty(ch)) {
583
- let next = this.buffer[i + 1];
584
- if (ch === '\r') {
585
- if (next === '\n') {
586
- i += 1;
587
- ch = '\n';
588
- next = this.buffer[i + 1];
589
- }
590
- else
591
- end = i;
592
- }
593
- if (next === '#' || (inFlow && flowIndicatorChars.has(next)))
594
- break;
595
- if (ch === '\n') {
596
- const cs = this.continueScalar(i + 1);
597
- if (cs === -1)
598
- break;
599
- i = Math.max(i, cs - 2); // to advance, but still account for ' #'
600
- }
601
- }
602
- else {
603
- if (inFlow && flowIndicatorChars.has(ch))
604
- break;
605
- end = i;
606
- }
607
- }
608
- if (!ch && !this.atEnd)
609
- return this.setNext('plain-scalar');
610
- yield SCALAR;
611
- yield* this.pushToIndex(end + 1, true);
612
- return inFlow ? 'flow' : 'doc';
613
- }
614
- *pushCount(n) {
615
- if (n > 0) {
616
- yield this.buffer.substr(this.pos, n);
617
- this.pos += n;
618
- return n;
619
- }
620
- return 0;
621
- }
622
- *pushToIndex(i, allowEmpty) {
623
- const s = this.buffer.slice(this.pos, i);
624
- if (s) {
625
- yield s;
626
- this.pos += s.length;
627
- return s.length;
628
- }
629
- else if (allowEmpty)
630
- yield '';
631
- return 0;
632
- }
633
- *pushIndicators() {
634
- switch (this.charAt(0)) {
635
- case '!':
636
- return ((yield* this.pushTag()) +
637
- (yield* this.pushSpaces(true)) +
638
- (yield* this.pushIndicators()));
639
- case '&':
640
- return ((yield* this.pushUntil(isNotAnchorChar)) +
641
- (yield* this.pushSpaces(true)) +
642
- (yield* this.pushIndicators()));
643
- case '-': // this is an error
644
- case '?': // this is an error outside flow collections
645
- case ':': {
646
- const inFlow = this.flowLevel > 0;
647
- const ch1 = this.charAt(1);
648
- if (isEmpty(ch1) || (inFlow && flowIndicatorChars.has(ch1))) {
649
- if (!inFlow)
650
- this.indentNext = this.indentValue + 1;
651
- else if (this.flowKey)
652
- this.flowKey = false;
653
- return ((yield* this.pushCount(1)) +
654
- (yield* this.pushSpaces(true)) +
655
- (yield* this.pushIndicators()));
656
- }
657
- }
658
- }
659
- return 0;
660
- }
661
- *pushTag() {
662
- if (this.charAt(1) === '<') {
663
- let i = this.pos + 2;
664
- let ch = this.buffer[i];
665
- while (!isEmpty(ch) && ch !== '>')
666
- ch = this.buffer[++i];
667
- return yield* this.pushToIndex(ch === '>' ? i + 1 : i, false);
668
- }
669
- else {
670
- let i = this.pos + 1;
671
- let ch = this.buffer[i];
672
- while (ch) {
673
- if (tagChars.has(ch))
674
- ch = this.buffer[++i];
675
- else if (ch === '%' &&
676
- hexDigits.has(this.buffer[i + 1]) &&
677
- hexDigits.has(this.buffer[i + 2])) {
678
- ch = this.buffer[(i += 3)];
679
- }
680
- else
681
- break;
682
- }
683
- return yield* this.pushToIndex(i, false);
684
- }
685
- }
686
- *pushNewline() {
687
- const ch = this.buffer[this.pos];
688
- if (ch === '\n')
689
- return yield* this.pushCount(1);
690
- else if (ch === '\r' && this.charAt(1) === '\n')
691
- return yield* this.pushCount(2);
692
- else
693
- return 0;
694
- }
695
- *pushSpaces(allowTabs) {
696
- let i = this.pos - 1;
697
- let ch;
698
- do {
699
- ch = this.buffer[++i];
700
- } while (ch === ' ' || (allowTabs && ch === '\t'));
701
- const n = i - this.pos;
702
- if (n > 0) {
703
- yield this.buffer.substr(this.pos, n);
704
- this.pos = i;
705
- }
706
- return n;
707
- }
708
- *pushUntil(test) {
709
- let i = this.pos;
710
- let ch = this.buffer[i];
711
- while (!test(ch))
712
- ch = this.buffer[++i];
713
- return yield* this.pushToIndex(i, false);
714
- }
715
- }
716
-
717
- export { Lexer };