@jackwener/opencli 1.7.0 → 1.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -13
- package/README.zh-CN.md +11 -10
- package/cli-manifest.json +17536 -0
- package/clis/antigravity/SKILL.md +38 -0
- package/{dist/clis → clis}/barchart/quote.js +2 -1
- package/{dist/clis → clis}/bilibili/following.js +1 -0
- package/clis/binance/asks.js +21 -0
- package/clis/binance/commands.test.js +70 -0
- package/clis/binance/depth.js +21 -0
- package/clis/binance/gainers.js +22 -0
- package/clis/binance/klines.js +21 -0
- package/clis/binance/losers.js +22 -0
- package/clis/binance/pairs.js +21 -0
- package/clis/binance/price.js +18 -0
- package/clis/binance/prices.js +19 -0
- package/clis/binance/ticker.js +21 -0
- package/clis/binance/top.js +21 -0
- package/clis/binance/trades.js +20 -0
- package/clis/linux-do/categories.js +49 -0
- package/{dist/clis → clis}/linux-do/feed.js +1 -1
- package/clis/linux-do/search.js +28 -0
- package/clis/linux-do/tags.js +27 -0
- package/{dist/clis → clis}/linux-do/topic-content.test.js +1 -1
- package/clis/linux-do/topic.js +52 -0
- package/clis/linux-do/user-posts.js +56 -0
- package/clis/linux-do/user-topics.js +36 -0
- package/clis/slock/_utils.js +12 -0
- package/clis/twitter/lists-parser.js +77 -0
- package/clis/twitter/lists.d.ts +5 -0
- package/clis/twitter/lists.js +62 -0
- package/clis/twitter/lists.test.js +50 -0
- package/{dist/clis → clis}/weibo/feed.js +18 -5
- package/clis/xueqiu/earnings-date.js +44 -0
- package/clis/xueqiu/feed.js +38 -0
- package/clis/xueqiu/groups.js +22 -0
- package/clis/xueqiu/hot-stock.js +31 -0
- package/clis/xueqiu/hot.js +36 -0
- package/clis/xueqiu/kline.js +43 -0
- package/clis/xueqiu/search.js +36 -0
- package/clis/xueqiu/stock.js +64 -0
- package/clis/xueqiu/utils.js +29 -0
- package/clis/xueqiu/watchlist.js +36 -0
- package/{dist/clis → clis}/yahoo-finance/quote.js +2 -1
- package/{dist/clis → clis}/zsxq/topic.js +5 -3
- package/{dist/clis → clis}/zsxq/topic.test.js +4 -3
- package/{dist/clis → clis}/zsxq/utils.js +1 -1
- package/dist/src/browser/base-page.js +1 -1
- package/dist/src/browser/cdp.js +6 -4
- package/dist/src/browser/stealth.d.ts +0 -5
- package/dist/src/browser/stealth.js +8 -2
- package/dist/src/build-manifest.d.ts +5 -5
- package/dist/src/build-manifest.js +14 -10
- package/dist/src/build-manifest.test.js +7 -7
- package/dist/src/capabilityRouting.d.ts +1 -1
- package/dist/src/capabilityRouting.js +4 -2
- package/dist/src/capabilityRouting.test.js +4 -1
- package/dist/src/cli.js +171 -61
- package/dist/src/commanderAdapter.d.ts +0 -1
- package/dist/src/commanderAdapter.js +27 -152
- package/dist/src/commanderAdapter.test.js +47 -15
- package/dist/src/commands/daemon.js +4 -4
- package/dist/src/commands/daemon.test.js +5 -14
- package/dist/src/completion-fast.d.ts +0 -3
- package/dist/src/completion-fast.js +2 -54
- package/dist/src/completion-shared.d.ts +13 -0
- package/dist/src/completion-shared.js +63 -0
- package/dist/src/completion.d.ts +2 -3
- package/dist/src/completion.js +3 -56
- package/dist/src/daemon.js +13 -8
- package/dist/src/diagnostic.d.ts +2 -3
- package/dist/src/diagnostic.js +4 -21
- package/dist/src/diagnostic.test.js +8 -9
- package/dist/src/discovery.d.ts +7 -4
- package/dist/src/discovery.js +19 -44
- package/dist/src/doctor.js +15 -15
- package/dist/src/download/index.js +2 -1
- package/dist/src/download/progress.js +10 -10
- package/dist/src/engine.test.js +33 -5
- package/dist/src/errors.d.ts +16 -2
- package/dist/src/errors.js +28 -16
- package/dist/src/errors.test.js +38 -1
- package/dist/src/execution.d.ts +4 -1
- package/dist/src/execution.js +10 -9
- package/dist/src/execution.test.js +18 -2
- package/dist/src/external.js +12 -13
- package/dist/src/generate-verified.js +10 -10
- package/dist/src/generate-verified.test.js +1 -1
- package/dist/src/logger.js +10 -10
- package/dist/src/main.js +24 -11
- package/dist/src/output.js +5 -5
- package/dist/src/package-exports.test.js +8 -8
- package/dist/src/pipeline/steps/tap.js +2 -1
- package/dist/src/pipeline/template.js +80 -26
- package/dist/src/plugin.js +36 -23
- package/dist/src/plugin.test.js +41 -0
- package/dist/src/record.js +23 -23
- package/dist/src/registry.d.ts +11 -6
- package/dist/src/registry.js +40 -12
- package/dist/src/registry.test.js +56 -0
- package/dist/src/runtime.js +2 -1
- package/dist/src/tui.js +14 -14
- package/dist/src/update-check.js +3 -3
- package/dist/src/validate.d.ts +12 -5
- package/dist/src/validate.js +88 -59
- package/dist/src/weixin-download.test.js +1 -0
- package/package.json +8 -11
- package/scripts/check-doc-coverage.sh +10 -0
- package/scripts/clean-dist.cjs +2 -2
- package/scripts/copy-yaml.cjs +3 -19
- package/scripts/fetch-adapters.js +137 -28
- package/scripts/postinstall.js +1 -0
- package/dist/clis/1688/assets.d.ts +0 -42
- package/dist/clis/1688/download.d.ts +0 -9
- package/dist/clis/1688/download.test.d.ts +0 -1
- package/dist/clis/1688/item.d.ts +0 -70
- package/dist/clis/1688/item.test.d.ts +0 -1
- package/dist/clis/1688/search.d.ts +0 -56
- package/dist/clis/1688/search.test.d.ts +0 -1
- package/dist/clis/1688/shared.d.ts +0 -122
- package/dist/clis/1688/shared.test.d.ts +0 -1
- package/dist/clis/1688/store.d.ts +0 -45
- package/dist/clis/1688/store.test.d.ts +0 -1
- package/dist/clis/36kr/article.d.ts +0 -1
- package/dist/clis/36kr/hot.d.ts +0 -3
- package/dist/clis/36kr/hot.test.d.ts +0 -1
- package/dist/clis/36kr/news.d.ts +0 -1
- package/dist/clis/36kr/news.test.d.ts +0 -1
- package/dist/clis/36kr/search.d.ts +0 -1
- package/dist/clis/_shared/common.d.ts +0 -11
- package/dist/clis/_shared/desktop-commands.d.ts +0 -22
- package/dist/clis/amazon/bestsellers.d.ts +0 -1
- package/dist/clis/amazon/bestsellers.test.d.ts +0 -1
- package/dist/clis/amazon/discussion.d.ts +0 -20
- package/dist/clis/amazon/discussion.test.d.ts +0 -1
- package/dist/clis/amazon/movers-shakers.d.ts +0 -1
- package/dist/clis/amazon/new-releases.d.ts +0 -1
- package/dist/clis/amazon/offer.d.ts +0 -23
- package/dist/clis/amazon/offer.test.d.ts +0 -1
- package/dist/clis/amazon/product.d.ts +0 -18
- package/dist/clis/amazon/product.test.d.ts +0 -1
- package/dist/clis/amazon/rankings.d.ts +0 -59
- package/dist/clis/amazon/rankings.test.d.ts +0 -1
- package/dist/clis/amazon/search.d.ts +0 -18
- package/dist/clis/amazon/search.test.d.ts +0 -1
- package/dist/clis/amazon/shared.d.ts +0 -75
- package/dist/clis/amazon/shared.test.d.ts +0 -1
- package/dist/clis/antigravity/dump.d.ts +0 -1
- package/dist/clis/antigravity/extract-code.d.ts +0 -1
- package/dist/clis/antigravity/model.d.ts +0 -1
- package/dist/clis/antigravity/new.d.ts +0 -1
- package/dist/clis/antigravity/read.d.ts +0 -1
- package/dist/clis/antigravity/send.d.ts +0 -1
- package/dist/clis/antigravity/serve.d.ts +0 -14
- package/dist/clis/antigravity/status.d.ts +0 -1
- package/dist/clis/antigravity/watch.d.ts +0 -1
- package/dist/clis/apple-podcasts/commands.test.d.ts +0 -2
- package/dist/clis/apple-podcasts/episodes.d.ts +0 -1
- package/dist/clis/apple-podcasts/search.d.ts +0 -1
- package/dist/clis/apple-podcasts/top.d.ts +0 -1
- package/dist/clis/apple-podcasts/utils.d.ts +0 -11
- package/dist/clis/apple-podcasts/utils.test.d.ts +0 -1
- package/dist/clis/arxiv/paper.d.ts +0 -1
- package/dist/clis/arxiv/search.d.ts +0 -1
- package/dist/clis/arxiv/utils.d.ts +0 -18
- package/dist/clis/band/bands.d.ts +0 -1
- package/dist/clis/band/mentions.d.ts +0 -1
- package/dist/clis/band/post.d.ts +0 -1
- package/dist/clis/band/posts.d.ts +0 -1
- package/dist/clis/barchart/flow.d.ts +0 -1
- package/dist/clis/barchart/greeks.d.ts +0 -1
- package/dist/clis/barchart/options.d.ts +0 -1
- package/dist/clis/barchart/quote.d.ts +0 -1
- package/dist/clis/bbc/news.d.ts +0 -1
- package/dist/clis/bilibili/comments.d.ts +0 -5
- package/dist/clis/bilibili/comments.test.d.ts +0 -1
- package/dist/clis/bilibili/download.d.ts +0 -10
- package/dist/clis/bilibili/dynamic.d.ts +0 -1
- package/dist/clis/bilibili/dynamic.test.d.ts +0 -1
- package/dist/clis/bilibili/favorite.d.ts +0 -1
- package/dist/clis/bilibili/feed.d.ts +0 -1
- package/dist/clis/bilibili/following.d.ts +0 -1
- package/dist/clis/bilibili/history.d.ts +0 -1
- package/dist/clis/bilibili/hot.d.ts +0 -1
- package/dist/clis/bilibili/me.d.ts +0 -1
- package/dist/clis/bilibili/ranking.d.ts +0 -1
- package/dist/clis/bilibili/search.d.ts +0 -1
- package/dist/clis/bilibili/subtitle.d.ts +0 -1
- package/dist/clis/bilibili/subtitle.test.d.ts +0 -1
- package/dist/clis/bilibili/user-videos.d.ts +0 -1
- package/dist/clis/bilibili/utils.d.ts +0 -19
- package/dist/clis/bilibili/utils.test.d.ts +0 -1
- package/dist/clis/bloomberg/businessweek.d.ts +0 -1
- package/dist/clis/bloomberg/economics.d.ts +0 -1
- package/dist/clis/bloomberg/feeds.d.ts +0 -1
- package/dist/clis/bloomberg/industries.d.ts +0 -1
- package/dist/clis/bloomberg/main.d.ts +0 -1
- package/dist/clis/bloomberg/markets.d.ts +0 -1
- package/dist/clis/bloomberg/news.d.ts +0 -1
- package/dist/clis/bloomberg/opinions.d.ts +0 -1
- package/dist/clis/bloomberg/politics.d.ts +0 -1
- package/dist/clis/bloomberg/tech.d.ts +0 -1
- package/dist/clis/bloomberg/utils.d.ts +0 -34
- package/dist/clis/bloomberg/utils.test.d.ts +0 -1
- package/dist/clis/bluesky/feeds.d.ts +0 -1
- package/dist/clis/bluesky/followers.d.ts +0 -1
- package/dist/clis/bluesky/following.d.ts +0 -1
- package/dist/clis/bluesky/profile.d.ts +0 -1
- package/dist/clis/bluesky/search.d.ts +0 -1
- package/dist/clis/bluesky/starter-packs.d.ts +0 -1
- package/dist/clis/bluesky/thread.d.ts +0 -1
- package/dist/clis/bluesky/trending.d.ts +0 -1
- package/dist/clis/bluesky/user.d.ts +0 -1
- package/dist/clis/boss/batchgreet.d.ts +0 -1
- package/dist/clis/boss/chatlist.d.ts +0 -1
- package/dist/clis/boss/chatmsg.d.ts +0 -1
- package/dist/clis/boss/detail.d.ts +0 -1
- package/dist/clis/boss/exchange.d.ts +0 -1
- package/dist/clis/boss/greet.d.ts +0 -1
- package/dist/clis/boss/invite.d.ts +0 -1
- package/dist/clis/boss/joblist.d.ts +0 -1
- package/dist/clis/boss/mark.d.ts +0 -1
- package/dist/clis/boss/recommend.d.ts +0 -1
- package/dist/clis/boss/resume.d.ts +0 -1
- package/dist/clis/boss/search.d.ts +0 -1
- package/dist/clis/boss/send.d.ts +0 -1
- package/dist/clis/boss/stats.d.ts +0 -1
- package/dist/clis/boss/utils.d.ts +0 -92
- package/dist/clis/chaoxing/assignments.d.ts +0 -1
- package/dist/clis/chaoxing/exams.d.ts +0 -1
- package/dist/clis/chaoxing/utils.d.ts +0 -58
- package/dist/clis/chaoxing/utils.test.d.ts +0 -1
- package/dist/clis/chatgpt/ask.d.ts +0 -1
- package/dist/clis/chatgpt/ax.d.ts +0 -7
- package/dist/clis/chatgpt/model.d.ts +0 -1
- package/dist/clis/chatgpt/new.d.ts +0 -1
- package/dist/clis/chatgpt/read.d.ts +0 -1
- package/dist/clis/chatgpt/send.d.ts +0 -1
- package/dist/clis/chatgpt/status.d.ts +0 -1
- package/dist/clis/chatwise/ask.d.ts +0 -1
- package/dist/clis/chatwise/export.d.ts +0 -1
- package/dist/clis/chatwise/history.d.ts +0 -1
- package/dist/clis/chatwise/model.d.ts +0 -1
- package/dist/clis/chatwise/new.d.ts +0 -1
- package/dist/clis/chatwise/read.d.ts +0 -1
- package/dist/clis/chatwise/screenshot.d.ts +0 -1
- package/dist/clis/chatwise/send.d.ts +0 -1
- package/dist/clis/chatwise/status.d.ts +0 -1
- package/dist/clis/cnki/search.d.ts +0 -1
- package/dist/clis/cnki/search.test.d.ts +0 -1
- package/dist/clis/codex/ask.d.ts +0 -1
- package/dist/clis/codex/dump.d.ts +0 -1
- package/dist/clis/codex/export.d.ts +0 -1
- package/dist/clis/codex/extract-diff.d.ts +0 -1
- package/dist/clis/codex/history.d.ts +0 -1
- package/dist/clis/codex/model.d.ts +0 -1
- package/dist/clis/codex/new.d.ts +0 -1
- package/dist/clis/codex/read.d.ts +0 -1
- package/dist/clis/codex/screenshot.d.ts +0 -1
- package/dist/clis/codex/send.d.ts +0 -1
- package/dist/clis/codex/status.d.ts +0 -1
- package/dist/clis/coupang/add-to-cart.d.ts +0 -1
- package/dist/clis/coupang/search.d.ts +0 -1
- package/dist/clis/coupang/utils.d.ts +0 -24
- package/dist/clis/coupang/utils.test.d.ts +0 -1
- package/dist/clis/ctrip/search.d.ts +0 -14
- package/dist/clis/ctrip/search.test.d.ts +0 -1
- package/dist/clis/cursor/ask.d.ts +0 -1
- package/dist/clis/cursor/composer.d.ts +0 -1
- package/dist/clis/cursor/dump.d.ts +0 -1
- package/dist/clis/cursor/export.d.ts +0 -1
- package/dist/clis/cursor/extract-code.d.ts +0 -1
- package/dist/clis/cursor/history.d.ts +0 -1
- package/dist/clis/cursor/model.d.ts +0 -1
- package/dist/clis/cursor/new.d.ts +0 -1
- package/dist/clis/cursor/read.d.ts +0 -1
- package/dist/clis/cursor/screenshot.d.ts +0 -1
- package/dist/clis/cursor/send.d.ts +0 -1
- package/dist/clis/cursor/status.d.ts +0 -1
- package/dist/clis/devto/tag.d.ts +0 -1
- package/dist/clis/devto/top.d.ts +0 -1
- package/dist/clis/devto/user.d.ts +0 -1
- package/dist/clis/dictionary/examples.d.ts +0 -1
- package/dist/clis/dictionary/search.d.ts +0 -1
- package/dist/clis/dictionary/synonyms.d.ts +0 -1
- package/dist/clis/discord-app/channels.d.ts +0 -1
- package/dist/clis/discord-app/members.d.ts +0 -1
- package/dist/clis/discord-app/read.d.ts +0 -1
- package/dist/clis/discord-app/search.d.ts +0 -1
- package/dist/clis/discord-app/send.d.ts +0 -1
- package/dist/clis/discord-app/servers.d.ts +0 -1
- package/dist/clis/discord-app/status.d.ts +0 -1
- package/dist/clis/douban/book-hot.d.ts +0 -1
- package/dist/clis/douban/download.d.ts +0 -1
- package/dist/clis/douban/download.test.d.ts +0 -1
- package/dist/clis/douban/marks.d.ts +0 -1
- package/dist/clis/douban/movie-hot.d.ts +0 -1
- package/dist/clis/douban/photos.d.ts +0 -1
- package/dist/clis/douban/reviews.d.ts +0 -1
- package/dist/clis/douban/search.d.ts +0 -1
- package/dist/clis/douban/subject.d.ts +0 -1
- package/dist/clis/douban/top250.d.ts +0 -1
- package/dist/clis/douban/utils.d.ts +0 -63
- package/dist/clis/douban/utils.test.d.ts +0 -1
- package/dist/clis/doubao/ask.d.ts +0 -1
- package/dist/clis/doubao/detail.d.ts +0 -1
- package/dist/clis/doubao/detail.test.d.ts +0 -1
- package/dist/clis/doubao/history.d.ts +0 -1
- package/dist/clis/doubao/history.test.d.ts +0 -1
- package/dist/clis/doubao/meeting-summary.d.ts +0 -1
- package/dist/clis/doubao/meeting-transcript.d.ts +0 -1
- package/dist/clis/doubao/new.d.ts +0 -1
- package/dist/clis/doubao/read.d.ts +0 -1
- package/dist/clis/doubao/send.d.ts +0 -1
- package/dist/clis/doubao/status.d.ts +0 -1
- package/dist/clis/doubao/utils.d.ts +0 -50
- package/dist/clis/doubao/utils.test.d.ts +0 -1
- package/dist/clis/doubao-app/ask.d.ts +0 -1
- package/dist/clis/doubao-app/dump.d.ts +0 -1
- package/dist/clis/doubao-app/new.d.ts +0 -1
- package/dist/clis/doubao-app/read.d.ts +0 -1
- package/dist/clis/doubao-app/screenshot.d.ts +0 -1
- package/dist/clis/doubao-app/send.d.ts +0 -1
- package/dist/clis/doubao-app/status.d.ts +0 -1
- package/dist/clis/doubao-app/utils.d.ts +0 -37
- package/dist/clis/douyin/_shared/browser-fetch.d.ts +0 -10
- package/dist/clis/douyin/_shared/browser-fetch.test.d.ts +0 -1
- package/dist/clis/douyin/_shared/creation-id.d.ts +0 -1
- package/dist/clis/douyin/_shared/creation-id.test.d.ts +0 -1
- package/dist/clis/douyin/_shared/imagex-upload.d.ts +0 -20
- package/dist/clis/douyin/_shared/imagex-upload.test.d.ts +0 -1
- package/dist/clis/douyin/_shared/public-api.d.ts +0 -33
- package/dist/clis/douyin/_shared/sts2.d.ts +0 -8
- package/dist/clis/douyin/_shared/sts2.test.d.ts +0 -1
- package/dist/clis/douyin/_shared/text-extra.d.ts +0 -18
- package/dist/clis/douyin/_shared/text-extra.test.d.ts +0 -1
- package/dist/clis/douyin/_shared/timing.d.ts +0 -2
- package/dist/clis/douyin/_shared/timing.test.d.ts +0 -1
- package/dist/clis/douyin/_shared/tos-upload-short-read.test.d.ts +0 -11
- package/dist/clis/douyin/_shared/tos-upload.d.ts +0 -53
- package/dist/clis/douyin/_shared/tos-upload.test.d.ts +0 -1
- package/dist/clis/douyin/_shared/transcode.d.ts +0 -27
- package/dist/clis/douyin/_shared/transcode.test.d.ts +0 -1
- package/dist/clis/douyin/_shared/types.d.ts +0 -26
- package/dist/clis/douyin/_shared/types.js +0 -1
- package/dist/clis/douyin/activities.d.ts +0 -1
- package/dist/clis/douyin/activities.test.d.ts +0 -1
- package/dist/clis/douyin/collections.d.ts +0 -1
- package/dist/clis/douyin/collections.test.d.ts +0 -1
- package/dist/clis/douyin/delete.d.ts +0 -1
- package/dist/clis/douyin/delete.test.d.ts +0 -1
- package/dist/clis/douyin/draft.d.ts +0 -11
- package/dist/clis/douyin/draft.test.d.ts +0 -1
- package/dist/clis/douyin/drafts.d.ts +0 -1
- package/dist/clis/douyin/drafts.test.d.ts +0 -1
- package/dist/clis/douyin/hashtag.d.ts +0 -1
- package/dist/clis/douyin/hashtag.test.d.ts +0 -1
- package/dist/clis/douyin/location.d.ts +0 -1
- package/dist/clis/douyin/location.test.d.ts +0 -1
- package/dist/clis/douyin/profile.d.ts +0 -1
- package/dist/clis/douyin/profile.test.d.ts +0 -1
- package/dist/clis/douyin/publish.d.ts +0 -14
- package/dist/clis/douyin/publish.test.d.ts +0 -1
- package/dist/clis/douyin/stats.d.ts +0 -1
- package/dist/clis/douyin/stats.test.d.ts +0 -1
- package/dist/clis/douyin/update.d.ts +0 -1
- package/dist/clis/douyin/update.test.d.ts +0 -1
- package/dist/clis/douyin/user-videos.d.ts +0 -5
- package/dist/clis/douyin/user-videos.test.d.ts +0 -1
- package/dist/clis/douyin/videos.d.ts +0 -1
- package/dist/clis/douyin/videos.test.d.ts +0 -1
- package/dist/clis/facebook/add-friend.d.ts +0 -1
- package/dist/clis/facebook/events.d.ts +0 -1
- package/dist/clis/facebook/feed.d.ts +0 -1
- package/dist/clis/facebook/friends.d.ts +0 -1
- package/dist/clis/facebook/groups.d.ts +0 -1
- package/dist/clis/facebook/join-group.d.ts +0 -1
- package/dist/clis/facebook/memories.d.ts +0 -1
- package/dist/clis/facebook/notifications.d.ts +0 -1
- package/dist/clis/facebook/profile.d.ts +0 -1
- package/dist/clis/facebook/search.d.ts +0 -1
- package/dist/clis/facebook/search.test.d.ts +0 -5
- package/dist/clis/gemini/ask.d.ts +0 -1
- package/dist/clis/gemini/ask.test.d.ts +0 -1
- package/dist/clis/gemini/deep-research-result.d.ts +0 -1
- package/dist/clis/gemini/deep-research-result.test.d.ts +0 -1
- package/dist/clis/gemini/deep-research.d.ts +0 -1
- package/dist/clis/gemini/deep-research.test.d.ts +0 -1
- package/dist/clis/gemini/image.d.ts +0 -1
- package/dist/clis/gemini/new.d.ts +0 -1
- package/dist/clis/gemini/reply-state.test.d.ts +0 -1
- package/dist/clis/gemini/utils.d.ts +0 -106
- package/dist/clis/gemini/utils.test.d.ts +0 -1
- package/dist/clis/gitee/index.d.ts +0 -3
- package/dist/clis/gitee/search.d.ts +0 -1
- package/dist/clis/gitee/trending.d.ts +0 -1
- package/dist/clis/gitee/user.d.ts +0 -1
- package/dist/clis/gitee/user.test.d.ts +0 -1
- package/dist/clis/google/news.d.ts +0 -5
- package/dist/clis/google/search.d.ts +0 -10
- package/dist/clis/google/suggest.d.ts +0 -5
- package/dist/clis/google/trends.d.ts +0 -5
- package/dist/clis/google/utils.d.ts +0 -9
- package/dist/clis/google/utils.test.d.ts +0 -1
- package/dist/clis/grok/ask.d.ts +0 -19
- package/dist/clis/grok/ask.test.d.ts +0 -1
- package/dist/clis/hackernews/ask.d.ts +0 -1
- package/dist/clis/hackernews/best.d.ts +0 -1
- package/dist/clis/hackernews/jobs.d.ts +0 -1
- package/dist/clis/hackernews/new.d.ts +0 -1
- package/dist/clis/hackernews/search.d.ts +0 -1
- package/dist/clis/hackernews/show.d.ts +0 -1
- package/dist/clis/hackernews/top.d.ts +0 -1
- package/dist/clis/hackernews/user.d.ts +0 -1
- package/dist/clis/hf/top.d.ts +0 -1
- package/dist/clis/hupu/detail.d.ts +0 -1
- package/dist/clis/hupu/hot.d.ts +0 -1
- package/dist/clis/hupu/like.d.ts +0 -1
- package/dist/clis/hupu/mentions.d.ts +0 -1
- package/dist/clis/hupu/reply.d.ts +0 -1
- package/dist/clis/hupu/search.d.ts +0 -1
- package/dist/clis/hupu/unlike.d.ts +0 -1
- package/dist/clis/hupu/utils.d.ts +0 -20
- package/dist/clis/imdb/person.d.ts +0 -1
- package/dist/clis/imdb/reviews.d.ts +0 -1
- package/dist/clis/imdb/search.d.ts +0 -1
- package/dist/clis/imdb/title.d.ts +0 -1
- package/dist/clis/imdb/top.d.ts +0 -1
- package/dist/clis/imdb/trending.d.ts +0 -1
- package/dist/clis/imdb/utils.d.ts +0 -46
- package/dist/clis/imdb/utils.test.d.ts +0 -1
- package/dist/clis/instagram/_shared/private-publish.d.ts +0 -138
- package/dist/clis/instagram/_shared/private-publish.test.d.ts +0 -1
- package/dist/clis/instagram/_shared/protocol-capture.d.ts +0 -26
- package/dist/clis/instagram/_shared/protocol-capture.test.d.ts +0 -1
- package/dist/clis/instagram/_shared/runtime-info.d.ts +0 -9
- package/dist/clis/instagram/comment.d.ts +0 -1
- package/dist/clis/instagram/download.d.ts +0 -16
- package/dist/clis/instagram/download.test.d.ts +0 -1
- package/dist/clis/instagram/explore.d.ts +0 -1
- package/dist/clis/instagram/follow.d.ts +0 -1
- package/dist/clis/instagram/followers.d.ts +0 -1
- package/dist/clis/instagram/following.d.ts +0 -1
- package/dist/clis/instagram/like.d.ts +0 -1
- package/dist/clis/instagram/note.d.ts +0 -1
- package/dist/clis/instagram/note.test.d.ts +0 -1
- package/dist/clis/instagram/post.d.ts +0 -4
- package/dist/clis/instagram/post.test.d.ts +0 -1
- package/dist/clis/instagram/profile.d.ts +0 -1
- package/dist/clis/instagram/reel.d.ts +0 -1
- package/dist/clis/instagram/reel.test.d.ts +0 -1
- package/dist/clis/instagram/save.d.ts +0 -1
- package/dist/clis/instagram/saved.d.ts +0 -1
- package/dist/clis/instagram/search.d.ts +0 -1
- package/dist/clis/instagram/story.d.ts +0 -1
- package/dist/clis/instagram/story.test.d.ts +0 -1
- package/dist/clis/instagram/unfollow.d.ts +0 -1
- package/dist/clis/instagram/unlike.d.ts +0 -1
- package/dist/clis/instagram/unsave.d.ts +0 -1
- package/dist/clis/instagram/user.d.ts +0 -1
- package/dist/clis/jd/add-cart.d.ts +0 -1
- package/dist/clis/jd/cart.d.ts +0 -1
- package/dist/clis/jd/commands.test.d.ts +0 -5
- package/dist/clis/jd/detail.d.ts +0 -1
- package/dist/clis/jd/item.d.ts +0 -5
- package/dist/clis/jd/item.test.d.ts +0 -1
- package/dist/clis/jd/reviews.d.ts +0 -1
- package/dist/clis/jd/search.d.ts +0 -1
- package/dist/clis/jianyu/detail.d.ts +0 -1
- package/dist/clis/jianyu/search.d.ts +0 -51
- package/dist/clis/jianyu/search.test.d.ts +0 -1
- package/dist/clis/jianyu/shared/china-bid-search.d.ts +0 -12
- package/dist/clis/jianyu/shared/procurement-contract.d.ts +0 -68
- package/dist/clis/jianyu/shared/procurement-contract.test.d.ts +0 -1
- package/dist/clis/jianyu/shared/procurement-detail.d.ts +0 -6
- package/dist/clis/jianyu/shared/procurement-detail.test.d.ts +0 -1
- package/dist/clis/jike/comment.d.ts +0 -1
- package/dist/clis/jike/create.d.ts +0 -1
- package/dist/clis/jike/feed.d.ts +0 -1
- package/dist/clis/jike/like.d.ts +0 -1
- package/dist/clis/jike/notifications.d.ts +0 -1
- package/dist/clis/jike/post.d.ts +0 -1
- package/dist/clis/jike/repost.d.ts +0 -1
- package/dist/clis/jike/search.d.ts +0 -1
- package/dist/clis/jike/topic.d.ts +0 -1
- package/dist/clis/jike/user.d.ts +0 -1
- package/dist/clis/jike/utils.d.ts +0 -19
- package/dist/clis/jimeng/generate.d.ts +0 -1
- package/dist/clis/jimeng/history.d.ts +0 -1
- package/dist/clis/jimeng/new.d.ts +0 -1
- package/dist/clis/jimeng/workspaces.d.ts +0 -1
- package/dist/clis/lesswrong/_helpers.d.ts +0 -15
- package/dist/clis/lesswrong/comments.d.ts +0 -1
- package/dist/clis/lesswrong/curated.d.ts +0 -1
- package/dist/clis/lesswrong/frontpage.d.ts +0 -1
- package/dist/clis/lesswrong/new.d.ts +0 -1
- package/dist/clis/lesswrong/read.d.ts +0 -1
- package/dist/clis/lesswrong/sequences.d.ts +0 -1
- package/dist/clis/lesswrong/shortform.d.ts +0 -1
- package/dist/clis/lesswrong/tag.d.ts +0 -1
- package/dist/clis/lesswrong/tags.d.ts +0 -1
- package/dist/clis/lesswrong/top-month.d.ts +0 -1
- package/dist/clis/lesswrong/top-week.d.ts +0 -1
- package/dist/clis/lesswrong/top-year.d.ts +0 -1
- package/dist/clis/lesswrong/top.d.ts +0 -1
- package/dist/clis/lesswrong/user-posts.d.ts +0 -1
- package/dist/clis/lesswrong/user.d.ts +0 -1
- package/dist/clis/linkedin/search.d.ts +0 -1
- package/dist/clis/linkedin/timeline.d.ts +0 -21
- package/dist/clis/linkedin/timeline.test.d.ts +0 -1
- package/dist/clis/linux-do/categories.d.ts +0 -1
- package/dist/clis/linux-do/categories.js +0 -65
- package/dist/clis/linux-do/category.d.ts +0 -1
- package/dist/clis/linux-do/feed.d.ts +0 -45
- package/dist/clis/linux-do/feed.test.d.ts +0 -1
- package/dist/clis/linux-do/hot.d.ts +0 -1
- package/dist/clis/linux-do/latest.d.ts +0 -1
- package/dist/clis/linux-do/search.d.ts +0 -1
- package/dist/clis/linux-do/search.js +0 -41
- package/dist/clis/linux-do/tags.d.ts +0 -1
- package/dist/clis/linux-do/tags.js +0 -39
- package/dist/clis/linux-do/topic-content.d.ts +0 -35
- package/dist/clis/linux-do/topic-content.test.d.ts +0 -1
- package/dist/clis/linux-do/topic.d.ts +0 -1
- package/dist/clis/linux-do/topic.js +0 -56
- package/dist/clis/linux-do/user-posts.d.ts +0 -1
- package/dist/clis/linux-do/user-posts.js +0 -61
- package/dist/clis/linux-do/user-topics.d.ts +0 -1
- package/dist/clis/linux-do/user-topics.js +0 -48
- package/dist/clis/lobsters/active.d.ts +0 -1
- package/dist/clis/lobsters/hot.d.ts +0 -1
- package/dist/clis/lobsters/newest.d.ts +0 -1
- package/dist/clis/lobsters/tag.d.ts +0 -1
- package/dist/clis/medium/feed.d.ts +0 -1
- package/dist/clis/medium/search.d.ts +0 -1
- package/dist/clis/medium/user.d.ts +0 -1
- package/dist/clis/medium/utils.d.ts +0 -5
- package/dist/clis/notebooklm/compat.test.d.ts +0 -3
- package/dist/clis/notebooklm/current.d.ts +0 -1
- package/dist/clis/notebooklm/get.d.ts +0 -1
- package/dist/clis/notebooklm/history.d.ts +0 -1
- package/dist/clis/notebooklm/history.test.d.ts +0 -1
- package/dist/clis/notebooklm/list.d.ts +0 -1
- package/dist/clis/notebooklm/note-list.d.ts +0 -1
- package/dist/clis/notebooklm/note-list.test.d.ts +0 -1
- package/dist/clis/notebooklm/notes-get.d.ts +0 -1
- package/dist/clis/notebooklm/notes-get.test.d.ts +0 -1
- package/dist/clis/notebooklm/open.d.ts +0 -1
- package/dist/clis/notebooklm/open.test.d.ts +0 -1
- package/dist/clis/notebooklm/rpc.d.ts +0 -36
- package/dist/clis/notebooklm/rpc.test.d.ts +0 -1
- package/dist/clis/notebooklm/shared.d.ts +0 -87
- package/dist/clis/notebooklm/source-fulltext.d.ts +0 -1
- package/dist/clis/notebooklm/source-fulltext.test.d.ts +0 -1
- package/dist/clis/notebooklm/source-get.d.ts +0 -1
- package/dist/clis/notebooklm/source-get.test.d.ts +0 -1
- package/dist/clis/notebooklm/source-guide.d.ts +0 -1
- package/dist/clis/notebooklm/source-guide.test.d.ts +0 -1
- package/dist/clis/notebooklm/source-list.d.ts +0 -1
- package/dist/clis/notebooklm/status.d.ts +0 -1
- package/dist/clis/notebooklm/summary.d.ts +0 -1
- package/dist/clis/notebooklm/summary.test.d.ts +0 -1
- package/dist/clis/notebooklm/utils.d.ts +0 -38
- package/dist/clis/notebooklm/utils.test.d.ts +0 -1
- package/dist/clis/notion/export.d.ts +0 -1
- package/dist/clis/notion/favorites.d.ts +0 -1
- package/dist/clis/notion/new.d.ts +0 -1
- package/dist/clis/notion/read.d.ts +0 -1
- package/dist/clis/notion/search.d.ts +0 -1
- package/dist/clis/notion/sidebar.d.ts +0 -1
- package/dist/clis/notion/status.d.ts +0 -1
- package/dist/clis/notion/write.d.ts +0 -1
- package/dist/clis/ones/common.d.ts +0 -32
- package/dist/clis/ones/enrich-tasks.d.ts +0 -5
- package/dist/clis/ones/login.d.ts +0 -1
- package/dist/clis/ones/logout.d.ts +0 -1
- package/dist/clis/ones/me.d.ts +0 -1
- package/dist/clis/ones/my-tasks.d.ts +0 -1
- package/dist/clis/ones/resolve-labels.d.ts +0 -10
- package/dist/clis/ones/task-helpers.d.ts +0 -29
- package/dist/clis/ones/task-helpers.test.d.ts +0 -1
- package/dist/clis/ones/task.d.ts +0 -1
- package/dist/clis/ones/tasks.d.ts +0 -1
- package/dist/clis/ones/token-info.d.ts +0 -1
- package/dist/clis/ones/worklog.d.ts +0 -11
- package/dist/clis/ones/worklog.test.d.ts +0 -1
- package/dist/clis/paperreview/commands.test.d.ts +0 -3
- package/dist/clis/paperreview/feedback.d.ts +0 -1
- package/dist/clis/paperreview/review.d.ts +0 -1
- package/dist/clis/paperreview/submit.d.ts +0 -1
- package/dist/clis/paperreview/utils.d.ts +0 -46
- package/dist/clis/paperreview/utils.test.d.ts +0 -1
- package/dist/clis/pixiv/detail.d.ts +0 -1
- package/dist/clis/pixiv/download.d.ts +0 -7
- package/dist/clis/pixiv/download.test.d.ts +0 -1
- package/dist/clis/pixiv/illusts.d.ts +0 -8
- package/dist/clis/pixiv/illusts.test.d.ts +0 -1
- package/dist/clis/pixiv/ranking.d.ts +0 -1
- package/dist/clis/pixiv/search.d.ts +0 -6
- package/dist/clis/pixiv/search.test.d.ts +0 -1
- package/dist/clis/pixiv/test-utils.d.ts +0 -12
- package/dist/clis/pixiv/user.d.ts +0 -1
- package/dist/clis/pixiv/utils.d.ts +0 -27
- package/dist/clis/producthunt/browse.d.ts +0 -1
- package/dist/clis/producthunt/hot.d.ts +0 -1
- package/dist/clis/producthunt/posts.d.ts +0 -1
- package/dist/clis/producthunt/today.d.ts +0 -1
- package/dist/clis/producthunt/utils.d.ts +0 -29
- package/dist/clis/producthunt/utils.test.d.ts +0 -1
- package/dist/clis/quark/ls.d.ts +0 -1
- package/dist/clis/quark/mkdir.d.ts +0 -1
- package/dist/clis/quark/mv.d.ts +0 -1
- package/dist/clis/quark/rename.d.ts +0 -1
- package/dist/clis/quark/rm.d.ts +0 -1
- package/dist/clis/quark/save.d.ts +0 -1
- package/dist/clis/quark/share-tree.d.ts +0 -1
- package/dist/clis/quark/utils.d.ts +0 -50
- package/dist/clis/quark/utils.test.d.ts +0 -1
- package/dist/clis/reddit/comment.d.ts +0 -1
- package/dist/clis/reddit/frontpage.d.ts +0 -1
- package/dist/clis/reddit/hot.d.ts +0 -1
- package/dist/clis/reddit/popular.d.ts +0 -1
- package/dist/clis/reddit/read.d.ts +0 -1
- package/dist/clis/reddit/read.test.d.ts +0 -1
- package/dist/clis/reddit/save.d.ts +0 -1
- package/dist/clis/reddit/saved.d.ts +0 -1
- package/dist/clis/reddit/search.d.ts +0 -1
- package/dist/clis/reddit/subreddit.d.ts +0 -1
- package/dist/clis/reddit/subscribe.d.ts +0 -1
- package/dist/clis/reddit/upvote.d.ts +0 -1
- package/dist/clis/reddit/upvoted.d.ts +0 -1
- package/dist/clis/reddit/user-comments.d.ts +0 -1
- package/dist/clis/reddit/user-posts.d.ts +0 -1
- package/dist/clis/reddit/user.d.ts +0 -1
- package/dist/clis/reuters/search.d.ts +0 -1
- package/dist/clis/sinablog/article.d.ts +0 -1
- package/dist/clis/sinablog/hot.d.ts +0 -1
- package/dist/clis/sinablog/search.d.ts +0 -1
- package/dist/clis/sinablog/user.d.ts +0 -1
- package/dist/clis/sinablog/utils.d.ts +0 -7
- package/dist/clis/sinafinance/news.d.ts +0 -7
- package/dist/clis/sinafinance/rolling-news.d.ts +0 -4
- package/dist/clis/sinafinance/stock-rank.d.ts +0 -4
- package/dist/clis/sinafinance/stock.d.ts +0 -8
- package/dist/clis/smzdm/search.d.ts +0 -1
- package/dist/clis/spotify/spotify.d.ts +0 -1
- package/dist/clis/spotify/utils.d.ts +0 -21
- package/dist/clis/spotify/utils.test.d.ts +0 -1
- package/dist/clis/stackoverflow/bounties.d.ts +0 -1
- package/dist/clis/stackoverflow/hot.d.ts +0 -1
- package/dist/clis/stackoverflow/search.d.ts +0 -1
- package/dist/clis/stackoverflow/unanswered.d.ts +0 -1
- package/dist/clis/steam/top-sellers.d.ts +0 -1
- package/dist/clis/substack/feed.d.ts +0 -1
- package/dist/clis/substack/publication.d.ts +0 -1
- package/dist/clis/substack/search.d.ts +0 -1
- package/dist/clis/substack/utils.d.ts +0 -8
- package/dist/clis/substack/utils.test.d.ts +0 -1
- package/dist/clis/taobao/add-cart.d.ts +0 -1
- package/dist/clis/taobao/cart.d.ts +0 -1
- package/dist/clis/taobao/commands.test.d.ts +0 -5
- package/dist/clis/taobao/detail.d.ts +0 -1
- package/dist/clis/taobao/reviews.d.ts +0 -1
- package/dist/clis/taobao/search.d.ts +0 -1
- package/dist/clis/tieba/commands.test.d.ts +0 -4
- package/dist/clis/tieba/hot.d.ts +0 -1
- package/dist/clis/tieba/posts.d.ts +0 -1
- package/dist/clis/tieba/read.d.ts +0 -1
- package/dist/clis/tieba/search.d.ts +0 -1
- package/dist/clis/tieba/utils.d.ts +0 -101
- package/dist/clis/tieba/utils.test.d.ts +0 -1
- package/dist/clis/tiktok/comment.d.ts +0 -1
- package/dist/clis/tiktok/explore.d.ts +0 -1
- package/dist/clis/tiktok/follow.d.ts +0 -1
- package/dist/clis/tiktok/following.d.ts +0 -1
- package/dist/clis/tiktok/friends.d.ts +0 -1
- package/dist/clis/tiktok/like.d.ts +0 -1
- package/dist/clis/tiktok/live.d.ts +0 -1
- package/dist/clis/tiktok/notifications.d.ts +0 -1
- package/dist/clis/tiktok/profile.d.ts +0 -1
- package/dist/clis/tiktok/save.d.ts +0 -1
- package/dist/clis/tiktok/search.d.ts +0 -1
- package/dist/clis/tiktok/unfollow.d.ts +0 -1
- package/dist/clis/tiktok/unlike.d.ts +0 -1
- package/dist/clis/tiktok/unsave.d.ts +0 -1
- package/dist/clis/tiktok/user.d.ts +0 -1
- package/dist/clis/twitter/accept.d.ts +0 -1
- package/dist/clis/twitter/article.d.ts +0 -1
- package/dist/clis/twitter/block.d.ts +0 -1
- package/dist/clis/twitter/bookmark.d.ts +0 -1
- package/dist/clis/twitter/bookmarks.d.ts +0 -1
- package/dist/clis/twitter/delete.d.ts +0 -7
- package/dist/clis/twitter/delete.test.d.ts +0 -1
- package/dist/clis/twitter/download.d.ts +0 -8
- package/dist/clis/twitter/follow.d.ts +0 -1
- package/dist/clis/twitter/followers.d.ts +0 -1
- package/dist/clis/twitter/following.d.ts +0 -1
- package/dist/clis/twitter/hide-reply.d.ts +0 -1
- package/dist/clis/twitter/like.d.ts +0 -1
- package/dist/clis/twitter/likes.d.ts +0 -24
- package/dist/clis/twitter/likes.test.d.ts +0 -1
- package/dist/clis/twitter/notifications.d.ts +0 -1
- package/dist/clis/twitter/post.d.ts +0 -1
- package/dist/clis/twitter/post.test.d.ts +0 -1
- package/dist/clis/twitter/profile.d.ts +0 -1
- package/dist/clis/twitter/reply-dm.d.ts +0 -1
- package/dist/clis/twitter/reply.d.ts +0 -13
- package/dist/clis/twitter/reply.test.d.ts +0 -1
- package/dist/clis/twitter/search.d.ts +0 -1
- package/dist/clis/twitter/search.test.d.ts +0 -1
- package/dist/clis/twitter/shared.d.ts +0 -6
- package/dist/clis/twitter/thread.d.ts +0 -1
- package/dist/clis/twitter/timeline.d.ts +0 -24
- package/dist/clis/twitter/timeline.test.d.ts +0 -1
- package/dist/clis/twitter/trending.d.ts +0 -1
- package/dist/clis/twitter/unblock.d.ts +0 -1
- package/dist/clis/twitter/unbookmark.d.ts +0 -1
- package/dist/clis/twitter/unfollow.d.ts +0 -1
- package/dist/clis/v2ex/daily.d.ts +0 -1
- package/dist/clis/v2ex/hot.d.ts +0 -1
- package/dist/clis/v2ex/latest.d.ts +0 -1
- package/dist/clis/v2ex/me.d.ts +0 -1
- package/dist/clis/v2ex/member.d.ts +0 -1
- package/dist/clis/v2ex/node.d.ts +0 -1
- package/dist/clis/v2ex/nodes.d.ts +0 -1
- package/dist/clis/v2ex/notifications.d.ts +0 -1
- package/dist/clis/v2ex/replies.d.ts +0 -1
- package/dist/clis/v2ex/topic.d.ts +0 -1
- package/dist/clis/v2ex/user.d.ts +0 -1
- package/dist/clis/web/read.d.ts +0 -16
- package/dist/clis/weibo/comments.d.ts +0 -1
- package/dist/clis/weibo/feed.d.ts +0 -1
- package/dist/clis/weibo/hot.d.ts +0 -1
- package/dist/clis/weibo/me.d.ts +0 -1
- package/dist/clis/weibo/post.d.ts +0 -1
- package/dist/clis/weibo/search.d.ts +0 -1
- package/dist/clis/weibo/user.d.ts +0 -1
- package/dist/clis/weibo/utils.d.ts +0 -6
- package/dist/clis/weixin/download.d.ts +0 -38
- package/dist/clis/weread/book.d.ts +0 -1
- package/dist/clis/weread/commands.test.d.ts +0 -3
- package/dist/clis/weread/highlights.d.ts +0 -1
- package/dist/clis/weread/notebooks.d.ts +0 -1
- package/dist/clis/weread/notes.d.ts +0 -1
- package/dist/clis/weread/private-api-regression.test.d.ts +0 -1
- package/dist/clis/weread/ranking.d.ts +0 -1
- package/dist/clis/weread/search-regression.test.d.ts +0 -1
- package/dist/clis/weread/search.d.ts +0 -1
- package/dist/clis/weread/shelf.d.ts +0 -1
- package/dist/clis/weread/utils.d.ts +0 -76
- package/dist/clis/weread/utils.test.d.ts +0 -1
- package/dist/clis/wikipedia/random.d.ts +0 -1
- package/dist/clis/wikipedia/search.d.ts +0 -1
- package/dist/clis/wikipedia/summary.d.ts +0 -1
- package/dist/clis/wikipedia/trending.d.ts +0 -1
- package/dist/clis/wikipedia/utils.d.ts +0 -36
- package/dist/clis/xianyu/chat.d.ts +0 -7
- package/dist/clis/xianyu/chat.test.d.ts +0 -1
- package/dist/clis/xianyu/item.d.ts +0 -7
- package/dist/clis/xianyu/item.test.d.ts +0 -1
- package/dist/clis/xianyu/search.d.ts +0 -10
- package/dist/clis/xianyu/search.test.d.ts +0 -1
- package/dist/clis/xianyu/utils.d.ts +0 -1
- package/dist/clis/xiaoe/catalog.d.ts +0 -1
- package/dist/clis/xiaoe/content.d.ts +0 -1
- package/dist/clis/xiaoe/courses.d.ts +0 -1
- package/dist/clis/xiaoe/detail.d.ts +0 -1
- package/dist/clis/xiaoe/play-url.d.ts +0 -1
- package/dist/clis/xiaohongshu/comments.d.ts +0 -8
- package/dist/clis/xiaohongshu/comments.test.d.ts +0 -1
- package/dist/clis/xiaohongshu/creator-note-detail.d.ts +0 -84
- package/dist/clis/xiaohongshu/creator-note-detail.test.d.ts +0 -1
- package/dist/clis/xiaohongshu/creator-notes-summary.d.ts +0 -28
- package/dist/clis/xiaohongshu/creator-notes-summary.test.d.ts +0 -1
- package/dist/clis/xiaohongshu/creator-notes.d.ts +0 -24
- package/dist/clis/xiaohongshu/creator-notes.test.d.ts +0 -1
- package/dist/clis/xiaohongshu/creator-profile.d.ts +0 -10
- package/dist/clis/xiaohongshu/creator-stats.d.ts +0 -10
- package/dist/clis/xiaohongshu/download.d.ts +0 -10
- package/dist/clis/xiaohongshu/download.test.d.ts +0 -1
- package/dist/clis/xiaohongshu/feed.d.ts +0 -1
- package/dist/clis/xiaohongshu/note-helpers.d.ts +0 -12
- package/dist/clis/xiaohongshu/note.d.ts +0 -11
- package/dist/clis/xiaohongshu/note.test.d.ts +0 -1
- package/dist/clis/xiaohongshu/notifications.d.ts +0 -1
- package/dist/clis/xiaohongshu/publish.d.ts +0 -18
- package/dist/clis/xiaohongshu/publish.test.d.ts +0 -1
- package/dist/clis/xiaohongshu/search.d.ts +0 -15
- package/dist/clis/xiaohongshu/search.test.d.ts +0 -1
- package/dist/clis/xiaohongshu/user-helpers.d.ts +0 -16
- package/dist/clis/xiaohongshu/user-helpers.test.d.ts +0 -1
- package/dist/clis/xiaohongshu/user.d.ts +0 -1
- package/dist/clis/xiaoyuzhou/episode.d.ts +0 -1
- package/dist/clis/xiaoyuzhou/podcast-episodes.d.ts +0 -1
- package/dist/clis/xiaoyuzhou/podcast.d.ts +0 -1
- package/dist/clis/xiaoyuzhou/utils.d.ts +0 -16
- package/dist/clis/xiaoyuzhou/utils.test.d.ts +0 -1
- package/dist/clis/xueqiu/comments.d.ts +0 -118
- package/dist/clis/xueqiu/comments.test.d.ts +0 -1
- package/dist/clis/xueqiu/danjuan-utils.d.ts +0 -55
- package/dist/clis/xueqiu/danjuan-utils.test.d.ts +0 -1
- package/dist/clis/xueqiu/earnings-date.d.ts +0 -1
- package/dist/clis/xueqiu/earnings-date.js +0 -61
- package/dist/clis/xueqiu/feed.d.ts +0 -1
- package/dist/clis/xueqiu/feed.js +0 -48
- package/dist/clis/xueqiu/fund-holdings.d.ts +0 -1
- package/dist/clis/xueqiu/fund-snapshot.d.ts +0 -1
- package/dist/clis/xueqiu/groups.d.ts +0 -1
- package/dist/clis/xueqiu/groups.js +0 -25
- package/dist/clis/xueqiu/hot-stock.d.ts +0 -1
- package/dist/clis/xueqiu/hot-stock.js +0 -44
- package/dist/clis/xueqiu/hot.d.ts +0 -1
- package/dist/clis/xueqiu/hot.js +0 -44
- package/dist/clis/xueqiu/kline.d.ts +0 -1
- package/dist/clis/xueqiu/kline.js +0 -64
- package/dist/clis/xueqiu/search.d.ts +0 -1
- package/dist/clis/xueqiu/search.js +0 -49
- package/dist/clis/xueqiu/stock.d.ts +0 -1
- package/dist/clis/xueqiu/stock.js +0 -72
- package/dist/clis/xueqiu/watchlist.d.ts +0 -1
- package/dist/clis/xueqiu/watchlist.js +0 -45
- package/dist/clis/yahoo-finance/quote.d.ts +0 -1
- package/dist/clis/yollomi/background.d.ts +0 -4
- package/dist/clis/yollomi/edit.d.ts +0 -5
- package/dist/clis/yollomi/face-swap.d.ts +0 -5
- package/dist/clis/yollomi/generate.d.ts +0 -9
- package/dist/clis/yollomi/models.d.ts +0 -1
- package/dist/clis/yollomi/object-remover.d.ts +0 -4
- package/dist/clis/yollomi/remove-bg.d.ts +0 -4
- package/dist/clis/yollomi/restore.d.ts +0 -4
- package/dist/clis/yollomi/try-on.d.ts +0 -4
- package/dist/clis/yollomi/upload.d.ts +0 -7
- package/dist/clis/yollomi/upscale.d.ts +0 -4
- package/dist/clis/yollomi/utils.d.ts +0 -45
- package/dist/clis/yollomi/video.d.ts +0 -5
- package/dist/clis/youtube/channel.d.ts +0 -1
- package/dist/clis/youtube/comments.d.ts +0 -1
- package/dist/clis/youtube/search.d.ts +0 -1
- package/dist/clis/youtube/transcript-group.d.ts +0 -44
- package/dist/clis/youtube/transcript-group.test.d.ts +0 -1
- package/dist/clis/youtube/transcript.d.ts +0 -1
- package/dist/clis/youtube/utils.d.ts +0 -17
- package/dist/clis/youtube/utils.test.d.ts +0 -1
- package/dist/clis/youtube/video.d.ts +0 -1
- package/dist/clis/yuanbao/ask.d.ts +0 -21
- package/dist/clis/yuanbao/ask.test.d.ts +0 -1
- package/dist/clis/yuanbao/new.d.ts +0 -1
- package/dist/clis/yuanbao/new.test.d.ts +0 -1
- package/dist/clis/yuanbao/shared.d.ts +0 -13
- package/dist/clis/zhihu/answer.d.ts +0 -1
- package/dist/clis/zhihu/answer.test.d.ts +0 -1
- package/dist/clis/zhihu/comment.d.ts +0 -1
- package/dist/clis/zhihu/comment.test.d.ts +0 -1
- package/dist/clis/zhihu/download.d.ts +0 -7
- package/dist/clis/zhihu/download.test.d.ts +0 -1
- package/dist/clis/zhihu/favorite.d.ts +0 -1
- package/dist/clis/zhihu/favorite.test.d.ts +0 -1
- package/dist/clis/zhihu/follow.d.ts +0 -1
- package/dist/clis/zhihu/follow.test.d.ts +0 -1
- package/dist/clis/zhihu/hot.d.ts +0 -1
- package/dist/clis/zhihu/like.d.ts +0 -1
- package/dist/clis/zhihu/like.test.d.ts +0 -1
- package/dist/clis/zhihu/question.d.ts +0 -1
- package/dist/clis/zhihu/question.test.d.ts +0 -1
- package/dist/clis/zhihu/search.d.ts +0 -1
- package/dist/clis/zhihu/target.d.ts +0 -24
- package/dist/clis/zhihu/target.test.d.ts +0 -1
- package/dist/clis/zhihu/write-shared.d.ts +0 -32
- package/dist/clis/zhihu/write-shared.test.d.ts +0 -1
- package/dist/clis/zsxq/dynamics.d.ts +0 -1
- package/dist/clis/zsxq/groups.d.ts +0 -1
- package/dist/clis/zsxq/search.d.ts +0 -1
- package/dist/clis/zsxq/search.test.d.ts +0 -1
- package/dist/clis/zsxq/topic.d.ts +0 -1
- package/dist/clis/zsxq/topic.test.d.ts +0 -1
- package/dist/clis/zsxq/topics.d.ts +0 -1
- package/dist/clis/zsxq/topics.test.d.ts +0 -1
- package/dist/clis/zsxq/utils.d.ts +0 -97
- package/dist/src/clis/binance/asks.d.ts +0 -1
- package/dist/src/clis/binance/asks.js +0 -20
- package/dist/src/clis/binance/commands.test.d.ts +0 -3
- package/dist/src/clis/binance/commands.test.js +0 -58
- package/dist/src/clis/binance/depth.d.ts +0 -1
- package/dist/src/clis/binance/depth.js +0 -20
- package/dist/src/clis/binance/gainers.d.ts +0 -1
- package/dist/src/clis/binance/gainers.js +0 -21
- package/dist/src/clis/binance/klines.d.ts +0 -1
- package/dist/src/clis/binance/klines.js +0 -20
- package/dist/src/clis/binance/losers.d.ts +0 -1
- package/dist/src/clis/binance/losers.js +0 -21
- package/dist/src/clis/binance/pairs.d.ts +0 -1
- package/dist/src/clis/binance/pairs.js +0 -20
- package/dist/src/clis/binance/price.d.ts +0 -1
- package/dist/src/clis/binance/price.js +0 -17
- package/dist/src/clis/binance/prices.d.ts +0 -1
- package/dist/src/clis/binance/prices.js +0 -18
- package/dist/src/clis/binance/ticker.d.ts +0 -1
- package/dist/src/clis/binance/ticker.js +0 -20
- package/dist/src/clis/binance/top.d.ts +0 -1
- package/dist/src/clis/binance/top.js +0 -20
- package/dist/src/clis/binance/trades.d.ts +0 -1
- package/dist/src/clis/binance/trades.js +0 -19
- package/scripts/clean-yaml.cjs +0 -19
- package/scripts/test-site.mjs +0 -70
- /package/{dist/clis → clis}/1688/assets.js +0 -0
- /package/{dist/clis → clis}/1688/assets.test.js +0 -0
- /package/{dist/clis → clis}/1688/download.js +0 -0
- /package/{dist/clis → clis}/1688/download.test.js +0 -0
- /package/{dist/clis → clis}/1688/item.js +0 -0
- /package/{dist/clis → clis}/1688/item.test.js +0 -0
- /package/{dist/clis → clis}/1688/search.js +0 -0
- /package/{dist/clis → clis}/1688/search.test.js +0 -0
- /package/{dist/clis → clis}/1688/shared.js +0 -0
- /package/{dist/clis → clis}/1688/shared.test.js +0 -0
- /package/{dist/clis → clis}/1688/store.js +0 -0
- /package/{dist/clis → clis}/1688/store.test.js +0 -0
- /package/{dist/clis → clis}/36kr/article.js +0 -0
- /package/{dist/clis → clis}/36kr/hot.js +0 -0
- /package/{dist/clis → clis}/36kr/hot.test.js +0 -0
- /package/{dist/clis → clis}/36kr/news.js +0 -0
- /package/{dist/clis → clis}/36kr/news.test.js +0 -0
- /package/{dist/clis → clis}/36kr/search.js +0 -0
- /package/{dist/clis → clis}/_shared/common.js +0 -0
- /package/{dist/clis → clis}/_shared/desktop-commands.js +0 -0
- /package/{dist/clis → clis}/amazon/bestsellers.js +0 -0
- /package/{dist/clis → clis}/amazon/bestsellers.test.js +0 -0
- /package/{dist/clis → clis}/amazon/discussion.js +0 -0
- /package/{dist/clis → clis}/amazon/discussion.test.js +0 -0
- /package/{dist/clis → clis}/amazon/movers-shakers.js +0 -0
- /package/{dist/clis → clis}/amazon/new-releases.js +0 -0
- /package/{dist/clis → clis}/amazon/offer.js +0 -0
- /package/{dist/clis → clis}/amazon/offer.test.js +0 -0
- /package/{dist/clis → clis}/amazon/product.js +0 -0
- /package/{dist/clis → clis}/amazon/product.test.js +0 -0
- /package/{dist/clis → clis}/amazon/rankings.js +0 -0
- /package/{dist/clis → clis}/amazon/rankings.test.js +0 -0
- /package/{dist/clis → clis}/amazon/search.js +0 -0
- /package/{dist/clis → clis}/amazon/search.test.js +0 -0
- /package/{dist/clis → clis}/amazon/shared.js +0 -0
- /package/{dist/clis → clis}/amazon/shared.test.js +0 -0
- /package/{dist/clis → clis}/antigravity/dump.js +0 -0
- /package/{dist/clis → clis}/antigravity/extract-code.js +0 -0
- /package/{dist/clis → clis}/antigravity/model.js +0 -0
- /package/{dist/clis → clis}/antigravity/new.js +0 -0
- /package/{dist/clis → clis}/antigravity/read.js +0 -0
- /package/{dist/clis → clis}/antigravity/send.js +0 -0
- /package/{dist/clis → clis}/antigravity/serve.js +0 -0
- /package/{dist/clis → clis}/antigravity/status.js +0 -0
- /package/{dist/clis → clis}/antigravity/watch.js +0 -0
- /package/{dist/clis → clis}/apple-podcasts/commands.test.js +0 -0
- /package/{dist/clis → clis}/apple-podcasts/episodes.js +0 -0
- /package/{dist/clis → clis}/apple-podcasts/search.js +0 -0
- /package/{dist/clis → clis}/apple-podcasts/top.js +0 -0
- /package/{dist/clis → clis}/apple-podcasts/utils.js +0 -0
- /package/{dist/clis → clis}/apple-podcasts/utils.test.js +0 -0
- /package/{dist/clis → clis}/arxiv/paper.js +0 -0
- /package/{dist/clis → clis}/arxiv/search.js +0 -0
- /package/{dist/clis → clis}/arxiv/utils.js +0 -0
- /package/{dist/clis → clis}/band/bands.js +0 -0
- /package/{dist/clis → clis}/band/mentions.js +0 -0
- /package/{dist/clis → clis}/band/post.js +0 -0
- /package/{dist/clis → clis}/band/posts.js +0 -0
- /package/{dist/clis → clis}/barchart/flow.js +0 -0
- /package/{dist/clis → clis}/barchart/greeks.js +0 -0
- /package/{dist/clis → clis}/barchart/options.js +0 -0
- /package/{dist/clis → clis}/bbc/news.js +0 -0
- /package/{dist/clis → clis}/bilibili/comments.js +0 -0
- /package/{dist/clis → clis}/bilibili/comments.test.js +0 -0
- /package/{dist/clis → clis}/bilibili/download.js +0 -0
- /package/{dist/clis → clis}/bilibili/dynamic.js +0 -0
- /package/{dist/clis → clis}/bilibili/dynamic.test.js +0 -0
- /package/{dist/clis → clis}/bilibili/favorite.js +0 -0
- /package/{dist/clis → clis}/bilibili/feed.js +0 -0
- /package/{dist/clis → clis}/bilibili/history.js +0 -0
- /package/{dist/clis → clis}/bilibili/hot.js +0 -0
- /package/{dist/clis → clis}/bilibili/me.js +0 -0
- /package/{dist/clis → clis}/bilibili/ranking.js +0 -0
- /package/{dist/clis → clis}/bilibili/search.js +0 -0
- /package/{dist/clis → clis}/bilibili/subtitle.js +0 -0
- /package/{dist/clis → clis}/bilibili/subtitle.test.js +0 -0
- /package/{dist/clis → clis}/bilibili/user-videos.js +0 -0
- /package/{dist/clis → clis}/bilibili/utils.js +0 -0
- /package/{dist/clis → clis}/bilibili/utils.test.js +0 -0
- /package/{dist/clis → clis}/bloomberg/businessweek.js +0 -0
- /package/{dist/clis → clis}/bloomberg/economics.js +0 -0
- /package/{dist/clis → clis}/bloomberg/feeds.js +0 -0
- /package/{dist/clis → clis}/bloomberg/industries.js +0 -0
- /package/{dist/clis → clis}/bloomberg/main.js +0 -0
- /package/{dist/clis → clis}/bloomberg/markets.js +0 -0
- /package/{dist/clis → clis}/bloomberg/news.js +0 -0
- /package/{dist/clis → clis}/bloomberg/opinions.js +0 -0
- /package/{dist/clis → clis}/bloomberg/politics.js +0 -0
- /package/{dist/clis → clis}/bloomberg/tech.js +0 -0
- /package/{dist/clis → clis}/bloomberg/utils.js +0 -0
- /package/{dist/clis → clis}/bloomberg/utils.test.js +0 -0
- /package/{dist/clis → clis}/bluesky/feeds.js +0 -0
- /package/{dist/clis → clis}/bluesky/followers.js +0 -0
- /package/{dist/clis → clis}/bluesky/following.js +0 -0
- /package/{dist/clis → clis}/bluesky/profile.js +0 -0
- /package/{dist/clis → clis}/bluesky/search.js +0 -0
- /package/{dist/clis → clis}/bluesky/starter-packs.js +0 -0
- /package/{dist/clis → clis}/bluesky/thread.js +0 -0
- /package/{dist/clis → clis}/bluesky/trending.js +0 -0
- /package/{dist/clis → clis}/bluesky/user.js +0 -0
- /package/{dist/clis → clis}/boss/batchgreet.js +0 -0
- /package/{dist/clis → clis}/boss/chatlist.js +0 -0
- /package/{dist/clis → clis}/boss/chatmsg.js +0 -0
- /package/{dist/clis → clis}/boss/detail.js +0 -0
- /package/{dist/clis → clis}/boss/exchange.js +0 -0
- /package/{dist/clis → clis}/boss/greet.js +0 -0
- /package/{dist/clis → clis}/boss/invite.js +0 -0
- /package/{dist/clis → clis}/boss/joblist.js +0 -0
- /package/{dist/clis → clis}/boss/mark.js +0 -0
- /package/{dist/clis → clis}/boss/recommend.js +0 -0
- /package/{dist/clis → clis}/boss/resume.js +0 -0
- /package/{dist/clis → clis}/boss/search.js +0 -0
- /package/{dist/clis → clis}/boss/send.js +0 -0
- /package/{dist/clis → clis}/boss/stats.js +0 -0
- /package/{dist/clis → clis}/boss/utils.js +0 -0
- /package/{dist/clis → clis}/chaoxing/assignments.js +0 -0
- /package/{dist/clis → clis}/chaoxing/exams.js +0 -0
- /package/{dist/clis → clis}/chaoxing/utils.js +0 -0
- /package/{dist/clis → clis}/chaoxing/utils.test.js +0 -0
- /package/{dist/clis → clis}/chatgpt/ask.js +0 -0
- /package/{dist/clis → clis}/chatgpt/ax.js +0 -0
- /package/{dist/clis → clis}/chatgpt/model.js +0 -0
- /package/{dist/clis → clis}/chatgpt/new.js +0 -0
- /package/{dist/clis → clis}/chatgpt/read.js +0 -0
- /package/{dist/clis → clis}/chatgpt/send.js +0 -0
- /package/{dist/clis → clis}/chatgpt/status.js +0 -0
- /package/{dist/clis → clis}/chatwise/ask.js +0 -0
- /package/{dist/clis → clis}/chatwise/export.js +0 -0
- /package/{dist/clis → clis}/chatwise/history.js +0 -0
- /package/{dist/clis → clis}/chatwise/model.js +0 -0
- /package/{dist/clis → clis}/chatwise/new.js +0 -0
- /package/{dist/clis → clis}/chatwise/read.js +0 -0
- /package/{dist/clis → clis}/chatwise/screenshot.js +0 -0
- /package/{dist/clis → clis}/chatwise/send.js +0 -0
- /package/{dist/clis → clis}/chatwise/status.js +0 -0
- /package/{dist/clis → clis}/cnki/search.js +0 -0
- /package/{dist/clis → clis}/cnki/search.test.js +0 -0
- /package/{dist/clis → clis}/codex/ask.js +0 -0
- /package/{dist/clis → clis}/codex/dump.js +0 -0
- /package/{dist/clis → clis}/codex/export.js +0 -0
- /package/{dist/clis → clis}/codex/extract-diff.js +0 -0
- /package/{dist/clis → clis}/codex/history.js +0 -0
- /package/{dist/clis → clis}/codex/model.js +0 -0
- /package/{dist/clis → clis}/codex/new.js +0 -0
- /package/{dist/clis → clis}/codex/read.js +0 -0
- /package/{dist/clis → clis}/codex/screenshot.js +0 -0
- /package/{dist/clis → clis}/codex/send.js +0 -0
- /package/{dist/clis → clis}/codex/status.js +0 -0
- /package/{dist/clis → clis}/coupang/add-to-cart.js +0 -0
- /package/{dist/clis → clis}/coupang/search.js +0 -0
- /package/{dist/clis → clis}/coupang/utils.js +0 -0
- /package/{dist/clis → clis}/coupang/utils.test.js +0 -0
- /package/{dist/clis → clis}/ctrip/search.js +0 -0
- /package/{dist/clis → clis}/ctrip/search.test.js +0 -0
- /package/{dist/clis → clis}/cursor/ask.js +0 -0
- /package/{dist/clis → clis}/cursor/composer.js +0 -0
- /package/{dist/clis → clis}/cursor/dump.js +0 -0
- /package/{dist/clis → clis}/cursor/export.js +0 -0
- /package/{dist/clis → clis}/cursor/extract-code.js +0 -0
- /package/{dist/clis → clis}/cursor/history.js +0 -0
- /package/{dist/clis → clis}/cursor/model.js +0 -0
- /package/{dist/clis → clis}/cursor/new.js +0 -0
- /package/{dist/clis → clis}/cursor/read.js +0 -0
- /package/{dist/clis → clis}/cursor/screenshot.js +0 -0
- /package/{dist/clis → clis}/cursor/send.js +0 -0
- /package/{dist/clis → clis}/cursor/status.js +0 -0
- /package/{dist/clis → clis}/devto/tag.js +0 -0
- /package/{dist/clis → clis}/devto/top.js +0 -0
- /package/{dist/clis → clis}/devto/user.js +0 -0
- /package/{dist/clis → clis}/dictionary/examples.js +0 -0
- /package/{dist/clis → clis}/dictionary/search.js +0 -0
- /package/{dist/clis → clis}/dictionary/synonyms.js +0 -0
- /package/{dist/clis → clis}/discord-app/channels.js +0 -0
- /package/{dist/clis → clis}/discord-app/members.js +0 -0
- /package/{dist/clis → clis}/discord-app/read.js +0 -0
- /package/{dist/clis → clis}/discord-app/search.js +0 -0
- /package/{dist/clis → clis}/discord-app/send.js +0 -0
- /package/{dist/clis → clis}/discord-app/servers.js +0 -0
- /package/{dist/clis → clis}/discord-app/status.js +0 -0
- /package/{dist/clis → clis}/douban/book-hot.js +0 -0
- /package/{dist/clis → clis}/douban/download.js +0 -0
- /package/{dist/clis → clis}/douban/download.test.js +0 -0
- /package/{dist/clis → clis}/douban/marks.js +0 -0
- /package/{dist/clis → clis}/douban/movie-hot.js +0 -0
- /package/{dist/clis → clis}/douban/photos.js +0 -0
- /package/{dist/clis → clis}/douban/reviews.js +0 -0
- /package/{dist/clis → clis}/douban/search.js +0 -0
- /package/{dist/clis → clis}/douban/subject.js +0 -0
- /package/{dist/clis → clis}/douban/top250.js +0 -0
- /package/{dist/clis → clis}/douban/utils.js +0 -0
- /package/{dist/clis → clis}/douban/utils.test.js +0 -0
- /package/{dist/clis → clis}/doubao/ask.js +0 -0
- /package/{dist/clis → clis}/doubao/detail.js +0 -0
- /package/{dist/clis → clis}/doubao/detail.test.js +0 -0
- /package/{dist/clis → clis}/doubao/history.js +0 -0
- /package/{dist/clis → clis}/doubao/history.test.js +0 -0
- /package/{dist/clis → clis}/doubao/meeting-summary.js +0 -0
- /package/{dist/clis → clis}/doubao/meeting-transcript.js +0 -0
- /package/{dist/clis → clis}/doubao/new.js +0 -0
- /package/{dist/clis → clis}/doubao/read.js +0 -0
- /package/{dist/clis → clis}/doubao/send.js +0 -0
- /package/{dist/clis → clis}/doubao/status.js +0 -0
- /package/{dist/clis → clis}/doubao/utils.js +0 -0
- /package/{dist/clis → clis}/doubao/utils.test.js +0 -0
- /package/{dist/clis → clis}/doubao-app/ask.js +0 -0
- /package/{dist/clis → clis}/doubao-app/dump.js +0 -0
- /package/{dist/clis → clis}/doubao-app/new.js +0 -0
- /package/{dist/clis → clis}/doubao-app/read.js +0 -0
- /package/{dist/clis → clis}/doubao-app/screenshot.js +0 -0
- /package/{dist/clis → clis}/doubao-app/send.js +0 -0
- /package/{dist/clis → clis}/doubao-app/status.js +0 -0
- /package/{dist/clis → clis}/doubao-app/utils.js +0 -0
- /package/{dist/clis → clis}/douyin/_shared/browser-fetch.js +0 -0
- /package/{dist/clis → clis}/douyin/_shared/browser-fetch.test.js +0 -0
- /package/{dist/clis → clis}/douyin/_shared/creation-id.js +0 -0
- /package/{dist/clis → clis}/douyin/_shared/creation-id.test.js +0 -0
- /package/{dist/clis → clis}/douyin/_shared/imagex-upload.js +0 -0
- /package/{dist/clis → clis}/douyin/_shared/imagex-upload.test.js +0 -0
- /package/{dist/clis → clis}/douyin/_shared/public-api.js +0 -0
- /package/{dist/clis → clis}/douyin/_shared/sts2.js +0 -0
- /package/{dist/clis → clis}/douyin/_shared/sts2.test.js +0 -0
- /package/{dist/clis → clis}/douyin/_shared/text-extra.js +0 -0
- /package/{dist/clis → clis}/douyin/_shared/text-extra.test.js +0 -0
- /package/{dist/clis → clis}/douyin/_shared/timing.js +0 -0
- /package/{dist/clis → clis}/douyin/_shared/timing.test.js +0 -0
- /package/{dist/clis → clis}/douyin/_shared/tos-upload-short-read.test.js +0 -0
- /package/{dist/clis → clis}/douyin/_shared/tos-upload.js +0 -0
- /package/{dist/clis → clis}/douyin/_shared/tos-upload.test.js +0 -0
- /package/{dist/clis → clis}/douyin/_shared/transcode.js +0 -0
- /package/{dist/clis → clis}/douyin/_shared/transcode.test.js +0 -0
- /package/{dist/clis/1688/assets.test.d.ts → clis/douyin/_shared/types.js} +0 -0
- /package/{dist/clis → clis}/douyin/activities.js +0 -0
- /package/{dist/clis → clis}/douyin/activities.test.js +0 -0
- /package/{dist/clis → clis}/douyin/collections.js +0 -0
- /package/{dist/clis → clis}/douyin/collections.test.js +0 -0
- /package/{dist/clis → clis}/douyin/delete.js +0 -0
- /package/{dist/clis → clis}/douyin/delete.test.js +0 -0
- /package/{dist/clis → clis}/douyin/draft.js +0 -0
- /package/{dist/clis → clis}/douyin/draft.test.js +0 -0
- /package/{dist/clis → clis}/douyin/drafts.js +0 -0
- /package/{dist/clis → clis}/douyin/drafts.test.js +0 -0
- /package/{dist/clis → clis}/douyin/hashtag.js +0 -0
- /package/{dist/clis → clis}/douyin/hashtag.test.js +0 -0
- /package/{dist/clis → clis}/douyin/location.js +0 -0
- /package/{dist/clis → clis}/douyin/location.test.js +0 -0
- /package/{dist/clis → clis}/douyin/profile.js +0 -0
- /package/{dist/clis → clis}/douyin/profile.test.js +0 -0
- /package/{dist/clis → clis}/douyin/publish.js +0 -0
- /package/{dist/clis → clis}/douyin/publish.test.js +0 -0
- /package/{dist/clis → clis}/douyin/stats.js +0 -0
- /package/{dist/clis → clis}/douyin/stats.test.js +0 -0
- /package/{dist/clis → clis}/douyin/update.js +0 -0
- /package/{dist/clis → clis}/douyin/update.test.js +0 -0
- /package/{dist/clis → clis}/douyin/user-videos.js +0 -0
- /package/{dist/clis → clis}/douyin/user-videos.test.js +0 -0
- /package/{dist/clis → clis}/douyin/videos.js +0 -0
- /package/{dist/clis → clis}/douyin/videos.test.js +0 -0
- /package/{dist/clis → clis}/facebook/add-friend.js +0 -0
- /package/{dist/clis → clis}/facebook/events.js +0 -0
- /package/{dist/clis → clis}/facebook/feed.js +0 -0
- /package/{dist/clis → clis}/facebook/friends.js +0 -0
- /package/{dist/clis → clis}/facebook/groups.js +0 -0
- /package/{dist/clis → clis}/facebook/join-group.js +0 -0
- /package/{dist/clis → clis}/facebook/memories.js +0 -0
- /package/{dist/clis → clis}/facebook/notifications.js +0 -0
- /package/{dist/clis → clis}/facebook/profile.js +0 -0
- /package/{dist/clis → clis}/facebook/search.js +0 -0
- /package/{dist/clis → clis}/facebook/search.test.js +0 -0
- /package/{dist/clis → clis}/gemini/ask.js +0 -0
- /package/{dist/clis → clis}/gemini/ask.test.js +0 -0
- /package/{dist/clis → clis}/gemini/deep-research-result.js +0 -0
- /package/{dist/clis → clis}/gemini/deep-research-result.test.js +0 -0
- /package/{dist/clis → clis}/gemini/deep-research.js +0 -0
- /package/{dist/clis → clis}/gemini/deep-research.test.js +0 -0
- /package/{dist/clis → clis}/gemini/image.js +0 -0
- /package/{dist/clis → clis}/gemini/new.js +0 -0
- /package/{dist/clis → clis}/gemini/reply-state.test.js +0 -0
- /package/{dist/clis → clis}/gemini/utils.js +0 -0
- /package/{dist/clis → clis}/gemini/utils.test.js +0 -0
- /package/{dist/clis → clis}/gitee/index.js +0 -0
- /package/{dist/clis → clis}/gitee/search.js +0 -0
- /package/{dist/clis → clis}/gitee/trending.js +0 -0
- /package/{dist/clis → clis}/gitee/user.js +0 -0
- /package/{dist/clis → clis}/gitee/user.test.js +0 -0
- /package/{dist/clis → clis}/google/news.js +0 -0
- /package/{dist/clis → clis}/google/search.js +0 -0
- /package/{dist/clis → clis}/google/suggest.js +0 -0
- /package/{dist/clis → clis}/google/trends.js +0 -0
- /package/{dist/clis → clis}/google/utils.js +0 -0
- /package/{dist/clis → clis}/google/utils.test.js +0 -0
- /package/{dist/clis → clis}/grok/ask.js +0 -0
- /package/{dist/clis → clis}/grok/ask.test.js +0 -0
- /package/{dist/clis → clis}/hackernews/ask.js +0 -0
- /package/{dist/clis → clis}/hackernews/best.js +0 -0
- /package/{dist/clis → clis}/hackernews/jobs.js +0 -0
- /package/{dist/clis → clis}/hackernews/new.js +0 -0
- /package/{dist/clis → clis}/hackernews/search.js +0 -0
- /package/{dist/clis → clis}/hackernews/show.js +0 -0
- /package/{dist/clis → clis}/hackernews/top.js +0 -0
- /package/{dist/clis → clis}/hackernews/user.js +0 -0
- /package/{dist/clis → clis}/hf/top.js +0 -0
- /package/{dist/clis → clis}/hupu/detail.js +0 -0
- /package/{dist/clis → clis}/hupu/hot.js +0 -0
- /package/{dist/clis → clis}/hupu/like.js +0 -0
- /package/{dist/clis → clis}/hupu/mentions.js +0 -0
- /package/{dist/clis → clis}/hupu/reply.js +0 -0
- /package/{dist/clis → clis}/hupu/search.js +0 -0
- /package/{dist/clis → clis}/hupu/unlike.js +0 -0
- /package/{dist/clis → clis}/hupu/utils.js +0 -0
- /package/{dist/clis → clis}/imdb/person.js +0 -0
- /package/{dist/clis → clis}/imdb/reviews.js +0 -0
- /package/{dist/clis → clis}/imdb/search.js +0 -0
- /package/{dist/clis → clis}/imdb/title.js +0 -0
- /package/{dist/clis → clis}/imdb/top.js +0 -0
- /package/{dist/clis → clis}/imdb/trending.js +0 -0
- /package/{dist/clis → clis}/imdb/utils.js +0 -0
- /package/{dist/clis → clis}/imdb/utils.test.js +0 -0
- /package/{dist/clis → clis}/instagram/_shared/private-publish.js +0 -0
- /package/{dist/clis → clis}/instagram/_shared/private-publish.test.js +0 -0
- /package/{dist/clis → clis}/instagram/_shared/protocol-capture.js +0 -0
- /package/{dist/clis → clis}/instagram/_shared/protocol-capture.test.js +0 -0
- /package/{dist/clis → clis}/instagram/_shared/runtime-info.js +0 -0
- /package/{dist/clis → clis}/instagram/comment.js +0 -0
- /package/{dist/clis → clis}/instagram/download.js +0 -0
- /package/{dist/clis → clis}/instagram/download.test.js +0 -0
- /package/{dist/clis → clis}/instagram/explore.js +0 -0
- /package/{dist/clis → clis}/instagram/follow.js +0 -0
- /package/{dist/clis → clis}/instagram/followers.js +0 -0
- /package/{dist/clis → clis}/instagram/following.js +0 -0
- /package/{dist/clis → clis}/instagram/like.js +0 -0
- /package/{dist/clis → clis}/instagram/note.js +0 -0
- /package/{dist/clis → clis}/instagram/note.test.js +0 -0
- /package/{dist/clis → clis}/instagram/post.js +0 -0
- /package/{dist/clis → clis}/instagram/post.test.js +0 -0
- /package/{dist/clis → clis}/instagram/profile.js +0 -0
- /package/{dist/clis → clis}/instagram/reel.js +0 -0
- /package/{dist/clis → clis}/instagram/reel.test.js +0 -0
- /package/{dist/clis → clis}/instagram/save.js +0 -0
- /package/{dist/clis → clis}/instagram/saved.js +0 -0
- /package/{dist/clis → clis}/instagram/search.js +0 -0
- /package/{dist/clis → clis}/instagram/story.js +0 -0
- /package/{dist/clis → clis}/instagram/story.test.js +0 -0
- /package/{dist/clis → clis}/instagram/unfollow.js +0 -0
- /package/{dist/clis → clis}/instagram/unlike.js +0 -0
- /package/{dist/clis → clis}/instagram/unsave.js +0 -0
- /package/{dist/clis → clis}/instagram/user.js +0 -0
- /package/{dist/clis → clis}/jd/add-cart.js +0 -0
- /package/{dist/clis → clis}/jd/cart.js +0 -0
- /package/{dist/clis → clis}/jd/commands.test.js +0 -0
- /package/{dist/clis → clis}/jd/detail.js +0 -0
- /package/{dist/clis → clis}/jd/item.js +0 -0
- /package/{dist/clis → clis}/jd/item.test.js +0 -0
- /package/{dist/clis → clis}/jd/reviews.js +0 -0
- /package/{dist/clis → clis}/jd/search.js +0 -0
- /package/{dist/clis → clis}/jianyu/detail.js +0 -0
- /package/{dist/clis → clis}/jianyu/search.js +0 -0
- /package/{dist/clis → clis}/jianyu/search.test.js +0 -0
- /package/{dist/clis → clis}/jianyu/shared/china-bid-search.js +0 -0
- /package/{dist/clis → clis}/jianyu/shared/procurement-contract.js +0 -0
- /package/{dist/clis → clis}/jianyu/shared/procurement-contract.test.js +0 -0
- /package/{dist/clis → clis}/jianyu/shared/procurement-detail.js +0 -0
- /package/{dist/clis → clis}/jianyu/shared/procurement-detail.test.js +0 -0
- /package/{dist/clis → clis}/jike/comment.js +0 -0
- /package/{dist/clis → clis}/jike/create.js +0 -0
- /package/{dist/clis → clis}/jike/feed.js +0 -0
- /package/{dist/clis → clis}/jike/like.js +0 -0
- /package/{dist/clis → clis}/jike/notifications.js +0 -0
- /package/{dist/clis → clis}/jike/post.js +0 -0
- /package/{dist/clis → clis}/jike/repost.js +0 -0
- /package/{dist/clis → clis}/jike/search.js +0 -0
- /package/{dist/clis → clis}/jike/topic.js +0 -0
- /package/{dist/clis → clis}/jike/user.js +0 -0
- /package/{dist/clis → clis}/jike/utils.js +0 -0
- /package/{dist/clis → clis}/jimeng/generate.js +0 -0
- /package/{dist/clis → clis}/jimeng/history.js +0 -0
- /package/{dist/clis → clis}/jimeng/new.js +0 -0
- /package/{dist/clis → clis}/jimeng/workspaces.js +0 -0
- /package/{dist/clis → clis}/lesswrong/_helpers.js +0 -0
- /package/{dist/clis → clis}/lesswrong/comments.js +0 -0
- /package/{dist/clis → clis}/lesswrong/curated.js +0 -0
- /package/{dist/clis → clis}/lesswrong/frontpage.js +0 -0
- /package/{dist/clis → clis}/lesswrong/new.js +0 -0
- /package/{dist/clis → clis}/lesswrong/read.js +0 -0
- /package/{dist/clis → clis}/lesswrong/sequences.js +0 -0
- /package/{dist/clis → clis}/lesswrong/shortform.js +0 -0
- /package/{dist/clis → clis}/lesswrong/tag.js +0 -0
- /package/{dist/clis → clis}/lesswrong/tags.js +0 -0
- /package/{dist/clis → clis}/lesswrong/top-month.js +0 -0
- /package/{dist/clis → clis}/lesswrong/top-week.js +0 -0
- /package/{dist/clis → clis}/lesswrong/top-year.js +0 -0
- /package/{dist/clis → clis}/lesswrong/top.js +0 -0
- /package/{dist/clis → clis}/lesswrong/user-posts.js +0 -0
- /package/{dist/clis → clis}/lesswrong/user.js +0 -0
- /package/{dist/clis → clis}/linkedin/search.js +0 -0
- /package/{dist/clis → clis}/linkedin/timeline.js +0 -0
- /package/{dist/clis → clis}/linkedin/timeline.test.js +0 -0
- /package/{dist/clis → clis}/linux-do/category.js +0 -0
- /package/{dist/clis → clis}/linux-do/feed.test.js +0 -0
- /package/{dist/clis → clis}/linux-do/hot.js +0 -0
- /package/{dist/clis → clis}/linux-do/latest.js +0 -0
- /package/{dist/clis → clis}/linux-do/topic-content.js +0 -0
- /package/{dist/clis → clis}/lobsters/active.js +0 -0
- /package/{dist/clis → clis}/lobsters/hot.js +0 -0
- /package/{dist/clis → clis}/lobsters/newest.js +0 -0
- /package/{dist/clis → clis}/lobsters/tag.js +0 -0
- /package/{dist/clis → clis}/medium/feed.js +0 -0
- /package/{dist/clis → clis}/medium/search.js +0 -0
- /package/{dist/clis → clis}/medium/user.js +0 -0
- /package/{dist/clis → clis}/medium/utils.js +0 -0
- /package/{dist/clis → clis}/notebooklm/compat.test.js +0 -0
- /package/{dist/clis → clis}/notebooklm/current.js +0 -0
- /package/{dist/clis → clis}/notebooklm/get.js +0 -0
- /package/{dist/clis → clis}/notebooklm/history.js +0 -0
- /package/{dist/clis → clis}/notebooklm/history.test.js +0 -0
- /package/{dist/clis → clis}/notebooklm/list.js +0 -0
- /package/{dist/clis → clis}/notebooklm/note-list.js +0 -0
- /package/{dist/clis → clis}/notebooklm/note-list.test.js +0 -0
- /package/{dist/clis → clis}/notebooklm/notes-get.js +0 -0
- /package/{dist/clis → clis}/notebooklm/notes-get.test.js +0 -0
- /package/{dist/clis → clis}/notebooklm/open.js +0 -0
- /package/{dist/clis → clis}/notebooklm/open.test.js +0 -0
- /package/{dist/clis → clis}/notebooklm/rpc.js +0 -0
- /package/{dist/clis → clis}/notebooklm/rpc.test.js +0 -0
- /package/{dist/clis → clis}/notebooklm/shared.js +0 -0
- /package/{dist/clis → clis}/notebooklm/source-fulltext.js +0 -0
- /package/{dist/clis → clis}/notebooklm/source-fulltext.test.js +0 -0
- /package/{dist/clis → clis}/notebooklm/source-get.js +0 -0
- /package/{dist/clis → clis}/notebooklm/source-get.test.js +0 -0
- /package/{dist/clis → clis}/notebooklm/source-guide.js +0 -0
- /package/{dist/clis → clis}/notebooklm/source-guide.test.js +0 -0
- /package/{dist/clis → clis}/notebooklm/source-list.js +0 -0
- /package/{dist/clis → clis}/notebooklm/status.js +0 -0
- /package/{dist/clis → clis}/notebooklm/summary.js +0 -0
- /package/{dist/clis → clis}/notebooklm/summary.test.js +0 -0
- /package/{dist/clis → clis}/notebooklm/utils.js +0 -0
- /package/{dist/clis → clis}/notebooklm/utils.test.js +0 -0
- /package/{dist/clis → clis}/notion/export.js +0 -0
- /package/{dist/clis → clis}/notion/favorites.js +0 -0
- /package/{dist/clis → clis}/notion/new.js +0 -0
- /package/{dist/clis → clis}/notion/read.js +0 -0
- /package/{dist/clis → clis}/notion/search.js +0 -0
- /package/{dist/clis → clis}/notion/sidebar.js +0 -0
- /package/{dist/clis → clis}/notion/status.js +0 -0
- /package/{dist/clis → clis}/notion/write.js +0 -0
- /package/{dist/clis → clis}/ones/common.js +0 -0
- /package/{dist/clis → clis}/ones/enrich-tasks.js +0 -0
- /package/{dist/clis → clis}/ones/login.js +0 -0
- /package/{dist/clis → clis}/ones/logout.js +0 -0
- /package/{dist/clis → clis}/ones/me.js +0 -0
- /package/{dist/clis → clis}/ones/my-tasks.js +0 -0
- /package/{dist/clis → clis}/ones/resolve-labels.js +0 -0
- /package/{dist/clis → clis}/ones/task-helpers.js +0 -0
- /package/{dist/clis → clis}/ones/task-helpers.test.js +0 -0
- /package/{dist/clis → clis}/ones/task.js +0 -0
- /package/{dist/clis → clis}/ones/tasks.js +0 -0
- /package/{dist/clis → clis}/ones/token-info.js +0 -0
- /package/{dist/clis → clis}/ones/worklog.js +0 -0
- /package/{dist/clis → clis}/ones/worklog.test.js +0 -0
- /package/{dist/clis → clis}/paperreview/commands.test.js +0 -0
- /package/{dist/clis → clis}/paperreview/feedback.js +0 -0
- /package/{dist/clis → clis}/paperreview/review.js +0 -0
- /package/{dist/clis → clis}/paperreview/submit.js +0 -0
- /package/{dist/clis → clis}/paperreview/utils.js +0 -0
- /package/{dist/clis → clis}/paperreview/utils.test.js +0 -0
- /package/{dist/clis → clis}/pixiv/detail.js +0 -0
- /package/{dist/clis → clis}/pixiv/download.js +0 -0
- /package/{dist/clis → clis}/pixiv/download.test.js +0 -0
- /package/{dist/clis → clis}/pixiv/illusts.js +0 -0
- /package/{dist/clis → clis}/pixiv/illusts.test.js +0 -0
- /package/{dist/clis → clis}/pixiv/ranking.js +0 -0
- /package/{dist/clis → clis}/pixiv/search.js +0 -0
- /package/{dist/clis → clis}/pixiv/search.test.js +0 -0
- /package/{dist/clis → clis}/pixiv/test-utils.js +0 -0
- /package/{dist/clis → clis}/pixiv/user.js +0 -0
- /package/{dist/clis → clis}/pixiv/utils.js +0 -0
- /package/{dist/clis → clis}/producthunt/browse.js +0 -0
- /package/{dist/clis → clis}/producthunt/hot.js +0 -0
- /package/{dist/clis → clis}/producthunt/posts.js +0 -0
- /package/{dist/clis → clis}/producthunt/today.js +0 -0
- /package/{dist/clis → clis}/producthunt/utils.js +0 -0
- /package/{dist/clis → clis}/producthunt/utils.test.js +0 -0
- /package/{dist/clis → clis}/quark/ls.js +0 -0
- /package/{dist/clis → clis}/quark/mkdir.js +0 -0
- /package/{dist/clis → clis}/quark/mv.js +0 -0
- /package/{dist/clis → clis}/quark/rename.js +0 -0
- /package/{dist/clis → clis}/quark/rm.js +0 -0
- /package/{dist/clis → clis}/quark/save.js +0 -0
- /package/{dist/clis → clis}/quark/share-tree.js +0 -0
- /package/{dist/clis → clis}/quark/utils.js +0 -0
- /package/{dist/clis → clis}/quark/utils.test.js +0 -0
- /package/{dist/clis → clis}/reddit/comment.js +0 -0
- /package/{dist/clis → clis}/reddit/frontpage.js +0 -0
- /package/{dist/clis → clis}/reddit/hot.js +0 -0
- /package/{dist/clis → clis}/reddit/popular.js +0 -0
- /package/{dist/clis → clis}/reddit/read.js +0 -0
- /package/{dist/clis → clis}/reddit/read.test.js +0 -0
- /package/{dist/clis → clis}/reddit/save.js +0 -0
- /package/{dist/clis → clis}/reddit/saved.js +0 -0
- /package/{dist/clis → clis}/reddit/search.js +0 -0
- /package/{dist/clis → clis}/reddit/subreddit.js +0 -0
- /package/{dist/clis → clis}/reddit/subscribe.js +0 -0
- /package/{dist/clis → clis}/reddit/upvote.js +0 -0
- /package/{dist/clis → clis}/reddit/upvoted.js +0 -0
- /package/{dist/clis → clis}/reddit/user-comments.js +0 -0
- /package/{dist/clis → clis}/reddit/user-posts.js +0 -0
- /package/{dist/clis → clis}/reddit/user.js +0 -0
- /package/{dist/clis → clis}/reuters/search.js +0 -0
- /package/{dist/clis → clis}/sinablog/article.js +0 -0
- /package/{dist/clis → clis}/sinablog/hot.js +0 -0
- /package/{dist/clis → clis}/sinablog/search.js +0 -0
- /package/{dist/clis → clis}/sinablog/user.js +0 -0
- /package/{dist/clis → clis}/sinablog/utils.js +0 -0
- /package/{dist/clis → clis}/sinafinance/news.js +0 -0
- /package/{dist/clis → clis}/sinafinance/rolling-news.js +0 -0
- /package/{dist/clis → clis}/sinafinance/stock-rank.js +0 -0
- /package/{dist/clis → clis}/sinafinance/stock.js +0 -0
- /package/{dist/clis → clis}/smzdm/search.js +0 -0
- /package/{dist/clis → clis}/spotify/spotify.js +0 -0
- /package/{dist/clis → clis}/spotify/utils.js +0 -0
- /package/{dist/clis → clis}/spotify/utils.test.js +0 -0
- /package/{dist/clis → clis}/stackoverflow/bounties.js +0 -0
- /package/{dist/clis → clis}/stackoverflow/hot.js +0 -0
- /package/{dist/clis → clis}/stackoverflow/search.js +0 -0
- /package/{dist/clis → clis}/stackoverflow/unanswered.js +0 -0
- /package/{dist/clis → clis}/steam/top-sellers.js +0 -0
- /package/{dist/clis → clis}/substack/feed.js +0 -0
- /package/{dist/clis → clis}/substack/publication.js +0 -0
- /package/{dist/clis → clis}/substack/search.js +0 -0
- /package/{dist/clis → clis}/substack/utils.js +0 -0
- /package/{dist/clis → clis}/substack/utils.test.js +0 -0
- /package/{dist/clis → clis}/taobao/add-cart.js +0 -0
- /package/{dist/clis → clis}/taobao/cart.js +0 -0
- /package/{dist/clis → clis}/taobao/commands.test.js +0 -0
- /package/{dist/clis → clis}/taobao/detail.js +0 -0
- /package/{dist/clis → clis}/taobao/reviews.js +0 -0
- /package/{dist/clis → clis}/taobao/search.js +0 -0
- /package/{dist/clis → clis}/tieba/commands.test.js +0 -0
- /package/{dist/clis → clis}/tieba/hot.js +0 -0
- /package/{dist/clis → clis}/tieba/posts.js +0 -0
- /package/{dist/clis → clis}/tieba/read.js +0 -0
- /package/{dist/clis → clis}/tieba/search.js +0 -0
- /package/{dist/clis → clis}/tieba/utils.js +0 -0
- /package/{dist/clis → clis}/tieba/utils.test.js +0 -0
- /package/{dist/clis → clis}/tiktok/comment.js +0 -0
- /package/{dist/clis → clis}/tiktok/explore.js +0 -0
- /package/{dist/clis → clis}/tiktok/follow.js +0 -0
- /package/{dist/clis → clis}/tiktok/following.js +0 -0
- /package/{dist/clis → clis}/tiktok/friends.js +0 -0
- /package/{dist/clis → clis}/tiktok/like.js +0 -0
- /package/{dist/clis → clis}/tiktok/live.js +0 -0
- /package/{dist/clis → clis}/tiktok/notifications.js +0 -0
- /package/{dist/clis → clis}/tiktok/profile.js +0 -0
- /package/{dist/clis → clis}/tiktok/save.js +0 -0
- /package/{dist/clis → clis}/tiktok/search.js +0 -0
- /package/{dist/clis → clis}/tiktok/unfollow.js +0 -0
- /package/{dist/clis → clis}/tiktok/unlike.js +0 -0
- /package/{dist/clis → clis}/tiktok/unsave.js +0 -0
- /package/{dist/clis → clis}/tiktok/user.js +0 -0
- /package/{dist/clis → clis}/twitter/accept.js +0 -0
- /package/{dist/clis → clis}/twitter/article.js +0 -0
- /package/{dist/clis → clis}/twitter/block.js +0 -0
- /package/{dist/clis → clis}/twitter/bookmark.js +0 -0
- /package/{dist/clis → clis}/twitter/bookmarks.js +0 -0
- /package/{dist/clis → clis}/twitter/delete.js +0 -0
- /package/{dist/clis → clis}/twitter/delete.test.js +0 -0
- /package/{dist/clis → clis}/twitter/download.js +0 -0
- /package/{dist/clis → clis}/twitter/follow.js +0 -0
- /package/{dist/clis → clis}/twitter/followers.js +0 -0
- /package/{dist/clis → clis}/twitter/following.js +0 -0
- /package/{dist/clis → clis}/twitter/hide-reply.js +0 -0
- /package/{dist/clis → clis}/twitter/like.js +0 -0
- /package/{dist/clis → clis}/twitter/likes.js +0 -0
- /package/{dist/clis → clis}/twitter/likes.test.js +0 -0
- /package/{dist/clis → clis}/twitter/notifications.js +0 -0
- /package/{dist/clis → clis}/twitter/post.js +0 -0
- /package/{dist/clis → clis}/twitter/post.test.js +0 -0
- /package/{dist/clis → clis}/twitter/profile.js +0 -0
- /package/{dist/clis → clis}/twitter/reply-dm.js +0 -0
- /package/{dist/clis → clis}/twitter/reply.js +0 -0
- /package/{dist/clis → clis}/twitter/reply.test.js +0 -0
- /package/{dist/clis → clis}/twitter/search.js +0 -0
- /package/{dist/clis → clis}/twitter/search.test.js +0 -0
- /package/{dist/clis → clis}/twitter/shared.js +0 -0
- /package/{dist/clis → clis}/twitter/thread.js +0 -0
- /package/{dist/clis → clis}/twitter/timeline.js +0 -0
- /package/{dist/clis → clis}/twitter/timeline.test.js +0 -0
- /package/{dist/clis → clis}/twitter/trending.js +0 -0
- /package/{dist/clis → clis}/twitter/unblock.js +0 -0
- /package/{dist/clis → clis}/twitter/unbookmark.js +0 -0
- /package/{dist/clis → clis}/twitter/unfollow.js +0 -0
- /package/{dist/clis → clis}/v2ex/daily.js +0 -0
- /package/{dist/clis → clis}/v2ex/hot.js +0 -0
- /package/{dist/clis → clis}/v2ex/latest.js +0 -0
- /package/{dist/clis → clis}/v2ex/me.js +0 -0
- /package/{dist/clis → clis}/v2ex/member.js +0 -0
- /package/{dist/clis → clis}/v2ex/node.js +0 -0
- /package/{dist/clis → clis}/v2ex/nodes.js +0 -0
- /package/{dist/clis → clis}/v2ex/notifications.js +0 -0
- /package/{dist/clis → clis}/v2ex/replies.js +0 -0
- /package/{dist/clis → clis}/v2ex/topic.js +0 -0
- /package/{dist/clis → clis}/v2ex/user.js +0 -0
- /package/{dist/clis → clis}/web/read.js +0 -0
- /package/{dist/clis → clis}/weibo/comments.js +0 -0
- /package/{dist/clis → clis}/weibo/hot.js +0 -0
- /package/{dist/clis → clis}/weibo/me.js +0 -0
- /package/{dist/clis → clis}/weibo/post.js +0 -0
- /package/{dist/clis → clis}/weibo/search.js +0 -0
- /package/{dist/clis → clis}/weibo/user.js +0 -0
- /package/{dist/clis → clis}/weibo/utils.js +0 -0
- /package/{dist/clis → clis}/weixin/download.js +0 -0
- /package/{dist/clis → clis}/weread/book.js +0 -0
- /package/{dist/clis → clis}/weread/commands.test.js +0 -0
- /package/{dist/clis → clis}/weread/highlights.js +0 -0
- /package/{dist/clis → clis}/weread/notebooks.js +0 -0
- /package/{dist/clis → clis}/weread/notes.js +0 -0
- /package/{dist/clis → clis}/weread/private-api-regression.test.js +0 -0
- /package/{dist/clis → clis}/weread/ranking.js +0 -0
- /package/{dist/clis → clis}/weread/search-regression.test.js +0 -0
- /package/{dist/clis → clis}/weread/search.js +0 -0
- /package/{dist/clis → clis}/weread/shelf.js +0 -0
- /package/{dist/clis → clis}/weread/utils.js +0 -0
- /package/{dist/clis → clis}/weread/utils.test.js +0 -0
- /package/{dist/clis → clis}/wikipedia/random.js +0 -0
- /package/{dist/clis → clis}/wikipedia/search.js +0 -0
- /package/{dist/clis → clis}/wikipedia/summary.js +0 -0
- /package/{dist/clis → clis}/wikipedia/trending.js +0 -0
- /package/{dist/clis → clis}/wikipedia/utils.js +0 -0
- /package/{dist/clis → clis}/xianyu/chat.js +0 -0
- /package/{dist/clis → clis}/xianyu/chat.test.js +0 -0
- /package/{dist/clis → clis}/xianyu/item.js +0 -0
- /package/{dist/clis → clis}/xianyu/item.test.js +0 -0
- /package/{dist/clis → clis}/xianyu/search.js +0 -0
- /package/{dist/clis → clis}/xianyu/search.test.js +0 -0
- /package/{dist/clis → clis}/xianyu/utils.js +0 -0
- /package/{dist/clis → clis}/xiaoe/catalog.js +0 -0
- /package/{dist/clis → clis}/xiaoe/content.js +0 -0
- /package/{dist/clis → clis}/xiaoe/courses.js +0 -0
- /package/{dist/clis → clis}/xiaoe/detail.js +0 -0
- /package/{dist/clis → clis}/xiaoe/play-url.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/comments.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/comments.test.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/creator-note-detail.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/creator-note-detail.test.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/creator-notes-summary.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/creator-notes-summary.test.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/creator-notes.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/creator-notes.test.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/creator-profile.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/creator-stats.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/download.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/download.test.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/feed.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/note-helpers.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/note.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/note.test.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/notifications.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/publish.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/publish.test.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/search.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/search.test.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/user-helpers.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/user-helpers.test.js +0 -0
- /package/{dist/clis → clis}/xiaohongshu/user.js +0 -0
- /package/{dist/clis → clis}/xiaoyuzhou/episode.js +0 -0
- /package/{dist/clis → clis}/xiaoyuzhou/podcast-episodes.js +0 -0
- /package/{dist/clis → clis}/xiaoyuzhou/podcast.js +0 -0
- /package/{dist/clis → clis}/xiaoyuzhou/utils.js +0 -0
- /package/{dist/clis → clis}/xiaoyuzhou/utils.test.js +0 -0
- /package/{dist/clis → clis}/xueqiu/comments.js +0 -0
- /package/{dist/clis → clis}/xueqiu/comments.test.js +0 -0
- /package/{dist/clis → clis}/xueqiu/danjuan-utils.js +0 -0
- /package/{dist/clis → clis}/xueqiu/danjuan-utils.test.js +0 -0
- /package/{dist/clis → clis}/xueqiu/fund-holdings.js +0 -0
- /package/{dist/clis → clis}/xueqiu/fund-snapshot.js +0 -0
- /package/{dist/clis → clis}/yollomi/background.js +0 -0
- /package/{dist/clis → clis}/yollomi/edit.js +0 -0
- /package/{dist/clis → clis}/yollomi/face-swap.js +0 -0
- /package/{dist/clis → clis}/yollomi/generate.js +0 -0
- /package/{dist/clis → clis}/yollomi/models.js +0 -0
- /package/{dist/clis → clis}/yollomi/object-remover.js +0 -0
- /package/{dist/clis → clis}/yollomi/remove-bg.js +0 -0
- /package/{dist/clis → clis}/yollomi/restore.js +0 -0
- /package/{dist/clis → clis}/yollomi/try-on.js +0 -0
- /package/{dist/clis → clis}/yollomi/upload.js +0 -0
- /package/{dist/clis → clis}/yollomi/upscale.js +0 -0
- /package/{dist/clis → clis}/yollomi/utils.js +0 -0
- /package/{dist/clis → clis}/yollomi/video.js +0 -0
- /package/{dist/clis → clis}/youtube/channel.js +0 -0
- /package/{dist/clis → clis}/youtube/comments.js +0 -0
- /package/{dist/clis → clis}/youtube/search.js +0 -0
- /package/{dist/clis → clis}/youtube/transcript-group.js +0 -0
- /package/{dist/clis → clis}/youtube/transcript-group.test.js +0 -0
- /package/{dist/clis → clis}/youtube/transcript.js +0 -0
- /package/{dist/clis → clis}/youtube/utils.js +0 -0
- /package/{dist/clis → clis}/youtube/utils.test.js +0 -0
- /package/{dist/clis → clis}/youtube/video.js +0 -0
- /package/{dist/clis → clis}/yuanbao/ask.js +0 -0
- /package/{dist/clis → clis}/yuanbao/ask.test.js +0 -0
- /package/{dist/clis → clis}/yuanbao/new.js +0 -0
- /package/{dist/clis → clis}/yuanbao/new.test.js +0 -0
- /package/{dist/clis → clis}/yuanbao/shared.js +0 -0
- /package/{dist/clis → clis}/zhihu/answer.js +0 -0
- /package/{dist/clis → clis}/zhihu/answer.test.js +0 -0
- /package/{dist/clis → clis}/zhihu/comment.js +0 -0
- /package/{dist/clis → clis}/zhihu/comment.test.js +0 -0
- /package/{dist/clis → clis}/zhihu/download.js +0 -0
- /package/{dist/clis → clis}/zhihu/download.test.js +0 -0
- /package/{dist/clis → clis}/zhihu/favorite.js +0 -0
- /package/{dist/clis → clis}/zhihu/favorite.test.js +0 -0
- /package/{dist/clis → clis}/zhihu/follow.js +0 -0
- /package/{dist/clis → clis}/zhihu/follow.test.js +0 -0
- /package/{dist/clis → clis}/zhihu/hot.js +0 -0
- /package/{dist/clis → clis}/zhihu/like.js +0 -0
- /package/{dist/clis → clis}/zhihu/like.test.js +0 -0
- /package/{dist/clis → clis}/zhihu/question.js +0 -0
- /package/{dist/clis → clis}/zhihu/question.test.js +0 -0
- /package/{dist/clis → clis}/zhihu/search.js +0 -0
- /package/{dist/clis → clis}/zhihu/target.js +0 -0
- /package/{dist/clis → clis}/zhihu/target.test.js +0 -0
- /package/{dist/clis → clis}/zhihu/write-shared.js +0 -0
- /package/{dist/clis → clis}/zhihu/write-shared.test.js +0 -0
- /package/{dist/clis → clis}/zsxq/dynamics.js +0 -0
- /package/{dist/clis → clis}/zsxq/groups.js +0 -0
- /package/{dist/clis → clis}/zsxq/search.js +0 -0
- /package/{dist/clis → clis}/zsxq/search.test.js +0 -0
- /package/{dist/clis → clis}/zsxq/topics.js +0 -0
- /package/{dist/clis → clis}/zsxq/topics.test.js +0 -0
|
@@ -188,14 +188,34 @@ const FORBIDDEN_EXPR_PATTERNS = /\b(constructor|__proto__|prototype|globalThis|p
|
|
|
188
188
|
/**
|
|
189
189
|
* Deep-copy plain data to sever prototype chains, preventing sandbox escape
|
|
190
190
|
* via `args.constructor.constructor('return process')()` etc.
|
|
191
|
+
*
|
|
192
|
+
* Uses a WeakMap cache keyed by object reference: when the same object
|
|
193
|
+
* (e.g. `args` or `data`) is passed repeatedly across loop iterations,
|
|
194
|
+
* the expensive JSON round-trip is performed only once. The WeakMap
|
|
195
|
+
* lets entries be GC'd when the source object is no longer referenced.
|
|
196
|
+
*/
|
|
197
|
+
/**
|
|
198
|
+
* Cache serialized JSON strings (not parsed objects) by source reference.
|
|
199
|
+
* Caching the parsed object would be unsafe: the VM sandbox could mutate it,
|
|
200
|
+
* and the polluted version would leak to subsequent calls. By caching the
|
|
201
|
+
* string and returning a fresh JSON.parse() each time, every evaluation gets
|
|
202
|
+
* its own clean deep-copy while still avoiding redundant JSON.stringify()
|
|
203
|
+
* for the same unchanged source object across loop iterations.
|
|
191
204
|
*/
|
|
205
|
+
const _sanitizeCache = new WeakMap();
|
|
192
206
|
function sanitizeContext(obj) {
|
|
193
207
|
if (obj === null || obj === undefined)
|
|
194
208
|
return obj;
|
|
195
209
|
if (typeof obj !== 'object' && typeof obj !== 'function')
|
|
196
210
|
return obj;
|
|
211
|
+
const objRef = obj;
|
|
212
|
+
const cached = _sanitizeCache.get(objRef);
|
|
213
|
+
if (cached !== undefined)
|
|
214
|
+
return JSON.parse(cached);
|
|
197
215
|
try {
|
|
198
|
-
|
|
216
|
+
const jsonStr = JSON.stringify(obj);
|
|
217
|
+
_sanitizeCache.set(objRef, jsonStr);
|
|
218
|
+
return JSON.parse(jsonStr);
|
|
199
219
|
}
|
|
200
220
|
catch {
|
|
201
221
|
return {};
|
|
@@ -218,6 +238,51 @@ function getOrCompileScript(expr) {
|
|
|
218
238
|
_vmCache.set(expr, script);
|
|
219
239
|
return script;
|
|
220
240
|
}
|
|
241
|
+
/**
|
|
242
|
+
* Reusable VM sandbox context.
|
|
243
|
+
*
|
|
244
|
+
* vm.createContext() is expensive (~0.3ms per call) because it creates a new
|
|
245
|
+
* V8 context with its own global object. In pipeline loops (map/filter over
|
|
246
|
+
* hundreds of items), this adds up to significant overhead.
|
|
247
|
+
*
|
|
248
|
+
* Instead, we create the context once and mutate the sandbox properties
|
|
249
|
+
* before each evaluation. This is safe because:
|
|
250
|
+
* 1. Sandbox properties are sanitized (deep-copied) before assignment
|
|
251
|
+
* 2. Scripts run with a 50ms timeout
|
|
252
|
+
* 3. codeGeneration is disabled (no eval/Function inside the sandbox)
|
|
253
|
+
*/
|
|
254
|
+
let _reusableSandbox = null;
|
|
255
|
+
let _reusableContext = null;
|
|
256
|
+
function getReusableContext() {
|
|
257
|
+
if (_reusableSandbox && _reusableContext) {
|
|
258
|
+
return { sandbox: _reusableSandbox, context: _reusableContext };
|
|
259
|
+
}
|
|
260
|
+
_reusableSandbox = {
|
|
261
|
+
args: {},
|
|
262
|
+
item: {},
|
|
263
|
+
data: null,
|
|
264
|
+
index: 0,
|
|
265
|
+
encodeURIComponent,
|
|
266
|
+
decodeURIComponent,
|
|
267
|
+
JSON,
|
|
268
|
+
Math,
|
|
269
|
+
Number,
|
|
270
|
+
String,
|
|
271
|
+
Boolean,
|
|
272
|
+
Array,
|
|
273
|
+
Date,
|
|
274
|
+
};
|
|
275
|
+
_reusableContext = vm.createContext(_reusableSandbox, {
|
|
276
|
+
codeGeneration: { strings: false, wasm: false },
|
|
277
|
+
});
|
|
278
|
+
return { sandbox: _reusableSandbox, context: _reusableContext };
|
|
279
|
+
}
|
|
280
|
+
/** Properties that are part of the sandbox's initial shape and safe to keep. */
|
|
281
|
+
const SANDBOX_WHITELIST = new Set([
|
|
282
|
+
'args', 'item', 'data', 'index',
|
|
283
|
+
'encodeURIComponent', 'decodeURIComponent',
|
|
284
|
+
'JSON', 'Math', 'Number', 'String', 'Boolean', 'Array', 'Date',
|
|
285
|
+
]);
|
|
221
286
|
function evalJsExpr(expr, ctx) {
|
|
222
287
|
// Guard against absurdly long expressions that could indicate injection.
|
|
223
288
|
if (expr.length > 2000)
|
|
@@ -225,33 +290,22 @@ function evalJsExpr(expr, ctx) {
|
|
|
225
290
|
// Block obvious sandbox escape attempts.
|
|
226
291
|
if (FORBIDDEN_EXPR_PATTERNS.test(expr))
|
|
227
292
|
return undefined;
|
|
228
|
-
const args = sanitizeContext(ctx.args ?? {});
|
|
229
|
-
const item = sanitizeContext(ctx.item ?? {});
|
|
230
|
-
const data = sanitizeContext(ctx.data);
|
|
231
|
-
const index = ctx.index ?? 0;
|
|
232
293
|
try {
|
|
233
294
|
const script = getOrCompileScript(expr);
|
|
234
|
-
const sandbox =
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
}, {
|
|
249
|
-
codeGeneration: {
|
|
250
|
-
strings: false,
|
|
251
|
-
wasm: false,
|
|
252
|
-
},
|
|
253
|
-
});
|
|
254
|
-
return script.runInContext(sandbox, { timeout: 50 });
|
|
295
|
+
const { sandbox, context } = getReusableContext();
|
|
296
|
+
// Clean non-whitelisted properties that a previous script may have added.
|
|
297
|
+
// Without this, `${{ x = 42 }}` would leak `x` into subsequent evaluations.
|
|
298
|
+
for (const key of Object.keys(sandbox)) {
|
|
299
|
+
if (!SANDBOX_WHITELIST.has(key)) {
|
|
300
|
+
delete sandbox[key];
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
// Update mutable sandbox properties — sanitizeContext severs prototype chains.
|
|
304
|
+
sandbox.args = sanitizeContext(ctx.args ?? {});
|
|
305
|
+
sandbox.item = sanitizeContext(ctx.item ?? {});
|
|
306
|
+
sandbox.data = sanitizeContext(ctx.data);
|
|
307
|
+
sandbox.index = ctx.index ?? 0;
|
|
308
|
+
return script.runInContext(context, { timeout: 50 });
|
|
255
309
|
}
|
|
256
310
|
catch {
|
|
257
311
|
return undefined;
|
package/dist/src/plugin.js
CHANGED
|
@@ -12,8 +12,9 @@ import * as path from 'node:path';
|
|
|
12
12
|
import { execSync, execFileSync } from 'node:child_process';
|
|
13
13
|
import { fileURLToPath } from 'node:url';
|
|
14
14
|
import { PLUGINS_DIR } from './discovery.js';
|
|
15
|
-
import { getErrorMessage } from './errors.js';
|
|
15
|
+
import { getErrorMessage, PluginError } from './errors.js';
|
|
16
16
|
import { log } from './logger.js';
|
|
17
|
+
import { isRecord } from './utils.js';
|
|
17
18
|
import { readPluginManifest, isMonorepo, getEnabledPlugins, checkCompatibility, } from './plugin-manifest.js';
|
|
18
19
|
const isWindows = process.platform === 'win32';
|
|
19
20
|
const LOCAL_PLUGIN_SOURCE_PREFIX = 'local:';
|
|
@@ -52,9 +53,7 @@ function toStoredPluginSource(source) {
|
|
|
52
53
|
function toLocalPluginSource(pluginDir) {
|
|
53
54
|
return toStoredPluginSource({ kind: 'local', path: pluginDir });
|
|
54
55
|
}
|
|
55
|
-
|
|
56
|
-
return typeof value === 'object' && value !== null;
|
|
57
|
-
}
|
|
56
|
+
// isRecord is imported from './utils.js'
|
|
58
57
|
function normalizeLegacyMonorepo(value) {
|
|
59
58
|
if (!isRecord(value))
|
|
60
59
|
return undefined;
|
|
@@ -166,7 +165,7 @@ function createSiblingTempPath(dest, kind) {
|
|
|
166
165
|
*/
|
|
167
166
|
function promoteDir(stagingDir, dest, fsOps = fs) {
|
|
168
167
|
if (fsOps.existsSync(dest)) {
|
|
169
|
-
throw new
|
|
168
|
+
throw new PluginError(`Destination already exists: ${dest}`);
|
|
170
169
|
}
|
|
171
170
|
fsOps.mkdirSync(path.dirname(dest), { recursive: true });
|
|
172
171
|
const tempDest = createSiblingTempPath(dest, 'tmp');
|
|
@@ -195,7 +194,7 @@ function cloneRepoToTemp(cloneUrl) {
|
|
|
195
194
|
});
|
|
196
195
|
}
|
|
197
196
|
catch (err) {
|
|
198
|
-
throw new
|
|
197
|
+
throw new PluginError(`Failed to clone plugin: ${getErrorMessage(err)}`, 'Check the repository URL and your network connection.');
|
|
199
198
|
}
|
|
200
199
|
return tmpCloneDir;
|
|
201
200
|
}
|
|
@@ -227,6 +226,13 @@ function pathExistsSync(p) {
|
|
|
227
226
|
return false;
|
|
228
227
|
}
|
|
229
228
|
}
|
|
229
|
+
function resolveRepoContainedPath(repoRoot, subPath) {
|
|
230
|
+
const resolved = path.resolve(repoRoot, subPath);
|
|
231
|
+
if (!resolved.startsWith(repoRoot + path.sep) && resolved !== repoRoot) {
|
|
232
|
+
throw new PluginError(`Plugin path "${subPath}" escapes repo root.`);
|
|
233
|
+
}
|
|
234
|
+
return resolved;
|
|
235
|
+
}
|
|
230
236
|
function removePathSync(p) {
|
|
231
237
|
try {
|
|
232
238
|
const stat = fs.lstatSync(p);
|
|
@@ -499,7 +505,7 @@ function installDependencies(dir) {
|
|
|
499
505
|
});
|
|
500
506
|
}
|
|
501
507
|
catch (err) {
|
|
502
|
-
throw new
|
|
508
|
+
throw new PluginError(`npm install failed in ${dir}: ${getErrorMessage(err)}`, 'Check your network connection and npm configuration.');
|
|
503
509
|
}
|
|
504
510
|
}
|
|
505
511
|
function finalizePluginRuntime(pluginDir) {
|
|
@@ -528,7 +534,7 @@ function postInstallMonorepoLifecycle(repoDir, pluginDirs) {
|
|
|
528
534
|
function ensureStandalonePluginReady(pluginDir) {
|
|
529
535
|
const validation = validatePluginStructure(pluginDir);
|
|
530
536
|
if (!validation.valid) {
|
|
531
|
-
throw new
|
|
537
|
+
throw new PluginError(`Invalid plugin structure:\n- ${validation.errors.join('\n- ')}`);
|
|
532
538
|
}
|
|
533
539
|
postInstallLifecycle(pluginDir);
|
|
534
540
|
}
|
|
@@ -553,7 +559,7 @@ function publishMonorepoPlugins(repoDir, pluginsDir, plugins, publishRepo, write
|
|
|
553
559
|
const commitHash = getCommitHash(repoDir);
|
|
554
560
|
for (const plugin of plugins) {
|
|
555
561
|
const linkPath = path.join(pluginsDir, plugin.name);
|
|
556
|
-
const subDir =
|
|
562
|
+
const subDir = resolveRepoContainedPath(repoDir, plugin.subPath);
|
|
557
563
|
tx.track(beginReplaceSymlink(subDir, linkPath));
|
|
558
564
|
}
|
|
559
565
|
writeLock?.(commitHash);
|
|
@@ -606,7 +612,7 @@ function installSinglePlugin(cloneDir, cloneUrl, name, manifest) {
|
|
|
606
612
|
const pluginName = manifest?.name ?? name;
|
|
607
613
|
const targetDir = path.join(PLUGINS_DIR, pluginName);
|
|
608
614
|
if (fs.existsSync(targetDir)) {
|
|
609
|
-
throw new
|
|
615
|
+
throw new PluginError(`Plugin "${pluginName}" is already installed at ${targetDir}`, 'Use "opencli plugin uninstall" first, or pick a different name.');
|
|
610
616
|
}
|
|
611
617
|
ensureStandalonePluginReady(cloneDir);
|
|
612
618
|
publishStandalonePlugin(cloneDir, targetDir, (commitHash) => {
|
|
@@ -628,24 +634,24 @@ function installSinglePlugin(cloneDir, cloneUrl, name, manifest) {
|
|
|
628
634
|
*/
|
|
629
635
|
function installLocalPlugin(localPath, name) {
|
|
630
636
|
if (!fs.existsSync(localPath)) {
|
|
631
|
-
throw new
|
|
637
|
+
throw new PluginError(`Local plugin path does not exist: ${localPath}`);
|
|
632
638
|
}
|
|
633
639
|
const stat = fs.statSync(localPath);
|
|
634
640
|
if (!stat.isDirectory()) {
|
|
635
|
-
throw new
|
|
641
|
+
throw new PluginError(`Local plugin path is not a directory: ${localPath}`);
|
|
636
642
|
}
|
|
637
643
|
const manifest = readPluginManifest(localPath);
|
|
638
644
|
if (manifest?.opencli && !checkCompatibility(manifest.opencli)) {
|
|
639
|
-
throw new
|
|
645
|
+
throw new PluginError(`Plugin requires opencli ${manifest.opencli}, but current version is incompatible.`, 'Upgrade opencli to a compatible version.');
|
|
640
646
|
}
|
|
641
647
|
const pluginName = manifest?.name ?? name;
|
|
642
648
|
const targetDir = path.join(PLUGINS_DIR, pluginName);
|
|
643
649
|
if (fs.existsSync(targetDir)) {
|
|
644
|
-
throw new
|
|
650
|
+
throw new PluginError(`Plugin "${pluginName}" is already installed at ${targetDir}`, 'Use "opencli plugin uninstall" first, or pick a different name.');
|
|
645
651
|
}
|
|
646
652
|
const validation = validatePluginStructure(localPath);
|
|
647
653
|
if (!validation.valid) {
|
|
648
|
-
throw new
|
|
654
|
+
throw new PluginError(`Invalid plugin structure:\n- ${validation.errors.join('\n- ')}`);
|
|
649
655
|
}
|
|
650
656
|
fs.mkdirSync(PLUGINS_DIR, { recursive: true });
|
|
651
657
|
const resolvedPath = path.resolve(localPath);
|
|
@@ -685,7 +691,7 @@ function installMonorepo(cloneDir, cloneUrl, repoName, manifest, subPlugin) {
|
|
|
685
691
|
const repoRoot = repoAlreadyInstalled ? repoDir : cloneDir;
|
|
686
692
|
const effectiveManifest = repoAlreadyInstalled ? readPluginManifest(repoDir) : manifest;
|
|
687
693
|
if (!effectiveManifest || !isMonorepo(effectiveManifest)) {
|
|
688
|
-
throw new
|
|
694
|
+
throw new PluginError(`Monorepo manifest missing or invalid at ${repoRoot}`);
|
|
689
695
|
}
|
|
690
696
|
let pluginsToInstall = getEnabledPlugins(effectiveManifest);
|
|
691
697
|
// If a specific sub-plugin was requested, filter to just that one
|
|
@@ -695,9 +701,9 @@ function installMonorepo(cloneDir, cloneUrl, repoName, manifest, subPlugin) {
|
|
|
695
701
|
// Check if it exists but is disabled
|
|
696
702
|
const disabled = effectiveManifest.plugins?.[subPlugin];
|
|
697
703
|
if (disabled) {
|
|
698
|
-
throw new
|
|
704
|
+
throw new PluginError(`Sub-plugin "${subPlugin}" is disabled in the manifest.`);
|
|
699
705
|
}
|
|
700
|
-
throw new
|
|
706
|
+
throw new PluginError(`Sub-plugin "${subPlugin}" not found in monorepo. Available: ${Object.keys(effectiveManifest.plugins ?? {}).join(', ')}`);
|
|
701
707
|
}
|
|
702
708
|
}
|
|
703
709
|
const installedNames = [];
|
|
@@ -710,7 +716,14 @@ function installMonorepo(cloneDir, cloneUrl, repoName, manifest, subPlugin) {
|
|
|
710
716
|
log.warn(`Skipping "${name}": requires opencli ${entry.opencli}`);
|
|
711
717
|
continue;
|
|
712
718
|
}
|
|
713
|
-
|
|
719
|
+
let subDir;
|
|
720
|
+
try {
|
|
721
|
+
subDir = resolveRepoContainedPath(repoRoot, entry.path);
|
|
722
|
+
}
|
|
723
|
+
catch {
|
|
724
|
+
log.warn(`Skipping "${name}": path "${entry.path}" escapes repo root.`);
|
|
725
|
+
continue;
|
|
726
|
+
}
|
|
714
727
|
if (!fs.existsSync(subDir)) {
|
|
715
728
|
log.warn(`Skipping "${name}": path "${entry.path}" not found in repo.`);
|
|
716
729
|
continue;
|
|
@@ -732,10 +745,10 @@ function installMonorepo(cloneDir, cloneUrl, repoName, manifest, subPlugin) {
|
|
|
732
745
|
}
|
|
733
746
|
const publishPlugins = eligiblePlugins.map(({ name, entry }) => ({ name, subPath: entry.path }));
|
|
734
747
|
if (repoAlreadyInstalled) {
|
|
735
|
-
postInstallMonorepoLifecycle(repoDir, eligiblePlugins.map((p) =>
|
|
748
|
+
postInstallMonorepoLifecycle(repoDir, eligiblePlugins.map((p) => resolveRepoContainedPath(repoDir, p.entry.path)));
|
|
736
749
|
}
|
|
737
750
|
else {
|
|
738
|
-
postInstallMonorepoLifecycle(cloneDir, eligiblePlugins.map((p) =>
|
|
751
|
+
postInstallMonorepoLifecycle(cloneDir, eligiblePlugins.map((p) => resolveRepoContainedPath(cloneDir, p.entry.path)));
|
|
739
752
|
}
|
|
740
753
|
publishMonorepoPlugins(repoDir, PLUGINS_DIR, publishPlugins, repoAlreadyInstalled ? undefined : { stagingDir: cloneDir, parentDir: monoreposDir }, (commitHash) => {
|
|
741
754
|
for (const { name, entry } of eligiblePlugins) {
|
|
@@ -768,7 +781,7 @@ function collectUpdatedMonorepoPlugins(monoName, lock, manifest, cloneUrl, tmpCl
|
|
|
768
781
|
if (manifestEntry.opencli && !checkCompatibility(manifestEntry.opencli)) {
|
|
769
782
|
throw new Error(`Sub-plugin "${pluginName}" requires opencli ${manifestEntry.opencli}`);
|
|
770
783
|
}
|
|
771
|
-
const subDir =
|
|
784
|
+
const subDir = resolveRepoContainedPath(tmpCloneDir, manifestEntry.path);
|
|
772
785
|
const validation = validatePluginStructure(subDir);
|
|
773
786
|
if (!validation.valid) {
|
|
774
787
|
throw new Error(`Updated sub-plugin "${pluginName}" is invalid:\n- ${validation.errors.join('\n- ')}`);
|
|
@@ -883,7 +896,7 @@ export function updatePlugin(name) {
|
|
|
883
896
|
}
|
|
884
897
|
const updatedPlugins = collectUpdatedMonorepoPlugins(monoName, lock, manifest, cloneUrl, tmpCloneDir);
|
|
885
898
|
if (updatedPlugins.length > 0) {
|
|
886
|
-
postInstallMonorepoLifecycle(tmpCloneDir, updatedPlugins.map((plugin) =>
|
|
899
|
+
postInstallMonorepoLifecycle(tmpCloneDir, updatedPlugins.map((plugin) => resolveRepoContainedPath(tmpCloneDir, plugin.manifestEntry.path)));
|
|
887
900
|
}
|
|
888
901
|
publishMonorepoPlugins(monoDir, PLUGINS_DIR, updatedPlugins.map((plugin) => ({ name: plugin.name, subPath: plugin.manifestEntry.path })), { stagingDir: tmpCloneDir, parentDir: path.dirname(monoDir) }, (commitHash) => {
|
|
889
902
|
updateMonorepoLockEntries(lock, updatedPlugins, cloneUrl, monoName, commitHash);
|
package/dist/src/plugin.test.js
CHANGED
|
@@ -1279,6 +1279,47 @@ describe('updatePlugin transactional staging', () => {
|
|
|
1279
1279
|
subPath: 'packages/moved-alpha',
|
|
1280
1280
|
});
|
|
1281
1281
|
});
|
|
1282
|
+
it('rejects monorepo updates whose manifest path escapes the repo root', () => {
|
|
1283
|
+
const oldSubDir = path.join(monorepoRepoDir, 'packages', 'old-alpha');
|
|
1284
|
+
fs.mkdirSync(oldSubDir, { recursive: true });
|
|
1285
|
+
fs.writeFileSync(path.join(oldSubDir, 'old.js'), 'cli({ site: "old", name: "old" })');
|
|
1286
|
+
fs.mkdirSync(PLUGINS_DIR, { recursive: true });
|
|
1287
|
+
fs.symlinkSync(oldSubDir, monorepoLink, 'dir');
|
|
1288
|
+
const lock = _readLockFile();
|
|
1289
|
+
lock[monorepoPluginName] = {
|
|
1290
|
+
source: {
|
|
1291
|
+
kind: 'monorepo',
|
|
1292
|
+
url: 'https://github.com/user/opencli-plugins-__test-transactional-mono-update__.git',
|
|
1293
|
+
repoName: monorepoName,
|
|
1294
|
+
subPath: 'packages/old-alpha',
|
|
1295
|
+
},
|
|
1296
|
+
commitHash: 'oldmonooldmonooldmonooldmonooldmonoold',
|
|
1297
|
+
installedAt: '2025-01-01T00:00:00.000Z',
|
|
1298
|
+
};
|
|
1299
|
+
_writeLockFile(lock);
|
|
1300
|
+
mockExecFileSync.mockImplementation((cmd, args) => {
|
|
1301
|
+
if (cmd === 'git' && Array.isArray(args) && args[0] === 'clone') {
|
|
1302
|
+
const cloneDir = String(args[4]);
|
|
1303
|
+
fs.mkdirSync(cloneDir, { recursive: true });
|
|
1304
|
+
fs.writeFileSync(path.join(cloneDir, 'opencli-plugin.json'), JSON.stringify({
|
|
1305
|
+
plugins: {
|
|
1306
|
+
[monorepoPluginName]: { path: '../outside-alpha' },
|
|
1307
|
+
},
|
|
1308
|
+
}));
|
|
1309
|
+
return '';
|
|
1310
|
+
}
|
|
1311
|
+
if (cmd === 'git' && Array.isArray(args) && args[0] === 'rev-parse' && args[1] === 'HEAD') {
|
|
1312
|
+
return '1234567890abcdef1234567890abcdef12345678\n';
|
|
1313
|
+
}
|
|
1314
|
+
return '';
|
|
1315
|
+
});
|
|
1316
|
+
expect(() => updatePlugin(monorepoPluginName)).toThrow('escapes repo root');
|
|
1317
|
+
expect(fs.realpathSync(monorepoLink)).toBe(fs.realpathSync(oldSubDir));
|
|
1318
|
+
expect(_readLockFile()[monorepoPluginName]?.source).toMatchObject({
|
|
1319
|
+
kind: 'monorepo',
|
|
1320
|
+
subPath: 'packages/old-alpha',
|
|
1321
|
+
});
|
|
1322
|
+
});
|
|
1282
1323
|
it('rolls back the monorepo repo swap when relinking fails', () => {
|
|
1283
1324
|
const oldSubDir = path.join(monorepoRepoDir, 'packages', 'old-alpha');
|
|
1284
1325
|
fs.mkdirSync(oldSubDir, { recursive: true });
|
package/dist/src/record.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
import * as fs from 'node:fs';
|
|
15
15
|
import * as path from 'node:path';
|
|
16
16
|
import * as readline from 'node:readline';
|
|
17
|
-
import
|
|
17
|
+
import { styleText } from 'node:util';
|
|
18
18
|
import { sendCommand } from './browser/daemon-client.js';
|
|
19
19
|
import { SEARCH_PARAMS, PAGINATION_PARAMS, FIELD_ROLES } from './constants.js';
|
|
20
20
|
import { urlToPattern, findArrayPath, inferCapabilityName, inferStrategy, detectAuthFromContent, classifyQueryParams, isNoiseUrl, } from './analysis.js';
|
|
@@ -466,10 +466,10 @@ export async function recordSession(opts) {
|
|
|
466
466
|
}
|
|
467
467
|
})();
|
|
468
468
|
const workspace = `record:${site}`;
|
|
469
|
-
console.log(
|
|
470
|
-
console.log(
|
|
471
|
-
console.log(
|
|
472
|
-
console.log(
|
|
469
|
+
console.log(styleText(['bold', 'cyan'], '\n opencli record'));
|
|
470
|
+
console.log(styleText('dim', ` Site: ${site} URL: ${opts.url}`));
|
|
471
|
+
console.log(styleText('dim', ` Timeout: ${timeoutMs / 1000}s Poll: ${pollMs}ms`));
|
|
472
|
+
console.log(styleText('dim', ' Navigating…'));
|
|
473
473
|
const factory = new opts.BrowserFactory();
|
|
474
474
|
const page = await factory.connect({ timeout: 30, workspace });
|
|
475
475
|
try {
|
|
@@ -481,8 +481,8 @@ export async function recordSession(opts) {
|
|
|
481
481
|
if (tab.page)
|
|
482
482
|
await injectIntoPage(workspace, tab.page, injectedPages);
|
|
483
483
|
}
|
|
484
|
-
console.log(
|
|
485
|
-
console.log(
|
|
484
|
+
console.log(styleText('bold', '\n Recording. Use the page in the browser automation window.'));
|
|
485
|
+
console.log(styleText('dim', ` Will auto-stop after ${timeoutMs / 1000}s, or press Enter to stop now.\n`));
|
|
486
486
|
// Race: Enter key vs timeout
|
|
487
487
|
let stopped = false;
|
|
488
488
|
const stop = () => { stopped = true; };
|
|
@@ -509,7 +509,7 @@ export async function recordSession(opts) {
|
|
|
509
509
|
if (Array.isArray(batch) && batch.length > 0) {
|
|
510
510
|
for (const r of batch)
|
|
511
511
|
allRequests.push(r);
|
|
512
|
-
console.log(
|
|
512
|
+
console.log(styleText('dim', ` [page:${page.slice(0, 8)}] +${batch.length} captured — total: ${allRequests.length}`));
|
|
513
513
|
}
|
|
514
514
|
}
|
|
515
515
|
}
|
|
@@ -531,7 +531,7 @@ export async function recordSession(opts) {
|
|
|
531
531
|
}
|
|
532
532
|
catch { }
|
|
533
533
|
}
|
|
534
|
-
console.log(
|
|
534
|
+
console.log(styleText('dim', `\n Stopped. Analyzing ${allRequests.length} captured requests…`));
|
|
535
535
|
const result = analyzeAndWrite(site, opts.url, allRequests, opts.outDir);
|
|
536
536
|
await factory.close().catch(() => { });
|
|
537
537
|
return result;
|
|
@@ -558,7 +558,7 @@ async function injectIntoPage(workspace, page, injectedPages) {
|
|
|
558
558
|
await execOnPage(workspace, page, generateFullCaptureInterceptorJs());
|
|
559
559
|
if (!injectedPages.has(page)) {
|
|
560
560
|
injectedPages.add(page);
|
|
561
|
-
console.log(
|
|
561
|
+
console.log(styleText('green', ` ✓ Interceptor injected into page:${page.slice(0, 8)}`));
|
|
562
562
|
}
|
|
563
563
|
}
|
|
564
564
|
catch {
|
|
@@ -588,7 +588,7 @@ function analyzeAndWrite(site, pageUrl, requests, outDir) {
|
|
|
588
588
|
const targetDir = outDir ?? path.join('.opencli', 'record', site);
|
|
589
589
|
fs.mkdirSync(targetDir, { recursive: true });
|
|
590
590
|
if (requests.length === 0) {
|
|
591
|
-
console.log(
|
|
591
|
+
console.log(styleText('yellow', ' No API requests captured.'));
|
|
592
592
|
return { site, url: pageUrl, requests: [], outDir: targetDir, candidateCount: 0, candidates: [] };
|
|
593
593
|
}
|
|
594
594
|
// Score and rank deduplicated requests for console output and candidate generation.
|
|
@@ -599,18 +599,18 @@ function analyzeAndWrite(site, pageUrl, requests, outDir) {
|
|
|
599
599
|
// Generate candidate YAMLs (top 5)
|
|
600
600
|
const candidates = [];
|
|
601
601
|
const usedNames = new Set();
|
|
602
|
-
console.log(
|
|
602
|
+
console.log(styleText('bold', '\n Captured endpoints:\n'));
|
|
603
603
|
for (const entry of analysis.candidates.sort((a, b) => (b.arrayResult?.items.length ?? 0) - (a.arrayResult?.items.length ?? 0)).slice(0, 8)) {
|
|
604
604
|
const itemCount = entry.arrayResult?.items.length ?? 0;
|
|
605
605
|
const strategy = entry.kind === 'write'
|
|
606
606
|
? 'cookie'
|
|
607
607
|
: inferStrategy(detectAuthFromContent(entry.req.url, entry.req.responseBody));
|
|
608
|
-
const marker = entry.kind === 'write' ?
|
|
609
|
-
console.log(` ${marker} ${
|
|
610
|
-
|
|
608
|
+
const marker = entry.kind === 'write' ? styleText('magenta', '✎') : itemCount > 5 ? styleText('green', '★') : styleText('dim', '·');
|
|
609
|
+
console.log(` ${marker} ${styleText('white', urlToPattern(entry.req.url))}` +
|
|
610
|
+
styleText('dim', ` [${strategy}]`) +
|
|
611
611
|
(entry.kind === 'write'
|
|
612
|
-
?
|
|
613
|
-
: itemCount ?
|
|
612
|
+
? styleText('magenta', ' ← write')
|
|
613
|
+
: itemCount ? styleText('cyan', ` ← ${itemCount} items`) : ''));
|
|
614
614
|
}
|
|
615
615
|
console.log();
|
|
616
616
|
const topCandidates = generateRecordedCandidates(site, pageUrl, analysisRequests);
|
|
@@ -623,12 +623,12 @@ function analyzeAndWrite(site, pageUrl, requests, outDir) {
|
|
|
623
623
|
const filePath = path.join(candidatesDir, `${entry.name}.json`);
|
|
624
624
|
fs.writeFileSync(filePath, JSON.stringify(entry.yaml, null, 2));
|
|
625
625
|
candidates.push({ name: entry.name, path: filePath, strategy: entry.strategy });
|
|
626
|
-
console.log(
|
|
627
|
-
console.log(
|
|
626
|
+
console.log(styleText('green', ` ✓ Generated: ${styleText('bold', entry.name)}.json [${entry.strategy}]`));
|
|
627
|
+
console.log(styleText('dim', ` → ${filePath}`));
|
|
628
628
|
}
|
|
629
629
|
if (candidates.length === 0) {
|
|
630
|
-
console.log(
|
|
631
|
-
console.log(
|
|
630
|
+
console.log(styleText('yellow', ' No candidates found.'));
|
|
631
|
+
console.log(styleText('dim', ' Tip: make sure you triggered JSON API calls (open lists, search, scroll).'));
|
|
632
632
|
}
|
|
633
633
|
return {
|
|
634
634
|
site,
|
|
@@ -641,7 +641,7 @@ function analyzeAndWrite(site, pageUrl, requests, outDir) {
|
|
|
641
641
|
}
|
|
642
642
|
export function renderRecordSummary(result) {
|
|
643
643
|
const lines = [
|
|
644
|
-
`\n opencli record: ${result.candidateCount > 0 ?
|
|
644
|
+
`\n opencli record: ${result.candidateCount > 0 ? styleText('green', 'OK') : styleText('yellow', 'no candidates')}`,
|
|
645
645
|
` Site: ${result.site}`,
|
|
646
646
|
` Captured: ${result.requests.length} requests`,
|
|
647
647
|
` Candidates: ${result.candidateCount}`,
|
|
@@ -651,7 +651,7 @@ export function renderRecordSummary(result) {
|
|
|
651
651
|
}
|
|
652
652
|
if (result.candidateCount > 0) {
|
|
653
653
|
lines.push('');
|
|
654
|
-
lines.push(
|
|
654
|
+
lines.push(styleText('dim', ` Copy a candidate to clis/${result.site}/ and run: npm run build`));
|
|
655
655
|
}
|
|
656
656
|
return lines.join('\n');
|
|
657
657
|
}
|
package/dist/src/registry.d.ts
CHANGED
|
@@ -47,14 +47,19 @@ export interface CliCommand {
|
|
|
47
47
|
/** Preferred replacement command, if any. */
|
|
48
48
|
replacedBy?: string;
|
|
49
49
|
/**
|
|
50
|
-
* Control pre-navigation
|
|
50
|
+
* Control pre-navigation and browser-session requirement.
|
|
51
51
|
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
52
|
+
* After normalizeCommand() expands strategy, this field carries the
|
|
53
|
+
* resolved runtime intent:
|
|
54
54
|
*
|
|
55
|
-
* - `undefined
|
|
56
|
-
* - `false`: skip
|
|
57
|
-
* - `
|
|
55
|
+
* - `undefined`: no pre-navigation, browser session decided by pipeline steps
|
|
56
|
+
* - `false`: explicitly skip pre-navigation (adapter handles its own navigation)
|
|
57
|
+
* - `true`: needs authenticated browser context but no specific pre-nav URL
|
|
58
|
+
* (e.g. INTERCEPT/UI adapters, or COOKIE without domain)
|
|
59
|
+
* - `string`: pre-navigate to this URL before running the adapter
|
|
60
|
+
* (e.g. `'https://x.com'` for COOKIE strategy with domain)
|
|
61
|
+
*
|
|
62
|
+
* Adapter authors can set this explicitly to override the strategy-based default.
|
|
58
63
|
*/
|
|
59
64
|
navigateBefore?: boolean | string;
|
|
60
65
|
/** Override the default CLI output format when the user does not pass -f/--format. */
|
package/dist/src/registry.js
CHANGED
|
@@ -11,17 +11,14 @@ export var Strategy;
|
|
|
11
11
|
})(Strategy || (Strategy = {}));
|
|
12
12
|
const _registry = globalThis.__opencli_registry__ ??= new Map();
|
|
13
13
|
export function cli(opts) {
|
|
14
|
-
const strategy = opts.strategy ?? (opts.browser === false ? Strategy.PUBLIC : Strategy.COOKIE);
|
|
15
|
-
const browser = opts.browser ?? (strategy !== Strategy.PUBLIC);
|
|
16
|
-
const aliases = normalizeAliases(opts.aliases, opts.name);
|
|
17
14
|
const cmd = {
|
|
18
15
|
site: opts.site,
|
|
19
16
|
name: opts.name,
|
|
20
|
-
aliases,
|
|
17
|
+
aliases: opts.aliases,
|
|
21
18
|
description: opts.description ?? '',
|
|
22
19
|
domain: opts.domain,
|
|
23
|
-
strategy,
|
|
24
|
-
browser,
|
|
20
|
+
strategy: opts.strategy,
|
|
21
|
+
browser: opts.browser,
|
|
25
22
|
args: opts.args ?? [],
|
|
26
23
|
columns: opts.columns,
|
|
27
24
|
func: opts.func,
|
|
@@ -35,7 +32,7 @@ export function cli(opts) {
|
|
|
35
32
|
defaultFormat: opts.defaultFormat,
|
|
36
33
|
};
|
|
37
34
|
registerCommand(cmd);
|
|
38
|
-
return cmd;
|
|
35
|
+
return _registry.get(fullName(cmd));
|
|
39
36
|
}
|
|
40
37
|
export function getRegistry() {
|
|
41
38
|
return _registry;
|
|
@@ -46,8 +43,39 @@ export function fullName(cmd) {
|
|
|
46
43
|
export function strategyLabel(cmd) {
|
|
47
44
|
return cmd.strategy ?? Strategy.PUBLIC;
|
|
48
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Normalize a command's runtime fields. This is the single place where
|
|
48
|
+
* `strategy` is decoded into the concrete fields that the execution path
|
|
49
|
+
* reads (`browser`, `navigateBefore`). After normalization, execution code
|
|
50
|
+
* (resolvePreNav, shouldUseBrowserSession) never reads `cmd.strategy`.
|
|
51
|
+
*
|
|
52
|
+
* `strategy` itself is preserved as metadata for `opencli list`, cascade
|
|
53
|
+
* probe, adapter generation, and human documentation.
|
|
54
|
+
*
|
|
55
|
+
* Override priority (highest wins):
|
|
56
|
+
* 1. Explicit field on the command (`browser: false`, `navigateBefore: false`)
|
|
57
|
+
* 2. Derived from strategy + domain (the defaults below)
|
|
58
|
+
*/
|
|
59
|
+
function normalizeCommand(cmd) {
|
|
60
|
+
const strategy = cmd.strategy ?? (cmd.browser === false ? Strategy.PUBLIC : Strategy.COOKIE);
|
|
61
|
+
const browser = cmd.browser ?? (strategy !== Strategy.PUBLIC);
|
|
62
|
+
let navigateBefore = cmd.navigateBefore;
|
|
63
|
+
if (navigateBefore === undefined) {
|
|
64
|
+
if ((strategy === Strategy.COOKIE || strategy === Strategy.HEADER) && cmd.domain) {
|
|
65
|
+
navigateBefore = `https://${cmd.domain}`;
|
|
66
|
+
}
|
|
67
|
+
else if (strategy !== Strategy.PUBLIC) {
|
|
68
|
+
// Non-PUBLIC without domain: needs authenticated browser context
|
|
69
|
+
// but no specific pre-navigation URL. `true` signals this to
|
|
70
|
+
// shouldUseBrowserSession without triggering resolvePreNav.
|
|
71
|
+
navigateBefore = true;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return { ...cmd, strategy, browser, navigateBefore };
|
|
75
|
+
}
|
|
49
76
|
export function registerCommand(cmd) {
|
|
50
|
-
const
|
|
77
|
+
const normalized = normalizeCommand(cmd);
|
|
78
|
+
const canonicalKey = fullName(normalized);
|
|
51
79
|
const existing = _registry.get(canonicalKey);
|
|
52
80
|
if (existing) {
|
|
53
81
|
for (const [key, value] of _registry.entries()) {
|
|
@@ -55,11 +83,11 @@ export function registerCommand(cmd) {
|
|
|
55
83
|
_registry.delete(key);
|
|
56
84
|
}
|
|
57
85
|
}
|
|
58
|
-
const aliases = normalizeAliases(
|
|
59
|
-
|
|
60
|
-
_registry.set(canonicalKey,
|
|
86
|
+
const aliases = normalizeAliases(normalized.aliases, normalized.name);
|
|
87
|
+
normalized.aliases = aliases.length > 0 ? aliases : undefined;
|
|
88
|
+
_registry.set(canonicalKey, normalized);
|
|
61
89
|
for (const alias of aliases) {
|
|
62
|
-
_registry.set(`${
|
|
90
|
+
_registry.set(`${normalized.site}/${alias}`, normalized);
|
|
63
91
|
}
|
|
64
92
|
}
|
|
65
93
|
function normalizeAliases(aliases, commandName) {
|