@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,165 @@
1
+ /**
2
+ * Shared grammar registry for web-tree-sitter WASM grammars.
3
+ *
4
+ * Used by both AstGrepClient and TreesitterClient. Grammar .wasm files are
5
+ * downloaded from GitHub Releases on first use and cached locally following
6
+ * the XDG cache directory convention.
7
+ *
8
+ * Cache location (in priority order):
9
+ * 1. $SKILL_LAB_CACHE_DIR
10
+ * 2. $XDG_CACHE_HOME/skill-lab
11
+ * 3. ~/.cache/skill-lab (Linux/macOS)
12
+ * %LOCALAPPDATA%\skill-lab\Cache (Windows)
13
+ */
14
+ import * as dntShim from "../../_dnt.shims.js";
15
+ import { join } from "../../deps/jsr.io/@std/path/1.1.4/mod.js";
16
+ import ProgressBar from "../../deps/jsr.io/@deno-library/progress/1.5.1/mod.js";
17
+ const TREESITTER_GRAMMER_SUBDIR = "treesitter/grammars";
18
+ const ANSI_CLEAR_LINE = "\r\x1b[K";
19
+ const ENCODER = new TextEncoder();
20
+ /**
21
+ * Grammar specifications. All URLs are exact version-pinned to ensure
22
+ * ABI compatibility with web-tree-sitter@0.25.4.
23
+ *
24
+ * Grammar .wasm files are compiled by the tree-sitter CLI against a specific
25
+ * WASM ABI. Mixing grammar versions with a different web-tree-sitter version
26
+ * causes silent parse failures, so both must be pinned together.
27
+ */
28
+ export const GRAMMAR_SPECS = {
29
+ bash: {
30
+ filename: "bash.wasm",
31
+ url: "https://github.com/tree-sitter/tree-sitter-bash/releases/download/v0.25.1/tree-sitter-bash.wasm",
32
+ },
33
+ javascript: {
34
+ filename: "javascript.wasm",
35
+ url: "https://github.com/tree-sitter/tree-sitter-javascript/releases/download/v0.25.0/tree-sitter-javascript.wasm",
36
+ },
37
+ python: {
38
+ filename: "python.wasm",
39
+ url: "https://github.com/tree-sitter/tree-sitter-python/releases/download/v0.25.0/tree-sitter-python.wasm",
40
+ },
41
+ typescript: {
42
+ filename: "typescript.wasm",
43
+ url: "https://github.com/tree-sitter/tree-sitter-typescript/releases/download/v0.23.2/tree-sitter-typescript.wasm",
44
+ },
45
+ tsx: {
46
+ filename: "tsx.wasm",
47
+ url: "https://github.com/tree-sitter/tree-sitter-typescript/releases/download/v0.23.2/tree-sitter-tsx.wasm",
48
+ },
49
+ markdown: {
50
+ filename: "markdown.wasm",
51
+ url: "https://github.com/tree-sitter-grammars/tree-sitter-markdown/releases/download/v0.5.2/tree-sitter-markdown.wasm",
52
+ },
53
+ "markdown-inline": {
54
+ filename: "markdown_inline.wasm",
55
+ url: "https://github.com/tree-sitter-grammars/tree-sitter-markdown/releases/download/v0.5.2/tree-sitter-markdown_inline.wasm",
56
+ },
57
+ };
58
+ /**
59
+ * Returns the skill-lab cache directory, following XDG conventions.
60
+ *
61
+ * Priority:
62
+ * 1. $SKILL_LAB_CACHE_DIR — explicit override
63
+ * 2. $XDG_CACHE_HOME/skill-lab — if XDG_CACHE_HOME is set
64
+ * 3. Platform default:
65
+ * Linux/macOS: ~/.cache/skill-lab
66
+ * Windows: %LOCALAPPDATA%\skill-lab\Cache
67
+ */
68
+ export function getCacheDir() {
69
+ const explicit = dntShim.Deno.env.get("SKILL_LAB_CACHE_DIR");
70
+ if (explicit)
71
+ return explicit;
72
+ const xdgCache = dntShim.Deno.env.get("XDG_CACHE_HOME");
73
+ if (xdgCache)
74
+ return join(xdgCache, "skill-lab");
75
+ if (dntShim.Deno.build.os === "windows") {
76
+ const localAppData = dntShim.Deno.env.get("LOCALAPPDATA");
77
+ if (localAppData)
78
+ return join(localAppData, "skill-lab", "Cache");
79
+ const userProfile = dntShim.Deno.env.get("USERPROFILE") ?? "~";
80
+ return join(userProfile, "AppData", "Local", "skill-lab", "Cache");
81
+ }
82
+ const home = dntShim.Deno.env.get("HOME") ?? "~";
83
+ return join(home, ".cache", "skill-lab");
84
+ }
85
+ /**
86
+ * Ensures a grammar .wasm file is present in the local cache.
87
+ *
88
+ * On first call for a given language, downloads the file from the pinned URL
89
+ * in GRAMMAR_SPECS. Subsequent calls return immediately from cache.
90
+ *
91
+ * @param lang - Language key (e.g. "bash", "typescript", "markdown-inline")
92
+ * @param opts.logger - Optional logger for download events
93
+ * @returns Absolute path to the cached .wasm file
94
+ */
95
+ export async function ensureGrammar(lang, opts) {
96
+ if (!(lang in GRAMMAR_SPECS)) {
97
+ throw new Error(`No grammar spec for language: "${lang}". Available: ${Object.keys(GRAMMAR_SPECS).join(", ")}`);
98
+ }
99
+ const spec = GRAMMAR_SPECS[lang];
100
+ const cacheDir = join(getCacheDir(), TREESITTER_GRAMMER_SUBDIR);
101
+ const cachedPath = join(cacheDir, spec.filename);
102
+ // Return immediately if already cached
103
+ try {
104
+ const stat = await dntShim.Deno.stat(cachedPath);
105
+ if (stat.isFile)
106
+ return cachedPath;
107
+ }
108
+ catch {
109
+ // Not cached yet — fall through to download
110
+ }
111
+ // Download and write to cache
112
+ await dntShim.Deno.mkdir(cacheDir, { recursive: true });
113
+ if (dntShim.Deno.stderr.isTerminal()) {
114
+ dntShim.Deno.stderr.writeSync(ENCODER.encode(ANSI_CLEAR_LINE));
115
+ }
116
+ const resp = await fetch(spec.url);
117
+ if (!resp.ok) {
118
+ throw new Error(`Failed to download grammar ${spec.filename}: HTTP ${resp.status} from ${spec.url}`);
119
+ }
120
+ const shouldRenderProgress = (opts?.showProgressBar ?? false) && dntShim.Deno.stdout.isTerminal();
121
+ const contentLenHeader = resp.headers.get("content-length");
122
+ const contentLen = parseInt(contentLenHeader);
123
+ const scanBar = shouldRenderProgress
124
+ ? new ProgressBar({
125
+ total: contentLen,
126
+ clear: true,
127
+ output: dntShim.Deno.stderr,
128
+ complete: "=",
129
+ incomplete: "-",
130
+ display: `Installing ${lang} grammar [:bar] :percent ETA :eta`,
131
+ })
132
+ : null;
133
+ let bytes;
134
+ try {
135
+ if (!resp.body) {
136
+ bytes = new Uint8Array(await resp.arrayBuffer());
137
+ }
138
+ else {
139
+ const reader = resp.body.getReader();
140
+ const chunks = [];
141
+ let received = 0;
142
+ while (true) {
143
+ const { value, done } = await reader.read();
144
+ if (done)
145
+ break;
146
+ if (!value)
147
+ continue;
148
+ chunks.push(value);
149
+ received += value.byteLength;
150
+ scanBar?.render(received);
151
+ }
152
+ bytes = new Uint8Array(received);
153
+ let offset = 0;
154
+ for (const chunk of chunks) {
155
+ bytes.set(chunk, offset);
156
+ offset += chunk.byteLength;
157
+ }
158
+ }
159
+ }
160
+ finally {
161
+ scanBar?.end();
162
+ }
163
+ await dntShim.Deno.writeFile(cachedPath, bytes);
164
+ return cachedPath;
165
+ }
@@ -1,11 +1,14 @@
1
1
  import type { SkillFile, SkillReader } from "../skillreader/mod.js";
