@yanglaofish/fishtools 0.5.2 → 0.5.3
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 +23 -11
- package/manual/README.md +23 -11
- package/manual/docs/deployment.md +3 -3
- package/manual/docs/examples/action-plugin/package.json +1 -1
- package/manual/docs/plugin-development.md +15 -4
- package/manual/docs/releases.md +24 -0
- 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 +55 -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 +30 -0
- package/manual/packages/core/README.md +2 -0
- package/manual/packages/core/package.json +1 -1
- package/manual/packages/core/src/application.js +100 -51
- 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 +42 -0
- package/manual/packages/core/src/version.js +1 -1
- package/manual/packages/fst-cli/README.md +4 -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 +8 -3
- package/manual/packages/fst-cli/src/terminal/navigation.js +2 -0
- package/manual/packages/fst-cli/src/terminal/presentation.js +4 -3
- package/manual/packages/fst-cli/src/terminal/run-feed.js +69 -13
- package/manual/packages/fst-cli/src/terminal/run-presentation.js +55 -12
- package/manual/packages/fst-cli/src/terminal/run-viewer.js +26 -10
- package/manual/packages/fst-cli/src/terminal/session-history.js +82 -0
- package/manual/packages/fst-cli/src/terminal/session.js +119 -40
- package/manual/packages/fst-cli/src/terminal/view.js +31 -8
- package/manual/packages/fst-cli/src/terminal/workflow-menu.js +14 -9
- package/manual/packages/fst-devtools/package.json +2 -2
- package/manual/packages/fst-devtools/src/plugin-tools.js +1 -1
- 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 +4 -0
- package/manual/packages/fst-platform/package.json +3 -3
- package/manual/packages/fst-platform/src/process.js +4 -1
- package/manual/packages/fst-platform/src/shell.js +46 -1
- package/manual/packages/fst-plugin/package.json +1 -1
- package/manual/packages/fst-plugin/src/host.js +31 -23
- 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 +2 -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 +7 -4
- package/manual/packages/fst-workspace/src/workflows.js +5 -3
- 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/plugins/commands/package.json +1 -1
- package/node_modules/@mytools/commands/package.json +1 -1
- package/node_modules/@mytools/core/README.md +2 -0
- package/node_modules/@mytools/core/package.json +1 -1
- package/node_modules/@mytools/core/src/application.js +100 -51
- 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 +42 -0
- package/node_modules/@mytools/core/src/version.js +1 -1
- package/node_modules/@mytools/fst-cli/README.md +4 -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 +8 -3
- package/node_modules/@mytools/fst-cli/src/terminal/navigation.js +2 -0
- package/node_modules/@mytools/fst-cli/src/terminal/presentation.js +4 -3
- package/node_modules/@mytools/fst-cli/src/terminal/run-feed.js +69 -13
- package/node_modules/@mytools/fst-cli/src/terminal/run-presentation.js +55 -12
- package/node_modules/@mytools/fst-cli/src/terminal/run-viewer.js +26 -10
- package/node_modules/@mytools/fst-cli/src/terminal/session-history.js +82 -0
- package/node_modules/@mytools/fst-cli/src/terminal/session.js +119 -40
- package/node_modules/@mytools/fst-cli/src/terminal/view.js +31 -8
- package/node_modules/@mytools/fst-cli/src/terminal/workflow-menu.js +14 -9
- package/node_modules/@mytools/fst-devtools/package.json +2 -2
- package/node_modules/@mytools/fst-devtools/src/plugin-tools.js +1 -1
- 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 +4 -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 +3 -3
- package/node_modules/@mytools/fst-platform/src/process.js +4 -1
- package/node_modules/@mytools/fst-platform/src/shell.js +46 -1
- package/node_modules/@mytools/fst-plugin/package.json +1 -1
- package/node_modules/@mytools/fst-plugin/src/host.js +31 -23
- 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 +2 -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 +7 -4
- package/node_modules/@mytools/fst-workspace/src/workflows.js +5 -3
- 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/web/public/THIRD_PARTY_NOTICES.txt +953 -963
- 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
|
@@ -2,15 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
const { Transform } = require('node:stream')
|
|
4
4
|
const zlib = require('node:zlib')
|
|
5
|
-
const { redirectStatusSet, referrerPolicyTokens, badPortsSet } = require('./constants')
|
|
5
|
+
const { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require('./constants')
|
|
6
6
|
const { getGlobalOrigin } = require('./global')
|
|
7
|
-
const { collectAnHTTPQuotedString, parseMIMEType } = require('./data-url')
|
|
7
|
+
const { collectASequenceOfCodePoints, collectAnHTTPQuotedString, removeChars, parseMIMEType } = require('./data-url')
|
|
8
8
|
const { performance } = require('node:perf_hooks')
|
|
9
|
-
const { isValidHTTPToken, normalizedMethodRecordsBase } = require('../../core/util')
|
|
9
|
+
const { isBlobLike, ReadableStreamFrom, isValidHTTPToken, normalizedMethodRecordsBase } = require('../../core/util')
|
|
10
10
|
const assert = require('node:assert')
|
|
11
11
|
const { isUint8Array } = require('node:util/types')
|
|
12
|
-
const { webidl } = require('
|
|
13
|
-
|
|
12
|
+
const { webidl } = require('./webidl')
|
|
13
|
+
|
|
14
|
+
let supportedHashes = []
|
|
15
|
+
|
|
16
|
+
// https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable
|
|
17
|
+
/** @type {import('crypto')} */
|
|
18
|
+
let crypto
|
|
19
|
+
try {
|
|
20
|
+
crypto = require('node:crypto')
|
|
21
|
+
const possibleRelevantHashes = ['sha256', 'sha384', 'sha512']
|
|
22
|
+
supportedHashes = crypto.getHashes().filter((hash) => possibleRelevantHashes.includes(hash))
|
|
23
|
+
/* c8 ignore next 3 */
|
|
24
|
+
} catch {
|
|
25
|
+
|
|
26
|
+
}
|
|
14
27
|
|
|
15
28
|
function responseURL (response) {
|
|
16
29
|
// https://fetch.spec.whatwg.org/#responses
|
|
@@ -157,24 +170,29 @@ function isValidHeaderValue (potentialValue) {
|
|
|
157
170
|
) === false
|
|
158
171
|
}
|
|
159
172
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
// 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy` and response’s header list.
|
|
166
|
-
const policyHeader = (actualResponse.headersList.get('referrer-policy', true) ?? '').split(',')
|
|
173
|
+
// https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect
|
|
174
|
+
function setRequestReferrerPolicyOnRedirect (request, actualResponse) {
|
|
175
|
+
// Given a request request and a response actualResponse, this algorithm
|
|
176
|
+
// updates request’s referrer policy according to the Referrer-Policy
|
|
177
|
+
// header (if any) in actualResponse.
|
|
167
178
|
|
|
168
|
-
//
|
|
169
|
-
|
|
179
|
+
// 1. Let policy be the result of executing § 8.1 Parse a referrer policy
|
|
180
|
+
// from a Referrer-Policy header on actualResponse.
|
|
170
181
|
|
|
182
|
+
// 8.1 Parse a referrer policy from a Referrer-Policy header
|
|
183
|
+
// 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy` and response’s header list.
|
|
184
|
+
const { headersList } = actualResponse
|
|
185
|
+
// 2. Let policy be the empty string.
|
|
171
186
|
// 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty string, then set policy to token.
|
|
187
|
+
// 4. Return policy.
|
|
188
|
+
const policyHeader = (headersList.get('referrer-policy', true) ?? '').split(',')
|
|
172
189
|
|
|
173
190
|
// Note: As the referrer-policy can contain multiple policies
|
|
174
191
|
// separated by comma, we need to loop through all of them
|
|
175
192
|
// and pick the first valid one.
|
|
176
193
|
// Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#specify_a_fallback_policy
|
|
177
|
-
|
|
194
|
+
let policy = ''
|
|
195
|
+
if (policyHeader.length > 0) {
|
|
178
196
|
// The right-most policy takes precedence.
|
|
179
197
|
// The left-most policy is the fallback.
|
|
180
198
|
for (let i = policyHeader.length; i !== 0; i--) {
|
|
@@ -186,23 +204,6 @@ function parseReferrerPolicy (actualResponse) {
|
|
|
186
204
|
}
|
|
187
205
|
}
|
|
188
206
|
|
|
189
|
-
// 4. Return policy.
|
|
190
|
-
return policy
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
/**
|
|
194
|
-
* Given a request request and a response actualResponse, this algorithm
|
|
195
|
-
* updates request’s referrer policy according to the Referrer-Policy
|
|
196
|
-
* header (if any) in actualResponse.
|
|
197
|
-
* @see https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect
|
|
198
|
-
* @param {import('./request').Request} request
|
|
199
|
-
* @param {import('./response').Response} actualResponse
|
|
200
|
-
*/
|
|
201
|
-
function setRequestReferrerPolicyOnRedirect (request, actualResponse) {
|
|
202
|
-
// 1. Let policy be the result of executing § 8.1 Parse a referrer policy
|
|
203
|
-
// from a Referrer-Policy header on actualResponse.
|
|
204
|
-
const policy = parseReferrerPolicy(actualResponse)
|
|
205
|
-
|
|
206
207
|
// 2. If policy is not the empty string, then set request’s referrer policy to policy.
|
|
207
208
|
if (policy !== '') {
|
|
208
209
|
request.referrerPolicy = policy
|
|
@@ -227,19 +228,14 @@ function TAOCheck () {
|
|
|
227
228
|
return 'success'
|
|
228
229
|
}
|
|
229
230
|
|
|
230
|
-
// https://w3c.github.io/webappsec-fetch-metadata/#abstract-opdef-append-the-fetch-metadata-headers-for-a-request
|
|
231
231
|
function appendFetchMetadata (httpRequest) {
|
|
232
|
-
// 1. If r’s url is not a potentially trustworthy URL, return.
|
|
233
|
-
if (!isURLPotentiallyTrustworthy(requestCurrentURL(httpRequest))) {
|
|
234
|
-
return
|
|
235
|
-
}
|
|
236
|
-
|
|
237
232
|
// https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header
|
|
238
233
|
// TODO
|
|
239
234
|
|
|
240
235
|
// https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header
|
|
241
236
|
|
|
242
237
|
// 1. Assert: r’s url is a potentially trustworthy URL.
|
|
238
|
+
// TODO
|
|
243
239
|
|
|
244
240
|
// 2. Let header be a Structured Header whose value is a token.
|
|
245
241
|
let header = null
|
|
@@ -378,16 +374,8 @@ function clonePolicyContainer (policyContainer) {
|
|
|
378
374
|
}
|
|
379
375
|
}
|
|
380
376
|
|
|
381
|
-
|
|
382
|
-
* Determine request’s Referrer
|
|
383
|
-
*
|
|
384
|
-
* @see https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer
|
|
385
|
-
*/
|
|
377
|
+
// https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer
|
|
386
378
|
function determineRequestsReferrer (request) {
|
|
387
|
-
// Given a request request, we can determine the correct referrer information
|
|
388
|
-
// to send by examining its referrer policy as detailed in the following
|
|
389
|
-
// steps, which return either no referrer or a URL:
|
|
390
|
-
|
|
391
379
|
// 1. Let policy be request's referrer policy.
|
|
392
380
|
const policy = request.referrerPolicy
|
|
393
381
|
|
|
@@ -399,8 +387,6 @@ function determineRequestsReferrer (request) {
|
|
|
399
387
|
let referrerSource = null
|
|
400
388
|
|
|
401
389
|
// 3. Switch on request’s referrer:
|
|
402
|
-
|
|
403
|
-
// "client"
|
|
404
390
|
if (request.referrer === 'client') {
|
|
405
391
|
// Note: node isn't a browser and doesn't implement document/iframes,
|
|
406
392
|
// so we bypass this step and replace it with our own.
|
|
@@ -411,10 +397,9 @@ function determineRequestsReferrer (request) {
|
|
|
411
397
|
return 'no-referrer'
|
|
412
398
|
}
|
|
413
399
|
|
|
414
|
-
//
|
|
400
|
+
// note: we need to clone it as it's mutated
|
|
415
401
|
referrerSource = new URL(globalOrigin)
|
|
416
|
-
|
|
417
|
-
} else if (webidl.is.URL(request.referrer)) {
|
|
402
|
+
} else if (request.referrer instanceof URL) {
|
|
418
403
|
// Let referrerSource be request’s referrer.
|
|
419
404
|
referrerSource = request.referrer
|
|
420
405
|
}
|
|
@@ -433,37 +418,18 @@ function determineRequestsReferrer (request) {
|
|
|
433
418
|
referrerURL = referrerOrigin
|
|
434
419
|
}
|
|
435
420
|
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
// origin, modify its host, replace it with an empty string, etc.
|
|
421
|
+
const areSameOrigin = sameOrigin(request, referrerURL)
|
|
422
|
+
const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) &&
|
|
423
|
+
!isURLPotentiallyTrustworthy(request.url)
|
|
440
424
|
|
|
441
425
|
// 8. Execute the switch statements corresponding to the value of policy:
|
|
442
426
|
switch (policy) {
|
|
443
|
-
case '
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
return referrerOrigin
|
|
450
|
-
}
|
|
451
|
-
return stripURLForReferrer(referrerSource, true)
|
|
452
|
-
case 'unsafe-url':
|
|
453
|
-
// Return referrerURL.
|
|
454
|
-
return referrerURL
|
|
455
|
-
case 'strict-origin': {
|
|
456
|
-
const currentURL = requestCurrentURL(request)
|
|
457
|
-
|
|
458
|
-
// 1. If referrerURL is a potentially trustworthy URL and request’s
|
|
459
|
-
// current URL is not a potentially trustworthy URL, then return no
|
|
460
|
-
// referrer.
|
|
461
|
-
if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {
|
|
462
|
-
return 'no-referrer'
|
|
463
|
-
}
|
|
464
|
-
// 2. Return referrerOrigin
|
|
465
|
-
return referrerOrigin
|
|
466
|
-
}
|
|
427
|
+
case 'origin': return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true)
|
|
428
|
+
case 'unsafe-url': return referrerURL
|
|
429
|
+
case 'same-origin':
|
|
430
|
+
return areSameOrigin ? referrerOrigin : 'no-referrer'
|
|
431
|
+
case 'origin-when-cross-origin':
|
|
432
|
+
return areSameOrigin ? referrerURL : referrerOrigin
|
|
467
433
|
case 'strict-origin-when-cross-origin': {
|
|
468
434
|
const currentURL = requestCurrentURL(request)
|
|
469
435
|
|
|
@@ -483,58 +449,39 @@ function determineRequestsReferrer (request) {
|
|
|
483
449
|
// 3. Return referrerOrigin.
|
|
484
450
|
return referrerOrigin
|
|
485
451
|
}
|
|
486
|
-
case '
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
const currentURL = requestCurrentURL(request)
|
|
504
|
-
|
|
505
|
-
// 1. If referrerURL is a potentially trustworthy URL and request’s
|
|
506
|
-
// current URL is not a potentially trustworthy URL, then return no
|
|
507
|
-
// referrer.
|
|
508
|
-
if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {
|
|
509
|
-
return 'no-referrer'
|
|
510
|
-
}
|
|
511
|
-
// 2. Return referrerURL.
|
|
512
|
-
return referrerURL
|
|
513
|
-
}
|
|
452
|
+
case 'strict-origin': // eslint-disable-line
|
|
453
|
+
/**
|
|
454
|
+
* 1. If referrerURL is a potentially trustworthy URL and
|
|
455
|
+
* request’s current URL is not a potentially trustworthy URL,
|
|
456
|
+
* then return no referrer.
|
|
457
|
+
* 2. Return referrerOrigin
|
|
458
|
+
*/
|
|
459
|
+
case 'no-referrer-when-downgrade': // eslint-disable-line
|
|
460
|
+
/**
|
|
461
|
+
* 1. If referrerURL is a potentially trustworthy URL and
|
|
462
|
+
* request’s current URL is not a potentially trustworthy URL,
|
|
463
|
+
* then return no referrer.
|
|
464
|
+
* 2. Return referrerOrigin
|
|
465
|
+
*/
|
|
466
|
+
|
|
467
|
+
default: // eslint-disable-line
|
|
468
|
+
return isNonPotentiallyTrustWorthy ? 'no-referrer' : referrerOrigin
|
|
514
469
|
}
|
|
515
470
|
}
|
|
516
471
|
|
|
517
472
|
/**
|
|
518
|
-
* Certain portions of URLs must not be included when sending a URL as the
|
|
519
|
-
* value of a `Referer` header: a URLs fragment, username, and password
|
|
520
|
-
* components must be stripped from the URL before it’s sent out. This
|
|
521
|
-
* algorithm accepts a origin-only flag, which defaults to false. If set to
|
|
522
|
-
* true, the algorithm will additionally remove the URL’s path and query
|
|
523
|
-
* components, leaving only the scheme, host, and port.
|
|
524
|
-
*
|
|
525
473
|
* @see https://w3c.github.io/webappsec-referrer-policy/#strip-url
|
|
526
474
|
* @param {URL} url
|
|
527
|
-
* @param {boolean}
|
|
475
|
+
* @param {boolean|undefined} originOnly
|
|
528
476
|
*/
|
|
529
|
-
function stripURLForReferrer (url, originOnly
|
|
477
|
+
function stripURLForReferrer (url, originOnly) {
|
|
530
478
|
// 1. Assert: url is a URL.
|
|
531
|
-
assert(
|
|
479
|
+
assert(url instanceof URL)
|
|
532
480
|
|
|
533
|
-
// Note: Create a new URL instance to avoid mutating the original URL.
|
|
534
481
|
url = new URL(url)
|
|
535
482
|
|
|
536
483
|
// 2. If url’s scheme is a local scheme, then return no referrer.
|
|
537
|
-
if (
|
|
484
|
+
if (url.protocol === 'file:' || url.protocol === 'about:' || url.protocol === 'blank:') {
|
|
538
485
|
return 'no-referrer'
|
|
539
486
|
}
|
|
540
487
|
|
|
@@ -548,7 +495,7 @@ function stripURLForReferrer (url, originOnly = false) {
|
|
|
548
495
|
url.hash = ''
|
|
549
496
|
|
|
550
497
|
// 6. If the origin-only flag is true, then:
|
|
551
|
-
if (originOnly
|
|
498
|
+
if (originOnly) {
|
|
552
499
|
// 1. Set url’s path to « the empty string ».
|
|
553
500
|
url.pathname = ''
|
|
554
501
|
|
|
@@ -560,128 +507,245 @@ function stripURLForReferrer (url, originOnly = false) {
|
|
|
560
507
|
return url
|
|
561
508
|
}
|
|
562
509
|
|
|
563
|
-
|
|
564
|
-
|
|
510
|
+
function isURLPotentiallyTrustworthy (url) {
|
|
511
|
+
if (!(url instanceof URL)) {
|
|
512
|
+
return false
|
|
513
|
+
}
|
|
565
514
|
|
|
566
|
-
|
|
567
|
-
.
|
|
515
|
+
// If child of about, return true
|
|
516
|
+
if (url.href === 'about:blank' || url.href === 'about:srcdoc') {
|
|
517
|
+
return true
|
|
518
|
+
}
|
|
568
519
|
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
//
|
|
579
|
-
if (origin
|
|
580
|
-
|
|
520
|
+
// If scheme is data, return true
|
|
521
|
+
if (url.protocol === 'data:') return true
|
|
522
|
+
|
|
523
|
+
// If file, return true
|
|
524
|
+
if (url.protocol === 'file:') return true
|
|
525
|
+
|
|
526
|
+
return isOriginPotentiallyTrustworthy(url.origin)
|
|
527
|
+
|
|
528
|
+
function isOriginPotentiallyTrustworthy (origin) {
|
|
529
|
+
// If origin is explicitly null, return false
|
|
530
|
+
if (origin == null || origin === 'null') return false
|
|
531
|
+
|
|
532
|
+
const originAsURL = new URL(origin)
|
|
533
|
+
|
|
534
|
+
// If secure, return true
|
|
535
|
+
if (originAsURL.protocol === 'https:' || originAsURL.protocol === 'wss:') {
|
|
536
|
+
return true
|
|
581
537
|
}
|
|
582
|
-
return isPotentiallyTrustworthyIPv6(origin)
|
|
583
|
-
}
|
|
584
538
|
|
|
585
|
-
|
|
586
|
-
|
|
539
|
+
// If localhost or variants, return true
|
|
540
|
+
if (/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(originAsURL.hostname) ||
|
|
541
|
+
(originAsURL.hostname === 'localhost' || originAsURL.hostname.includes('localhost.')) ||
|
|
542
|
+
(originAsURL.hostname.endsWith('.localhost'))) {
|
|
543
|
+
return true
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
// If any other, return false
|
|
547
|
+
return false
|
|
548
|
+
}
|
|
587
549
|
}
|
|
588
550
|
|
|
589
551
|
/**
|
|
590
|
-
*
|
|
591
|
-
*
|
|
592
|
-
*
|
|
593
|
-
* Return value `true` means `Potentially Trustworthy`.
|
|
594
|
-
* Return value `false` means `Not Trustworthy`.
|
|
595
|
-
*
|
|
596
|
-
* @see https://w3c.github.io/webappsec-secure-contexts/#is-origin-trustworthy
|
|
597
|
-
* @param {string} origin
|
|
598
|
-
* @returns {boolean}
|
|
552
|
+
* @see https://w3c.github.io/webappsec-subresource-integrity/#does-response-match-metadatalist
|
|
553
|
+
* @param {Uint8Array} bytes
|
|
554
|
+
* @param {string} metadataList
|
|
599
555
|
*/
|
|
600
|
-
function
|
|
601
|
-
//
|
|
602
|
-
|
|
603
|
-
|
|
556
|
+
function bytesMatch (bytes, metadataList) {
|
|
557
|
+
// If node is not built with OpenSSL support, we cannot check
|
|
558
|
+
// a request's integrity, so allow it by default (the spec will
|
|
559
|
+
// allow requests if an invalid hash is given, as precedence).
|
|
560
|
+
/* istanbul ignore if: only if node is built with --without-ssl */
|
|
561
|
+
if (crypto === undefined) {
|
|
562
|
+
return true
|
|
604
563
|
}
|
|
605
564
|
|
|
606
|
-
//
|
|
607
|
-
|
|
565
|
+
// 1. Let parsedMetadata be the result of parsing metadataList.
|
|
566
|
+
const parsedMetadata = parseMetadata(metadataList)
|
|
608
567
|
|
|
609
|
-
//
|
|
610
|
-
|
|
611
|
-
if (origin.protocol === 'https:' || origin.protocol === 'wss:') {
|
|
568
|
+
// 2. If parsedMetadata is no metadata, return true.
|
|
569
|
+
if (parsedMetadata === 'no metadata') {
|
|
612
570
|
return true
|
|
613
571
|
}
|
|
614
572
|
|
|
615
|
-
//
|
|
616
|
-
//
|
|
617
|
-
|
|
573
|
+
// 3. If response is not eligible for integrity validation, return false.
|
|
574
|
+
// TODO
|
|
575
|
+
|
|
576
|
+
// 4. If parsedMetadata is the empty set, return true.
|
|
577
|
+
if (parsedMetadata.length === 0) {
|
|
618
578
|
return true
|
|
619
579
|
}
|
|
620
580
|
|
|
621
|
-
// 5.
|
|
622
|
-
//
|
|
581
|
+
// 5. Let metadata be the result of getting the strongest
|
|
582
|
+
// metadata from parsedMetadata.
|
|
583
|
+
const strongest = getStrongestMetadata(parsedMetadata)
|
|
584
|
+
const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest)
|
|
623
585
|
|
|
624
|
-
//
|
|
625
|
-
|
|
626
|
-
|
|
586
|
+
// 6. For each item in metadata:
|
|
587
|
+
for (const item of metadata) {
|
|
588
|
+
// 1. Let algorithm be the alg component of item.
|
|
589
|
+
const algorithm = item.algo
|
|
590
|
+
|
|
591
|
+
// 2. Let expectedValue be the val component of item.
|
|
592
|
+
const expectedValue = item.hash
|
|
593
|
+
|
|
594
|
+
// See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e
|
|
595
|
+
// "be liberal with padding". This is annoying, and it's not even in the spec.
|
|
596
|
+
|
|
597
|
+
// 3. Let actualValue be the result of applying algorithm to bytes.
|
|
598
|
+
let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64')
|
|
599
|
+
|
|
600
|
+
if (actualValue[actualValue.length - 1] === '=') {
|
|
601
|
+
if (actualValue[actualValue.length - 2] === '=') {
|
|
602
|
+
actualValue = actualValue.slice(0, -2)
|
|
603
|
+
} else {
|
|
604
|
+
actualValue = actualValue.slice(0, -1)
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
// 4. If actualValue is a case-sensitive match for expectedValue,
|
|
609
|
+
// return true.
|
|
610
|
+
if (compareBase64Mixed(actualValue, expectedValue)) {
|
|
611
|
+
return true
|
|
612
|
+
}
|
|
627
613
|
}
|
|
628
614
|
|
|
629
|
-
//
|
|
630
|
-
|
|
631
|
-
|
|
615
|
+
// 7. Return false.
|
|
616
|
+
return false
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
// https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options
|
|
620
|
+
// https://www.w3.org/TR/CSP2/#source-list-syntax
|
|
621
|
+
// https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1
|
|
622
|
+
const parseHashWithOptions = /(?<algo>sha256|sha384|sha512)-((?<hash>[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i
|
|
623
|
+
|
|
624
|
+
/**
|
|
625
|
+
* @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata
|
|
626
|
+
* @param {string} metadata
|
|
627
|
+
*/
|
|
628
|
+
function parseMetadata (metadata) {
|
|
629
|
+
// 1. Let result be the empty set.
|
|
630
|
+
/** @type {{ algo: string, hash: string }[]} */
|
|
631
|
+
const result = []
|
|
632
|
+
|
|
633
|
+
// 2. Let empty be equal to true.
|
|
634
|
+
let empty = true
|
|
635
|
+
|
|
636
|
+
// 3. For each token returned by splitting metadata on spaces:
|
|
637
|
+
for (const token of metadata.split(' ')) {
|
|
638
|
+
// 1. Set empty to false.
|
|
639
|
+
empty = false
|
|
640
|
+
|
|
641
|
+
// 2. Parse token as a hash-with-options.
|
|
642
|
+
const parsedToken = parseHashWithOptions.exec(token)
|
|
643
|
+
|
|
644
|
+
// 3. If token does not parse, continue to the next token.
|
|
645
|
+
if (
|
|
646
|
+
parsedToken === null ||
|
|
647
|
+
parsedToken.groups === undefined ||
|
|
648
|
+
parsedToken.groups.algo === undefined
|
|
649
|
+
) {
|
|
650
|
+
// Note: Chromium blocks the request at this point, but Firefox
|
|
651
|
+
// gives a warning that an invalid integrity was given. The
|
|
652
|
+
// correct behavior is to ignore these, and subsequently not
|
|
653
|
+
// check the integrity of the resource.
|
|
654
|
+
continue
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
// 4. Let algorithm be the hash-algo component of token.
|
|
658
|
+
const algorithm = parsedToken.groups.algo.toLowerCase()
|
|
659
|
+
|
|
660
|
+
// 5. If algorithm is a hash function recognized by the user
|
|
661
|
+
// agent, add the parsed token to result.
|
|
662
|
+
if (supportedHashes.includes(algorithm)) {
|
|
663
|
+
result.push(parsedToken.groups)
|
|
664
|
+
}
|
|
632
665
|
}
|
|
633
666
|
|
|
634
|
-
//
|
|
635
|
-
if (
|
|
636
|
-
return
|
|
667
|
+
// 4. Return no metadata if empty is true, otherwise return result.
|
|
668
|
+
if (empty === true) {
|
|
669
|
+
return 'no metadata'
|
|
637
670
|
}
|
|
638
671
|
|
|
639
|
-
|
|
640
|
-
|
|
672
|
+
return result
|
|
673
|
+
}
|
|
641
674
|
|
|
642
|
-
|
|
643
|
-
|
|
675
|
+
/**
|
|
676
|
+
* @param {{ algo: 'sha256' | 'sha384' | 'sha512' }[]} metadataList
|
|
677
|
+
*/
|
|
678
|
+
function getStrongestMetadata (metadataList) {
|
|
679
|
+
// Let algorithm be the algo component of the first item in metadataList.
|
|
680
|
+
// Can be sha256
|
|
681
|
+
let algorithm = metadataList[0].algo
|
|
682
|
+
// If the algorithm is sha512, then it is the strongest
|
|
683
|
+
// and we can return immediately
|
|
684
|
+
if (algorithm[3] === '5') {
|
|
685
|
+
return algorithm
|
|
686
|
+
}
|
|
644
687
|
|
|
645
|
-
|
|
646
|
-
|
|
688
|
+
for (let i = 1; i < metadataList.length; ++i) {
|
|
689
|
+
const metadata = metadataList[i]
|
|
690
|
+
// If the algorithm is sha512, then it is the strongest
|
|
691
|
+
// and we can break the loop immediately
|
|
692
|
+
if (metadata.algo[3] === '5') {
|
|
693
|
+
algorithm = 'sha512'
|
|
694
|
+
break
|
|
695
|
+
// If the algorithm is sha384, then a potential sha256 or sha384 is ignored
|
|
696
|
+
} else if (algorithm[3] === '3') {
|
|
697
|
+
continue
|
|
698
|
+
// algorithm is sha256, check if algorithm is sha384 and if so, set it as
|
|
699
|
+
// the strongest
|
|
700
|
+
} else if (metadata.algo[3] === '3') {
|
|
701
|
+
algorithm = 'sha384'
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
return algorithm
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
function filterMetadataListByAlgorithm (metadataList, algorithm) {
|
|
708
|
+
if (metadataList.length === 1) {
|
|
709
|
+
return metadataList
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
let pos = 0
|
|
713
|
+
for (let i = 0; i < metadataList.length; ++i) {
|
|
714
|
+
if (metadataList[i].algo === algorithm) {
|
|
715
|
+
metadataList[pos++] = metadataList[i]
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
metadataList.length = pos
|
|
720
|
+
|
|
721
|
+
return metadataList
|
|
647
722
|
}
|
|
648
723
|
|
|
649
724
|
/**
|
|
650
|
-
*
|
|
651
|
-
*
|
|
652
|
-
* potentially trustworthy origin.
|
|
653
|
-
*
|
|
654
|
-
* Return value `true` means `Potentially Trustworthy`.
|
|
655
|
-
* Return value `false` means `Not Trustworthy`.
|
|
725
|
+
* Compares two base64 strings, allowing for base64url
|
|
726
|
+
* in the second string.
|
|
656
727
|
*
|
|
657
|
-
|
|
658
|
-
* @param {
|
|
728
|
+
* @param {string} actualValue always base64
|
|
729
|
+
* @param {string} expectedValue base64 or base64url
|
|
659
730
|
* @returns {boolean}
|
|
660
731
|
*/
|
|
661
|
-
function
|
|
662
|
-
|
|
663
|
-
// Trustworthy" or "Not Trustworthy" as appropriate:
|
|
664
|
-
if (!webidl.is.URL(url)) {
|
|
732
|
+
function compareBase64Mixed (actualValue, expectedValue) {
|
|
733
|
+
if (actualValue.length !== expectedValue.length) {
|
|
665
734
|
return false
|
|
666
735
|
}
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
736
|
+
for (let i = 0; i < actualValue.length; ++i) {
|
|
737
|
+
if (actualValue[i] !== expectedValue[i]) {
|
|
738
|
+
if (
|
|
739
|
+
(actualValue[i] === '+' && expectedValue[i] === '-') ||
|
|
740
|
+
(actualValue[i] === '/' && expectedValue[i] === '_')
|
|
741
|
+
) {
|
|
742
|
+
continue
|
|
743
|
+
}
|
|
744
|
+
return false
|
|
745
|
+
}
|
|
672
746
|
}
|
|
673
747
|
|
|
674
|
-
|
|
675
|
-
if (url.protocol === 'data:') return true
|
|
676
|
-
|
|
677
|
-
// Note: The origin of blob: URLs is the origin of the context in which they
|
|
678
|
-
// were created. Therefore, blobs created in a trustworthy origin will
|
|
679
|
-
// themselves be potentially trustworthy.
|
|
680
|
-
if (url.protocol === 'blob:') return true
|
|
681
|
-
|
|
682
|
-
// 3. Return the result of executing § 3.1 Is origin potentially trustworthy?
|
|
683
|
-
// on url’s origin.
|
|
684
|
-
return isOriginPotentiallyTrustworthy(url.origin)
|
|
748
|
+
return true
|
|
685
749
|
}
|
|
686
750
|
|
|
687
751
|
// https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request
|
|
@@ -710,6 +774,17 @@ function sameOrigin (A, B) {
|
|
|
710
774
|
return false
|
|
711
775
|
}
|
|
712
776
|
|
|
777
|
+
function createDeferredPromise () {
|
|
778
|
+
let res
|
|
779
|
+
let rej
|
|
780
|
+
const promise = new Promise((resolve, reject) => {
|
|
781
|
+
res = resolve
|
|
782
|
+
rej = reject
|
|
783
|
+
})
|
|
784
|
+
|
|
785
|
+
return { promise, resolve: res, reject: rej }
|
|
786
|
+
}
|
|
787
|
+
|
|
713
788
|
function isAborted (fetchParams) {
|
|
714
789
|
return fetchParams.controller.state === 'aborted'
|
|
715
790
|
}
|
|
@@ -727,13 +802,30 @@ function normalizeMethod (method) {
|
|
|
727
802
|
return normalizedMethodRecordsBase[method.toLowerCase()] ?? method
|
|
728
803
|
}
|
|
729
804
|
|
|
805
|
+
// https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string
|
|
806
|
+
function serializeJavascriptValueToJSONString (value) {
|
|
807
|
+
// 1. Let result be ? Call(%JSON.stringify%, undefined, « value »).
|
|
808
|
+
const result = JSON.stringify(value)
|
|
809
|
+
|
|
810
|
+
// 2. If result is undefined, then throw a TypeError.
|
|
811
|
+
if (result === undefined) {
|
|
812
|
+
throw new TypeError('Value is not JSON serializable')
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
// 3. Assert: result is a string.
|
|
816
|
+
assert(typeof result === 'string')
|
|
817
|
+
|
|
818
|
+
// 4. Return result.
|
|
819
|
+
return result
|
|
820
|
+
}
|
|
821
|
+
|
|
730
822
|
// https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object
|
|
731
823
|
const esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))
|
|
732
824
|
|
|
733
825
|
/**
|
|
734
826
|
* @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object
|
|
735
827
|
* @param {string} name name of the instance
|
|
736
|
-
* @param {
|
|
828
|
+
* @param {symbol} kInternalIterator
|
|
737
829
|
* @param {string | number} [keyIndex]
|
|
738
830
|
* @param {string | number} [valueIndex]
|
|
739
831
|
*/
|
|
@@ -775,7 +867,7 @@ function createIterator (name, kInternalIterator, keyIndex = 0, valueIndex = 1)
|
|
|
775
867
|
// 7. Let kind be object’s kind.
|
|
776
868
|
// 8. Let values be object’s target's value pairs to iterate over.
|
|
777
869
|
const index = this.#index
|
|
778
|
-
const values =
|
|
870
|
+
const values = this.#target[kInternalIterator]
|
|
779
871
|
|
|
780
872
|
// 9. Let len be the length of values.
|
|
781
873
|
const len = values.length
|
|
@@ -869,12 +961,11 @@ function createIterator (name, kInternalIterator, keyIndex = 0, valueIndex = 1)
|
|
|
869
961
|
* @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object
|
|
870
962
|
* @param {string} name name of the instance
|
|
871
963
|
* @param {any} object class
|
|
872
|
-
* @param {
|
|
964
|
+
* @param {symbol} kInternalIterator
|
|
873
965
|
* @param {string | number} [keyIndex]
|
|
874
966
|
* @param {string | number} [valueIndex]
|
|
875
|
-
* @param {import('../../../types/webidl').WebidlIsFunction} brandCheck
|
|
876
967
|
*/
|
|
877
|
-
function iteratorMixin (name, object, kInternalIterator, keyIndex = 0, valueIndex = 1
|
|
968
|
+
function iteratorMixin (name, object, kInternalIterator, keyIndex = 0, valueIndex = 1) {
|
|
878
969
|
const makeIterator = createIterator(name, kInternalIterator, keyIndex, valueIndex)
|
|
879
970
|
|
|
880
971
|
const properties = {
|
|
@@ -883,7 +974,7 @@ function iteratorMixin (name, object, kInternalIterator, keyIndex = 0, valueInde
|
|
|
883
974
|
enumerable: true,
|
|
884
975
|
configurable: true,
|
|
885
976
|
value: function keys () {
|
|
886
|
-
webidl.brandCheck(this,
|
|
977
|
+
webidl.brandCheck(this, object)
|
|
887
978
|
return makeIterator(this, 'key')
|
|
888
979
|
}
|
|
889
980
|
},
|
|
@@ -892,7 +983,7 @@ function iteratorMixin (name, object, kInternalIterator, keyIndex = 0, valueInde
|
|
|
892
983
|
enumerable: true,
|
|
893
984
|
configurable: true,
|
|
894
985
|
value: function values () {
|
|
895
|
-
webidl.brandCheck(this,
|
|
986
|
+
webidl.brandCheck(this, object)
|
|
896
987
|
return makeIterator(this, 'value')
|
|
897
988
|
}
|
|
898
989
|
},
|
|
@@ -901,7 +992,7 @@ function iteratorMixin (name, object, kInternalIterator, keyIndex = 0, valueInde
|
|
|
901
992
|
enumerable: true,
|
|
902
993
|
configurable: true,
|
|
903
994
|
value: function entries () {
|
|
904
|
-
webidl.brandCheck(this,
|
|
995
|
+
webidl.brandCheck(this, object)
|
|
905
996
|
return makeIterator(this, 'key+value')
|
|
906
997
|
}
|
|
907
998
|
},
|
|
@@ -910,7 +1001,7 @@ function iteratorMixin (name, object, kInternalIterator, keyIndex = 0, valueInde
|
|
|
910
1001
|
enumerable: true,
|
|
911
1002
|
configurable: true,
|
|
912
1003
|
value: function forEach (callbackfn, thisArg = globalThis) {
|
|
913
|
-
webidl.brandCheck(this,
|
|
1004
|
+
webidl.brandCheck(this, object)
|
|
914
1005
|
webidl.argumentLengthCheck(arguments, 1, `${name}.forEach`)
|
|
915
1006
|
if (typeof callbackfn !== 'function') {
|
|
916
1007
|
throw new TypeError(
|
|
@@ -936,14 +1027,9 @@ function iteratorMixin (name, object, kInternalIterator, keyIndex = 0, valueInde
|
|
|
936
1027
|
}
|
|
937
1028
|
|
|
938
1029
|
/**
|
|
939
|
-
* @param {import('./body').ExtractBodyResult} body
|
|
940
|
-
* @param {(bytes: Uint8Array) => void} processBody
|
|
941
|
-
* @param {(error: Error) => void} processBodyError
|
|
942
|
-
* @returns {void}
|
|
943
|
-
*
|
|
944
1030
|
* @see https://fetch.spec.whatwg.org/#body-fully-read
|
|
945
1031
|
*/
|
|
946
|
-
function fullyReadBody (body, processBody, processBodyError) {
|
|
1032
|
+
async function fullyReadBody (body, processBody, processBodyError) {
|
|
947
1033
|
// 1. If taskDestination is null, then set taskDestination to
|
|
948
1034
|
// the result of starting a new parallel queue.
|
|
949
1035
|
|
|
@@ -955,19 +1041,33 @@ function fullyReadBody (body, processBody, processBodyError) {
|
|
|
955
1041
|
// with taskDestination.
|
|
956
1042
|
const errorSteps = processBodyError
|
|
957
1043
|
|
|
958
|
-
try {
|
|
959
1044
|
// 4. Let reader be the result of getting a reader for body’s stream.
|
|
960
1045
|
// If that threw an exception, then run errorSteps with that
|
|
961
1046
|
// exception and return.
|
|
962
|
-
|
|
1047
|
+
let reader
|
|
963
1048
|
|
|
964
|
-
|
|
965
|
-
|
|
1049
|
+
try {
|
|
1050
|
+
reader = body.stream.getReader()
|
|
1051
|
+
} catch (e) {
|
|
1052
|
+
errorSteps(e)
|
|
1053
|
+
return
|
|
1054
|
+
}
|
|
1055
|
+
|
|
1056
|
+
// 5. Read all bytes from reader, given successSteps and errorSteps.
|
|
1057
|
+
try {
|
|
1058
|
+
successSteps(await readAllBytes(reader))
|
|
966
1059
|
} catch (e) {
|
|
967
1060
|
errorSteps(e)
|
|
968
1061
|
}
|
|
969
1062
|
}
|
|
970
1063
|
|
|
1064
|
+
function isReadableStreamLike (stream) {
|
|
1065
|
+
return stream instanceof ReadableStream || (
|
|
1066
|
+
stream[Symbol.toStringTag] === 'ReadableStream' &&
|
|
1067
|
+
typeof stream.tee === 'function'
|
|
1068
|
+
)
|
|
1069
|
+
}
|
|
1070
|
+
|
|
971
1071
|
/**
|
|
972
1072
|
* @param {ReadableStreamController<Uint8Array>} controller
|
|
973
1073
|
*/
|
|
@@ -983,59 +1083,62 @@ function readableStreamClose (controller) {
|
|
|
983
1083
|
}
|
|
984
1084
|
}
|
|
985
1085
|
|
|
1086
|
+
const invalidIsomorphicEncodeValueRegex = /[^\x00-\xFF]/ // eslint-disable-line
|
|
1087
|
+
|
|
1088
|
+
/**
|
|
1089
|
+
* @see https://infra.spec.whatwg.org/#isomorphic-encode
|
|
1090
|
+
* @param {string} input
|
|
1091
|
+
*/
|
|
1092
|
+
function isomorphicEncode (input) {
|
|
1093
|
+
// 1. Assert: input contains no code points greater than U+00FF.
|
|
1094
|
+
assert(!invalidIsomorphicEncodeValueRegex.test(input))
|
|
1095
|
+
|
|
1096
|
+
// 2. Return a byte sequence whose length is equal to input’s code
|
|
1097
|
+
// point length and whose bytes have the same values as the
|
|
1098
|
+
// values of input’s code points, in the same order
|
|
1099
|
+
return input
|
|
1100
|
+
}
|
|
1101
|
+
|
|
986
1102
|
/**
|
|
987
1103
|
* @see https://streams.spec.whatwg.org/#readablestreamdefaultreader-read-all-bytes
|
|
988
1104
|
* @see https://streams.spec.whatwg.org/#read-loop
|
|
989
|
-
* @param {
|
|
990
|
-
* @param {(bytes: Uint8Array) => void} successSteps
|
|
991
|
-
* @param {(error: Error) => void} failureSteps
|
|
992
|
-
* @returns {Promise<void>}
|
|
1105
|
+
* @param {ReadableStreamDefaultReader} reader
|
|
993
1106
|
*/
|
|
994
|
-
async function readAllBytes (reader
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
let byteLength = 0
|
|
1107
|
+
async function readAllBytes (reader) {
|
|
1108
|
+
const bytes = []
|
|
1109
|
+
let byteLength = 0
|
|
998
1110
|
|
|
999
|
-
|
|
1000
|
-
|
|
1111
|
+
while (true) {
|
|
1112
|
+
const { done, value: chunk } = await reader.read()
|
|
1001
1113
|
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
}
|
|
1114
|
+
if (done) {
|
|
1115
|
+
// 1. Call successSteps with bytes.
|
|
1116
|
+
return Buffer.concat(bytes, byteLength)
|
|
1117
|
+
}
|
|
1007
1118
|
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
}
|
|
1119
|
+
// 1. If chunk is not a Uint8Array object, call failureSteps
|
|
1120
|
+
// with a TypeError and abort these steps.
|
|
1121
|
+
if (!isUint8Array(chunk)) {
|
|
1122
|
+
throw new TypeError('Received non-Uint8Array chunk')
|
|
1123
|
+
}
|
|
1014
1124
|
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1125
|
+
// 2. Append the bytes represented by chunk to bytes.
|
|
1126
|
+
bytes.push(chunk)
|
|
1127
|
+
byteLength += chunk.length
|
|
1018
1128
|
|
|
1019
1129
|
// 3. Read-loop given reader, bytes, successSteps, and failureSteps.
|
|
1020
|
-
} while (true)
|
|
1021
|
-
} catch (e) {
|
|
1022
|
-
// 1. Call failureSteps with e.
|
|
1023
|
-
failureSteps(e)
|
|
1024
1130
|
}
|
|
1025
1131
|
}
|
|
1026
1132
|
|
|
1027
1133
|
/**
|
|
1028
1134
|
* @see https://fetch.spec.whatwg.org/#is-local
|
|
1029
1135
|
* @param {URL} url
|
|
1030
|
-
* @returns {boolean}
|
|
1031
1136
|
*/
|
|
1032
1137
|
function urlIsLocal (url) {
|
|
1033
1138
|
assert('protocol' in url) // ensure it's a url object
|
|
1034
1139
|
|
|
1035
1140
|
const protocol = url.protocol
|
|
1036
1141
|
|
|
1037
|
-
// A URL is local if its scheme is a local scheme.
|
|
1038
|
-
// A local scheme is "about", "blob", or "data".
|
|
1039
1142
|
return protocol === 'about:' || protocol === 'blob:' || protocol === 'data:'
|
|
1040
1143
|
}
|
|
1041
1144
|
|
|
@@ -1070,17 +1173,10 @@ function urlIsHttpHttpsScheme (url) {
|
|
|
1070
1173
|
return protocol === 'http:' || protocol === 'https:'
|
|
1071
1174
|
}
|
|
1072
1175
|
|
|
1073
|
-
/**
|
|
1074
|
-
* @typedef {Object} RangeHeaderValue
|
|
1075
|
-
* @property {number|null} rangeStartValue
|
|
1076
|
-
* @property {number|null} rangeEndValue
|
|
1077
|
-
*/
|
|
1078
|
-
|
|
1079
1176
|
/**
|
|
1080
1177
|
* @see https://fetch.spec.whatwg.org/#simple-range-header-value
|
|
1081
1178
|
* @param {string} value
|
|
1082
1179
|
* @param {boolean} allowWhitespace
|
|
1083
|
-
* @return {RangeHeaderValue|'failure'}
|
|
1084
1180
|
*/
|
|
1085
1181
|
function simpleRangeHeaderValue (value, allowWhitespace) {
|
|
1086
1182
|
// 1. Let data be the isomorphic decoding of value.
|
|
@@ -1201,10 +1297,7 @@ function simpleRangeHeaderValue (value, allowWhitespace) {
|
|
|
1201
1297
|
// 18. If rangeStartValue and rangeEndValue are numbers, and rangeStartValue is
|
|
1202
1298
|
// greater than rangeEndValue, then return failure.
|
|
1203
1299
|
// Note: ... when can they not be numbers?
|
|
1204
|
-
|
|
1205
|
-
// such as `bytes=5-` or `bytes=-5`. A null value must not be coerced to 0
|
|
1206
|
-
// in the comparison, so this check only applies when both are numbers.
|
|
1207
|
-
if (rangeStartValue !== null && rangeEndValue !== null && rangeStartValue > rangeEndValue) {
|
|
1300
|
+
if (rangeStartValue > rangeEndValue) {
|
|
1208
1301
|
return 'failure'
|
|
1209
1302
|
}
|
|
1210
1303
|
|
|
@@ -1438,28 +1531,32 @@ function getDecodeSplit (name, list) {
|
|
|
1438
1531
|
return gettingDecodingSplitting(value)
|
|
1439
1532
|
}
|
|
1440
1533
|
|
|
1441
|
-
|
|
1442
|
-
return false
|
|
1443
|
-
}
|
|
1534
|
+
const textDecoder = new TextDecoder()
|
|
1444
1535
|
|
|
1445
1536
|
/**
|
|
1446
|
-
* @see https://
|
|
1447
|
-
* @param {
|
|
1537
|
+
* @see https://encoding.spec.whatwg.org/#utf-8-decode
|
|
1538
|
+
* @param {Buffer} buffer
|
|
1448
1539
|
*/
|
|
1449
|
-
function
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
}
|
|
1540
|
+
function utf8DecodeBytes (buffer) {
|
|
1541
|
+
if (buffer.length === 0) {
|
|
1542
|
+
return ''
|
|
1543
|
+
}
|
|
1453
1544
|
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1545
|
+
// 1. Let buffer be the result of peeking three bytes from
|
|
1546
|
+
// ioQueue, converted to a byte sequence.
|
|
1547
|
+
|
|
1548
|
+
// 2. If buffer is 0xEF 0xBB 0xBF, then read three
|
|
1549
|
+
// bytes from ioQueue. (Do nothing with those bytes.)
|
|
1550
|
+
if (buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) {
|
|
1551
|
+
buffer = buffer.subarray(3)
|
|
1552
|
+
}
|
|
1553
|
+
|
|
1554
|
+
// 3. Process a queue with an instance of UTF-8’s
|
|
1555
|
+
// decoder, ioQueue, output, and "replacement".
|
|
1556
|
+
const output = textDecoder.decode(buffer)
|
|
1557
|
+
|
|
1558
|
+
// 4. Return output.
|
|
1559
|
+
return output
|
|
1463
1560
|
}
|
|
1464
1561
|
|
|
1465
1562
|
class EnvironmentSettingsObjectBase {
|
|
@@ -1484,6 +1581,8 @@ module.exports = {
|
|
|
1484
1581
|
isAborted,
|
|
1485
1582
|
isCancelled,
|
|
1486
1583
|
isValidEncodedURL,
|
|
1584
|
+
createDeferredPromise,
|
|
1585
|
+
ReadableStreamFrom,
|
|
1487
1586
|
tryUpgradeRequestToAPotentiallyTrustworthyURL,
|
|
1488
1587
|
clampAndCoarsenConnectionTimingInfo,
|
|
1489
1588
|
coarsenedSharedCurrentTime,
|
|
@@ -1502,29 +1601,32 @@ module.exports = {
|
|
|
1502
1601
|
requestCurrentURL,
|
|
1503
1602
|
responseURL,
|
|
1504
1603
|
responseLocationURL,
|
|
1604
|
+
isBlobLike,
|
|
1505
1605
|
isURLPotentiallyTrustworthy,
|
|
1506
1606
|
isValidReasonPhrase,
|
|
1507
1607
|
sameOrigin,
|
|
1508
1608
|
normalizeMethod,
|
|
1609
|
+
serializeJavascriptValueToJSONString,
|
|
1509
1610
|
iteratorMixin,
|
|
1510
1611
|
createIterator,
|
|
1511
1612
|
isValidHeaderName,
|
|
1512
1613
|
isValidHeaderValue,
|
|
1513
1614
|
isErrorLike,
|
|
1514
1615
|
fullyReadBody,
|
|
1616
|
+
bytesMatch,
|
|
1617
|
+
isReadableStreamLike,
|
|
1515
1618
|
readableStreamClose,
|
|
1619
|
+
isomorphicEncode,
|
|
1516
1620
|
urlIsLocal,
|
|
1517
1621
|
urlHasHttpsScheme,
|
|
1518
1622
|
urlIsHttpHttpsScheme,
|
|
1519
1623
|
readAllBytes,
|
|
1520
1624
|
simpleRangeHeaderValue,
|
|
1521
1625
|
buildContentRange,
|
|
1626
|
+
parseMetadata,
|
|
1522
1627
|
createInflate,
|
|
1523
1628
|
extractMimeType,
|
|
1524
1629
|
getDecodeSplit,
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
hasAuthenticationEntry,
|
|
1528
|
-
includesCredentials,
|
|
1529
|
-
isTraversableNavigable
|
|
1630
|
+
utf8DecodeBytes,
|
|
1631
|
+
environmentSettingsObject
|
|
1530
1632
|
}
|