{ "name": "rsshub", "version": "1.0.0", "description": "Make RSS Great Again!", "keywords": [ "RSS" ], "homepage": "https://github.com/DIYgod/RSSHub#readme", "bugs": { "url": "https://github.com/DIYgod/RSSHub/issues" }, "license": "AGPL-3.0", "author": "DIYgod", "repository": { "type": "git", "url": "git+https://github.com/DIYgod/RSSHub.git" }, "files": [ "dist-lib" ], "type": "module", "exports": { ".": { "types": "./dist-lib/pkg.d.mts", "import": "./dist-lib/pkg.mjs" } }, "scripts": { "build": "npm run build:routes && tsdown", "build:docs": "npm run build:routes && tsx scripts/workflow/build-docs.ts", "build:lib": "npm run build:routes && tsdown --config ./tsdown-lib.config.ts", "build:routes": "cross-env NODE_ENV=dev tsx scripts/workflow/build-routes.ts", "build:routes:worker": "cross-env NODE_ENV=dev WORKER_BUILD=true tsx scripts/workflow/build-routes.ts", "container-build": "tsdown --config ./tsdown-container.config.ts", "container-deploy": "npm run container-build && wrangler deploy --config wrangler-container.toml --containers-rollout=immediate", "dev": "cross-env NODE_ENV=dev NODE_OPTIONS='--max-http-header-size=32768' tsx watch --inspect --clear-screen=false lib/index.ts", "dev:cache": "cross-env NODE_ENV=production NODE_OPTIONS='--max-http-header-size=32768' tsx watch --clear-screen=false lib/index.ts", "eslint": "eslint --cache . --concurrency auto", "format": "oxlint --type-aware --fix . && oxfmt .", "format:check": "oxlint --type-aware . && oxfmt . --check", "format:description": "tsx scripts/workflow/format-description.ts", "format:staged": "lint-staged", "lint": "oxlint --type-aware .", "prepare": "husky || true", "prepublishOnly": "npm run build:lib", "profiling": "cross-env NODE_ENV=production tsx --prof lib/index.ts", "start": "cross-env NODE_ENV=production NODE_OPTIONS='--max-http-header-size=32768' node dist/index.mjs", "test": "npm run format:check && npm run vitest:coverage", "typecheck": "tsc --noEmit", "vercel-build": "npm run build:routes && tsdown --config ./tsdown-vercel.config.ts", "vitest": "cross-env NODE_ENV=test vitest", "vitest:coverage": "cross-env NODE_ENV=test vitest --coverage.enabled --reporter=junit", "vitest:fullroutes": "cross-env NODE_ENV=test FULL_ROUTES_TEST=true vitest --reporter=json --reporter=default --outputFile=\"./assets/build/test-full-routes.json\" lib/app.test.ts", "vitest:watch": "cross-env NODE_ENV=test vitest --watch", "vitest:workerd": "cross-env NODE_ENV=test vitest run --config vitest.workers.config.ts", "worker-build": "npm run build:routes:worker && tsdown --config ./tsdown-worker.config.ts", "worker-deploy": "npm run worker-build && wrangler deploy", "worker-dev": "npm run worker-build && wrangler dev", "worker-test": "npm run worker-build && vitest run lib/worker.test.ts" }, "dependencies": { "@bbob/html": "4.4.1", "@bbob/plugin-helper": "4.4.1", "@bbob/preset-html5": "4.4.1", "@googleapis/youtube": "33.0.0", "@honeybadger-io/js": "6.16.0", "@hono/node-server": "2.0.12", "@hono/zod-openapi": "1.5.1", "@jocmp/mercury-parser": "3.0.9", "@notionhq/client": "5.23.3", "@opentelemetry/api": "1.9.1", "@opentelemetry/exporter-prometheus": "0.221.0", "@opentelemetry/exporter-trace-otlp-http": "0.221.0", "@opentelemetry/resources": "2.10.0", "@opentelemetry/sdk-metrics": "2.10.0", "@opentelemetry/sdk-trace-base": "2.10.0", "@opentelemetry/semantic-conventions": "1.43.0", "@rss3/sdk": "0.0.25", "@scalar/hono-api-reference": "0.11.12", "@sentry/node": "10.69.0", "cheerio": "1.2.0", "city-timezones": "1.3.4", "cross-env": "10.1.0", "crypto-js": "4.2.0", "currency-symbol-map": "5.1.0", "dayjs": "1.11.21", "destr": "2.0.5", "dotenv": "17.4.2", "entities": "8.0.0", "etag": "1.8.1", "fanfou-sdk": "6.0.0", "google-play-scraper": "10.1.3", "header-generator": "2.1.86", "hono": "4.12.34", "html-to-text": "10.0.0", "http-cookie-agent": "8.0.0", "https-proxy-agent": "9.1.0", "iconv-lite": "0.7.3", "imapflow": "1.6.5", "instagram-private-api": "1.46.1", "ioredis": "6.0.0", "ip-regex": "5.0.0", "jsdom": "30.0.1", "json-bigint": "1.0.0", "jsonpath-plus": "10.4.0", "jsrsasign": "11.1.3", "lru-cache": "11.5.2", "lz-string": "1.5.0", "mailparser": "3.9.14", "markdown-it": "15.0.0", "mixi2": "0.2.2", "narou": "2.0.1", "notion-to-md": "3.1.9", "oauth-1.0a": "2.2.6", "ofetch": "1.5.1", "otplib": "13.4.1", "p-map": "7.0.6", "pac-proxy-agent": "9.1.0", "patchright": "1.61.1", "query-string": "9.4.1", "rate-limiter-flexible": "11.2.0", "re2js": "2.8.6", "rfc4648": "1.5.4", "rss-parser": "3.13.0", "sanitize-html": "2.17.6", "simplecc-wasm": "1.1.1", "socks-proxy-agent": "10.1.0", "source-map": "0.8.0", "teleproto": "1.228.5", "title": "4.0.1", "tldts": "7.4.10", "tosource": "2.0.0-alpha.3", "tough-cookie": "6.0.2", "tsx": "4.23.5", "twitter-api-v2": "1.29.0", "ufo": "1.6.4", "undici": "8.9.0", "uuid": "14.0.1", "winston": "3.19.0", "xxhash-wasm": "1.1.0", "youtube-caption-extractor": "1.10.2", "youtubei.js": "17.2.0", "zod": "4.4.3" }, "devDependencies": { "@actions/core": "3.0.1", "@actions/github": "9.1.1", "@bbob/types": "4.4.1", "@cloudflare/containers": "0.3.7", "@cloudflare/playwright": "1.3.3", "@cloudflare/vitest-pool-workers": "0.20.1", "@cloudflare/workers-types": "5.20260801.1", "@eslint/eslintrc": "3.3.6", "@eslint/js": "10.0.1", "@oxlint/plugins": "1.76.0", "@stylistic/eslint-plugin": "5.10.0", "@types/babel__preset-env": "7.10.0", "@types/crypto-js": "4.2.2", "@types/eslint": "9.6.1", "@types/etag": "1.8.4", "@types/fs-extra": "11.0.4", "@types/html-to-text": "9.0.4", "@types/js-beautify": "1.14.3", "@types/jsdom": "28.0.3", "@types/json-bigint": "1.0.4", "@types/jsrsasign": "10.5.15", "@types/mailparser": "3.4.6", "@types/module-alias": "2.0.4", "@types/node": "26.1.2", "@types/sanitize-html": "2.16.1", "@typescript-eslint/eslint-plugin": "8.65.0", "@typescript-eslint/parser": "8.65.0", "@vercel/nft": "1.10.2", "@vitest/coverage-v8": "4.1.10", "discord-api-types": "0.38.52", "domhandler": "6.0.1", "eslint": "10.8.0", "eslint-nibble": "9.1.1", "eslint-plugin-n": "18.2.2", "eslint-plugin-regexp": "3.1.1", "eslint-plugin-simple-import-sort": "14.0.0", "eslint-plugin-unicorn": "72.0.0", "eslint-plugin-yml": "3.7.0", "fast-string-width": "3.0.2", "fs-extra": "11.4.0", "globals": "17.9.0", "husky": "9.1.7", "js-beautify": "2.0.3", "lint-staged": "17.3.0", "mockdate": "3.0.5", "msw": "2.15.0", "node-network-devtools": "1.0.30", "oxc-parser": "0.142.0", "oxfmt": "0.61.0", "oxlint": "1.76.0", "oxlint-plugin-eslint": "1.76.0", "oxlint-tsgolint": "7.0.2001", "remark": "15.0.1", "remark-gfm": "4.0.1", "remark-pangu": "2.2.0", "remark-parse": "11.0.0", "tsdown": "0.22.14", "typescript": "npm:@typescript/typescript6@6.0.2", "typescript-7": "npm:typescript@7.0.2", "unified": "11.0.5", "unrun": "0.3.1", "vite-tsconfig-paths": "7.0.0-alpha.1", "vitest": "4.1.10", "wrangler": "4.118.0", "yaml-eslint-parser": "2.1.0" }, "lint-staged": { "!(*.ts|*.tsx|*.js|*.cjs|*.mjs|*.yml)": [ "oxfmt --no-error-on-unmatched-pattern" ], "*.{ts,tsx,js,cjs,mjs}": [ "tsx scripts/workflow/format-description.ts", "oxlint --type-aware --fix", "eslint --cache --fix --concurrency auto", "oxfmt --no-error-on-unmatched-pattern" ], "*.yml": [ "eslint --cache --fix --concurrency auto", "oxfmt --no-error-on-unmatched-pattern" ] }, "engines": { "node": "^22.22.2 || ^24.15.0" }, "packageManager": "pnpm@10.34.5+sha512.a4ee05f2f73658255bd6a89859c065a45c28a57daefae2c893a168ee2b73168c37b91e83e57ea67654ad03f03031746430e8bce38e362e042605fb8abc80192e", "pnpm": { "onlyBuiltDependencies": [ "bufferutil", "core-js", "es5-ext", "esbuild", "eslint-nibble", "msw", "patchright", "patchright-core", "protobufjs", "rolldown", "sharp", "sleep", "unrs-resolver", "utf-8-validate", "vue-demi", "workerd", "wrangler" ], "overrides": { "difflib": "https://codeload.github.com/postlight/difflib.js/tar.gz/32e8e38c7fcd935241b9baab71bb432fd9b166ed", "es-set-tostringtag": "npm:@nolyfill/es-set-tostringtag@^1", "google-play-scraper>got": "^14.6.4", "google-play-scraper>ramda": "^0.32.0", "google-play-scraper>tough-cookie": "^6.0.0", "hasown": "npm:@nolyfill/hasown@^1", "is-core-module": "npm:@nolyfill/is-core-module@^1", "request>form-data": "^2.5.5", "rss-parser@3.13.0>entities": "^7.0.0", "rss-parser@3.13.0>xml2js": "^0.6.2", "safe-buffer": "npm:@nolyfill/safe-buffer@^1", "safer-buffer": "npm:@nolyfill/safer-buffer@^1", "side-channel": "npm:@nolyfill/side-channel@^1" }, "patchedDependencies": { "@mswjs/interceptors@0.41.9": "patches/@mswjs__interceptors@0.41.9.patch", "rss-parser@3.13.0": "patches/rss-parser@3.13.0.patch", "teleproto@1.228.5": "patches/teleproto@1.228.5.patch" } } }