@feiyoug/skill-lab 0.0.1 → 0.0.2

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 (465) hide show
  1. package/README.md +20 -21
  2. package/esm/analyzer/astgrep/client.d.ts +20 -8
  3. package/esm/analyzer/astgrep/client.d.ts.map +1 -1
  4. package/esm/analyzer/astgrep/client.js +58 -31
  5. package/esm/analyzer/config/default.d.ts +8 -0
  6. package/esm/analyzer/config/default.d.ts.map +1 -0
  7. package/esm/analyzer/config/default.js +91 -0
  8. package/esm/analyzer/config/helpers.d.ts +8 -0
  9. package/esm/analyzer/config/helpers.d.ts.map +1 -0
  10. package/esm/analyzer/config/helpers.js +72 -0
  11. package/esm/analyzer/config/mod.d.ts +4 -0
  12. package/esm/analyzer/config/mod.d.ts.map +1 -0
  13. package/esm/analyzer/config/mod.js +3 -0
  14. package/esm/analyzer/config/types.d.ts +58 -0
  15. package/esm/analyzer/config/types.d.ts.map +1 -0
  16. package/esm/analyzer/{config.js → config/types.js} +0 -28
  17. package/esm/analyzer/logging.d.ts +3 -0
  18. package/esm/analyzer/logging.d.ts.map +1 -0
  19. package/esm/analyzer/logging.js +6 -0
  20. package/esm/analyzer/mod.d.ts +12 -5
  21. package/esm/analyzer/mod.d.ts.map +1 -1
  22. package/esm/analyzer/mod.js +25 -12
  23. package/esm/analyzer/result.d.ts +35 -0
  24. package/esm/analyzer/result.d.ts.map +1 -0
  25. package/esm/analyzer/result.js +311 -0
  26. package/esm/analyzer/rules/bash/commands/mod.d.ts +1 -0
  27. package/esm/analyzer/rules/bash/commands/mod.d.ts.map +1 -1
  28. package/esm/analyzer/rules/bash/commands/mod.js +3 -0
  29. package/esm/analyzer/rules/bash/commands/pip.d.ts +3 -0
  30. package/esm/analyzer/rules/bash/commands/pip.d.ts.map +1 -0
  31. package/esm/analyzer/rules/bash/commands/pip.js +14 -0
  32. package/esm/analyzer/rules/bash/extractFileRefs.d.ts +1 -1
  33. package/esm/analyzer/rules/bash/extractFileRefs.d.ts.map +1 -1
  34. package/esm/analyzer/rules/bash/extractFileRefs.js +2 -2
  35. package/esm/analyzer/rules/bash/inline-command-classifier.d.ts +1 -1
  36. package/esm/analyzer/rules/bash/inline-command-classifier.d.ts.map +1 -1
  37. package/esm/analyzer/rules/bash/inline-command-classifier.js +4 -4
  38. package/esm/analyzer/rules/javascript/extractFileRefs.d.ts +3 -4
  39. package/esm/analyzer/rules/javascript/extractFileRefs.d.ts.map +1 -1
  40. package/esm/analyzer/rules/javascript/extractFileRefs.js +3 -4
  41. package/esm/analyzer/rules/markdown/extractCodeBlocks.d.ts.map +1 -1
  42. package/esm/analyzer/rules/markdown/extractCodeBlocks.js +6 -3
  43. package/esm/analyzer/rules/markdown/extractFileRefs.d.ts.map +1 -1
  44. package/esm/analyzer/rules/markdown/extractFileRefs.js +2 -0
  45. package/esm/analyzer/rules/python/extractFileRefs.d.ts +1 -1
  46. package/esm/analyzer/rules/python/extractFileRefs.d.ts.map +1 -1
  47. package/esm/analyzer/rules/python/extractFileRefs.js +2 -2
  48. package/esm/analyzer/steps/001-discovery/discover-files.d.ts +4 -0
  49. package/esm/analyzer/steps/001-discovery/discover-files.d.ts.map +1 -1
  50. package/esm/analyzer/steps/001-discovery/discover-files.js +18 -2
  51. package/esm/analyzer/steps/001-discovery/mod.d.ts.map +1 -1
  52. package/esm/analyzer/steps/001-discovery/mod.js +39 -9
  53. package/esm/analyzer/steps/002-permissions/mod.d.ts.map +1 -1
  54. package/esm/analyzer/steps/002-permissions/mod.js +156 -73
  55. package/esm/analyzer/steps/002-permissions/scan-file.d.ts +1 -1
  56. package/esm/analyzer/steps/002-permissions/scan-file.d.ts.map +1 -1
  57. package/esm/analyzer/steps/002-permissions/scan-file.js +40 -5
  58. package/esm/analyzer/steps/002-permissions/seed-frontmatter.js +2 -2
  59. package/esm/analyzer/steps/003-risks/dep-risks.d.ts +3 -0
  60. package/esm/analyzer/steps/003-risks/dep-risks.d.ts.map +1 -0
  61. package/esm/analyzer/steps/003-risks/dep-risks.js +74 -0
  62. package/esm/analyzer/steps/003-risks/helpers.d.ts +1 -0
  63. package/esm/analyzer/steps/003-risks/helpers.d.ts.map +1 -1
  64. package/esm/analyzer/steps/003-risks/helpers.js +1 -0
  65. package/esm/analyzer/steps/003-risks/mod.d.ts +3 -2
  66. package/esm/analyzer/steps/003-risks/mod.d.ts.map +1 -1
  67. package/esm/analyzer/steps/003-risks/mod.js +41 -4
  68. package/esm/analyzer/steps/003-risks/policy.d.ts +7 -0
  69. package/esm/analyzer/steps/003-risks/policy.d.ts.map +1 -0
  70. package/esm/analyzer/steps/003-risks/policy.js +23 -0
  71. package/esm/analyzer/steps/003-risks/rule-mapped.d.ts +2 -2
  72. package/esm/analyzer/steps/003-risks/rule-mapped.d.ts.map +1 -1
  73. package/esm/analyzer/steps/003-risks/rule-mapped.js +83 -2
  74. package/esm/analyzer/steps/003-risks/scoring.d.ts +9 -1
  75. package/esm/analyzer/steps/003-risks/scoring.d.ts.map +1 -1
  76. package/esm/analyzer/steps/003-risks/scoring.js +55 -42
  77. package/esm/analyzer/treesitter/client.d.ts +31 -0
  78. package/esm/analyzer/treesitter/client.d.ts.map +1 -0
  79. package/esm/analyzer/{treesiter → treesitter}/client.js +43 -39
  80. package/esm/analyzer/treesitter/registry.d.ts +73 -0
  81. package/esm/analyzer/treesitter/registry.d.ts.map +1 -0
  82. package/esm/analyzer/treesitter/registry.js +165 -0
  83. package/esm/analyzer/types.d.ts +14 -28
  84. package/esm/analyzer/types.d.ts.map +1 -1
  85. package/esm/deps/jsr.io/@deno-library/progress/1.5.1/deps.d.ts +3 -0
  86. package/esm/deps/jsr.io/@deno-library/progress/1.5.1/deps.d.ts.map +1 -0
  87. package/esm/deps/jsr.io/@deno-library/progress/1.5.1/deps.js +3 -0
  88. package/esm/deps/jsr.io/@deno-library/progress/1.5.1/mod.d.ts +93 -0
  89. package/esm/deps/jsr.io/@deno-library/progress/1.5.1/mod.d.ts.map +1 -0
  90. package/esm/deps/jsr.io/@deno-library/progress/1.5.1/mod.js +297 -0
  91. package/esm/deps/jsr.io/@deno-library/progress/1.5.1/multi.d.ts +84 -0
  92. package/esm/deps/jsr.io/@deno-library/progress/1.5.1/multi.d.ts.map +1 -0
  93. package/esm/deps/jsr.io/@deno-library/progress/1.5.1/multi.js +268 -0
  94. package/esm/deps/jsr.io/@deno-library/progress/1.5.1/time.d.ts +18 -0
  95. package/esm/deps/jsr.io/@deno-library/progress/1.5.1/time.d.ts.map +1 -0
  96. package/esm/deps/jsr.io/@deno-library/progress/1.5.1/time.js +45 -0
  97. package/esm/deps/jsr.io/@std/fmt/1.0.3/colors.d.ts +700 -0
  98. package/esm/deps/jsr.io/@std/fmt/1.0.3/colors.d.ts.map +1 -0
  99. package/esm/deps/jsr.io/@std/fmt/1.0.3/colors.js +903 -0
  100. package/esm/deps/jsr.io/@std/io/0.225.0/types.d.ts +146 -0
  101. package/esm/deps/jsr.io/@std/io/0.225.0/types.d.ts.map +1 -0
  102. package/esm/deps/jsr.io/@std/io/0.225.0/types.js +15 -0
  103. package/esm/deps/jsr.io/@std/io/0.225.0/write_all.d.ts +51 -0
  104. package/esm/deps/jsr.io/@std/io/0.225.0/write_all.d.ts.map +1 -0
  105. package/esm/deps/jsr.io/@std/io/0.225.0/write_all.js +61 -0
  106. package/esm/shared/deep_merge.d.ts +12 -0
  107. package/esm/shared/deep_merge.d.ts.map +1 -0
  108. package/esm/shared/deep_merge.js +49 -0
  109. package/esm/shared/mod.d.ts +1 -0
  110. package/esm/shared/mod.d.ts.map +1 -1
  111. package/esm/shared/mod.js +1 -0
  112. package/esm/shared/types/filetypes.d.ts +2 -2
  113. package/esm/shared/types/filetypes.d.ts.map +1 -1
  114. package/esm/shared/types/permissions.d.ts +1 -1
  115. package/esm/shared/types/permissions.d.ts.map +1 -1
  116. package/esm/shared/types/risks.d.ts +4 -1
  117. package/esm/shared/types/risks.d.ts.map +1 -1
  118. package/esm/skillreader/types.d.ts +2 -2
  119. package/esm/skillreader/types.d.ts.map +1 -1
  120. package/esm/skillreader/types.js +2 -2
  121. package/package.json +1 -1
  122. package/script/analyzer/astgrep/client.d.ts +20 -8
  123. package/script/analyzer/astgrep/client.d.ts.map +1 -1
  124. package/script/analyzer/astgrep/client.js +58 -64
  125. package/script/analyzer/config/default.d.ts +8 -0
  126. package/script/analyzer/config/default.d.ts.map +1 -0
  127. package/script/analyzer/config/default.js +94 -0
  128. package/script/analyzer/config/helpers.d.ts +8 -0
  129. package/script/analyzer/config/helpers.d.ts.map +1 -0
  130. package/script/analyzer/config/helpers.js +76 -0
  131. package/script/analyzer/config/mod.d.ts +4 -0
  132. package/script/analyzer/config/mod.d.ts.map +1 -0
  133. package/script/analyzer/config/mod.js +21 -0
  134. package/script/analyzer/config/types.d.ts +58 -0
  135. package/script/analyzer/config/types.d.ts.map +1 -0
  136. package/script/analyzer/{config.js → config/types.js} +1 -29
  137. package/script/analyzer/logging.d.ts +3 -0
  138. package/script/analyzer/logging.d.ts.map +1 -0
  139. package/script/analyzer/logging.js +9 -0
  140. package/script/analyzer/mod.d.ts +12 -5
  141. package/script/analyzer/mod.d.ts.map +1 -1
  142. package/script/analyzer/mod.js +35 -20
  143. package/script/analyzer/result.d.ts +35 -0
  144. package/script/analyzer/result.d.ts.map +1 -0
  145. package/script/analyzer/result.js +315 -0
  146. package/script/analyzer/rules/bash/commands/mod.d.ts +1 -0
  147. package/script/analyzer/rules/bash/commands/mod.d.ts.map +1 -1
  148. package/script/analyzer/rules/bash/commands/mod.js +3 -0
  149. package/script/analyzer/rules/bash/commands/pip.d.ts +3 -0
  150. package/script/analyzer/rules/bash/commands/pip.d.ts.map +1 -0
  151. package/script/analyzer/rules/bash/commands/pip.js +17 -0
  152. package/script/analyzer/rules/bash/extractFileRefs.d.ts +1 -1
  153. package/script/analyzer/rules/bash/extractFileRefs.d.ts.map +1 -1
  154. package/script/analyzer/rules/bash/extractFileRefs.js +2 -2
  155. package/script/analyzer/rules/bash/inline-command-classifier.d.ts +1 -1
  156. package/script/analyzer/rules/bash/inline-command-classifier.d.ts.map +1 -1
  157. package/script/analyzer/rules/bash/inline-command-classifier.js +4 -4
  158. package/script/analyzer/rules/javascript/extractFileRefs.d.ts +3 -4
  159. package/script/analyzer/rules/javascript/extractFileRefs.d.ts.map +1 -1
  160. package/script/analyzer/rules/javascript/extractFileRefs.js +3 -4
  161. package/script/analyzer/rules/markdown/extractCodeBlocks.d.ts.map +1 -1
  162. package/script/analyzer/rules/markdown/extractCodeBlocks.js +6 -3
  163. package/script/analyzer/rules/markdown/extractFileRefs.d.ts.map +1 -1
  164. package/script/analyzer/rules/markdown/extractFileRefs.js +2 -0
  165. package/script/analyzer/rules/python/extractFileRefs.d.ts +1 -1
  166. package/script/analyzer/rules/python/extractFileRefs.d.ts.map +1 -1
  167. package/script/analyzer/rules/python/extractFileRefs.js +2 -2
  168. package/script/analyzer/steps/001-discovery/discover-files.d.ts +4 -0
  169. package/script/analyzer/steps/001-discovery/discover-files.d.ts.map +1 -1
  170. package/script/analyzer/steps/001-discovery/discover-files.js +18 -2
  171. package/script/analyzer/steps/001-discovery/mod.d.ts.map +1 -1
  172. package/script/analyzer/steps/001-discovery/mod.js +77 -11
  173. package/script/analyzer/steps/002-permissions/mod.d.ts.map +1 -1
  174. package/script/analyzer/steps/002-permissions/mod.js +194 -75
  175. package/script/analyzer/steps/002-permissions/scan-file.d.ts +1 -1
  176. package/script/analyzer/steps/002-permissions/scan-file.d.ts.map +1 -1
  177. package/script/analyzer/steps/002-permissions/scan-file.js +40 -5
  178. package/script/analyzer/steps/002-permissions/seed-frontmatter.js +3 -3
  179. package/script/analyzer/steps/003-risks/dep-risks.d.ts +3 -0
  180. package/script/analyzer/steps/003-risks/dep-risks.d.ts.map +1 -0
  181. package/script/analyzer/steps/003-risks/dep-risks.js +77 -0
  182. package/script/analyzer/steps/003-risks/helpers.d.ts +1 -0
  183. package/script/analyzer/steps/003-risks/helpers.d.ts.map +1 -1
  184. package/script/analyzer/steps/003-risks/helpers.js +1 -0
  185. package/script/analyzer/steps/003-risks/mod.d.ts +3 -2
  186. package/script/analyzer/steps/003-risks/mod.d.ts.map +1 -1
  187. package/script/analyzer/steps/003-risks/mod.js +77 -4
  188. package/script/analyzer/steps/003-risks/policy.d.ts +7 -0
  189. package/script/analyzer/steps/003-risks/policy.d.ts.map +1 -0
  190. package/script/analyzer/steps/003-risks/policy.js +29 -0
  191. package/script/analyzer/steps/003-risks/rule-mapped.d.ts +2 -2
  192. package/script/analyzer/steps/003-risks/rule-mapped.d.ts.map +1 -1
  193. package/script/analyzer/steps/003-risks/rule-mapped.js +83 -2
  194. package/script/analyzer/steps/003-risks/scoring.d.ts +9 -1
  195. package/script/analyzer/steps/003-risks/scoring.d.ts.map +1 -1
  196. package/script/analyzer/steps/003-risks/scoring.js +55 -42
  197. package/script/analyzer/treesitter/client.d.ts +31 -0
  198. package/script/analyzer/treesitter/client.d.ts.map +1 -0
  199. package/script/analyzer/treesitter/client.js +136 -0
  200. package/script/analyzer/treesitter/registry.d.ts +73 -0
  201. package/script/analyzer/treesitter/registry.d.ts.map +1 -0
  202. package/script/analyzer/treesitter/registry.js +206 -0
  203. package/script/analyzer/types.d.ts +14 -28
  204. package/script/analyzer/types.d.ts.map +1 -1
  205. package/script/deps/jsr.io/@deno-library/progress/1.5.1/deps.d.ts +3 -0
  206. package/script/deps/jsr.io/@deno-library/progress/1.5.1/deps.d.ts.map +1 -0
  207. package/script/deps/jsr.io/@deno-library/progress/1.5.1/deps.js +10 -0
  208. package/script/deps/jsr.io/@deno-library/progress/1.5.1/mod.d.ts +93 -0
  209. package/script/deps/jsr.io/@deno-library/progress/1.5.1/mod.d.ts.map +1 -0
  210. package/script/deps/jsr.io/@deno-library/progress/1.5.1/mod.js +334 -0
  211. package/script/deps/jsr.io/@deno-library/progress/1.5.1/multi.d.ts +84 -0
  212. package/script/deps/jsr.io/@deno-library/progress/1.5.1/multi.d.ts.map +1 -0
  213. package/script/deps/jsr.io/@deno-library/progress/1.5.1/multi.js +305 -0
  214. package/script/deps/jsr.io/@deno-library/progress/1.5.1/time.d.ts +18 -0
  215. package/script/deps/jsr.io/@deno-library/progress/1.5.1/time.d.ts.map +1 -0
  216. package/script/deps/jsr.io/@deno-library/progress/1.5.1/time.js +48 -0
  217. package/script/deps/jsr.io/@std/fmt/1.0.3/colors.d.ts +700 -0
  218. package/script/deps/jsr.io/@std/fmt/1.0.3/colors.d.ts.map +1 -0
  219. package/script/deps/jsr.io/@std/fmt/1.0.3/colors.js +986 -0
  220. package/script/deps/jsr.io/@std/io/0.225.0/types.d.ts +146 -0
  221. package/script/deps/jsr.io/@std/io/0.225.0/types.d.ts.map +1 -0
  222. package/script/deps/jsr.io/@std/io/0.225.0/types.js +18 -0
  223. package/script/deps/jsr.io/@std/io/0.225.0/write_all.d.ts +51 -0
  224. package/script/deps/jsr.io/@std/io/0.225.0/write_all.d.ts.map +1 -0
  225. package/script/deps/jsr.io/@std/io/0.225.0/write_all.js +65 -0
  226. package/script/shared/deep_merge.d.ts +12 -0
  227. package/script/shared/deep_merge.d.ts.map +1 -0
  228. package/script/shared/deep_merge.js +53 -0
  229. package/script/shared/mod.d.ts +1 -0
  230. package/script/shared/mod.d.ts.map +1 -1
  231. package/script/shared/mod.js +1 -0
  232. package/script/shared/types/filetypes.d.ts +2 -2
  233. package/script/shared/types/filetypes.d.ts.map +1 -1
  234. package/script/shared/types/permissions.d.ts +1 -1
  235. package/script/shared/types/permissions.d.ts.map +1 -1
  236. package/script/shared/types/risks.d.ts +4 -1
  237. package/script/shared/types/risks.d.ts.map +1 -1
  238. package/script/skillreader/types.d.ts +2 -2
  239. package/script/skillreader/types.d.ts.map +1 -1
  240. package/script/skillreader/types.js +2 -2
  241. package/src/_dnt.polyfills.ts +27 -0
  242. package/src/_dnt.shims.ts +64 -0
  243. package/src/analyzer/astgrep/client.ts +184 -0
  244. package/src/analyzer/astgrep/mod.ts +2 -0
  245. package/src/analyzer/config/default.ts +98 -0
  246. package/src/analyzer/config/helpers.ts +107 -0
  247. package/src/analyzer/config/mod.ts +3 -0
  248. package/src/analyzer/config/types.ts +103 -0
  249. package/src/analyzer/logging.ts +8 -0
  250. package/src/analyzer/mod.ts +118 -0
  251. package/src/analyzer/result.ts +393 -0
  252. package/src/analyzer/rules/bash/astTypes.ts +5 -0
  253. package/src/analyzer/rules/bash/commands/bd.ts +23 -0
  254. package/src/analyzer/rules/bash/commands/cron.ts +21 -0
  255. package/src/analyzer/rules/bash/commands/docker.ts +37 -0
  256. package/src/analyzer/rules/bash/commands/eval.ts +52 -0
  257. package/src/analyzer/rules/bash/commands/generic.ts +16 -0
  258. package/src/analyzer/rules/bash/commands/gh.ts +21 -0
  259. package/src/analyzer/rules/bash/commands/git.ts +28 -0
  260. package/src/analyzer/rules/bash/commands/mod.ts +38 -0
  261. package/src/analyzer/rules/bash/commands/node.ts +64 -0
  262. package/src/analyzer/rules/bash/commands/openspec.ts +16 -0
  263. package/src/analyzer/rules/bash/commands/pip.ts +16 -0
  264. package/src/analyzer/rules/bash/commands/sudo.ts +21 -0
  265. package/src/analyzer/rules/bash/destructive.ts +28 -0
  266. package/src/analyzer/rules/bash/extractFileRefs.ts +101 -0
  267. package/src/analyzer/rules/bash/filesystem.ts +50 -0
  268. package/src/analyzer/rules/bash/injection.ts +21 -0
  269. package/src/analyzer/rules/bash/inline-command-classifier.ts +94 -0
  270. package/src/analyzer/rules/bash/mod.ts +23 -0
  271. package/src/analyzer/rules/bash/network.ts +64 -0
  272. package/src/analyzer/rules/bash/secret-detection.ts +43 -0
  273. package/src/analyzer/rules/javascript/astTypes.ts +8 -0
  274. package/src/analyzer/rules/javascript/extractFileRefs.ts +131 -0
  275. package/src/analyzer/rules/javascript/filesystem.ts +28 -0
  276. package/src/analyzer/rules/javascript/injection.ts +21 -0
  277. package/src/analyzer/rules/javascript/mod.ts +26 -0
  278. package/src/analyzer/rules/javascript/network.ts +27 -0
  279. package/src/analyzer/rules/javascript/secret-detection.ts +68 -0
  280. package/src/analyzer/rules/javascript/subprocess.ts +16 -0
  281. package/src/analyzer/rules/markdown/astTypes.ts +35 -0
  282. package/src/analyzer/rules/markdown/extractCodeBlocks.ts +101 -0
  283. package/src/analyzer/rules/markdown/extractFileRefs.ts +179 -0
  284. package/src/analyzer/rules/markdown/mod.ts +12 -0
  285. package/src/analyzer/rules/mod.ts +77 -0
  286. package/src/analyzer/rules/python/astTypes.ts +9 -0
  287. package/src/analyzer/rules/python/extractFileRefs.ts +92 -0
  288. package/src/analyzer/rules/python/mod.ts +15 -0
  289. package/src/analyzer/rules/python/network.ts +26 -0
  290. package/src/analyzer/rules/python/secret-detection.ts +30 -0
  291. package/src/analyzer/rules/shared/file-refs.ts +38 -0
  292. package/src/analyzer/rules/shared/network-evaluators.ts +107 -0
  293. package/src/analyzer/rules/shared/prompt-injection.ts +48 -0
  294. package/src/analyzer/rules/shared/secret-evaluators.ts +13 -0
  295. package/src/analyzer/rules/text/mod.ts +12 -0
  296. package/src/analyzer/rules/typescript/mod.ts +7 -0
  297. package/src/analyzer/steps/001-discovery/discover-files.ts +211 -0
  298. package/src/analyzer/steps/001-discovery/filter-files.ts +72 -0
  299. package/src/analyzer/steps/001-discovery/mod.ts +103 -0
  300. package/src/analyzer/steps/002-permissions/mod.ts +329 -0
  301. package/src/analyzer/steps/002-permissions/scan-file.ts +258 -0
  302. package/src/analyzer/steps/002-permissions/seed-frontmatter.ts +66 -0
  303. package/src/analyzer/steps/002-permissions/synthesize.ts +42 -0
  304. package/src/analyzer/steps/003-risks/dep-risks.ts +89 -0
  305. package/src/analyzer/steps/003-risks/helpers.ts +41 -0
  306. package/src/analyzer/steps/003-risks/mod.ts +86 -0
  307. package/src/analyzer/steps/003-risks/policy.ts +38 -0
  308. package/src/analyzer/steps/003-risks/rule-mapped.ts +206 -0
  309. package/src/analyzer/steps/003-risks/scoring.ts +117 -0
  310. package/src/analyzer/steps/mod.ts +3 -0
  311. package/src/analyzer/treesitter/client.ts +120 -0
  312. package/src/analyzer/treesitter/registry.ts +198 -0
  313. package/src/analyzer/types.ts +78 -0
  314. package/src/analyzer/utils/code-block-path.ts +33 -0
  315. package/src/analyzer/utils/id-generator.ts +59 -0
  316. package/src/analyzer/utils/secret-validator.ts +29 -0
  317. package/src/analyzer/utils/url-parser.ts +25 -0
  318. package/src/deps/jsr.io/@deno-library/progress/1.5.1/deps.ts +3 -0
  319. package/src/deps/jsr.io/@deno-library/progress/1.5.1/mod.ts +265 -0
  320. package/src/deps/jsr.io/@deno-library/progress/1.5.1/multi.ts +250 -0
  321. package/src/deps/jsr.io/@deno-library/progress/1.5.1/time.ts +69 -0
  322. package/src/deps/jsr.io/@std/fmt/1.0.3/colors.ts +1004 -0
  323. package/src/deps/jsr.io/@std/internal/1.0.12/_os.ts +15 -0
  324. package/src/deps/jsr.io/@std/internal/1.0.12/os.ts +7 -0
  325. package/src/deps/jsr.io/@std/io/0.225.0/types.ts +157 -0
  326. package/src/deps/jsr.io/@std/io/0.225.0/write_all.ts +65 -0
  327. package/src/deps/jsr.io/@std/path/1.1.4/_common/assert_path.ts +10 -0
  328. package/src/deps/jsr.io/@std/path/1.1.4/_common/basename.ts +53 -0
  329. package/src/deps/jsr.io/@std/path/1.1.4/_common/common.ts +26 -0
  330. package/src/deps/jsr.io/@std/path/1.1.4/_common/constants.ts +49 -0
  331. package/src/deps/jsr.io/@std/path/1.1.4/_common/dirname.ts +9 -0
  332. package/src/deps/jsr.io/@std/path/1.1.4/_common/format.ts +25 -0
  333. package/src/deps/jsr.io/@std/path/1.1.4/_common/from_file_url.ts +12 -0
  334. package/src/deps/jsr.io/@std/path/1.1.4/_common/glob_to_reg_exp.ts +295 -0
  335. package/src/deps/jsr.io/@std/path/1.1.4/_common/normalize.ts +9 -0
  336. package/src/deps/jsr.io/@std/path/1.1.4/_common/normalize_string.ts +74 -0
  337. package/src/deps/jsr.io/@std/path/1.1.4/_common/relative.ts +10 -0
  338. package/src/deps/jsr.io/@std/path/1.1.4/_common/strip_trailing_separators.ts +25 -0
  339. package/src/deps/jsr.io/@std/path/1.1.4/_common/to_file_url.ts +17 -0
  340. package/src/deps/jsr.io/@std/path/1.1.4/basename.ts +37 -0
  341. package/src/deps/jsr.io/@std/path/1.1.4/common.ts +35 -0
  342. package/src/deps/jsr.io/@std/path/1.1.4/constants.ts +18 -0
  343. package/src/deps/jsr.io/@std/path/1.1.4/dirname.ts +30 -0
  344. package/src/deps/jsr.io/@std/path/1.1.4/extname.ts +29 -0
  345. package/src/deps/jsr.io/@std/path/1.1.4/format.ts +30 -0
  346. package/src/deps/jsr.io/@std/path/1.1.4/from_file_url.ts +30 -0
  347. package/src/deps/jsr.io/@std/path/1.1.4/glob_to_regexp.ts +94 -0
  348. package/src/deps/jsr.io/@std/path/1.1.4/is_absolute.ts +30 -0
  349. package/src/deps/jsr.io/@std/path/1.1.4/is_glob.ts +49 -0
  350. package/src/deps/jsr.io/@std/path/1.1.4/join.ts +31 -0
  351. package/src/deps/jsr.io/@std/path/1.1.4/join_globs.ts +42 -0
  352. package/src/deps/jsr.io/@std/path/1.1.4/mod.ts +217 -0
  353. package/src/deps/jsr.io/@std/path/1.1.4/normalize.ts +33 -0
  354. package/src/deps/jsr.io/@std/path/1.1.4/normalize_glob.ts +45 -0
  355. package/src/deps/jsr.io/@std/path/1.1.4/parse.ts +44 -0
  356. package/src/deps/jsr.io/@std/path/1.1.4/posix/_util.ts +10 -0
  357. package/src/deps/jsr.io/@std/path/1.1.4/posix/basename.ts +62 -0
  358. package/src/deps/jsr.io/@std/path/1.1.4/posix/constants.ts +15 -0
  359. package/src/deps/jsr.io/@std/path/1.1.4/posix/dirname.ts +72 -0
  360. package/src/deps/jsr.io/@std/path/1.1.4/posix/extname.ts +96 -0
  361. package/src/deps/jsr.io/@std/path/1.1.4/posix/format.ts +31 -0
  362. package/src/deps/jsr.io/@std/path/1.1.4/posix/from_file_url.ts +25 -0
  363. package/src/deps/jsr.io/@std/path/1.1.4/posix/glob_to_regexp.ts +94 -0
  364. package/src/deps/jsr.io/@std/path/1.1.4/posix/is_absolute.ts +25 -0
  365. package/src/deps/jsr.io/@std/path/1.1.4/posix/join.ts +46 -0
  366. package/src/deps/jsr.io/@std/path/1.1.4/posix/join_globs.ts +45 -0
  367. package/src/deps/jsr.io/@std/path/1.1.4/posix/normalize.ts +63 -0
  368. package/src/deps/jsr.io/@std/path/1.1.4/posix/normalize_glob.ts +43 -0
  369. package/src/deps/jsr.io/@std/path/1.1.4/posix/parse.ts +121 -0
  370. package/src/deps/jsr.io/@std/path/1.1.4/posix/relative.ts +103 -0
  371. package/src/deps/jsr.io/@std/path/1.1.4/posix/resolve.ts +71 -0
  372. package/src/deps/jsr.io/@std/path/1.1.4/posix/to_file_url.ts +32 -0
  373. package/src/deps/jsr.io/@std/path/1.1.4/posix/to_namespaced_path.ts +21 -0
  374. package/src/deps/jsr.io/@std/path/1.1.4/relative.ts +32 -0
  375. package/src/deps/jsr.io/@std/path/1.1.4/resolve.ts +32 -0
  376. package/src/deps/jsr.io/@std/path/1.1.4/to_file_url.ts +30 -0
  377. package/src/deps/jsr.io/@std/path/1.1.4/to_namespaced_path.ts +31 -0
  378. package/src/deps/jsr.io/@std/path/1.1.4/types.ts +40 -0
  379. package/src/deps/jsr.io/@std/path/1.1.4/windows/_util.ts +28 -0
  380. package/src/deps/jsr.io/@std/path/1.1.4/windows/basename.ts +54 -0
  381. package/src/deps/jsr.io/@std/path/1.1.4/windows/constants.ts +15 -0
  382. package/src/deps/jsr.io/@std/path/1.1.4/windows/dirname.ts +118 -0
  383. package/src/deps/jsr.io/@std/path/1.1.4/windows/extname.ts +90 -0
  384. package/src/deps/jsr.io/@std/path/1.1.4/windows/format.ts +31 -0
  385. package/src/deps/jsr.io/@std/path/1.1.4/windows/from_file_url.ts +34 -0
  386. package/src/deps/jsr.io/@std/path/1.1.4/windows/glob_to_regexp.ts +92 -0
  387. package/src/deps/jsr.io/@std/path/1.1.4/windows/is_absolute.ts +40 -0
  388. package/src/deps/jsr.io/@std/path/1.1.4/windows/join.ts +78 -0
  389. package/src/deps/jsr.io/@std/path/1.1.4/windows/join_globs.ts +46 -0
  390. package/src/deps/jsr.io/@std/path/1.1.4/windows/normalize.ts +136 -0
  391. package/src/deps/jsr.io/@std/path/1.1.4/windows/normalize_glob.ts +43 -0
  392. package/src/deps/jsr.io/@std/path/1.1.4/windows/parse.ts +184 -0
  393. package/src/deps/jsr.io/@std/path/1.1.4/windows/relative.ts +128 -0
  394. package/src/deps/jsr.io/@std/path/1.1.4/windows/resolve.ts +178 -0
  395. package/src/deps/jsr.io/@std/path/1.1.4/windows/to_file_url.ts +38 -0
  396. package/src/deps/jsr.io/@std/path/1.1.4/windows/to_namespaced_path.ts +60 -0
  397. package/src/deps/jsr.io/@std/yaml/1.0.11/_chars.ts +55 -0
  398. package/src/deps/jsr.io/@std/yaml/1.0.11/_dumper_state.ts +841 -0
  399. package/src/deps/jsr.io/@std/yaml/1.0.11/_loader_state.ts +1780 -0
  400. package/src/deps/jsr.io/@std/yaml/1.0.11/_schema.ts +183 -0
  401. package/src/deps/jsr.io/@std/yaml/1.0.11/_type/binary.ts +127 -0
  402. package/src/deps/jsr.io/@std/yaml/1.0.11/_type/bool.ts +37 -0
  403. package/src/deps/jsr.io/@std/yaml/1.0.11/_type/float.ts +112 -0
  404. package/src/deps/jsr.io/@std/yaml/1.0.11/_type/int.ts +174 -0
  405. package/src/deps/jsr.io/@std/yaml/1.0.11/_type/map.ts +17 -0
  406. package/src/deps/jsr.io/@std/yaml/1.0.11/_type/merge.ts +13 -0
  407. package/src/deps/jsr.io/@std/yaml/1.0.11/_type/nil.ts +27 -0
  408. package/src/deps/jsr.io/@std/yaml/1.0.11/_type/omap.ts +30 -0
  409. package/src/deps/jsr.io/@std/yaml/1.0.11/_type/pairs.ts +22 -0
  410. package/src/deps/jsr.io/@std/yaml/1.0.11/_type/regexp.ts +33 -0
  411. package/src/deps/jsr.io/@std/yaml/1.0.11/_type/seq.ts +13 -0
  412. package/src/deps/jsr.io/@std/yaml/1.0.11/_type/set.ts +17 -0
  413. package/src/deps/jsr.io/@std/yaml/1.0.11/_type/str.ts +12 -0
  414. package/src/deps/jsr.io/@std/yaml/1.0.11/_type/timestamp.ts +101 -0
  415. package/src/deps/jsr.io/@std/yaml/1.0.11/_type/undefined.ts +23 -0
  416. package/src/deps/jsr.io/@std/yaml/1.0.11/_type.ts +49 -0
  417. package/src/deps/jsr.io/@std/yaml/1.0.11/_utils.ts +16 -0
  418. package/src/deps/jsr.io/@std/yaml/1.0.11/mod.ts +54 -0
  419. package/src/deps/jsr.io/@std/yaml/1.0.11/parse.ts +128 -0
  420. package/src/deps/jsr.io/@std/yaml/1.0.11/stringify.ts +118 -0
  421. package/src/shared/deep_merge.ts +73 -0
  422. package/src/shared/mod.ts +2 -0
  423. package/src/shared/types/filetypes.ts +101 -0
  424. package/src/shared/types/findings.ts +7 -0
  425. package/src/shared/types/mod.ts +6 -0
  426. package/src/shared/types/permissions.ts +17 -0
  427. package/src/shared/types/references.ts +62 -0
  428. package/src/shared/types/risks.ts +72 -0
  429. package/src/shared/types/syntaxNode.ts +7 -0
  430. package/src/skillreader/cloudStorage/mod.ts +170 -0
  431. package/src/skillreader/factory.ts +71 -0
  432. package/src/skillreader/fs/git.ts +153 -0
  433. package/src/skillreader/fs/mod.ts +84 -0
  434. package/src/skillreader/github/base.ts +162 -0
  435. package/src/skillreader/github/githubApi.ts +40 -0
  436. package/src/skillreader/github/githubRaw.ts +24 -0
  437. package/src/skillreader/github/mod.ts +45 -0
  438. package/src/skillreader/github/utils.ts +40 -0
  439. package/src/skillreader/manifest.ts +67 -0
  440. package/src/skillreader/mod.ts +26 -0
  441. package/src/skillreader/types.ts +150 -0
  442. package/src/skillreader/utils/frontmatter-parser.ts +72 -0
  443. package/src/skillreader/utils/http-range.ts +38 -0
  444. package/src/skillreader/utils/mod.ts +12 -0
  445. package/esm/analyzer/astgrep/registry.d.ts +0 -18
  446. package/esm/analyzer/astgrep/registry.d.ts.map +0 -1
  447. package/esm/analyzer/astgrep/registry.js +0 -71
  448. package/esm/analyzer/config.d.ts +0 -27
  449. package/esm/analyzer/config.d.ts.map +0 -1
  450. package/esm/analyzer/steps/003-risks/output.d.ts +0 -3
  451. package/esm/analyzer/steps/003-risks/output.d.ts.map +0 -1
  452. package/esm/analyzer/steps/003-risks/output.js +0 -16
  453. package/esm/analyzer/treesiter/client.d.ts +0 -26
  454. package/esm/analyzer/treesiter/client.d.ts.map +0 -1
  455. package/script/analyzer/astgrep/registry.d.ts +0 -18
  456. package/script/analyzer/astgrep/registry.d.ts.map +0 -1
  457. package/script/analyzer/astgrep/registry.js +0 -109
  458. package/script/analyzer/config.d.ts +0 -27
  459. package/script/analyzer/config.d.ts.map +0 -1
  460. package/script/analyzer/steps/003-risks/output.d.ts +0 -3
  461. package/script/analyzer/steps/003-risks/output.d.ts.map +0 -1
  462. package/script/analyzer/steps/003-risks/output.js +0 -19
  463. package/script/analyzer/treesiter/client.d.ts +0 -26
  464. package/script/analyzer/treesiter/client.d.ts.map +0 -1
  465. package/script/analyzer/treesiter/client.js +0 -165
