@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,209 @@
1
+ 'use strict';
2
+
3
+ var identity = require('../nodes/identity.js');
4
+ var Pair = require('../nodes/Pair.js');
5
+ var YAMLMap = require('../nodes/YAMLMap.js');
6
+ var YAMLSeq = require('../nodes/YAMLSeq.js');
7
+ var resolveEnd = require('./resolve-end.js');
8
+ var resolveProps = require('./resolve-props.js');
9
+ var utilContainsNewline = require('./util-contains-newline.js');
10
+ var utilMapIncludes = require('./util-map-includes.js');
11
+
12
+ const blockMsg = 'Block collections are not allowed within flow collections';
13
+ const isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');
14
+ function resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) {
15
+ const isMap = fc.start.source === '{';
16
+ const fcName = isMap ? 'flow map' : 'flow sequence';
17
+ const NodeClass = (tag?.nodeClass ?? (isMap ? YAMLMap.YAMLMap : YAMLSeq.YAMLSeq));
18
+ const coll = new NodeClass(ctx.schema);
19
+ coll.flow = true;
20
+ const atRoot = ctx.atRoot;
21
+ if (atRoot)
22
+ ctx.atRoot = false;
23
+ if (ctx.atKey)
24
+ ctx.atKey = false;
25
+ let offset = fc.offset + fc.start.source.length;
26
+ for (let i = 0; i < fc.items.length; ++i) {
27
+ const collItem = fc.items[i];
28
+ const { start, key, sep, value } = collItem;
29
+ const props = resolveProps.resolveProps(start, {
30
+ flow: fcName,
31
+ indicator: 'explicit-key-ind',
32
+ next: key ?? sep?.[0],
33
+ offset,
34
+ onError,
35
+ parentIndent: fc.indent,
36
+ startOnNewline: false
37
+ });
38
+ if (!props.found) {
39
+ if (!props.anchor && !props.tag && !sep && !value) {
40
+ if (i === 0 && props.comma)
41
+ onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);
42
+ else if (i < fc.items.length - 1)
43
+ onError(props.start, 'UNEXPECTED_TOKEN', `Unexpected empty item in ${fcName}`);
44
+ if (props.comment) {
45
+ if (coll.comment)
46
+ coll.comment += '\n' + props.comment;
47
+ else
48
+ coll.comment = props.comment;
49
+ }
50
+ offset = props.end;
51
+ continue;
52
+ }
53
+ if (!isMap && ctx.options.strict && utilContainsNewline.containsNewline(key))
54
+ onError(key, // checked by containsNewline()
55
+ 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');
56
+ }
57
+ if (i === 0) {
58
+ if (props.comma)
59
+ onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);
60
+ }
61
+ else {
62
+ if (!props.comma)
63
+ onError(props.start, 'MISSING_CHAR', `Missing , between ${fcName} items`);
64
+ if (props.comment) {
65
+ let prevItemComment = '';
66
+ loop: for (const st of start) {
67
+ switch (st.type) {
68
+ case 'comma':
69
+ case 'space':
70
+ break;
71
+ case 'comment':
72
+ prevItemComment = st.source.substring(1);
73
+ break loop;
74
+ default:
75
+ break loop;
76
+ }
77
+ }
78
+ if (prevItemComment) {
79
+ let prev = coll.items[coll.items.length - 1];
80
+ if (identity.isPair(prev))
81
+ prev = prev.value ?? prev.key;
82
+ if (prev.comment)
83
+ prev.comment += '\n' + prevItemComment;
84
+ else
85
+ prev.comment = prevItemComment;
86
+ props.comment = props.comment.substring(prevItemComment.length + 1);
87
+ }
88
+ }
89
+ }
90
+ if (!isMap && !sep && !props.found) {
91
+ // item is a value in a seq
92
+ // → key & sep are empty, start does not include ? or :
93
+ const valueNode = value
94
+ ? composeNode(ctx, value, props, onError)
95
+ : composeEmptyNode(ctx, props.end, sep, null, props, onError);
96
+ coll.items.push(valueNode);
97
+ offset = valueNode.range[2];
98
+ if (isBlock(value))
99
+ onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);
100
+ }
101
+ else {
102
+ // item is a key+value pair
103
+ // key value
104
+ ctx.atKey = true;
105
+ const keyStart = props.end;
106
+ const keyNode = key
107
+ ? composeNode(ctx, key, props, onError)
108
+ : composeEmptyNode(ctx, keyStart, start, null, props, onError);
109
+ if (isBlock(key))
110
+ onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);
111
+ ctx.atKey = false;
112
+ // value properties
113
+ const valueProps = resolveProps.resolveProps(sep ?? [], {
114
+ flow: fcName,
115
+ indicator: 'map-value-ind',
116
+ next: value,
117
+ offset: keyNode.range[2],
118
+ onError,
119
+ parentIndent: fc.indent,
120
+ startOnNewline: false
121
+ });
122
+ if (valueProps.found) {
123
+ if (!isMap && !props.found && ctx.options.strict) {
124
+ if (sep)
125
+ for (const st of sep) {
126
+ if (st === valueProps.found)
127
+ break;
128
+ if (st.type === 'newline') {
129
+ onError(st, 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');
130
+ break;
131
+ }
132
+ }
133
+ if (props.start < valueProps.found.offset - 1024)
134
+ onError(valueProps.found, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit flow sequence key');
135
+ }
136
+ }
137
+ else if (value) {
138
+ if ('source' in value && value.source?.[0] === ':')
139
+ onError(value, 'MISSING_CHAR', `Missing space after : in ${fcName}`);
140
+ else
141
+ onError(valueProps.start, 'MISSING_CHAR', `Missing , or : between ${fcName} items`);
142
+ }
143
+ // value value
144
+ const valueNode = value
145
+ ? composeNode(ctx, value, valueProps, onError)
146
+ : valueProps.found
147
+ ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError)
148
+ : null;
149
+ if (valueNode) {
150
+ if (isBlock(value))
151
+ onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);
152
+ }
153
+ else if (valueProps.comment) {
154
+ if (keyNode.comment)
155
+ keyNode.comment += '\n' + valueProps.comment;
156
+ else
157
+ keyNode.comment = valueProps.comment;
158
+ }
159
+ const pair = new Pair.Pair(keyNode, valueNode);
160
+ if (ctx.options.keepSourceTokens)
161
+ pair.srcToken = collItem;
162
+ if (isMap) {
163
+ const map = coll;
164
+ if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))
165
+ onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');
166
+ map.items.push(pair);
167
+ }
168
+ else {
169
+ const map = new YAMLMap.YAMLMap(ctx.schema);
170
+ map.flow = true;
171
+ map.items.push(pair);
172
+ const endRange = (valueNode ?? keyNode).range;
173
+ map.range = [keyNode.range[0], endRange[1], endRange[2]];
174
+ coll.items.push(map);
175
+ }
176
+ offset = valueNode ? valueNode.range[2] : valueProps.end;
177
+ }
178
+ }
179
+ const expectedEnd = isMap ? '}' : ']';
180
+ const [ce, ...ee] = fc.end;
181
+ let cePos = offset;
182
+ if (ce?.source === expectedEnd)
183
+ cePos = ce.offset + ce.source.length;
184
+ else {
185
+ const name = fcName[0].toUpperCase() + fcName.substring(1);
186
+ const msg = atRoot
187
+ ? `${name} must end with a ${expectedEnd}`
188
+ : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`;
189
+ onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg);
190
+ if (ce && ce.source.length !== 1)
191
+ ee.unshift(ce);
192
+ }
193
+ if (ee.length > 0) {
194
+ const end = resolveEnd.resolveEnd(ee, cePos, ctx.options.strict, onError);
195
+ if (end.comment) {
196
+ if (coll.comment)
197
+ coll.comment += '\n' + end.comment;
198
+ else
199
+ coll.comment = end.comment;
200
+ }
201
+ coll.range = [fc.offset, cePos, end.offset];
202
+ }
203
+ else {
204
+ coll.range = [fc.offset, cePos, cePos];
205
+ }
206
+ return coll;
207
+ }
208
+
209
+ exports.resolveFlowCollection = resolveFlowCollection;
@@ -0,0 +1,10 @@
1
+ import type { Range } from '../nodes/Node';
2
+ import { Scalar } from '../nodes/Scalar';
3
+ import type { FlowScalar } from '../parse/cst';
4
+ import type { ComposeErrorHandler } from './composer';
5
+ export declare function resolveFlowScalar(scalar: FlowScalar, strict: boolean, onError: ComposeErrorHandler): {
6
+ value: string;
7
+ type: Scalar.PLAIN | Scalar.QUOTE_DOUBLE | Scalar.QUOTE_SINGLE | null;
8
+ comment: string;
9
+ range: Range;
10
+ };
@@ -0,0 +1,227 @@
1
+ 'use strict';
2
+
3
+ var Scalar = require('../nodes/Scalar.js');
4
+ var resolveEnd = require('./resolve-end.js');
5
+
6
+ function resolveFlowScalar(scalar, strict, onError) {
7
+ const { offset, type, source, end } = scalar;
8
+ let _type;
9
+ let value;
10
+ const _onError = (rel, code, msg) => onError(offset + rel, code, msg);
11
+ switch (type) {
12
+ case 'scalar':
13
+ _type = Scalar.Scalar.PLAIN;
14
+ value = plainValue(source, _onError);
15
+ break;
16
+ case 'single-quoted-scalar':
17
+ _type = Scalar.Scalar.QUOTE_SINGLE;
18
+ value = singleQuotedValue(source, _onError);
19
+ break;
20
+ case 'double-quoted-scalar':
21
+ _type = Scalar.Scalar.QUOTE_DOUBLE;
22
+ value = doubleQuotedValue(source, _onError);
23
+ break;
24
+ /* istanbul ignore next should not happen */
25
+ default:
26
+ onError(scalar, 'UNEXPECTED_TOKEN', `Expected a flow scalar value, but found: ${type}`);
27
+ return {
28
+ value: '',
29
+ type: null,
30
+ comment: '',
31
+ range: [offset, offset + source.length, offset + source.length]
32
+ };
33
+ }
34
+ const valueEnd = offset + source.length;
35
+ const re = resolveEnd.resolveEnd(end, valueEnd, strict, onError);
36
+ return {
37
+ value,
38
+ type: _type,
39
+ comment: re.comment,
40
+ range: [offset, valueEnd, re.offset]
41
+ };
42
+ }
43
+ function plainValue(source, onError) {
44
+ let badChar = '';
45
+ switch (source[0]) {
46
+ /* istanbul ignore next should not happen */
47
+ case '\t':
48
+ badChar = 'a tab character';
49
+ break;
50
+ case ',':
51
+ badChar = 'flow indicator character ,';
52
+ break;
53
+ case '%':
54
+ badChar = 'directive indicator character %';
55
+ break;
56
+ case '|':
57
+ case '>': {
58
+ badChar = `block scalar indicator ${source[0]}`;
59
+ break;
60
+ }
61
+ case '@':
62
+ case '`': {
63
+ badChar = `reserved character ${source[0]}`;
64
+ break;
65
+ }
66
+ }
67
+ if (badChar)
68
+ onError(0, 'BAD_SCALAR_START', `Plain value cannot start with ${badChar}`);
69
+ return foldLines(source);
70
+ }
71
+ function singleQuotedValue(source, onError) {
72
+ if (source[source.length - 1] !== "'" || source.length === 1)
73
+ onError(source.length, 'MISSING_CHAR', "Missing closing 'quote");
74
+ return foldLines(source.slice(1, -1)).replace(/''/g, "'");
75
+ }
76
+ function foldLines(source) {
77
+ /**
78
+ * The negative lookbehind here and in the `re` RegExp is to
79
+ * prevent causing a polynomial search time in certain cases.
80
+ *
81
+ * The try-catch is for Safari, which doesn't support this yet:
82
+ * https://caniuse.com/js-regexp-lookbehind
83
+ */
84
+ let first, line;
85
+ try {
86
+ first = new RegExp('(.*?)(?<![ \t])[ \t]*\r?\n', 'sy');
87
+ line = new RegExp('[ \t]*(.*?)(?:(?<![ \t])[ \t]*)?\r?\n', 'sy');
88
+ }
89
+ catch {
90
+ first = /(.*?)[ \t]*\r?\n/sy;
91
+ line = /[ \t]*(.*?)[ \t]*\r?\n/sy;
92
+ }
93
+ let match = first.exec(source);
94
+ if (!match)
95
+ return source;
96
+ let res = match[1];
97
+ let sep = ' ';
98
+ let pos = first.lastIndex;
99
+ line.lastIndex = pos;
100
+ while ((match = line.exec(source))) {
101
+ if (match[1] === '') {
102
+ if (sep === '\n')
103
+ res += sep;
104
+ else
105
+ sep = '\n';
106
+ }
107
+ else {
108
+ res += sep + match[1];
109
+ sep = ' ';
110
+ }
111
+ pos = line.lastIndex;
112
+ }
113
+ const last = /[ \t]*(.*)/sy;
114
+ last.lastIndex = pos;
115
+ match = last.exec(source);
116
+ return res + sep + (match?.[1] ?? '');
117
+ }
118
+ function doubleQuotedValue(source, onError) {
119
+ let res = '';
120
+ for (let i = 1; i < source.length - 1; ++i) {
121
+ const ch = source[i];
122
+ if (ch === '\r' && source[i + 1] === '\n')
123
+ continue;
124
+ if (ch === '\n') {
125
+ const { fold, offset } = foldNewline(source, i);
126
+ res += fold;
127
+ i = offset;
128
+ }
129
+ else if (ch === '\\') {
130
+ let next = source[++i];
131
+ const cc = escapeCodes[next];
132
+ if (cc)
133
+ res += cc;
134
+ else if (next === '\n') {
135
+ // skip escaped newlines, but still trim the following line
136
+ next = source[i + 1];
137
+ while (next === ' ' || next === '\t')
138
+ next = source[++i + 1];
139
+ }
140
+ else if (next === '\r' && source[i + 1] === '\n') {
141
+ // skip escaped CRLF newlines, but still trim the following line
142
+ next = source[++i + 1];
143
+ while (next === ' ' || next === '\t')
144
+ next = source[++i + 1];
145
+ }
146
+ else if (next === 'x' || next === 'u' || next === 'U') {
147
+ const length = next === 'x' ? 2 : next === 'u' ? 4 : 8;
148
+ res += parseCharCode(source, i + 1, length, onError);
149
+ i += length;
150
+ }
151
+ else {
152
+ const raw = source.substr(i - 1, 2);
153
+ onError(i - 1, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);
154
+ res += raw;
155
+ }
156
+ }
157
+ else if (ch === ' ' || ch === '\t') {
158
+ // trim trailing whitespace
159
+ const wsStart = i;
160
+ let next = source[i + 1];
161
+ while (next === ' ' || next === '\t')
162
+ next = source[++i + 1];
163
+ if (next !== '\n' && !(next === '\r' && source[i + 2] === '\n'))
164
+ res += i > wsStart ? source.slice(wsStart, i + 1) : ch;
165
+ }
166
+ else {
167
+ res += ch;
168
+ }
169
+ }
170
+ if (source[source.length - 1] !== '"' || source.length === 1)
171
+ onError(source.length, 'MISSING_CHAR', 'Missing closing "quote');
172
+ return res;
173
+ }
174
+ /**
175
+ * Fold a single newline into a space, multiple newlines to N - 1 newlines.
176
+ * Presumes `source[offset] === '\n'`
177
+ */
178
+ function foldNewline(source, offset) {
179
+ let fold = '';
180
+ let ch = source[offset + 1];
181
+ while (ch === ' ' || ch === '\t' || ch === '\n' || ch === '\r') {
182
+ if (ch === '\r' && source[offset + 2] !== '\n')
183
+ break;
184
+ if (ch === '\n')
185
+ fold += '\n';
186
+ offset += 1;
187
+ ch = source[offset + 1];
188
+ }
189
+ if (!fold)
190
+ fold = ' ';
191
+ return { fold, offset };
192
+ }
193
+ const escapeCodes = {
194
+ '0': '\0', // null character
195
+ a: '\x07', // bell character
196
+ b: '\b', // backspace
197
+ e: '\x1b', // escape character
198
+ f: '\f', // form feed
199
+ n: '\n', // line feed
200
+ r: '\r', // carriage return
201
+ t: '\t', // horizontal tab
202
+ v: '\v', // vertical tab
203
+ N: '\u0085', // Unicode next line
204
+ _: '\u00a0', // Unicode non-breaking space
205
+ L: '\u2028', // Unicode line separator
206
+ P: '\u2029', // Unicode paragraph separator
207
+ ' ': ' ',
208
+ '"': '"',
209
+ '/': '/',
210
+ '\\': '\\',
211
+ '\t': '\t'
212
+ };
213
+ function parseCharCode(source, offset, length, onError) {
214
+ const cc = source.substr(offset, length);
215
+ const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);
216
+ const code = ok ? parseInt(cc, 16) : NaN;
217
+ try {
218
+ return String.fromCodePoint(code);
219
+ }
220
+ catch {
221
+ const raw = source.substr(offset - 2, length + 2);
222
+ onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);
223
+ return raw;
224
+ }
225
+ }
226
+
227
+ exports.resolveFlowScalar = resolveFlowScalar;
@@ -0,0 +1,23 @@
1
+ import type { SourceToken, Token } from '../parse/cst';
2
+ import type { ComposeErrorHandler } from './composer';
3
+ export interface ResolvePropsArg {
4
+ flow?: 'flow map' | 'flow sequence';
5
+ indicator: 'doc-start' | 'explicit-key-ind' | 'map-value-ind' | 'seq-item-ind';
6
+ next: Token | null | undefined;
7
+ offset: number;
8
+ onError: ComposeErrorHandler;
9
+ parentIndent: number;
10
+ startOnNewline: boolean;
11
+ }
12
+ export declare function resolveProps(tokens: SourceToken[], { flow, indicator, next, offset, onError, parentIndent, startOnNewline }: ResolvePropsArg): {
13
+ comma: SourceToken | null;
14
+ found: SourceToken | null;
15
+ spaceBefore: boolean;
16
+ comment: string;
17
+ hasNewline: boolean;
18
+ anchor: SourceToken | null;
19
+ tag: SourceToken | null;
20
+ newlineAfterProp: SourceToken | null;
21
+ end: number;
22
+ start: number;
23
+ };
@@ -0,0 +1,148 @@
1
+ 'use strict';
2
+
3
+ function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {
4
+ let spaceBefore = false;
5
+ let atNewline = startOnNewline;
6
+ let hasSpace = startOnNewline;
7
+ let comment = '';
8
+ let commentSep = '';
9
+ let hasNewline = false;
10
+ let reqSpace = false;
11
+ let tab = null;
12
+ let anchor = null;
13
+ let tag = null;
14
+ let newlineAfterProp = null;
15
+ let comma = null;
16
+ let found = null;
17
+ let start = null;
18
+ for (const token of tokens) {
19
+ if (reqSpace) {
20
+ if (token.type !== 'space' &&
21
+ token.type !== 'newline' &&
22
+ token.type !== 'comma')
23
+ onError(token.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');
24
+ reqSpace = false;
25
+ }
26
+ if (tab) {
27
+ if (atNewline && token.type !== 'comment' && token.type !== 'newline') {
28
+ onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');
29
+ }
30
+ tab = null;
31
+ }
32
+ switch (token.type) {
33
+ case 'space':
34
+ // At the doc level, tabs at line start may be parsed
35
+ // as leading white space rather than indentation.
36
+ // In a flow collection, only the parser handles indent.
37
+ if (!flow &&
38
+ (indicator !== 'doc-start' || next?.type !== 'flow-collection') &&
39
+ token.source.includes('\t')) {
40
+ tab = token;
41
+ }
42
+ hasSpace = true;
43
+ break;
44
+ case 'comment': {
45
+ if (!hasSpace)
46
+ onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');
47
+ const cb = token.source.substring(1) || ' ';
48
+ if (!comment)
49
+ comment = cb;
50
+ else
51
+ comment += commentSep + cb;
52
+ commentSep = '';
53
+ atNewline = false;
54
+ break;
55
+ }
56
+ case 'newline':
57
+ if (atNewline) {
58
+ if (comment)
59
+ comment += token.source;
60
+ else if (!found || indicator !== 'seq-item-ind')
61
+ spaceBefore = true;
62
+ }
63
+ else
64
+ commentSep += token.source;
65
+ atNewline = true;
66
+ hasNewline = true;
67
+ if (anchor || tag)
68
+ newlineAfterProp = token;
69
+ hasSpace = true;
70
+ break;
71
+ case 'anchor':
72
+ if (anchor)
73
+ onError(token, 'MULTIPLE_ANCHORS', 'A node can have at most one anchor');
74
+ if (token.source.endsWith(':'))
75
+ onError(token.offset + token.source.length - 1, 'BAD_ALIAS', 'Anchor ending in : is ambiguous', true);
76
+ anchor = token;
77
+ start ?? (start = token.offset);
78
+ atNewline = false;
79
+ hasSpace = false;
80
+ reqSpace = true;
81
+ break;
82
+ case 'tag': {
83
+ if (tag)
84
+ onError(token, 'MULTIPLE_TAGS', 'A node can have at most one tag');
85
+ tag = token;
86
+ start ?? (start = token.offset);
87
+ atNewline = false;
88
+ hasSpace = false;
89
+ reqSpace = true;
90
+ break;
91
+ }
92
+ case indicator:
93
+ // Could here handle preceding comments differently
94
+ if (anchor || tag)
95
+ onError(token, 'BAD_PROP_ORDER', `Anchors and tags must be after the ${token.source} indicator`);
96
+ if (found)
97
+ onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow ?? 'collection'}`);
98
+ found = token;
99
+ atNewline =
100
+ indicator === 'seq-item-ind' || indicator === 'explicit-key-ind';
101
+ hasSpace = false;
102
+ break;
103
+ case 'comma':
104
+ if (flow) {
105
+ if (comma)
106
+ onError(token, 'UNEXPECTED_TOKEN', `Unexpected , in ${flow}`);
107
+ comma = token;
108
+ atNewline = false;
109
+ hasSpace = false;
110
+ break;
111
+ }
112
+ // else fallthrough
113
+ default:
114
+ onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.type} token`);
115
+ atNewline = false;
116
+ hasSpace = false;
117
+ }
118
+ }
119
+ const last = tokens[tokens.length - 1];
120
+ const end = last ? last.offset + last.source.length : offset;
121
+ if (reqSpace &&
122
+ next &&
123
+ next.type !== 'space' &&
124
+ next.type !== 'newline' &&
125
+ next.type !== 'comma' &&
126
+ (next.type !== 'scalar' || next.source !== '')) {
127
+ onError(next.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');
128
+ }
129
+ if (tab &&
130
+ ((atNewline && tab.indent <= parentIndent) ||
131
+ next?.type === 'block-map' ||
132
+ next?.type === 'block-seq'))
133
+ onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');
134
+ return {
135
+ comma,
136
+ found,
137
+ spaceBefore,
138
+ comment,
139
+ hasNewline,
140
+ anchor,
141
+ tag,
142
+ newlineAfterProp,
143
+ end,
144
+ start: start ?? end
145
+ };
146
+ }
147
+
148
+ exports.resolveProps = resolveProps;
@@ -0,0 +1,2 @@
1
+ import type { Token } from '../parse/cst';
2
+ export declare function containsNewline(key: Token | null | undefined): boolean | null;
@@ -0,0 +1,36 @@
1
+ 'use strict';
2
+
3
+ function containsNewline(key) {
4
+ if (!key)
5
+ return null;
6
+ switch (key.type) {
7
+ case 'alias':
8
+ case 'scalar':
9
+ case 'double-quoted-scalar':
10
+ case 'single-quoted-scalar':
11
+ if (key.source.includes('\n'))
12
+ return true;
13
+ if (key.end)
14
+ for (const st of key.end)
15
+ if (st.type === 'newline')
16
+ return true;
17
+ return false;
18
+ case 'flow-collection':
19
+ for (const it of key.items) {
20
+ for (const st of it.start)
21
+ if (st.type === 'newline')
22
+ return true;
23
+ if (it.sep)
24
+ for (const st of it.sep)
25
+ if (st.type === 'newline')
26
+ return true;
27
+ if (containsNewline(it.key) || containsNewline(it.value))
28
+ return true;
29
+ }
30
+ return false;
31
+ default:
32
+ return true;
33
+ }
34
+ }
35
+
36
+ exports.containsNewline = containsNewline;
@@ -0,0 +1,2 @@
1
+ import type { Token } from '../parse/cst';
2
+ export declare function emptyScalarPosition(offset: number, before: Token[] | undefined, pos: number | null): number;