@andrew.ng/symbion 0.1.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 (417) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +125 -0
  3. package/apps/daemon/dist/boot/menu.d.ts +11 -0
  4. package/apps/daemon/dist/boot/menu.d.ts.map +1 -0
  5. package/apps/daemon/dist/boot/menu.js +32 -0
  6. package/apps/daemon/dist/boot/menu.js.map +1 -0
  7. package/apps/daemon/dist/fs/folderPick.d.ts +13 -0
  8. package/apps/daemon/dist/fs/folderPick.d.ts.map +1 -0
  9. package/apps/daemon/dist/fs/folderPick.js +4 -0
  10. package/apps/daemon/dist/fs/folderPick.js.map +1 -0
  11. package/apps/daemon/dist/fs/listDir.d.ts +13 -0
  12. package/apps/daemon/dist/fs/listDir.d.ts.map +1 -0
  13. package/apps/daemon/dist/fs/listDir.js +121 -0
  14. package/apps/daemon/dist/fs/listDir.js.map +1 -0
  15. package/apps/daemon/dist/fs/readTargetFiles.d.ts +20 -0
  16. package/apps/daemon/dist/fs/readTargetFiles.d.ts.map +1 -0
  17. package/apps/daemon/dist/fs/readTargetFiles.js +76 -0
  18. package/apps/daemon/dist/fs/readTargetFiles.js.map +1 -0
  19. package/apps/daemon/dist/fs/writeFiles.d.ts +32 -0
  20. package/apps/daemon/dist/fs/writeFiles.d.ts.map +1 -0
  21. package/apps/daemon/dist/fs/writeFiles.js +93 -0
  22. package/apps/daemon/dist/fs/writeFiles.js.map +1 -0
  23. package/apps/daemon/dist/git/status.d.ts +11 -0
  24. package/apps/daemon/dist/git/status.d.ts.map +1 -0
  25. package/apps/daemon/dist/git/status.js +30 -0
  26. package/apps/daemon/dist/git/status.js.map +1 -0
  27. package/apps/daemon/dist/index.d.ts +2 -0
  28. package/apps/daemon/dist/index.d.ts.map +1 -0
  29. package/apps/daemon/dist/index.js +69 -0
  30. package/apps/daemon/dist/index.js.map +1 -0
  31. package/apps/daemon/dist/llm/anthropicProvider.d.ts +26 -0
  32. package/apps/daemon/dist/llm/anthropicProvider.d.ts.map +1 -0
  33. package/apps/daemon/dist/llm/anthropicProvider.js +90 -0
  34. package/apps/daemon/dist/llm/anthropicProvider.js.map +1 -0
  35. package/apps/daemon/dist/llm/geminiProvider.d.ts +25 -0
  36. package/apps/daemon/dist/llm/geminiProvider.d.ts.map +1 -0
  37. package/apps/daemon/dist/llm/geminiProvider.js +89 -0
  38. package/apps/daemon/dist/llm/geminiProvider.js.map +1 -0
  39. package/apps/daemon/dist/llm/installInstructions.d.ts +40 -0
  40. package/apps/daemon/dist/llm/installInstructions.d.ts.map +1 -0
  41. package/apps/daemon/dist/llm/installInstructions.js +80 -0
  42. package/apps/daemon/dist/llm/installInstructions.js.map +1 -0
  43. package/apps/daemon/dist/llm/ollamaProvider.d.ts +55 -0
  44. package/apps/daemon/dist/llm/ollamaProvider.d.ts.map +1 -0
  45. package/apps/daemon/dist/llm/ollamaProvider.js +213 -0
  46. package/apps/daemon/dist/llm/ollamaProvider.js.map +1 -0
  47. package/apps/daemon/dist/llm/openaiProvider.d.ts +25 -0
  48. package/apps/daemon/dist/llm/openaiProvider.d.ts.map +1 -0
  49. package/apps/daemon/dist/llm/openaiProvider.js +90 -0
  50. package/apps/daemon/dist/llm/openaiProvider.js.map +1 -0
  51. package/apps/daemon/dist/llm/providerStatus.d.ts +60 -0
  52. package/apps/daemon/dist/llm/providerStatus.d.ts.map +1 -0
  53. package/apps/daemon/dist/llm/providerStatus.js +88 -0
  54. package/apps/daemon/dist/llm/providerStatus.js.map +1 -0
  55. package/apps/daemon/dist/llm/registry.d.ts +14 -0
  56. package/apps/daemon/dist/llm/registry.d.ts.map +1 -0
  57. package/apps/daemon/dist/llm/registry.js +35 -0
  58. package/apps/daemon/dist/llm/registry.js.map +1 -0
  59. package/apps/daemon/dist/llm/remoteProvider.d.ts +25 -0
  60. package/apps/daemon/dist/llm/remoteProvider.d.ts.map +1 -0
  61. package/apps/daemon/dist/llm/remoteProvider.js +88 -0
  62. package/apps/daemon/dist/llm/remoteProvider.js.map +1 -0
  63. package/apps/daemon/dist/llm/secrets.d.ts +55 -0
  64. package/apps/daemon/dist/llm/secrets.d.ts.map +1 -0
  65. package/apps/daemon/dist/llm/secrets.js +167 -0
  66. package/apps/daemon/dist/llm/secrets.js.map +1 -0
  67. package/apps/daemon/dist/llm/types.d.ts +50 -0
  68. package/apps/daemon/dist/llm/types.d.ts.map +1 -0
  69. package/apps/daemon/dist/llm/types.js +16 -0
  70. package/apps/daemon/dist/llm/types.js.map +1 -0
  71. package/apps/daemon/dist/net/findOpenPort.d.ts +26 -0
  72. package/apps/daemon/dist/net/findOpenPort.d.ts.map +1 -0
  73. package/apps/daemon/dist/net/findOpenPort.js +37 -0
  74. package/apps/daemon/dist/net/findOpenPort.js.map +1 -0
  75. package/apps/daemon/dist/rpc/contract.d.ts +10 -0
  76. package/apps/daemon/dist/rpc/contract.d.ts.map +1 -0
  77. package/apps/daemon/dist/rpc/contract.js +2 -0
  78. package/apps/daemon/dist/rpc/contract.js.map +1 -0
  79. package/apps/daemon/dist/rpc/guard.d.ts +18 -0
  80. package/apps/daemon/dist/rpc/guard.d.ts.map +1 -0
  81. package/apps/daemon/dist/rpc/guard.js +75 -0
  82. package/apps/daemon/dist/rpc/guard.js.map +1 -0
  83. package/apps/daemon/dist/rpc/handlers.d.ts +118 -0
  84. package/apps/daemon/dist/rpc/handlers.d.ts.map +1 -0
  85. package/apps/daemon/dist/rpc/handlers.js +694 -0
  86. package/apps/daemon/dist/rpc/handlers.js.map +1 -0
  87. package/apps/daemon/dist/rpc/pathStyle.d.ts +27 -0
  88. package/apps/daemon/dist/rpc/pathStyle.d.ts.map +1 -0
  89. package/apps/daemon/dist/rpc/pathStyle.js +43 -0
  90. package/apps/daemon/dist/rpc/pathStyle.js.map +1 -0
  91. package/apps/daemon/dist/rpc/rpcError.d.ts +13 -0
  92. package/apps/daemon/dist/rpc/rpcError.d.ts.map +1 -0
  93. package/apps/daemon/dist/rpc/rpcError.js +16 -0
  94. package/apps/daemon/dist/rpc/rpcError.js.map +1 -0
  95. package/apps/daemon/dist/server.d.ts +18 -0
  96. package/apps/daemon/dist/server.d.ts.map +1 -0
  97. package/apps/daemon/dist/server.js +208 -0
  98. package/apps/daemon/dist/server.js.map +1 -0
  99. package/apps/daemon/dist/store/publishLog.d.ts +6 -0
  100. package/apps/daemon/dist/store/publishLog.d.ts.map +1 -0
  101. package/apps/daemon/dist/store/publishLog.js +27 -0
  102. package/apps/daemon/dist/store/publishLog.js.map +1 -0
  103. package/apps/daemon/dist/store/store.d.ts +35 -0
  104. package/apps/daemon/dist/store/store.d.ts.map +1 -0
  105. package/apps/daemon/dist/store/store.js +129 -0
  106. package/apps/daemon/dist/store/store.js.map +1 -0
  107. package/apps/daemon/dist/templates/githubFetch.d.ts +49 -0
  108. package/apps/daemon/dist/templates/githubFetch.d.ts.map +1 -0
  109. package/apps/daemon/dist/templates/githubFetch.js +168 -0
  110. package/apps/daemon/dist/templates/githubFetch.js.map +1 -0
  111. package/apps/web/out/404.html +1 -0
  112. package/apps/web/out/_next/static/IIw50lkv8jQuwHOBZJifS/_buildManifest.js +1 -0
  113. package/apps/web/out/_next/static/IIw50lkv8jQuwHOBZJifS/_ssgManifest.js +1 -0
  114. package/apps/web/out/_next/static/chunks/1dd3208c-6a745fea7bd2124a.js +1 -0
  115. package/apps/web/out/_next/static/chunks/426-deb95a16531d3b4b.js +25 -0
  116. package/apps/web/out/_next/static/chunks/528-6e64508688610bfe.js +2 -0
  117. package/apps/web/out/_next/static/chunks/656-fd1628581ad77b01.js +1 -0
  118. package/apps/web/out/_next/static/chunks/777-d587bc7cc0fc6be8.js +1 -0
  119. package/apps/web/out/_next/static/chunks/990-f2445c68c17fa077.js +1 -0
  120. package/apps/web/out/_next/static/chunks/app/_not-found/page-e0d77774c4eb9aef.js +1 -0
  121. package/apps/web/out/_next/static/chunks/app/layout-e5023aba6634ce53.js +1 -0
  122. package/apps/web/out/_next/static/chunks/app/page-a545c902535ac2e3.js +1 -0
  123. package/apps/web/out/_next/static/chunks/app/settings/page-a68ed4ae2ccb8840.js +1 -0
  124. package/apps/web/out/_next/static/chunks/app/templates/page-e5f0cefb905e5b72.js +1 -0
  125. package/apps/web/out/_next/static/chunks/baeaa4ff-28d2e32e4dd119b9.js +1 -0
  126. package/apps/web/out/_next/static/chunks/eb0351e1-329719bc902eaf71.js +1 -0
  127. package/apps/web/out/_next/static/chunks/framework-3664cab31236a9fa.js +1 -0
  128. package/apps/web/out/_next/static/chunks/main-app-d515c42ecb17b8e8.js +1 -0
  129. package/apps/web/out/_next/static/chunks/main-ff24788874d4ec1b.js +1 -0
  130. package/apps/web/out/_next/static/chunks/pages/_app-10a93ab5b7c32eb3.js +1 -0
  131. package/apps/web/out/_next/static/chunks/pages/_error-2d792b2a41857be4.js +1 -0
  132. package/apps/web/out/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  133. package/apps/web/out/_next/static/chunks/webpack-ae7ee8fe97fdceba.js +1 -0
  134. package/apps/web/out/_next/static/css/0a42edcfc2beb916.css +3 -0
  135. package/apps/web/out/_next/static/css/a275cc2b185e04f8.css +1 -0
  136. package/apps/web/out/_next/static/media/011e180705008d6f-s.woff2 +0 -0
  137. package/apps/web/out/_next/static/media/20535187d867b7b9-s.woff2 +0 -0
  138. package/apps/web/out/_next/static/media/26d4368bf94c0ec4-s.p.woff2 +0 -0
  139. package/apps/web/out/_next/static/media/2801417b65625cf5-s.woff2 +0 -0
  140. package/apps/web/out/_next/static/media/28793f5c5e3d822d-s.woff2 +0 -0
  141. package/apps/web/out/_next/static/media/5356a6a4f2c8c8d8-s.woff2 +0 -0
  142. package/apps/web/out/_next/static/media/58f386aa6b1a2a92-s.woff2 +0 -0
  143. package/apps/web/out/_next/static/media/73cb51aac9c97f90-s.woff2 +0 -0
  144. package/apps/web/out/_next/static/media/7b19b489dc6743ba-s.woff2 +0 -0
  145. package/apps/web/out/_next/static/media/7ba5fb2a8c88521c-s.woff2 +0 -0
  146. package/apps/web/out/_next/static/media/92eeb95d069020cc-s.woff2 +0 -0
  147. package/apps/web/out/_next/static/media/98e207f02528a563-s.p.woff2 +0 -0
  148. package/apps/web/out/_next/static/media/99dcf268bda04fe5-s.woff2 +0 -0
  149. package/apps/web/out/_next/static/media/b3bf17a9041d9433-s.woff2 +0 -0
  150. package/apps/web/out/_next/static/media/c9c3823090ec8b55-s.woff2 +0 -0
  151. package/apps/web/out/_next/static/media/d26bbd13d6b70f89-s.woff2 +0 -0
  152. package/apps/web/out/_next/static/media/d29838c109ef09b4-s.woff2 +0 -0
  153. package/apps/web/out/_next/static/media/d3ebbfd689654d3a-s.p.woff2 +0 -0
  154. package/apps/web/out/_next/static/media/db96af6b531dc71f-s.p.woff2 +0 -0
  155. package/apps/web/out/_next/static/media/e40af3453d7c920a-s.woff2 +0 -0
  156. package/apps/web/out/_next/static/media/ef4d5661765d0e49-s.woff2 +0 -0
  157. package/apps/web/out/index.html +1 -0
  158. package/apps/web/out/index.txt +6 -0
  159. package/apps/web/out/settings.html +1 -0
  160. package/apps/web/out/settings.txt +6 -0
  161. package/apps/web/out/templates.html +1 -0
  162. package/apps/web/out/templates.txt +6 -0
  163. package/bin/symbion.mjs +41 -0
  164. package/node_modules/@symbion/core/dist/adapters/claude.d.ts +3 -0
  165. package/node_modules/@symbion/core/dist/adapters/claude.d.ts.map +1 -0
  166. package/node_modules/@symbion/core/dist/adapters/claude.js +43 -0
  167. package/node_modules/@symbion/core/dist/adapters/claude.js.map +1 -0
  168. package/node_modules/@symbion/core/dist/adapters/codex.d.ts +3 -0
  169. package/node_modules/@symbion/core/dist/adapters/codex.d.ts.map +1 -0
  170. package/node_modules/@symbion/core/dist/adapters/codex.js +58 -0
  171. package/node_modules/@symbion/core/dist/adapters/codex.js.map +1 -0
  172. package/node_modules/@symbion/core/dist/adapters/registry.d.ts +5 -0
  173. package/node_modules/@symbion/core/dist/adapters/registry.d.ts.map +1 -0
  174. package/node_modules/@symbion/core/dist/adapters/registry.js +14 -0
  175. package/node_modules/@symbion/core/dist/adapters/registry.js.map +1 -0
  176. package/node_modules/@symbion/core/dist/adapters/types.d.ts +34 -0
  177. package/node_modules/@symbion/core/dist/adapters/types.d.ts.map +1 -0
  178. package/node_modules/@symbion/core/dist/adapters/types.js +2 -0
  179. package/node_modules/@symbion/core/dist/adapters/types.js.map +1 -0
  180. package/node_modules/@symbion/core/dist/diff/conflict.d.ts +19 -0
  181. package/node_modules/@symbion/core/dist/diff/conflict.d.ts.map +1 -0
  182. package/node_modules/@symbion/core/dist/diff/conflict.js +20 -0
  183. package/node_modules/@symbion/core/dist/diff/conflict.js.map +1 -0
  184. package/node_modules/@symbion/core/dist/diff/diff.d.ts +44 -0
  185. package/node_modules/@symbion/core/dist/diff/diff.d.ts.map +1 -0
  186. package/node_modules/@symbion/core/dist/diff/diff.js +124 -0
  187. package/node_modules/@symbion/core/dist/diff/diff.js.map +1 -0
  188. package/node_modules/@symbion/core/dist/generate/bodyPrompt.d.ts +27 -0
  189. package/node_modules/@symbion/core/dist/generate/bodyPrompt.d.ts.map +1 -0
  190. package/node_modules/@symbion/core/dist/generate/bodyPrompt.js +55 -0
  191. package/node_modules/@symbion/core/dist/generate/bodyPrompt.js.map +1 -0
  192. package/node_modules/@symbion/core/dist/generate/description.d.ts +18 -0
  193. package/node_modules/@symbion/core/dist/generate/description.d.ts.map +1 -0
  194. package/node_modules/@symbion/core/dist/generate/description.js +164 -0
  195. package/node_modules/@symbion/core/dist/generate/description.js.map +1 -0
  196. package/node_modules/@symbion/core/dist/index.d.ts +23 -0
  197. package/node_modules/@symbion/core/dist/index.d.ts.map +1 -0
  198. package/node_modules/@symbion/core/dist/index.js +24 -0
  199. package/node_modules/@symbion/core/dist/index.js.map +1 -0
  200. package/node_modules/@symbion/core/dist/ir/refs.d.ts +11 -0
  201. package/node_modules/@symbion/core/dist/ir/refs.d.ts.map +1 -0
  202. package/node_modules/@symbion/core/dist/ir/refs.js +25 -0
  203. package/node_modules/@symbion/core/dist/ir/refs.js.map +1 -0
  204. package/node_modules/@symbion/core/dist/ir/types.d.ts +107 -0
  205. package/node_modules/@symbion/core/dist/ir/types.d.ts.map +1 -0
  206. package/node_modules/@symbion/core/dist/ir/types.js +19 -0
  207. package/node_modules/@symbion/core/dist/ir/types.js.map +1 -0
  208. package/node_modules/@symbion/core/dist/ir/validate.d.ts +13 -0
  209. package/node_modules/@symbion/core/dist/ir/validate.d.ts.map +1 -0
  210. package/node_modules/@symbion/core/dist/ir/validate.js +114 -0
  211. package/node_modules/@symbion/core/dist/ir/validate.js.map +1 -0
  212. package/node_modules/@symbion/core/dist/parse/scan.d.ts +47 -0
  213. package/node_modules/@symbion/core/dist/parse/scan.d.ts.map +1 -0
  214. package/node_modules/@symbion/core/dist/parse/scan.js +109 -0
  215. package/node_modules/@symbion/core/dist/parse/scan.js.map +1 -0
  216. package/node_modules/@symbion/core/dist/render/frontmatter.d.ts +29 -0
  217. package/node_modules/@symbion/core/dist/render/frontmatter.d.ts.map +1 -0
  218. package/node_modules/@symbion/core/dist/render/frontmatter.js +99 -0
  219. package/node_modules/@symbion/core/dist/render/frontmatter.js.map +1 -0
  220. package/node_modules/@symbion/core/dist/render/marker.d.ts +30 -0
  221. package/node_modules/@symbion/core/dist/render/marker.d.ts.map +1 -0
  222. package/node_modules/@symbion/core/dist/render/marker.js +48 -0
  223. package/node_modules/@symbion/core/dist/render/marker.js.map +1 -0
  224. package/node_modules/@symbion/core/dist/render/render.d.ts +12 -0
  225. package/node_modules/@symbion/core/dist/render/render.d.ts.map +1 -0
  226. package/node_modules/@symbion/core/dist/render/render.js +10 -0
  227. package/node_modules/@symbion/core/dist/render/render.js.map +1 -0
  228. package/node_modules/@symbion/core/dist/runcommand/render.d.ts +13 -0
  229. package/node_modules/@symbion/core/dist/runcommand/render.d.ts.map +1 -0
  230. package/node_modules/@symbion/core/dist/runcommand/render.js +19 -0
  231. package/node_modules/@symbion/core/dist/runcommand/render.js.map +1 -0
  232. package/node_modules/@symbion/core/dist/templates/authorSource.d.ts +55 -0
  233. package/node_modules/@symbion/core/dist/templates/authorSource.d.ts.map +1 -0
  234. package/node_modules/@symbion/core/dist/templates/authorSource.js +24 -0
  235. package/node_modules/@symbion/core/dist/templates/authorSource.js.map +1 -0
  236. package/node_modules/@symbion/core/dist/templates/matchAuthorFolders.d.ts +28 -0
  237. package/node_modules/@symbion/core/dist/templates/matchAuthorFolders.d.ts.map +1 -0
  238. package/node_modules/@symbion/core/dist/templates/matchAuthorFolders.js +54 -0
  239. package/node_modules/@symbion/core/dist/templates/matchAuthorFolders.js.map +1 -0
  240. package/node_modules/@symbion/core/dist/templates/parseTemplate.d.ts +42 -0
  241. package/node_modules/@symbion/core/dist/templates/parseTemplate.d.ts.map +1 -0
  242. package/node_modules/@symbion/core/dist/templates/parseTemplate.js +56 -0
  243. package/node_modules/@symbion/core/dist/templates/parseTemplate.js.map +1 -0
  244. package/node_modules/@symbion/core/dist/templates/templateListItem.d.ts +39 -0
  245. package/node_modules/@symbion/core/dist/templates/templateListItem.d.ts.map +1 -0
  246. package/node_modules/@symbion/core/dist/templates/templateListItem.js +2 -0
  247. package/node_modules/@symbion/core/dist/templates/templateListItem.js.map +1 -0
  248. package/node_modules/@symbion/core/dist/util/sha256.d.ts +9 -0
  249. package/node_modules/@symbion/core/dist/util/sha256.d.ts.map +1 -0
  250. package/node_modules/@symbion/core/dist/util/sha256.js +91 -0
  251. package/node_modules/@symbion/core/dist/util/sha256.js.map +1 -0
  252. package/node_modules/@symbion/core/dist/version/semver.d.ts +18 -0
  253. package/node_modules/@symbion/core/dist/version/semver.d.ts.map +1 -0
  254. package/node_modules/@symbion/core/dist/version/semver.js +53 -0
  255. package/node_modules/@symbion/core/dist/version/semver.js.map +1 -0
  256. package/node_modules/@symbion/core/package.json +14 -0
  257. package/node_modules/@symbion/rpc-types/dist/index.d.ts +444 -0
  258. package/node_modules/@symbion/rpc-types/dist/index.d.ts.map +1 -0
  259. package/node_modules/@symbion/rpc-types/dist/index.js +2 -0
  260. package/node_modules/@symbion/rpc-types/dist/index.js.map +1 -0
  261. package/node_modules/@symbion/rpc-types/package.json +11 -0
  262. package/node_modules/yaml/dist/cli.d.ts +8 -0
  263. package/node_modules/yaml/dist/cli.mjs +201 -0
  264. package/node_modules/yaml/dist/compose/compose-collection.d.ts +11 -0
  265. package/node_modules/yaml/dist/compose/compose-collection.js +90 -0
  266. package/node_modules/yaml/dist/compose/compose-doc.d.ts +7 -0
  267. package/node_modules/yaml/dist/compose/compose-doc.js +45 -0
  268. package/node_modules/yaml/dist/compose/compose-node.d.ts +29 -0
  269. package/node_modules/yaml/dist/compose/compose-node.js +112 -0
  270. package/node_modules/yaml/dist/compose/compose-scalar.d.ts +5 -0
  271. package/node_modules/yaml/dist/compose/compose-scalar.js +88 -0
  272. package/node_modules/yaml/dist/compose/composer.d.ts +63 -0
  273. package/node_modules/yaml/dist/compose/composer.js +224 -0
  274. package/node_modules/yaml/dist/compose/resolve-block-map.d.ts +6 -0
  275. package/node_modules/yaml/dist/compose/resolve-block-map.js +117 -0
  276. package/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +11 -0
  277. package/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
  278. package/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +6 -0
  279. package/node_modules/yaml/dist/compose/resolve-block-seq.js +51 -0
  280. package/node_modules/yaml/dist/compose/resolve-end.d.ts +6 -0
  281. package/node_modules/yaml/dist/compose/resolve-end.js +39 -0
  282. package/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +7 -0
  283. package/node_modules/yaml/dist/compose/resolve-flow-collection.js +209 -0
  284. package/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +10 -0
  285. package/node_modules/yaml/dist/compose/resolve-flow-scalar.js +227 -0
  286. package/node_modules/yaml/dist/compose/resolve-props.d.ts +23 -0
  287. package/node_modules/yaml/dist/compose/resolve-props.js +148 -0
  288. package/node_modules/yaml/dist/compose/util-contains-newline.d.ts +2 -0
  289. package/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
  290. package/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +2 -0
  291. package/node_modules/yaml/dist/compose/util-empty-scalar-position.js +28 -0
  292. package/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +3 -0
  293. package/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
  294. package/node_modules/yaml/dist/compose/util-map-includes.d.ts +4 -0
  295. package/node_modules/yaml/dist/compose/util-map-includes.js +15 -0
  296. package/node_modules/yaml/dist/doc/Document.d.ts +141 -0
  297. package/node_modules/yaml/dist/doc/Document.js +337 -0
  298. package/node_modules/yaml/dist/doc/anchors.d.ts +24 -0
  299. package/node_modules/yaml/dist/doc/anchors.js +76 -0
  300. package/node_modules/yaml/dist/doc/applyReviver.d.ts +9 -0
  301. package/node_modules/yaml/dist/doc/applyReviver.js +57 -0
  302. package/node_modules/yaml/dist/doc/createNode.d.ts +17 -0
  303. package/node_modules/yaml/dist/doc/createNode.js +90 -0
  304. package/node_modules/yaml/dist/doc/directives.d.ts +49 -0
  305. package/node_modules/yaml/dist/doc/directives.js +178 -0
  306. package/node_modules/yaml/dist/errors.d.ts +21 -0
  307. package/node_modules/yaml/dist/errors.js +62 -0
  308. package/node_modules/yaml/dist/index.d.ts +25 -0
  309. package/node_modules/yaml/dist/index.js +50 -0
  310. package/node_modules/yaml/dist/log.d.ts +3 -0
  311. package/node_modules/yaml/dist/log.js +19 -0
  312. package/node_modules/yaml/dist/nodes/Alias.d.ts +29 -0
  313. package/node_modules/yaml/dist/nodes/Alias.js +118 -0
  314. package/node_modules/yaml/dist/nodes/Collection.d.ts +73 -0
  315. package/node_modules/yaml/dist/nodes/Collection.js +151 -0
  316. package/node_modules/yaml/dist/nodes/Node.d.ts +53 -0
  317. package/node_modules/yaml/dist/nodes/Node.js +40 -0
  318. package/node_modules/yaml/dist/nodes/Pair.d.ts +22 -0
  319. package/node_modules/yaml/dist/nodes/Pair.js +39 -0
  320. package/node_modules/yaml/dist/nodes/Scalar.d.ts +47 -0
  321. package/node_modules/yaml/dist/nodes/Scalar.js +27 -0
  322. package/node_modules/yaml/dist/nodes/YAMLMap.d.ts +53 -0
  323. package/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
  324. package/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +60 -0
  325. package/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
  326. package/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +4 -0
  327. package/node_modules/yaml/dist/nodes/addPairToJSMap.js +65 -0
  328. package/node_modules/yaml/dist/nodes/identity.d.ts +23 -0
  329. package/node_modules/yaml/dist/nodes/identity.js +53 -0
  330. package/node_modules/yaml/dist/nodes/toJS.d.ts +29 -0
  331. package/node_modules/yaml/dist/nodes/toJS.js +39 -0
  332. package/node_modules/yaml/dist/options.d.ts +350 -0
  333. package/node_modules/yaml/dist/parse/cst-scalar.d.ts +64 -0
  334. package/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
  335. package/node_modules/yaml/dist/parse/cst-stringify.d.ts +8 -0
  336. package/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
  337. package/node_modules/yaml/dist/parse/cst-visit.d.ts +39 -0
  338. package/node_modules/yaml/dist/parse/cst-visit.js +99 -0
  339. package/node_modules/yaml/dist/parse/cst.d.ts +109 -0
  340. package/node_modules/yaml/dist/parse/cst.js +112 -0
  341. package/node_modules/yaml/dist/parse/lexer.d.ts +87 -0
  342. package/node_modules/yaml/dist/parse/lexer.js +723 -0
  343. package/node_modules/yaml/dist/parse/line-counter.d.ts +22 -0
  344. package/node_modules/yaml/dist/parse/line-counter.js +41 -0
  345. package/node_modules/yaml/dist/parse/parser.d.ts +84 -0
  346. package/node_modules/yaml/dist/parse/parser.js +980 -0
  347. package/node_modules/yaml/dist/public-api.d.ts +44 -0
  348. package/node_modules/yaml/dist/public-api.js +107 -0
  349. package/node_modules/yaml/dist/schema/Schema.d.ts +17 -0
  350. package/node_modules/yaml/dist/schema/Schema.js +39 -0
  351. package/node_modules/yaml/dist/schema/common/map.d.ts +2 -0
  352. package/node_modules/yaml/dist/schema/common/map.js +19 -0
  353. package/node_modules/yaml/dist/schema/common/null.d.ts +4 -0
  354. package/node_modules/yaml/dist/schema/common/null.js +17 -0
  355. package/node_modules/yaml/dist/schema/common/seq.d.ts +2 -0
  356. package/node_modules/yaml/dist/schema/common/seq.js +19 -0
  357. package/node_modules/yaml/dist/schema/common/string.d.ts +2 -0
  358. package/node_modules/yaml/dist/schema/common/string.js +16 -0
  359. package/node_modules/yaml/dist/schema/core/bool.d.ts +4 -0
  360. package/node_modules/yaml/dist/schema/core/bool.js +21 -0
  361. package/node_modules/yaml/dist/schema/core/float.d.ts +4 -0
  362. package/node_modules/yaml/dist/schema/core/float.js +47 -0
  363. package/node_modules/yaml/dist/schema/core/int.d.ts +4 -0
  364. package/node_modules/yaml/dist/schema/core/int.js +42 -0
  365. package/node_modules/yaml/dist/schema/core/schema.d.ts +1 -0
  366. package/node_modules/yaml/dist/schema/core/schema.js +25 -0
  367. package/node_modules/yaml/dist/schema/json/schema.d.ts +2 -0
  368. package/node_modules/yaml/dist/schema/json/schema.js +64 -0
  369. package/node_modules/yaml/dist/schema/json-schema.d.ts +69 -0
  370. package/node_modules/yaml/dist/schema/tags.d.ts +48 -0
  371. package/node_modules/yaml/dist/schema/tags.js +99 -0
  372. package/node_modules/yaml/dist/schema/types.d.ts +92 -0
  373. package/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +2 -0
  374. package/node_modules/yaml/dist/schema/yaml-1.1/binary.js +70 -0
  375. package/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +7 -0
  376. package/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
  377. package/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +4 -0
  378. package/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
  379. package/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +5 -0
  380. package/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
  381. package/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +9 -0
  382. package/node_modules/yaml/dist/schema/yaml-1.1/merge.js +71 -0
  383. package/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +22 -0
  384. package/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
  385. package/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +10 -0
  386. package/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
  387. package/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -0
  388. package/node_modules/yaml/dist/schema/yaml-1.1/schema.js +41 -0
  389. package/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +28 -0
  390. package/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
  391. package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
  392. package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
  393. package/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +34 -0
  394. package/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
  395. package/node_modules/yaml/dist/stringify/stringify.d.ts +21 -0
  396. package/node_modules/yaml/dist/stringify/stringify.js +132 -0
  397. package/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +17 -0
  398. package/node_modules/yaml/dist/stringify/stringifyCollection.js +155 -0
  399. package/node_modules/yaml/dist/stringify/stringifyComment.d.ts +10 -0
  400. package/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
  401. package/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +4 -0
  402. package/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
  403. package/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +2 -0
  404. package/node_modules/yaml/dist/stringify/stringifyNumber.js +27 -0
  405. package/node_modules/yaml/dist/stringify/stringifyPair.d.ts +3 -0
  406. package/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
  407. package/node_modules/yaml/dist/stringify/stringifyString.d.ts +9 -0
  408. package/node_modules/yaml/dist/stringify/stringifyString.js +338 -0
  409. package/node_modules/yaml/dist/test-events.d.ts +4 -0
  410. package/node_modules/yaml/dist/test-events.js +134 -0
  411. package/node_modules/yaml/dist/util.d.ts +16 -0
  412. package/node_modules/yaml/dist/util.js +28 -0
  413. package/node_modules/yaml/dist/visit.d.ts +102 -0
  414. package/node_modules/yaml/dist/visit.js +236 -0
  415. package/node_modules/yaml/package.json +20 -0
  416. package/node_modules/yaml/util.js +2 -0
  417. package/package.json +39 -0
@@ -0,0 +1,980 @@
1
+ 'use strict';
2
+
3
+ var node_process = require('process');
4
+ var cst = require('./cst.js');
5
+ var lexer = require('./lexer.js');
6
+
7
+ function includesToken(list, type) {
8
+ for (let i = 0; i < list.length; ++i)
9
+ if (list[i].type === type)
10
+ return true;
11
+ return false;
12
+ }
13
+ function findNonEmptyIndex(list) {
14
+ for (let i = 0; i < list.length; ++i) {
15
+ switch (list[i].type) {
16
+ case 'space':
17
+ case 'comment':
18
+ case 'newline':
19
+ break;
20
+ default:
21
+ return i;
22
+ }
23
+ }
24
+ return -1;
25
+ }
26
+ function isFlowToken(token) {
27
+ switch (token?.type) {
28
+ case 'alias':
29
+ case 'scalar':
30
+ case 'single-quoted-scalar':
31
+ case 'double-quoted-scalar':
32
+ case 'flow-collection':
33
+ return true;
34
+ default:
35
+ return false;
36
+ }
37
+ }
38
+ function getPrevProps(parent) {
39
+ switch (parent.type) {
40
+ case 'document':
41
+ return parent.start;
42
+ case 'block-map': {
43
+ const it = parent.items[parent.items.length - 1];
44
+ return it.sep ?? it.start;
45
+ }
46
+ case 'block-seq':
47
+ return parent.items[parent.items.length - 1].start;
48
+ /* istanbul ignore next should not happen */
49
+ default:
50
+ return [];
51
+ }
52
+ }
53
+ /** Note: May modify input array */
54
+ function getFirstKeyStartProps(prev) {
55
+ if (prev.length === 0)
56
+ return [];
57
+ let i = prev.length;
58
+ loop: while (--i >= 0) {
59
+ switch (prev[i].type) {
60
+ case 'doc-start':
61
+ case 'explicit-key-ind':
62
+ case 'map-value-ind':
63
+ case 'seq-item-ind':
64
+ case 'newline':
65
+ break loop;
66
+ }
67
+ }
68
+ while (prev[++i]?.type === 'space') {
69
+ /* loop */
70
+ }
71
+ return prev.splice(i, prev.length);
72
+ }
73
+ function arrayPushArray(target, source) {
74
+ // May exhaust call stack with large `source` array
75
+ if (source.length < 1e5)
76
+ Array.prototype.push.apply(target, source);
77
+ else
78
+ for (let i = 0; i < source.length; ++i)
79
+ target.push(source[i]);
80
+ }
81
+ function fixFlowSeqItems(fc) {
82
+ if (fc.start.type === 'flow-seq-start') {
83
+ for (const it of fc.items) {
84
+ if (it.sep &&
85
+ !it.value &&
86
+ !includesToken(it.start, 'explicit-key-ind') &&
87
+ !includesToken(it.sep, 'map-value-ind')) {
88
+ if (it.key)
89
+ it.value = it.key;
90
+ delete it.key;
91
+ if (isFlowToken(it.value)) {
92
+ if (it.value.end)
93
+ arrayPushArray(it.value.end, it.sep);
94
+ else
95
+ it.value.end = it.sep;
96
+ }
97
+ else
98
+ arrayPushArray(it.start, it.sep);
99
+ delete it.sep;
100
+ }
101
+ }
102
+ }
103
+ }
104
+ /**
105
+ * A YAML concrete syntax tree (CST) parser
106
+ *
107
+ * ```ts
108
+ * const src: string = ...
109
+ * for (const token of new Parser().parse(src)) {
110
+ * // token: Token
111
+ * }
112
+ * ```
113
+ *
114
+ * To use the parser with a user-provided lexer:
115
+ *
116
+ * ```ts
117
+ * function* parse(source: string, lexer: Lexer) {
118
+ * const parser = new Parser()
119
+ * for (const lexeme of lexer.lex(source))
120
+ * yield* parser.next(lexeme)
121
+ * yield* parser.end()
122
+ * }
123
+ *
124
+ * const src: string = ...
125
+ * const lexer = new Lexer()
126
+ * for (const token of parse(src, lexer)) {
127
+ * // token: Token
128
+ * }
129
+ * ```
130
+ */
131
+ class Parser {
132
+ /**
133
+ * @param onNewLine - If defined, called separately with the start position of
134
+ * each new line (in `parse()`, including the start of input).
135
+ */
136
+ constructor(onNewLine) {
137
+ /** If true, space and sequence indicators count as indentation */
138
+ this.atNewLine = true;
139
+ /** If true, next token is a scalar value */
140
+ this.atScalar = false;
141
+ /** Current indentation level */
142
+ this.indent = 0;
143
+ /** Current offset since the start of parsing */
144
+ this.offset = 0;
145
+ /** On the same line with a block map key */
146
+ this.onKeyLine = false;
147
+ /** Top indicates the node that's currently being built */
148
+ this.stack = [];
149
+ /** The source of the current token, set in parse() */
150
+ this.source = '';
151
+ /** The type of the current token, set in parse() */
152
+ this.type = '';
153
+ // Must be defined after `next()`
154
+ this.lexer = new lexer.Lexer();
155
+ this.onNewLine = onNewLine;
156
+ }
157
+ /**
158
+ * Parse `source` as a YAML stream.
159
+ * If `incomplete`, a part of the last line may be left as a buffer for the next call.
160
+ *
161
+ * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens.
162
+ *
163
+ * @returns A generator of tokens representing each directive, document, and other structure.
164
+ */
165
+ *parse(source, incomplete = false) {
166
+ if (this.onNewLine && this.offset === 0)
167
+ this.onNewLine(0);
168
+ for (const lexeme of this.lexer.lex(source, incomplete))
169
+ yield* this.next(lexeme);
170
+ if (!incomplete)
171
+ yield* this.end();
172
+ }
173
+ /**
174
+ * Advance the parser by the `source` of one lexical token.
175
+ */
176
+ *next(source) {
177
+ this.source = source;
178
+ if (node_process.env.LOG_TOKENS)
179
+ console.log('|', cst.prettyToken(source));
180
+ if (this.atScalar) {
181
+ this.atScalar = false;
182
+ yield* this.step();
183
+ this.offset += source.length;
184
+ return;
185
+ }
186
+ const type = cst.tokenType(source);
187
+ if (!type) {
188
+ const message = `Not a YAML token: ${source}`;
189
+ yield* this.pop({ type: 'error', offset: this.offset, message, source });
190
+ this.offset += source.length;
191
+ }
192
+ else if (type === 'scalar') {
193
+ this.atNewLine = false;
194
+ this.atScalar = true;
195
+ this.type = 'scalar';
196
+ }
197
+ else {
198
+ this.type = type;
199
+ yield* this.step();
200
+ switch (type) {
201
+ case 'newline':
202
+ this.atNewLine = true;
203
+ this.indent = 0;
204
+ if (this.onNewLine)
205
+ this.onNewLine(this.offset + source.length);
206
+ break;
207
+ case 'space':
208
+ if (this.atNewLine && source[0] === ' ')
209
+ this.indent += source.length;
210
+ break;
211
+ case 'explicit-key-ind':
212
+ case 'map-value-ind':
213
+ case 'seq-item-ind':
214
+ if (this.atNewLine)
215
+ this.indent += source.length;
216
+ break;
217
+ case 'doc-mode':
218
+ case 'flow-error-end':
219
+ return;
220
+ default:
221
+ this.atNewLine = false;
222
+ }
223
+ this.offset += source.length;
224
+ }
225
+ }
226
+ /** Call at end of input to push out any remaining constructions */
227
+ *end() {
228
+ while (this.stack.length > 0)
229
+ yield* this.pop();
230
+ }
231
+ get sourceToken() {
232
+ const st = {
233
+ type: this.type,
234
+ offset: this.offset,
235
+ indent: this.indent,
236
+ source: this.source
237
+ };
238
+ return st;
239
+ }
240
+ *step() {
241
+ const top = this.peek(1);
242
+ if (this.type === 'doc-end' && top?.type !== 'doc-end') {
243
+ while (this.stack.length > 0)
244
+ yield* this.pop();
245
+ this.stack.push({
246
+ type: 'doc-end',
247
+ offset: this.offset,
248
+ source: this.source
249
+ });
250
+ return;
251
+ }
252
+ if (!top)
253
+ return yield* this.stream();
254
+ switch (top.type) {
255
+ case 'document':
256
+ return yield* this.document(top);
257
+ case 'alias':
258
+ case 'scalar':
259
+ case 'single-quoted-scalar':
260
+ case 'double-quoted-scalar':
261
+ return yield* this.scalar(top);
262
+ case 'block-scalar':
263
+ return yield* this.blockScalar(top);
264
+ case 'block-map':
265
+ return yield* this.blockMap(top);
266
+ case 'block-seq':
267
+ return yield* this.blockSequence(top);
268
+ case 'flow-collection':
269
+ return yield* this.flowCollection(top);
270
+ case 'doc-end':
271
+ return yield* this.documentEnd(top);
272
+ }
273
+ /* istanbul ignore next should not happen */
274
+ yield* this.pop();
275
+ }
276
+ peek(n) {
277
+ return this.stack[this.stack.length - n];
278
+ }
279
+ *pop(error) {
280
+ const token = error ?? this.stack.pop();
281
+ /* istanbul ignore if should not happen */
282
+ if (!token) {
283
+ const message = 'Tried to pop an empty stack';
284
+ yield { type: 'error', offset: this.offset, source: '', message };
285
+ }
286
+ else if (this.stack.length === 0) {
287
+ yield token;
288
+ }
289
+ else {
290
+ const top = this.peek(1);
291
+ if (token.type === 'block-scalar') {
292
+ // Block scalars use their parent rather than header indent
293
+ token.indent = 'indent' in top ? top.indent : 0;
294
+ }
295
+ else if (token.type === 'flow-collection' && top.type === 'document') {
296
+ // Ignore all indent for top-level flow collections
297
+ token.indent = 0;
298
+ }
299
+ if (token.type === 'flow-collection')
300
+ fixFlowSeqItems(token);
301
+ switch (top.type) {
302
+ case 'document':
303
+ top.value = token;
304
+ break;
305
+ case 'block-scalar':
306
+ top.props.push(token); // error
307
+ break;
308
+ case 'block-map': {
309
+ const it = top.items[top.items.length - 1];
310
+ if (it.value) {
311
+ top.items.push({ start: [], key: token, sep: [] });
312
+ this.onKeyLine = true;
313
+ return;
314
+ }
315
+ else if (it.sep) {
316
+ it.value = token;
317
+ }
318
+ else {
319
+ Object.assign(it, { key: token, sep: [] });
320
+ this.onKeyLine = !it.explicitKey;
321
+ return;
322
+ }
323
+ break;
324
+ }
325
+ case 'block-seq': {
326
+ const it = top.items[top.items.length - 1];
327
+ if (it.value)
328
+ top.items.push({ start: [], value: token });
329
+ else
330
+ it.value = token;
331
+ break;
332
+ }
333
+ case 'flow-collection': {
334
+ const it = top.items[top.items.length - 1];
335
+ if (!it || it.value)
336
+ top.items.push({ start: [], key: token, sep: [] });
337
+ else if (it.sep)
338
+ it.value = token;
339
+ else
340
+ Object.assign(it, { key: token, sep: [] });
341
+ return;
342
+ }
343
+ /* istanbul ignore next should not happen */
344
+ default:
345
+ yield* this.pop();
346
+ yield* this.pop(token);
347
+ }
348
+ if ((top.type === 'document' ||
349
+ top.type === 'block-map' ||
350
+ top.type === 'block-seq') &&
351
+ (token.type === 'block-map' || token.type === 'block-seq')) {
352
+ const last = token.items[token.items.length - 1];
353
+ if (last &&
354
+ !last.sep &&
355
+ !last.value &&
356
+ last.start.length > 0 &&
357
+ findNonEmptyIndex(last.start) === -1 &&
358
+ (token.indent === 0 ||
359
+ last.start.every(st => st.type !== 'comment' || st.indent < token.indent))) {
360
+ if (top.type === 'document')
361
+ top.end = last.start;
362
+ else
363
+ top.items.push({ start: last.start });
364
+ token.items.splice(-1, 1);
365
+ }
366
+ }
367
+ }
368
+ }
369
+ *stream() {
370
+ switch (this.type) {
371
+ case 'directive-line':
372
+ yield { type: 'directive', offset: this.offset, source: this.source };
373
+ return;
374
+ case 'byte-order-mark':
375
+ case 'space':
376
+ case 'comment':
377
+ case 'newline':
378
+ yield this.sourceToken;
379
+ return;
380
+ case 'doc-mode':
381
+ case 'doc-start': {
382
+ const doc = {
383
+ type: 'document',
384
+ offset: this.offset,
385
+ start: []
386
+ };
387
+ if (this.type === 'doc-start')
388
+ doc.start.push(this.sourceToken);
389
+ this.stack.push(doc);
390
+ return;
391
+ }
392
+ }
393
+ yield {
394
+ type: 'error',
395
+ offset: this.offset,
396
+ message: `Unexpected ${this.type} token in YAML stream`,
397
+ source: this.source
398
+ };
399
+ }
400
+ *document(doc) {
401
+ if (doc.value)
402
+ return yield* this.lineEnd(doc);
403
+ switch (this.type) {
404
+ case 'doc-start': {
405
+ if (findNonEmptyIndex(doc.start) !== -1) {
406
+ yield* this.pop();
407
+ yield* this.step();
408
+ }
409
+ else
410
+ doc.start.push(this.sourceToken);
411
+ return;
412
+ }
413
+ case 'anchor':
414
+ case 'tag':
415
+ case 'space':
416
+ case 'comment':
417
+ case 'newline':
418
+ doc.start.push(this.sourceToken);
419
+ return;
420
+ }
421
+ const bv = this.startBlockValue(doc);
422
+ if (bv)
423
+ this.stack.push(bv);
424
+ else {
425
+ yield {
426
+ type: 'error',
427
+ offset: this.offset,
428
+ message: `Unexpected ${this.type} token in YAML document`,
429
+ source: this.source
430
+ };
431
+ }
432
+ }
433
+ *scalar(scalar) {
434
+ if (this.type === 'map-value-ind') {
435
+ const prev = getPrevProps(this.peek(2));
436
+ const start = getFirstKeyStartProps(prev);
437
+ let sep;
438
+ if (scalar.end) {
439
+ sep = scalar.end;
440
+ sep.push(this.sourceToken);
441
+ delete scalar.end;
442
+ }
443
+ else
444
+ sep = [this.sourceToken];
445
+ const map = {
446
+ type: 'block-map',
447
+ offset: scalar.offset,
448
+ indent: scalar.indent,
449
+ items: [{ start, key: scalar, sep }]
450
+ };
451
+ this.onKeyLine = true;
452
+ this.stack[this.stack.length - 1] = map;
453
+ }
454
+ else
455
+ yield* this.lineEnd(scalar);
456
+ }
457
+ *blockScalar(scalar) {
458
+ switch (this.type) {
459
+ case 'space':
460
+ case 'comment':
461
+ case 'newline':
462
+ scalar.props.push(this.sourceToken);
463
+ return;
464
+ case 'scalar':
465
+ scalar.source = this.source;
466
+ // block-scalar source includes trailing newline
467
+ this.atNewLine = true;
468
+ this.indent = 0;
469
+ if (this.onNewLine) {
470
+ let nl = this.source.indexOf('\n') + 1;
471
+ while (nl !== 0) {
472
+ this.onNewLine(this.offset + nl);
473
+ nl = this.source.indexOf('\n', nl) + 1;
474
+ }
475
+ }
476
+ yield* this.pop();
477
+ break;
478
+ /* istanbul ignore next should not happen */
479
+ default:
480
+ yield* this.pop();
481
+ yield* this.step();
482
+ }
483
+ }
484
+ *blockMap(map) {
485
+ const it = map.items[map.items.length - 1];
486
+ // it.sep is true-ish if pair already has key or : separator
487
+ switch (this.type) {
488
+ case 'newline':
489
+ this.onKeyLine = false;
490
+ if (it.value) {
491
+ const end = 'end' in it.value ? it.value.end : undefined;
492
+ const last = Array.isArray(end) ? end[end.length - 1] : undefined;
493
+ if (last?.type === 'comment')
494
+ end?.push(this.sourceToken);
495
+ else
496
+ map.items.push({ start: [this.sourceToken] });
497
+ }
498
+ else if (it.sep) {
499
+ it.sep.push(this.sourceToken);
500
+ }
501
+ else {
502
+ it.start.push(this.sourceToken);
503
+ }
504
+ return;
505
+ case 'space':
506
+ case 'comment':
507
+ if (it.value) {
508
+ map.items.push({ start: [this.sourceToken] });
509
+ }
510
+ else if (it.sep) {
511
+ it.sep.push(this.sourceToken);
512
+ }
513
+ else {
514
+ if (this.atIndentedComment(it.start, map.indent)) {
515
+ const prev = map.items[map.items.length - 2];
516
+ const end = prev?.value?.end;
517
+ if (Array.isArray(end)) {
518
+ arrayPushArray(end, it.start);
519
+ end.push(this.sourceToken);
520
+ map.items.pop();
521
+ return;
522
+ }
523
+ }
524
+ it.start.push(this.sourceToken);
525
+ }
526
+ return;
527
+ }
528
+ if (this.indent >= map.indent) {
529
+ const atMapIndent = !this.onKeyLine && this.indent === map.indent;
530
+ const atNextItem = atMapIndent &&
531
+ (it.sep || it.explicitKey) &&
532
+ this.type !== 'seq-item-ind';
533
+ // For empty nodes, assign newline-separated not indented empty tokens to following node
534
+ let start = [];
535
+ if (atNextItem && it.sep && !it.value) {
536
+ const nl = [];
537
+ for (let i = 0; i < it.sep.length; ++i) {
538
+ const st = it.sep[i];
539
+ switch (st.type) {
540
+ case 'newline':
541
+ nl.push(i);
542
+ break;
543
+ case 'space':
544
+ break;
545
+ case 'comment':
546
+ if (st.indent > map.indent)
547
+ nl.length = 0;
548
+ break;
549
+ default:
550
+ nl.length = 0;
551
+ }
552
+ }
553
+ if (nl.length >= 2)
554
+ start = it.sep.splice(nl[1]);
555
+ }
556
+ switch (this.type) {
557
+ case 'anchor':
558
+ case 'tag':
559
+ if (atNextItem || it.value) {
560
+ start.push(this.sourceToken);
561
+ map.items.push({ start });
562
+ this.onKeyLine = true;
563
+ }
564
+ else if (it.sep) {
565
+ it.sep.push(this.sourceToken);
566
+ }
567
+ else {
568
+ it.start.push(this.sourceToken);
569
+ }
570
+ return;
571
+ case 'explicit-key-ind':
572
+ if (!it.sep && !it.explicitKey) {
573
+ it.start.push(this.sourceToken);
574
+ it.explicitKey = true;
575
+ }
576
+ else if (atNextItem || it.value) {
577
+ start.push(this.sourceToken);
578
+ map.items.push({ start, explicitKey: true });
579
+ }
580
+ else {
581
+ this.stack.push({
582
+ type: 'block-map',
583
+ offset: this.offset,
584
+ indent: this.indent,
585
+ items: [{ start: [this.sourceToken], explicitKey: true }]
586
+ });
587
+ }
588
+ this.onKeyLine = true;
589
+ return;
590
+ case 'map-value-ind':
591
+ if (it.explicitKey) {
592
+ if (!it.sep) {
593
+ if (includesToken(it.start, 'newline')) {
594
+ Object.assign(it, { key: null, sep: [this.sourceToken] });
595
+ }
596
+ else {
597
+ const start = getFirstKeyStartProps(it.start);
598
+ this.stack.push({
599
+ type: 'block-map',
600
+ offset: this.offset,
601
+ indent: this.indent,
602
+ items: [{ start, key: null, sep: [this.sourceToken] }]
603
+ });
604
+ }
605
+ }
606
+ else if (it.value) {
607
+ map.items.push({ start: [], key: null, sep: [this.sourceToken] });
608
+ }
609
+ else if (includesToken(it.sep, 'map-value-ind')) {
610
+ this.stack.push({
611
+ type: 'block-map',
612
+ offset: this.offset,
613
+ indent: this.indent,
614
+ items: [{ start, key: null, sep: [this.sourceToken] }]
615
+ });
616
+ }
617
+ else if (isFlowToken(it.key) &&
618
+ !includesToken(it.sep, 'newline')) {
619
+ const start = getFirstKeyStartProps(it.start);
620
+ const key = it.key;
621
+ const sep = it.sep;
622
+ sep.push(this.sourceToken);
623
+ // @ts-expect-error type guard is wrong here
624
+ delete it.key;
625
+ // @ts-expect-error type guard is wrong here
626
+ delete it.sep;
627
+ this.stack.push({
628
+ type: 'block-map',
629
+ offset: this.offset,
630
+ indent: this.indent,
631
+ items: [{ start, key, sep }]
632
+ });
633
+ }
634
+ else if (start.length > 0) {
635
+ // Not actually at next item
636
+ it.sep = it.sep.concat(start, this.sourceToken);
637
+ }
638
+ else {
639
+ it.sep.push(this.sourceToken);
640
+ }
641
+ }
642
+ else {
643
+ if (!it.sep) {
644
+ Object.assign(it, { key: null, sep: [this.sourceToken] });
645
+ }
646
+ else if (it.value || atNextItem) {
647
+ map.items.push({ start, key: null, sep: [this.sourceToken] });
648
+ }
649
+ else if (includesToken(it.sep, 'map-value-ind')) {
650
+ this.stack.push({
651
+ type: 'block-map',
652
+ offset: this.offset,
653
+ indent: this.indent,
654
+ items: [{ start: [], key: null, sep: [this.sourceToken] }]
655
+ });
656
+ }
657
+ else {
658
+ it.sep.push(this.sourceToken);
659
+ }
660
+ }
661
+ this.onKeyLine = true;
662
+ return;
663
+ case 'alias':
664
+ case 'scalar':
665
+ case 'single-quoted-scalar':
666
+ case 'double-quoted-scalar': {
667
+ const fs = this.flowScalar(this.type);
668
+ if (atNextItem || it.value) {
669
+ map.items.push({ start, key: fs, sep: [] });
670
+ this.onKeyLine = true;
671
+ }
672
+ else if (it.sep) {
673
+ this.stack.push(fs);
674
+ }
675
+ else {
676
+ Object.assign(it, { key: fs, sep: [] });
677
+ this.onKeyLine = true;
678
+ }
679
+ return;
680
+ }
681
+ default: {
682
+ const bv = this.startBlockValue(map);
683
+ if (bv) {
684
+ if (bv.type === 'block-seq') {
685
+ if (!it.explicitKey &&
686
+ it.sep &&
687
+ !includesToken(it.sep, 'newline')) {
688
+ yield* this.pop({
689
+ type: 'error',
690
+ offset: this.offset,
691
+ message: 'Unexpected block-seq-ind on same line with key',
692
+ source: this.source
693
+ });
694
+ return;
695
+ }
696
+ }
697
+ else if (atMapIndent) {
698
+ map.items.push({ start });
699
+ }
700
+ this.stack.push(bv);
701
+ return;
702
+ }
703
+ }
704
+ }
705
+ }
706
+ yield* this.pop();
707
+ yield* this.step();
708
+ }
709
+ *blockSequence(seq) {
710
+ const it = seq.items[seq.items.length - 1];
711
+ switch (this.type) {
712
+ case 'newline':
713
+ if (it.value) {
714
+ const end = 'end' in it.value ? it.value.end : undefined;
715
+ const last = Array.isArray(end) ? end[end.length - 1] : undefined;
716
+ if (last?.type === 'comment')
717
+ end?.push(this.sourceToken);
718
+ else
719
+ seq.items.push({ start: [this.sourceToken] });
720
+ }
721
+ else
722
+ it.start.push(this.sourceToken);
723
+ return;
724
+ case 'space':
725
+ case 'comment':
726
+ if (it.value)
727
+ seq.items.push({ start: [this.sourceToken] });
728
+ else {
729
+ if (this.atIndentedComment(it.start, seq.indent)) {
730
+ const prev = seq.items[seq.items.length - 2];
731
+ const end = prev?.value?.end;
732
+ if (Array.isArray(end)) {
733
+ arrayPushArray(end, it.start);
734
+ end.push(this.sourceToken);
735
+ seq.items.pop();
736
+ return;
737
+ }
738
+ }
739
+ it.start.push(this.sourceToken);
740
+ }
741
+ return;
742
+ case 'anchor':
743
+ case 'tag':
744
+ if (it.value || this.indent <= seq.indent)
745
+ break;
746
+ it.start.push(this.sourceToken);
747
+ return;
748
+ case 'seq-item-ind':
749
+ if (this.indent !== seq.indent)
750
+ break;
751
+ if (it.value || includesToken(it.start, 'seq-item-ind'))
752
+ seq.items.push({ start: [this.sourceToken] });
753
+ else
754
+ it.start.push(this.sourceToken);
755
+ return;
756
+ }
757
+ if (this.indent > seq.indent) {
758
+ const bv = this.startBlockValue(seq);
759
+ if (bv) {
760
+ this.stack.push(bv);
761
+ return;
762
+ }
763
+ }
764
+ yield* this.pop();
765
+ yield* this.step();
766
+ }
767
+ *flowCollection(fc) {
768
+ const it = fc.items[fc.items.length - 1];
769
+ if (this.type === 'flow-error-end') {
770
+ let top;
771
+ do {
772
+ yield* this.pop();
773
+ top = this.peek(1);
774
+ } while (top?.type === 'flow-collection');
775
+ }
776
+ else if (fc.end.length === 0) {
777
+ switch (this.type) {
778
+ case 'comma':
779
+ case 'explicit-key-ind':
780
+ if (!it || it.sep)
781
+ fc.items.push({ start: [this.sourceToken] });
782
+ else
783
+ it.start.push(this.sourceToken);
784
+ return;
785
+ case 'map-value-ind':
786
+ if (!it || it.value)
787
+ fc.items.push({ start: [], key: null, sep: [this.sourceToken] });
788
+ else if (it.sep)
789
+ it.sep.push(this.sourceToken);
790
+ else
791
+ Object.assign(it, { key: null, sep: [this.sourceToken] });
792
+ return;
793
+ case 'space':
794
+ case 'comment':
795
+ case 'newline':
796
+ case 'anchor':
797
+ case 'tag':
798
+ if (!it || it.value)
799
+ fc.items.push({ start: [this.sourceToken] });
800
+ else if (it.sep)
801
+ it.sep.push(this.sourceToken);
802
+ else
803
+ it.start.push(this.sourceToken);
804
+ return;
805
+ case 'alias':
806
+ case 'scalar':
807
+ case 'single-quoted-scalar':
808
+ case 'double-quoted-scalar': {
809
+ const fs = this.flowScalar(this.type);
810
+ if (!it || it.value)
811
+ fc.items.push({ start: [], key: fs, sep: [] });
812
+ else if (it.sep)
813
+ this.stack.push(fs);
814
+ else
815
+ Object.assign(it, { key: fs, sep: [] });
816
+ return;
817
+ }
818
+ case 'flow-map-end':
819
+ case 'flow-seq-end':
820
+ fc.end.push(this.sourceToken);
821
+ return;
822
+ }
823
+ const bv = this.startBlockValue(fc);
824
+ /* istanbul ignore else should not happen */
825
+ if (bv)
826
+ this.stack.push(bv);
827
+ else {
828
+ yield* this.pop();
829
+ yield* this.step();
830
+ }
831
+ }
832
+ else {
833
+ const parent = this.peek(2);
834
+ if (parent.type === 'block-map' &&
835
+ ((this.type === 'map-value-ind' && parent.indent === fc.indent) ||
836
+ (this.type === 'newline' &&
837
+ !parent.items[parent.items.length - 1].sep))) {
838
+ yield* this.pop();
839
+ yield* this.step();
840
+ }
841
+ else if (this.type === 'map-value-ind' &&
842
+ parent.type !== 'flow-collection') {
843
+ const prev = getPrevProps(parent);
844
+ const start = getFirstKeyStartProps(prev);
845
+ fixFlowSeqItems(fc);
846
+ const sep = fc.end.splice(1, fc.end.length);
847
+ sep.push(this.sourceToken);
848
+ const map = {
849
+ type: 'block-map',
850
+ offset: fc.offset,
851
+ indent: fc.indent,
852
+ items: [{ start, key: fc, sep }]
853
+ };
854
+ this.onKeyLine = true;
855
+ this.stack[this.stack.length - 1] = map;
856
+ }
857
+ else {
858
+ yield* this.lineEnd(fc);
859
+ }
860
+ }
861
+ }
862
+ flowScalar(type) {
863
+ if (this.onNewLine) {
864
+ let nl = this.source.indexOf('\n') + 1;
865
+ while (nl !== 0) {
866
+ this.onNewLine(this.offset + nl);
867
+ nl = this.source.indexOf('\n', nl) + 1;
868
+ }
869
+ }
870
+ return {
871
+ type,
872
+ offset: this.offset,
873
+ indent: this.indent,
874
+ source: this.source
875
+ };
876
+ }
877
+ startBlockValue(parent) {
878
+ switch (this.type) {
879
+ case 'alias':
880
+ case 'scalar':
881
+ case 'single-quoted-scalar':
882
+ case 'double-quoted-scalar':
883
+ return this.flowScalar(this.type);
884
+ case 'block-scalar-header':
885
+ return {
886
+ type: 'block-scalar',
887
+ offset: this.offset,
888
+ indent: this.indent,
889
+ props: [this.sourceToken],
890
+ source: ''
891
+ };
892
+ case 'flow-map-start':
893
+ case 'flow-seq-start':
894
+ return {
895
+ type: 'flow-collection',
896
+ offset: this.offset,
897
+ indent: this.indent,
898
+ start: this.sourceToken,
899
+ items: [],
900
+ end: []
901
+ };
902
+ case 'seq-item-ind':
903
+ return {
904
+ type: 'block-seq',
905
+ offset: this.offset,
906
+ indent: this.indent,
907
+ items: [{ start: [this.sourceToken] }]
908
+ };
909
+ case 'explicit-key-ind': {
910
+ this.onKeyLine = true;
911
+ const prev = getPrevProps(parent);
912
+ const start = getFirstKeyStartProps(prev);
913
+ start.push(this.sourceToken);
914
+ return {
915
+ type: 'block-map',
916
+ offset: this.offset,
917
+ indent: this.indent,
918
+ items: [{ start, explicitKey: true }]
919
+ };
920
+ }
921
+ case 'map-value-ind': {
922
+ this.onKeyLine = true;
923
+ const prev = getPrevProps(parent);
924
+ const start = getFirstKeyStartProps(prev);
925
+ return {
926
+ type: 'block-map',
927
+ offset: this.offset,
928
+ indent: this.indent,
929
+ items: [{ start, key: null, sep: [this.sourceToken] }]
930
+ };
931
+ }
932
+ }
933
+ return null;
934
+ }
935
+ atIndentedComment(start, indent) {
936
+ if (this.type !== 'comment')
937
+ return false;
938
+ if (this.indent <= indent)
939
+ return false;
940
+ return start.every(st => st.type === 'newline' || st.type === 'space');
941
+ }
942
+ *documentEnd(docEnd) {
943
+ if (this.type !== 'doc-mode') {
944
+ if (docEnd.end)
945
+ docEnd.end.push(this.sourceToken);
946
+ else
947
+ docEnd.end = [this.sourceToken];
948
+ if (this.type === 'newline')
949
+ yield* this.pop();
950
+ }
951
+ }
952
+ *lineEnd(token) {
953
+ switch (this.type) {
954
+ case 'comma':
955
+ case 'doc-start':
956
+ case 'doc-end':
957
+ case 'flow-seq-end':
958
+ case 'flow-map-end':
959
+ case 'map-value-ind':
960
+ yield* this.pop();
961
+ yield* this.step();
962
+ break;
963
+ case 'newline':
964
+ this.onKeyLine = false;
965
+ // fallthrough
966
+ case 'space':
967
+ case 'comment':
968
+ default:
969
+ // all other values are errors
970
+ if (token.end)
971
+ token.end.push(this.sourceToken);
972
+ else
973
+ token.end = [this.sourceToken];
974
+ if (this.type === 'newline')
975
+ yield* this.pop();
976
+ }
977
+ }
978
+ }
979
+
980
+ exports.Parser = Parser;