diff --git a/dependencies/npm.json b/dependencies/npm.json index f50ec3e..d06a3e0 100644 --- a/dependencies/npm.json +++ b/dependencies/npm.json @@ -1 +1 @@ -{"date": "2025-09-15T00:20:47.033140+00:00", "packages": ["semver", "ansi-styles", "debug", "chalk", "minimatch", "supports-color", "ms", "strip-ansi", "tslib", "ansi-regex", "string-width", "brace-expansion", "lru-cache", "type-fest", "commander", "glob", "has-flag", "wrap-ansi", "emoji-regex", "color-convert", "source-map", "color-name", "readable-stream", "find-up", "escape-string-regexp", "uuid", "p-locate", "p-limit", "locate-path", "minipass", "yallist", "safe-buffer", "ajv", "picomatch", "is-fullwidth-code-point", "glob-parent", "@types/node", "isarray", "which", "json-schema-traverse", "signal-exit", "string_decoder", "eslint-visitor-keys", "yargs-parser", "pretty-format", "js-yaml", "acorn", "argparse", "resolve-from", "globals", "yargs", "get-stream", "iconv-lite", "react-is", "fs-extra", "vite", "path-exists", "cliui", "ws", "resolve", "estraverse", "path-key", "mime-db", "camelcase", "@jridgewell/trace-mapping", "ignore", "punycode", "cross-spawn", "mkdirp", "kind-of", "postcss", "inherits", "is-stream", "agent-base", "rimraf", "form-data", "whatwg-url", "json5", "mime-types", "tr46", "qs", "https-proxy-agent", "webidl-conversions", "convert-source-map", "universalify", "slash", "execa", "undici-types", "@babel/types", "entities", "picocolors", "isexe", "eslint-scope", "jsesc", "is-number", "shebang-command", "@dataform/core", "shebang-regex", "braces", "statuses", "fill-range", "@jest/types", "make-dir", "onetime", "strip-json-comments", "micromatch", "@babel/parser", "buffer", "schema-utils", "@babel/traverse", "@babel/helper-validator-identifier", "strip-bom", "chokidar", "get-intrinsic", "y18n", "function-bind", "mime", "npm-run-path", "@jridgewell/sourcemap-codec", "readdirp", "path-to-regexp", "cookie", "is-arrayish", "pify", "has-symbols", "to-regex-range", "balanced-match", "@babel/generator", "js-tokens", "graceful-fs", "is-glob", "@jridgewell/gen-mapping", "minimist", "parse-json", "yaml", "ci-info", "electron-to-chromium", "caniuse-lite", "negotiator", "is-core-module", "browserslist", "fast-glob", "object-inspect", "node-fetch", "normalize-path", "encodeurl", "human-signals", "lodash", "esbuild", "@babel/code-frame", "cosmiconfig", "es-define-property", "fast-deep-equal", "http-errors", "jest-worker", "mimic-fn", "ansi-escapes", "typescript", "escalade", "yocto-queue", "once", "doctrine", "define-property", "@babel/template", "source-map-support", "jsonfile", "jest-util", "http-proxy-agent", "path-type", "@babel/core", "depd", "wrappy", "hasown", "@babel/runtime", "@types/estree", "globby", "sprintf-js", "gopd", "is-extglob", "ini", "@smithy/util-utf8", "@babel/helper-string-parser", "@types/yargs", "nanoid", "concat-map", "anymatch", "axios", "pkg-dir", "async", "write-file-atomic", "callsites", "get-caller-file", "postcss-selector-parser", "node-releases", "@esbuild/linux-x64", "dotenv", "@smithy/util-buffer-from", "import-fresh", "es-object-atoms", "safer-buffer", "@jridgewell/resolve-uri", "@babel/helper-module-imports", "json-parse-even-better-errors", "espree", "@aws-sdk/types", "fs.realpath", "jackspeak", "levn", "strip-final-newline", "@babel/helper-plugin-utils", "slice-ansi", "es-errors", "@babel/helpers", "fastq", "setprototypeof", "has-tostringtag", "get-proto", "eslint", "diff", "@smithy/types", "esprima", "@babel/helper-module-transforms", "fast-json-stable-stringify", "update-browserslist-db", "on-finished", "path-parse", "asynckit", "p-try", "type-check", "call-bind", "util-deprecate", "optionator", "reusify", "hosted-git-info", "object-assign", "@typescript-eslint/typescript-estree", "path-is-absolute", "rxjs", "istanbul-lib-instrument", "@babel/compat-data", "delayed-stream", "path-scurry", "combined-stream", "imurmurhash", "call-bind-apply-helpers", "magic-string", "@nodelib/fs.stat", "@smithy/is-array-buffer", "require-directory", "prelude-ls", "bytes", "follow-redirects", "@typescript-eslint/types", "restore-cursor", "flat-cache", "chownr", "cli-cursor", "is-plain-obj", "@babel/helper-compilation-targets", "flatted", "@jest/schemas", "@typescript-eslint/visitor-keys", "esutils", "dunder-proto", "uri-js", "core-util-is", "@nodelib/fs.scandir", "supports-preserve-symlinks-flag", "@babel/helper-validator-option", "@nodelib/fs.walk", "foreground-child", "@sinclair/typebox", "es-set-tostringtag", "extend-shallow", "parse5", "is-wsl", "ajv-keywords", "file-entry-cache", "eventemitter3", "queue-microtask", "open", "fast-levenshtein", "regenerator-runtime", "ipaddr.js", "parent-module", "base64-js", "lines-and-columns", "math-intrinsics", "merge2", "run-parallel", "finalhandler", "ieee754", "buffer-from", "@typescript-eslint/scope-manager", "indent-string", "estree-walker", "tough-cookie", "is-binary-path", "jest-message-util", "raw-body", "inflight", "domutils", "is-regex", "prettier", "acorn-walk", "keyv", "send", "binary-extensions", "natural-compare", "@eslint/eslintrc", "source-map-js", "tmp", "has-property-descriptors", "p-map", "proxy-from-env", "@types/json-schema", "deep-is", "dom-serializer", "body-parser", "@eslint/js", "accepts", "esquery", "domhandler", "is-callable", "esrecurse", "side-channel", "is-plain-object", "define-properties", "content-disposition", "jest-diff", "error-ex", "fresh", "which-typed-array", "deepmerge", "object-keys", "merge-stream", "media-typer", "jest-regex-util", "express", "acorn-jsx", "isobject", "type-is", "pump", "cookie-signature", "json-buffer", "arg", "is-docker", "@ampproject/remapping", "object.assign", "es-abstract", "array-union", "retry", "lodash.merge", "normalize-package-data", "is-unicode-supported", "loader-utils", "gensync", "side-channel-map", "is-extendable", "postcss-value-parser", "detect-libc", "log-symbols", "for-each", "end-of-stream", "aria-query", "set-function-length", "rollup", "csstype", "merge-descriptors", "json-stable-stringify-without-jsonify", "bn.js", "regexp.prototype.flags", "is-typed-array", "escape-html", "range-parser", "is-symbol", "eastasianwidth", "side-channel-list", "events", "jest-get-type", "call-bound", "content-type", "@typescript-eslint/utils", "tar", "define-data-property", "@eslint-community/regexpp", "word-wrap", "enhanced-resolve", "string.prototype.trimend", "jest-matcher-utils", "is-date-object", "tapable", "istanbul-lib-coverage", "domelementtype", "@eslint-community/eslint-utils", "@types/react", "toidentifier", "safe-regex-test", "internal-slot", "@babel/helper-annotate-as-pure", "tsconfig-paths", "string.prototype.trimstart", "jiti", "has-proto", "pirates", "vary", "@sinonjs/fake-timers", "es-to-primitive", "unpipe", "available-typed-arrays", "figures", "mute-stream", "bl", "parseurl", "process-nextick-args", "zod", "is-boolean-object", "jest-mock", "is-path-inside", "serialize-javascript", "is-string", "is-number-object", "etag", "@types/babel__traverse", "ee-first", "@isaacs/cliui", "mdn-data", "require-from-string", "@smithy/property-provider", "is-bigint", "which-boxed-primitive", "side-channel-weakmap", "type-detect", "@opentelemetry/semantic-conventions", "htmlparser2", "dir-glob", "@babel/plugin-syntax-jsx", "@humanwhocodes/module-importer", "is-shared-array-buffer", "diff-sequences", "fs-minipass", "test-exclude", "@pkgjs/parseargs", "clone", "css-select", "minizlib", "possible-typed-array-names", "sax", "expect", "read-pkg", "ts-api-utils", "get-symbol-description", "function.prototype.name", "colorette", "has-bigints", "istanbul-reports", "decamelize", "is-weakref", "@typescript-eslint/parser", "jest-haste-map", "serve-static", "terser", "kleur", "loose-envify", "is-generator-function", "css-tree", "whatwg-mimetype", "istanbul-lib-source-maps", "nopt", "unbox-primitive", "mimic-response", "@sinonjs/commons", "webpack-sources", "core-js", "proxy-addr", "array-buffer-byte-length", "forwarded", "@smithy/protocol-http", "html-escaper", "functions-have-names", "prop-types", "fast-xml-parser", "is-descriptor", "destroy", "ajv-formats", "istanbul-lib-report", "xtend", "@types/babel__core", "lilconfig", "tar-stream", "cjs-module-lexer", "fdir", "@jest/transform", "string.prototype.trim", "ora", "graphemer", "@jridgewell/set-array", "@types/istanbul-reports", "package-json-from-dist", "node-addon-api", "@jest/console", "@types/babel__generator", "is-array-buffer", "@rollup/rollup-linux-x64-musl", "jwa", "globalthis", "@babel/helper-skip-transparent-expression-wrappers", "find-cache-dir", "@typescript-eslint/eslint-plugin", "@babel/plugin-syntax-typescript", "@istanbuljs/schema", "methods", "string-length", "typed-array-length", "escodegen", "whatwg-encoding", "@jest/fake-timers", "@types/babel__template", "cli-width", "dedent", "@jest/test-result", "safe-array-concat", "@types/express-serve-static-core", "typed-array-buffer", "@babel/helper-create-class-features-plugin", "@jest/environment", "typed-array-byte-offset", "extend", "array-flatten", "define-lazy-prop", "resolve-cwd", "@babel/helper-replace-supers", "jest-validate", "strip-indent", "array-includes", "char-regex", "utils-merge", "@babel/helper-member-expression-to-functions", "cssesc", "inquirer", "@babel/preset-env", "arraybuffer.prototype.slice", "leven", "neo-async", "clsx", "@humanwhocodes/retry", "@babel/helper-optimise-call-expression", "object.values", "cssom", "set-function-name", "@aws-sdk/middleware-user-agent", "jest-snapshot", "css-what", "is-set", "babel-preset-jest", "stack-utils", "@aws-sdk/credential-provider-node", "ansi-colors", "es-module-lexer", "jsbn", "clean-stack", "through", "babel-jest", "@rollup/rollup-linux-x64-gnu", "typed-array-byte-length", "text-table", "@types/istanbul-lib-coverage", "@aws-sdk/credential-provider-ini", "jest-watcher", "@aws-sdk/util-user-agent-node", "nth-check", "jest-resolve", "import-local", "jsdom", "@types/express", "@babel/plugin-syntax-import-attributes", "html-encoding-sniffer", "detect-newline", "is-buffer", "color", "babel-plugin-istanbul", "long", "@bcoe/v8-coverage", "abbrev", "is-weakset", "@smithy/util-retry", "pako", "requires-port", "is-negative-zero", "xml-name-validator", "babel-plugin-jest-hoist", "@typescript-eslint/type-utils", "randombytes", "@aws-sdk/credential-provider-env", "@types/yargs-parser", "is-map", "@types/uuid", "@aws-sdk/core", "@aws-sdk/util-user-agent-browser", "spdx-license-ids", "@aws-sdk/credential-provider-sso", "@types/stack-utils", "jest-environment-node", "@aws-sdk/client-sso", "@babel/plugin-syntax-object-rest-spread", "array.prototype.flat", "jest-docblock", "which-collection", "xmlbuilder", "spdx-expression-parse", "pathe", "@babel/plugin-syntax-optional-chaining", "@babel/plugin-syntax-async-generators", "ssri", "@tootallnate/once", "makeerror", "get-package-type", "array.prototype.flatmap", "is-weakmap", "through2", "jest-runner", "@smithy/fetch-http-handler", "is-data-view", "@aws-sdk/credential-provider-process", "emittery", "@types/istanbul-lib-report", "regjsparser", "date-fns", "@aws-sdk/middleware-logger", "data-urls", "@aws-sdk/middleware-host-header", "socks-proxy-agent", "@babel/plugin-transform-modules-amd", "jest-leak-detector", "jest-each", "@babel/plugin-transform-modules-umd", "strnum", "util", "jest-runtime", "@types/react-dom", "es-shim-unscopables", "data-view-buffer", "@babel/plugin-syntax-class-properties", "@aws-sdk/middleware-recursion-detection", "@babel/plugin-syntax-logical-assignment-operators", "@babel/plugin-transform-modules-commonjs", "jest-cli", "jest-config", "@jest/source-map", "tinyglobby", "@aws-sdk/util-endpoints", "psl", "@babel/plugin-syntax-nullish-coalescing-operator", "@aws-sdk/credential-provider-web-identity", "@babel/plugin-syntax-optional-catch-binding", "@smithy/querystring-builder", "ts-node", "@smithy/node-http-handler", "webpack", "@types/qs", "@babel/plugin-syntax-json-strings", "is-typedarray", "@smithy/util-middleware", "@smithy/shared-ini-file-loader", "@babel/plugin-syntax-numeric-separator", "@smithy/smithy-client", "@smithy/abort-controller", "jest", "normalize-url", "@babel/plugin-syntax-top-level-await", "@istanbuljs/load-nyc-config", "read-pkg-up", "shell-quote", "aggregate-error", "make-error", "fast-uri", "dom-accessibility-api", "cssstyle", "bser", "data-view-byte-length", "@smithy/node-config-provider", "bluebird", "data-view-byte-offset", "@jest/globals", "node-int64", "@babel/helper-define-polyfill-provider", "cli-spinners", "spdx-correct", "@aws-sdk/token-providers", "lodash.isplainobject", "@jest/reporters", "@humanwhocodes/config-array", "@opentelemetry/core", "@colors/colors", "object.fromentries", "@types/unist", "w3c-xmlserializer", "reflect.getprototypeof", "@humanwhocodes/object-schema", "jest-resolve-dependencies", "co", "process", "@smithy/middleware-endpoint", "jest-changed-files", "scheduler", "fb-watchman", "@smithy/util-stream", "@smithy/util-uri-escape", "@jest/test-sequencer", "@babel/plugin-syntax-import-meta", "@jridgewell/source-map", "prompts", "@jest/expect-utils", "v8-to-istanbul", "cacache", "core-js-compat", "terser-webpack-plugin", "eslint-module-utils", "spdx-exceptions", "sisteransi", "saxes", "pnpm", "buffer-crc32", "jws", "data-uri-to-buffer", "watchpack", "@jest/core", "decimal.js", "@smithy/querystring-parser", "eslint-plugin-import", "@babel/highlight", "arrify", "babel-plugin-polyfill-corejs3", "@types/mime", "@babel/plugin-transform-classes", "@smithy/util-hex-encoding", "is-data-descriptor", "ast-types", "jest-circus", "os-tmpdir", "socks", "@babel/plugin-transform-for-of", "@aws-sdk/region-config-resolver", "object.entries", "walker", "@babel/plugin-transform-spread", "color-string", "validate-npm-package-license", "@babel/plugin-transform-computed-properties", "@babel/plugin-transform-function-name", "@babel/plugin-transform-parameters", "is-generator-fn", "chardet", "eslint-import-resolver-node", "@babel/plugin-transform-destructuring", "@babel/plugin-transform-template-literals", "split2", "@types/body-parser", "is-interactive", "@types/serve-static", "http-cache-semantics", "@babel/plugin-transform-block-scoping", "tmpl", "@smithy/service-error-classification", "env-paths", "@smithy/url-parser", "@smithy/middleware-serde", "is-finalizationregistry", "regexpu-core", "@smithy/middleware-stack", "@babel/helper-create-regexp-features-plugin", "@ungap/structured-clone", "is-async-function", "eslint-config-prettier", "simple-swizzle", "object-hash", "@smithy/util-base64", "@babel/plugin-transform-regenerator", "@eslint/core", "boolbase", "@babel/plugin-transform-arrow-functions", "@babel/plugin-transform-shorthand-properties", "@babel/plugin-transform-literals", "is-arguments", "@aws-sdk/credential-provider-http", "which-builtin-type", "@smithy/signature-v4", "file-type", "babel-preset-current-node-syntax", "@babel/plugin-transform-member-expression-literals", "@babel/plugin-transform-property-literals", "yn", "babel-plugin-polyfill-regenerator", "autoprefixer", "@types/prop-types", "@babel/helper-remap-async-to-generator", "react", "nwsapi", "decompress-response", "jest-pnp-resolver", "is-obj", "redent", "@types/json5", "@babel/plugin-transform-block-scoped-functions", "glob-to-regexp", "abab", "@webassemblyjs/helper-buffer", "@webassemblyjs/ast", "@babel/helper-wrap-function", "@babel/plugin-transform-async-to-generator", "@babel/plugin-transform-object-super", "@types/lodash", "set-blocking", "he", "@webassemblyjs/ieee754", "regenerate-unicode-properties", "@webassemblyjs/helper-wasm-bytecode", "cli-truncate", "@types/jest", "on-headers", "@smithy/core", "json-stringify-safe", "@webassemblyjs/floating-point-hex-parser", "@cspotcode/source-map-support", "dayjs", "@smithy/util-defaults-mode-node", "@webassemblyjs/wast-printer", "@babel/plugin-transform-unicode-regex", "xmlchars", "has-value", "defaults", "@tsconfig/node10", "@webassemblyjs/helper-api-error", "@babel/plugin-transform-sticky-regex", "@types/ws", "@smithy/middleware-retry", "@webassemblyjs/wasm-gen", "astral-regex", "@webassemblyjs/wasm-parser", "wcwidth", "@webassemblyjs/wasm-edit", "@webassemblyjs/wasm-opt", "@webassemblyjs/helper-wasm-section", "@smithy/config-resolver", "@protobufjs/float", "babel-plugin-polyfill-corejs2", "@babel/plugin-transform-named-capturing-groups-regex", "rfdc", "run-async", "resolve.exports", "@types/range-parser", "@webassemblyjs/leb128", "@smithy/credential-provider-imds", "@webassemblyjs/utf8", "eslint-plugin-react", "ip-address", "no-case", "collect-v8-coverage", "loader-runner", "event-target-shim", "symbol-tree", "extsprintf", "lodash.debounce", "unicode-match-property-value-ecmascript", "has-values", "querystringify", "@babel/plugin-syntax-class-static-block", "@tsconfig/node16", "@types/connect", "@babel/plugin-transform-dotall-regex", "assert-plus", "lowercase-keys", "@smithy/util-defaults-mode-browser", "@babel/plugin-transform-modules-systemjs", "protobufjs", "@smithy/hash-node", "@tsconfig/node12", "@babel/plugin-transform-exponentiation-operator", "smart-buffer", "@babel/plugin-transform-unicode-escapes", "wordwrap", "@tsconfig/node14", "@babel/plugin-transform-duplicate-keys", "@babel/plugin-transform-new-target", "@swc/helpers", "lower-case", "string.prototype.matchall", "@babel/plugin-syntax-private-property-in-object", "@babel/plugin-transform-reserved-words", "performance-now", "url-parse", "uglify-js", "@types/eslint", "react-dom", "quick-lru", "@types/send", "create-require", "ecdsa-sig-formatter", "lodash.memoize", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining", "abort-controller", "@aws-crypto/sha256-js", "@types/graceful-fs", "meow", "exit", "@smithy/middleware-content-length", "unicode-property-aliases-ecmascript", "@babel/plugin-syntax-import-assertions", "chrome-trace-event", "@babel/plugin-proposal-private-property-in-object", "which-module", "unicode-match-property-ecmascript", "unique-slug", "tar-fs", "unique-filename", "unicode-canonical-property-names-ecmascript", "@smithy/util-endpoints", "is-potential-custom-element-name", "tunnel-agent", "@jest/expect", "@opentelemetry/api-logs", "immutable", "@babel/plugin-transform-typeof-symbol", "@smithy/invalid-dependency", "asap", "log-update", "jsx-ast-utils", "commondir", "moment", "v8-compile-cache-lib", "@smithy/util-config-provider", "@smithy/util-body-length-browser", "@sindresorhus/is", "@eslint/plugin-kit", "pure-rand", "map-obj", "@floating-ui/dom", "regenerate", "@babel/helper-globals", "@types/http-errors", "got", "@aws-crypto/util", "own-keys", "@vitest/utils", "concat-stream", "dot-prop", "chai", "dequal", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression", "domexception", "@types/semver", "@babel/preset-modules", "buffer-equal-constant-time", "get-tsconfig", "@floating-ui/core", "fsevents", "undici", "progress", "@octokit/types", "@radix-ui/react-primitive", "make-fetch-happen", "@emotion/memoize", "normalize-range", "tiny-invariant", "@npmcli/fs", "stop-iteration-iterator", "@rollup/pluginutils", "min-indent", "@babel/plugin-transform-class-properties", "xml2js", "jsonc-parser", "compression", "@opentelemetry/instrumentation", "is-accessor-descriptor", "json-schema", "tailwindcss", "@babel/plugin-transform-optional-chaining", "@testing-library/dom", "lodash.once", "@types/parse-json", "node-forge", "deep-extend", "@radix-ui/react-compose-refs", "axe-core", "set-proto", "deep-eql", "@babel/plugin-transform-private-methods", "tweetnacl", "@xtuc/long", "p-cancelable", "listr2", "lodash.isstring", "@xtuc/ieee754", "proc-log", "yauzl", "big.js", "object.groupby", "@babel/plugin-transform-nullish-coalescing-operator", "@smithy/util-body-length-node", "minimalistic-assert"]} \ No newline at end of file +{"date": "2025-09-17T13:14:36.395757+00:00", "packages": ["semver", "debug", "ansi-styles", "chalk", "minimatch", "supports-color", "ms", "strip-ansi", "tslib", "ansi-regex", "lru-cache", "brace-expansion", "string-width", "wrap-ansi", "type-fest", "commander", "glob", "color-convert", "source-map", "has-flag", "color-name", "emoji-regex", "readable-stream", "escape-string-regexp", "uuid", "p-locate", "find-up", "locate-path", "p-limit", "minipass", "yallist", "safe-buffer", "picomatch", "ajv", "is-fullwidth-code-point", "glob-parent", "json-schema-traverse", "@types/node", "which", "signal-exit", "string_decoder", "isarray", "eslint-visitor-keys", "argparse", "js-yaml", "yargs-parser", "resolve-from", "pretty-format", "fs-extra", "yargs", "globals", "acorn", "get-stream", "ws", "resolve", "iconv-lite", "react-is", "vite", "cliui", "path-exists", "estraverse", "path-key", "camelcase", "postcss", "agent-base", "mime-db", "@jridgewell/trace-mapping", "ignore", "inherits", "is-stream", "punycode", "rimraf", "cross-spawn", "mkdirp", "kind-of", "form-data", "whatwg-url", "execa", "json5", "mime-types", "https-proxy-agent", "qs", "picocolors", "tr46", "webidl-conversions", "undici-types", "slash", "@babel/types", "entities", "jsesc", "isexe", "eslint-scope", "is-number", "convert-source-map", "universalify", "make-dir", "onetime", "schema-utils", "@babel/parser", "@dataform/core", "braces", "fill-range", "shebang-regex", "micromatch", "statuses", "strip-json-comments", "@jest/types", "shebang-command", "@babel/traverse", "@babel/helper-validator-identifier", "chokidar", "buffer", "y18n", "function-bind", "get-intrinsic", "npm-run-path", "path-to-regexp", "cookie", "pify", "@jridgewell/sourcemap-codec", "balanced-match", "to-regex-range", "yaml", "mime", "is-arrayish", "js-tokens", "strip-bom", "readdirp", "has-symbols", "graceful-fs", "minimist", "parse-json", "is-glob", "@babel/generator", "@jridgewell/gen-mapping", "cosmiconfig", "ci-info", "fast-glob", "node-fetch", "caniuse-lite", "is-core-module", "negotiator", "once", "lodash", "source-map-support", "electron-to-chromium", "encodeurl", "@babel/core", "fast-deep-equal", "object-inspect", "depd", "browserslist", "@babel/code-frame", "http-errors", "normalize-path", "ansi-escapes", "human-signals", "escalade", "es-define-property", "yocto-queue", "doctrine", "mimic-fn", "http-proxy-agent", "jsonfile", "esbuild", "typescript", "jest-util", "sprintf-js", "jest-worker", "wrappy", "@types/estree", "@babel/runtime", "@types/yargs", "hasown", "@babel/template", "path-type", "ini", "@smithy/util-utf8", "callsites", "gopd", "@babel/helper-string-parser", "nanoid", "axios", "is-extglob", "pkg-dir", "globby", "concat-map", "async", "write-file-atomic", "anymatch", "get-caller-file", "dotenv", "import-fresh", "@esbuild/linux-x64", "esprima", "node-releases", "@babel/helper-module-transforms", "@smithy/util-buffer-from", "optionator", "@aws-sdk/types", "espree", "es-object-atoms", "postcss-selector-parser", "safer-buffer", "@jridgewell/resolve-uri", "slice-ansi", "@babel/helper-plugin-utils", "fastq", "json-parse-even-better-errors", "fs.realpath", "eslint", "@smithy/types", "fast-json-stable-stringify", "jackspeak", "call-bind-apply-helpers", "levn", "strip-final-newline", "on-finished", "math-intrinsics", "es-errors", "has-tostringtag", "require-directory", "update-browserslist-db", "@babel/helper-module-imports", "path-parse", "hosted-git-info", "@babel/helper-compilation-targets", "@babel/helpers", "reusify", "setprototypeof", "rxjs", "object-assign", "asynckit", "diff", "istanbul-lib-instrument", "@babel/compat-data", "delayed-stream", "call-bind", "util-deprecate", "combined-stream", "magic-string", "@typescript-eslint/typescript-estree", "path-is-absolute", "type-check", "flat-cache", "path-scurry", "bytes", "get-proto", "follow-redirects", "imurmurhash", "flatted", "@nodelib/fs.stat", "@smithy/is-array-buffer", "@typescript-eslint/types", "restore-cursor", "ajv-keywords", "esutils", "file-entry-cache", "core-util-is", "es-set-tostringtag", "prelude-ls", "@typescript-eslint/visitor-keys", "dunder-proto", "@babel/helper-validator-option", "is-plain-obj", "cli-cursor", "@jest/schemas", "supports-preserve-symlinks-flag", "chownr", "finalhandler", "ieee754", "is-wsl", "run-parallel", "parse5", "uri-js", "define-property", "@nodelib/fs.walk", "estree-walker", "foreground-child", "p-try", "tough-cookie", "@sinclair/typebox", "queue-microtask", "extend-shallow", "eventemitter3", "ipaddr.js", "@nodelib/fs.scandir", "regenerator-runtime", "base64-js", "merge2", "lines-and-columns", "domutils", "jest-message-util", "raw-body", "buffer-from", "open", "@typescript-eslint/scope-manager", "parent-module", "prettier", "keyv", "send", "is-binary-path", "binary-extensions", "inflight", "indent-string", "@eslint/eslintrc", "is-regex", "fast-levenshtein", "p-map", "dom-serializer", "error-ex", "source-map-js", "natural-compare", "acorn-walk", "@eslint/js", "has-property-descriptors", "accepts", "deep-is", "media-typer", "esrecurse", "proxy-from-env", "type-is", "@types/json-schema", "body-parser", "tmp", "content-disposition", "is-callable", "jest-diff", "side-channel", "arg", "esquery", "domhandler", "jest-regex-util", "define-properties", "merge-stream", "loader-utils", "which-typed-array", "postcss-value-parser", "acorn-jsx", "isobject", "object-keys", "fresh", "is-plain-object", "pump", "deepmerge", "object.assign", "es-abstract", "retry", "lodash.merge", "json-buffer", "@ampproject/remapping", "gensync", "log-symbols", "cookie-signature", "end-of-stream", "is-docker", "tar", "side-channel-map", "is-extendable", "aria-query", "word-wrap", "detect-libc", "array-union", "rollup", "is-unicode-supported", "tapable", "express", "normalize-package-data", "merge-descriptors", "csstype", "side-channel-list", "set-function-length", "range-parser", "eastasianwidth", "json-stable-stringify-without-jsonify", "content-type", "@babel/helper-annotate-as-pure", "events", "is-typed-array", "jest-get-type", "enhanced-resolve", "for-each", "is-symbol", "istanbul-lib-coverage", "pirates", "jiti", "escape-html", "bn.js", "figures", "vary", "call-bound", "@typescript-eslint/utils", "define-data-property", "@eslint-community/regexpp", "regexp.prototype.flags", "jest-matcher-utils", "is-date-object", "domelementtype", "@eslint-community/eslint-utils", "@types/react", "tsconfig-paths", "toidentifier", "@smithy/property-provider", "safe-regex-test", "@sinonjs/fake-timers", "mute-stream", "bl", "htmlparser2", "internal-slot", "parseurl", "process-nextick-args", "es-to-primitive", "unpipe", "available-typed-arrays", "jest-mock", "etag", "@isaacs/cliui", "require-from-string", "is-boolean-object", "colorette", "zod", "is-path-inside", "is-string", "type-detect", "is-number-object", "@opentelemetry/semantic-conventions", "@types/babel__traverse", "ee-first", "has-proto", "jest-haste-map", "@babel/plugin-syntax-jsx", "mdn-data", "is-bigint", "css-tree", "which-boxed-primitive", "serialize-javascript", "side-channel-weakmap", "diff-sequences", "dir-glob", "clone", "@humanwhocodes/module-importer", "string.prototype.trimstart", "package-json-from-dist", "expect", "string.prototype.trimend", "istanbul-reports", "fs-minipass", "test-exclude", "@pkgjs/parseargs", "decamelize", "is-shared-array-buffer", "fast-xml-parser", "minizlib", "possible-typed-array-names", "get-symbol-description", "ts-api-utils", "function.prototype.name", "whatwg-mimetype", "has-bigints", "terser", "cjs-module-lexer", "loose-envify", "istanbul-lib-source-maps", "css-select", "sax", "nopt", "ora", "is-weakref", "@typescript-eslint/parser", "read-pkg", "serve-static", "is-generator-function", "@smithy/protocol-http", "core-js", "proxy-addr", "forwarded", "unbox-primitive", "@sinonjs/commons", "ajv-formats", "prop-types", "xtend", "array-buffer-byte-length", "mimic-response", "kleur", "html-escaper", "functions-have-names", "@jest/transform", "is-descriptor", "webpack-sources", "destroy", "fdir", "node-addon-api", "@types/istanbul-reports", "dedent", "string.prototype.trim", "istanbul-lib-report", "@jest/console", "graphemer", "@types/babel__core", "@rollup/rollup-linux-x64-musl", "lilconfig", "@jridgewell/set-array", "@types/babel__generator", "jwa", "array-flatten", "tar-stream", "globalthis", "find-cache-dir", "methods", "string-length", "@babel/plugin-syntax-typescript", "is-array-buffer", "@jest/fake-timers", "@babel/helper-skip-transparent-expression-wrappers", "escodegen", "@babel/helper-member-expression-to-functions", "utils-merge", "@types/babel__template", "@jest/test-result", "@typescript-eslint/eslint-plugin", "@types/express-serve-static-core", "@istanbuljs/schema", "@jest/environment", "extend", "typed-array-length", "whatwg-encoding", "cli-width", "safe-array-concat", "typed-array-buffer", "jest-validate", "typed-array-byte-offset", "css-what", "strip-indent", "@babel/helper-replace-supers", "define-lazy-prop", "@babel/helper-create-class-features-plugin", "jsdom", "import-local", "array-includes", "leven", "char-regex", "neo-async", "clsx", "abbrev", "@aws-sdk/credential-provider-node", "@babel/preset-env", "@babel/helper-optimise-call-expression", "babel-plugin-jest-hoist", "arraybuffer.prototype.slice", "es-module-lexer", "@humanwhocodes/retry", "cssesc", "jsbn", "object.values", "clean-stack", "babel-jest", "resolve-cwd", "set-function-name", "nth-check", "@aws-sdk/util-user-agent-node", "@aws-sdk/middleware-user-agent", "inquirer", "jest-watcher", "is-set", "text-table", "@smithy/util-retry", "jest-resolve", "@rollup/rollup-linux-x64-gnu", "typed-array-byte-length", "@types/express", "is-buffer", "babel-plugin-istanbul", "@aws-sdk/credential-provider-process", "color", "pako", "@aws-sdk/credential-provider-ini", "randombytes", "@aws-sdk/middleware-host-header", "is-map", "cssom", "jest-snapshot", "date-fns", "stack-utils", "ansi-colors", "babel-preset-jest", "html-encoding-sniffer", "detect-newline", "@types/uuid", "@types/yargs-parser", "@bcoe/v8-coverage", "through", "jest-environment-node", "is-negative-zero", "jest-docblock", "xml-name-validator", "@babel/plugin-syntax-object-rest-spread", "@typescript-eslint/type-utils", "@types/istanbul-lib-coverage", "long", "spdx-expression-parse", "xmlbuilder", "pathe", "@babel/plugin-syntax-import-attributes", "spdx-license-ids", "@babel/plugin-syntax-async-generators", "@aws-sdk/credential-provider-sso", "psl", "webpack", "@aws-sdk/client-sso", "array.prototype.flat", "@opentelemetry/core", "data-urls", "which-collection", "@smithy/fetch-http-handler", "regjsparser", "through2", "@aws-sdk/core", "dom-accessibility-api", "@aws-sdk/credential-provider-env", "@aws-sdk/middleware-logger", "emittery", "aggregate-error", "@types/istanbul-lib-report", "@aws-sdk/util-user-agent-browser", "socks-proxy-agent", "cli-spinners", "is-weakset", "@types/stack-utils", "@tootallnate/once", "get-package-type", "util", "jest-runtime", "array.prototype.flatmap", "is-data-view", "@babel/plugin-transform-modules-commonjs", "is-weakmap", "@types/react-dom", "@types/unist", "@aws-sdk/util-endpoints", "@babel/plugin-transform-modules-amd", "@aws-sdk/credential-provider-web-identity", "@jest/source-map", "ssri", "@babel/plugin-syntax-optional-chaining", "jest-each", "@babel/plugin-transform-modules-umd", "@babel/plugin-syntax-nullish-coalescing-operator", "strnum", "@babel/plugin-syntax-optional-catch-binding", "es-shim-unscopables", "data-view-buffer", "@smithy/abort-controller", "@smithy/shared-ini-file-loader", "@smithy/util-middleware", "ts-node", "@smithy/smithy-client", "@babel/plugin-syntax-json-strings", "normalize-url", "@babel/plugin-syntax-numeric-separator", "jest-runner", "jest", "jest-config", "tinyglobby", "v8-to-istanbul", "@babel/plugin-syntax-top-level-await", "read-pkg-up", "cssstyle", "@smithy/node-config-provider", "make-error", "@smithy/querystring-builder", "lodash.isplainobject", "jest-leak-detector", "@jest/globals", "bluebird", "@smithy/node-http-handler", "@aws-sdk/token-providers", "is-typedarray", "@aws-sdk/middleware-recursion-detection", "node-int64", "@jest/reporters", "@babel/plugin-syntax-logical-assignment-operators", "@istanbuljs/load-nyc-config", "@babel/plugin-syntax-class-properties", "shell-quote", "requires-port", "jest-cli", "fast-uri", "data-view-byte-length", "process", "jest-resolve-dependencies", "@babel/plugin-transform-classes", "@types/qs", "jest-changed-files", "co", "spdx-correct", "data-view-byte-offset", "fb-watchman", "@humanwhocodes/config-array", "object.fromentries", "@babel/plugin-syntax-import-meta", "walker", "cacache", "w3c-xmlserializer", "@jest/expect-utils", "@babel/plugin-transform-parameters", "reflect.getprototypeof", "prompts", "@humanwhocodes/object-schema", "core-js-compat", "scheduler", "terser-webpack-plugin", "bser", "buffer-crc32", "@babel/helper-define-polyfill-provider", "saxes", "sisteransi", "@smithy/util-uri-escape", "@jest/test-sequencer", "@colors/colors", "data-uri-to-buffer", "@jridgewell/source-map", "watchpack", "arrify", "decimal.js", "spdx-exceptions", "eslint-plugin-import", "pnpm", "@smithy/util-stream", "babel-plugin-polyfill-corejs3", "@smithy/util-hex-encoding", "@types/mime", "@babel/highlight", "@babel/plugin-transform-arrow-functions", "jws", "ast-types", "@babel/plugin-transform-for-of", "@babel/plugin-transform-shorthand-properties", "socks", "@jest/core", "@babel/plugin-transform-function-name", "@smithy/querystring-parser", "@types/body-parser", "makeerror", "@types/serve-static", "eslint-module-utils", "color-string", "chardet", "split2", "@babel/plugin-transform-destructuring", "file-type", "is-data-descriptor", "@babel/plugin-transform-block-scoping", "os-tmpdir", "@smithy/url-parser", "@smithy/middleware-serde", "@smithy/middleware-stack", "validate-npm-package-license", "regexpu-core", "eslint-config-prettier", "is-generator-fn", "is-interactive", "tmpl", "@babel/plugin-transform-block-scoped-functions", "jest-circus", "glob-to-regexp", "@aws-sdk/region-config-resolver", "@smithy/service-error-classification", "object-hash", "@eslint/core", "@smithy/middleware-endpoint", "is-finalizationregistry", "@babel/plugin-transform-spread", "is-async-function", "@babel/plugin-transform-computed-properties", "simple-swizzle", "http-cache-semantics", "@types/jest", "eslint-import-resolver-node", "@babel/plugin-transform-template-literals", "boolbase", "env-paths", "dayjs", "yn", "autoprefixer", "is-arguments", "nwsapi", "@babel/helper-create-regexp-features-plugin", "@ungap/structured-clone", "which-builtin-type", "@types/prop-types", "@babel/plugin-transform-sticky-regex", "@smithy/util-base64", "babel-preset-current-node-syntax", "@babel/plugin-transform-regenerator", "@webassemblyjs/wasm-opt", "@types/lodash", "babel-plugin-polyfill-corejs2", "@babel/plugin-transform-named-capturing-groups-regex", "react", "cli-truncate", "@webassemblyjs/ast", "@babel/plugin-transform-async-to-generator", "resolve.exports", "@babel/plugin-transform-object-super", "@aws-sdk/credential-provider-http", "he", "jest-pnp-resolver", "is-obj", "@babel/plugin-transform-literals", "redent", "@webassemblyjs/helper-wasm-bytecode", "on-headers", "@babel/plugin-transform-member-expression-literals", "@babel/plugin-transform-property-literals", "@smithy/signature-v4", "babel-plugin-polyfill-regenerator", "abab", "json-stringify-safe", "decompress-response", "@babel/helper-remap-async-to-generator", "set-blocking", "@babel/plugin-transform-dotall-regex", "regenerate-unicode-properties", "@webassemblyjs/wast-printer", "object.entries", "@babel/plugin-transform-unicode-regex", "@webassemblyjs/helper-api-error", "@tsconfig/node14", "@smithy/core", "@smithy/middleware-retry", "@webassemblyjs/wasm-gen", "@webassemblyjs/wasm-parser", "@webassemblyjs/wasm-edit", "@webassemblyjs/helper-buffer", "@webassemblyjs/helper-wasm-section", "rfdc", "@cspotcode/source-map-support", "uglify-js", "@types/range-parser", "@babel/helper-wrap-function", "@webassemblyjs/leb128", "@webassemblyjs/ieee754", "@webassemblyjs/utf8", "xmlchars", "defaults", "quick-lru", "symbol-tree", "lodash.debounce", "@smithy/hash-node", "wcwidth", "lodash.memoize", "@protobufjs/float", "run-async", "abort-controller", "@smithy/util-defaults-mode-browser", "@webassemblyjs/floating-point-hex-parser", "protobufjs", "@babel/plugin-transform-unicode-escapes", "@tsconfig/node16", "@babel/plugin-transform-modules-systemjs", "@tsconfig/node10", "smart-buffer", "@babel/plugin-transform-exponentiation-operator", "@types/ws", "@types/graceful-fs", "wordwrap", "extsprintf", "@types/json5", "@babel/plugin-transform-duplicate-keys", "@babel/plugin-transform-new-target", "unicode-match-property-value-ecmascript", "lower-case", "@smithy/config-resolver", "has-values", "@babel/plugin-syntax-private-property-in-object", "collect-v8-coverage", "immutable", "@swc/helpers", "ip-address", "@types/connect", "assert-plus", "lowercase-keys", "eslint-plugin-react", "@babel/plugin-transform-reserved-words", "event-target-shim", "no-case", "url-parse", "loader-runner", "@types/eslint", "string.prototype.matchall", "@babel/plugin-syntax-class-static-block", "querystringify", "@tsconfig/node12", "@smithy/util-defaults-mode-node", "react-dom", "@smithy/middleware-content-length", "@types/http-errors", "create-require", "ecdsa-sig-formatter", "exit", "@babel/plugin-syntax-import-assertions", "tar-fs", "tunnel-agent", "@types/send", "@smithy/credential-provider-imds", "chrome-trace-event", "@babel/plugin-proposal-private-property-in-object", "jsx-ast-utils", "which-module", "unicode-match-property-ecmascript", "@smithy/util-body-length-browser", "unique-slug", "unique-filename", "@sindresorhus/is", "unicode-canonical-property-names-ecmascript", "is-potential-custom-element-name", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining", "@babel/plugin-transform-typeof-symbol", "@eslint/plugin-kit", "@aws-crypto/sha256-js", "meow", "@smithy/invalid-dependency", "map-obj", "commondir", "@opentelemetry/api-logs", "got", "@floating-ui/dom", "v8-compile-cache-lib", "@smithy/util-config-provider", "@aws-crypto/util", "@jest/expect", "@types/parse-json", "concat-stream", "dot-prop", "pure-rand", "chai", "asap", "regenerate", "dequal", "@babel/helper-globals", "node-forge", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression", "log-update", "@types/semver", "moment", "get-tsconfig", "@opentelemetry/instrumentation", "astral-regex", "@octokit/types", "@floating-ui/core", "@smithy/util-body-length-node", "own-keys", "safe-push-apply", "@rollup/pluginutils", "@babel/plugin-transform-nullish-coalescing-operator", "domexception", "@babel/preset-modules", "yauzl", "buffer-equal-constant-time", "@radix-ui/react-primitive", "unicode-property-aliases-ecmascript", "xml2js", "fsevents", "undici", "jsonc-parser", "tiny-invariant", "@vitest/utils", "@babel/plugin-transform-optional-chaining", "@testing-library/dom", "json-schema", "normalize-range", "lodash.once", "@npmcli/fs", "@smithy/util-endpoints", "stop-iteration-iterator", "min-indent", "@babel/plugin-transform-object-rest-spread", "deep-eql", "progress", "make-fetch-happen", "@babel/plugin-transform-private-methods", "is-accessor-descriptor", "tailwindcss", "@radix-ui/react-compose-refs", "performance-now", "tweetnacl", "@emotion/memoize", "@babel/plugin-transform-class-properties", "big.js", "axe-core", "set-proto", "compression", "@babel/plugin-transform-private-property-in-object", "jsonwebtoken", "@radix-ui/primitive", "@babel/plugin-transform-async-generator-functions", "@webassemblyjs/helper-numbers", "@babel/plugin-transform-logical-assignment-operators", "@xtuc/long", "deep-extend"]} \ No newline at end of file diff --git a/src/twyn/dependency_parser/parsers/yarn_lock_parser.py b/src/twyn/dependency_parser/parsers/yarn_lock_parser.py index 0e34cc8..c390b6e 100644 --- a/src/twyn/dependency_parser/parsers/yarn_lock_parser.py +++ b/src/twyn/dependency_parser/parsers/yarn_lock_parser.py @@ -30,26 +30,29 @@ def parse(self) -> set[str]: def _parse_v1(self, fp: TextIO) -> set[str]: """Parse a yarn.lock file and return all the dependencies in it.""" - key_line_re = re.compile(r"^(?P[^ \t].*?):\s*$", re.MULTILINE) + # Match the entire line up to the colon (allows multiple quoted keys) + key_line_re = re.compile(r"^(?P[^ \t].*?):\s*$") names = set() + for line in fp: match = key_line_re.match(line) if not match: continue key = match.group("key").strip() - # Remove surrounding quotes if present - if (key.startswith('"') and key.endswith('"')) or (key.startswith("'") and key.endswith("'")): - key = key[1:-1] - # Split selectors (comma-separated) + # Split on commas at the top level (handles multiple quoted keys) parts = [p.strip() for p in key.split(",")] for part in parts: + # Remove surrounding quotes if present if (part.startswith('"') and part.endswith('"')) or (part.startswith("'") and part.endswith("'")): part = part[1:-1] # noqa: PLW2901 + + # Skip anything without '@' (not a valid package selector) if "@" not in part: continue - # Package name is everything before the last '@' + + # Get everything before the last '@' as the package name pkg_name = part.rsplit("@", 1)[0] names.add(pkg_name) diff --git a/src/twyn/trusted_packages/constants.py b/src/twyn/trusted_packages/constants.py index 55d81f6..ac2ec2d 100644 --- a/src/twyn/trusted_packages/constants.py +++ b/src/twyn/trusted_packages/constants.py @@ -40,4 +40,5 @@ "b": ["g", "h", "v", "n"], "n": ["h", "j", "b", "m"], "m": ["j", "k", "n"], + "@": ["1", "2", "3", "q", "w"], } diff --git a/tests/conftest.py b/tests/conftest.py index 61e296c..02bdb08 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -413,6 +413,10 @@ def yarn_lock_file_v1(tmp_path: Path) -> Iterator[Path]: dependencies: loose-envify "^1.1.0" react "^18.2.0" +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.8.0": + version "7.26.5" + resolved "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz#18580d00c9934117ad719392c4f6585c9333cc35" + integrity sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg== """ with create_tmp_file(yarn_file, data) as tmp_file: yield tmp_file diff --git a/tests/dependency_parser/test_dependency_parser.py b/tests/dependency_parser/test_dependency_parser.py index 9595ff1..f164283 100644 --- a/tests/dependency_parser/test_dependency_parser.py +++ b/tests/dependency_parser/test_dependency_parser.py @@ -96,7 +96,7 @@ class TestYarnLockParser: def test_parse_yarn_lock_v1(self, yarn_lock_file_v1: Path) -> None: parser = YarnLockParser(file_path=str(yarn_lock_file_v1)) - assert parser.parse() == {"lodash", "react", "react-dom"} + assert parser.parse() == {"lodash", "react", "react-dom", "@babel/helper-plugin-utils"} def test_parse_yarn_lock_v2(self, yarn_lock_file_v2: Path) -> None: parser = YarnLockParser(file_path=str(yarn_lock_file_v2))