pi-cursor-sdk 0.1.47 → 0.1.49
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/CHANGELOG.md +17 -0
- package/README.md +2 -2
- package/node_modules/@connectrpc/connect-node/README.md +141 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/compression.d.ts +15 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/compression.js +89 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/connect-node-adapter.d.ts +42 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/connect-node-adapter.js +61 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/connect-transport.d.ts +100 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/connect-transport.js +25 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/grpc-transport.d.ts +96 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/grpc-transport.js +25 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/grpc-web-transport.d.ts +96 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/grpc-web-transport.js +25 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/http2-session-manager.d.ts +146 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/http2-session-manager.js +536 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/index.d.ts +15 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/index.js +36 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/node-error.d.ts +45 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/node-error.js +154 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/node-headers-polyfill.d.ts +1 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/node-headers-polyfill.js +29 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/node-transport-options.d.ts +89 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/node-transport-options.js +58 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/node-universal-client.d.ts +54 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/node-universal-client.js +326 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/node-universal-handler.d.ts +41 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/node-universal-handler.js +234 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/node-universal-header.d.ts +19 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/node-universal-header.js +97 -0
- package/node_modules/@connectrpc/connect-node/dist/cjs/package.json +1 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/compression.d.ts +15 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/compression.js +86 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/connect-node-adapter.d.ts +42 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/connect-node-adapter.js +58 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/connect-transport.d.ts +100 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/connect-transport.js +22 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/grpc-transport.d.ts +96 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/grpc-transport.js +22 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/grpc-web-transport.d.ts +96 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/grpc-web-transport.js +22 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/http2-session-manager.d.ts +146 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/http2-session-manager.js +532 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/index.d.ts +15 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/index.js +23 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/node-error.d.ts +45 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/node-error.js +147 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/node-headers-polyfill.d.ts +1 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/node-headers-polyfill.js +27 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/node-transport-options.d.ts +89 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/node-transport-options.js +58 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/node-universal-client.d.ts +54 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/node-universal-client.js +324 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/node-universal-handler.d.ts +41 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/node-universal-handler.js +230 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/node-universal-header.d.ts +19 -0
- package/node_modules/@connectrpc/connect-node/dist/esm/node-universal-header.js +93 -0
- package/node_modules/@connectrpc/connect-node/package.json +46 -0
- package/node_modules/undici/LICENSE +21 -0
- package/node_modules/undici/README.md +741 -0
- package/node_modules/undici/docs/docs/api/Agent.md +84 -0
- package/node_modules/undici/docs/docs/api/BalancedPool.md +99 -0
- package/node_modules/undici/docs/docs/api/CacheStorage.md +30 -0
- package/node_modules/undici/docs/docs/api/CacheStore.md +164 -0
- package/node_modules/undici/docs/docs/api/Client.md +288 -0
- package/node_modules/undici/docs/docs/api/ClientStats.md +27 -0
- package/node_modules/undici/docs/docs/api/Connector.md +115 -0
- package/node_modules/undici/docs/docs/api/ContentType.md +57 -0
- package/node_modules/undici/docs/docs/api/Cookies.md +128 -0
- package/node_modules/undici/docs/docs/api/Debug.md +62 -0
- package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +315 -0
- package/node_modules/undici/docs/docs/api/Dispatcher.md +1392 -0
- package/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +159 -0
- package/node_modules/undici/docs/docs/api/Errors.md +49 -0
- package/node_modules/undici/docs/docs/api/EventSource.md +45 -0
- package/node_modules/undici/docs/docs/api/Fetch.md +60 -0
- package/node_modules/undici/docs/docs/api/GlobalInstallation.md +139 -0
- package/node_modules/undici/docs/docs/api/H2CClient.md +263 -0
- package/node_modules/undici/docs/docs/api/MockAgent.md +603 -0
- package/node_modules/undici/docs/docs/api/MockCallHistory.md +197 -0
- package/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +43 -0
- package/node_modules/undici/docs/docs/api/MockClient.md +81 -0
- package/node_modules/undici/docs/docs/api/MockErrors.md +12 -0
- package/node_modules/undici/docs/docs/api/MockPool.md +555 -0
- package/node_modules/undici/docs/docs/api/Pool.md +84 -0
- package/node_modules/undici/docs/docs/api/PoolStats.md +35 -0
- package/node_modules/undici/docs/docs/api/ProxyAgent.md +229 -0
- package/node_modules/undici/docs/docs/api/RedirectHandler.md +93 -0
- package/node_modules/undici/docs/docs/api/RetryAgent.md +50 -0
- package/node_modules/undici/docs/docs/api/RetryHandler.md +118 -0
- package/node_modules/undici/docs/docs/api/RoundRobinPool.md +145 -0
- package/node_modules/undici/docs/docs/api/SnapshotAgent.md +616 -0
- package/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +275 -0
- package/node_modules/undici/docs/docs/api/Util.md +25 -0
- package/node_modules/undici/docs/docs/api/WebSocket.md +141 -0
- package/node_modules/undici/docs/docs/api/api-lifecycle.md +91 -0
- package/node_modules/undici/docs/docs/best-practices/client-certificate.md +64 -0
- package/node_modules/undici/docs/docs/best-practices/crawling.md +58 -0
- package/node_modules/undici/docs/docs/best-practices/mocking-request.md +190 -0
- package/node_modules/undici/docs/docs/best-practices/proxy.md +127 -0
- package/node_modules/undici/docs/docs/best-practices/undici-vs-builtin-fetch.md +224 -0
- package/node_modules/undici/docs/docs/best-practices/writing-tests.md +63 -0
- package/node_modules/undici/index-fetch.js +65 -0
- package/node_modules/undici/index.d.ts +3 -0
- package/node_modules/undici/index.js +234 -0
- package/node_modules/undici/lib/api/abort-signal.js +59 -0
- package/node_modules/undici/lib/api/api-connect.js +110 -0
- package/node_modules/undici/lib/api/api-pipeline.js +252 -0
- package/node_modules/undici/lib/api/api-request.js +214 -0
- package/node_modules/undici/lib/api/api-stream.js +209 -0
- package/node_modules/undici/lib/api/api-upgrade.js +111 -0
- package/node_modules/undici/lib/api/index.js +7 -0
- package/node_modules/undici/lib/api/readable.js +580 -0
- package/node_modules/undici/lib/cache/memory-cache-store.js +234 -0
- package/node_modules/undici/lib/cache/sqlite-cache-store.js +461 -0
- package/node_modules/undici/lib/core/connect.js +153 -0
- package/node_modules/undici/lib/core/constants.js +143 -0
- package/node_modules/undici/lib/core/diagnostics.js +227 -0
- package/node_modules/undici/lib/core/errors.js +477 -0
- package/node_modules/undici/lib/core/request.js +453 -0
- package/node_modules/undici/lib/core/socks5-client.js +422 -0
- package/node_modules/undici/lib/core/socks5-utils.js +212 -0
- package/node_modules/undici/lib/core/symbols.js +75 -0
- package/node_modules/undici/lib/core/tree.js +160 -0
- package/node_modules/undici/lib/core/util.js +992 -0
- package/node_modules/undici/lib/dispatcher/agent.js +158 -0
- package/node_modules/undici/lib/dispatcher/balanced-pool.js +219 -0
- package/node_modules/undici/lib/dispatcher/client-h1.js +1722 -0
- package/node_modules/undici/lib/dispatcher/client-h2.js +995 -0
- package/node_modules/undici/lib/dispatcher/client.js +664 -0
- package/node_modules/undici/lib/dispatcher/dispatcher-base.js +184 -0
- package/node_modules/undici/lib/dispatcher/dispatcher.js +48 -0
- package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +146 -0
- package/node_modules/undici/lib/dispatcher/fixed-queue.js +135 -0
- package/node_modules/undici/lib/dispatcher/h2c-client.js +51 -0
- package/node_modules/undici/lib/dispatcher/pool-base.js +214 -0
- package/node_modules/undici/lib/dispatcher/pool.js +118 -0
- package/node_modules/undici/lib/dispatcher/proxy-agent.js +319 -0
- package/node_modules/undici/lib/dispatcher/retry-agent.js +35 -0
- package/node_modules/undici/lib/dispatcher/round-robin-pool.js +137 -0
- package/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +260 -0
- package/node_modules/undici/lib/encoding/index.js +33 -0
- package/node_modules/undici/lib/global.js +59 -0
- package/node_modules/undici/lib/handler/cache-handler.js +578 -0
- package/node_modules/undici/lib/handler/cache-revalidation-handler.js +124 -0
- package/node_modules/undici/lib/handler/decorator-handler.js +67 -0
- package/node_modules/undici/lib/handler/deduplication-handler.js +460 -0
- package/node_modules/undici/lib/handler/redirect-handler.js +238 -0
- package/node_modules/undici/lib/handler/retry-handler.js +394 -0
- package/node_modules/undici/lib/handler/unwrap-handler.js +106 -0
- package/node_modules/undici/lib/handler/wrap-handler.js +105 -0
- package/node_modules/undici/lib/interceptor/cache.js +495 -0
- package/node_modules/undici/lib/interceptor/decompress.js +259 -0
- package/node_modules/undici/lib/interceptor/deduplicate.js +117 -0
- package/node_modules/undici/lib/interceptor/dns.js +571 -0
- package/node_modules/undici/lib/interceptor/dump.js +112 -0
- package/node_modules/undici/lib/interceptor/redirect.js +21 -0
- package/node_modules/undici/lib/interceptor/response-error.js +95 -0
- package/node_modules/undici/lib/interceptor/retry.js +19 -0
- package/node_modules/undici/lib/llhttp/.gitkeep +0 -0
- package/node_modules/undici/lib/llhttp/constants.d.ts +195 -0
- package/node_modules/undici/lib/llhttp/constants.js +531 -0
- package/node_modules/undici/lib/llhttp/llhttp-wasm.js +15 -0
- package/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +15 -0
- package/node_modules/undici/lib/llhttp/utils.d.ts +2 -0
- package/node_modules/undici/lib/llhttp/utils.js +12 -0
- package/node_modules/undici/lib/mock/mock-agent.js +232 -0
- package/node_modules/undici/lib/mock/mock-call-history.js +248 -0
- package/node_modules/undici/lib/mock/mock-client.js +68 -0
- package/node_modules/undici/lib/mock/mock-errors.js +29 -0
- package/node_modules/undici/lib/mock/mock-interceptor.js +209 -0
- package/node_modules/undici/lib/mock/mock-pool.js +68 -0
- package/node_modules/undici/lib/mock/mock-symbols.js +32 -0
- package/node_modules/undici/lib/mock/mock-utils.js +486 -0
- package/node_modules/undici/lib/mock/pending-interceptors-formatter.js +43 -0
- package/node_modules/undici/lib/mock/snapshot-agent.js +353 -0
- package/node_modules/undici/lib/mock/snapshot-recorder.js +588 -0
- package/node_modules/undici/lib/mock/snapshot-utils.js +158 -0
- package/node_modules/undici/lib/util/cache.js +414 -0
- package/node_modules/undici/lib/util/date.js +653 -0
- package/node_modules/undici/lib/util/promise.js +28 -0
- package/node_modules/undici/lib/util/runtime-features.js +124 -0
- package/node_modules/undici/lib/util/stats.js +32 -0
- package/node_modules/undici/lib/util/timers.js +425 -0
- package/node_modules/undici/lib/web/cache/cache.js +864 -0
- package/node_modules/undici/lib/web/cache/cachestorage.js +152 -0
- package/node_modules/undici/lib/web/cache/util.js +45 -0
- package/node_modules/undici/lib/web/cookies/constants.js +12 -0
- package/node_modules/undici/lib/web/cookies/index.js +199 -0
- package/node_modules/undici/lib/web/cookies/parse.js +314 -0
- package/node_modules/undici/lib/web/cookies/util.js +282 -0
- package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +399 -0
- package/node_modules/undici/lib/web/eventsource/eventsource.js +501 -0
- package/node_modules/undici/lib/web/eventsource/util.js +29 -0
- package/node_modules/undici/lib/web/fetch/LICENSE +21 -0
- package/node_modules/undici/lib/web/fetch/body.js +509 -0
- package/node_modules/undici/lib/web/fetch/constants.js +131 -0
- package/node_modules/undici/lib/web/fetch/data-url.js +596 -0
- package/node_modules/undici/lib/web/fetch/formdata-parser.js +586 -0
- package/node_modules/undici/lib/web/fetch/formdata.js +259 -0
- package/node_modules/undici/lib/web/fetch/global.js +40 -0
- package/node_modules/undici/lib/web/fetch/headers.js +719 -0
- package/node_modules/undici/lib/web/fetch/index.js +2413 -0
- package/node_modules/undici/lib/web/fetch/request.js +1115 -0
- package/node_modules/undici/lib/web/fetch/response.js +641 -0
- package/node_modules/undici/lib/web/fetch/util.js +1522 -0
- package/node_modules/undici/lib/web/infra/index.js +229 -0
- package/node_modules/undici/lib/web/subresource-integrity/Readme.md +9 -0
- package/node_modules/undici/lib/web/subresource-integrity/subresource-integrity.js +307 -0
- package/node_modules/undici/lib/web/webidl/index.js +1006 -0
- package/node_modules/undici/lib/web/websocket/connection.js +329 -0
- package/node_modules/undici/lib/web/websocket/constants.js +126 -0
- package/node_modules/undici/lib/web/websocket/events.js +331 -0
- package/node_modules/undici/lib/web/websocket/frame.js +133 -0
- package/node_modules/undici/lib/web/websocket/permessage-deflate.js +100 -0
- package/node_modules/undici/lib/web/websocket/receiver.js +507 -0
- package/node_modules/undici/lib/web/websocket/sender.js +109 -0
- package/node_modules/undici/lib/web/websocket/stream/websocketerror.js +104 -0
- package/node_modules/undici/lib/web/websocket/stream/websocketstream.js +498 -0
- package/node_modules/undici/lib/web/websocket/util.js +347 -0
- package/node_modules/undici/lib/web/websocket/websocket.js +758 -0
- package/node_modules/undici/package.json +152 -0
- package/node_modules/undici/scripts/strip-comments.js +10 -0
- package/node_modules/undici/types/README.md +6 -0
- package/node_modules/undici/types/agent.d.ts +32 -0
- package/node_modules/undici/types/api.d.ts +43 -0
- package/node_modules/undici/types/balanced-pool.d.ts +30 -0
- package/node_modules/undici/types/cache-interceptor.d.ts +179 -0
- package/node_modules/undici/types/cache.d.ts +36 -0
- package/node_modules/undici/types/client-stats.d.ts +15 -0
- package/node_modules/undici/types/client.d.ts +139 -0
- package/node_modules/undici/types/connector.d.ts +36 -0
- package/node_modules/undici/types/content-type.d.ts +21 -0
- package/node_modules/undici/types/cookies.d.ts +30 -0
- package/node_modules/undici/types/diagnostics-channel.d.ts +74 -0
- package/node_modules/undici/types/dispatcher.d.ts +275 -0
- package/node_modules/undici/types/env-http-proxy-agent.d.ts +22 -0
- package/node_modules/undici/types/errors.d.ts +177 -0
- package/node_modules/undici/types/eventsource.d.ts +66 -0
- package/node_modules/undici/types/fetch.d.ts +231 -0
- package/node_modules/undici/types/formdata.d.ts +114 -0
- package/node_modules/undici/types/global-dispatcher.d.ts +9 -0
- package/node_modules/undici/types/global-origin.d.ts +7 -0
- package/node_modules/undici/types/h2c-client.d.ts +73 -0
- package/node_modules/undici/types/handlers.d.ts +14 -0
- package/node_modules/undici/types/header.d.ts +160 -0
- package/node_modules/undici/types/index.d.ts +91 -0
- package/node_modules/undici/types/interceptors.d.ts +80 -0
- package/node_modules/undici/types/mock-agent.d.ts +68 -0
- package/node_modules/undici/types/mock-call-history.d.ts +111 -0
- package/node_modules/undici/types/mock-client.d.ts +27 -0
- package/node_modules/undici/types/mock-errors.d.ts +12 -0
- package/node_modules/undici/types/mock-interceptor.d.ts +94 -0
- package/node_modules/undici/types/mock-pool.d.ts +27 -0
- package/node_modules/undici/types/patch.d.ts +29 -0
- package/node_modules/undici/types/pool-stats.d.ts +19 -0
- package/node_modules/undici/types/pool.d.ts +41 -0
- package/node_modules/undici/types/proxy-agent.d.ts +29 -0
- package/node_modules/undici/types/readable.d.ts +68 -0
- package/node_modules/undici/types/retry-agent.d.ts +8 -0
- package/node_modules/undici/types/retry-handler.d.ts +125 -0
- package/node_modules/undici/types/round-robin-pool.d.ts +41 -0
- package/node_modules/undici/types/snapshot-agent.d.ts +109 -0
- package/node_modules/undici/types/socks5-proxy-agent.d.ts +25 -0
- package/node_modules/undici/types/util.d.ts +18 -0
- package/node_modules/undici/types/utility.d.ts +7 -0
- package/node_modules/undici/types/webidl.d.ts +347 -0
- package/node_modules/undici/types/websocket.d.ts +188 -0
- package/package.json +161 -156
- package/src/context.ts +1 -1
- package/src/cursor-context-tools.ts +1 -1
- package/src/cursor-live-run-accounting.ts +1 -1
- package/src/cursor-live-run-coordinator.ts +1 -1
- package/src/cursor-native-replay-routing.ts +1 -1
- package/src/cursor-partial-content-emitter.ts +1 -1
- package/src/cursor-pi-tool-bridge-mcp.ts +1 -1
- package/src/cursor-pi-tool-bridge-run.ts +1 -1
- package/src/cursor-pi-tool-bridge-types.ts +1 -1
- package/src/cursor-provider-lazy.ts +1 -1
- package/src/cursor-provider-live-run-drain.ts +1 -1
- package/src/cursor-provider-run-finalizer.ts +1 -1
- package/src/cursor-provider-turn-coordinator.ts +1 -1
- package/src/cursor-provider-turn-lifecycle-emitter.ts +1 -1
- package/src/cursor-provider-turn-prepare.ts +1 -1
- package/src/cursor-provider-turn-types.ts +1 -1
- package/src/cursor-provider.ts +1 -1
- package/src/cursor-run-final-text.ts +1 -1
- package/src/cursor-sdk-event-debug.ts +1 -1
- package/src/cursor-session-agent.ts +1 -1
- package/src/cursor-session-send-policy.ts +1 -1
- package/src/cursor-usage-accounting.ts +1 -1
- package/src/model-discovery.ts +1 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// Copyright 2021-2024 The Connect Authors
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
// Polyfill the Headers API for Node versions < 18
|
|
15
|
+
import "./node-headers-polyfill.js";
|
|
16
|
+
export { createGrpcWebTransport } from "./grpc-web-transport.js";
|
|
17
|
+
export { createGrpcTransport } from "./grpc-transport.js";
|
|
18
|
+
export { createConnectTransport } from "./connect-transport.js";
|
|
19
|
+
export { compressionBrotli, compressionGzip } from "./compression.js";
|
|
20
|
+
export { connectNodeAdapter } from "./connect-node-adapter.js";
|
|
21
|
+
export { universalRequestFromNodeRequest, universalResponseToNodeResponse, } from "./node-universal-handler.js";
|
|
22
|
+
export { createNodeHttpClient } from "./node-universal-client.js";
|
|
23
|
+
export { Http2SessionManager } from "./http2-session-manager.js";
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ConnectError } from "@connectrpc/connect";
|
|
2
|
+
/**
|
|
3
|
+
* Similar to ConnectError.from(), this function turns any value into
|
|
4
|
+
* a ConnectError, but special cases some Node.js specific error codes and
|
|
5
|
+
* sets an appropriate Connect error code.
|
|
6
|
+
*/
|
|
7
|
+
export declare function connectErrorFromNodeReason(reason: unknown): ConnectError;
|
|
8
|
+
/**
|
|
9
|
+
* Unwraps a chain of errors, by walking through all "cause" properties
|
|
10
|
+
* recursively.
|
|
11
|
+
* This function is useful to find the root cause of an error.
|
|
12
|
+
*/
|
|
13
|
+
export declare function unwrapNodeErrorChain(reason: unknown): Error[];
|
|
14
|
+
/**
|
|
15
|
+
* Returns standard Node.js error properties from the given reason, if present.
|
|
16
|
+
*
|
|
17
|
+
* For context: Every error raised by Node.js APIs should expose a `code`
|
|
18
|
+
* property - a string that permanently identifies the error. Some errors may
|
|
19
|
+
* have an additional `syscall` property - a string that identifies native
|
|
20
|
+
* components, for example "getaddrinfo" of libuv.
|
|
21
|
+
* For more information, see https://github.com/nodejs/node/blob/f6052c68c1f9a4400a723e9c0b79da14197ab754/lib/internal/errors.js
|
|
22
|
+
*/
|
|
23
|
+
export declare function getNodeErrorProps(reason: unknown): {
|
|
24
|
+
code?: string;
|
|
25
|
+
syscall?: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Returns a ConnectError for an HTTP/2 error code.
|
|
29
|
+
*/
|
|
30
|
+
export declare function connectErrorFromH2ResetCode(rstCode: number): ConnectError | undefined;
|
|
31
|
+
export declare enum H2Code {
|
|
32
|
+
PROTOCOL_ERROR = 1,
|
|
33
|
+
INTERNAL_ERROR = 2,
|
|
34
|
+
FLOW_CONTROL_ERROR = 3,
|
|
35
|
+
SETTINGS_TIMEOUT = 4,
|
|
36
|
+
STREAM_CLOSED = 5,
|
|
37
|
+
FRAME_SIZE_ERROR = 6,
|
|
38
|
+
REFUSED_STREAM = 7,
|
|
39
|
+
CANCEL = 8,
|
|
40
|
+
COMPRESSION_ERROR = 9,
|
|
41
|
+
CONNECT_ERROR = 10,
|
|
42
|
+
ENHANCE_YOUR_CALM = 11,
|
|
43
|
+
INADEQUATE_SECURITY = 12,
|
|
44
|
+
HTTP_1_1_REQUIRED = 13
|
|
45
|
+
}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
// Copyright 2021-2024 The Connect Authors
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
import { Code, ConnectError } from "@connectrpc/connect";
|
|
15
|
+
/**
|
|
16
|
+
* Similar to ConnectError.from(), this function turns any value into
|
|
17
|
+
* a ConnectError, but special cases some Node.js specific error codes and
|
|
18
|
+
* sets an appropriate Connect error code.
|
|
19
|
+
*/
|
|
20
|
+
export function connectErrorFromNodeReason(reason) {
|
|
21
|
+
let code = Code.Internal;
|
|
22
|
+
const chain = unwrapNodeErrorChain(reason).map(getNodeErrorProps);
|
|
23
|
+
if (chain.some((p) => p.code == "ERR_STREAM_WRITE_AFTER_END")) {
|
|
24
|
+
// We do not want intentional errors from the server to be shadowed
|
|
25
|
+
// by client-side errors.
|
|
26
|
+
// This can occur if the server has written a response with an error
|
|
27
|
+
// and has ended the connection. This response may already sit in a
|
|
28
|
+
// buffer on the client, while it is still writing to the request
|
|
29
|
+
// body.
|
|
30
|
+
// To avoid this problem, we wrap ERR_STREAM_WRITE_AFTER_END as a
|
|
31
|
+
// ConnectError with Code.Aborted. The special meaning of this code
|
|
32
|
+
// in this situation is documented in StreamingConn.send() and in
|
|
33
|
+
// createServerStreamingFn().
|
|
34
|
+
code = Code.Aborted;
|
|
35
|
+
}
|
|
36
|
+
else if (chain.some((p) => p.code == "ERR_STREAM_DESTROYED" ||
|
|
37
|
+
p.code == "ERR_HTTP2_INVALID_STREAM" ||
|
|
38
|
+
p.code == "ECONNRESET")) {
|
|
39
|
+
// A handler whose stream is suddenly destroyed usually means the client
|
|
40
|
+
// hung up. This behavior is triggered by the conformance test "cancel_after_begin".
|
|
41
|
+
code = Code.Aborted;
|
|
42
|
+
}
|
|
43
|
+
else if (chain.some((p) => p.code == "ETIMEDOUT" ||
|
|
44
|
+
p.code == "ENOTFOUND" ||
|
|
45
|
+
p.code == "EAI_AGAIN" ||
|
|
46
|
+
p.code == "ECONNREFUSED")) {
|
|
47
|
+
// Calling an unresolvable host should raise a ConnectError with
|
|
48
|
+
// Code.Aborted.
|
|
49
|
+
// This behavior is covered by the conformance test "unresolvable_host".
|
|
50
|
+
code = Code.Unavailable;
|
|
51
|
+
}
|
|
52
|
+
const ce = ConnectError.from(reason, code);
|
|
53
|
+
if (ce !== reason) {
|
|
54
|
+
ce.cause = reason;
|
|
55
|
+
}
|
|
56
|
+
return ce;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Unwraps a chain of errors, by walking through all "cause" properties
|
|
60
|
+
* recursively.
|
|
61
|
+
* This function is useful to find the root cause of an error.
|
|
62
|
+
*/
|
|
63
|
+
export function unwrapNodeErrorChain(reason) {
|
|
64
|
+
const chain = [];
|
|
65
|
+
for (;;) {
|
|
66
|
+
if (!(reason instanceof Error)) {
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
if (chain.includes(reason)) {
|
|
70
|
+
// safeguard against infinite loop when "cause" points to an ancestor
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
chain.push(reason);
|
|
74
|
+
if (!("cause" in reason)) {
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
reason = reason.cause;
|
|
78
|
+
}
|
|
79
|
+
return chain;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Returns standard Node.js error properties from the given reason, if present.
|
|
83
|
+
*
|
|
84
|
+
* For context: Every error raised by Node.js APIs should expose a `code`
|
|
85
|
+
* property - a string that permanently identifies the error. Some errors may
|
|
86
|
+
* have an additional `syscall` property - a string that identifies native
|
|
87
|
+
* components, for example "getaddrinfo" of libuv.
|
|
88
|
+
* For more information, see https://github.com/nodejs/node/blob/f6052c68c1f9a4400a723e9c0b79da14197ab754/lib/internal/errors.js
|
|
89
|
+
*/
|
|
90
|
+
export function getNodeErrorProps(reason) {
|
|
91
|
+
const props = {};
|
|
92
|
+
if (reason instanceof Error) {
|
|
93
|
+
if ("code" in reason && typeof reason.code == "string") {
|
|
94
|
+
props.code = reason.code;
|
|
95
|
+
}
|
|
96
|
+
if ("syscall" in reason && typeof reason.syscall == "string") {
|
|
97
|
+
props.syscall = reason.syscall;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return props;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Returns a ConnectError for an HTTP/2 error code.
|
|
104
|
+
*/
|
|
105
|
+
export function connectErrorFromH2ResetCode(rstCode) {
|
|
106
|
+
switch (rstCode) {
|
|
107
|
+
case H2Code.PROTOCOL_ERROR:
|
|
108
|
+
case H2Code.INTERNAL_ERROR:
|
|
109
|
+
case H2Code.FLOW_CONTROL_ERROR:
|
|
110
|
+
case H2Code.SETTINGS_TIMEOUT:
|
|
111
|
+
case H2Code.FRAME_SIZE_ERROR:
|
|
112
|
+
case H2Code.COMPRESSION_ERROR:
|
|
113
|
+
case H2Code.CONNECT_ERROR:
|
|
114
|
+
return new ConnectError(`http/2 stream closed with error code ${H2Code[rstCode]} (0x${rstCode.toString(16)})`, Code.Internal);
|
|
115
|
+
case H2Code.REFUSED_STREAM:
|
|
116
|
+
return new ConnectError(`http/2 stream closed with error code ${H2Code[rstCode]} (0x${rstCode.toString(16)})`, Code.Unavailable);
|
|
117
|
+
case H2Code.CANCEL:
|
|
118
|
+
return new ConnectError(`http/2 stream closed with error code ${H2Code[rstCode]} (0x${rstCode.toString(16)})`, Code.Canceled);
|
|
119
|
+
case H2Code.ENHANCE_YOUR_CALM:
|
|
120
|
+
return new ConnectError(`http/2 stream closed with error code ${H2Code[rstCode]} (0x${rstCode.toString(16)})`, Code.ResourceExhausted);
|
|
121
|
+
case H2Code.INADEQUATE_SECURITY:
|
|
122
|
+
return new ConnectError(`http/2 stream closed with error code ${H2Code[rstCode]} (0x${rstCode.toString(16)})`, Code.PermissionDenied);
|
|
123
|
+
case H2Code.HTTP_1_1_REQUIRED:
|
|
124
|
+
return new ConnectError(`http/2 stream closed with error code ${H2Code[rstCode]} (0x${rstCode.toString(16)})`, Code.PermissionDenied);
|
|
125
|
+
case H2Code.STREAM_CLOSED:
|
|
126
|
+
default:
|
|
127
|
+
// Intentionally not mapping STREAM_CLOSED (0x5), see https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#errors
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
return undefined;
|
|
131
|
+
}
|
|
132
|
+
export var H2Code;
|
|
133
|
+
(function (H2Code) {
|
|
134
|
+
H2Code[H2Code["PROTOCOL_ERROR"] = 1] = "PROTOCOL_ERROR";
|
|
135
|
+
H2Code[H2Code["INTERNAL_ERROR"] = 2] = "INTERNAL_ERROR";
|
|
136
|
+
H2Code[H2Code["FLOW_CONTROL_ERROR"] = 3] = "FLOW_CONTROL_ERROR";
|
|
137
|
+
H2Code[H2Code["SETTINGS_TIMEOUT"] = 4] = "SETTINGS_TIMEOUT";
|
|
138
|
+
H2Code[H2Code["STREAM_CLOSED"] = 5] = "STREAM_CLOSED";
|
|
139
|
+
H2Code[H2Code["FRAME_SIZE_ERROR"] = 6] = "FRAME_SIZE_ERROR";
|
|
140
|
+
H2Code[H2Code["REFUSED_STREAM"] = 7] = "REFUSED_STREAM";
|
|
141
|
+
H2Code[H2Code["CANCEL"] = 8] = "CANCEL";
|
|
142
|
+
H2Code[H2Code["COMPRESSION_ERROR"] = 9] = "COMPRESSION_ERROR";
|
|
143
|
+
H2Code[H2Code["CONNECT_ERROR"] = 10] = "CONNECT_ERROR";
|
|
144
|
+
H2Code[H2Code["ENHANCE_YOUR_CALM"] = 11] = "ENHANCE_YOUR_CALM";
|
|
145
|
+
H2Code[H2Code["INADEQUATE_SECURITY"] = 12] = "INADEQUATE_SECURITY";
|
|
146
|
+
H2Code[H2Code["HTTP_1_1_REQUIRED"] = 13] = "HTTP_1_1_REQUIRED";
|
|
147
|
+
})(H2Code || (H2Code = {}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Copyright 2021-2024 The Connect Authors
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
import { Headers as HeadersPolyfill } from "undici";
|
|
15
|
+
// The global Headers class was introduced in Node v16.15.0, behind the
|
|
16
|
+
// --experimental-fetch flag. It became available by default with Node
|
|
17
|
+
// v18.0.0.
|
|
18
|
+
// If this code runs in Node < 18, it installs an alternative
|
|
19
|
+
// implementation if one has not already been polyfilled.
|
|
20
|
+
const [major] = process.versions.node
|
|
21
|
+
.split(".")
|
|
22
|
+
.map((value) => parseInt(value, 10));
|
|
23
|
+
if (major < 18) {
|
|
24
|
+
if (typeof globalThis.Headers === "undefined") {
|
|
25
|
+
globalThis.Headers = HeadersPolyfill;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type { CommonTransportOptions, UniversalClientFn } from "@connectrpc/connect/protocol";
|
|
2
|
+
import type { NodeHttp2ClientSessionManager } from "./node-universal-client.js";
|
|
3
|
+
import type { Http2SessionOptions } from "./http2-session-manager.js";
|
|
4
|
+
import * as http2 from "http2";
|
|
5
|
+
import * as http from "http";
|
|
6
|
+
import * as https from "https";
|
|
7
|
+
/**
|
|
8
|
+
* Options specific to Node.js client transports.
|
|
9
|
+
*/
|
|
10
|
+
export type NodeTransportOptions = {
|
|
11
|
+
httpVersion: "1.1";
|
|
12
|
+
/**
|
|
13
|
+
* Options passed to the request() call of the Node.js built-in
|
|
14
|
+
* http or https module.
|
|
15
|
+
*/
|
|
16
|
+
nodeOptions?: Omit<http.RequestOptions, "signal"> | Omit<https.RequestOptions, "signal">;
|
|
17
|
+
} | ({
|
|
18
|
+
httpVersion: "2";
|
|
19
|
+
/**
|
|
20
|
+
* A manager for the HTTP/2 connection of the transport.
|
|
21
|
+
*
|
|
22
|
+
* Providing this option makes nodeOptions as well as the HTTP/2 session
|
|
23
|
+
* options (pingIntervalMs et cetera) ineffective.
|
|
24
|
+
*/
|
|
25
|
+
sessionManager?: NodeHttp2ClientSessionManager;
|
|
26
|
+
/**
|
|
27
|
+
* Options passed to the connect() call of the Node.js built-in
|
|
28
|
+
* http2 module.
|
|
29
|
+
*/
|
|
30
|
+
nodeOptions?: http2.ClientSessionOptions | http2.SecureClientSessionOptions;
|
|
31
|
+
} & Http2SessionOptions);
|
|
32
|
+
/**
|
|
33
|
+
* Asserts that the options are within sane limits, and returns default values
|
|
34
|
+
* where no value is provided.
|
|
35
|
+
*
|
|
36
|
+
* @private Internal code, does not follow semantic versioning.
|
|
37
|
+
*/
|
|
38
|
+
export declare function validateNodeTransportOptions(options: NodeTransportOptions & Partial<Omit<CommonTransportOptions, "baseUrl">> & Pick<CommonTransportOptions, "baseUrl">): {
|
|
39
|
+
readMaxBytes: number;
|
|
40
|
+
writeMaxBytes: number;
|
|
41
|
+
compressMinBytes: number;
|
|
42
|
+
httpClient: UniversalClientFn;
|
|
43
|
+
useBinaryFormat: boolean;
|
|
44
|
+
interceptors: import("@connectrpc/connect").Interceptor[];
|
|
45
|
+
sendCompression: import("@connectrpc/connect/protocol").Compression | null;
|
|
46
|
+
acceptCompression: import("@connectrpc/connect/protocol").Compression[];
|
|
47
|
+
httpVersion: "1.1";
|
|
48
|
+
/**
|
|
49
|
+
* Options passed to the request() call of the Node.js built-in
|
|
50
|
+
* http or https module.
|
|
51
|
+
*/
|
|
52
|
+
nodeOptions?: Omit<http.RequestOptions, "signal"> | Omit<https.RequestOptions, "signal">;
|
|
53
|
+
jsonOptions?: Partial<import("@bufbuild/protobuf").JsonReadOptions & import("@bufbuild/protobuf").JsonWriteOptions> | undefined;
|
|
54
|
+
binaryOptions?: Partial<import("@bufbuild/protobuf").BinaryReadOptions & import("@bufbuild/protobuf").BinaryWriteOptions> | undefined;
|
|
55
|
+
useHttpGet?: boolean | undefined;
|
|
56
|
+
defaultTimeoutMs?: number | undefined;
|
|
57
|
+
baseUrl: string;
|
|
58
|
+
} | {
|
|
59
|
+
readMaxBytes: number;
|
|
60
|
+
writeMaxBytes: number;
|
|
61
|
+
compressMinBytes: number;
|
|
62
|
+
httpClient: UniversalClientFn;
|
|
63
|
+
useBinaryFormat: boolean;
|
|
64
|
+
interceptors: import("@connectrpc/connect").Interceptor[];
|
|
65
|
+
sendCompression: import("@connectrpc/connect/protocol").Compression | null;
|
|
66
|
+
acceptCompression: import("@connectrpc/connect/protocol").Compression[];
|
|
67
|
+
httpVersion: "2";
|
|
68
|
+
/**
|
|
69
|
+
* A manager for the HTTP/2 connection of the transport.
|
|
70
|
+
*
|
|
71
|
+
* Providing this option makes nodeOptions as well as the HTTP/2 session
|
|
72
|
+
* options (pingIntervalMs et cetera) ineffective.
|
|
73
|
+
*/
|
|
74
|
+
sessionManager?: NodeHttp2ClientSessionManager;
|
|
75
|
+
/**
|
|
76
|
+
* Options passed to the connect() call of the Node.js built-in
|
|
77
|
+
* http2 module.
|
|
78
|
+
*/
|
|
79
|
+
nodeOptions?: http2.ClientSessionOptions | http2.SecureClientSessionOptions;
|
|
80
|
+
pingIntervalMs?: number;
|
|
81
|
+
pingIdleConnection?: boolean;
|
|
82
|
+
pingTimeoutMs?: number;
|
|
83
|
+
idleConnectionTimeoutMs?: number;
|
|
84
|
+
jsonOptions?: Partial<import("@bufbuild/protobuf").JsonReadOptions & import("@bufbuild/protobuf").JsonWriteOptions> | undefined;
|
|
85
|
+
binaryOptions?: Partial<import("@bufbuild/protobuf").BinaryReadOptions & import("@bufbuild/protobuf").BinaryWriteOptions> | undefined;
|
|
86
|
+
useHttpGet?: boolean | undefined;
|
|
87
|
+
defaultTimeoutMs?: number | undefined;
|
|
88
|
+
baseUrl: string;
|
|
89
|
+
};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// Copyright 2021-2024 The Connect Authors
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
import { validateReadWriteMaxBytes } from "@connectrpc/connect/protocol";
|
|
15
|
+
import { compressionBrotli, compressionGzip } from "./compression.js";
|
|
16
|
+
import { createNodeHttpClient } from "./node-universal-client.js";
|
|
17
|
+
import { Http2SessionManager } from "./http2-session-manager.js";
|
|
18
|
+
import * as http2 from "http2";
|
|
19
|
+
import * as http from "http";
|
|
20
|
+
import * as https from "https";
|
|
21
|
+
/**
|
|
22
|
+
* Asserts that the options are within sane limits, and returns default values
|
|
23
|
+
* where no value is provided.
|
|
24
|
+
*
|
|
25
|
+
* @private Internal code, does not follow semantic versioning.
|
|
26
|
+
*/
|
|
27
|
+
export function validateNodeTransportOptions(options) {
|
|
28
|
+
var _a, _b, _c, _d;
|
|
29
|
+
let httpClient;
|
|
30
|
+
if (options.httpVersion == "2") {
|
|
31
|
+
let sessionManager;
|
|
32
|
+
if (options.sessionManager) {
|
|
33
|
+
sessionManager = options.sessionManager;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
sessionManager = new Http2SessionManager(options.baseUrl, {
|
|
37
|
+
pingIntervalMs: options.pingIntervalMs,
|
|
38
|
+
pingIdleConnection: options.pingIdleConnection,
|
|
39
|
+
pingTimeoutMs: options.pingTimeoutMs,
|
|
40
|
+
idleConnectionTimeoutMs: options.idleConnectionTimeoutMs,
|
|
41
|
+
}, options.nodeOptions);
|
|
42
|
+
}
|
|
43
|
+
httpClient = createNodeHttpClient({
|
|
44
|
+
httpVersion: "2",
|
|
45
|
+
sessionProvider: () => sessionManager,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
httpClient = createNodeHttpClient({
|
|
50
|
+
httpVersion: "1.1",
|
|
51
|
+
nodeOptions: options.nodeOptions,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
return Object.assign(Object.assign(Object.assign({}, options), { httpClient, useBinaryFormat: (_a = options.useBinaryFormat) !== null && _a !== void 0 ? _a : true, interceptors: (_b = options.interceptors) !== null && _b !== void 0 ? _b : [], sendCompression: (_c = options.sendCompression) !== null && _c !== void 0 ? _c : null, acceptCompression: (_d = options.acceptCompression) !== null && _d !== void 0 ? _d : [
|
|
55
|
+
compressionGzip,
|
|
56
|
+
compressionBrotli,
|
|
57
|
+
] }), validateReadWriteMaxBytes(options.readMaxBytes, options.writeMaxBytes, options.compressMinBytes));
|
|
58
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import * as http2 from "http2";
|
|
2
|
+
import * as http from "http";
|
|
3
|
+
import * as https from "https";
|
|
4
|
+
import type { UniversalClientFn } from "@connectrpc/connect/protocol";
|
|
5
|
+
/**
|
|
6
|
+
* Options for creating an UniversalClientFn using the Node.js `http`, `https`,
|
|
7
|
+
* or `http2` module.
|
|
8
|
+
*/
|
|
9
|
+
export type NodeHttpClientOptions = {
|
|
10
|
+
/**
|
|
11
|
+
* Use the Node.js `http` or `https` module.
|
|
12
|
+
*/
|
|
13
|
+
httpVersion: "1.1";
|
|
14
|
+
/**
|
|
15
|
+
* Options passed to the request() call of the Node.js built-in
|
|
16
|
+
* http or https module.
|
|
17
|
+
*/
|
|
18
|
+
nodeOptions?: Omit<http.RequestOptions, "signal"> | Omit<https.RequestOptions, "signal">;
|
|
19
|
+
} | {
|
|
20
|
+
/**
|
|
21
|
+
* Use the Node.js `http2` module.
|
|
22
|
+
*/
|
|
23
|
+
httpVersion: "2";
|
|
24
|
+
/**
|
|
25
|
+
* A function that must return a session manager for the given URL.
|
|
26
|
+
* The session manager may be taken from a pool.
|
|
27
|
+
* By default, a new Http2SessionManager is created for every request.
|
|
28
|
+
*/
|
|
29
|
+
sessionProvider?: (url: string) => NodeHttp2ClientSessionManager;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Create a universal client function, a minimal abstraction of an HTTP client,
|
|
33
|
+
* using the Node.js `http`, `https`, or `http2` module.
|
|
34
|
+
*
|
|
35
|
+
* @private Internal code, does not follow semantic versioning.
|
|
36
|
+
*/
|
|
37
|
+
export declare function createNodeHttpClient(options: NodeHttpClientOptions): UniversalClientFn;
|
|
38
|
+
/**
|
|
39
|
+
* Manager for a HTTP/2 session.
|
|
40
|
+
*/
|
|
41
|
+
export interface NodeHttp2ClientSessionManager {
|
|
42
|
+
/**
|
|
43
|
+
* The host this session manager connects to.
|
|
44
|
+
*/
|
|
45
|
+
authority: string;
|
|
46
|
+
/**
|
|
47
|
+
* Issue a request.
|
|
48
|
+
*/
|
|
49
|
+
request(method: string, path: string, headers: http2.OutgoingHttpHeaders, options: Omit<http2.ClientSessionRequestOptions, "signal">): Promise<http2.ClientHttp2Stream>;
|
|
50
|
+
/**
|
|
51
|
+
* Notify the manager of a successful read from a http2.ClientHttp2Stream.
|
|
52
|
+
*/
|
|
53
|
+
notifyResponseByteRead(stream: http2.ClientHttp2Stream): void;
|
|
54
|
+
}
|