@yanglaofish/fishtools 0.5.2 → 0.6.0
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 +24 -12
- package/manual/README.md +24 -12
- package/manual/docs/deployment.md +3 -3
- package/manual/docs/examples/action-plugin/package.json +1 -1
- package/manual/docs/modules.md +2 -0
- package/manual/docs/plans/2026-10-13-effective-inputs-and-tables.md +39 -0
- package/manual/docs/plans/2026-10-13-plugin-defaults.md +45 -0
- package/manual/docs/plans/2026-10-14-issue7-recovery.md +33 -0
- package/manual/docs/plans/2026-10-14-issue8-10-workflows.md +26 -0
- package/manual/docs/plans/2026-10-14-issue9-completion.md +47 -0
- package/manual/docs/plans/2026-10-14-managed-execution.md +58 -0
- package/manual/docs/plans/2026-10-14-plugin-discovery-history.md +41 -0
- package/manual/docs/plans/2026-10-14-structured-reports.md +77 -0
- package/manual/docs/plans/2026-10-14-unreleased-review.md +47 -0
- package/manual/docs/plugin-development.md +175 -11
- package/manual/docs/releases.md +49 -6
- package/manual/docs/superpowers/plans/2026-10-13-command-shortcuts.md +3 -2
- package/manual/docs/superpowers/plans/2026-10-13-global-plugins.md +56 -0
- package/manual/docs/superpowers/plans/2026-10-13-tui-readable-sessions.md +21 -0
- package/manual/docs/superpowers/reviews/2026-10-13-0.5.3-review.md +28 -0
- package/manual/docs/superpowers/reviews/2026-10-13-command-shortcuts-review.md +7 -0
- package/manual/docs/superpowers/reviews/2026-10-13-tui-sessions-review.md +57 -0
- package/manual/docs/superpowers/reviews/2026-10-14-0.6.0-release-review.md +19 -0
- package/manual/docs/superpowers/specs/2026-10-13-issue-4-workflow-menu.md +23 -0
- package/manual/docs/superpowers/specs/2026-10-13-issue-5-results-and-history.md +20 -0
- package/manual/docs/terminal-commands.md +8 -0
- package/manual/docs/verification.md +47 -0
- package/manual/packages/core/README.md +8 -0
- package/manual/packages/core/package.json +1 -1
- package/manual/packages/core/src/application.js +108 -53
- package/manual/packages/core/src/development-watch-worker.js +10 -1
- package/manual/packages/core/src/development.js +1 -1
- package/manual/packages/core/src/plugin-catalog.js +60 -0
- package/manual/packages/core/src/plugin-loading.js +24 -0
- package/manual/packages/core/src/version.js +1 -1
- package/manual/packages/fst-cli/README.md +8 -0
- package/manual/packages/fst-cli/bin/fst.js +7 -6
- package/manual/packages/fst-cli/package.json +1 -1
- package/manual/packages/fst-cli/src/development.js +6 -1
- package/manual/packages/fst-cli/src/terminal/command-menu.js +11 -5
- package/manual/packages/fst-cli/src/terminal/file-autocomplete.js +106 -0
- package/manual/packages/fst-cli/src/terminal/log-viewer.js +4 -3
- package/manual/packages/fst-cli/src/terminal/navigation.js +25 -1
- package/manual/packages/fst-cli/src/terminal/presentation.js +5 -3
- package/manual/packages/fst-cli/src/terminal/report-presentation.js +38 -0
- package/manual/packages/fst-cli/src/terminal/result-table.js +66 -0
- package/manual/packages/fst-cli/src/terminal/run-feed.js +104 -23
- package/manual/packages/fst-cli/src/terminal/run-presentation.js +91 -14
- package/manual/packages/fst-cli/src/terminal/run-viewer.js +34 -15
- package/manual/packages/fst-cli/src/terminal/schema.js +114 -4
- package/manual/packages/fst-cli/src/terminal/session-history.js +82 -0
- package/manual/packages/fst-cli/src/terminal/session.js +158 -54
- package/manual/packages/fst-cli/src/terminal/view.js +108 -73
- package/manual/packages/fst-cli/src/terminal/workflow-menu.js +17 -10
- package/manual/packages/fst-devtools/README.md +2 -0
- package/manual/packages/fst-devtools/package.json +2 -2
- package/manual/packages/fst-devtools/src/plugin-quality.js +4 -1
- package/manual/packages/fst-devtools/src/plugin-tools.js +2 -1
- package/manual/packages/fst-devtools/src/process-usage.js +62 -0
- package/manual/packages/fst-logs/README.md +23 -2
- package/manual/packages/fst-logs/package.json +2 -1
- package/manual/packages/fst-logs/src/file-identity.js +23 -0
- package/manual/packages/fst-logs/src/markdown-log.js +4 -3
- package/manual/packages/fst-logs/src/run-logs.js +3 -2
- package/manual/packages/fst-logs/src/session-history.js +180 -0
- package/manual/packages/fst-platform/README.md +9 -0
- package/manual/packages/fst-platform/package.json +4 -3
- package/manual/packages/fst-platform/src/managed-process.js +36 -0
- package/manual/packages/fst-platform/src/process.js +11 -3
- package/manual/packages/fst-platform/src/shell.js +46 -1
- package/manual/packages/fst-plugin/README.md +4 -0
- package/manual/packages/fst-plugin/package.json +1 -1
- package/manual/packages/fst-plugin/src/contracts.js +3 -0
- package/manual/packages/fst-plugin/src/host.js +54 -31
- package/manual/packages/fst-plugin/src/runtime.js +14 -8
- package/manual/packages/fst-workflow/package.json +1 -1
- package/manual/packages/fst-workflow/src/engine.js +1 -1
- package/manual/packages/fst-workspace/README.md +6 -0
- package/manual/packages/fst-workspace/package.json +2 -1
- package/manual/packages/fst-workspace/src/plugin-registry.js +58 -0
- package/manual/packages/fst-workspace/src/plugins.js +10 -5
- package/manual/packages/fst-workspace/src/workflows.js +32 -12
- package/manual/packages/pack/package.json +3 -3
- package/manual/packages/pack/runtime-cache.js +26 -0
- package/manual/packages/pack/runtime.js +6 -10
- package/manual/packages/sdk/README.md +10 -0
- package/manual/packages/sdk/inputs.js +53 -0
- package/manual/packages/sdk/package.json +2 -0
- package/manual/packages/sdk/reports.js +53 -0
- package/manual/plugins/commands/package.json +1 -1
- package/node_modules/@mytools/commands/package.json +1 -1
- package/node_modules/@mytools/core/README.md +8 -0
- package/node_modules/@mytools/core/package.json +1 -1
- package/node_modules/@mytools/core/src/application.js +108 -53
- package/node_modules/@mytools/core/src/development-watch-worker.js +10 -1
- package/node_modules/@mytools/core/src/development.js +1 -1
- package/node_modules/@mytools/core/src/plugin-catalog.js +60 -0
- package/node_modules/@mytools/core/src/plugin-loading.js +24 -0
- package/node_modules/@mytools/core/src/version.js +1 -1
- package/node_modules/@mytools/fst-cli/README.md +8 -0
- package/node_modules/@mytools/fst-cli/bin/fst.js +7 -6
- package/node_modules/@mytools/fst-cli/package.json +1 -1
- package/node_modules/@mytools/fst-cli/src/development.js +6 -1
- package/node_modules/@mytools/fst-cli/src/terminal/command-menu.js +11 -5
- package/node_modules/@mytools/fst-cli/src/terminal/file-autocomplete.js +106 -0
- package/node_modules/@mytools/fst-cli/src/terminal/log-viewer.js +4 -3
- package/node_modules/@mytools/fst-cli/src/terminal/navigation.js +25 -1
- package/node_modules/@mytools/fst-cli/src/terminal/presentation.js +5 -3
- package/node_modules/@mytools/fst-cli/src/terminal/report-presentation.js +38 -0
- package/node_modules/@mytools/fst-cli/src/terminal/result-table.js +66 -0
- package/node_modules/@mytools/fst-cli/src/terminal/run-feed.js +104 -23
- package/node_modules/@mytools/fst-cli/src/terminal/run-presentation.js +91 -14
- package/node_modules/@mytools/fst-cli/src/terminal/run-viewer.js +34 -15
- package/node_modules/@mytools/fst-cli/src/terminal/schema.js +114 -4
- package/node_modules/@mytools/fst-cli/src/terminal/session-history.js +82 -0
- package/node_modules/@mytools/fst-cli/src/terminal/session.js +158 -54
- package/node_modules/@mytools/fst-cli/src/terminal/view.js +108 -73
- package/node_modules/@mytools/fst-cli/src/terminal/workflow-menu.js +17 -10
- package/node_modules/@mytools/fst-devtools/README.md +2 -0
- package/node_modules/@mytools/fst-devtools/package.json +2 -2
- package/node_modules/@mytools/fst-devtools/src/plugin-quality.js +4 -1
- package/node_modules/@mytools/fst-devtools/src/plugin-tools.js +2 -1
- package/node_modules/@mytools/fst-devtools/src/process-usage.js +62 -0
- package/node_modules/@mytools/fst-logs/README.md +23 -2
- package/node_modules/@mytools/fst-logs/package.json +2 -1
- package/node_modules/@mytools/fst-logs/src/file-identity.js +23 -0
- package/node_modules/@mytools/fst-logs/src/markdown-log.js +4 -3
- package/node_modules/@mytools/fst-logs/src/run-logs.js +3 -2
- package/node_modules/@mytools/fst-logs/src/session-history.js +180 -0
- package/node_modules/@mytools/fst-platform/README.md +9 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/LICENSE +21 -0
- package/node_modules/{undici/docs/docs/index.md → @mytools/fst-platform/node_modules/undici/README.md} +85 -137
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Agent.md +84 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/BalancedPool.md +99 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/CacheStorage.md +30 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/CacheStore.md +164 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Client.md +288 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/ClientStats.md +27 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Connector.md +115 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/ContentType.md +57 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Cookies.md +128 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Debug.md +62 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +317 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Dispatcher.md +1393 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +159 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Errors.md +49 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/EventSource.md +45 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Fetch.md +60 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/GlobalInstallation.md +139 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/H2CClient.md +263 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockAgent.md +603 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockCallHistory.md +197 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +43 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockClient.md +81 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockErrors.md +12 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockPool.md +555 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Pool.md +84 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/PoolStats.md +35 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/ProxyAgent.md +229 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/RedirectHandler.md +93 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/RetryAgent.md +50 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/RetryHandler.md +118 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/RoundRobinPool.md +145 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/SnapshotAgent.md +616 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +275 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Util.md +25 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/WebSocket.md +141 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/api-lifecycle.md +91 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/best-practices/client-certificate.md +64 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/docs/docs/best-practices/crawling.md +1 -3
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/best-practices/mocking-request.md +190 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/best-practices/proxy.md +127 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/docs/docs/best-practices/undici-vs-builtin-fetch.md +8 -10
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/best-practices/writing-tests.md +63 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/index-fetch.js +65 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/index.d.ts +3 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/index.js +234 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/abort-signal.js +59 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/api-connect.js +110 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/api-pipeline.js +252 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/api-request.js +214 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/api-stream.js +209 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/api-upgrade.js +111 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/index.js +7 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/readable.js +580 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/cache/memory-cache-store.js +3 -3
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/cache/sqlite-cache-store.js +1 -3
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/connect.js +153 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/constants.js +143 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/diagnostics.js +227 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/errors.js +477 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/request.js +485 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/symbols.js +75 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/tree.js +160 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/util.js +992 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/agent.js +158 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/balanced-pool.js +221 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/client-h1.js +1746 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/client-h2.js +1060 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/client.js +668 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/dispatcher-base.js +184 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/dispatcher.js +48 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +146 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/fixed-queue.js +135 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/dispatcher/h2c-client.js +4 -4
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/pool-base.js +214 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/pool.js +118 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/proxy-agent.js +319 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/retry-agent.js +35 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/dispatcher/round-robin-pool.js +10 -32
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/dispatcher/socks5-proxy-agent.js +63 -153
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/global.js +59 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/handler/cache-handler.js +7 -49
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/handler/cache-revalidation-handler.js +0 -10
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/handler/decorator-handler.js +67 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/handler/deduplication-handler.js +10 -29
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/handler/redirect-handler.js +238 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/handler/retry-handler.js +504 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/handler/unwrap-handler.js +106 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/handler/wrap-handler.js +105 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/interceptor/cache.js +26 -79
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/interceptor/decompress.js +3 -13
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/interceptor/deduplicate.js +4 -5
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/interceptor/dns.js +571 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/interceptor/dump.js +99 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/interceptor/redirect.js +21 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/interceptor/response-error.js +95 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/interceptor/retry.js +19 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/llhttp/.gitkeep +0 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/llhttp/constants.js +531 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/llhttp/llhttp-wasm.js +15 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +15 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/llhttp/utils.js +12 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-agent.js +232 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/mock/mock-call-history.js +1 -1
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-client.js +68 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-errors.js +29 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-interceptor.js +209 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-pool.js +68 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-symbols.js +32 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-utils.js +486 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/pending-interceptors-formatter.js +43 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/mock/snapshot-agent.js +7 -25
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/mock/snapshot-recorder.js +3 -38
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/util/cache.js +10 -92
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/util/promise.js +28 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/util/runtime-features.js +34 -3
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/util/timers.js +425 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cache/cache.js +864 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cache/cachestorage.js +152 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cache/util.js +45 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cookies/constants.js +12 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cookies/index.js +199 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cookies/parse.js +314 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cookies/util.js +352 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/eventsource/eventsource-stream.js +494 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/eventsource/eventsource.js +501 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/eventsource/util.js +29 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/LICENSE +21 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/body.js +509 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/constants.js +131 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/data-url.js +596 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/formdata-parser.js +586 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/formdata.js +259 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/global.js +40 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/headers.js +719 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/index.js +2413 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/request.js +1115 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/response.js +641 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/util.js +1522 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/infra/index.js +1 -16
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/webidl/index.js +21 -7
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/connection.js +339 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/constants.js +126 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/events.js +331 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/frame.js +133 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/permessage-deflate.js +105 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/receiver.js +507 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/sender.js +109 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/websocket/stream/websocketerror.js +10 -13
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/websocket/stream/websocketstream.js +14 -29
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/util.js +347 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/websocket.js +758 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/package.json +152 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/scripts/strip-comments.js +10 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/README.md +6 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/agent.d.ts +32 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/api.d.ts +43 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/balanced-pool.d.ts +30 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/cache.d.ts +36 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/client.d.ts +139 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/connector.d.ts +36 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/content-type.d.ts +21 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/cookies.d.ts +30 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/diagnostics-channel.d.ts +74 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/dispatcher.d.ts +275 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/env-http-proxy-agent.d.ts +22 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/errors.d.ts +177 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/eventsource.d.ts +66 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/fetch.d.ts +231 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/formdata.d.ts +114 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/global-dispatcher.d.ts +9 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/global-origin.d.ts +7 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/h2c-client.d.ts +6 -6
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/handlers.d.ts +14 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/header.d.ts +160 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/index.d.ts +91 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/interceptors.d.ts +82 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/mock-agent.d.ts +68 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/mock-client.d.ts +27 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/mock-errors.d.ts +12 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/mock-interceptor.d.ts +94 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/mock-pool.d.ts +27 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/patch.d.ts +29 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/pool-stats.d.ts +19 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/pool.d.ts +41 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/proxy-agent.d.ts +29 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/readable.d.ts +68 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/retry-agent.d.ts +8 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/retry-handler.d.ts +125 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/round-robin-pool.d.ts +2 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/snapshot-agent.d.ts +0 -4
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/socks5-proxy-agent.d.ts +2 -4
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/util.d.ts +18 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/webidl.d.ts +347 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/websocket.d.ts +188 -0
- package/node_modules/@mytools/fst-platform/package.json +4 -3
- package/node_modules/@mytools/fst-platform/src/managed-process.js +36 -0
- package/node_modules/@mytools/fst-platform/src/process.js +11 -3
- package/node_modules/@mytools/fst-platform/src/shell.js +46 -1
- package/node_modules/@mytools/fst-plugin/README.md +4 -0
- package/node_modules/@mytools/fst-plugin/package.json +1 -1
- package/node_modules/@mytools/fst-plugin/src/contracts.js +3 -0
- package/node_modules/@mytools/fst-plugin/src/host.js +54 -31
- package/node_modules/@mytools/fst-plugin/src/runtime.js +14 -8
- package/node_modules/@mytools/fst-workflow/package.json +1 -1
- package/node_modules/@mytools/fst-workflow/src/engine.js +1 -1
- package/node_modules/@mytools/fst-workspace/README.md +6 -0
- package/node_modules/@mytools/fst-workspace/package.json +2 -1
- package/node_modules/@mytools/fst-workspace/src/plugin-registry.js +58 -0
- package/node_modules/@mytools/fst-workspace/src/plugins.js +10 -5
- package/node_modules/@mytools/fst-workspace/src/workflows.js +32 -12
- package/node_modules/@mytools/pack/package.json +3 -3
- package/node_modules/@mytools/pack/runtime-cache.js +26 -0
- package/node_modules/@mytools/pack/runtime.js +6 -10
- package/node_modules/@mytools/sdk/README.md +10 -0
- package/node_modules/@mytools/sdk/inputs.js +53 -0
- package/node_modules/@mytools/sdk/package.json +2 -0
- package/node_modules/@mytools/sdk/reports.js +53 -0
- package/node_modules/@mytools/web/public/THIRD_PARTY_NOTICES.txt +1197 -1207
- package/node_modules/@npmcli/agent/lib/agents.js +0 -10
- package/node_modules/@npmcli/agent/package.json +12 -11
- package/node_modules/@npmcli/arborist/README.md +2 -2
- package/node_modules/@npmcli/arborist/bin/index.js +2 -1
- package/node_modules/@npmcli/arborist/bin/shrinkwrap.js +7 -0
- package/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js +25 -159
- package/node_modules/@npmcli/arborist/lib/arborist/isolated-reifier.js +49 -11
- package/node_modules/@npmcli/arborist/lib/arborist/load-actual.js +0 -67
- package/node_modules/@npmcli/arborist/lib/arborist/load-virtual.js +37 -5
- package/node_modules/@npmcli/arborist/lib/arborist/rebuild.js +8 -15
- package/node_modules/@npmcli/arborist/lib/arborist/reify.js +42 -59
- package/node_modules/@npmcli/arborist/lib/consistent-resolve.js +1 -1
- package/node_modules/@npmcli/arborist/lib/diff.js +22 -17
- package/node_modules/@npmcli/arborist/lib/edge.js +2 -22
- package/node_modules/@npmcli/arborist/lib/index.js +0 -2
- package/node_modules/@npmcli/arborist/lib/isolated-classes.js +1 -4
- package/node_modules/@npmcli/arborist/lib/node.js +9 -13
- package/node_modules/@npmcli/arborist/lib/place-dep.js +0 -6
- package/node_modules/@npmcli/arborist/lib/printable.js +5 -0
- package/node_modules/@npmcli/arborist/lib/shrinkwrap.js +32 -55
- package/node_modules/@npmcli/arborist/package.json +26 -32
- package/node_modules/@npmcli/fs/lib/move-file.js +5 -5
- package/node_modules/@npmcli/fs/package.json +5 -5
- package/node_modules/@npmcli/git/package.json +12 -13
- package/node_modules/@npmcli/installed-package-contents/package.json +7 -7
- package/node_modules/@npmcli/map-workspaces/package.json +7 -7
- package/node_modules/@npmcli/metavuln-calculator/package.json +16 -10
- package/node_modules/@npmcli/name-from-folder/package.json +16 -13
- package/node_modules/@npmcli/node-gyp/package.json +5 -5
- package/node_modules/@npmcli/package-json/lib/index.js +1 -2
- package/node_modules/@npmcli/package-json/lib/normalize.js +22 -23
- package/node_modules/@npmcli/package-json/package.json +10 -11
- package/node_modules/@npmcli/promise-spawn/README.md +2 -1
- package/node_modules/@npmcli/promise-spawn/package.json +5 -5
- package/node_modules/@npmcli/redact/package.json +4 -4
- package/node_modules/@npmcli/run-script/lib/is-server-package.js +11 -0
- package/node_modules/@npmcli/run-script/lib/make-spawn-args.js +6 -5
- package/node_modules/@npmcli/run-script/lib/run-script-pkg.js +13 -4
- package/node_modules/@npmcli/run-script/lib/run-script.js +2 -1
- package/node_modules/@npmcli/run-script/package.json +11 -12
- package/node_modules/@sigstore/bundle/README.md +1 -1
- package/node_modules/@sigstore/bundle/dist/error.js +0 -1
- package/node_modules/@sigstore/bundle/package.json +2 -2
- package/node_modules/@sigstore/core/README.md +1 -1
- package/node_modules/@sigstore/core/dist/asn1/length.js +1 -12
- package/node_modules/@sigstore/core/dist/asn1/obj.js +7 -25
- package/node_modules/@sigstore/core/dist/asn1/parse.js +5 -24
- package/node_modules/@sigstore/core/package.json +2 -2
- package/node_modules/@sigstore/sign/README.md +1 -1
- package/node_modules/@sigstore/sign/dist/signer/fulcio/ephemeral.js +1 -1
- package/node_modules/@sigstore/sign/package.json +9 -9
- package/node_modules/@sigstore/tuf/README.md +1 -1
- package/node_modules/@sigstore/tuf/package.json +4 -4
- package/node_modules/@sigstore/tuf/seeds.json +1 -1
- package/node_modules/@sigstore/verify/README.md +1 -1
- package/node_modules/@sigstore/verify/dist/bundle/dsse.d.ts +0 -1
- package/node_modules/@sigstore/verify/dist/bundle/dsse.js +0 -6
- package/node_modules/@sigstore/verify/dist/bundle/message.d.ts +0 -1
- package/node_modules/@sigstore/verify/dist/bundle/message.js +0 -5
- package/node_modules/@sigstore/verify/dist/policy.d.ts +1 -1
- package/node_modules/@sigstore/verify/dist/policy.js +2 -0
- package/node_modules/@sigstore/verify/dist/shared.types.d.ts +1 -6
- package/node_modules/@sigstore/verify/dist/tlog/checkpoint.js +3 -17
- package/node_modules/@sigstore/verify/dist/tlog/hashedrekord.js +4 -4
- package/node_modules/@sigstore/verify/dist/tlog/index.js +1 -13
- package/node_modules/@sigstore/verify/dist/tlog/merkle.js +1 -12
- package/node_modules/@sigstore/verify/dist/verifier.js +5 -13
- package/node_modules/@sigstore/verify/package.json +5 -5
- package/node_modules/@tufjs/models/package.json +3 -3
- package/node_modules/abbrev/package.json +8 -9
- package/node_modules/agent-base/dist/helpers.d.ts +5 -0
- package/node_modules/agent-base/dist/helpers.d.ts.map +1 -1
- package/node_modules/agent-base/dist/helpers.js +34 -5
- package/node_modules/agent-base/dist/helpers.js.map +1 -1
- package/node_modules/agent-base/dist/index.d.ts +5 -1
- package/node_modules/agent-base/dist/index.d.ts.map +1 -1
- package/node_modules/agent-base/dist/index.js +40 -8
- package/node_modules/agent-base/dist/index.js.map +1 -1
- package/node_modules/agent-base/package.json +12 -12
- package/node_modules/bin-links/README.md +4 -5
- package/node_modules/bin-links/lib/fix-bin.js +1 -3
- package/node_modules/bin-links/lib/index.js +16 -8
- package/node_modules/bin-links/lib/link-mans.js +53 -0
- package/node_modules/bin-links/package.json +12 -11
- package/node_modules/cacache/lib/content/write.js +0 -2
- package/node_modules/cacache/lib/entry-index.js +0 -3
- package/node_modules/cacache/lib/rm.js +0 -1
- package/node_modules/cacache/lib/util/tmp.js +1 -5
- package/node_modules/cacache/lib/verify.js +2 -2
- package/node_modules/cacache/package.json +7 -7
- package/node_modules/cmd-shim/lib/index.js +32 -67
- package/node_modules/cmd-shim/package.json +5 -5
- package/node_modules/hosted-git-info/README.md +1 -1
- package/node_modules/hosted-git-info/lib/parse-url.js +3 -1
- package/node_modules/hosted-git-info/package.json +4 -4
- package/node_modules/http-proxy-agent/dist/index.d.ts +5 -8
- package/node_modules/http-proxy-agent/dist/index.d.ts.map +1 -1
- package/node_modules/http-proxy-agent/dist/index.js +42 -26
- package/node_modules/http-proxy-agent/dist/index.js.map +1 -1
- package/node_modules/http-proxy-agent/package.json +14 -15
- package/node_modules/https-proxy-agent/dist/index.d.ts +5 -9
- package/node_modules/https-proxy-agent/dist/index.d.ts.map +1 -1
- package/node_modules/https-proxy-agent/dist/index.js +44 -98
- package/node_modules/https-proxy-agent/dist/index.js.map +1 -1
- package/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +3 -0
- package/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts.map +1 -1
- package/node_modules/https-proxy-agent/dist/parse-proxy-response.js +10 -3
- package/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map +1 -1
- package/node_modules/https-proxy-agent/package.json +15 -16
- package/node_modules/ignore-walk/package.json +4 -4
- package/node_modules/ini/package.json +5 -5
- package/node_modules/ip-address/README.md +70 -70
- package/node_modules/ip-address/dist/ipv6.js +7 -4
- package/node_modules/ip-address/dist/ipv6.js.map +1 -1
- package/node_modules/ip-address/dist/v6/constants.d.ts +3 -0
- package/node_modules/ip-address/dist/v6/constants.js +3 -0
- package/node_modules/ip-address/dist/v6/constants.js.map +1 -1
- package/node_modules/ip-address/package.json +2 -1
- package/node_modules/json-parse-even-better-errors/lib/index.js +1 -3
- package/node_modules/json-parse-even-better-errors/package.json +17 -13
- package/node_modules/make-fetch-happen/package.json +11 -11
- package/node_modules/minipass-fetch/package.json +4 -4
- package/node_modules/node-gyp/.release-please-manifest.json +1 -1
- package/node_modules/node-gyp/CHANGELOG.md +0 -102
- package/node_modules/node-gyp/README.md +2 -3
- package/node_modules/node-gyp/eslint.config.js +1 -4
- package/node_modules/node-gyp/gyp/.release-please-manifest.json +1 -1
- package/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +19 -14
- package/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +2 -7
- package/node_modules/node-gyp/gyp/pyproject.toml +1 -1
- package/node_modules/node-gyp/lib/build.js +6 -18
- package/node_modules/node-gyp/lib/create-config-gypi.js +0 -5
- package/node_modules/node-gyp/lib/node-gyp.js +2 -9
- package/node_modules/node-gyp/lib/rebuild.js +3 -3
- package/node_modules/node-gyp/package.json +9 -11
- package/node_modules/nopt/README.md +4 -2
- package/node_modules/nopt/lib/debug.js +5 -0
- package/node_modules/nopt/lib/nopt-lib.js +43 -7
- package/node_modules/nopt/lib/nopt.js +4 -2
- package/node_modules/nopt/lib/type-defs.js +13 -8
- package/node_modules/nopt/package.json +17 -15
- package/node_modules/npm-bundled/package.json +6 -6
- package/node_modules/npm-install-checks/package.json +5 -5
- package/node_modules/npm-normalize-package-bin/package.json +16 -13
- package/node_modules/npm-package-arg/package.json +7 -7
- package/node_modules/npm-packlist/README.md +30 -45
- package/node_modules/npm-packlist/lib/index.js +47 -115
- package/node_modules/npm-packlist/package.json +8 -10
- package/node_modules/npm-pick-manifest/package.json +19 -15
- package/node_modules/npm-registry-fetch/lib/errors.js +3 -8
- package/node_modules/npm-registry-fetch/package.json +12 -12
- package/node_modules/pacote/lib/dir.js +5 -60
- package/node_modules/pacote/lib/fetcher.js +0 -4
- package/node_modules/pacote/lib/git.js +3 -11
- package/node_modules/pacote/lib/util/add-git-sha.js +1 -1
- package/node_modules/pacote/package.json +18 -19
- package/node_modules/parse-conflict-json/package.json +6 -6
- package/node_modules/proc-log/package.json +4 -4
- package/node_modules/read-cmd-shim/lib/index.js +1 -1
- package/node_modules/read-cmd-shim/package.json +18 -14
- package/node_modules/sigstore/README.md +1 -1
- package/node_modules/sigstore/package.json +10 -10
- package/node_modules/socks-proxy-agent/dist/index.d.ts +3 -1
- package/node_modules/socks-proxy-agent/dist/index.d.ts.map +1 -1
- package/node_modules/socks-proxy-agent/dist/index.js +43 -17
- package/node_modules/socks-proxy-agent/dist/index.js.map +1 -1
- package/node_modules/socks-proxy-agent/package.json +15 -15
- package/node_modules/ssri/package.json +4 -4
- package/node_modules/tuf-js/dist/config.d.ts +2 -2
- package/node_modules/tuf-js/dist/fetcher.d.ts +4 -4
- package/node_modules/tuf-js/dist/fetcher.js +16 -55
- package/node_modules/tuf-js/dist/updater.js +2 -2
- package/node_modules/tuf-js/package.json +8 -8
- package/node_modules/undici/README.md +72 -405
- package/node_modules/undici/docs/docs/api/Agent.md +41 -252
- package/node_modules/undici/docs/docs/api/BalancedPool.md +48 -246
- package/node_modules/undici/docs/docs/api/CacheStorage.md +13 -171
- package/node_modules/undici/docs/docs/api/Client.md +139 -395
- package/node_modules/undici/docs/docs/api/Connector.md +35 -118
- package/node_modules/undici/docs/docs/api/ContentType.md +25 -65
- package/node_modules/undici/docs/docs/api/Cookies.md +47 -125
- package/node_modules/undici/docs/docs/api/Debug.md +31 -47
- package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +97 -409
- package/node_modules/undici/docs/docs/api/DispatchInterceptor.md +60 -0
- package/node_modules/undici/docs/docs/api/Dispatcher.md +1011 -500
- package/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +96 -105
- package/node_modules/undici/docs/docs/api/Errors.md +28 -528
- package/node_modules/undici/docs/docs/api/EventSource.md +13 -326
- package/node_modules/undici/docs/docs/api/Fetch.md +24 -693
- package/node_modules/undici/docs/docs/api/MockAgent.md +264 -346
- package/node_modules/undici/docs/docs/api/MockClient.md +31 -153
- package/node_modules/undici/docs/docs/api/MockErrors.md +5 -56
- package/node_modules/undici/docs/docs/api/MockPool.md +253 -324
- package/node_modules/undici/docs/docs/api/Pool.md +41 -235
- package/node_modules/undici/docs/docs/api/PoolStats.md +13 -119
- package/node_modules/undici/docs/docs/api/ProxyAgent.md +81 -198
- package/node_modules/undici/docs/docs/api/RedirectHandler.md +58 -238
- package/node_modules/undici/docs/docs/api/RetryAgent.md +28 -119
- package/node_modules/undici/docs/docs/api/RetryHandler.md +78 -161
- package/node_modules/undici/docs/docs/api/Util.md +11 -68
- package/node_modules/undici/docs/docs/api/WebSocket.md +24 -509
- package/node_modules/undici/docs/docs/api/api-lifecycle.md +33 -101
- package/node_modules/undici/docs/docs/best-practices/client-certificate.md +0 -2
- package/node_modules/undici/docs/docs/best-practices/mocking-request.md +2 -58
- package/node_modules/undici/docs/docs/best-practices/proxy.md +1 -3
- package/node_modules/undici/docs/docs/best-practices/writing-tests.md +0 -45
- package/node_modules/undici/index-fetch.js +4 -34
- package/node_modules/undici/index.d.ts +1 -1
- package/node_modules/undici/index.js +20 -87
- package/node_modules/undici/lib/api/abort-signal.js +0 -2
- package/node_modules/undici/lib/api/api-connect.js +11 -15
- package/node_modules/undici/lib/api/api-pipeline.js +19 -33
- package/node_modules/undici/lib/api/api-request.js +59 -89
- package/node_modules/undici/lib/api/api-stream.js +64 -114
- package/node_modules/undici/lib/api/api-upgrade.js +13 -26
- package/node_modules/undici/lib/api/readable.js +87 -317
- package/node_modules/undici/lib/api/util.js +93 -0
- package/node_modules/undici/lib/core/connect.js +125 -77
- package/node_modules/undici/lib/core/constants.js +9 -11
- package/node_modules/undici/lib/core/diagnostics.js +129 -154
- package/node_modules/undici/lib/core/errors.js +50 -122
- package/node_modules/undici/lib/core/request.js +87 -172
- package/node_modules/undici/lib/core/symbols.js +2 -14
- package/node_modules/undici/lib/core/tree.js +2 -10
- package/node_modules/undici/lib/core/util.js +190 -481
- package/node_modules/undici/lib/dispatcher/agent.js +35 -83
- package/node_modules/undici/lib/dispatcher/balanced-pool.js +38 -46
- package/node_modules/undici/lib/dispatcher/client-h1.js +199 -492
- package/node_modules/undici/lib/dispatcher/client-h2.js +380 -1409
- package/node_modules/undici/lib/dispatcher/client.js +130 -253
- package/node_modules/undici/lib/dispatcher/dispatcher-base.js +52 -50
- package/node_modules/undici/lib/dispatcher/dispatcher.js +24 -17
- package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +45 -75
- package/node_modules/undici/lib/dispatcher/fixed-queue.js +50 -68
- package/node_modules/undici/lib/dispatcher/pool-base.js +54 -153
- package/node_modules/undici/lib/dispatcher/pool-stats.js +34 -0
- package/node_modules/undici/lib/dispatcher/pool.js +16 -135
- package/node_modules/undici/lib/dispatcher/proxy-agent.js +41 -175
- package/node_modules/undici/lib/dispatcher/retry-agent.js +0 -3
- package/node_modules/undici/lib/global.js +9 -59
- package/node_modules/undici/lib/handler/decorator-handler.js +15 -43
- package/node_modules/undici/lib/handler/redirect-handler.js +116 -127
- package/node_modules/undici/lib/handler/retry-handler.js +182 -398
- package/node_modules/undici/lib/interceptor/dns.js +47 -254
- package/node_modules/undici/lib/interceptor/dump.js +56 -32
- package/node_modules/undici/lib/interceptor/redirect-interceptor.js +21 -0
- package/node_modules/undici/lib/interceptor/redirect.js +14 -11
- package/node_modules/undici/lib/interceptor/response-error.js +22 -31
- package/node_modules/undici/lib/llhttp/.gitkeep +0 -0
- package/node_modules/undici/lib/llhttp/constants.js +193 -446
- package/node_modules/undici/lib/llhttp/llhttp-wasm.js +1 -11
- package/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +1 -11
- package/node_modules/undici/lib/llhttp/utils.js +12 -9
- package/node_modules/undici/lib/mock/mock-agent.js +22 -106
- package/node_modules/undici/lib/mock/mock-client.js +4 -13
- package/node_modules/undici/lib/mock/mock-errors.js +2 -3
- package/node_modules/undici/lib/mock/mock-interceptor.js +13 -33
- package/node_modules/undici/lib/mock/mock-pool.js +4 -13
- package/node_modules/undici/lib/mock/mock-symbols.js +1 -10
- package/node_modules/undici/lib/mock/mock-utils.js +51 -404
- package/node_modules/undici/lib/mock/pluralizer.js +29 -0
- package/node_modules/undici/lib/util/timers.js +9 -11
- package/node_modules/undici/lib/web/cache/cache.js +51 -63
- package/node_modules/undici/lib/web/cache/cachestorage.js +7 -13
- package/node_modules/undici/lib/web/cache/symbols.js +5 -0
- package/node_modules/undici/lib/web/cookies/index.js +18 -45
- package/node_modules/undici/lib/web/cookies/parse.js +149 -157
- package/node_modules/undici/lib/web/cookies/util.js +2 -4
- package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +9 -37
- package/node_modules/undici/lib/web/eventsource/eventsource.js +64 -108
- package/node_modules/undici/lib/web/eventsource/util.js +5 -28
- package/node_modules/undici/lib/web/fetch/body.js +148 -173
- package/node_modules/undici/lib/web/fetch/constants.js +6 -13
- package/node_modules/undici/lib/web/fetch/data-url.js +167 -19
- package/node_modules/undici/lib/web/fetch/dispatcher-weakref.js +46 -0
- package/node_modules/undici/lib/web/fetch/file.js +126 -0
- package/node_modules/undici/lib/web/fetch/formdata-parser.js +117 -229
- package/node_modules/undici/lib/web/fetch/formdata.js +65 -85
- package/node_modules/undici/lib/web/fetch/headers.js +108 -143
- package/node_modules/undici/lib/web/fetch/index.js +446 -627
- package/node_modules/undici/lib/web/fetch/request.js +115 -217
- package/node_modules/undici/lib/web/fetch/response.js +82 -110
- package/node_modules/undici/lib/web/fetch/symbols.js +9 -0
- package/node_modules/undici/lib/web/fetch/util.js +393 -291
- package/node_modules/undici/lib/web/fetch/webidl.js +695 -0
- package/node_modules/undici/lib/web/fileapi/encoding.js +290 -0
- package/node_modules/undici/lib/web/fileapi/filereader.js +344 -0
- package/node_modules/undici/lib/web/fileapi/progressevent.js +78 -0
- package/node_modules/undici/lib/web/fileapi/symbols.js +10 -0
- package/node_modules/undici/lib/web/fileapi/util.js +391 -0
- package/node_modules/undici/lib/web/websocket/connection.js +160 -139
- package/node_modules/undici/lib/web/websocket/constants.js +10 -70
- package/node_modules/undici/lib/web/websocket/events.js +30 -49
- package/node_modules/undici/lib/web/websocket/frame.js +20 -51
- package/node_modules/undici/lib/web/websocket/receiver.js +87 -83
- package/node_modules/undici/lib/web/websocket/sender.js +13 -18
- package/node_modules/undici/lib/web/websocket/symbols.js +12 -0
- package/node_modules/undici/lib/web/websocket/util.js +90 -115
- package/node_modules/undici/lib/web/websocket/websocket.js +171 -359
- package/node_modules/undici/package.json +57 -49
- package/node_modules/undici/scripts/strip-comments.js +1 -3
- package/node_modules/undici/types/agent.d.ts +13 -12
- package/node_modules/undici/types/api.d.ts +26 -26
- package/node_modules/undici/types/balanced-pool.d.ts +12 -13
- package/node_modules/undici/types/client.d.ts +39 -98
- package/node_modules/undici/types/connector.d.ts +2 -5
- package/node_modules/undici/types/cookies.d.ts +1 -3
- package/node_modules/undici/types/diagnostics-channel.d.ts +11 -20
- package/node_modules/undici/types/dispatcher.d.ts +139 -136
- package/node_modules/undici/types/env-http-proxy-agent.d.ts +3 -4
- package/node_modules/undici/types/errors.d.ts +54 -86
- package/node_modules/undici/types/eventsource.d.ts +4 -9
- package/node_modules/undici/types/fetch.d.ts +25 -51
- package/node_modules/undici/types/file.d.ts +39 -0
- package/node_modules/undici/types/filereader.d.ts +54 -0
- package/node_modules/undici/types/formdata.d.ts +7 -7
- package/node_modules/undici/types/global-dispatcher.d.ts +4 -4
- package/node_modules/undici/types/global-origin.d.ts +5 -5
- package/node_modules/undici/types/handlers.d.ts +9 -10
- package/node_modules/undici/types/header.d.ts +1 -162
- package/node_modules/undici/types/index.d.ts +47 -69
- package/node_modules/undici/types/interceptors.d.ts +12 -62
- package/node_modules/undici/types/mock-agent.d.ts +27 -46
- package/node_modules/undici/types/mock-client.d.ts +4 -6
- package/node_modules/undici/types/mock-errors.d.ts +3 -3
- package/node_modules/undici/types/mock-interceptor.d.ts +21 -26
- package/node_modules/undici/types/mock-pool.d.ts +4 -6
- package/node_modules/undici/types/patch.d.ts +4 -0
- package/node_modules/undici/types/pool-stats.d.ts +8 -8
- package/node_modules/undici/types/pool.d.ts +14 -14
- package/node_modules/undici/types/proxy-agent.d.ts +6 -13
- package/node_modules/undici/types/readable.d.ts +16 -19
- package/node_modules/undici/types/retry-agent.d.ts +1 -1
- package/node_modules/undici/types/retry-handler.d.ts +9 -18
- package/node_modules/undici/types/util.d.ts +3 -3
- package/node_modules/undici/types/webidl.d.ts +32 -156
- package/node_modules/undici/types/websocket.d.ts +10 -48
- package/node_modules/validate-npm-package-name/package.json +4 -4
- package/node_modules/which/package.json +4 -4
- package/node_modules/write-file-atomic/package.json +4 -4
- package/package.json +56 -60
- package/node_modules/@npmcli/arborist/lib/npm-extension.js +0 -237
- package/node_modules/@npmcli/arborist/lib/package-extensions.js +0 -236
- package/node_modules/@npmcli/arborist/lib/patch.js +0 -111
- package/node_modules/@npmcli/arborist/lib/patched-dependencies.js +0 -168
- package/node_modules/cacache/lib/util/cache-dir.js +0 -29
- package/node_modules/diff/CONTRIBUTING.md +0 -28
- package/node_modules/diff/LICENSE +0 -29
- package/node_modules/diff/README.md +0 -388
- package/node_modules/diff/dist/diff.js +0 -1782
- package/node_modules/diff/dist/diff.min.js +0 -1
- package/node_modules/diff/eslint.config.mjs +0 -182
- package/node_modules/diff/libcjs/convert/dmp.d.ts +0 -8
- package/node_modules/diff/libcjs/convert/dmp.d.ts.map +0 -1
- package/node_modules/diff/libcjs/convert/dmp.js +0 -24
- package/node_modules/diff/libcjs/convert/xml.d.ts +0 -6
- package/node_modules/diff/libcjs/convert/xml.d.ts.map +0 -1
- package/node_modules/diff/libcjs/convert/xml.js +0 -34
- package/node_modules/diff/libcjs/diff/array.d.ts +0 -19
- package/node_modules/diff/libcjs/diff/array.d.ts.map +0 -1
- package/node_modules/diff/libcjs/diff/array.js +0 -40
- package/node_modules/diff/libcjs/diff/base.d.ts +0 -20
- package/node_modules/diff/libcjs/diff/base.d.ts.map +0 -1
- package/node_modules/diff/libcjs/diff/base.js +0 -265
- package/node_modules/diff/libcjs/diff/character.d.ts +0 -19
- package/node_modules/diff/libcjs/diff/character.d.ts.map +0 -1
- package/node_modules/diff/libcjs/diff/character.js +0 -31
- package/node_modules/diff/libcjs/diff/css.d.ts +0 -18
- package/node_modules/diff/libcjs/diff/css.d.ts.map +0 -1
- package/node_modules/diff/libcjs/diff/css.js +0 -34
- package/node_modules/diff/libcjs/diff/json.d.ts +0 -24
- package/node_modules/diff/libcjs/diff/json.d.ts.map +0 -1
- package/node_modules/diff/libcjs/diff/json.js +0 -105
- package/node_modules/diff/libcjs/diff/line.d.ts +0 -24
- package/node_modules/diff/libcjs/diff/line.d.ts.map +0 -1
- package/node_modules/diff/libcjs/diff/line.js +0 -89
- package/node_modules/diff/libcjs/diff/sentence.d.ts +0 -21
- package/node_modules/diff/libcjs/diff/sentence.d.ts.map +0 -1
- package/node_modules/diff/libcjs/diff/sentence.js +0 -67
- package/node_modules/diff/libcjs/diff/word.d.ts +0 -35
- package/node_modules/diff/libcjs/diff/word.d.ts.map +0 -1
- package/node_modules/diff/libcjs/diff/word.js +0 -312
- package/node_modules/diff/libcjs/index.d.ts +0 -20
- package/node_modules/diff/libcjs/index.d.ts.map +0 -1
- package/node_modules/diff/libcjs/index.js +0 -64
- package/node_modules/diff/libcjs/package.json +0 -1
- package/node_modules/diff/libcjs/patch/apply.d.ts +0 -62
- package/node_modules/diff/libcjs/patch/apply.d.ts.map +0 -1
- package/node_modules/diff/libcjs/patch/apply.js +0 -267
- package/node_modules/diff/libcjs/patch/create.d.ts +0 -122
- package/node_modules/diff/libcjs/patch/create.d.ts.map +0 -1
- package/node_modules/diff/libcjs/patch/create.js +0 -251
- package/node_modules/diff/libcjs/patch/line-endings.d.ts +0 -17
- package/node_modules/diff/libcjs/patch/line-endings.d.ts.map +0 -1
- package/node_modules/diff/libcjs/patch/line-endings.js +0 -61
- package/node_modules/diff/libcjs/patch/parse.d.ts +0 -8
- package/node_modules/diff/libcjs/patch/parse.d.ts.map +0 -1
- package/node_modules/diff/libcjs/patch/parse.js +0 -150
- package/node_modules/diff/libcjs/patch/reverse.d.ts +0 -9
- package/node_modules/diff/libcjs/patch/reverse.d.ts.map +0 -1
- package/node_modules/diff/libcjs/patch/reverse.js +0 -37
- package/node_modules/diff/libcjs/types.d.ts +0 -213
- package/node_modules/diff/libcjs/types.d.ts.map +0 -1
- package/node_modules/diff/libcjs/types.js +0 -2
- package/node_modules/diff/libcjs/util/array.d.ts +0 -3
- package/node_modules/diff/libcjs/util/array.d.ts.map +0 -1
- package/node_modules/diff/libcjs/util/array.js +0 -21
- package/node_modules/diff/libcjs/util/distance-iterator.d.ts +0 -2
- package/node_modules/diff/libcjs/util/distance-iterator.d.ts.map +0 -1
- package/node_modules/diff/libcjs/util/distance-iterator.js +0 -40
- package/node_modules/diff/libcjs/util/params.d.ts +0 -4
- package/node_modules/diff/libcjs/util/params.d.ts.map +0 -1
- package/node_modules/diff/libcjs/util/params.js +0 -17
- package/node_modules/diff/libcjs/util/string.d.ts +0 -30
- package/node_modules/diff/libcjs/util/string.d.ts.map +0 -1
- package/node_modules/diff/libcjs/util/string.js +0 -200
- package/node_modules/diff/libesm/convert/dmp.d.ts +0 -8
- package/node_modules/diff/libesm/convert/dmp.d.ts.map +0 -1
- package/node_modules/diff/libesm/convert/dmp.js +0 -21
- package/node_modules/diff/libesm/convert/xml.d.ts +0 -6
- package/node_modules/diff/libesm/convert/xml.d.ts.map +0 -1
- package/node_modules/diff/libesm/convert/xml.js +0 -31
- package/node_modules/diff/libesm/diff/array.d.ts +0 -19
- package/node_modules/diff/libesm/diff/array.d.ts.map +0 -1
- package/node_modules/diff/libesm/diff/array.js +0 -16
- package/node_modules/diff/libesm/diff/base.d.ts +0 -20
- package/node_modules/diff/libesm/diff/base.d.ts.map +0 -1
- package/node_modules/diff/libesm/diff/base.js +0 -253
- package/node_modules/diff/libesm/diff/character.d.ts +0 -19
- package/node_modules/diff/libesm/diff/character.d.ts.map +0 -1
- package/node_modules/diff/libesm/diff/character.js +0 -7
- package/node_modules/diff/libesm/diff/css.d.ts +0 -18
- package/node_modules/diff/libesm/diff/css.d.ts.map +0 -1
- package/node_modules/diff/libesm/diff/css.js +0 -10
- package/node_modules/diff/libesm/diff/json.d.ts +0 -24
- package/node_modules/diff/libesm/diff/json.d.ts.map +0 -1
- package/node_modules/diff/libesm/diff/json.js +0 -78
- package/node_modules/diff/libesm/diff/line.d.ts +0 -24
- package/node_modules/diff/libesm/diff/line.d.ts.map +0 -1
- package/node_modules/diff/libesm/diff/line.js +0 -65
- package/node_modules/diff/libesm/diff/sentence.d.ts +0 -21
- package/node_modules/diff/libesm/diff/sentence.d.ts.map +0 -1
- package/node_modules/diff/libesm/diff/sentence.js +0 -43
- package/node_modules/diff/libesm/diff/word.d.ts +0 -35
- package/node_modules/diff/libesm/diff/word.d.ts.map +0 -1
- package/node_modules/diff/libesm/diff/word.js +0 -281
- package/node_modules/diff/libesm/index.d.ts +0 -20
- package/node_modules/diff/libesm/index.d.ts.map +0 -1
- package/node_modules/diff/libesm/index.js +0 -30
- package/node_modules/diff/libesm/package.json +0 -1
- package/node_modules/diff/libesm/patch/apply.d.ts +0 -62
- package/node_modules/diff/libesm/patch/apply.d.ts.map +0 -1
- package/node_modules/diff/libesm/patch/apply.js +0 -257
- package/node_modules/diff/libesm/patch/create.d.ts +0 -122
- package/node_modules/diff/libesm/patch/create.d.ts.map +0 -1
- package/node_modules/diff/libesm/patch/create.js +0 -228
- package/node_modules/diff/libesm/patch/line-endings.d.ts +0 -17
- package/node_modules/diff/libesm/patch/line-endings.d.ts.map +0 -1
- package/node_modules/diff/libesm/patch/line-endings.js +0 -44
- package/node_modules/diff/libesm/patch/parse.d.ts +0 -8
- package/node_modules/diff/libesm/patch/parse.d.ts.map +0 -1
- package/node_modules/diff/libesm/patch/parse.js +0 -147
- package/node_modules/diff/libesm/patch/reverse.d.ts +0 -9
- package/node_modules/diff/libesm/patch/reverse.d.ts.map +0 -1
- package/node_modules/diff/libesm/patch/reverse.js +0 -23
- package/node_modules/diff/libesm/types.d.ts +0 -213
- package/node_modules/diff/libesm/types.d.ts.map +0 -1
- package/node_modules/diff/libesm/types.js +0 -1
- package/node_modules/diff/libesm/util/array.d.ts +0 -3
- package/node_modules/diff/libesm/util/array.d.ts.map +0 -1
- package/node_modules/diff/libesm/util/array.js +0 -17
- package/node_modules/diff/libesm/util/distance-iterator.d.ts +0 -2
- package/node_modules/diff/libesm/util/distance-iterator.d.ts.map +0 -1
- package/node_modules/diff/libesm/util/distance-iterator.js +0 -37
- package/node_modules/diff/libesm/util/params.d.ts +0 -4
- package/node_modules/diff/libesm/util/params.d.ts.map +0 -1
- package/node_modules/diff/libesm/util/params.js +0 -14
- package/node_modules/diff/libesm/util/string.d.ts +0 -30
- package/node_modules/diff/libesm/util/string.d.ts.map +0 -1
- package/node_modules/diff/libesm/util/string.js +0 -184
- package/node_modules/diff/package.json +0 -130
- package/node_modules/diff/release-notes.md +0 -432
- package/node_modules/node-gyp/commitlint.config.mjs +0 -3
- package/node_modules/node-gyp/gyp/commitlint.config.js +0 -6
- package/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake_test.py +0 -105
- package/node_modules/node-gyp/zizmor.yml +0 -5
- package/node_modules/proxy-agent-negotiate/dist/index.d.ts +0 -14
- package/node_modules/proxy-agent-negotiate/dist/index.d.ts.map +0 -1
- package/node_modules/proxy-agent-negotiate/dist/index.js +0 -35
- package/node_modules/proxy-agent-negotiate/dist/index.js.map +0 -1
- package/node_modules/proxy-agent-negotiate/package.json +0 -47
- package/node_modules/undici/docs/docs/api/CacheStore.md +0 -360
- package/node_modules/undici/docs/docs/api/ClientStats.md +0 -93
- package/node_modules/undici/docs/docs/api/GlobalInstallation.md +0 -121
- package/node_modules/undici/docs/docs/api/H2CClient.md +0 -385
- package/node_modules/undici/docs/docs/api/Interceptors.md +0 -419
- package/node_modules/undici/docs/docs/api/MockCallHistory.md +0 -371
- package/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +0 -206
- package/node_modules/undici/docs/docs/api/RoundRobinPool.md +0 -239
- package/node_modules/undici/docs/docs/api/SnapshotAgent.md +0 -361
- package/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +0 -256
- package/node_modules/undici/docs/docs/best-practices/migrating-from-v7-to-v8.md +0 -233
- package/node_modules/undici/docs/docs/getting-started.md +0 -281
- package/node_modules/undici/docs/docs/site.json +0 -125
- package/node_modules/undici/docs/docs/type-map.json +0 -79
- package/node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +0 -110
- package/node_modules/undici/types/dispatcher1-wrapper.d.ts +0 -7
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/core/socks5-client.js +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/core/socks5-utils.js +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/encoding/index.js +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/llhttp/constants.d.ts +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/llhttp/utils.d.ts +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/mock/snapshot-utils.js +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/util/date.js +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/util/stats.js +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/subresource-integrity/Readme.md +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/subresource-integrity/subresource-integrity.js +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/cache-interceptor.d.ts +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/client-stats.d.ts +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/mock-call-history.d.ts +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/utility.d.ts +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yanglaofish/fishtools",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Fishtools 插件式工作流工作台",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"fst": "bin/fst.js"
|
|
21
21
|
},
|
|
22
22
|
"engines": {
|
|
23
|
-
"node": ">=24.
|
|
23
|
+
"node": "^22.22.2 || >=24.0.0"
|
|
24
24
|
},
|
|
25
25
|
"files": [
|
|
26
26
|
"bin",
|
|
@@ -36,57 +36,57 @@
|
|
|
36
36
|
"require-from-string": "2.0.2",
|
|
37
37
|
"@mytools/core": "0.1.0",
|
|
38
38
|
"@mytools/pack": "0.1.0",
|
|
39
|
-
"@npmcli/arborist": "
|
|
39
|
+
"@npmcli/arborist": "9.9.2",
|
|
40
40
|
"@gar/promise-retry": "1.0.3",
|
|
41
41
|
"@isaacs/string-locale-compare": "1.1.0",
|
|
42
|
-
"@npmcli/fs": "
|
|
42
|
+
"@npmcli/fs": "5.0.0",
|
|
43
43
|
"semver": "7.7.4",
|
|
44
|
-
"@npmcli/installed-package-contents": "
|
|
45
|
-
"npm-bundled": "
|
|
46
|
-
"npm-normalize-package-bin": "
|
|
47
|
-
"@npmcli/map-workspaces": "
|
|
48
|
-
"@npmcli/name-from-folder": "
|
|
49
|
-
"@npmcli/package-json": "
|
|
50
|
-
"@npmcli/git": "
|
|
51
|
-
"@npmcli/promise-spawn": "
|
|
52
|
-
"which": "
|
|
44
|
+
"@npmcli/installed-package-contents": "4.0.0",
|
|
45
|
+
"npm-bundled": "5.0.0",
|
|
46
|
+
"npm-normalize-package-bin": "5.0.0",
|
|
47
|
+
"@npmcli/map-workspaces": "5.0.3",
|
|
48
|
+
"@npmcli/name-from-folder": "4.0.0",
|
|
49
|
+
"@npmcli/package-json": "7.0.5",
|
|
50
|
+
"@npmcli/git": "7.0.2",
|
|
51
|
+
"@npmcli/promise-spawn": "9.0.1",
|
|
52
|
+
"which": "6.0.1",
|
|
53
53
|
"isexe": "4.0.0",
|
|
54
|
-
"ini": "
|
|
54
|
+
"ini": "6.0.0",
|
|
55
55
|
"lru-cache": "11.5.3",
|
|
56
|
-
"npm-pick-manifest": "
|
|
57
|
-
"npm-install-checks": "
|
|
58
|
-
"npm-package-arg": "
|
|
59
|
-
"hosted-git-info": "
|
|
60
|
-
"proc-log": "
|
|
61
|
-
"validate-npm-package-name": "
|
|
56
|
+
"npm-pick-manifest": "11.0.3",
|
|
57
|
+
"npm-install-checks": "8.0.0",
|
|
58
|
+
"npm-package-arg": "13.0.2",
|
|
59
|
+
"hosted-git-info": "9.0.3",
|
|
60
|
+
"proc-log": "6.1.0",
|
|
61
|
+
"validate-npm-package-name": "7.0.2",
|
|
62
62
|
"glob": "13.0.6",
|
|
63
63
|
"minimatch": "10.2.6",
|
|
64
64
|
"brace-expansion": "5.0.12",
|
|
65
65
|
"balanced-match": "4.0.4",
|
|
66
66
|
"minipass": "7.1.3",
|
|
67
67
|
"path-scurry": "2.0.2",
|
|
68
|
-
"json-parse-even-better-errors": "
|
|
68
|
+
"json-parse-even-better-errors": "5.0.0",
|
|
69
69
|
"spdx-expression-parse": "4.0.0",
|
|
70
70
|
"spdx-exceptions": "2.5.0",
|
|
71
71
|
"spdx-license-ids": "3.0.24",
|
|
72
|
-
"@npmcli/metavuln-calculator": "
|
|
73
|
-
"cacache": "
|
|
72
|
+
"@npmcli/metavuln-calculator": "9.0.3",
|
|
73
|
+
"cacache": "20.0.4",
|
|
74
74
|
"fs-minipass": "3.0.3",
|
|
75
75
|
"minipass-collect": "2.0.1",
|
|
76
76
|
"minipass-flush": "1.0.7",
|
|
77
77
|
"yallist": "4.0.0",
|
|
78
78
|
"minipass-pipeline": "1.2.4",
|
|
79
79
|
"p-map": "7.0.8",
|
|
80
|
-
"ssri": "
|
|
81
|
-
"pacote": "
|
|
82
|
-
"@npmcli/run-script": "
|
|
83
|
-
"@npmcli/node-gyp": "
|
|
84
|
-
"node-gyp": "
|
|
80
|
+
"ssri": "13.0.1",
|
|
81
|
+
"pacote": "21.5.1",
|
|
82
|
+
"@npmcli/run-script": "10.0.4",
|
|
83
|
+
"@npmcli/node-gyp": "5.0.0",
|
|
84
|
+
"node-gyp": "12.4.0",
|
|
85
85
|
"env-paths": "2.2.1",
|
|
86
86
|
"exponential-backoff": "3.1.3",
|
|
87
87
|
"graceful-fs": "4.2.11",
|
|
88
|
-
"nopt": "
|
|
89
|
-
"abbrev": "
|
|
88
|
+
"nopt": "9.0.0",
|
|
89
|
+
"abbrev": "4.0.0",
|
|
90
90
|
"tar": "7.5.22",
|
|
91
91
|
"@isaacs/fs-minipass": "4.0.1",
|
|
92
92
|
"chownr": "3.0.0",
|
|
@@ -94,54 +94,52 @@
|
|
|
94
94
|
"tinyglobby": "0.2.17",
|
|
95
95
|
"fdir": "6.5.0",
|
|
96
96
|
"picomatch": "4.0.7",
|
|
97
|
-
"undici": "
|
|
98
|
-
"npm-packlist": "
|
|
99
|
-
"ignore-walk": "
|
|
100
|
-
"npm-registry-fetch": "
|
|
101
|
-
"@npmcli/redact": "
|
|
97
|
+
"undici": "6.29.0",
|
|
98
|
+
"npm-packlist": "10.0.4",
|
|
99
|
+
"ignore-walk": "8.0.0",
|
|
100
|
+
"npm-registry-fetch": "19.1.1",
|
|
101
|
+
"@npmcli/redact": "4.0.0",
|
|
102
102
|
"jsonparse": "1.3.1",
|
|
103
|
-
"make-fetch-happen": "
|
|
104
|
-
"@npmcli/agent": "
|
|
105
|
-
"agent-base": "
|
|
106
|
-
"http-proxy-agent": "
|
|
103
|
+
"make-fetch-happen": "15.0.6",
|
|
104
|
+
"@npmcli/agent": "4.0.2",
|
|
105
|
+
"agent-base": "7.1.4",
|
|
106
|
+
"http-proxy-agent": "7.0.2",
|
|
107
107
|
"debug": "4.4.3",
|
|
108
108
|
"ms": "2.1.3",
|
|
109
|
-
"proxy-agent
|
|
110
|
-
"
|
|
111
|
-
"socks-proxy-agent": "10.1.0",
|
|
109
|
+
"https-proxy-agent": "7.0.6",
|
|
110
|
+
"socks-proxy-agent": "8.0.5",
|
|
112
111
|
"socks": "2.8.10",
|
|
113
|
-
"ip-address": "10.7.
|
|
112
|
+
"ip-address": "10.7.4",
|
|
114
113
|
"smart-buffer": "4.2.0",
|
|
115
114
|
"http-cache-semantics": "4.3.0",
|
|
116
|
-
"minipass-fetch": "
|
|
115
|
+
"minipass-fetch": "5.0.2",
|
|
117
116
|
"minipass-sized": "2.0.0",
|
|
118
117
|
"iconv-lite": "0.7.3",
|
|
119
118
|
"safer-buffer": "2.1.2",
|
|
120
119
|
"negotiator": "1.1.0",
|
|
121
120
|
"content-type": "2.1.0",
|
|
122
|
-
"sigstore": "
|
|
123
|
-
"@sigstore/bundle": "
|
|
121
|
+
"sigstore": "4.1.1",
|
|
122
|
+
"@sigstore/bundle": "4.0.0",
|
|
124
123
|
"@sigstore/protobuf-specs": "0.5.2",
|
|
125
|
-
"@sigstore/core": "
|
|
126
|
-
"@sigstore/sign": "
|
|
127
|
-
"@sigstore/tuf": "
|
|
128
|
-
"tuf-js": "
|
|
129
|
-
"@tufjs/models": "
|
|
124
|
+
"@sigstore/core": "3.2.1",
|
|
125
|
+
"@sigstore/sign": "4.1.1",
|
|
126
|
+
"@sigstore/tuf": "4.0.2",
|
|
127
|
+
"tuf-js": "4.1.0",
|
|
128
|
+
"@tufjs/models": "4.1.0",
|
|
130
129
|
"@tufjs/canonical-json": "2.0.0",
|
|
131
|
-
"@sigstore/verify": "
|
|
130
|
+
"@sigstore/verify": "3.1.1",
|
|
132
131
|
"@npmcli/query": "5.0.0",
|
|
133
132
|
"postcss-selector-parser": "7.1.6",
|
|
134
133
|
"cssesc": "3.0.0",
|
|
135
134
|
"util-deprecate": "1.0.2",
|
|
136
|
-
"bin-links": "
|
|
137
|
-
"cmd-shim": "
|
|
138
|
-
"read-cmd-shim": "
|
|
139
|
-
"write-file-atomic": "
|
|
135
|
+
"bin-links": "6.0.2",
|
|
136
|
+
"cmd-shim": "8.0.0",
|
|
137
|
+
"read-cmd-shim": "6.0.0",
|
|
138
|
+
"write-file-atomic": "7.0.1",
|
|
140
139
|
"signal-exit": "4.1.0",
|
|
141
140
|
"common-ancestor-path": "2.0.0",
|
|
142
|
-
"diff": "8.0.4",
|
|
143
141
|
"json-stringify-nice": "1.1.4",
|
|
144
|
-
"parse-conflict-json": "
|
|
142
|
+
"parse-conflict-json": "5.0.1",
|
|
145
143
|
"just-diff": "6.0.2",
|
|
146
144
|
"just-diff-apply": "5.5.0",
|
|
147
145
|
"proggy": "4.0.0",
|
|
@@ -377,7 +375,6 @@
|
|
|
377
375
|
"http-proxy-agent",
|
|
378
376
|
"debug",
|
|
379
377
|
"ms",
|
|
380
|
-
"proxy-agent-negotiate",
|
|
381
378
|
"https-proxy-agent",
|
|
382
379
|
"socks-proxy-agent",
|
|
383
380
|
"socks",
|
|
@@ -410,7 +407,6 @@
|
|
|
410
407
|
"write-file-atomic",
|
|
411
408
|
"signal-exit",
|
|
412
409
|
"common-ancestor-path",
|
|
413
|
-
"diff",
|
|
414
410
|
"json-stringify-nice",
|
|
415
411
|
"parse-conflict-json",
|
|
416
412
|
"just-diff",
|
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
// Root-owned `.npm-extension.{mjs,cjs}`: an imperative `transformManifest(pkg, context)` extension point that repairs third-party manifests before Arborist reads a candidate's dependency edges.
|
|
2
|
-
// See RFC: https://github.com/npm/rfcs/pull/903
|
|
3
|
-
// This module discovers and hashes the root extension file, loads its `transformManifest` export, and applies it to a deeply isolated manifest copy, returning an extended manifest plus minimal provenance.
|
|
4
|
-
// It never mutates the input manifest or any shared cache object.
|
|
5
|
-
const { resolve, sep } = require('node:path')
|
|
6
|
-
const { readFileSync, existsSync } = require('node:fs')
|
|
7
|
-
const { pathToFileURL } = require('node:url')
|
|
8
|
-
const { isDeepStrictEqual } = require('node:util')
|
|
9
|
-
const { log } = require('proc-log')
|
|
10
|
-
const ssri = require('ssri')
|
|
11
|
-
const { EXTENSION_FIELDS } = require('./package-extensions.js')
|
|
12
|
-
|
|
13
|
-
const EXTENSION_POINT = 'transformManifest'
|
|
14
|
-
|
|
15
|
-
// The two supported module formats and their default discovery filenames.
|
|
16
|
-
const FORMATS = [
|
|
17
|
-
{ ext: 'mjs', file: '.npm-extension.mjs' },
|
|
18
|
-
{ ext: 'cjs', file: '.npm-extension.cjs' },
|
|
19
|
-
]
|
|
20
|
-
|
|
21
|
-
const err = (message, code, extra = {}) =>
|
|
22
|
-
Object.assign(new Error(message), { code, ...extra })
|
|
23
|
-
|
|
24
|
-
// Read a file's bytes, or null when it does not exist.
|
|
25
|
-
const readBytes = path => {
|
|
26
|
-
try {
|
|
27
|
-
return readFileSync(path)
|
|
28
|
-
} catch (e) {
|
|
29
|
-
if (e.code === 'ENOENT') {
|
|
30
|
-
return null
|
|
31
|
-
}
|
|
32
|
-
throw e
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Resolve which extension file to load, returning { path, format, bytes } or null when none is present.
|
|
37
|
-
// A configured `extension-file` wins over default discovery; it must resolve inside the project root and use a `.mjs` or `.cjs` extension.
|
|
38
|
-
// When both default files exist npm fails rather than choosing one implicitly.
|
|
39
|
-
const discover = (root, extensionFile) => {
|
|
40
|
-
if (extensionFile) {
|
|
41
|
-
const path = resolve(root, extensionFile)
|
|
42
|
-
if (path !== root && !path.startsWith(root + sep)) {
|
|
43
|
-
throw err(`extension-file "${extensionFile}" must resolve inside the project root`, 'ENPMEXTENSIONPATH')
|
|
44
|
-
}
|
|
45
|
-
const format = FORMATS.find(f => path.endsWith(`.${f.ext}`))?.ext
|
|
46
|
-
if (!format) {
|
|
47
|
-
throw err(`extension-file "${extensionFile}" must use a .mjs or .cjs extension`, 'ENPMEXTENSIONPATH')
|
|
48
|
-
}
|
|
49
|
-
const bytes = readBytes(path)
|
|
50
|
-
if (bytes === null) {
|
|
51
|
-
throw err(`extension-file "${extensionFile}" was not found`, 'ENPMEXTENSIONPATH')
|
|
52
|
-
}
|
|
53
|
-
return { path, format, bytes }
|
|
54
|
-
}
|
|
55
|
-
const found = FORMATS
|
|
56
|
-
.map(f => ({ path: resolve(root, f.file), format: f.ext, bytes: readBytes(resolve(root, f.file)) }))
|
|
57
|
-
.filter(f => f.bytes !== null)
|
|
58
|
-
if (found.length > 1) {
|
|
59
|
-
throw err('found both .npm-extension.mjs and .npm-extension.cjs; keep only one', 'ENPMEXTENSIONDUP')
|
|
60
|
-
}
|
|
61
|
-
return found[0] || null
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// Hash the selected extension file: a format-tagged prefix plus the raw file bytes, using npm's lockfile digest encoding.
|
|
65
|
-
// The prefix keeps `.mjs` and `.cjs` files with identical bytes distinct, and excludes any path so the digest is machine-independent.
|
|
66
|
-
const hashFile = (format, bytes) =>
|
|
67
|
-
ssri.fromData(
|
|
68
|
-
Buffer.concat([Buffer.from(`npm-extension:v1:${format}\n`), bytes]),
|
|
69
|
-
{ algorithms: ['sha512'] }
|
|
70
|
-
).toString()
|
|
71
|
-
|
|
72
|
-
class NpmExtension {
|
|
73
|
-
#cache = new Map()
|
|
74
|
-
#transform = null
|
|
75
|
-
|
|
76
|
-
constructor ({ root, extensionFile = null } = {}) {
|
|
77
|
-
this.root = root
|
|
78
|
-
this.path = null
|
|
79
|
-
this.format = null
|
|
80
|
-
this.hash = null
|
|
81
|
-
|
|
82
|
-
const selected = root ? discover(root, extensionFile) : null
|
|
83
|
-
if (!selected) {
|
|
84
|
-
this.present = false
|
|
85
|
-
return
|
|
86
|
-
}
|
|
87
|
-
this.present = true
|
|
88
|
-
this.path = selected.path
|
|
89
|
-
this.format = selected.format
|
|
90
|
-
this.hash = hashFile(selected.format, selected.bytes)
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
// Import the extension module and capture its `transformManifest` export.
|
|
94
|
-
// ESM files are loaded with dynamic import; CommonJS files with require.
|
|
95
|
-
// The export must be a function; anything else fails the install.
|
|
96
|
-
async load () {
|
|
97
|
-
if (!this.present) {
|
|
98
|
-
return
|
|
99
|
-
}
|
|
100
|
-
// Key the module load by the file hash so a changed file is reloaded rather than served stale from a module cache within one process.
|
|
101
|
-
let mod
|
|
102
|
-
if (this.format === 'mjs') {
|
|
103
|
-
mod = await import(`${pathToFileURL(this.path).href}?h=${this.hash}`)
|
|
104
|
-
} else {
|
|
105
|
-
delete require.cache[require.resolve(this.path)]
|
|
106
|
-
mod = require(this.path)
|
|
107
|
-
}
|
|
108
|
-
const transform = mod?.transformManifest ?? mod?.default?.transformManifest
|
|
109
|
-
if (typeof transform !== 'function') {
|
|
110
|
-
throw err(`.npm-extension must export a transformManifest function`, 'ENPMEXTENSIONSHAPE')
|
|
111
|
-
}
|
|
112
|
-
this.#transform = transform
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// Apply transformManifest to a candidate manifest, returning { pkg, applied } or null when nothing changed.
|
|
116
|
-
// Results are cached once per resolved package identity; consumers get a deeply isolated copy so they cannot mutate the cached effective manifest.
|
|
117
|
-
// Pass { memoize: false } to run without caching, e.g. a staleness probe over partial lockfile manifests that must not seed the cache used by full-manifest fetches.
|
|
118
|
-
apply (pkg, { memoize = true } = {}) {
|
|
119
|
-
if (!this.#transform || !pkg?.name) {
|
|
120
|
-
return null
|
|
121
|
-
}
|
|
122
|
-
const key = this.#identity(pkg)
|
|
123
|
-
let result
|
|
124
|
-
if (this.#cache.has(key)) {
|
|
125
|
-
result = this.#cache.get(key)
|
|
126
|
-
} else {
|
|
127
|
-
result = this.#run(pkg)
|
|
128
|
-
if (memoize) {
|
|
129
|
-
this.#cache.set(key, result)
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
return result && { pkg: structuredClone(result.pkg), applied: structuredClone(result.applied) }
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
// Identity key for the transform cache: package integrity when available, otherwise resolved source plus name and version.
|
|
136
|
-
#identity (pkg) {
|
|
137
|
-
return pkg._integrity || `${pkg._resolved || ''}:${pkg.name}@${pkg.version || ''}`
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
// Run transformManifest on a deeply isolated copy and validate the result.
|
|
141
|
-
// Returns { pkg, applied } when dependency or peer metadata changed, or null when it did not.
|
|
142
|
-
#run (pkg) {
|
|
143
|
-
const context = {
|
|
144
|
-
log: message => log.silly('npm-extension', message),
|
|
145
|
-
root: this.root,
|
|
146
|
-
extensionPoint: EXTENSION_POINT,
|
|
147
|
-
}
|
|
148
|
-
let returned
|
|
149
|
-
try {
|
|
150
|
-
returned = this.#transform(structuredClone(pkg), context)
|
|
151
|
-
} catch (e) {
|
|
152
|
-
throw err(
|
|
153
|
-
`.npm-extension transformManifest threw while processing ${pkg.name}@${pkg.version}: ${e.message}`,
|
|
154
|
-
'ENPMEXTENSIONTHROW', { pkgid: `${pkg.name}@${pkg.version}` })
|
|
155
|
-
}
|
|
156
|
-
if (returned && typeof returned.then === 'function') {
|
|
157
|
-
throw err(
|
|
158
|
-
`.npm-extension transformManifest must return a manifest synchronously, not a promise, for ${pkg.name}@${pkg.version}`,
|
|
159
|
-
'ENPMEXTENSIONRETURN', { pkgid: `${pkg.name}@${pkg.version}` })
|
|
160
|
-
}
|
|
161
|
-
if (!returned || typeof returned !== 'object' || Array.isArray(returned)) {
|
|
162
|
-
throw err(
|
|
163
|
-
`.npm-extension transformManifest must return a manifest object for ${pkg.name}@${pkg.version}`,
|
|
164
|
-
'ENPMEXTENSIONRETURN', { pkgid: `${pkg.name}@${pkg.version}` })
|
|
165
|
-
}
|
|
166
|
-
// Only dependency and peer fields may change; any other field the returned manifest explicitly alters is rejected.
|
|
167
|
-
// Fields the returned object omits are left untouched, so a handler may return a new object with only the fields it repairs.
|
|
168
|
-
for (const k of Object.keys(returned)) {
|
|
169
|
-
if (!EXTENSION_FIELDS.includes(k) && !isDeepStrictEqual(returned[k], pkg[k])) {
|
|
170
|
-
throw err(
|
|
171
|
-
`.npm-extension transformManifest changed unsupported field "${k}" on ${pkg.name}@${pkg.version}; only ${EXTENSION_FIELDS.join(', ')} may change`,
|
|
172
|
-
'ENPMEXTENSIONFIELD', { pkgid: `${pkg.name}@${pkg.version}`, field: k })
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
// Build the effective manifest from the normalized baseline plus the returned allowlisted fields.
|
|
176
|
-
// A field the handler omits is left as the baseline; delete individual entries by returning a field object without them.
|
|
177
|
-
const next = { ...pkg }
|
|
178
|
-
for (const field of EXTENSION_FIELDS) {
|
|
179
|
-
if (returned[field] === undefined) {
|
|
180
|
-
continue
|
|
181
|
-
}
|
|
182
|
-
this.#validateField(field, returned[field], pkg)
|
|
183
|
-
next[field] = returned[field]
|
|
184
|
-
}
|
|
185
|
-
const applied = this.#provenance(pkg, next)
|
|
186
|
-
return applied && { pkg: next, applied }
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
// Validate a returned allowlisted field and its entries, so invalid output fails with .npm-extension and package context.
|
|
190
|
-
// Dependency maps hold version strings; peerDependenciesMeta holds metadata objects.
|
|
191
|
-
#validateField (field, value, pkg) {
|
|
192
|
-
const fail = (suffix) => err(
|
|
193
|
-
`.npm-extension transformManifest set ${suffix} to an invalid value on ${pkg.name}@${pkg.version}`,
|
|
194
|
-
'ENPMEXTENSIONVALUE', { pkgid: `${pkg.name}@${pkg.version}`, field })
|
|
195
|
-
if (value === null || typeof value !== 'object' || Array.isArray(value)) {
|
|
196
|
-
throw fail(field)
|
|
197
|
-
}
|
|
198
|
-
for (const [name, entry] of Object.entries(value)) {
|
|
199
|
-
if (field === 'peerDependenciesMeta') {
|
|
200
|
-
if (entry === null || typeof entry !== 'object' || Array.isArray(entry)) {
|
|
201
|
-
throw fail(`${field}.${name}`)
|
|
202
|
-
}
|
|
203
|
-
} else if (typeof entry !== 'string') {
|
|
204
|
-
throw fail(`${field}.${name}`)
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
// Minimal provenance: the extension point plus, for each changed allowlisted field, a sorted array of affected dependency names.
|
|
210
|
-
// Returns null when nothing changed.
|
|
211
|
-
#provenance (before, after) {
|
|
212
|
-
const applied = { extensionPoint: EXTENSION_POINT }
|
|
213
|
-
let changed = false
|
|
214
|
-
for (const field of EXTENSION_FIELDS) {
|
|
215
|
-
const b = before[field] || {}
|
|
216
|
-
const a = after[field] || {}
|
|
217
|
-
const names = [...new Set([...Object.keys(b), ...Object.keys(a)])]
|
|
218
|
-
.filter(n => !isDeepStrictEqual(b[n], a[n]))
|
|
219
|
-
.sort()
|
|
220
|
-
if (names.length) {
|
|
221
|
-
applied[field] = names
|
|
222
|
-
changed = true
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
return changed ? applied : null
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
// Whether a directory contains any default .npm-extension file; a non-throwing existence check used for non-root workspace warnings.
|
|
230
|
-
const hasExtensionFile = dir => FORMATS.some(f => existsSync(resolve(dir, f.file)))
|
|
231
|
-
|
|
232
|
-
module.exports = NpmExtension
|
|
233
|
-
module.exports.NpmExtension = NpmExtension
|
|
234
|
-
module.exports.discover = discover
|
|
235
|
-
module.exports.hasExtensionFile = hasExtensionFile
|
|
236
|
-
module.exports.hashFile = hashFile
|
|
237
|
-
module.exports.EXTENSION_POINT = EXTENSION_POINT
|
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
// Root-owned `packageExtensions`: declarative repairs to third-party manifests applied before Arborist reads a candidate's dependency edges.
|
|
2
|
-
// See RFC: https://github.com/npm/rfcs/pull/889
|
|
3
|
-
// This module is pure: it parses and validates the root rule set, matches a candidate manifest by name and version, and returns an extended manifest copy plus minimal provenance.
|
|
4
|
-
// It never mutates the input manifest or any shared cache object.
|
|
5
|
-
const semver = require('semver')
|
|
6
|
-
const ssri = require('ssri')
|
|
7
|
-
const validateName = require('validate-npm-package-name')
|
|
8
|
-
|
|
9
|
-
// The only manifest fields a package extension may add or correct, because they are the fields that affect dependency and peer resolution.
|
|
10
|
-
const EXTENSION_FIELDS = [
|
|
11
|
-
'dependencies',
|
|
12
|
-
'optionalDependencies',
|
|
13
|
-
'peerDependencies',
|
|
14
|
-
'peerDependenciesMeta',
|
|
15
|
-
]
|
|
16
|
-
|
|
17
|
-
// The two normal dependency fields; a name may exist in only one of them.
|
|
18
|
-
const NORMAL_DEP_FIELDS = ['dependencies', 'optionalDependencies']
|
|
19
|
-
|
|
20
|
-
const err = (message, code, extra = {}) =>
|
|
21
|
-
Object.assign(new Error(message), { code, ...extra })
|
|
22
|
-
|
|
23
|
-
// Parse a selector key into { name, range }, where range is null for a name-only key.
|
|
24
|
-
// Selectors are a package name with an optional semver range; dist-tags, git, file, directory, url, and alias specs are rejected.
|
|
25
|
-
const parseSelector = key => {
|
|
26
|
-
if (typeof key !== 'string' || !key) {
|
|
27
|
-
throw err(`Invalid packageExtensions selector: ${JSON.stringify(key)}`, 'EEXTENSIONSELECTOR')
|
|
28
|
-
}
|
|
29
|
-
// The separator @ is the first @ after a leading scope @.
|
|
30
|
-
const at = key.indexOf('@', key.startsWith('@') ? 1 : 0)
|
|
31
|
-
const name = at === -1 ? key : key.slice(0, at)
|
|
32
|
-
const range = at === -1 ? null : key.slice(at + 1)
|
|
33
|
-
|
|
34
|
-
const { validForOldPackages, validForNewPackages } = validateName(name)
|
|
35
|
-
if (!validForOldPackages && !validForNewPackages) {
|
|
36
|
-
throw err(`Invalid package name in packageExtensions selector: "${key}"`, 'EEXTENSIONSELECTOR', { selector: key })
|
|
37
|
-
}
|
|
38
|
-
// A blank range such as "foo@" is malformed; the name-only form "foo" is how you match every version.
|
|
39
|
-
if (range !== null && range.trim() === '') {
|
|
40
|
-
throw err(
|
|
41
|
-
`Invalid packageExtensions selector: "${key}". Use the name only to match every version.`,
|
|
42
|
-
'EEXTENSIONSELECTOR', { selector: key })
|
|
43
|
-
}
|
|
44
|
-
// A versioned selector must be a valid semver range, which rejects dist-tags, git, file, url, and alias specs.
|
|
45
|
-
if (range !== null && semver.validRange(range, { loose: true }) === null) {
|
|
46
|
-
throw err(
|
|
47
|
-
`Invalid version range in packageExtensions selector: "${key}". Selectors accept a package name with an optional semver range only.`,
|
|
48
|
-
'EEXTENSIONSELECTOR', { selector: key })
|
|
49
|
-
}
|
|
50
|
-
return { name, range }
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// A selector matches a candidate manifest by its own name and version.
|
|
54
|
-
// Name-only selectors match every version, including non-semver versions.
|
|
55
|
-
// Versioned selectors only match versions that parse as semver and satisfy the range.
|
|
56
|
-
const rangeMatches = (range, version) => {
|
|
57
|
-
if (range === null) {
|
|
58
|
-
return true
|
|
59
|
-
}
|
|
60
|
-
return semver.valid(version, { loose: true }) !== null &&
|
|
61
|
-
semver.satisfies(version, range, { loose: true })
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// Validate a single selector's extension object before it is ever applied.
|
|
65
|
-
const validateExtensionObject = (key, ext) => {
|
|
66
|
-
if (ext === null || typeof ext !== 'object' || Array.isArray(ext)) {
|
|
67
|
-
throw err(`packageExtensions["${key}"] must be an object`, 'EEXTENSIONVALUE', { selector: key })
|
|
68
|
-
}
|
|
69
|
-
for (const field of Object.keys(ext)) {
|
|
70
|
-
if (!EXTENSION_FIELDS.includes(field)) {
|
|
71
|
-
throw err(
|
|
72
|
-
`packageExtensions["${key}"] has unsupported field "${field}". Supported fields: ${EXTENSION_FIELDS.join(', ')}.`,
|
|
73
|
-
'EEXTENSIONFIELD', { selector: key, field })
|
|
74
|
-
}
|
|
75
|
-
const val = ext[field]
|
|
76
|
-
if (val === null || typeof val !== 'object' || Array.isArray(val)) {
|
|
77
|
-
throw err(`packageExtensions["${key}"].${field} must be an object`, 'EEXTENSIONVALUE', { selector: key, field })
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
// Deletion is not supported in v1, so a null, false, or "-" value is an error.
|
|
81
|
-
for (const field of [...NORMAL_DEP_FIELDS, 'peerDependencies']) {
|
|
82
|
-
for (const [name, spec] of Object.entries(ext[field] || {})) {
|
|
83
|
-
if (spec === null || spec === false || spec === '-') {
|
|
84
|
-
throw err(
|
|
85
|
-
`packageExtensions["${key}"].${field}.${name} attempts deletion, which is not supported.`,
|
|
86
|
-
'EEXTENSIONDELETE', { selector: key, field, name })
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
// Each peerDependenciesMeta entry must be a non-null metadata object, never a deletion sentinel or primitive.
|
|
91
|
-
for (const [name, meta] of Object.entries(ext.peerDependenciesMeta || {})) {
|
|
92
|
-
if (meta === null || typeof meta !== 'object' || Array.isArray(meta)) {
|
|
93
|
-
throw err(
|
|
94
|
-
`packageExtensions["${key}"].peerDependenciesMeta.${name} must be an object`,
|
|
95
|
-
'EEXTENSIONVALUE', { selector: key, field: 'peerDependenciesMeta', name })
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// Apply a matched extension to a manifest, returning { pkg, applied } where pkg is a copy with extended fields and applied is minimal provenance.
|
|
101
|
-
// The input manifest is never mutated.
|
|
102
|
-
const applyExtension = (pkg, { key, ext }) => {
|
|
103
|
-
const applied = { selector: key }
|
|
104
|
-
|
|
105
|
-
// Clone only the fields we may touch; the rest of the manifest is shared by reference since it is never mutated.
|
|
106
|
-
const next = { ...pkg }
|
|
107
|
-
for (const field of EXTENSION_FIELDS) {
|
|
108
|
-
if (pkg[field] && typeof pkg[field] === 'object') {
|
|
109
|
-
next[field] = field === 'peerDependenciesMeta'
|
|
110
|
-
? Object.fromEntries(Object.entries(pkg[field]).map(([n, m]) => [n, { ...m }]))
|
|
111
|
-
: { ...pkg[field] }
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// dependencies and optionalDependencies add missing names only.
|
|
116
|
-
// A name already declared in either normal dependency field is an error, which also prevents moving a name between the fields.
|
|
117
|
-
for (const field of NORMAL_DEP_FIELDS) {
|
|
118
|
-
const adds = ext[field]
|
|
119
|
-
if (!adds) {
|
|
120
|
-
continue
|
|
121
|
-
}
|
|
122
|
-
for (const [name, spec] of Object.entries(adds)) {
|
|
123
|
-
for (const existingField of NORMAL_DEP_FIELDS) {
|
|
124
|
-
if (next[existingField] && name in next[existingField]) {
|
|
125
|
-
throw err(
|
|
126
|
-
`packageExtensions["${key}"].${field}.${name} conflicts with the package's existing ${existingField}.${name}. Use overrides to change a dependency version; packageExtensions only adds missing dependencies.`,
|
|
127
|
-
'EEXTENSIONDUPDEP', { selector: key, field, name, existingField })
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
next[field] = next[field] || {}
|
|
131
|
-
next[field][name] = spec
|
|
132
|
-
;(applied[field] = applied[field] || []).push(name)
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
// peerDependencies shallow-merges by peer name, and the extension value replaces an existing range.
|
|
137
|
-
if (ext.peerDependencies) {
|
|
138
|
-
next.peerDependencies = next.peerDependencies || {}
|
|
139
|
-
for (const [name, spec] of Object.entries(ext.peerDependencies)) {
|
|
140
|
-
next.peerDependencies[name] = spec
|
|
141
|
-
;(applied.peerDependencies = applied.peerDependencies || []).push(name)
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
// peerDependenciesMeta merges by peer name, then shallow-merges each meta object so an extension can add optional without dropping other meta keys.
|
|
146
|
-
if (ext.peerDependenciesMeta) {
|
|
147
|
-
next.peerDependenciesMeta = next.peerDependenciesMeta || {}
|
|
148
|
-
for (const [name, meta] of Object.entries(ext.peerDependenciesMeta)) {
|
|
149
|
-
next.peerDependenciesMeta[name] = { ...next.peerDependenciesMeta[name], ...meta }
|
|
150
|
-
;(applied.peerDependenciesMeta = applied.peerDependenciesMeta || []).push(name)
|
|
151
|
-
// Every peerDependenciesMeta entry an extension adds must correspond to a peerDependencies entry present after extension application.
|
|
152
|
-
if (!next.peerDependencies || !(name in next.peerDependencies)) {
|
|
153
|
-
throw err(
|
|
154
|
-
`packageExtensions["${key}"].peerDependenciesMeta.${name} has no corresponding peerDependencies.${name} after extension application.`,
|
|
155
|
-
'EEXTENSIONORPHANMETA', { selector: key, name })
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
return { pkg: next, applied }
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
// Deterministic JSON for hashing: keys sorted lexicographically at every level, string and number values preserved exactly, no insignificant whitespace.
|
|
164
|
-
const canonicalStringify = val => {
|
|
165
|
-
if (Array.isArray(val)) {
|
|
166
|
-
return `[${val.map(canonicalStringify).join(',')}]`
|
|
167
|
-
}
|
|
168
|
-
if (val && typeof val === 'object') {
|
|
169
|
-
return `{${Object.keys(val).sort()
|
|
170
|
-
.map(k => `${JSON.stringify(k)}:${canonicalStringify(val[k])}`)
|
|
171
|
-
.join(',')}}`
|
|
172
|
-
}
|
|
173
|
-
return JSON.stringify(val)
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
// Hash the canonical form of the root packageExtensions object using npm's existing lockfile digest encoding.
|
|
177
|
-
const canonicalHash = packageExtensions =>
|
|
178
|
-
ssri.fromData(canonicalStringify(packageExtensions), { algorithms: ['sha512'] }).toString()
|
|
179
|
-
|
|
180
|
-
class PackageExtensions {
|
|
181
|
-
constructor (raw) {
|
|
182
|
-
this.raw = raw
|
|
183
|
-
this.present = raw !== undefined
|
|
184
|
-
this.selectors = []
|
|
185
|
-
this.hash = null
|
|
186
|
-
|
|
187
|
-
if (!this.present) {
|
|
188
|
-
return
|
|
189
|
-
}
|
|
190
|
-
if (raw === null || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
191
|
-
throw err('packageExtensions must be an object', 'EEXTENSIONROOT')
|
|
192
|
-
}
|
|
193
|
-
for (const [key, ext] of Object.entries(raw)) {
|
|
194
|
-
const { name, range } = parseSelector(key)
|
|
195
|
-
validateExtensionObject(key, ext)
|
|
196
|
-
this.selectors.push({ key, name, range, ext })
|
|
197
|
-
}
|
|
198
|
-
this.hash = canonicalHash(raw)
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
// Non-throwing check used for warnings: whether any selector matches the candidate.
|
|
202
|
-
wouldMatch (name, version) {
|
|
203
|
-
return this.selectors.some(s => s.name === name && rangeMatches(s.range, version))
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
// Return the single selector matching a candidate manifest, or null.
|
|
207
|
-
// Throws EEXTENSIONCONFLICT when more than one selector matches the same candidate.
|
|
208
|
-
match (name, version) {
|
|
209
|
-
const matches = this.selectors.filter(s => s.name === name && rangeMatches(s.range, version))
|
|
210
|
-
if (matches.length > 1) {
|
|
211
|
-
const keys = matches.map(s => `"${s.key}"`).join(', ')
|
|
212
|
-
throw err(
|
|
213
|
-
`Multiple packageExtensions selectors match ${name}@${version}: ${keys}. Narrow or remove one of the overlapping rules.`,
|
|
214
|
-
'EEXTENSIONCONFLICT', { name, version, selectors: matches.map(s => s.key) })
|
|
215
|
-
}
|
|
216
|
-
return matches[0] || null
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
// Apply the matching extension to a manifest copy, returning { pkg, applied } or null when no selector matches.
|
|
220
|
-
// Throws on selector conflict or invalid merge.
|
|
221
|
-
apply (pkg) {
|
|
222
|
-
if (!this.present || !this.selectors.length || !pkg || !pkg.name) {
|
|
223
|
-
return null
|
|
224
|
-
}
|
|
225
|
-
const sel = this.match(pkg.name, pkg.version)
|
|
226
|
-
return sel ? applyExtension(pkg, sel) : null
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
module.exports = PackageExtensions
|
|
231
|
-
module.exports.PackageExtensions = PackageExtensions
|
|
232
|
-
module.exports.parseSelector = parseSelector
|
|
233
|
-
module.exports.rangeMatches = rangeMatches
|
|
234
|
-
module.exports.canonicalHash = canonicalHash
|
|
235
|
-
module.exports.canonicalStringify = canonicalStringify
|
|
236
|
-
module.exports.EXTENSION_FIELDS = EXTENSION_FIELDS
|