@feiyoug/skill-lab 0.0.0 → 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.
- package/README.md +73 -0
- package/esm/analyzer/astgrep/client.d.ts +20 -8
- package/esm/analyzer/astgrep/client.d.ts.map +1 -1
- package/esm/analyzer/astgrep/client.js +58 -31
- package/esm/analyzer/config/default.d.ts +8 -0
- package/esm/analyzer/config/default.d.ts.map +1 -0
- package/esm/analyzer/config/default.js +91 -0
- package/esm/analyzer/config/helpers.d.ts +8 -0
- package/esm/analyzer/config/helpers.d.ts.map +1 -0
- package/esm/analyzer/config/helpers.js +72 -0
- package/esm/analyzer/config/mod.d.ts +4 -0
- package/esm/analyzer/config/mod.d.ts.map +1 -0
- package/esm/analyzer/config/mod.js +3 -0
- package/esm/analyzer/config/types.d.ts +58 -0
- package/esm/analyzer/config/types.d.ts.map +1 -0
- package/esm/analyzer/{config.js → config/types.js} +0 -28
- package/esm/analyzer/logging.d.ts +3 -0
- package/esm/analyzer/logging.d.ts.map +1 -0
- package/esm/analyzer/logging.js +6 -0
- package/esm/analyzer/mod.d.ts +12 -5
- package/esm/analyzer/mod.d.ts.map +1 -1
- package/esm/analyzer/mod.js +25 -12
- package/esm/analyzer/result.d.ts +35 -0
- package/esm/analyzer/result.d.ts.map +1 -0
- package/esm/analyzer/result.js +311 -0
- package/esm/analyzer/rules/bash/commands/mod.d.ts +1 -0
- package/esm/analyzer/rules/bash/commands/mod.d.ts.map +1 -1
- package/esm/analyzer/rules/bash/commands/mod.js +3 -0
- package/esm/analyzer/rules/bash/commands/pip.d.ts +3 -0
- package/esm/analyzer/rules/bash/commands/pip.d.ts.map +1 -0
- package/esm/analyzer/rules/bash/commands/pip.js +14 -0
- package/esm/analyzer/rules/bash/extractFileRefs.d.ts +1 -1
- package/esm/analyzer/rules/bash/extractFileRefs.d.ts.map +1 -1
- package/esm/analyzer/rules/bash/extractFileRefs.js +2 -2
- package/esm/analyzer/rules/bash/inline-command-classifier.d.ts +1 -1
- package/esm/analyzer/rules/bash/inline-command-classifier.d.ts.map +1 -1
- package/esm/analyzer/rules/bash/inline-command-classifier.js +4 -4
- package/esm/analyzer/rules/javascript/extractFileRefs.d.ts +3 -4
- package/esm/analyzer/rules/javascript/extractFileRefs.d.ts.map +1 -1
- package/esm/analyzer/rules/javascript/extractFileRefs.js +3 -4
- package/esm/analyzer/rules/markdown/extractCodeBlocks.d.ts.map +1 -1
- package/esm/analyzer/rules/markdown/extractCodeBlocks.js +6 -3
- package/esm/analyzer/rules/markdown/extractFileRefs.d.ts.map +1 -1
- package/esm/analyzer/rules/markdown/extractFileRefs.js +2 -0
- package/esm/analyzer/rules/python/extractFileRefs.d.ts +1 -1
- package/esm/analyzer/rules/python/extractFileRefs.d.ts.map +1 -1
- package/esm/analyzer/rules/python/extractFileRefs.js +2 -2
- package/esm/analyzer/steps/001-discovery/discover-files.d.ts +4 -0
- package/esm/analyzer/steps/001-discovery/discover-files.d.ts.map +1 -1
- package/esm/analyzer/steps/001-discovery/discover-files.js +18 -2
- package/esm/analyzer/steps/001-discovery/mod.d.ts.map +1 -1
- package/esm/analyzer/steps/001-discovery/mod.js +39 -9
- package/esm/analyzer/steps/002-permissions/mod.d.ts.map +1 -1
- package/esm/analyzer/steps/002-permissions/mod.js +156 -73
- package/esm/analyzer/steps/002-permissions/scan-file.d.ts +1 -1
- package/esm/analyzer/steps/002-permissions/scan-file.d.ts.map +1 -1
- package/esm/analyzer/steps/002-permissions/scan-file.js +40 -5
- package/esm/analyzer/steps/002-permissions/seed-frontmatter.js +2 -2
- package/esm/analyzer/steps/003-risks/dep-risks.d.ts +3 -0
- package/esm/analyzer/steps/003-risks/dep-risks.d.ts.map +1 -0
- package/esm/analyzer/steps/003-risks/dep-risks.js +74 -0
- package/esm/analyzer/steps/003-risks/helpers.d.ts +1 -0
- package/esm/analyzer/steps/003-risks/helpers.d.ts.map +1 -1
- package/esm/analyzer/steps/003-risks/helpers.js +1 -0
- package/esm/analyzer/steps/003-risks/mod.d.ts +3 -2
- package/esm/analyzer/steps/003-risks/mod.d.ts.map +1 -1
- package/esm/analyzer/steps/003-risks/mod.js +41 -4
- package/esm/analyzer/steps/003-risks/policy.d.ts +7 -0
- package/esm/analyzer/steps/003-risks/policy.d.ts.map +1 -0
- package/esm/analyzer/steps/003-risks/policy.js +23 -0
- package/esm/analyzer/steps/003-risks/rule-mapped.d.ts +2 -2
- package/esm/analyzer/steps/003-risks/rule-mapped.d.ts.map +1 -1
- package/esm/analyzer/steps/003-risks/rule-mapped.js +83 -2
- package/esm/analyzer/steps/003-risks/scoring.d.ts +9 -1
- package/esm/analyzer/steps/003-risks/scoring.d.ts.map +1 -1
- package/esm/analyzer/steps/003-risks/scoring.js +55 -42
- package/esm/analyzer/treesitter/client.d.ts +31 -0
- package/esm/analyzer/treesitter/client.d.ts.map +1 -0
- package/esm/analyzer/{treesiter → treesitter}/client.js +43 -39
- package/esm/analyzer/treesitter/registry.d.ts +73 -0
- package/esm/analyzer/treesitter/registry.d.ts.map +1 -0
- package/esm/analyzer/treesitter/registry.js +165 -0
- package/esm/analyzer/types.d.ts +14 -28
- package/esm/analyzer/types.d.ts.map +1 -1
- package/esm/deps/jsr.io/@deno-library/progress/1.5.1/deps.d.ts +3 -0
- package/esm/deps/jsr.io/@deno-library/progress/1.5.1/deps.d.ts.map +1 -0
- package/esm/deps/jsr.io/@deno-library/progress/1.5.1/deps.js +3 -0
- package/esm/deps/jsr.io/@deno-library/progress/1.5.1/mod.d.ts +93 -0
- package/esm/deps/jsr.io/@deno-library/progress/1.5.1/mod.d.ts.map +1 -0
- package/esm/deps/jsr.io/@deno-library/progress/1.5.1/mod.js +297 -0
- package/esm/deps/jsr.io/@deno-library/progress/1.5.1/multi.d.ts +84 -0
- package/esm/deps/jsr.io/@deno-library/progress/1.5.1/multi.d.ts.map +1 -0
- package/esm/deps/jsr.io/@deno-library/progress/1.5.1/multi.js +268 -0
- package/esm/deps/jsr.io/@deno-library/progress/1.5.1/time.d.ts +18 -0
- package/esm/deps/jsr.io/@deno-library/progress/1.5.1/time.d.ts.map +1 -0
- package/esm/deps/jsr.io/@deno-library/progress/1.5.1/time.js +45 -0
- package/esm/deps/jsr.io/@std/fmt/1.0.3/colors.d.ts +700 -0
- package/esm/deps/jsr.io/@std/fmt/1.0.3/colors.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/fmt/1.0.3/colors.js +903 -0
- package/esm/deps/jsr.io/@std/io/0.225.0/types.d.ts +146 -0
- package/esm/deps/jsr.io/@std/io/0.225.0/types.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/io/0.225.0/types.js +15 -0
- package/esm/deps/jsr.io/@std/io/0.225.0/write_all.d.ts +51 -0
- package/esm/deps/jsr.io/@std/io/0.225.0/write_all.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/io/0.225.0/write_all.js +61 -0
- package/esm/shared/deep_merge.d.ts +12 -0
- package/esm/shared/deep_merge.d.ts.map +1 -0
- package/esm/shared/deep_merge.js +49 -0
- package/esm/shared/mod.d.ts +1 -0
- package/esm/shared/mod.d.ts.map +1 -1
- package/esm/shared/mod.js +1 -0
- package/esm/shared/types/filetypes.d.ts +2 -2
- package/esm/shared/types/filetypes.d.ts.map +1 -1
- package/esm/shared/types/permissions.d.ts +1 -1
- package/esm/shared/types/permissions.d.ts.map +1 -1
- package/esm/shared/types/risks.d.ts +4 -1
- package/esm/shared/types/risks.d.ts.map +1 -1
- package/esm/skillreader/types.d.ts +2 -2
- package/esm/skillreader/types.d.ts.map +1 -1
- package/esm/skillreader/types.js +2 -2
- package/package.json +1 -1
- package/script/analyzer/astgrep/client.d.ts +20 -8
- package/script/analyzer/astgrep/client.d.ts.map +1 -1
- package/script/analyzer/astgrep/client.js +58 -64
- package/script/analyzer/config/default.d.ts +8 -0
- package/script/analyzer/config/default.d.ts.map +1 -0
- package/script/analyzer/config/default.js +94 -0
- package/script/analyzer/config/helpers.d.ts +8 -0
- package/script/analyzer/config/helpers.d.ts.map +1 -0
- package/script/analyzer/config/helpers.js +76 -0
- package/script/analyzer/config/mod.d.ts +4 -0
- package/script/analyzer/config/mod.d.ts.map +1 -0
- package/script/analyzer/config/mod.js +21 -0
- package/script/analyzer/config/types.d.ts +58 -0
- package/script/analyzer/config/types.d.ts.map +1 -0
- package/script/analyzer/{config.js → config/types.js} +1 -29
- package/script/analyzer/logging.d.ts +3 -0
- package/script/analyzer/logging.d.ts.map +1 -0
- package/script/analyzer/logging.js +9 -0
- package/script/analyzer/mod.d.ts +12 -5
- package/script/analyzer/mod.d.ts.map +1 -1
- package/script/analyzer/mod.js +35 -20
- package/script/analyzer/result.d.ts +35 -0
- package/script/analyzer/result.d.ts.map +1 -0
- package/script/analyzer/result.js +315 -0
- package/script/analyzer/rules/bash/commands/mod.d.ts +1 -0
- package/script/analyzer/rules/bash/commands/mod.d.ts.map +1 -1
- package/script/analyzer/rules/bash/commands/mod.js +3 -0
- package/script/analyzer/rules/bash/commands/pip.d.ts +3 -0
- package/script/analyzer/rules/bash/commands/pip.d.ts.map +1 -0
- package/script/analyzer/rules/bash/commands/pip.js +17 -0
- package/script/analyzer/rules/bash/extractFileRefs.d.ts +1 -1
- package/script/analyzer/rules/bash/extractFileRefs.d.ts.map +1 -1
- package/script/analyzer/rules/bash/extractFileRefs.js +2 -2
- package/script/analyzer/rules/bash/inline-command-classifier.d.ts +1 -1
- package/script/analyzer/rules/bash/inline-command-classifier.d.ts.map +1 -1
- package/script/analyzer/rules/bash/inline-command-classifier.js +4 -4
- package/script/analyzer/rules/javascript/extractFileRefs.d.ts +3 -4
- package/script/analyzer/rules/javascript/extractFileRefs.d.ts.map +1 -1
- package/script/analyzer/rules/javascript/extractFileRefs.js +3 -4
- package/script/analyzer/rules/markdown/extractCodeBlocks.d.ts.map +1 -1
- package/script/analyzer/rules/markdown/extractCodeBlocks.js +6 -3
- package/script/analyzer/rules/markdown/extractFileRefs.d.ts.map +1 -1
- package/script/analyzer/rules/markdown/extractFileRefs.js +2 -0
- package/script/analyzer/rules/python/extractFileRefs.d.ts +1 -1
- package/script/analyzer/rules/python/extractFileRefs.d.ts.map +1 -1
- package/script/analyzer/rules/python/extractFileRefs.js +2 -2
- package/script/analyzer/steps/001-discovery/discover-files.d.ts +4 -0
- package/script/analyzer/steps/001-discovery/discover-files.d.ts.map +1 -1
- package/script/analyzer/steps/001-discovery/discover-files.js +18 -2
- package/script/analyzer/steps/001-discovery/mod.d.ts.map +1 -1
- package/script/analyzer/steps/001-discovery/mod.js +77 -11
- package/script/analyzer/steps/002-permissions/mod.d.ts.map +1 -1
- package/script/analyzer/steps/002-permissions/mod.js +194 -75
- package/script/analyzer/steps/002-permissions/scan-file.d.ts +1 -1
- package/script/analyzer/steps/002-permissions/scan-file.d.ts.map +1 -1
- package/script/analyzer/steps/002-permissions/scan-file.js +40 -5
- package/script/analyzer/steps/002-permissions/seed-frontmatter.js +3 -3
- package/script/analyzer/steps/003-risks/dep-risks.d.ts +3 -0
- package/script/analyzer/steps/003-risks/dep-risks.d.ts.map +1 -0
- package/script/analyzer/steps/003-risks/dep-risks.js +77 -0
- package/script/analyzer/steps/003-risks/helpers.d.ts +1 -0
- package/script/analyzer/steps/003-risks/helpers.d.ts.map +1 -1
- package/script/analyzer/steps/003-risks/helpers.js +1 -0
- package/script/analyzer/steps/003-risks/mod.d.ts +3 -2
- package/script/analyzer/steps/003-risks/mod.d.ts.map +1 -1
- package/script/analyzer/steps/003-risks/mod.js +77 -4
- package/script/analyzer/steps/003-risks/policy.d.ts +7 -0
- package/script/analyzer/steps/003-risks/policy.d.ts.map +1 -0
- package/script/analyzer/steps/003-risks/policy.js +29 -0
- package/script/analyzer/steps/003-risks/rule-mapped.d.ts +2 -2
- package/script/analyzer/steps/003-risks/rule-mapped.d.ts.map +1 -1
- package/script/analyzer/steps/003-risks/rule-mapped.js +83 -2
- package/script/analyzer/steps/003-risks/scoring.d.ts +9 -1
- package/script/analyzer/steps/003-risks/scoring.d.ts.map +1 -1
- package/script/analyzer/steps/003-risks/scoring.js +55 -42
- package/script/analyzer/treesitter/client.d.ts +31 -0
- package/script/analyzer/treesitter/client.d.ts.map +1 -0
- package/script/analyzer/treesitter/client.js +136 -0
- package/script/analyzer/treesitter/registry.d.ts +73 -0
- package/script/analyzer/treesitter/registry.d.ts.map +1 -0
- package/script/analyzer/treesitter/registry.js +206 -0
- package/script/analyzer/types.d.ts +14 -28
- package/script/analyzer/types.d.ts.map +1 -1
- package/script/deps/jsr.io/@deno-library/progress/1.5.1/deps.d.ts +3 -0
- package/script/deps/jsr.io/@deno-library/progress/1.5.1/deps.d.ts.map +1 -0
- package/script/deps/jsr.io/@deno-library/progress/1.5.1/deps.js +10 -0
- package/script/deps/jsr.io/@deno-library/progress/1.5.1/mod.d.ts +93 -0
- package/script/deps/jsr.io/@deno-library/progress/1.5.1/mod.d.ts.map +1 -0
- package/script/deps/jsr.io/@deno-library/progress/1.5.1/mod.js +334 -0
- package/script/deps/jsr.io/@deno-library/progress/1.5.1/multi.d.ts +84 -0
- package/script/deps/jsr.io/@deno-library/progress/1.5.1/multi.d.ts.map +1 -0
- package/script/deps/jsr.io/@deno-library/progress/1.5.1/multi.js +305 -0
- package/script/deps/jsr.io/@deno-library/progress/1.5.1/time.d.ts +18 -0
- package/script/deps/jsr.io/@deno-library/progress/1.5.1/time.d.ts.map +1 -0
- package/script/deps/jsr.io/@deno-library/progress/1.5.1/time.js +48 -0
- package/script/deps/jsr.io/@std/fmt/1.0.3/colors.d.ts +700 -0
- package/script/deps/jsr.io/@std/fmt/1.0.3/colors.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/fmt/1.0.3/colors.js +986 -0
- package/script/deps/jsr.io/@std/io/0.225.0/types.d.ts +146 -0
- package/script/deps/jsr.io/@std/io/0.225.0/types.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/io/0.225.0/types.js +18 -0
- package/script/deps/jsr.io/@std/io/0.225.0/write_all.d.ts +51 -0
- package/script/deps/jsr.io/@std/io/0.225.0/write_all.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/io/0.225.0/write_all.js +65 -0
- package/script/shared/deep_merge.d.ts +12 -0
- package/script/shared/deep_merge.d.ts.map +1 -0
- package/script/shared/deep_merge.js +53 -0
- package/script/shared/mod.d.ts +1 -0
- package/script/shared/mod.d.ts.map +1 -1
- package/script/shared/mod.js +1 -0
- package/script/shared/types/filetypes.d.ts +2 -2
- package/script/shared/types/filetypes.d.ts.map +1 -1
- package/script/shared/types/permissions.d.ts +1 -1
- package/script/shared/types/permissions.d.ts.map +1 -1
- package/script/shared/types/risks.d.ts +4 -1
- package/script/shared/types/risks.d.ts.map +1 -1
- package/script/skillreader/types.d.ts +2 -2
- package/script/skillreader/types.d.ts.map +1 -1
- package/script/skillreader/types.js +2 -2
- package/src/_dnt.polyfills.ts +27 -0
- package/src/_dnt.shims.ts +64 -0
- package/src/analyzer/astgrep/client.ts +184 -0
- package/src/analyzer/astgrep/mod.ts +2 -0
- package/src/analyzer/config/default.ts +98 -0
- package/src/analyzer/config/helpers.ts +107 -0
- package/src/analyzer/config/mod.ts +3 -0
- package/src/analyzer/config/types.ts +103 -0
- package/src/analyzer/logging.ts +8 -0
- package/src/analyzer/mod.ts +118 -0
- package/src/analyzer/result.ts +393 -0
- package/src/analyzer/rules/bash/astTypes.ts +5 -0
- package/src/analyzer/rules/bash/commands/bd.ts +23 -0
- package/src/analyzer/rules/bash/commands/cron.ts +21 -0
- package/src/analyzer/rules/bash/commands/docker.ts +37 -0
- package/src/analyzer/rules/bash/commands/eval.ts +52 -0
- package/src/analyzer/rules/bash/commands/generic.ts +16 -0
- package/src/analyzer/rules/bash/commands/gh.ts +21 -0
- package/src/analyzer/rules/bash/commands/git.ts +28 -0
- package/src/analyzer/rules/bash/commands/mod.ts +38 -0
- package/src/analyzer/rules/bash/commands/node.ts +64 -0
- package/src/analyzer/rules/bash/commands/openspec.ts +16 -0
- package/src/analyzer/rules/bash/commands/pip.ts +16 -0
- package/src/analyzer/rules/bash/commands/sudo.ts +21 -0
- package/src/analyzer/rules/bash/destructive.ts +28 -0
- package/src/analyzer/rules/bash/extractFileRefs.ts +101 -0
- package/src/analyzer/rules/bash/filesystem.ts +50 -0
- package/src/analyzer/rules/bash/injection.ts +21 -0
- package/src/analyzer/rules/bash/inline-command-classifier.ts +94 -0
- package/src/analyzer/rules/bash/mod.ts +23 -0
- package/src/analyzer/rules/bash/network.ts +64 -0
- package/src/analyzer/rules/bash/secret-detection.ts +43 -0
- package/src/analyzer/rules/javascript/astTypes.ts +8 -0
- package/src/analyzer/rules/javascript/extractFileRefs.ts +131 -0
- package/src/analyzer/rules/javascript/filesystem.ts +28 -0
- package/src/analyzer/rules/javascript/injection.ts +21 -0
- package/src/analyzer/rules/javascript/mod.ts +26 -0
- package/src/analyzer/rules/javascript/network.ts +27 -0
- package/src/analyzer/rules/javascript/secret-detection.ts +68 -0
- package/src/analyzer/rules/javascript/subprocess.ts +16 -0
- package/src/analyzer/rules/markdown/astTypes.ts +35 -0
- package/src/analyzer/rules/markdown/extractCodeBlocks.ts +101 -0
- package/src/analyzer/rules/markdown/extractFileRefs.ts +179 -0
- package/src/analyzer/rules/markdown/mod.ts +12 -0
- package/src/analyzer/rules/mod.ts +77 -0
- package/src/analyzer/rules/python/astTypes.ts +9 -0
- package/src/analyzer/rules/python/extractFileRefs.ts +92 -0
- package/src/analyzer/rules/python/mod.ts +15 -0
- package/src/analyzer/rules/python/network.ts +26 -0
- package/src/analyzer/rules/python/secret-detection.ts +30 -0
- package/src/analyzer/rules/shared/file-refs.ts +38 -0
- package/src/analyzer/rules/shared/network-evaluators.ts +107 -0
- package/src/analyzer/rules/shared/prompt-injection.ts +48 -0
- package/src/analyzer/rules/shared/secret-evaluators.ts +13 -0
- package/src/analyzer/rules/text/mod.ts +12 -0
- package/src/analyzer/rules/typescript/mod.ts +7 -0
- package/src/analyzer/steps/001-discovery/discover-files.ts +211 -0
- package/src/analyzer/steps/001-discovery/filter-files.ts +72 -0
- package/src/analyzer/steps/001-discovery/mod.ts +103 -0
- package/src/analyzer/steps/002-permissions/mod.ts +329 -0
- package/src/analyzer/steps/002-permissions/scan-file.ts +258 -0
- package/src/analyzer/steps/002-permissions/seed-frontmatter.ts +66 -0
- package/src/analyzer/steps/002-permissions/synthesize.ts +42 -0
- package/src/analyzer/steps/003-risks/dep-risks.ts +89 -0
- package/src/analyzer/steps/003-risks/helpers.ts +41 -0
- package/src/analyzer/steps/003-risks/mod.ts +86 -0
- package/src/analyzer/steps/003-risks/policy.ts +38 -0
- package/src/analyzer/steps/003-risks/rule-mapped.ts +206 -0
- package/src/analyzer/steps/003-risks/scoring.ts +117 -0
- package/src/analyzer/steps/mod.ts +3 -0
- package/src/analyzer/treesitter/client.ts +120 -0
- package/src/analyzer/treesitter/registry.ts +198 -0
- package/src/analyzer/types.ts +78 -0
- package/src/analyzer/utils/code-block-path.ts +33 -0
- package/src/analyzer/utils/id-generator.ts +59 -0
- package/src/analyzer/utils/secret-validator.ts +29 -0
- package/src/analyzer/utils/url-parser.ts +25 -0
- package/src/deps/jsr.io/@deno-library/progress/1.5.1/deps.ts +3 -0
- package/src/deps/jsr.io/@deno-library/progress/1.5.1/mod.ts +265 -0
- package/src/deps/jsr.io/@deno-library/progress/1.5.1/multi.ts +250 -0
- package/src/deps/jsr.io/@deno-library/progress/1.5.1/time.ts +69 -0
- package/src/deps/jsr.io/@std/fmt/1.0.3/colors.ts +1004 -0
- package/src/deps/jsr.io/@std/internal/1.0.12/_os.ts +15 -0
- package/src/deps/jsr.io/@std/internal/1.0.12/os.ts +7 -0
- package/src/deps/jsr.io/@std/io/0.225.0/types.ts +157 -0
- package/src/deps/jsr.io/@std/io/0.225.0/write_all.ts +65 -0
- package/src/deps/jsr.io/@std/path/1.1.4/_common/assert_path.ts +10 -0
- package/src/deps/jsr.io/@std/path/1.1.4/_common/basename.ts +53 -0
- package/src/deps/jsr.io/@std/path/1.1.4/_common/common.ts +26 -0
- package/src/deps/jsr.io/@std/path/1.1.4/_common/constants.ts +49 -0
- package/src/deps/jsr.io/@std/path/1.1.4/_common/dirname.ts +9 -0
- package/src/deps/jsr.io/@std/path/1.1.4/_common/format.ts +25 -0
- package/src/deps/jsr.io/@std/path/1.1.4/_common/from_file_url.ts +12 -0
- package/src/deps/jsr.io/@std/path/1.1.4/_common/glob_to_reg_exp.ts +295 -0
- package/src/deps/jsr.io/@std/path/1.1.4/_common/normalize.ts +9 -0
- package/src/deps/jsr.io/@std/path/1.1.4/_common/normalize_string.ts +74 -0
- package/src/deps/jsr.io/@std/path/1.1.4/_common/relative.ts +10 -0
- package/src/deps/jsr.io/@std/path/1.1.4/_common/strip_trailing_separators.ts +25 -0
- package/src/deps/jsr.io/@std/path/1.1.4/_common/to_file_url.ts +17 -0
- package/src/deps/jsr.io/@std/path/1.1.4/basename.ts +37 -0
- package/src/deps/jsr.io/@std/path/1.1.4/common.ts +35 -0
- package/src/deps/jsr.io/@std/path/1.1.4/constants.ts +18 -0
- package/src/deps/jsr.io/@std/path/1.1.4/dirname.ts +30 -0
- package/src/deps/jsr.io/@std/path/1.1.4/extname.ts +29 -0
- package/src/deps/jsr.io/@std/path/1.1.4/format.ts +30 -0
- package/src/deps/jsr.io/@std/path/1.1.4/from_file_url.ts +30 -0
- package/src/deps/jsr.io/@std/path/1.1.4/glob_to_regexp.ts +94 -0
- package/src/deps/jsr.io/@std/path/1.1.4/is_absolute.ts +30 -0
- package/src/deps/jsr.io/@std/path/1.1.4/is_glob.ts +49 -0
- package/src/deps/jsr.io/@std/path/1.1.4/join.ts +31 -0
- package/src/deps/jsr.io/@std/path/1.1.4/join_globs.ts +42 -0
- package/src/deps/jsr.io/@std/path/1.1.4/mod.ts +217 -0
- package/src/deps/jsr.io/@std/path/1.1.4/normalize.ts +33 -0
- package/src/deps/jsr.io/@std/path/1.1.4/normalize_glob.ts +45 -0
- package/src/deps/jsr.io/@std/path/1.1.4/parse.ts +44 -0
- package/src/deps/jsr.io/@std/path/1.1.4/posix/_util.ts +10 -0
- package/src/deps/jsr.io/@std/path/1.1.4/posix/basename.ts +62 -0
- package/src/deps/jsr.io/@std/path/1.1.4/posix/constants.ts +15 -0
- package/src/deps/jsr.io/@std/path/1.1.4/posix/dirname.ts +72 -0
- package/src/deps/jsr.io/@std/path/1.1.4/posix/extname.ts +96 -0
- package/src/deps/jsr.io/@std/path/1.1.4/posix/format.ts +31 -0
- package/src/deps/jsr.io/@std/path/1.1.4/posix/from_file_url.ts +25 -0
- package/src/deps/jsr.io/@std/path/1.1.4/posix/glob_to_regexp.ts +94 -0
- package/src/deps/jsr.io/@std/path/1.1.4/posix/is_absolute.ts +25 -0
- package/src/deps/jsr.io/@std/path/1.1.4/posix/join.ts +46 -0
- package/src/deps/jsr.io/@std/path/1.1.4/posix/join_globs.ts +45 -0
- package/src/deps/jsr.io/@std/path/1.1.4/posix/normalize.ts +63 -0
- package/src/deps/jsr.io/@std/path/1.1.4/posix/normalize_glob.ts +43 -0
- package/src/deps/jsr.io/@std/path/1.1.4/posix/parse.ts +121 -0
- package/src/deps/jsr.io/@std/path/1.1.4/posix/relative.ts +103 -0
- package/src/deps/jsr.io/@std/path/1.1.4/posix/resolve.ts +71 -0
- package/src/deps/jsr.io/@std/path/1.1.4/posix/to_file_url.ts +32 -0
- package/src/deps/jsr.io/@std/path/1.1.4/posix/to_namespaced_path.ts +21 -0
- package/src/deps/jsr.io/@std/path/1.1.4/relative.ts +32 -0
- package/src/deps/jsr.io/@std/path/1.1.4/resolve.ts +32 -0
- package/src/deps/jsr.io/@std/path/1.1.4/to_file_url.ts +30 -0
- package/src/deps/jsr.io/@std/path/1.1.4/to_namespaced_path.ts +31 -0
- package/src/deps/jsr.io/@std/path/1.1.4/types.ts +40 -0
- package/src/deps/jsr.io/@std/path/1.1.4/windows/_util.ts +28 -0
- package/src/deps/jsr.io/@std/path/1.1.4/windows/basename.ts +54 -0
- package/src/deps/jsr.io/@std/path/1.1.4/windows/constants.ts +15 -0
- package/src/deps/jsr.io/@std/path/1.1.4/windows/dirname.ts +118 -0
- package/src/deps/jsr.io/@std/path/1.1.4/windows/extname.ts +90 -0
- package/src/deps/jsr.io/@std/path/1.1.4/windows/format.ts +31 -0
- package/src/deps/jsr.io/@std/path/1.1.4/windows/from_file_url.ts +34 -0
- package/src/deps/jsr.io/@std/path/1.1.4/windows/glob_to_regexp.ts +92 -0
- package/src/deps/jsr.io/@std/path/1.1.4/windows/is_absolute.ts +40 -0
- package/src/deps/jsr.io/@std/path/1.1.4/windows/join.ts +78 -0
- package/src/deps/jsr.io/@std/path/1.1.4/windows/join_globs.ts +46 -0
- package/src/deps/jsr.io/@std/path/1.1.4/windows/normalize.ts +136 -0
- package/src/deps/jsr.io/@std/path/1.1.4/windows/normalize_glob.ts +43 -0
- package/src/deps/jsr.io/@std/path/1.1.4/windows/parse.ts +184 -0
- package/src/deps/jsr.io/@std/path/1.1.4/windows/relative.ts +128 -0
- package/src/deps/jsr.io/@std/path/1.1.4/windows/resolve.ts +178 -0
- package/src/deps/jsr.io/@std/path/1.1.4/windows/to_file_url.ts +38 -0
- package/src/deps/jsr.io/@std/path/1.1.4/windows/to_namespaced_path.ts +60 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/_chars.ts +55 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/_dumper_state.ts +841 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/_loader_state.ts +1780 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/_schema.ts +183 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/_type/binary.ts +127 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/_type/bool.ts +37 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/_type/float.ts +112 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/_type/int.ts +174 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/_type/map.ts +17 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/_type/merge.ts +13 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/_type/nil.ts +27 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/_type/omap.ts +30 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/_type/pairs.ts +22 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/_type/regexp.ts +33 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/_type/seq.ts +13 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/_type/set.ts +17 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/_type/str.ts +12 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/_type/timestamp.ts +101 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/_type/undefined.ts +23 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/_type.ts +49 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/_utils.ts +16 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/mod.ts +54 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/parse.ts +128 -0
- package/src/deps/jsr.io/@std/yaml/1.0.11/stringify.ts +118 -0
- package/src/shared/deep_merge.ts +73 -0
- package/src/shared/mod.ts +2 -0
- package/src/shared/types/filetypes.ts +101 -0
- package/src/shared/types/findings.ts +7 -0
- package/src/shared/types/mod.ts +6 -0
- package/src/shared/types/permissions.ts +17 -0
- package/src/shared/types/references.ts +62 -0
- package/src/shared/types/risks.ts +72 -0
- package/src/shared/types/syntaxNode.ts +7 -0
- package/src/skillreader/cloudStorage/mod.ts +170 -0
- package/src/skillreader/factory.ts +71 -0
- package/src/skillreader/fs/git.ts +153 -0
- package/src/skillreader/fs/mod.ts +84 -0
- package/src/skillreader/github/base.ts +162 -0
- package/src/skillreader/github/githubApi.ts +40 -0
- package/src/skillreader/github/githubRaw.ts +24 -0
- package/src/skillreader/github/mod.ts +45 -0
- package/src/skillreader/github/utils.ts +40 -0
- package/src/skillreader/manifest.ts +67 -0
- package/src/skillreader/mod.ts +26 -0
- package/src/skillreader/types.ts +150 -0
- package/src/skillreader/utils/frontmatter-parser.ts +72 -0
- package/src/skillreader/utils/http-range.ts +38 -0
- package/src/skillreader/utils/mod.ts +12 -0
- package/esm/analyzer/astgrep/registry.d.ts +0 -18
- package/esm/analyzer/astgrep/registry.d.ts.map +0 -1
- package/esm/analyzer/astgrep/registry.js +0 -71
- package/esm/analyzer/config.d.ts +0 -27
- package/esm/analyzer/config.d.ts.map +0 -1
- package/esm/analyzer/steps/003-risks/output.d.ts +0 -3
- package/esm/analyzer/steps/003-risks/output.d.ts.map +0 -1
- package/esm/analyzer/steps/003-risks/output.js +0 -16
- package/esm/analyzer/treesiter/client.d.ts +0 -26
- package/esm/analyzer/treesiter/client.d.ts.map +0 -1
- package/script/analyzer/astgrep/registry.d.ts +0 -18
- package/script/analyzer/astgrep/registry.d.ts.map +0 -1
- package/script/analyzer/astgrep/registry.js +0 -109
- package/script/analyzer/config.d.ts +0 -27
- package/script/analyzer/config.d.ts.map +0 -1
- package/script/analyzer/steps/003-risks/output.d.ts +0 -3
- package/script/analyzer/steps/003-risks/output.d.ts.map +0 -1
- package/script/analyzer/steps/003-risks/output.js +0 -19
- package/script/analyzer/treesiter/client.d.ts +0 -26
- package/script/analyzer/treesiter/client.d.ts.map +0 -1
- 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
|
+
}
|
package/esm/analyzer/types.d.ts
CHANGED
|
@@ -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 "./
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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:
|
|
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":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EACR,sBAAsB,EACtB,aAAa,EACb,QAAQ,EACR,OAAO,EACP,WAAW,EACX,UAAU,EACV,SAAS,EACT,aAAa,EACb,IAAI,EACP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/analyzer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EACR,sBAAsB,EACtB,aAAa,EACb,QAAQ,EACR,OAAO,EACP,WAAW,EACX,UAAU,EACV,SAAS,EACT,aAAa,EACb,IAAI,EACP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;AAE3C,MAAM,MAAM,cAAc,GAAG;IACzB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACnE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAClE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAClE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACtE,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE;QACN,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1B,YAAY,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,SAAS,CAAA;SAAE,CAAC,CAAC;QAC/E,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,MAAM,EAAE,UAAU,CAAC;KACtB,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC1B,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,8CAA8C;IAC9C,MAAM,EAAE,cAAc,CAAC;CAC1B,CAAC;AAEF,qEAAqE;AACrE,MAAM,MAAM,gBAAgB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,sBAAsB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IACzB,iBAAiB,CAAC,EAAE,CAChB,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,MAAM,KACd,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC1B,eAAe,CAAC,EAAE,CACd,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,MAAM,KACd,gBAAgB,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACtD,eAAe,EAAE,QAAQ,GAAG,IAAI,CAAC;CACpC,CAAC"}
|
|
@@ -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,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;
|