2
2
  import type { FileRefDiscoveryMethod, FileReference, FileType, Finding, Frontmatter, Permission, Reference, ReferenceType, Risk } from "../shared/mod.js";
3
3
  import { AstGrepClient } from "./astgrep/client.js";
4
- import { TreesitterClient } from "./treesiter/client.js";
5
- export type AnalyzerConfig = {
6
- maxFileSize: number;
7
- maxFileCount: number;
8
- maxScanDepth: number;
4
+ import { TreesitterClient } from "./treesitter/client.js";
5
+ import type { AnalyzerConfig, ScanConfig } from "./config/mod.js";
6
+ export type { AnalyzerConfig, ScanConfig };
7
+ export type AnalyzerLogger = {
8
+ debug: (template: string, props?: Record<string, unknown>) => void;
9
+ info: (template: string, props?: Record<string, unknown>) => void;
10
+ warn: (template: string, props?: Record<string, unknown>) => void;
11
+ error: (template: string, props?: Record<string, unknown>) => void;
9
12
  };
10
13
  export type AnalyzerState = {
11
14
  skillId: string;
@@ -18,41 +21,24 @@ export type AnalyzerState = {
18
21
  risks: Risk[];
19
22
  warnings: string[];
20
23
  metadata: {
21
- scannedFiles: string[];
24
+ scannedFiles: Set<string>;
22
25
  skippedFiles: Array<{
23
26
  path: string;
24
27
  reason: string;
25
28
  referenceBy?: Reference;
26
29
  }>;
27
30
  rulesUsed: string[];
28
- config: AnalyzerConfig;
29
- };
30
- };
31
- export type AnalyzerResult = {
32
- analyzedAt: string;
33
- skillId: string;
34
- skillVersionId: string;
35
- permissions: Permission[];
36
- risks: Risk[];
37
- score: number;
38
- riskLevel: "safe" | "caution" | "attention" | "risky" | "avoid";
39
- summary: string;
40
- warnings: string[];
41
- metadata: {
42
- scannedFiles: string[];
43
- skippedFiles: Array<{
44
- path: string;
45
- reason: string;
46
- }>;
47
- rulesUsed: string[];
48
- frontmatterRangeEnd?: number;
49
- config: AnalyzerConfig;
31
+ config: ScanConfig;
50
32
  };
51
33
  };
52
34
  export type AnalyzerContext = {
53
35
  skillReader: SkillReader;
54
36
  treesitterClient: TreesitterClient;
55
37
  astgrepClient: AstGrepClient;
38
+ logger?: AnalyzerLogger;
39
+ showProgressBar?: boolean;
40
+ /** Resolved (defaults-merged) user config. */
41
+ config: AnalyzerConfig;
56
42
  };
57
43
  /** A file path or package reference discovered in source content. */
58
44
  export type FileRefDiscovery = {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/analyzer/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/analyzer/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { bgGreen, bgWhite, stripAnsiCode } from "../../../@std/fmt/1.0.3/colors.js";
2
+ export { writeAll } from "../../../@std/io/0.225.0/write_all.js";
3
+ //# sourceMappingURL=deps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@deno-library/progress/1.5.1/deps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { bgGreen, bgWhite, stripAnsiCode } from "../../../@std/fmt/1.0.3/colors.js";
2
+ export { writeAll } from "../../../@std/io/0.225.0/write_all.js";
3
+ // export type { Writer } from "jsr:@std/io@0.225.0/types";
@@ -0,0 +1,93 @@
1
+ import * as dntShim from "../../../../../_dnt.shims.js";
2
+ import { type prettyTimeOptions } from "./time.js";
3
+ export { MultiProgressBar } from "./multi.js";
4
+ interface constructorOptions {
5
+ title?: string;
6
+ total?: number;
7
+ width?: number;
8
+ complete?: string;
9
+ preciseBar?: string[];
10
+ incomplete?: string;
11
+ clear?: boolean;
12
+ interval?: number;
13
+ display?: string;
14
+ prettyTime?: boolean;
15
+ output?: typeof dntShim.Deno.stdout | typeof dntShim.Deno.stderr;
16
+ }
17
+ interface renderOptions {
18
+ title?: string;
19
+ total?: number;
20
+ text?: string;
21
+ complete?: string;
22
+ preciseBar?: string[];
23
+ incomplete?: string;
24
+ prettyTimeOptions?: prettyTimeOptions;
25
+ }
26
+ /**
27
+ * ProgressBar single progress bar.
28
+ */
29
+ export default class ProgressBar {
30
+ #private;
31
+ title: string;
32
+ total?: number;
33
+ width: number;
34
+ complete: string;
35
+ preciseBar: string[];
36
+ incomplete: string;
37
+ clear: boolean;
38
+ interval: number;
39
+ display: string;
40
+ prettyTime: boolean;
41
+ private lastStr;
42
+ private lastStrLen;
43
+ private start;
44
+ private lastRenderTime;
45
+ private encoder;
46
+ private writer;
47
+ /**
48
+ * Title, total, complete, incomplete, can also be set or changed in the render method
49
+ *
50
+ * - title Progress bar title, default: ''
51
+ * - total total number of ticks to complete,
52
+ * - width the displayed width of the progress, default: 50
53
+ * - complete completion character, default: colors.bgGreen(' '), can use any string
54
+ * - incomplete incomplete character, default: colors.bgWhite(' '), can use any string
55
+ * - clear clear the bar on completion, default: false
56
+ * - interval minimum time between updates in milliseconds, default: 16
57
+ * - display What is displayed and display order, default: ':title :percent :bar :time :completed/:total'
58
+ * - prettyTime Whether to pretty print time and eta
59
+ * - output Output stream, can be Deno.stdout or Deno.stderr, default is Deno.stdout
60
+ */
61
+ constructor({ title, total, width, complete, preciseBar, incomplete, clear, interval, display, prettyTime, output, }?: constructorOptions);
62
+ /**
63
+ * "render" the progress bar
64
+ *
65
+ * - `completed` completed value
66
+ * - `options` optional parameters
67
+ * - `title` progress bar title
68
+ * - `total` total number of ticks to complete
69
+ * - `text` optional, custom text, default: ''
70
+ * - `complete` completion character, If you want to change at a certain moment. For example, it turns red at 20%
71
+ * - `incomplete` incomplete character, If you want to change at a certain moment. For example, it turns red at 20%
72
+ * - `prettyTimeOptions` prettyTime options
73
+ */
74
+ render(completed: number, options?: renderOptions): Promise<void>;
75
+ /**
76
+ * end: end a progress bar.
77
+ * No need to call in most cases, unless you want to end before 100%
78
+ */
79
+ end(): Promise<void>;
80
+ /**
81
+ * interrupt the progress bar and write a message above it
82
+ *
83
+ * @param message The message to write
84
+ */
85
+ console(message: string | number): Promise<void>;
86
+ private write;
87
+ private get ttyColumns();
88
+ private breakLine;
89
+ private stdoutWrite;
90
+ private clearLine;
91
+ private showCursor;
92
+ }
93
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@deno-library/progress/1.5.1/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAC;AAIxD,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAU9C,UAAU,kBAAkB;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;CAClE;AAED,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,WAAW;;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IAGpB,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,OAAO,CAAqB;IAGpC,OAAO,CAAC,MAAM,CAA0D;IAExE;;;;;;;;;;;;;OAaG;gBACS,EACV,KAAU,EACV,KAAK,EACL,KAAU,EACV,QAAuB,EACvB,UAAe,EACf,UAAyB,EACzB,KAAa,EACb,QAAa,EACb,OAAO,EACP,UAAkB,EAClB,MAA4B,GAC7B,GAAE,kBAAuB;IAgB1B;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqF3E;;;OAGG;IACG,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAa1B;;;;OAIG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtD,OAAO,CAAC,KAAK;IAIb,OAAO,KAAK,UAAU,GAGrB;IAED,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,UAAU;CAGnB"}
@@ -0,0 +1,297 @@
1
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
+ };
6
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
7
+ if (kind === "m") throw new TypeError("Private method is not writable");
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
10
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
11
+ };
12
+ var _ProgressBar_end;
13
+ import * as dntShim from "../../../../../_dnt.shims.js";
14
+ import { bgGreen, bgWhite, stripAnsiCode } from "./deps.js";
15
+ import { writeAll } from "./deps.js";
16
+ // import type { Writer } from "./deps.ts";
17
+ import { prettyTime } from "./time.js";
18
+ export { MultiProgressBar } from "./multi.js";
19
+ const isTerminal = dntShim.Deno.stdout.isTerminal;
20
+ var Direction;
21
+ (function (Direction) {
22
+ Direction[Direction["left"] = 0] = "left";
23
+ Direction[Direction["right"] = 1] = "right";
24
+ Direction[Direction["all"] = 2] = "all";
25
+ })(Direction || (Direction = {}));
26
+ /**
27
+ * ProgressBar single progress bar.
28
+ */
29
+ class ProgressBar {
30
+ /**
31
+ * Title, total, complete, incomplete, can also be set or changed in the render method
32
+ *
33
+ * - title Progress bar title, default: ''
34
+ * - total total number of ticks to complete,
35
+ * - width the displayed width of the progress, default: 50
36
+ * - complete completion character, default: colors.bgGreen(' '), can use any string
37
+ * - incomplete incomplete character, default: colors.bgWhite(' '), can use any string
38
+ * - clear clear the bar on completion, default: false
39
+ * - interval minimum time between updates in milliseconds, default: 16
40
+ * - display What is displayed and display order, default: ':title :percent :bar :time :completed/:total'
41
+ * - prettyTime Whether to pretty print time and eta
42
+ * - output Output stream, can be Deno.stdout or Deno.stderr, default is Deno.stdout
43
+ */
44
+ constructor({ title = "", total, width = 50, complete = bgGreen(" "), preciseBar = [], incomplete = bgWhite(" "), clear = false, interval = 16, display, prettyTime = false, output = dntShim.Deno.stdout, } = {}) {
45
+ Object.defineProperty(this, "title", {
46
+ enumerable: true,
47
+ configurable: true,
48
+ writable: true,
49
+ value: void 0
50
+ });
51
+ Object.defineProperty(this, "total", {
52
+ enumerable: true,
53
+ configurable: true,
54
+ writable: true,
55
+ value: void 0
56
+ });
57
+ Object.defineProperty(this, "width", {
58
+ enumerable: true,
59
+ configurable: true,
60
+ writable: true,
61
+ value: void 0
62
+ });
63
+ Object.defineProperty(this, "complete", {
64
+ enumerable: true,
65
+ configurable: true,
66
+ writable: true,
67
+ value: void 0
68
+ });
69
+ Object.defineProperty(this, "preciseBar", {
70
+ enumerable: true,
71
+ configurable: true,
72
+ writable: true,
73
+ value: void 0
74
+ });
75
+ Object.defineProperty(this, "incomplete", {
76
+ enumerable: true,
77
+ configurable: true,
78
+ writable: true,
79
+ value: void 0
80
+ });
81
+ Object.defineProperty(this, "clear", {
82
+ enumerable: true,
83
+ configurable: true,
84
+ writable: true,
85
+ value: void 0
86
+ });
87
+ Object.defineProperty(this, "interval", {
88
+ enumerable: true,
89
+ configurable: true,
90
+ writable: true,
91
+ value: void 0
92
+ });
93
+ Object.defineProperty(this, "display", {
94
+ enumerable: true,
95
+ configurable: true,
96
+ writable: true,
97
+ value: void 0
98
+ });
99
+ Object.defineProperty(this, "prettyTime", {
100
+ enumerable: true,
101
+ configurable: true,
102
+ writable: true,
103
+ value: void 0
104
+ });
105
+ _ProgressBar_end.set(this, false);
106
+ Object.defineProperty(this, "lastStr", {
107
+ enumerable: true,
108
+ configurable: true,
109
+ writable: true,
110
+ value: ""
111
+ });
112
+ Object.defineProperty(this, "lastStrLen", {
113
+ enumerable: true,
114
+ configurable: true,
115
+ writable: true,
116
+ value: 0
117
+ });
118
+ Object.defineProperty(this, "start", {
119
+ enumerable: true,
120
+ configurable: true,
121
+ writable: true,
122
+ value: Date.now()
123
+ });
124
+ Object.defineProperty(this, "lastRenderTime", {
125
+ enumerable: true,
126
+ configurable: true,
127
+ writable: true,
128
+ value: 0
129
+ });
130
+ Object.defineProperty(this, "encoder", {
131
+ enumerable: true,
132
+ configurable: true,
133
+ writable: true,
134
+ value: new TextEncoder()
135
+ });
136
+ // private writer: WritableStreamDefaultWriter<Uint8Array>;
137
+ // private writer: Writer;
138
+ Object.defineProperty(this, "writer", {
139
+ enumerable: true,
140
+ configurable: true,
141
+ writable: true,
142
+ value: void 0
143
+ });
144
+ this.title = title;
145
+ this.total = total;
146
+ this.width = width;
147
+ this.complete = complete;
148
+ this.preciseBar = preciseBar.concat(complete);
149
+ this.incomplete = incomplete;
150
+ this.clear = clear;
151
+ this.interval = interval;
152
+ this.display = display ??
153
+ ":title :percent :bar :time :completed/:total :text";
154
+ this.prettyTime = prettyTime;
155
+ // this.writer = output.writable.getWriter();
156
+ this.writer = output;
157
+ }
158
+ /**
159
+ * "render" the progress bar
160
+ *
161
+ * - `completed` completed value
162
+ * - `options` optional parameters
163
+ * - `title` progress bar title
164
+ * - `total` total number of ticks to complete
165
+ * - `text` optional, custom text, default: ''
166
+ * - `complete` completion character, If you want to change at a certain moment. For example, it turns red at 20%
167
+ * - `incomplete` incomplete character, If you want to change at a certain moment. For example, it turns red at 20%
168
+ * - `prettyTimeOptions` prettyTime options
169
+ */
170
+ async render(completed, options = {}) {
171
+ if (__classPrivateFieldGet(this, _ProgressBar_end, "f") || !isTerminal)
172
+ return;
173
+ if (completed < 0) {
174
+ throw new Error(`completed must greater than or equal to 0`);
175
+ }
176
+ const total = options.total ?? this.total ?? 100;
177
+ const now = Date.now();
178
+ const ms = now - this.lastRenderTime;
179
+ const end = completed >= total;
180
+ if (ms < this.interval && !end)
181
+ return;
182
+ this.lastRenderTime = now;
183
+ const time = this.prettyTime
184
+ ? prettyTime(now - this.start, options.prettyTimeOptions)
185
+ : ((now - this.start) / 1000).toFixed(1) + "s";
186
+ const msEta = completed >= total
187
+ ? 0
188
+ : (total / completed - 1) * (now - this.start);
189
+ const eta = completed == 0
190
+ ? "-"
191
+ : this.prettyTime
192
+ ? prettyTime(msEta, options.prettyTimeOptions)
193
+ : (msEta / 1000).toFixed(1) + "s";
194
+ const percent = ((completed / total) * 100).toFixed(2) + "%";
195
+ // :title :percent :bar :time :completed/:total
196
+ let str = this.display
197
+ .replace(":title", options.title ?? this.title)
198
+ .replace(":time", time)
199
+ .replace(":text", options.text ?? "")
200
+ .replace(":eta", eta)
201
+ .replace(":percent", percent)
202
+ .replace(":completed", completed + "")
203
+ .replace(":total", total + "");
204
+ // compute the available space (non-zero) for the bar
205
+ const availableSpace = Math.max(0, this.ttyColumns - stripAnsiCode(str.replace(":bar", "")).length);
206
+ const width = Math.min(this.width, availableSpace);
207
+ const preciseBar = options.preciseBar ?? this.preciseBar;
208
+ const precision = preciseBar.length > 1;
209
+ // :bar
210
+ const completeLength = (width * completed) / total;
211
+ const roundedCompleteLength = Math.floor(completeLength);
212
+ let precise = "";
213
+ if (precision) {
214
+ const preciseLength = completeLength - roundedCompleteLength;
215
+ precise = end
216
+ ? ""
217
+ : preciseBar[Math.floor(preciseBar.length * preciseLength)];
218
+ }
219
+ const complete = new Array(roundedCompleteLength)
220
+ .fill(options.complete ?? this.complete)
221
+ .join("");
222
+ const incomplete = new Array(Math.max(width - roundedCompleteLength - (precision ? 1 : 0), 0))
223
+ .fill(options.incomplete ?? this.incomplete)
224
+ .join("");
225
+ str = str.replace(":bar", complete + precise + incomplete);
226
+ if (str !== this.lastStr) {
227
+ const strLen = stripAnsiCode(str).length;
228
+ if (strLen < this.lastStrLen) {
229
+ str += " ".repeat(this.lastStrLen - strLen);
230
+ }
231
+ await this.write(str);
232
+ this.lastStr = str;
233
+ this.lastStrLen = strLen;
234
+ }
235
+ if (end)
236
+ await this.end();
237
+ }
238
+ /**
239
+ * end: end a progress bar.
240
+ * No need to call in most cases, unless you want to end before 100%
241
+ */
242
+ async end() {
243
+ if (__classPrivateFieldGet(this, _ProgressBar_end, "f"))
244
+ return;
245
+ __classPrivateFieldSet(this, _ProgressBar_end, true, "f");
246
+ if (this.clear) {
247
+ await this.stdoutWrite("\r");
248
+ await this.clearLine();
249
+ }
250
+ else {
251
+ await this.breakLine();
252
+ }
253
+ await this.showCursor();
254
+ // this.writer.releaseLock();
255
+ }
256
+ /**
257
+ * interrupt the progress bar and write a message above it
258
+ *
259
+ * @param message The message to write
260
+ */
261
+ async console(message) {
262
+ await this.clearLine();
263
+ await this.write(`${message}`);
264
+ await this.breakLine();
265
+ await this.write(this.lastStr);
266
+ }
267
+ write(msg) {
268
+ return this.stdoutWrite(`\r${msg}\x1b[?25l`);
269
+ }
270
+ get ttyColumns() {
271
+ if (!dntShim.Deno.stdout.isTerminal())
272
+ return 100;
273
+ return dntShim.Deno.consoleSize().columns;
274
+ }
275
+ breakLine() {
276
+ return this.stdoutWrite("\n");
277
+ }
278
+ stdoutWrite(msg) {
279
+ // return this.writer.write(this.encoder.encode(msg));
280
+ return writeAll(this.writer, this.encoder.encode(msg));
281
+ }
282
+ clearLine(direction = Direction.all) {
283
+ switch (direction) {
284
+ case Direction.all:
285
+ return this.stdoutWrite("\x1b[2K");
286
+ case Direction.left:
287
+ return this.stdoutWrite("\x1b[1K");
288
+ case Direction.right:
289
+ return this.stdoutWrite("\x1b[0K");
290
+ }
291
+ }
292
+ showCursor() {
293
+ return this.stdoutWrite("\x1b[?25h");
294
+ }
295
+ }
296
+ _ProgressBar_end = new WeakMap();
297
+ export default ProgressBar;