@@ -0,0 +1,183 @@
1
+ // Ported from js-yaml v3.13.1:
2
+ // https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da
3
+ // Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license.
4
+ // Copyright 2018-2026 the Deno authors. MIT license.
5
+ // This module is browser compatible.
6
+
7
+ import type { KindType, Type } from "./_type.js";
8
+ import { binary } from "./_type/binary.js";
9
+ import { bool } from "./_type/bool.js";
10
+ import { float } from "./_type/float.js";
11
+ import { int } from "./_type/int.js";
12
+ import { map } from "./_type/map.js";
13
+ import { merge } from "./_type/merge.js";
14
+ import { nil } from "./_type/nil.js";
15
+ import { omap } from "./_type/omap.js";
16
+ import { pairs } from "./_type/pairs.js";
17
+ import { regexp } from "./_type/regexp.js";
18
+ import { seq } from "./_type/seq.js";
19
+ import { set } from "./_type/set.js";
20
+ import { str } from "./_type/str.js";
21
+ import { timestamp } from "./_type/timestamp.js";
22
+ import { undefinedType } from "./_type/undefined.js";
23
+
24
+ /**
25
+ * Name of the schema to use.
26
+ *
27
+ * > [!NOTE]
28
+ * > It is recommended to use the schema that is most appropriate for your use
29
+ * > case. Doing so will avoid any unnecessary processing and benefit
30
+ * > performance.
31
+ *
32
+ * Options include:
33
+ * - `failsafe`: supports generic mappings, generic sequences and generic
34
+ * strings.
35
+ * - `json`: extends `failsafe` schema by also supporting nulls, booleans,
36
+ * integers and floats.
37
+ * - `core`: functionally the same as `json` schema.
38
+ * - `default`: extends `core` schema by also supporting binary, omap, pairs and
39
+ * set types.
40
+ * - `extended`: extends `default` schema by also supporting regular
41
+ * expressions and undefined values.
42
+ *
43
+ * See
44
+ * {@link https://yaml.org/spec/1.2.2/#chapter-10-recommended-schemas | YAML 1.2 spec}
45
+ * for more details on the `failsafe`, `json` and `core` schemas.
46
+ */
47
+ export type SchemaType = "failsafe" | "json" | "core" | "default" | "extended";
48
+
49
+ /**
50
+ * A type that can be implicitly resolved (i.e. without using a tag) when
51
+ * loading a YAML document.
52
+ */
53
+ export type ImplicitType = Type<"scalar">;
54
+ export type ExplicitType = Type<KindType>;
55
+
56
+ export type TypeMap = Record<
57
+ KindType | "fallback",
58
+ Map<string, ExplicitType>
59
+ >;
60
+
61
+ function createTypeMap(
62
+ implicitTypes: ImplicitType[],
63
+ explicitTypes: ExplicitType[],
64
+ ): TypeMap {
65
+ const result: TypeMap = {
66
+ fallback: new Map(),
67
+ mapping: new Map(),
68
+ scalar: new Map(),
69
+ sequence: new Map(),
70
+ };
71
+ const fallbackMap = result.fallback;
72
+ for (const type of [...implicitTypes, ...explicitTypes]) {
73
+ const map = result[type.kind];
74
+ map.set(type.tag, type);
75
+ fallbackMap.set(type.tag, type);
76
+ }
77
+ return result;
78
+ }
79
+
80
+ export interface Schema {
81
+ implicitTypes: ImplicitType[];
82
+ explicitTypes: ExplicitType[];
83
+ typeMap: TypeMap;
84
+ }
85
+
86
+ function createSchema({ explicitTypes = [], implicitTypes = [], include }: {
87
+ implicitTypes?: ImplicitType[];
88
+ explicitTypes?: ExplicitType[];
89
+ include?: Schema;
90
+ }): Schema {
91
+ if (include) {
92
+ implicitTypes.push(...include.implicitTypes);
93
+ explicitTypes.push(...include.explicitTypes);
94
+ }
95
+ const typeMap = createTypeMap(implicitTypes, explicitTypes);
96
+ return { implicitTypes, explicitTypes, typeMap };
97
+ }
98
+
99
+ /**
100
+ * Standard YAML's failsafe schema.
101
+ *
102
+ * @see {@link http://www.yaml.org/spec/1.2/spec.html#id2802346}
103
+ */
104
+ const FAILSAFE_SCHEMA = createSchema({
105
+ explicitTypes: [str, seq, map],
106
+ });
107
+
108
+ /**
109
+ * Standard YAML's JSON schema.
110
+ *
111
+ * @see {@link http://www.yaml.org/spec/1.2/spec.html#id2803231}
112
+ */
113
+ const JSON_SCHEMA = createSchema({
114
+ implicitTypes: [nil, bool, int, float],
115
+ include: FAILSAFE_SCHEMA,
116
+ });
117
+
118
+ /**
119
+ * Standard YAML's core schema.
120
+ *
121
+ * @see {@link http://www.yaml.org/spec/1.2/spec.html#id2804923}
122
+ */
123
+ const CORE_SCHEMA = createSchema({
124
+ include: JSON_SCHEMA,
125
+ });
126
+
127
+ /**
128
+ * Default YAML schema. It is not described in the YAML specification.
129
+ */
130
+ export const DEFAULT_SCHEMA = createSchema({
131
+ explicitTypes: [binary, omap, pairs, set],
132
+ implicitTypes: [timestamp, merge],
133
+ include: CORE_SCHEMA,
134
+ });
135
+
136
+ /***
137
+ * Extends JS-YAML default schema with additional JavaScript types
138
+ * It is not described in the YAML specification.
139
+ * Functions are no longer supported for security reasons.
140
+ *
141
+ * @example
142
+ * ```ts
143
+ * import { parse } from "@std/yaml";
144
+ *
145
+ * const data = parse(
146
+ * `
147
+ * regexp:
148
+ * simple: !!js/regexp foobar
149
+ * modifiers: !!js/regexp /foobar/mi
150
+ * undefined: !!js/undefined ~
151
+ * `,
152
+ * { schema: "extended" },
153
+ * );
154
+ * ```
155
+ */
156
+ const EXTENDED_SCHEMA = createSchema({
157
+ explicitTypes: [regexp, undefinedType],
158
+ include: DEFAULT_SCHEMA,
159
+ });
160
+
161
+ export const SCHEMA_MAP = new Map<SchemaType, Schema>([
162
+ ["core", CORE_SCHEMA],
163
+ ["default", DEFAULT_SCHEMA],
164
+ ["failsafe", FAILSAFE_SCHEMA],
165
+ ["json", JSON_SCHEMA],
166
+ ["extended", EXTENDED_SCHEMA],
167
+ ]);
168
+
169
+ export function getSchema(
170
+ schema: SchemaType = "default",
171
+ types?: ImplicitType[],
172
+ ): Schema {
173
+ const schemaObj = SCHEMA_MAP.get(schema)!;
174
+
175
+ if (!types) {
176
+ return schemaObj;
177
+ }
178
+
179
+ return createSchema({
180
+ implicitTypes: [...types, ...schemaObj.implicitTypes],
181
+ explicitTypes: [...schemaObj.explicitTypes],
182
+ });
183
+ }
@@ -0,0 +1,127 @@
1
+ // Ported from js-yaml v3.13.1:
2
+ // Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license.
3
+ // https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da
4
+ // Copyright 2018-2026 the Deno authors. MIT license.
5
+ import type { Type } from "../_type.js";
6
+
7
+ // [ 64, 65, 66 ] -> [ padding, CR, LF ]
8
+ const BASE64_MAP =
9
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";
10
+
11
+ function resolveYamlBinary(data: string): boolean {
12
+ if (data === null) return false;
13
+
14
+ let code: number;
15
+ let bitlen = 0;
16
+ const max = data.length;
17
+ const map = BASE64_MAP;
18
+
19
+ // Convert one by one.
20
+ for (let idx = 0; idx < max; idx++) {
21
+ code = map.indexOf(data.charAt(idx));
22
+
23
+ // Skip CR/LF
24
+ if (code > 64) continue;
25
+
26
+ // Fail on illegal characters
27
+ if (code < 0) return false;
28
+
29
+ bitlen += 6;
30
+ }
31
+
32
+ // If there are any bits left, source was corrupted
33
+ return bitlen % 8 === 0;
34
+ }
35
+
36
+ function constructYamlBinary(data: string): Uint8Array {
37
+ // remove CR/LF & padding to simplify scan
38
+ const input = data.replace(/[\r\n=]/g, "");
39
+ const max = input.length;
40
+ const map = BASE64_MAP;
41
+
42
+ // Collect by 6*4 bits (3 bytes)
43
+
44
+ const result = [];
45
+ let bits = 0;
46
+ for (let idx = 0; idx < max; idx++) {
47
+ if (idx % 4 === 0 && idx) {
48
+ result.push((bits >> 16) & 0xff);
49
+ result.push((bits >> 8) & 0xff);
50
+ result.push(bits & 0xff);
51
+ }
52
+
53
+ bits = (bits << 6) | map.indexOf(input.charAt(idx));
54
+ }
55
+
56
+ // Dump tail
57
+
58
+ const tailbits = (max % 4) * 6;
59
+
60
+ if (tailbits === 0) {
61
+ result.push((bits >> 16) & 0xff);
62
+ result.push((bits >> 8) & 0xff);
63
+ result.push(bits & 0xff);
64
+ } else if (tailbits === 18) {
65
+ result.push((bits >> 10) & 0xff);
66
+ result.push((bits >> 2) & 0xff);
67
+ } else if (tailbits === 12) {
68
+ result.push((bits >> 4) & 0xff);
69
+ }
70
+
71
+ return new Uint8Array(result);
72
+ }
73
+
74
+ function representYamlBinary(object: Uint8Array): string {
75
+ const max = object.length;
76
+ const map = BASE64_MAP;
77
+
78
+ // Convert every three bytes to 4 ASCII characters.
79
+
80
+ let result = "";
81
+ let bits = 0;
82
+ for (let idx = 0; idx < max; idx++) {
83
+ if (idx % 3 === 0 && idx) {
84
+ result += map[(bits >> 18) & 0x3f];
85
+ result += map[(bits >> 12) & 0x3f];
86
+ result += map[(bits >> 6) & 0x3f];
87
+ result += map[bits & 0x3f];
88
+ }
89
+
90
+ bits = (bits << 8) + object[idx]!;
91
+ }
92
+
93
+ // Dump tail
94
+
95
+ const tail = max % 3;
96
+
97
+ if (tail === 0) {
98
+ result += map[(bits >> 18) & 0x3f];
99
+ result += map[(bits >> 12) & 0x3f];
100
+ result += map[(bits >> 6) & 0x3f];
101
+ result += map[bits & 0x3f];
102
+ } else if (tail === 2) {
103
+ result += map[(bits >> 10) & 0x3f];
104
+ result += map[(bits >> 4) & 0x3f];
105
+ result += map[(bits << 2) & 0x3f];
106
+ result += map[64];
107
+ } else if (tail === 1) {
108
+ result += map[(bits >> 2) & 0x3f];
109
+ result += map[(bits << 4) & 0x3f];
110
+ result += map[64];
111
+ result += map[64];
112
+ }
113
+
114
+ return result;
115
+ }
116
+ function isBinary(obj: unknown): obj is Uint8Array {
117
+ return obj instanceof Uint8Array;
118
+ }
119
+
120
+ export const binary: Type<"scalar", Uint8Array> = {
121
+ tag: "tag:yaml.org,2002:binary",
122
+ construct: constructYamlBinary,
123
+ kind: "scalar",
124
+ predicate: isBinary,
125
+ represent: representYamlBinary,
126
+ resolve: resolveYamlBinary,
127
+ };
@@ -0,0 +1,37 @@
1
+ // Ported from js-yaml v3.13.1:
2
+ // https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da
3
+ // Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license.
4
+ // Copyright 2018-2026 the Deno authors. MIT license.
5
+
6
+ import type { Type } from "../_type.js";
7
+
8
+ const YAML_TRUE_BOOLEANS = ["true", "True", "TRUE"];
9
+ const YAML_FALSE_BOOLEANS = ["false", "False", "FALSE"];
10
+ const YAML_BOOLEANS = [...YAML_TRUE_BOOLEANS, ...YAML_FALSE_BOOLEANS];
11
+
12
+ export const bool: Type<"scalar", boolean> = {
13
+ tag: "tag:yaml.org,2002:bool",
14
+ kind: "scalar",
15
+ defaultStyle: "lowercase",
16
+ predicate: (value: unknown): value is boolean =>
17
+ typeof value === "boolean" || value instanceof Boolean,
18
+ construct: (data: string): boolean => YAML_TRUE_BOOLEANS.includes(data),
19
+ resolve: (data: string): boolean => YAML_BOOLEANS.includes(data),
20
+ represent: {
21
+ // deno-lint-ignore ban-types
22
+ lowercase: (object: boolean | Boolean): string => {
23
+ const value = object instanceof Boolean ? object.valueOf() : object;
24
+ return value ? "true" : "false";
25
+ },
26
+ // deno-lint-ignore ban-types
27
+ uppercase: (object: boolean | Boolean): string => {
28
+ const value = object instanceof Boolean ? object.valueOf() : object;
29
+ return value ? "TRUE" : "FALSE";
30
+ },
31
+ // deno-lint-ignore ban-types
32
+ camelcase: (object: boolean | Boolean): string => {
33
+ const value = object instanceof Boolean ? object.valueOf() : object;
34
+ return value ? "True" : "False";
35
+ },
36
+ },
37
+ };
@@ -0,0 +1,112 @@
1
+ // Ported from js-yaml v3.13.1:
2
+ // https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da
3
+ // Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license.
4
+ // Copyright 2018-2026 the Deno authors. MIT license.
5
+
6
+ import type { StyleVariant, Type } from "../_type.js";
7
+ import { isNegativeZero } from "../_utils.js";
8
+
9
+ const YAML_FLOAT_PATTERN = new RegExp(
10
+ // 2.5e4, 2.5 and integers
11
+ "^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?" +
12
+ // .2e4, .2
13
+ // special case, seems not from spec
14
+ "|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?" +
15
+ // .inf
16
+ "|[-+]?\\.(?:inf|Inf|INF)" +
17
+ // .nan
18
+ "|\\.(?:nan|NaN|NAN))$",
19
+ );
20
+
21
+ function resolveYamlFloat(data: string): boolean {
22
+ if (
23
+ !YAML_FLOAT_PATTERN.test(data) ||
24
+ // Quick hack to not allow integers end with `_`
25
+ // Probably should update regexp & check speed
26
+ data[data.length - 1] === "_"
27
+ ) {
28
+ return false;
29
+ }
30
+
31
+ return true;
32
+ }
33
+
34
+ function constructYamlFloat(data: string): number {
35
+ let value = data.replace(/_/g, "").toLowerCase();
36
+ const sign = value[0] === "-" ? -1 : 1;
37
+
38
+ if (value[0] && "+-".includes(value[0])) {
39
+ value = value.slice(1);
40
+ }
41
+
42
+ if (value === ".inf") {
43
+ return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;
44
+ }
45
+ if (value === ".nan") {
46
+ return NaN;
47
+ }
48
+ return sign * parseFloat(value);
49
+ }
50
+
51
+ const SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;
52
+
53
+ function representYamlFloat(
54
+ // deno-lint-ignore ban-types
55
+ object: number | Number,
56
+ style?: StyleVariant,
57
+ ): string {
58
+ const value = object instanceof Number ? object.valueOf() : object;
59
+ if (isNaN(value)) {
60
+ switch (style) {
61
+ case "lowercase":
62
+ return ".nan";
63
+ case "uppercase":
64
+ return ".NAN";
65
+ case "camelcase":
66
+ return ".NaN";
67
+ }
68
+ } else if (Number.POSITIVE_INFINITY === value) {
69
+ switch (style) {
70
+ case "lowercase":
71
+ return ".inf";
72
+ case "uppercase":
73
+ return ".INF";
74
+ case "camelcase":
75
+ return ".Inf";
76
+ }
77
+ } else if (Number.NEGATIVE_INFINITY === value) {
78
+ switch (style) {
79
+ case "lowercase":
80
+ return "-.inf";
81
+ case "uppercase":
82
+ return "-.INF";
83
+ case "camelcase":
84
+ return "-.Inf";
85
+ }
86
+ } else if (isNegativeZero(value)) {
87
+ return "-0.0";
88
+ }
89
+
90
+ const res = value.toString(10);
91
+
92
+ // JS stringifier can build scientific format without dots: 5e-100,
93
+ // while YAML requires dot: 5.e-100. Fix it with simple hack
94
+
95
+ return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace("e", ".e") : res;
96
+ }
97
+
98
+ function isFloat(object: unknown): object is number {
99
+ if (object instanceof Number) object = object.valueOf();
100
+ return typeof object === "number" &&
101
+ (object % 1 !== 0 || isNegativeZero(object));
102
+ }
103
+
104
+ export const float: Type<"scalar", number> = {
105
+ tag: "tag:yaml.org,2002:float",
106
+ construct: constructYamlFloat,
107
+ defaultStyle: "lowercase",
108
+ kind: "scalar",
109
+ predicate: isFloat,
110
+ represent: representYamlFloat,
111
+ resolve: resolveYamlFloat,
112
+ };
@@ -0,0 +1,174 @@
1
+ // Ported from js-yaml v3.13.1:
2
+ // https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da
3
+ // Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license.
4
+ // Copyright 2018-2026 the Deno authors. MIT license.
5
+
6
+ import type { Type } from "../_type.js";
7
+ import { isNegativeZero } from "../_utils.js";
8
+
9
+ function isCharCodeInRange(c: number, lower: number, upper: number): boolean {
10
+ return lower <= c && c <= upper;
11
+ }
12
+
13
+ function isHexCode(c: number): boolean {
14
+ return (
15
+ isCharCodeInRange(c, 0x30, 0x39) || // 0-9
16
+ isCharCodeInRange(c, 0x41, 0x46) || // A-F
17
+ isCharCodeInRange(c, 0x61, 0x66) // a-f
18
+ );
19
+ }
20
+
21
+ function isOctCode(c: number): boolean {
22
+ return isCharCodeInRange(c, 0x30, 0x37); // 0-7
23
+ }
24
+
25
+ function isDecCode(c: number): boolean {
26
+ return isCharCodeInRange(c, 0x30, 0x39); // 0-9
27
+ }
28
+
29
+ function resolveYamlInteger(data: string): boolean {
30
+ const max = data.length;
31
+ let index = 0;
32
+ let hasDigits = false;
33
+
34
+ if (!max) return false;
35
+
36
+ let ch = data[index];
37
+
38
+ // sign
39
+ if (ch === "-" || ch === "+") {
40
+ ch = data[++index];
41
+ }
42
+
43
+ if (ch === "0") {
44
+ // 0
45
+ if (index + 1 === max) return true;
46
+ ch = data[++index];
47
+
48
+ // base 2, base 8, base 16
49
+
50
+ if (ch === "b") {
51
+ // base 2
52
+ index++;
53
+
54
+ for (; index < max; index++) {
55
+ ch = data[index];
56
+ if (ch === "_") continue;
57
+ if (ch !== "0" && ch !== "1") return false;
58
+ hasDigits = true;
59
+ }
60
+ return hasDigits && ch !== "_";
61
+ }
62
+
63
+ if (ch === "x") {
64
+ // base 16
65
+ index++;
66
+
67
+ for (; index < max; index++) {
68
+ ch = data[index];
69
+ if (ch === "_") continue;
70
+ if (!isHexCode(data.charCodeAt(index))) return false;
71
+ hasDigits = true;
72
+ }
73
+ return hasDigits && ch !== "_";
74
+ }
75
+
76
+ // base 8
77
+ for (; index < max; index++) {
78
+ ch = data[index];
79
+ if (ch === "_") continue;
80
+ if (!isOctCode(data.charCodeAt(index))) return false;
81
+ hasDigits = true;
82
+ }
83
+ return hasDigits && ch !== "_";
84
+ }
85
+
86
+ // base 10 (except 0) or base 60
87
+
88
+ // value should not start with `_`;
89
+ if (ch === "_") return false;
90
+
91
+ for (; index < max; index++) {
92
+ ch = data[index];
93
+ if (ch === "_") continue;
94
+ if (!isDecCode(data.charCodeAt(index))) {
95
+ return false;
96
+ }
97
+ hasDigits = true;
98
+ }
99
+
100
+ // Should have digits and should not end with `_`
101
+ if (!hasDigits || ch === "_") return false;
102
+
103
+ // base60 almost not used, no needs to optimize
104
+ return /^(:[0-5]?[0-9])+$/.test(data.slice(index));
105
+ }
106
+
107
+ function constructYamlInteger(data: string): number {
108
+ let value = data;
109
+
110
+ if (value.includes("_")) {
111
+ value = value.replace(/_/g, "");
112
+ }
113
+
114
+ let sign = 1;
115
+ let ch = value[0];
116
+ if (ch === "-" || ch === "+") {
117
+ if (ch === "-") sign = -1;
118
+ value = value.slice(1);
119
+ ch = value[0];
120
+ }
121
+
122
+ if (value === "0") return 0;
123
+
124
+ if (ch === "0") {
125
+ if (value[1] === "b") return sign * parseInt(value.slice(2), 2);
126
+ if (value[1] === "x") return sign * parseInt(value, 16);
127
+ return sign * parseInt(value, 8);
128
+ }
129
+
130
+ return sign * parseInt(value, 10);
131
+ }
132
+
133
+ function isInteger(object: unknown): object is number {
134
+ if (object instanceof Number) object = object.valueOf();
135
+ return typeof object === "number" && object % 1 === 0 &&
136
+ !isNegativeZero(object);
137
+ }
138
+
139
+ export const int: Type<"scalar", number> = {
140
+ tag: "tag:yaml.org,2002:int",
141
+ construct: constructYamlInteger,
142
+ defaultStyle: "decimal",
143
+ kind: "scalar",
144
+ predicate: isInteger,
145
+ represent: {
146
+ // deno-lint-ignore ban-types
147
+ binary(object: number | Number): string {
148
+ const value = object instanceof Number ? object.valueOf() : object;
149
+ return value >= 0
150
+ ? `0b${value.toString(2)}`
151
+ : `-0b${value.toString(2).slice(1)}`;
152
+ },
153
+ // deno-lint-ignore ban-types
154
+ octal(object: number | Number): string {
155
+ const value = object instanceof Number ? object.valueOf() : object;
156
+ return value >= 0
157
+ ? `0${value.toString(8)}`
158
+ : `-0${value.toString(8).slice(1)}`;
159
+ },
160
+ // deno-lint-ignore ban-types
161
+ decimal(object: number | Number): string {
162
+ const value = object instanceof Number ? object.valueOf() : object;
163
+ return value.toString(10);
164
+ },
165
+ // deno-lint-ignore ban-types
166
+ hexadecimal(object: number | Number): string {
167
+ const value = object instanceof Number ? object.valueOf() : object;
168
+ return value >= 0
169
+ ? `0x${value.toString(16).toUpperCase()}`
170
+ : `-0x${value.toString(16).toUpperCase().slice(1)}`;
171
+ },
172
+ },
173
+ resolve: resolveYamlInteger,
174
+ };
@@ -0,0 +1,17 @@
1
+ // Ported from js-yaml v3.13.1:
2
+ // https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da
3
+ // Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license.
4
+ // Copyright 2018-2026 the Deno authors. MIT license.
5
+
6
+ import type { Type } from "../_type.js";
7
+
8
+ export const map: Type<"mapping", unknown> = {
9
+ tag: "tag:yaml.org,2002:map",
10
+ resolve() {
11
+ return true;
12
+ },
13
+ construct(data) {
14
+ return data !== null ? data : {};
15
+ },
16
+ kind: "mapping",
17
+ };
@@ -0,0 +1,13 @@
1
+ // Ported from js-yaml v3.13.1:
2
+ // https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da
3
+ // Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license.
4
+ // Copyright 2018-2026 the Deno authors. MIT license.
5
+
6
+ import type { Type } from "../_type.js";
7
+
8
+ export const merge: Type<"scalar", unknown> = {
9
+ tag: "tag:yaml.org,2002:merge",
10
+ kind: "scalar",
11
+ resolve: (data: unknown): boolean => data === "<<" || data === null,
12
+ construct: (data: unknown): unknown => data,
13
+ };
@@ -0,0 +1,27 @@
1
+ // Ported from js-yaml v3.13.1:
2
+ // https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da
3
+ // Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license.
4
+ // Copyright 2018-2026 the Deno authors. MIT license.
5
+
6
+ import type { Type } from "../_type.js";
7
+
8
+ export const nil: Type<"scalar", null> = {
9
+ tag: "tag:yaml.org,2002:null",
10
+ kind: "scalar",
11
+ defaultStyle: "lowercase",
12
+ predicate: (object: unknown): object is null => object === null,
13
+ construct: () => null,
14
+ resolve: (data: string): boolean => {
15
+ return (
16
+ data === "~" ||
17
+ data === "null" ||
18
+ data === "Null" ||
19
+ data === "NULL"
20
+ );
21
+ },
22
+ represent: {
23
+ lowercase: (): string => "null",
24
+ uppercase: (): string => "NULL",
25
+ camelcase: (): string => "Null",
26
+ },
27
+ };