Skip to content

Instantly share code, notes, and snippets.

@michaelbromley
Created November 25, 2025 08:20
Show Gist options
  • Select an option

  • Save michaelbromley/ccb954b5224bce3798cceaa137cc3bbb to your computer and use it in GitHub Desktop.

Select an option

Save michaelbromley/ccb954b5224bce3798cceaa137cc3bbb to your computer and use it in GitHub Desktop.
Script to detect packages affected by Shai Hulud's Return - Nov 2025
#!/usr/bin/env node
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
// Source of this list:
// https://helixguard.ai/blog/malicious-sha1hulud-2025-11-24
const affectedPackages = [
{
"name": "cbre-flow-common",
"version": "99.2.0"
},
{
"name": "cbre-flow-common",
"version": "99.3.0"
},
{
"name": "cbre-flow-common",
"version": "99.4.0"
},
{
"name": "cbre-flow-common",
"version": "99.5.0"
},
{
"name": "cbre-flow-common",
"version": "99.6.0"
},
{
"name": "@asyncapi/diff",
"version": "0.5.2"
},
{
"name": "@asyncapi/avro-schema-parser",
"version": "3.0.26"
},
{
"name": "@asyncapi/markdown-template",
"version": "1.6.8"
},
{
"name": "@asyncapi/generator-helpers",
"version": "0.2.1"
},
{
"name": "@asyncapi/avro-schema-parser",
"version": "3.0.25"
},
{
"name": "@asyncapi/bundler",
"version": "0.6.6"
},
{
"name": "@asyncapi/modelina-cli",
"version": "5.10.2"
},
{
"name": "@asyncapi/generator-react-sdk",
"version": "1.1.4"
},
{
"name": "@asyncapi/generator-react-sdk",
"version": "1.1.5"
},
{
"name": "@aryanhussain/my-angular-lib",
"version": "0.0.23"
},
{
"name": "@asyncapi/generator-helpers",
"version": "0.2.2"
},
{
"name": "@asyncapi/diff",
"version": "0.5.1"
},
{
"name": "@asyncapi/dotnet-rabbitmq-template",
"version": "1.0.1"
},
{
"name": "@asyncapi/dotnet-rabbitmq-template",
"version": "1.0.2"
},
{
"name": "@actbase/react-native-devtools",
"version": "0.1.3"
},
{
"name": "@asyncapi/edavisualiser",
"version": "1.2.1"
},
{
"name": "@asyncapi/edavisualiser",
"version": "1.2.2"
},
{
"name": "@asyncapi/keeper",
"version": "0.0.3"
},
{
"name": "@asyncapi/keeper",
"version": "0.0.2"
},
{
"name": "@asyncapi/java-template",
"version": "0.3.6"
},
{
"name": "@actbase/react-kakaosdk",
"version": "0.9.27"
},
{
"name": "@asyncapi/java-template",
"version": "0.3.5"
},
{
"name": "@asyncapi/html-template",
"version": "3.3.2"
},
{
"name": "@actbase/react-daum-postcode",
"version": "1.0.5"
},
{
"name": "@actbase/react-native-kakao-navi",
"version": "2.0.4"
},
{
"name": "@asyncapi/generator",
"version": "2.8.5"
},
{
"name": "@asyncapi/go-watermill-template",
"version": "0.2.77"
},
{
"name": "@asyncapi/go-watermill-template",
"version": "0.2.76"
},
{
"name": "@asyncapi/modelina",
"version": "5.10.2"
},
{
"name": "@actbase/react-native-tiktok",
"version": "1.1.3"
},
{
"name": "@asyncapi/html-template",
"version": "3.3.3"
},
{
"name": "@asyncapi/bundler",
"version": "0.6.5"
},
{
"name": "@actbase/react-native-less-transformer",
"version": "1.0.6"
},
{
"name": "@asyncapi/java-spring-cloud-stream-template",
"version": "0.13.5"
},
{
"name": "@actbase/react-native-naver-login",
"version": "1.0.1"
},
{
"name": "@asyncapi/java-spring-template",
"version": "1.6.1"
},
{
"name": "@actbase/css-to-react-native-transform",
"version": "1.0.3"
},
{
"name": "@asyncapi/cli",
"version": "4.1.2"
},
{
"name": "@asyncapi/java-spring-cloud-stream-template",
"version": "0.13.6"
},
{
"name": "@asyncapi/converter",
"version": "1.6.3"
},
{
"name": "@actbase/react-native-fast-image",
"version": "8.5.13"
},
{
"name": "@actbase/react-absolute",
"version": "0.8.3"
},
{
"name": "@actbase/react-native-simple-video",
"version": "1.0.13"
},
{
"name": "@asyncapi/generator-components",
"version": "0.3.2"
},
{
"name": "@asyncapi/modelina",
"version": "5.10.3"
},
{
"name": "@asyncapi/java-spring-template",
"version": "1.6.2"
},
{
"name": "@actbase/node-server",
"version": "1.1.19"
},
{
"name": "@actbase/react-native-actionsheet",
"version": "1.0.3"
},
{
"name": "@asyncapi/markdown-template",
"version": "1.6.9"
},
{
"name": "@actbase/react-native-kakao-channel",
"version": "1.0.2"
},
{
"name": "@asyncapi/openapi-schema-parser",
"version": "3.0.25"
},
{
"name": "@asyncapi/modelina-cli",
"version": "5.10.3"
},
{
"name": "@asyncapi/problem",
"version": "1.0.2"
},
{
"name": "@asyncapi/optimizer",
"version": "1.0.5"
},
{
"name": "@asyncapi/nunjucks-filters",
"version": "2.1.1"
},
{
"name": "@asyncapi/multi-parser",
"version": "2.2.1"
},
{
"name": "@asyncapi/multi-parser",
"version": "2.2.2"
},
{
"name": "@asyncapi/problem",
"version": "1.0.1"
},
{
"name": "@asyncapi/protobuf-schema-parser",
"version": "3.5.3"
},
{
"name": "@ensdomains/ens-validation",
"version": "0.1.1"
},
{
"name": "@ensdomains/content-hash",
"version": "3.0.1"
},
{
"name": "@asyncapi/protobuf-schema-parser",
"version": "3.6.1"
},
{
"name": "@asyncapi/optimizer",
"version": "1.0.6"
},
{
"name": "@asyncapi/specs",
"version": "6.8.2"
},
{
"name": "@asyncapi/parser",
"version": "3.4.2"
},
{
"name": "@asyncapi/php-template",
"version": "0.1.1"
},
{
"name": "@ensdomains/dnssec-oracle-anchors",
"version": "0.0.2"
},
{
"name": "@ensdomains/ens-archived-contracts",
"version": "0.0.3"
},
{
"name": "@asyncapi/react-component",
"version": "2.6.6"
},
{
"name": "@ensdomains/name-wrapper",
"version": "1.0.1"
},
{
"name": "@ensdomains/durin-middleware",
"version": "0.0.2"
},
{
"name": "@asyncapi/web-component",
"version": "2.6.6"
},
{
"name": "@ensdomains/blacklist",
"version": "1.0.1"
},
{
"name": "@asyncapi/specs",
"version": "6.10.1"
},
{
"name": "@asyncapi/nodejs-ws-template",
"version": "0.10.1"
},
{
"name": "@ensdomains/curvearithmetics",
"version": "1.0.1"
},
{
"name": "@asyncapi/python-paho-template",
"version": "0.2.15"
},
{
"name": "@ensdomains/ccip-read-worker-viem",
"version": "0.0.4"
},
{
"name": "@asyncapi/python-paho-template",
"version": "0.2.14"
},
{
"name": "@ensdomains/ccip-read-dns-gateway",
"version": "0.1.1"
},
{
"name": "@ensdomains/ccip-read-router",
"version": "0.0.7"
},
{
"name": "@ensdomains/hardhat-toolbox-viem-extended",
"version": "0.0.6"
},
{
"name": "@ensdomains/cypress-metamask",
"version": "1.2.1"
},
{
"name": "@ensdomains/eth-ens-namehash",
"version": "2.0.16"
},
{
"name": "@asyncapi/nodejs-ws-template",
"version": "0.10.2"
},
{
"name": "@asyncapi/nodejs-template",
"version": "3.0.5"
},
{
"name": "@ensdomains/dnsprovejs",
"version": "0.5.3"
},
{
"name": "@asyncapi/web-component",
"version": "2.6.7"
},
{
"name": "@ensdomains/dnssecoraclejs",
"version": "0.2.9"
},
{
"name": "@ensdomains/ens-avatar",
"version": "1.0.4"
},
{
"name": "@ensdomains/hardhat-chai-matchers-viem",
"version": "0.1.15"
},
{
"name": "@ensdomains/mock",
"version": "2.1.52"
},
{
"name": "@ensdomains/hackathon-registrar",
"version": "1.0.5"
},
{
"name": "@asyncapi/nunjucks-filters",
"version": "2.1.2"
},
{
"name": "@asyncapi/parser",
"version": "3.4.1"
},
{
"name": "@asyncapi/specs",
"version": "6.8.3"
},
{
"name": "@ensdomains/address-encoder",
"version": "1.1.5"
},
{
"name": "@ensdomains/buffer",
"version": "0.1.2"
},
{
"name": "@asyncapi/server-api",
"version": "0.16.25"
},
{
"name": "@asyncapi/specs",
"version": "6.9.1"
},
{
"name": "@posthog/cli",
"version": "0.5.15"
},
{
"name": "@posthog/core",
"version": "1.5.6"
},
{
"name": "@posthog/customerio-plugin",
"version": "0.0.8"
},
{
"name": "@posthog/event-sequence-timer-plugin",
"version": "0.0.8"
},
{
"name": "@posthog/nextjs-config",
"version": "1.5.1"
},
{
"name": "@posthog/automatic-cohorts-plugin",
"version": "0.0.8"
},
{
"name": "@posthog/ai",
"version": "7.1.2"
},
{
"name": "@ensdomains/subdomain-registrar",
"version": "0.2.4"
},
{
"name": "@ensdomains/vite-plugin-i18next-loader",
"version": "4.0.4"
},
{
"name": "@kvytech/web",
"version": "0.0.2"
},
{
"name": "@ensdomains/unruggable-gateways",
"version": "0.0.3"
},
{
"name": "@markvivanco/app-version-checker",
"version": "1.0.2"
},
{
"name": "@posthog/first-time-event-tracker",
"version": "0.0.8"
},
{
"name": "@markvivanco/app-version-checker",
"version": "1.0.1"
},
{
"name": "@posthog/nextjs",
"version": "0.0.3"
},
{
"name": "@posthog/hedgehog-mode",
"version": "0.0.42"
},
{
"name": "@posthog/ingestion-alert-plugin",
"version": "0.0.8"
},
{
"name": "@posthog/plugin-contrib",
"version": "0.0.6"
},
{
"name": "@ensdomains/unicode-confusables",
"version": "0.1.1"
},
{
"name": "@ensdomains/react-ens-address",
"version": "0.0.32"
},
{
"name": "@posthog/piscina",
"version": "3.2.1"
},
{
"name": "@kvytech/medusa-plugin-management",
"version": "0.0.5"
},
{
"name": "@kvytech/components",
"version": "0.0.2"
},
{
"name": "@ensdomains/reverse-records",
"version": "1.0.1"
},
{
"name": "@posthog/rrdom",
"version": "0.0.31"
},
{
"name": "@ensdomains/test-utils",
"version": "1.3.1"
},
{
"name": "@kvytech/medusa-plugin-product-reviews",
"version": "0.0.9"
},
{
"name": "@ensdomains/renewal-widget",
"version": "0.1.10"
},
{
"name": "@kvytech/medusa-plugin-announcement",
"version": "0.0.8"
},
{
"name": "@posthog/pagerduty-plugin",
"version": "0.0.8"
},
{
"name": "@posthog/kinesis-plugin",
"version": "0.0.8"
},
{
"name": "@posthog/nuxt",
"version": "1.2.9"
},
{
"name": "@posthog/react-rrweb-player",
"version": "1.1.4"
},
{
"name": "@ensdomains/ui",
"version": "3.4.6"
},
{
"name": "@ensdomains/offchain-resolver-contracts",
"version": "0.2.2"
},
{
"name": "@posthog/plugin-unduplicates",
"version": "0.0.8"
},
{
"name": "@posthog/gitub-star-sync-plugin",
"version": "0.0.8"
},
{
"name": "@ensdomains/thorin",
"version": "0.6.51"
},
{
"name": "@kvytech/cli",
"version": "0.0.7"
},
{
"name": "@ensdomains/renewal",
"version": "0.0.13"
},
{
"name": "@posthog/github-release-tracking-plugin",
"version": "0.0.8"
},
{
"name": "@kvytech/medusa-plugin-newsletter",
"version": "0.0.5"
},
{
"name": "@ensdomains/solsha1",
"version": "0.0.4"
},
{
"name": "@posthog/geoip-plugin",
"version": "0.0.8"
},
{
"name": "@posthog/maxmind-plugin",
"version": "0.1.6"
},
{
"name": "@posthog/currency-normalization-plugin",
"version": "0.0.8"
},
{
"name": "@ensdomains/web3modal",
"version": "1.10.2"
},
{
"name": "@ensdomains/server-analytics",
"version": "0.0.2"
},
{
"name": "@posthog/databricks-plugin",
"version": "0.0.8"
},
{
"name": "@posthog/agent",
"version": "1.24.1"
},
{
"name": "@postman/csv-parse",
"version": "4.0.3"
},
{
"name": "@posthog/url-normalizer-plugin",
"version": "0.0.8"
},
{
"name": "@postman/csv-parse",
"version": "4.0.4"
},
{
"name": "@posthog/rrweb-utils",
"version": "0.0.31"
},
{
"name": "@posthog/rrweb-player",
"version": "0.0.31"
},
{
"name": "@posthog/sendgrid-plugin",
"version": "0.0.8"
},
{
"name": "@posthog/rrweb-record",
"version": "0.0.31"
},
{
"name": "@postman/mcp-ui-client",
"version": "5.5.2"
},
{
"name": "@posthog/rrweb-snapshot",
"version": "0.0.31"
},
{
"name": "@postman/csv-parse",
"version": "4.0.5"
},
{
"name": "@postman/mcp-ui-client",
"version": "5.5.1"
},
{
"name": "@posthog/siphash",
"version": "1.1.2"
},
{
"name": "@postman/node-keytar",
"version": "7.9.5"
},
{
"name": "@postman/node-keytar",
"version": "7.9.6"
},
{
"name": "@postman/pm-bin-macos-arm64",
"version": "1.24.4"
},
{
"name": "@postman/pm-bin-macos-arm64",
"version": "1.24.3"
},
{
"name": "@postman/aether-icons",
"version": "2.23.4"
},
{
"name": "@posthog/twitter-followers-plugin",
"version": "0.0.8"
},
{
"name": "@postman/aether-icons",
"version": "2.23.2"
},
{
"name": "@posthog/wizard",
"version": "1.18.1"
},
{
"name": "@posthog/taxonomy-plugin",
"version": "0.0.8"
},
{
"name": "@postman/pm-bin-windows-x64",
"version": "1.24.4"
},
{
"name": "@postman/final-node-keytar",
"version": "7.9.1"
},
{
"name": "@posthog/web-dev-server",
"version": "1.0.5"
},
{
"name": "@posthog/snowflake-export-plugin",
"version": "0.0.8"
},
{
"name": "@posthog/rrweb",
"version": "0.0.31"
},
{
"name": "@posthog/twilio-plugin",
"version": "0.0.8"
},
{
"name": "@postman/node-keytar",
"version": "7.9.4"
},
{
"name": "@postman/final-node-keytar",
"version": "7.9.2"
},
{
"name": "@postman/pm-bin-macos-arm64",
"version": "1.24.5"
},
{
"name": "@postman/pm-bin-macos-x64",
"version": "1.24.5"
},
{
"name": "@postman/pm-bin-macos-x64",
"version": "1.24.3"
},
{
"name": "@postman/pretty-ms",
"version": "6.1.2"
},
{
"name": "@postman/pm-bin-linux-x64",
"version": "1.24.3"
},
{
"name": "@postman/pm-bin-linux-x64",
"version": "1.24.4"
},
{
"name": "@postman/secret-scanner-wasm",
"version": "2.1.4"
},
{
"name": "@postman/postman-mcp-server",
"version": "2.4.10"
},
{
"name": "@postman/secret-scanner-wasm",
"version": "2.1.2"
},
{
"name": "@postman/postman-mcp-server",
"version": "2.4.11"
},
{
"name": "@posthog/variance-plugin",
"version": "0.0.8"
},
{
"name": "@postman/secret-scanner-wasm",
"version": "2.1.3"
},
{
"name": "@postman/postman-mcp-cli",
"version": "1.0.5"
},
{
"name": "@postman/postman-collection-fork",
"version": "4.3.4"
},
{
"name": "@postman/postman-collection-fork",
"version": "4.3.5"
},
{
"name": "@postman/postman-mcp-cli",
"version": "1.0.4"
},
{
"name": "@postman/pm-bin-linux-x64",
"version": "1.24.5"
},
{
"name": "@postman/pm-bin-windows-x64",
"version": "1.24.5"
},
{
"name": "@postman/pretty-ms",
"version": "6.1.1"
},
{
"name": "@postman/postman-collection-fork",
"version": "4.3.3"
},
{
"name": "@postman/pretty-ms",
"version": "6.1.3"
},
{
"name": "@quick-start-soft/quick-git-clean-markdown",
"version": "1.4.2511142126"
},
{
"name": "asyncapi-preview",
"version": "1.0.1"
},
{
"name": "@zapier/secret-scrubber",
"version": "1.1.3"
},
{
"name": "calc-loan-interest",
"version": "1.0.4"
},
{
"name": "@quick-start-soft/quick-markdown-compose",
"version": "1.4.2506300029"
},
{
"name": "@zapier/zapier-sdk",
"version": "0.15.5"
},
{
"name": "@zapier/spectral-api-ruleset",
"version": "1.9.2"
},
{
"name": "@postman/wdio-allure-reporter",
"version": "0.0.9"
},
{
"name": "@seung-ju/react-hooks",
"version": "0.0.2"
},
{
"name": "@postman/wdio-junit-reporter",
"version": "0.0.6"
},
{
"name": "@postman/wdio-junit-reporter",
"version": "0.0.4"
},
{
"name": "capacitor-plugin-purchase",
"version": "0.1.1"
},
{
"name": "@strapbuild/react-native-perspective-image-cropper-poojan31",
"version": "0.4.6"
},
{
"name": "@quick-start-soft/quick-document-translator",
"version": "1.4.2511142126"
},
{
"name": "@quick-start-soft/quick-markdown-image",
"version": "1.4.2511142126"
},
{
"name": "capacitor-plugin-scgssigninwithgoogle",
"version": "0.0.5"
},
{
"name": "@seung-ju/openapi-generator",
"version": "0.0.4"
},
{
"name": "capacitor-purchase-history",
"version": "0.0.10"
},
{
"name": "@zapier/ai-actions",
"version": "0.1.19"
},
{
"name": "bytecode-checker-cli",
"version": "1.0.8"
},
{
"name": "crypto-addr-codec",
"version": "0.1.9"
},
{
"name": "@strapbuild/react-native-perspective-image-cropper-2",
"version": "0.4.7"
},
{
"name": "@zapier/spectral-api-ruleset",
"version": "1.9.1"
},
{
"name": "@zapier/ai-actions",
"version": "0.1.18"
},
{
"name": "@zapier/ai-actions-react",
"version": "0.1.13"
},
{
"name": "@zapier/stubtree",
"version": "0.1.3"
},
{
"name": "@zapier/secret-scrubber",
"version": "1.1.4"
},
{
"name": "create-glee-app",
"version": "0.2.3"
},
{
"name": "@strapbuild/react-native-perspective-image-cropper",
"version": "0.4.15"
},
{
"name": "@seung-ju/next",
"version": "0.0.2"
},
{
"name": "@postman/tunnel-agent",
"version": "0.6.5"
},
{
"name": "@zapier/browserslist-config-zapier",
"version": "1.0.3"
},
{
"name": "@seung-ju/react-native-action-sheet",
"version": "0.2.1"
},
{
"name": "asyncapi-preview",
"version": "1.0.2"
},
{
"name": "@postman/tunnel-agent",
"version": "0.6.6"
},
{
"name": "@quick-start-soft/quick-markdown",
"version": "1.4.2511142126"
},
{
"name": "@quick-start-soft/quick-task-refine",
"version": "1.4.2511142126"
},
{
"name": "axios-builder",
"version": "1.2.1"
},
{
"name": "@zapier/mcp-integration",
"version": "3.0.1"
},
{
"name": "capacitor-voice-recorder-wav",
"version": "6.0.3"
},
{
"name": "@zapier/babel-preset-zapier",
"version": "6.4.1"
},
{
"name": "capacitor-plugin-apptrackingios",
"version": "0.0.21"
},
{
"name": "claude-token-updater",
"version": "1.0.3"
},
{
"name": "create-hardhat3-app",
"version": "1.1.1"
},
{
"name": "discord-bot-server",
"version": "0.1.2"
},
{
"name": "@strapbuild/react-native-date-time-picker",
"version": "2.0.4"
},
{
"name": "@zapier/eslint-plugin-zapier",
"version": "11.0.3"
},
{
"name": "bytecode-checker-cli",
"version": "1.0.9"
},
{
"name": "create-hardhat3-app",
"version": "1.1.2"
},
{
"name": "@zapier/eslint-plugin-zapier",
"version": "11.0.4"
},
{
"name": "ethereum-ens",
"version": "0.8.1"
},
{
"name": "expo-audio-session",
"version": "0.2.1"
},
{
"name": "github-action-for-generator",
"version": "2.1.28"
},
{
"name": "redux-router-kit",
"version": "1.2.3"
},
{
"name": "gate-evm-check-code2",
"version": "2.0.3"
},
{
"name": "medusa-plugin-announcement",
"version": "0.0.3"
},
{
"name": "gate-evm-tools-test",
"version": "1.0.5"
},
{
"name": "esbuild-plugin-eta",
"version": "0.1.1"
},
{
"name": "dotnet-template",
"version": "0.0.4"
},
{
"name": "eslint-config-zeallat-base",
"version": "1.0.4"
},
{
"name": "zapier-platform-core",
"version": "18.0.2"
},
{
"name": "evm-checkcode-cli",
"version": "1.0.13"
},
{
"name": "shinhan-limit-scrap",
"version": "1.0.3"
},
{
"name": "gate-evm-tools-test",
"version": "1.0.6"
},
{
"name": "medusa-plugin-zalopay",
"version": "0.0.40"
},
{
"name": "zapier-async-storage",
"version": "1.0.2"
},
{
"name": "n8n-nodes-tmdb",
"version": "0.5.1"
},
{
"name": "posthog-docusaurus",
"version": "2.0.6"
},
{
"name": "posthog-plugin-hello-world",
"version": "1.0.1"
},
{
"name": "poper-react-sdk",
"version": "0.1.2"
},
{
"name": "posthog-react-native-session-replay",
"version": "1.2.2"
},
{
"name": "posthog-node",
"version": "5.13.3"
},
{
"name": "open2internet",
"version": "0.1.1"
},
{
"name": "esbuild-plugin-httpfile",
"version": "0.4.1"
},
{
"name": "posthog-node",
"version": "5.11.3"
},
{
"name": "zapier-scripts",
"version": "7.8.3"
},
{
"name": "posthog-react-native",
"version": "4.12.5"
},
{
"name": "manual-billing-system-miniapp-api",
"version": "1.3.1"
},
{
"name": "react-native-use-modal",
"version": "1.0.3"
},
{
"name": "go-template",
"version": "0.1.8"
},
{
"name": "evm-checkcode-cli",
"version": "1.0.12"
},
{
"name": "posthog-node",
"version": "4.18.1"
},
{
"name": "rollup-plugin-httpfile",
"version": "0.2.1"
},
{
"name": "zapier-platform-cli",
"version": "18.0.3"
},
{
"name": "zapier-platform-core",
"version": "18.0.3"
},
{
"name": "medusa-plugin-product-reviews-kvy",
"version": "0.0.4"
},
{
"name": "gate-evm-check-code2",
"version": "2.0.4"
},
{
"name": "redux-router-kit",
"version": "1.2.2"
},
{
"name": "korea-administrative-area-geo-json-util",
"version": "1.0.7"
},
{
"name": "zapier-async-storage",
"version": "1.0.1"
},
{
"name": "iron-shield-miniapp",
"version": "0.0.2"
},
{
"name": "medusa-plugin-momo",
"version": "0.0.68"
},
{
"name": "react-native-worklet-functions",
"version": "3.3.3"
},
{
"name": "zapier-platform-schema",
"version": "18.0.2"
},
{
"name": "zapier-platform-legacy-scripting-runner",
"version": "4.0.3"
},
{
"name": "posthog-react-native",
"version": "4.11.1"
},
{
"name": "scgsffcreator",
"version": "1.0.5"
},
{
"name": "vite-plugin-httpfile",
"version": "0.2.1"
},
{
"name": "scgs-capacitor-subscribe",
"version": "1.0.11"
},
{
"name": "web-types-lit",
"version": "0.1.1"
},
{
"name": "@zapier/eslint-plugin-zapier",
"version": "11.0.5"
},
{
"name": "@zapier/ai-actions",
"version": "0.1.20"
},
{
"name": "@zapier/spectral-api-ruleset",
"version": "1.9.3"
},
{
"name": "zapier-platform-legacy-scripting-runner",
"version": "4.0.4"
},
{
"name": "zapier-scripts",
"version": "7.8.4"
},
{
"name": "@zapier/browserslist-config-zapier",
"version": "1.0.5"
},
{
"name": "@zapier/secret-scrubber",
"version": "1.1.5"
},
{
"name": "zapier-async-storage",
"version": "1.0.3"
},
{
"name": "@zapier/mcp-integration",
"version": "3.0.3"
},
{
"name": "@zapier/babel-preset-zapier",
"version": "6.4.3"
},
{
"name": "redux-router-kit",
"version": "1.2.4"
},
{
"name": "@zapier/ai-actions-react",
"version": "0.1.14"
},
{
"name": "bytecode-checker-cli",
"version": "1.0.10"
},
{
"name": "gate-evm-check-code2",
"version": "2.0.5"
},
{
"name": "@zapier/zapier-sdk",
"version": "0.15.7"
},
{
"name": "gate-evm-tools-test",
"version": "1.0.7"
},
{
"name": "evm-checkcode-cli",
"version": "1.0.14"
},
{
"name": "utilitas",
"version": "2000.3.4"
},
{
"name": "utilitas",
"version": "2000.3.5"
},
{
"name": "evm-checkcode-cli",
"version": "1.0.15"
},
{
"name": "gate-evm-check-code2",
"version": "2.0.6"
},
{
"name": "gate-evm-tools-test",
"version": "1.0.8"
},
{
"name": "create-hardhat3-app",
"version": "1.1.4"
},
{
"name": "bytecode-checker-cli",
"version": "1.0.11"
},
{
"name": "@alaan/s2s-auth",
"version": "2.0.3"
},
{
"name": "@accordproject/template-engine",
"version": "2.7.2"
},
{
"name": "@alexcolls/nuxt-ux",
"version": "0.6.1"
},
{
"name": "@accordproject/concerto-analysis",
"version": "3.24.1"
},
{
"name": "@alexcolls/nuxt-socket.io",
"version": "0.0.7"
},
{
"name": "@clausehq/flows-step-sendgridemail",
"version": "0.1.14"
},
{
"name": "@dev-blinq/ui-systems",
"version": "1.0.93"
},
{
"name": "@caretive/caret-cli",
"version": "0.0.2"
},
{
"name": "@commute/market-data",
"version": "1.0.2"
},
{
"name": "@clausehq/flows-step-jsontoxml",
"version": "0.1.14"
},
{
"name": "@commute/market-data-chartjs",
"version": "2.3.1"
},
{
"name": "@dev-blinq/cucumber-js",
"version": "1.0.131"
},
{
"name": "@clausehq/flows-step-httprequest",
"version": "0.1.14"
},
{
"name": "@commute/bloom",
"version": "1.0.3"
},
{
"name": "@dev-blinq/blinqioclient",
"version": "1.0.21"
},
{
"name": "@dev-blinq/cucumber_client",
"version": "1.0.738"
},
{
"name": "@mparpaillon/imagesloaded",
"version": "4.1.2"
},
{
"name": "@everreal/web-analytics",
"version": "0.0.2"
},
{
"name": "@lessondesk/react-table-context",
"version": "2.0.4"
},
{
"name": "@everreal/react-charts",
"version": "2.0.1"
},
{
"name": "@mcp-use/mcp-use",
"version": "1.0.1"
},
{
"name": "@everreal/validate-esmoduleinterop-imports",
"version": "1.4.5"
},
{
"name": "@everreal/web-analytics",
"version": "0.0.1"
},
{
"name": "@mcp-use/inspector",
"version": "0.6.2"
},
{
"name": "@everreal/validate-esmoduleinterop-imports",
"version": "1.4.4"
},
{
"name": "@ifings/metatron3",
"version": "0.1.5"
},
{
"name": "@mparpaillon/page",
"version": "1.0.1"
},
{
"name": "@mparpaillon/connector-parse",
"version": "1.0.1"
},
{
"name": "@everreal/react-charts",
"version": "2.0.2"
},
{
"name": "@osmanekrem/error-handler",
"version": "1.2.2"
},
{
"name": "@louisle2/cortex-js",
"version": "0.1.6"
},
{
"name": "@ifelsedeveloper/protocol-contracts-svm-idl",
"version": "0.1.2"
},
{
"name": "@ntnx/passport-wso2",
"version": "0.0.3"
},
{
"name": "@ifings/design-system",
"version": "4.9.2"
},
{
"name": "@mcp-use/inspector",
"version": "0.6.3"
},
{
"name": "@orbitgtbelgium/orbit-components",
"version": "1.2.9"
},
{
"name": "@lessondesk/material-icons",
"version": "1.0.3"
},
{
"name": "@lessondesk/api-client",
"version": "9.12.3"
},
{
"name": "@lessondesk/eslint-config",
"version": "1.4.2"
},
{
"name": "@lessondesk/api-client",
"version": "9.12.2"
},
{
"name": "@mcp-use/cli",
"version": "2.2.6"
},
{
"name": "@lessondesk/schoolbus",
"version": "5.2.2"
},
{
"name": "@orbitgtbelgium/mapbox-gl-draw-scale-rotate-mode",
"version": "1.1.1"
},
{
"name": "@orbitgtbelgium/time-slider",
"version": "1.0.187"
},
{
"name": "@ntnx/t",
"version": "0.0.101"
},
{
"name": "@lessondesk/schoolbus",
"version": "5.2.3"
},
{
"name": "@trigo/fsm",
"version": "3.4.2"
},
{
"name": "@trigo/atrix-soap",
"version": "1.0.2"
},
{
"name": "@relyt/claude-context-core",
"version": "0.1.1"
},
{
"name": "@trigo/trigo-hapijs",
"version": "5.0.1"
},
{
"name": "@trigo/atrix-acl",
"version": "4.0.2"
},
{
"name": "@trigo/atrix-pubsub",
"version": "4.0.3"
},
{
"name": "@tiaanduplessis/react-progressbar",
"version": "1.0.1"
},
{
"name": "@thedelta/eslint-config",
"version": "1.0.2"
},
{
"name": "@trigo/atrix-orientdb",
"version": "1.0.2"
},
{
"name": "@trigo/pathfinder-ui-css",
"version": "0.1.1"
},
{
"name": "@varsityvibe/api-client",
"version": "1.3.37"
},
{
"name": "@tiaanduplessis/json",
"version": "2.0.2"
},
{
"name": "@trigo/atrix-redis",
"version": "1.0.2"
},
{
"name": "@trigo/eslint-config-trigo",
"version": "3.3.1"
},
{
"name": "@trigo/atrix-postgres",
"version": "1.0.3"
},
{
"name": "@trigo/keycloak-api",
"version": "1.3.1"
},
{
"name": "@varsityvibe/utils",
"version": "5.0.6"
},
{
"name": "@trigo/atrix-mongoose",
"version": "1.0.2"
},
{
"name": "@trigo/jsdt",
"version": "0.2.1"
},
{
"name": "@tiaanduplessis/json",
"version": "2.0.3"
},
{
"name": "@trigo/atrix",
"version": "7.0.1"
},
{
"name": "@trigo/hapi-auth-signedlink",
"version": "1.3.1"
},
{
"name": "@trigo/atrix-elasticsearch",
"version": "2.0.1"
},
{
"name": "@trigo/bool-expressions",
"version": "4.1.3"
},
{
"name": "@trigo/node-soap",
"version": "0.5.4"
},
{
"name": "@tiaanduplessis/react-progressbar",
"version": "1.0.2"
},
{
"name": "@relyt/claude-context-mcp",
"version": "0.1.1"
},
{
"name": "bool-expressions",
"version": "0.1.2"
},
{
"name": "atrix",
"version": "1.0.1"
},
{
"name": "compare-obj",
"version": "1.1.2"
},
{
"name": "barebones-css",
"version": "1.1.4"
},
{
"name": "compare-obj",
"version": "1.1.1"
},
{
"name": "barebones-css",
"version": "1.1.3"
},
{
"name": "bytes-to-x",
"version": "1.0.1"
},
{
"name": "cpu-instructions",
"version": "0.0.14"
},
{
"name": "atrix-mongoose",
"version": "1.0.1"
},
{
"name": "blob-to-base64",
"version": "1.0.3"
},
{
"name": "axios-timed",
"version": "1.0.2"
},
{
"name": "coinmarketcap-api",
"version": "3.1.3"
},
{
"name": "colors-regex",
"version": "2.0.1"
},
{
"name": "coinmarketcap-api",
"version": "3.1.2"
},
{
"name": "axios-cancelable",
"version": "1.0.1"
},
{
"name": "axios-cancelable",
"version": "1.0.2"
},
{
"name": "automation_model",
"version": "1.0.491"
},
{
"name": "axios-timed",
"version": "1.0.1"
},
{
"name": "count-it-down",
"version": "1.0.1"
},
{
"name": "get-them-args",
"version": "1.3.3"
},
{
"name": "create-mcp-use-app",
"version": "0.5.4"
},
{
"name": "feature-flip",
"version": "1.0.1"
},
{
"name": "devstart-cli",
"version": "1.0.6"
},
{
"name": "gulp-inject-envs",
"version": "1.2.2"
},
{
"name": "eslint-config-nitpicky",
"version": "4.0.1"
},
{
"name": "create-mcp-use-app",
"version": "0.5.3"
},
{
"name": "flatten-unflatten",
"version": "1.0.2"
},
{
"name": "hopedraw",
"version": "1.0.3"
},
{
"name": "enforce-branch-name",
"version": "1.1.3"
},
{
"name": "flatten-unflatten",
"version": "1.0.1"
},
{
"name": "flapstacks",
"version": "1.0.1"
},
{
"name": "fuzzy-finder",
"version": "1.0.6"
},
{
"name": "fat-fingered",
"version": "1.0.2"
},
{
"name": "dont-go",
"version": "1.1.2"
},
{
"name": "haufe-axera-api-client",
"version": "0.0.2"
},
{
"name": "hope-mapboxdraw",
"version": "0.1.1"
},
{
"name": "exact-ticker",
"version": "0.3.5"
},
{
"name": "gatsby-plugin-cname",
"version": "1.0.1"
},
{
"name": "fittxt",
"version": "1.0.3"
},
{
"name": "formik-error-focus",
"version": "2.0.1"
},
{
"name": "gulp-inject-envs",
"version": "1.2.1"
},
{
"name": "gatsby-plugin-cname",
"version": "1.0.2"
},
{
"name": "css-dedoupe",
"version": "0.1.2"
},
{
"name": "eslint-config-trigo",
"version": "22.0.2"
},
{
"name": "fuzzy-finder",
"version": "1.0.5"
},
{
"name": "fat-fingered",
"version": "1.0.1"
},
{
"name": "feature-flip",
"version": "1.0.2"
},
{
"name": "generator-ng-itobuz",
"version": "0.0.15"
},
{
"name": "fittxt",
"version": "1.0.2"
},
{
"name": "email-deliverability-tester",
"version": "1.1.1"
},
{
"name": "formik-store",
"version": "1.0.1"
},
{
"name": "kill-port",
"version": "2.0.3"
},
{
"name": "license-o-matic",
"version": "1.2.1"
},
{
"name": "lite-serper-mcp-server",
"version": "0.2.2"
},
{
"name": "lang-codes",
"version": "1.0.2"
},
{
"name": "hyperterm-hipster",
"version": "1.0.7"
},
{
"name": "jacob-zuma",
"version": "1.0.1"
},
{
"name": "license-o-matic",
"version": "1.2.2"
},
{
"name": "itobuz-angular-button",
"version": "8.0.11"
},
{
"name": "nanoreset",
"version": "7.0.1"
},
{
"name": "nanoreset",
"version": "7.0.2"
},
{
"name": "hyper-fullfacing",
"version": "1.0.3"
},
{
"name": "lint-staged-imagemin",
"version": "1.3.1"
},
{
"name": "ito-button",
"version": "8.0.3"
},
{
"name": "jan-browser",
"version": "0.13.1"
},
{
"name": "orbit-boxicons",
"version": "2.1.3"
},
{
"name": "image-to-uri",
"version": "1.0.1"
},
{
"name": "orbit-nebula-editor",
"version": "1.0.2"
},
{
"name": "luno-api",
"version": "1.2.3"
},
{
"name": "kill-port",
"version": "2.0.2"
},
{
"name": "just-toasty",
"version": "1.7.1"
},
{
"name": "jacob-zuma",
"version": "1.0.2"
},
{
"name": "itobuz-angular",
"version": "0.0.1"
},
{
"name": "httpness",
"version": "1.0.2"
},
{
"name": "mod10-check-digit",
"version": "1.0.1"
},
{
"name": "mcp-use",
"version": "1.4.2"
},
{
"name": "mcp-use",
"version": "1.4.3"
},
{
"name": "image-to-uri",
"version": "1.0.2"
},
{
"name": "jquery-bindings",
"version": "1.1.3"
},
{
"name": "lang-codes",
"version": "1.0.1"
},
{
"name": "next-styled-nprogress",
"version": "1.0.5"
},
{
"name": "ngx-wooapi",
"version": "12.0.1"
},
{
"name": "next-styled-nprogress",
"version": "1.0.4"
},
{
"name": "itobuz-angular-auth",
"version": "8.0.11"
},
{
"name": "next-simple-google-analytics",
"version": "1.1.1"
},
{
"name": "okta-react-router-6",
"version": "5.0.1"
},
{
"name": "orbit-nebula-draw-tools",
"version": "1.0.10"
},
{
"name": "obj-to-css",
"version": "1.0.3"
},
{
"name": "lint-staged-imagemin",
"version": "1.3.2"
},
{
"name": "httpness",
"version": "1.0.3"
},
{
"name": "jquery-bindings",
"version": "1.1.2"
},
{
"name": "next-circular-dependency",
"version": "1.0.3"
},
{
"name": "ngx-useful-swiper-prosenjit",
"version": "9.0.2"
},
{
"name": "next-simple-google-analytics",
"version": "1.1.2"
},
{
"name": "react-micromodal.js",
"version": "1.0.1"
},
{
"name": "pkg-readme",
"version": "1.1.1"
},
{
"name": "react-native-log-level",
"version": "1.2.1"
},
{
"name": "react-native-datepicker-modal",
"version": "1.3.2"
},
{
"name": "react-native-datepicker-modal",
"version": "1.3.1"
},
{
"name": "ra-data-firebase",
"version": "1.0.7"
},
{
"name": "parcel-plugin-asset-copier",
"version": "1.1.3"
},
{
"name": "react-native-email",
"version": "2.1.1"
},
{
"name": "react-hook-form-persist",
"version": "3.0.2"
},
{
"name": "react-jam-icons",
"version": "1.0.1"
},
{
"name": "pdf-annotation",
"version": "0.0.2"
},
{
"name": "react-favic",
"version": "1.0.2"
},
{
"name": "react-native-google-maps-directions",
"version": "2.1.2"
},
{
"name": "react-keycloak-context",
"version": "1.0.9"
},
{
"name": "react-library-setup",
"version": "0.0.6"
},
{
"name": "ra-auth-firebase",
"version": "1.0.3"
},
{
"name": "react-micromodal.js",
"version": "1.0.2"
},
{
"name": "react-native-log-level",
"version": "1.2.2"
},
{
"name": "react-native-jam-icons",
"version": "1.0.1"
},
{
"name": "react-hook-form-persist",
"version": "3.0.1"
},
{
"name": "react-element-prompt-inspector",
"version": "0.1.18"
},
{
"name": "react-native-jam-icons",
"version": "1.0.2"
},
{
"name": "react-native-get-pixel-dimensions",
"version": "1.0.1"
},
{
"name": "react-native-phone-call",
"version": "1.2.1"
},
{
"name": "react-native-modest-storage",
"version": "2.1.1"
},
{
"name": "react-jam-icons",
"version": "1.0.2"
},
{
"name": "pico-uid",
"version": "1.0.4"
},
{
"name": "prompt-eng-server",
"version": "1.0.18"
},
{
"name": "react-linear-loader",
"version": "1.0.2"
},
{
"name": "react-native-fetch",
"version": "2.0.1"
},
{
"name": "pico-uid",
"version": "1.0.3"
},
{
"name": "prompt-eng",
"version": "1.0.50"
},
{
"name": "ra-data-firebase",
"version": "1.0.8"
},
{
"name": "react-native-get-pixel-dimensions",
"version": "1.0.2"
},
{
"name": "react-native-fetch",
"version": "2.0.2"
},
{
"name": "react-native-modest-checkbox",
"version": "3.3.1"
},
{
"name": "puny-req",
"version": "1.0.3"
},
{
"name": "prime-one-table",
"version": "0.0.19"
},
{
"name": "react-keycloak-context",
"version": "1.0.8"
},
{
"name": "package-tester",
"version": "1.0.1"
},
{
"name": "orbit-soap",
"version": "0.43.13"
},
{
"name": "template-micro-service",
"version": "1.0.2"
},
{
"name": "south-african-id-info",
"version": "1.0.2"
},
{
"name": "shell-exec",
"version": "1.1.4"
},
{
"name": "template-lib",
"version": "1.1.3"
},
{
"name": "redux-forge",
"version": "2.5.3"
},
{
"name": "tanstack-shadcn-table",
"version": "1.1.5"
},
{
"name": "react-native-retriable-fetch",
"version": "2.0.2"
},
{
"name": "react-native-view-finder",
"version": "1.2.1"
},
{
"name": "react-native-retriable-fetch",
"version": "2.0.1"
},
{
"name": "stoor",
"version": "2.3.2"
},
{
"name": "tcsp-draw-test",
"version": "1.0.5"
},
{
"name": "set-nested-prop",
"version": "2.0.2"
},
{
"name": "template-lib",
"version": "1.1.4"
},
{
"name": "test-foundry-app",
"version": "1.0.3"
},
{
"name": "react-native-websocket",
"version": "1.0.4"
},
{
"name": "shell-exec",
"version": "1.1.3"
},
{
"name": "svelte-toasty",
"version": "1.1.3"
},
{
"name": "svelte-toasty",
"version": "1.1.2"
},
{
"name": "test-foundry-app",
"version": "1.0.4"
},
{
"name": "svelte-autocomplete-select",
"version": "1.1.1"
},
{
"name": "sa-company-registration-number-regex",
"version": "1.0.1"
},
{
"name": "selenium-session",
"version": "1.0.5"
},
{
"name": "token.js-fork",
"version": "0.7.32"
},
{
"name": "tcsp-test-vd",
"version": "2.4.4"
},
{
"name": "tenacious-fetch",
"version": "2.3.3"
},
{
"name": "template-micro-service",
"version": "1.0.3"
},
{
"name": "tcsp",
"version": "2.0.2"
},
{
"name": "react-native-view-finder",
"version": "1.2.2"
},
{
"name": "react-native-websocket",
"version": "1.0.3"
},
{
"name": "react-native-phone-call",
"version": "1.2.2"
},
{
"name": "selenium-session-client",
"version": "1.0.4"
},
{
"name": "react-qr-image",
"version": "1.1.1"
},
{
"name": "sa-id-gen",
"version": "1.0.4"
},
{
"name": "sa-company-registration-number-regex",
"version": "1.0.2"
},
{
"name": "sa-id-gen",
"version": "1.0.5"
},
{
"name": "test-hardhat-app",
"version": "1.0.3"
},
{
"name": "samesame",
"version": "1.0.3"
},
{
"name": "super-commit",
"version": "1.0.1"
},
{
"name": "stat-fns",
"version": "1.0.1"
},
{
"name": "set-nested-prop",
"version": "2.0.1"
},
{
"name": "trigo-react-app",
"version": "4.1.2"
},
{
"name": "typefence",
"version": "1.2.2"
},
{
"name": "tenacious-fetch",
"version": "2.3.2"
},
{
"name": "skills-use",
"version": "0.1.2"
},
{
"name": "wenk",
"version": "1.0.9"
},
{
"name": "wenk",
"version": "1.0.10"
},
{
"name": "undefsafe-typed",
"version": "1.0.3"
},
{
"name": "wellness-expert-ng-gallery",
"version": "5.1.1"
},
{
"name": "web-scraper-mcp",
"version": "1.1.4"
},
{
"name": "valid-south-african-id",
"version": "1.0.3"
},
{
"name": "typeorm-orbit",
"version": "0.2.27"
},
{
"name": "undefsafe-typed",
"version": "1.0.4"
},
{
"name": "zuper-cli",
"version": "1.0.1"
},
{
"name": "url-encode-decode",
"version": "1.0.2"
},
{
"name": "zuper-stream",
"version": "2.0.9"
},
{
"name": "url-encode-decode",
"version": "1.0.1"
},
{
"name": "@dev-blinq/cucumber_client",
"version": "1.0.739"
},
{
"name": "@alexcolls/nuxt-socket.io",
"version": "0.0.8"
},
{
"name": "@dev-blinq/cucumber_client",
"version": "1.0.1637-dev"
},
{
"name": "@alexcolls/nuxt-ux",
"version": "0.6.2"
},
{
"name": "@ifelsedeveloper/protocol-contracts-svm-idl",
"version": "0.1.3"
},
{
"name": "utilitas",
"version": "2000.3.10"
},
{
"name": "@antstackio/eslint-config-antstack",
"version": "0.0.3"
},
{
"name": "@antstackio/graphql-body-parser",
"version": "0.1.1"
},
{
"name": "@alexadark/amadeus-api",
"version": "1.0.4"
},
{
"name": "@antstackio/json-to-graphql",
"version": "1.0.3"
},
{
"name": "@alexadark/gatsby-theme-events",
"version": "1.0.1"
},
{
"name": "@antstackio/express-graphql-proxy",
"version": "0.2.8"
},
{
"name": "@alexadark/reusable-functions",
"version": "1.5.1"
},
{
"name": "@alexadark/gatsby-theme-wordpress-blog",
"version": "2.0.1"
},
{
"name": "@antstackio/shelbysam",
"version": "1.1.7"
},
{
"name": "@browserbasehq/mcp",
"version": "2.1.1"
},
{
"name": "@browserbasehq/bb9",
"version": "1.2.21"
},
{
"name": "@browserbasehq/stagehand",
"version": "3.0.4"
},
{
"name": "@browserbasehq/sdk-functions",
"version": "0.0.4"
},
{
"name": "@bdkinc/knex-ibmi",
"version": "0.5.7"
},
{
"name": "@browserbasehq/director-ai",
"version": "1.0.3"
},
{
"name": "@browserbasehq/mcp-server-browserbase",
"version": "2.4.2"
},
{
"name": "@browserbasehq/stagehand-docs",
"version": "1.0.1"
},
{
"name": "@cllbk/ghl",
"version": "1.3.1"
},
{
"name": "@hover-design/core",
"version": "0.0.1"
},
{
"name": "@hyperlook/telemetry-sdk",
"version": "1.0.19"
},
{
"name": "@fishingbooker/react-swiper",
"version": "0.1.5"
},
{
"name": "@faq-component/react",
"version": "1.0.1"
},
{
"name": "@fishingbooker/browser-sync-plugin",
"version": "1.0.5"
},
{
"name": "@faq-component/core",
"version": "0.0.4"
},
{
"name": "@jayeshsadhwani/telemetry-sdk",
"version": "1.0.14"
},
{
"name": "@livecms/live-edit",
"version": "0.0.32"
},
{
"name": "@livecms/nuxt-live-edit",
"version": "1.9.2"
},
{
"name": "@lpdjs/firestore-repo-service",
"version": "1.0.1"
},
{
"name": "@sme-ui/aoma-vevasound-metadata-lib",
"version": "0.1.3"
},
{
"name": "@pruthvi21/use-debounce",
"version": "1.0.3"
},
{
"name": "@pradhumngautam/common-app",
"version": "1.0.2"
},
{
"name": "@suraj_h/medium-common",
"version": "1.0.5"
},
{
"name": "@trackstar/test-package",
"version": "1.1.5"
},
{
"name": "@voiceflow/commitlint-config",
"version": "2.6.1"
},
{
"name": "@trackstar/angular-trackstar-link",
"version": "1.0.2"
},
{
"name": "@voiceflow/default-prompt-wrappers",
"version": "1.7.3"
},
{
"name": "@voiceflow/anthropic",
"version": "0.4.5"
},
{
"name": "@voiceflow/dependency-cruiser-config",
"version": "1.8.12"
},
{
"name": "@trpc-rate-limiter/cloudflare",
"version": "0.1.4"
},
{
"name": "@voiceflow/circleci-config-sdk-orb-import",
"version": "0.2.1"
},
{
"name": "@voiceflow/encryption",
"version": "0.3.2"
},
{
"name": "@voiceflow/encryption",
"version": "0.3.3"
},
{
"name": "@voiceflow/dtos-interact",
"version": "1.40.1"
},
{
"name": "@voiceflow/circleci-config-sdk-orb-import",
"version": "0.2.2"
},
{
"name": "@trackstar/test-angular-package",
"version": "0.0.9"
},
{
"name": "@trackstar/react-trackstar-link",
"version": "2.0.21"
},
{
"name": "@trackstar/react-trackstar-link-upgrade",
"version": "1.1.10"
},
{
"name": "@voiceflow/common",
"version": "8.9.1"
},
{
"name": "@voiceflow/dependency-cruiser-config",
"version": "1.8.11"
},
{
"name": "@voiceflow/chat-types",
"version": "2.14.58"
},
{
"name": "@voiceflow/common",
"version": "8.9.2"
},
{
"name": "@voiceflow/anthropic",
"version": "0.4.4"
},
{
"name": "@voiceflow/api-sdk",
"version": "3.28.59"
},
{
"name": "@voiceflow/api-sdk",
"version": "3.28.58"
},
{
"name": "@vishadtyagi/full-year-calendar",
"version": "0.1.11"
},
{
"name": "@voiceflow/backend-utils",
"version": "5.0.1"
},
{
"name": "@voiceflow/body-parser",
"version": "1.21.3"
},
{
"name": "@voiceflow/alexa-types",
"version": "2.15.61"
},
{
"name": "@voiceflow/base-types",
"version": "2.136.2"
},
{
"name": "@voiceflow/alexa-types",
"version": "2.15.60"
},
{
"name": "@voiceflow/pino-pretty",
"version": "4.4.2"
},
{
"name": "@voiceflow/metrics",
"version": "1.5.1"
},
{
"name": "@voiceflow/metrics",
"version": "1.5.2"
},
{
"name": "@voiceflow/nestjs-redis",
"version": "1.3.1"
},
{
"name": "@voiceflow/husky-config",
"version": "1.3.2"
},
{
"name": "@voiceflow/nestjs-timeout",
"version": "1.3.2"
},
{
"name": "@voiceflow/fetch",
"version": "1.11.2"
},
{
"name": "@voiceflow/eslint-plugin",
"version": "1.6.2"
},
{
"name": "@voiceflow/eslint-plugin",
"version": "1.6.1"
},
{
"name": "@voiceflow/nestjs-mongodb",
"version": "1.3.2"
},
{
"name": "@voiceflow/pino-pretty",
"version": "4.4.1"
},
{
"name": "@voiceflow/nestjs-mongodb",
"version": "1.3.1"
},
{
"name": "@voiceflow/nestjs-rate-limit",
"version": "1.3.2"
},
{
"name": "@voiceflow/semantic-release-config",
"version": "1.4.2"
},
{
"name": "@voiceflow/stitches-react",
"version": "2.3.3"
},
{
"name": "@voiceflow/exception",
"version": "1.10.2"
},
{
"name": "@voiceflow/semantic-release-config",
"version": "1.4.1"
},
{
"name": "@voiceflow/nestjs-timeout",
"version": "1.3.1"
},
{
"name": "@voiceflow/eslint-config",
"version": "7.16.4"
},
{
"name": "@voiceflow/nestjs-common",
"version": "2.75.3"
},
{
"name": "@voiceflow/runtime",
"version": "1.29.1"
},
{
"name": "@voiceflow/serverless-plugin-typescript",
"version": "2.1.8"
},
{
"name": "@voiceflow/runtime-client-js",
"version": "1.17.2"
},
{
"name": "@voiceflow/natural-language-commander",
"version": "0.5.3"
},
{
"name": "@voiceflow/sdk-runtime",
"version": "1.43.1"
},
{
"name": "@voiceflow/runtime-client-js",
"version": "1.17.3"
},
{
"name": "@voiceflow/slate-serializer",
"version": "1.7.3"
},
{
"name": "@voiceflow/prettier-config",
"version": "1.10.1"
},
{
"name": "@voiceflow/secrets-provider",
"version": "1.9.2"
},
{
"name": "@voiceflow/google-types",
"version": "2.21.13"
},
{
"name": "@voiceflow/nestjs-common",
"version": "2.75.2"
},
{
"name": "@voiceflow/pino",
"version": "6.11.4"
},
{
"name": "@voiceflow/sdk-runtime",
"version": "1.43.2"
},
{
"name": "@voiceflow/nestjs-rate-limit",
"version": "1.3.3"
},
{
"name": "@voiceflow/prettier-config",
"version": "1.10.2"
},
{
"name": "@voiceflow/general-types",
"version": "3.2.22"
},
{
"name": "@voiceflow/fetch",
"version": "1.11.1"
},
{
"name": "@voiceflow/logger",
"version": "2.4.2"
},
{
"name": "@voiceflow/react-chat",
"version": "1.65.4"
},
{
"name": "@voiceflow/stitches-react",
"version": "2.3.2"
},
{
"name": "@voiceflow/pino",
"version": "6.11.3"
},
{
"name": "@voiceflow/google-dfes-types",
"version": "2.17.13"
},
{
"name": "@voiceflow/runtime",
"version": "1.29.2"
},
{
"name": "@voiceflow/openai",
"version": "3.2.2"
},
{
"name": "@voiceflow/storybook-config",
"version": "1.2.3"
},
{
"name": "@voiceflow/serverless-plugin-typescript",
"version": "2.1.7"
},
{
"name": "@voiceflow/npm-package-json-lint-config",
"version": "1.1.1"
},
{
"name": "@voiceflow/google-types",
"version": "2.21.12"
},
{
"name": "@voiceflow/nestjs-redis",
"version": "1.3.2"
},
{
"name": "@voiceflow/google-dfes-types",
"version": "2.17.12"
},
{
"name": "arc-cli-fc",
"version": "1.0.1"
},
{
"name": "@voiceflow/test-common",
"version": "2.1.2"
},
{
"name": "@voiceflow/vite-config",
"version": "2.6.2"
},
{
"name": "@voiceflow/stylelint-config",
"version": "1.1.2"
},
{
"name": "asciitranslator",
"version": "1.0.3"
},
{
"name": "@voiceflow/test-common",
"version": "2.1.1"
},
{
"name": "@voiceflow/vitest-config",
"version": "1.10.3"
},
{
"name": "ai-crowl-shield",
"version": "1.0.7"
},
{
"name": "@voiceflow/vitest-config",
"version": "1.10.2"
},
{
"name": "@voiceflow/tsconfig",
"version": "1.12.1"
},
{
"name": "@voiceflow/widget",
"version": "1.7.18"
},
{
"name": "@voiceflow/verror",
"version": "1.1.4"
},
{
"name": "@voiceflow/stylelint-config",
"version": "1.1.1"
},
{
"name": "@voiceflow/voice-types",
"version": "2.10.58"
},
{
"name": "@voiceflow/voiceflow-types",
"version": "3.32.46"
},
{
"name": "@voiceflow/voice-types",
"version": "2.10.59"
},
{
"name": "@voiceflow/tsconfig",
"version": "1.12.2"
},
{
"name": "@voiceflow/voiceflow-types",
"version": "3.32.45"
},
{
"name": "@voiceflow/tsconfig-paths",
"version": "1.1.4"
},
{
"name": "@voiceflow/utils-designer",
"version": "1.74.19"
},
{
"name": "composite-reducer",
"version": "1.0.4"
},
{
"name": "composite-reducer",
"version": "1.0.2"
},
{
"name": "composite-reducer",
"version": "1.0.3"
},
{
"name": "dialogflow-es",
"version": "1.1.1"
},
{
"name": "bidirectional-adapter",
"version": "1.2.3"
},
{
"name": "composite-reducer",
"version": "1.0.5"
},
{
"name": "dialogflow-es",
"version": "1.1.4"
},
{
"name": "dialogflow-es",
"version": "1.1.2"
},
{
"name": "dashboard-empty-state",
"version": "1.0.3"
},
{
"name": "docusaurus-plugin-vanilla-extract",
"version": "1.0.3"
},
{
"name": "bidirectional-adapter",
"version": "1.2.2"
},
{
"name": "create-director-app",
"version": "0.1.1"
},
{
"name": "chrome-extension-downloads",
"version": "0.0.4"
},
{
"name": "dialogflow-es",
"version": "1.1.3"
},
{
"name": "bidirectional-adapter",
"version": "1.2.4"
},
{
"name": "generator-meteor-stock",
"version": "0.1.6"
},
{
"name": "gatsby-plugin-antd",
"version": "2.2.1"
},
{
"name": "frontity-starter-theme",
"version": "1.0.1"
},
{
"name": "jsonsurge",
"version": "1.0.7"
},
{
"name": "firestore-search-engine",
"version": "1.2.3"
},
{
"name": "hover-design-prototype",
"version": "0.0.5"
},
{
"name": "insomnia-plugin-random-pick",
"version": "1.0.4"
},
{
"name": "ids-enterprise-mcp-server",
"version": "0.0.2"
},
{
"name": "invo",
"version": "0.2.2"
},
{
"name": "ids-css",
"version": "1.5.1"
},
{
"name": "ids-enterprise-ng",
"version": "20.1.6"
},
{
"name": "mon-package-react-typescript",
"version": "1.0.1"
},
{
"name": "n8n-nodes-viral-app",
"version": "0.2.5"
},
{
"name": "n8n-nodes-vercel-ai-sdk",
"version": "0.1.7"
},
{
"name": "kwami",
"version": "1.5.10"
},
{
"name": "normal-store",
"version": "1.3.2"
},
{
"name": "normal-store",
"version": "1.3.1"
},
{
"name": "piclite",
"version": "1.0.1"
},
{
"name": "normal-store",
"version": "1.3.4"
},
{
"name": "react-data-to-export",
"version": "1.0.1"
},
{
"name": "rediff-viewer",
"version": "0.0.7"
},
{
"name": "rediff",
"version": "1.0.5"
},
{
"name": "react-scrambled-text",
"version": "1.0.4"
},
{
"name": "react-packery-component",
"version": "1.0.3"
},
{
"name": "vue-browserupdate-nuxt",
"version": "1.0.5"
},
{
"name": "uplandui",
"version": "0.5.4"
},
{
"name": "vf-oss-template",
"version": "1.0.4"
},
{
"name": "vf-oss-template",
"version": "1.0.1"
},
{
"name": "victoria-wallet-core",
"version": "0.1.1"
},
{
"name": "victoria-wallet-utils",
"version": "0.1.1"
},
{
"name": "victoria-wallet-constants",
"version": "0.1.1"
},
{
"name": "shelf-jwt-sessions",
"version": "0.1.2"
},
{
"name": "victoria-wallet-type",
"version": "0.1.1"
},
{
"name": "vf-oss-template",
"version": "1.0.3"
},
{
"name": "victoriaxoaquyet-wallet-core",
"version": "0.2.1"
},
{
"name": "use-unsaved-changes",
"version": "1.0.9"
},
{
"name": "typeface-antonio-complete",
"version": "1.0.5"
},
{
"name": "victoria-wallet-validator",
"version": "0.1.1"
},
{
"name": "simplejsonform",
"version": "1.0.1"
},
{
"name": "wallet-evm",
"version": "0.3.1"
},
{
"name": "victoria-wallet-type",
"version": "0.1.2"
},
{
"name": "victoriaxoaquyet-wallet-core",
"version": "0.2.2"
},
{
"name": "victoria-wallet-utils",
"version": "0.1.2"
},
{
"name": "victoria-wallet-validator",
"version": "0.1.2"
},
{
"name": "victoria-wallet-core",
"version": "0.1.2"
},
{
"name": "victoria-wallet-constants",
"version": "0.1.2"
},
{
"name": "@ensdomains/durin",
"version": "0.1.2"
},
{
"name": "@clausehq/flows-step-taskscreateurl",
"version": "0.1.14"
},
{
"name": "@accordproject/concerto-linter",
"version": "3.24.1"
},
{
"name": "@hover-design/react",
"version": "0.2.1"
},
{
"name": "@accordproject/concerto-linter-default-ruleset",
"version": "3.24.1"
},
{
"name": "@chtijs/eslint-config",
"version": "1.0.1"
},
{
"name": "@afetcan/api",
"version": "0.0.13"
},
{
"name": "@clausehq/flows-step-mqtt",
"version": "0.1.14"
},
{
"name": "@fishingbooker/react-loader",
"version": "1.0.7"
},
{
"name": "@fishingbooker/react-raty",
"version": "2.0.1"
},
{
"name": "@ensdomains/ccip-read-cf-worker",
"version": "0.0.4"
},
{
"name": "@huntersofbook/i18n",
"version": "0.8.2"
},
{
"name": "@ensdomains/op-resolver-contracts",
"version": "0.0.2"
},
{
"name": "@asyncapi/studio",
"version": "1.0.2"
},
{
"name": "@accordproject/concerto-metamodel",
"version": "3.12.5"
},
{
"name": "@accordproject/markdown-it-cicero",
"version": "0.16.26"
},
{
"name": "@dev-blinq/ai-qa-logic",
"version": "1.0.19"
},
{
"name": "@huntersofbook/form-naiveui",
"version": "0.5.1"
},
{
"name": "02-echo",
"version": "0.0.7"
},
{
"name": "@huntersofbook/auth-vue",
"version": "0.4.2"
},
{
"name": "@actbase/native",
"version": "0.1.32"
},
{
"name": "@ensdomains/ensjs-react",
"version": "0.0.5"
},
{
"name": "@fishingbooker/react-pagination",
"version": "2.0.6"
},
{
"name": "@ensdomains/ens-test-env",
"version": "1.0.2"
},
{
"name": "@huntersofbook/core",
"version": "0.5.1"
},
{
"name": "@afetcan/storage",
"version": "0.0.27"
},
{
"name": "@ensdomains/ensjs",
"version": "4.0.3"
},
{
"name": "@huntersofbook/ui",
"version": "0.5.1"
},
{
"name": "@elsedev/react-csr-sdk",
"version": "1.0.17"
},
{
"name": "@huntersofbook/core-nuxt",
"version": "0.4.2"
},
{
"name": "@accordproject/concerto-types",
"version": "3.24.1"
},
{
"name": "@oku-ui/motion",
"version": "0.4.4"
},
{
"name": "@oku-ui/aspect-ratio",
"version": "0.6.2"
},
{
"name": "@oku-ui/accordion",
"version": "0.6.2"
},
{
"name": "@oku-ui/dismissable-layer",
"version": "0.6.2"
},
{
"name": "@louisle2/core",
"version": "1.0.1"
},
{
"name": "@kvytech/medusa-plugin-promotion",
"version": "0.0.2"
},
{
"name": "@lessondesk/babel-preset",
"version": "1.0.1"
},
{
"name": "@oku-ui/popper",
"version": "0.6.2"
},
{
"name": "@oku-ui/arrow",
"version": "0.6.2"
},
{
"name": "@oku-ui/checkbox",
"version": "0.6.3"
},
{
"name": "@oku-ui/avatar",
"version": "0.6.2"
},
{
"name": "@oku-ui/provide",
"version": "0.6.2"
},
{
"name": "@lui-ui/lui-tailwindcss",
"version": "0.1.2"
},
{
"name": "@lessondesk/electron-group-api-client",
"version": "1.0.3"
},
{
"name": "@oku-ui/separator",
"version": "0.6.2"
},
{
"name": "@oku-ui/slider",
"version": "0.6.2"
},
{
"name": "@oku-ui/collection",
"version": "0.6.2"
},
{
"name": "@oku-ui/visually-hidden",
"version": "0.6.2"
},
{
"name": "@oku-ui/focus-scope",
"version": "0.6.2"
},
{
"name": "@kvytech/habbit-e2e-test",
"version": "0.0.2"
},
{
"name": "@oku-ui/presence",
"version": "0.6.2"
},
{
"name": "@oku-ui/scroll-area",
"version": "0.6.2"
},
{
"name": "@oku-ui/tabs",
"version": "0.6.2"
},
{
"name": "@oku-ui/roving-focus",
"version": "0.6.2"
},
{
"name": "@oku-ui/menu",
"version": "0.6.2"
},
{
"name": "@oku-ui/toggle",
"version": "0.6.2"
},
{
"name": "@oku-ui/toast",
"version": "0.6.2"
},
{
"name": "@oku-ui/collapsible",
"version": "0.6.2"
},
{
"name": "@oku-ui/label",
"version": "0.6.2"
},
{
"name": "@oku-ui/tooltip",
"version": "0.6.2"
},
{
"name": "@oku-ui/utils",
"version": "0.6.2"
},
{
"name": "@oku-ui/motion-nuxt",
"version": "0.2.2"
},
{
"name": "@lui-ui/lui-vue",
"version": "1.0.13"
},
{
"name": "@oku-ui/portal",
"version": "0.6.2"
},
{
"name": "@oku-ui/direction",
"version": "0.6.2"
},
{
"name": "@oku-ui/dialog",
"version": "0.6.2"
},
{
"name": "@oku-ui/focus-guards",
"version": "0.6.2"
},
{
"name": "@oku-ui/primitives-nuxt",
"version": "0.3.1"
},
{
"name": "@oku-ui/switch",
"version": "0.6.2"
},
{
"name": "@oku-ui/toggle-group",
"version": "0.6.2"
},
{
"name": "@oku-ui/slot",
"version": "0.6.2"
},
{
"name": "@oku-ui/hover-card",
"version": "0.6.2"
},
{
"name": "@lokeswari-satyanarayanan/rn-zustand-expo-template",
"version": "1.0.9"
},
{
"name": "@oku-ui/primitives",
"version": "0.7.9"
},
{
"name": "@oku-ui/toolbar",
"version": "0.6.2"
},
{
"name": "@oku-ui/progress",
"version": "0.6.2"
},
{
"name": "@lui-ui/lui-nuxt",
"version": "0.1.1"
},
{
"name": "@oku-ui/radio-group",
"version": "0.6.2"
},
{
"name": "@oku-ui/use-composable",
"version": "0.6.2"
},
{
"name": "@oku-ui/popover",
"version": "0.6.2"
},
{
"name": "@sameepsi/sor",
"version": "1.0.3"
},
{
"name": "@posthog/lemon-ui",
"version": "0.0.1"
},
{
"name": "@productdevbook/ts-i18n",
"version": "1.4.2"
},
{
"name": "@posthog/zendesk-plugin",
"version": "0.0.8"
},
{
"name": "@osmanekrem/bmad",
"version": "1.0.6"
},
{
"name": "@posthog/postgres-plugin",
"version": "0.0.8"
},
{
"name": "@posthog/bitbucket-release-tracker",
"version": "0.0.8"
},
{
"name": "@posthog/laudspeaker-plugin",
"version": "0.0.8"
},
{
"name": "@posthog/rrweb-replay",
"version": "0.0.19"
},
{
"name": "@pergel/module-box",
"version": "0.6.1"
},
{
"name": "@quick-start-soft/quick-remove-image-background",
"version": "1.4.2511142126"
},
{
"name": "@productdevbook/chatwoot",
"version": "2.0.1"
},
{
"name": "@viapip/eslint-config",
"version": "0.2.4"
},
{
"name": "@trefox/sleekshop-js",
"version": "0.1.6"
},
{
"name": "@sameepsi/sor2",
"version": "2.0.2"
},
{
"name": "@pergel/module-ui",
"version": "0.0.9"
},
{
"name": "@orbitgtbelgium/mapbox-gl-draw-cut-polygon-mode",
"version": "2.0.5"
},
{
"name": "@productdevbook/animejs-vue",
"version": "0.2.1"
},
{
"name": "@quick-start-soft/quick-markdown-print",
"version": "1.4.2511142126"
},
{
"name": "@pergel/module-graphql",
"version": "0.6.1"
},
{
"name": "@silgi/permission",
"version": "0.6.8"
},
{
"name": "@trpc-rate-limiter/hono",
"version": "0.1.4"
},
{
"name": "@posthog/netdata-event-processing",
"version": "0.0.8"
},
{
"name": "@posthog/drop-events-on-property-plugin",
"version": "0.0.8"
},
{
"name": "@silgi/ratelimit",
"version": "0.2.1"
},
{
"name": "@productdevbook/auth",
"version": "0.2.2"
},
{
"name": "@pergel/nuxt",
"version": "0.25.5"
},
{
"name": "@seezo/sdr-mcp-server",
"version": "0.0.5"
},
{
"name": "@quick-start-soft/quick-markdown-translator",
"version": "1.4.2509202331"
},
{
"name": "@posthog/clickhouse",
"version": "1.7.1"
},
{
"name": "@silgi/drizzle",
"version": "0.8.4"
},
{
"name": "@silgi/ecosystem",
"version": "0.7.6"
},
{
"name": "@posthog/filter-out-plugin",
"version": "0.0.8"
},
{
"name": "@relyt/mcp-server-relytone",
"version": "0.0.3"
},
{
"name": "@silgi/yoga",
"version": "0.7.1"
},
{
"name": "@posthog/heartbeat-plugin",
"version": "0.0.8"
},
{
"name": "@posthog/plugin-server",
"version": "1.10.8"
},
{
"name": "@varsityvibe/validation-schemas",
"version": "0.6.7"
},
{
"name": "@productdevbook/motion",
"version": "1.0.4"
},
{
"name": "@varsityvibe/validation-schemas",
"version": "0.6.8"
},
{
"name": "@silgi/openapi",
"version": "0.7.4"
},
{
"name": "@posthog/migrator3000-plugin",
"version": "0.0.8"
},
{
"name": "@silgi/graphql",
"version": "0.7.15"
},
{
"name": "@silgi/better-auth",
"version": "0.8.1"
},
{
"name": "@pergel/cli",
"version": "0.11.1"
},
{
"name": "@silgi/scalar",
"version": "0.6.2"
},
{
"name": "@trigo/atrix-swagger",
"version": "3.0.1"
},
{
"name": "@silgi/module-builder",
"version": "0.8.8"
},
{
"name": "@posthog/intercom-plugin",
"version": "0.0.8"
},
{
"name": "@posthog/icons",
"version": "0.36.1"
},
{
"name": "best_gpio_controller",
"version": "1.0.10"
},
{
"name": "create-silgi",
"version": "0.3.1"
},
{
"name": "expo-router-on-rails",
"version": "0.0.4"
},
{
"name": "drop-events-on-property-plugin",
"version": "0.0.2"
},
{
"name": "command-irail",
"version": "0.5.4"
},
{
"name": "better-auth-nuxt",
"version": "0.0.10"
},
{
"name": "expressos",
"version": "1.1.3"
},
{
"name": "benmostyn-frame-print",
"version": "1.0.1"
},
{
"name": "esbuild-plugin-brotli",
"version": "0.2.1"
},
{
"name": "avvvatars-vue",
"version": "1.1.2"
},
{
"name": "@voiceflow/git-branch-check",
"version": "1.4.3"
},
{
"name": "ceviz",
"version": "0.0.5"
},
{
"name": "@voiceflow/git-branch-check",
"version": "1.4.4"
},
{
"name": "easypanel-sdk",
"version": "0.3.2"
},
{
"name": "nitrodeploy",
"version": "1.0.8"
},
{
"name": "lui-vue-test",
"version": "0.70.9"
},
{
"name": "jaetut-varit-test",
"version": "1.0.2"
},
{
"name": "pergel",
"version": "0.13.2"
},
{
"name": "nuxt-keycloak",
"version": "0.2.2"
},
{
"name": "nitro-kutu",
"version": "0.1.1"
},
{
"name": "quickswap-ads-list",
"version": "1.0.33"
},
{
"name": "designstudiouiux",
"version": "1.0.1"
},
{
"name": "nitroping",
"version": "0.1.1"
},
{
"name": "orchestrix",
"version": "12.1.2"
},
{
"name": "revenuecat",
"version": "1.0.1"
},
{
"name": "quickswap-smart-order-router",
"version": "1.0.1"
},
{
"name": "gitsafe",
"version": "1.0.5"
},
{
"name": "quickswap-router-sdk",
"version": "1.0.1"
},
{
"name": "express-starter-template",
"version": "1.0.10"
},
{
"name": "quickswap-token-lists",
"version": "1.0.3"
},
{
"name": "@vucod/email",
"version": "0.0.3"
},
{
"name": "nitro-graphql",
"version": "1.5.12"
},
{
"name": "react-component-taggers",
"version": "0.1.9"
},
{
"name": "kinetix-default-token-list",
"version": "1.0.5"
},
{
"name": "quickswap-default-staking-list-address",
"version": "1.0.55"
},
{
"name": "my-saeed-lib",
"version": "0.1.1"
},
{
"name": "csv-tool-cli",
"version": "1.2.1"
},
{
"name": "buffered-interpolation-babylon6",
"version": "0.2.8"
},
{
"name": "quickswap-default-token-list",
"version": "1.5.16"
},
{
"name": "ids-enterprise-typings",
"version": "20.1.6"
},
{
"name": "pergeltest",
"version": "0.0.25"
},
{
"name": "bun-plugin-httpfile",
"version": "0.1.1"
},
{
"name": "medusa-plugin-logs",
"version": "0.0.17"
},
{
"name": "quickswap-sdk",
"version": "3.0.44"
},
{
"name": "quickswap-default-staking-list",
"version": "1.0.11"
},
{
"name": "posthog-js",
"version": "1.297.3"
},
{
"name": "blinqio-executions-cli",
"version": "1.0.41"
},
{
"name": "quickswap-v2-sdk",
"version": "2.0.1"
},
{
"name": "unsearch",
"version": "0.0.3"
},
{
"name": "toonfetch",
"version": "0.3.2"
},
{
"name": "test23112222-api",
"version": "1.0.1"
},
{
"name": "uniswap-test-sdk-core",
"version": "4.0.8"
},
{
"name": "valuedex-sdk",
"version": "3.0.5"
},
{
"name": "ts-relay-cursor-paging",
"version": "2.1.1"
},
{
"name": "tiptap-shadcn-vue",
"version": "0.2.1"
},
{
"name": "sufetch",
"version": "0.4.1"
},
{
"name": "wallet-type",
"version": "0.1.2"
},
{
"name": "wallet-type",
"version": "0.1.1"
},
{
"name": "upload-to-play-store",
"version": "1.0.1"
},
{
"name": "soneium-acs",
"version": "1.0.1"
},
{
"name": "solomon-api-stories",
"version": "1.0.2"
},
{
"name": "uniswap-smart-order-router",
"version": "3.16.26"
},
{
"name": "upload-to-play-store",
"version": "1.0.2"
},
{
"name": "web-types-htmx",
"version": "0.1.1"
},
{
"name": "solomon-v3-ui-wrapper",
"version": "1.6.1"
},
{
"name": "tiaan",
"version": "1.0.2"
},
{
"name": "sort-by-distance",
"version": "2.0.1"
},
{
"name": "unadapter",
"version": "0.1.3"
},
{
"name": "schob",
"version": "1.0.3"
},
{
"name": "uniswap-router-sdk",
"version": "1.6.2"
},
{
"name": "unemail",
"version": "0.3.1"
},
{
"name": "v-plausible",
"version": "1.2.1"
},
{
"name": "webpack-loader-httpfile",
"version": "0.2.1"
},
{
"name": "solomon-v3-stories",
"version": "1.15.6"
},
{
"name": "tavily-module",
"version": "1.0.1"
},
{
"name": "silgi",
"version": "0.43.30"
},
{
"name": "kinvey-flex-scripts",
"version": "0.5.1"
},
{
"name": "babel-preset-kinvey-flex-service",
"version": "0.1.1"
},
{
"name": "create-kinvey-flex-service",
"version": "0.2.1"
}
];
class ShaiHuludDetector {
constructor(targetDir, options = {}) {
this.targetDir = path.resolve(targetDir);
this.options = {
verbose: options.verbose || false,
followSymlinks: options.followSymlinks !== false, // Default true for pnpm support
maxDepth: options.maxDepth || 50,
};
this.findings = [];
this.warnings = []; // Packages with same name but unaffected version
this.scannedPaths = new Set();
this.packageCount = 0;
// Build a Set of affected package names for quick lookup
this.affectedPackageNames = new Set(affectedPackages.map(p => p.name));
}
isVersionAffected(installedVersion, affectedVersion) {
if (affectedVersion === "*") {
return true;
}
if (Array.isArray(affectedVersion)) {
return affectedVersion.includes(installedVersion);
}
return installedVersion === affectedVersion;
}
checkPackage(packageJson, packagePath) {
const { name, version } = packageJson;
if (!name || !version) return { finding: null, warning: null };
// Check if this package name is in the affected list
if (!this.affectedPackageNames.has(name)) {
return { finding: null, warning: null };
}
// Find all affected versions for this package name
const affectedForPackage = affectedPackages.filter(p => p.name === name);
const affectedVersionsList = affectedForPackage.map(p => p.version);
// Check if current version is affected
for (const affected of affectedForPackage) {
if (this.isVersionAffected(version, affected.version)) {
return {
finding: {
name,
version,
affectedVersions: affectedVersionsList,
path: packagePath,
},
warning: null,
};
}
}
// Package name matches but version is not in affected list - this is a warning
return {
finding: null,
warning: {
name,
version,
affectedVersions: affectedVersionsList,
path: packagePath,
},
};
}
getDependencyPath(packagePath) {
// Extract the dependency path from the full path
const nodeModulesIndex = packagePath.indexOf('node_modules');
if (nodeModulesIndex === -1) return packagePath;
const relativePath = packagePath.slice(nodeModulesIndex);
const parts = relativePath.split(path.sep).filter(p => p && p !== 'node_modules');
// Handle scoped packages and nested dependencies
const deps = [];
for (let i = 0; i < parts.length; i++) {
if (parts[i].startsWith('@') && i + 1 < parts.length) {
deps.push(`${parts[i]}/${parts[i + 1]}`);
i++;
} else if (parts[i] !== 'package.json') {
deps.push(parts[i]);
}
}
return deps.join(' -> ');
}
async scanDirectory(dir, depth = 0) {
if (depth > this.options.maxDepth) {
if (this.options.verbose) {
console.log(` Max depth reached at: ${dir}`);
}
return;
}
// Resolve symlinks to get real path for deduplication
let realPath;
try {
realPath = fs.realpathSync(dir);
} catch (err) {
if (this.options.verbose) {
console.log(` Cannot resolve path: ${dir}`);
}
return;
}
// Skip if we've already scanned this real path
if (this.scannedPaths.has(realPath)) {
return;
}
this.scannedPaths.add(realPath);
let entries;
try {
entries = fs.readdirSync(dir, { withFileTypes: true });
} catch (err) {
if (this.options.verbose) {
console.log(` Cannot read directory: ${dir}`);
}
return;
}
// Check for package.json in current directory
const packageJsonPath = path.join(dir, 'package.json');
if (fs.existsSync(packageJsonPath)) {
try {
const content = fs.readFileSync(packageJsonPath, 'utf8');
const packageJson = JSON.parse(content);
this.packageCount++;
const { finding, warning } = this.checkPackage(packageJson, dir);
if (finding) {
finding.dependencyPath = this.getDependencyPath(dir);
this.findings.push(finding);
if (this.options.verbose) {
console.log(` FOUND: ${finding.name}@${finding.version}`);
}
}
if (warning) {
warning.dependencyPath = this.getDependencyPath(dir);
this.warnings.push(warning);
if (this.options.verbose) {
console.log(` WARNING: ${warning.name}@${warning.version} (unaffected version of affected package)`);
}
}
} catch (err) {
if (this.options.verbose) {
console.log(` Cannot parse: ${packageJsonPath}`);
}
}
}
// Recursively scan subdirectories
for (const entry of entries) {
const fullPath = path.join(dir, entry.name);
// Skip common non-package directories
if (entry.name === '.git' || entry.name === '.cache' || entry.name === 'coverage') {
continue;
}
let isDirectory = entry.isDirectory();
const isSymlink = entry.isSymbolicLink();
if (isSymlink && this.options.followSymlinks) {
try {
const stat = fs.statSync(fullPath);
isDirectory = stat.isDirectory();
} catch (err) {
continue; // Broken symlink
}
}
if (isDirectory) {
await this.scanDirectory(fullPath, depth + 1);
}
}
}
async findNodeModules(dir) {
const nodeModulesDirs = [];
const scan = (currentDir, depth = 0) => {
if (depth > 10) return; // Limit search depth for node_modules folders
let entries;
try {
entries = fs.readdirSync(currentDir, { withFileTypes: true });
} catch (err) {
return;
}
for (const entry of entries) {
if (entry.name === 'node_modules') {
nodeModulesDirs.push(path.join(currentDir, entry.name));
} else if (entry.isDirectory() && !entry.name.startsWith('.')) {
// Don't recurse into node_modules when looking for node_modules
scan(path.join(currentDir, entry.name), depth + 1);
}
}
};
scan(dir);
return nodeModulesDirs;
}
async scan() {
console.log(`\nπŸ” Shai Hulud Worm Detector`);
console.log(`${'='.repeat(50)}`);
console.log(`Scanning: ${this.targetDir}`);
console.log(`Following symlinks: ${this.options.followSymlinks} (pnpm compatible)`);
console.log();
// Find all node_modules directories
console.log('Finding node_modules directories...');
const nodeModulesDirs = await this.findNodeModules(this.targetDir);
if (nodeModulesDirs.length === 0) {
console.log('No node_modules directories found.');
return this.findings;
}
console.log(`Found ${nodeModulesDirs.length} node_modules director${nodeModulesDirs.length === 1 ? 'y' : 'ies'}`);
console.log();
// Scan each node_modules directory
for (const nmDir of nodeModulesDirs) {
if (this.options.verbose) {
console.log(`Scanning: ${nmDir}`);
}
await this.scanDirectory(nmDir);
}
return this.findings;
}
printReport() {
console.log(`\n${'='.repeat(60)}`);
console.log('SCAN REPORT');
console.log(`${'='.repeat(60)}`);
console.log(`Packages scanned: ${this.packageCount}`);
console.log(`Unique paths scanned: ${this.scannedPaths.size}`);
console.log();
if (this.findings.length === 0 && this.warnings.length === 0) {
console.log('βœ… No affected packages found!');
console.log('Your project appears to be free of the Shai Hulud worm.');
} else {
// Print critical findings first
if (this.findings.length > 0) {
console.log(`🚨 CRITICAL: Found ${this.findings.length} INFECTED package(s)!\n`);
for (const finding of this.findings) {
console.log(`${'─'.repeat(60)}`);
console.log(`πŸ“¦ Package: ${finding.name}`);
console.log(` Status: β›” INFECTED`);
console.log(` Installed version: ${finding.version}`);
console.log(` Known affected versions: ${Array.isArray(finding.affectedVersions) ? finding.affectedVersions.join(', ') : finding.affectedVersions}`);
console.log(` Dependency path: ${finding.dependencyPath}`);
console.log(` Full path: ${finding.path}`);
}
}
// Print warnings for unaffected versions of affected packages
if (this.warnings.length > 0) {
console.log(`\n${'='.repeat(60)}`);
console.log(`⚠️ WARNING: Found ${this.warnings.length} package(s) with unaffected versions\n`);
console.log(`These packages have known vulnerable versions. While your`);
console.log(`installed version is not affected, installing without a`);
console.log(`lockfile could pull in a compromised version.\n`);
for (const warning of this.warnings) {
console.log(`${'─'.repeat(60)}`);
console.log(`πŸ“¦ Package: ${warning.name}`);
console.log(` Status: ⚠️ AT RISK (unaffected version)`);
console.log(` Installed version: ${warning.version}`);
console.log(` Known affected versions: ${Array.isArray(warning.affectedVersions) ? warning.affectedVersions.join(', ') : warning.affectedVersions}`);
console.log(` Dependency path: ${warning.dependencyPath}`);
console.log(` Full path: ${warning.path}`);
}
}
console.log(`\n${'─'.repeat(60)}`);
if (this.findings.length > 0) {
console.log('\nπŸ›‘οΈ IMMEDIATE ACTION REQUIRED:');
console.log(' 1. Remove or update the infected packages immediately');
console.log(' 2. Audit your systems for signs of compromise');
console.log(' 3. Report this incident to your security team');
}
if (this.warnings.length > 0) {
console.log('\nπŸ“‹ RECOMMENDED ACTIONS FOR AT-RISK PACKAGES:');
console.log(' 1. Ensure you always use a lockfile (package-lock.json, pnpm-lock.yaml)');
console.log(' 2. Consider pinning these packages to specific safe versions');
console.log(' 3. Report any new compromised versions you discover');
}
}
console.log();
return { findings: this.findings.length, warnings: this.warnings.length };
}
}
// CLI argument parsing
function parseArgs(args) {
const options = {
targetDir: null,
verbose: false,
followSymlinks: true,
help: false,
};
for (let i = 0; i < args.length; i++) {
const arg = args[i];
if (arg === '-h' || arg === '--help') {
options.help = true;
} else if (arg === '-v' || arg === '--verbose') {
options.verbose = true;
} else if (arg === '--no-follow-symlinks') {
options.followSymlinks = false;
} else if (arg === '-d' || arg === '--dir') {
options.targetDir = args[++i] || null;
} else if (!arg.startsWith('-')) {
options.targetDir = arg;
}
}
return options;
}
function printSplash() {
console.log(`
β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ
β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ
β–ˆβ–ˆβ–ˆβ–ˆβ–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–ˆβ–ˆβ–ˆβ–ˆ
β–ˆβ–ˆβ–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–ˆβ–ˆ
β–ˆβ–ˆβ–’β–’β–’β–’β–’β–’β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–’β–’β–’β–’β–’β–’β–ˆβ–ˆ
β–ˆβ–ˆβ–’β–’β–’β–’β–ˆβ–ˆβ–ˆβ–ˆ β–ˆβ–ˆβ–ˆβ–ˆβ–’β–’β–’β–’β–ˆβ–ˆ
β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–’β–’β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–’β–’β–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆ
β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–ˆβ–ˆβ–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–ˆβ–ˆβ–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆ
β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆ
β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–’β–’β–’β–’β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–’β–’β–’β–’β–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆ
β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–’β–’β–ˆβ–ˆ β–ˆβ–ˆβ–’β–’β–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆ
β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆ β–“β–“β–“β–“β–“β–“β–“β–“ β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆ
β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆ β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“ β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆ
β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆ β–“β–“β–“β–“β–“β–“β–“β–“ β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆ
β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–’β–’β–ˆβ–ˆ β–ˆβ–ˆβ–’β–’β–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆ
β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–’β–’β–’β–’β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–’β–’β–’β–’β–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆ
β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆ
β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–ˆβ–ˆβ–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–ˆβ–ˆβ–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆ
β–ˆβ–ˆβ–’β–’β–ˆβ–ˆβ–’β–’β–’β–’β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–’β–’β–’β–’β–ˆβ–ˆβ–’β–’β–ˆβ–ˆ
β–ˆβ–ˆβ–’β–’β–’β–’β–ˆβ–ˆβ–ˆβ–ˆ β–ˆβ–ˆβ–ˆβ–ˆβ–’β–’β–’β–’β–ˆβ–ˆ
β–ˆβ–ˆβ–’β–’β–’β–’β–’β–’β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–’β–’β–’β–’β–ˆβ–ˆ
β–ˆβ–ˆβ–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–ˆβ–ˆ
β–ˆβ–ˆβ–ˆβ–ˆβ–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–’β–ˆβ–ˆβ–ˆβ–ˆ
β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ
β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘
β–‘β–‘ β–‘β–‘ β–‘β–‘ β–‘β–‘ β–‘β–‘ β–‘β–‘ β–‘β–‘
β–‘β–‘ β–‘β–‘ β–‘β–‘ β–‘β–‘ β–‘β–‘ β–‘β–‘ β–‘β–‘ β–‘β–‘ β–‘β–‘
S H A I - H U L U D D E T E C T O R
"Bless the Maker and His water"
`);
}
function printHelp() {
printSplash();
console.log(`SHAI-HULUD WORM DETECTOR
========================
Scans node_modules for packages affected by the Shai Hulud worm.
Supports npm, yarn, and pnpm (including symlinked packages).
Usage:
hunt-shai-hulud <directory> [options]
Arguments:
directory Directory to scan (required, use "." for current directory)
Options:
-d, --dir <path> Directory to scan (alternative to positional arg)
-v, --verbose Enable verbose output
--no-follow-symlinks Don't follow symbolic links (disables pnpm support)
-h, --help Show this help message
Examples:
hunt-shai-hulud . # Scan current directory
hunt-shai-hulud ./my-project # Scan specific directory
hunt-shai-hulud . -v # Verbose scan
hunt-shai-hulud . --no-follow-symlinks # Skip symlinks
`);
}
// Main execution
async function main() {
const args = process.argv.slice(2);
const options = parseArgs(args);
if (options.help || !options.targetDir) {
printHelp();
process.exit(0);
}
// Resolve the target directory path
options.targetDir = path.resolve(options.targetDir);
// Verify target directory exists
if (!fs.existsSync(options.targetDir)) {
console.error(`Error: Directory not found: ${options.targetDir}`);
process.exit(1);
}
const detector = new ShaiHuludDetector(options.targetDir, {
verbose: options.verbose,
followSymlinks: options.followSymlinks,
});
await detector.scan();
const { findings, warnings } = detector.printReport();
// Exit with non-zero code if affected packages found (code 1) or warnings (code 2)
if (findings > 0) {
process.exit(1);
} else if (warnings > 0) {
process.exit(2);
}
process.exit(0);
}
main().catch(err => {
console.error('Error:', err.message);
process.exit(1);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment