@typespec/ts-http-runtime 0.3.4-alpha.20260227.2 → 0.3.4
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/dist/browser/client/sendRequest.d.ts +10 -1
- package/dist/browser/client/sendRequest.js +8 -2
- package/dist/browser/client/sendRequest.js.map +1 -1
- package/dist/browser/defaultHttpClient.d.ts +1 -1
- package/dist/browser/defaultHttpClient.js +1 -1
- package/dist/browser/defaultHttpClient.js.map +1 -0
- package/dist/browser/index.d.ts +2 -2
- package/dist/browser/index.js +0 -2
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/logger/log.d.ts +1 -1
- package/dist/browser/logger/log.js +1 -1
- package/dist/browser/logger/log.js.map +1 -0
- package/dist/browser/pipelineRequest.d.ts +1 -1
- package/dist/browser/pipelineRequest.js.map +1 -1
- package/dist/browser/policies/decompressResponsePolicy.d.ts +3 -2
- package/dist/browser/policies/decompressResponsePolicy.js +1 -4
- package/dist/browser/policies/decompressResponsePolicy.js.map +1 -0
- package/dist/browser/policies/internal.d.ts +7 -7
- package/dist/browser/policies/internal.js +2 -2
- package/dist/browser/policies/internal.js.map +1 -1
- package/dist/browser/policies/proxyPolicy.common.d.ts +7 -3
- package/dist/browser/policies/proxyPolicy.common.js +2 -2
- package/dist/browser/policies/proxyPolicy.common.js.map +1 -1
- package/dist/browser/policies/proxyPolicy.d.ts +1 -1
- package/dist/browser/policies/proxyPolicy.js +1 -1
- package/dist/browser/policies/proxyPolicy.js.map +1 -0
- package/dist/browser/policies/redirectPolicy.d.ts +7 -0
- package/dist/browser/policies/redirectPolicy.js +13 -4
- package/dist/browser/policies/redirectPolicy.js.map +1 -1
- package/dist/browser/util/bytesEncoding.d.ts +1 -1
- package/dist/browser/util/bytesEncoding.js +1 -1
- package/dist/browser/util/bytesEncoding.js.map +1 -0
- package/dist/browser/util/concat.common.d.ts +1 -2
- package/dist/browser/util/concat.common.js.map +1 -1
- package/dist/browser/util/concat.d.ts +1 -1
- package/dist/browser/util/concat.js +1 -1
- package/dist/browser/util/concat.js.map +1 -0
- package/dist/browser/util/inspect.d.ts +1 -1
- package/dist/browser/util/inspect.js +1 -1
- package/dist/browser/util/inspect.js.map +1 -0
- package/dist/browser/util/sha256.d.ts +1 -1
- package/dist/browser/util/sha256.js +1 -1
- package/dist/browser/util/sha256.js.map +1 -0
- package/dist/browser/util/userAgentPlatform.d.ts +1 -1
- package/dist/browser/util/userAgentPlatform.js +1 -1
- package/dist/browser/util/userAgentPlatform.js.map +1 -0
- package/dist/browser/util/uuidUtils.d.ts +1 -1
- package/dist/browser/util/uuidUtils.js +1 -1
- package/dist/browser/util/uuidUtils.js.map +1 -0
- package/dist/commonjs/abort-controller/AbortError.js +30 -40
- package/dist/commonjs/abort-controller/AbortError.js.map +7 -1
- package/dist/commonjs/auth/credentials.js +36 -25
- package/dist/commonjs/auth/credentials.js.map +7 -1
- package/dist/commonjs/auth/oauth2Flows.js +15 -5
- package/dist/commonjs/auth/oauth2Flows.js.map +7 -1
- package/dist/commonjs/auth/schemes.js +15 -5
- package/dist/commonjs/auth/schemes.js.map +7 -1
- package/dist/commonjs/client/apiVersionPolicy.js +39 -25
- package/dist/commonjs/client/apiVersionPolicy.js.map +7 -1
- package/dist/commonjs/client/clientHelpers.js +62 -39
- package/dist/commonjs/client/clientHelpers.js.map +7 -1
- package/dist/commonjs/client/common.js +15 -5
- package/dist/commonjs/client/common.js.map +7 -1
- package/dist/commonjs/client/getClient.js +170 -82
- package/dist/commonjs/client/getClient.js.map +7 -1
- package/dist/commonjs/client/multipart.js +119 -110
- package/dist/commonjs/client/multipart.js.map +7 -1
- package/dist/commonjs/client/operationOptionHelpers.js +36 -21
- package/dist/commonjs/client/operationOptionHelpers.js.map +7 -1
- package/dist/commonjs/client/restError.js +44 -26
- package/dist/commonjs/client/restError.js.map +7 -1
- package/dist/commonjs/client/sendRequest.d.ts +10 -1
- package/dist/commonjs/client/sendRequest.js +150 -164
- package/dist/commonjs/client/sendRequest.js.map +7 -1
- package/dist/commonjs/client/urlHelpers.js +124 -131
- package/dist/commonjs/client/urlHelpers.js.map +7 -1
- package/dist/commonjs/constants.js +30 -8
- package/dist/commonjs/constants.js.map +7 -1
- package/dist/commonjs/createPipelineFromOptions.js +56 -45
- package/dist/commonjs/createPipelineFromOptions.js.map +7 -1
- package/dist/commonjs/defaultHttpClient.js +28 -11
- package/dist/commonjs/defaultHttpClient.js.map +7 -1
- package/dist/commonjs/fetchHttpClient.js +211 -256
- package/dist/commonjs/fetchHttpClient.js.map +7 -1
- package/dist/commonjs/httpHeaders.js +97 -82
- package/dist/commonjs/httpHeaders.js.map +7 -1
- package/dist/commonjs/index.d.ts +2 -2
- package/dist/commonjs/index.js +67 -36
- package/dist/commonjs/index.js.map +7 -1
- package/dist/commonjs/interfaces.js +15 -5
- package/dist/commonjs/interfaces.js.map +7 -1
- package/dist/commonjs/log.js +28 -8
- package/dist/commonjs/log.js.map +7 -1
- package/dist/commonjs/logger/debug.js +150 -155
- package/dist/commonjs/logger/debug.js.map +7 -1
- package/dist/commonjs/logger/internal.js +27 -8
- package/dist/commonjs/logger/internal.js.map +7 -1
- package/dist/commonjs/logger/log.common.js +39 -23
- package/dist/commonjs/logger/log.common.js.map +7 -1
- package/dist/commonjs/logger/log.js +40 -11
- package/dist/commonjs/logger/log.js.map +7 -1
- package/dist/commonjs/logger/logger.js +120 -110
- package/dist/commonjs/logger/logger.js.map +7 -1
- package/dist/commonjs/nodeHttpClient.js +313 -321
- package/dist/commonjs/nodeHttpClient.js.map +7 -1
- package/dist/commonjs/pipeline.js +190 -247
- package/dist/commonjs/pipeline.js.map +7 -1
- package/dist/commonjs/pipelineRequest.d.ts +1 -1
- package/dist/commonjs/pipelineRequest.js +69 -54
- package/dist/commonjs/pipelineRequest.js.map +7 -1
- package/dist/commonjs/policies/agentPolicy.js +38 -24
- package/dist/commonjs/policies/agentPolicy.js.map +7 -1
- package/dist/commonjs/policies/auth/apiKeyAuthenticationPolicy.js +45 -32
- package/dist/commonjs/policies/auth/apiKeyAuthenticationPolicy.js.map +7 -1
- package/dist/commonjs/policies/auth/basicAuthenticationPolicy.js +50 -32
- package/dist/commonjs/policies/auth/basicAuthenticationPolicy.js.map +7 -1
- package/dist/commonjs/policies/auth/bearerAuthenticationPolicy.js +47 -32
- package/dist/commonjs/policies/auth/bearerAuthenticationPolicy.js.map +7 -1
- package/dist/commonjs/policies/auth/checkInsecureConnection.js +47 -44
- package/dist/commonjs/policies/auth/checkInsecureConnection.js.map +7 -1
- package/dist/commonjs/policies/auth/oauth2AuthenticationPolicy.js +45 -32
- package/dist/commonjs/policies/auth/oauth2AuthenticationPolicy.js.map +7 -1
- package/dist/commonjs/policies/decompressResponsePolicy.js +38 -25
- package/dist/commonjs/policies/decompressResponsePolicy.js.map +7 -1
- package/dist/commonjs/policies/defaultRetryPolicy.js +39 -27
- package/dist/commonjs/policies/defaultRetryPolicy.js.map +7 -1
- package/dist/commonjs/policies/exponentialRetryPolicy.js +43 -26
- package/dist/commonjs/policies/exponentialRetryPolicy.js.map +7 -1
- package/dist/commonjs/policies/formDataPolicy.js +101 -90
- package/dist/commonjs/policies/formDataPolicy.js.map +7 -1
- package/dist/commonjs/policies/internal.d.ts +7 -7
- package/dist/commonjs/policies/internal.js +94 -48
- package/dist/commonjs/policies/internal.js.map +7 -1
- package/dist/commonjs/policies/logPolicy.js +49 -35
- package/dist/commonjs/policies/logPolicy.js.map +7 -1
- package/dist/commonjs/policies/multipartPolicy.js +117 -99
- package/dist/commonjs/policies/multipartPolicy.js.map +7 -1
- package/dist/commonjs/policies/proxyPolicy.common.d.ts +7 -3
- package/dist/commonjs/policies/proxyPolicy.common.js +38 -25
- package/dist/commonjs/policies/proxyPolicy.common.js.map +7 -1
- package/dist/commonjs/policies/proxyPolicy.js +160 -171
- package/dist/commonjs/policies/proxyPolicy.js.map +7 -1
- package/dist/commonjs/policies/redirectPolicy.d.ts +7 -0
- package/dist/commonjs/policies/redirectPolicy.js +62 -51
- package/dist/commonjs/policies/redirectPolicy.js.map +7 -1
- package/dist/commonjs/policies/retryPolicy.js +123 -105
- package/dist/commonjs/policies/retryPolicy.js.map +7 -1
- package/dist/commonjs/policies/systemErrorRetryPolicy.js +46 -31
- package/dist/commonjs/policies/systemErrorRetryPolicy.js.map +7 -1
- package/dist/commonjs/policies/throttlingRetryPolicy.js +38 -30
- package/dist/commonjs/policies/throttlingRetryPolicy.js.map +7 -1
- package/dist/commonjs/policies/tlsPolicy.js +38 -24
- package/dist/commonjs/policies/tlsPolicy.js.map +7 -1
- package/dist/commonjs/policies/userAgentPolicy.js +41 -28
- package/dist/commonjs/policies/userAgentPolicy.js.map +7 -1
- package/dist/commonjs/restError.js +93 -90
- package/dist/commonjs/restError.js.map +7 -1
- package/dist/commonjs/retryStrategies/exponentialRetryStrategy.js +63 -62
- package/dist/commonjs/retryStrategies/exponentialRetryStrategy.js.map +7 -1
- package/dist/commonjs/retryStrategies/retryStrategy.js +15 -5
- package/dist/commonjs/retryStrategies/retryStrategy.js.map +7 -1
- package/dist/commonjs/retryStrategies/throttlingRetryStrategy.js +58 -69
- package/dist/commonjs/retryStrategies/throttlingRetryStrategy.js.map +7 -1
- package/dist/commonjs/util/arrayBuffer.js +34 -21
- package/dist/commonjs/util/arrayBuffer.js.map +7 -1
- package/dist/commonjs/util/bytesEncoding.common.js +83 -100
- package/dist/commonjs/util/bytesEncoding.common.js.map +7 -1
- package/dist/commonjs/util/bytesEncoding.js +30 -21
- package/dist/commonjs/util/bytesEncoding.js.map +7 -1
- package/dist/commonjs/util/checkEnvironment.js +45 -44
- package/dist/commonjs/util/checkEnvironment.js.map +7 -1
- package/dist/commonjs/util/concat.common.d.ts +1 -2
- package/dist/commonjs/util/concat.common.js +51 -52
- package/dist/commonjs/util/concat.common.js.map +7 -1
- package/dist/commonjs/util/concat.js +70 -61
- package/dist/commonjs/util/concat.js.map +7 -1
- package/dist/commonjs/util/delay.js +31 -21
- package/dist/commonjs/util/delay.js.map +7 -1
- package/dist/commonjs/util/error.js +33 -17
- package/dist/commonjs/util/error.js.map +7 -1
- package/dist/commonjs/util/helpers.js +65 -57
- package/dist/commonjs/util/helpers.js.map +7 -1
- package/dist/commonjs/util/inspect.common.js +27 -7
- package/dist/commonjs/util/inspect.common.js.map +7 -1
- package/dist/commonjs/util/inspect.js +28 -8
- package/dist/commonjs/util/inspect.js.map +7 -1
- package/dist/commonjs/util/internal.js +67 -32
- package/dist/commonjs/util/internal.js.map +7 -1
- package/dist/commonjs/util/object.js +27 -15
- package/dist/commonjs/util/object.js.map +7 -1
- package/dist/commonjs/util/random.js +30 -22
- package/dist/commonjs/util/random.js.map +7 -1
- package/dist/commonjs/util/sanitizer.js +157 -148
- package/dist/commonjs/util/sanitizer.js.map +7 -1
- package/dist/commonjs/util/sha256.common.js +61 -45
- package/dist/commonjs/util/sha256.common.js.map +7 -1
- package/dist/commonjs/util/sha256.js +32 -22
- package/dist/commonjs/util/sha256.js.map +7 -1
- package/dist/commonjs/util/typeGuards.js +41 -21
- package/dist/commonjs/util/typeGuards.js.map +7 -1
- package/dist/commonjs/util/userAgent.js +43 -28
- package/dist/commonjs/util/userAgent.js.map +7 -1
- package/dist/commonjs/util/userAgentPlatform.js +51 -29
- package/dist/commonjs/util/userAgentPlatform.js.map +7 -1
- package/dist/commonjs/util/uuidUtils.common.js +43 -39
- package/dist/commonjs/util/uuidUtils.common.js.map +7 -1
- package/dist/commonjs/util/uuidUtils.js +27 -12
- package/dist/commonjs/util/uuidUtils.js.map +7 -1
- package/dist/commonjs/xhrHttpClient.js +171 -163
- package/dist/commonjs/xhrHttpClient.js.map +7 -1
- package/dist/esm/client/sendRequest.d.ts +10 -1
- package/dist/esm/client/sendRequest.js +8 -2
- package/dist/esm/client/sendRequest.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +0 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/pipelineRequest.d.ts +1 -1
- package/dist/esm/pipelineRequest.js.map +1 -1
- package/dist/esm/policies/internal.d.ts +7 -7
- package/dist/esm/policies/internal.js +2 -2
- package/dist/esm/policies/internal.js.map +1 -1
- package/dist/esm/policies/proxyPolicy.common.d.ts +7 -3
- package/dist/esm/policies/proxyPolicy.common.js +2 -2
- package/dist/esm/policies/proxyPolicy.common.js.map +1 -1
- package/dist/esm/policies/redirectPolicy.d.ts +7 -0
- package/dist/esm/policies/redirectPolicy.js +13 -4
- package/dist/esm/policies/redirectPolicy.js.map +1 -1
- package/dist/esm/util/concat.common.d.ts +1 -2
- package/dist/esm/util/concat.common.js.map +1 -1
- package/dist/react-native/client/sendRequest.d.ts +10 -1
- package/dist/react-native/client/sendRequest.js +8 -2
- package/dist/react-native/client/sendRequest.js.map +1 -1
- package/dist/react-native/defaultHttpClient.d.ts +1 -1
- package/dist/react-native/defaultHttpClient.js +1 -1
- package/dist/react-native/defaultHttpClient.js.map +1 -0
- package/dist/react-native/index.d.ts +2 -2
- package/dist/react-native/index.js +0 -2
- package/dist/react-native/index.js.map +1 -1
- package/dist/react-native/logger/log.d.ts +1 -1
- package/dist/react-native/logger/log.js +1 -1
- package/dist/react-native/logger/log.js.map +1 -0
- package/dist/react-native/pipelineRequest.d.ts +1 -1
- package/dist/react-native/pipelineRequest.js.map +1 -1
- package/dist/react-native/policies/internal.d.ts +7 -7
- package/dist/react-native/policies/internal.js +2 -2
- package/dist/react-native/policies/internal.js.map +1 -1
- package/dist/react-native/policies/proxyPolicy.common.d.ts +7 -3
- package/dist/react-native/policies/proxyPolicy.common.js +2 -2
- package/dist/react-native/policies/proxyPolicy.common.js.map +1 -1
- package/dist/react-native/policies/proxyPolicy.d.ts +1 -1
- package/dist/react-native/policies/proxyPolicy.js +1 -1
- package/dist/react-native/policies/proxyPolicy.js.map +1 -0
- package/dist/react-native/policies/redirectPolicy.d.ts +7 -0
- package/dist/react-native/policies/redirectPolicy.js +13 -4
- package/dist/react-native/policies/redirectPolicy.js.map +1 -1
- package/dist/react-native/util/bytesEncoding.d.ts +1 -1
- package/dist/react-native/util/bytesEncoding.js +1 -1
- package/dist/react-native/util/bytesEncoding.js.map +1 -0
- package/dist/react-native/util/concat.common.d.ts +1 -2
- package/dist/react-native/util/concat.common.js.map +1 -1
- package/dist/react-native/util/concat.d.ts +1 -1
- package/dist/react-native/util/concat.js +1 -1
- package/dist/react-native/util/concat.js.map +1 -0
- package/dist/react-native/util/inspect.d.ts +1 -1
- package/dist/react-native/util/inspect.js +1 -1
- package/dist/react-native/util/inspect.js.map +1 -0
- package/dist/react-native/util/sha256.d.ts +1 -1
- package/dist/react-native/util/sha256.js +1 -1
- package/dist/react-native/util/sha256.js.map +1 -0
- package/dist/react-native/util/userAgentPlatform.d.ts +1 -1
- package/dist/react-native/util/userAgentPlatform.js +1 -1
- package/dist/react-native/util/userAgentPlatform.js.map +1 -0
- package/dist/react-native/util/uuidUtils.d.ts +1 -1
- package/dist/react-native/util/uuidUtils.js +1 -1
- package/dist/react-native/util/uuidUtils.js.map +1 -0
- package/package.json +1 -21
- package/dist/browser/defaultHttpClient-browser.mjs.map +0 -1
- package/dist/browser/logger/log-browser.mjs.map +0 -1
- package/dist/browser/policies/decompressResponsePolicy-browser.mjs.map +0 -1
- package/dist/browser/policies/proxyPolicy-browser.mjs.map +0 -1
- package/dist/browser/util/bytesEncoding-browser.mjs.map +0 -1
- package/dist/browser/util/concat-browser.mjs.map +0 -1
- package/dist/browser/util/inspect-browser.mjs.map +0 -1
- package/dist/browser/util/sha256-browser.mjs.map +0 -1
- package/dist/browser/util/userAgentPlatform-browser.mjs.map +0 -1
- package/dist/browser/util/uuidUtils-browser.mjs.map +0 -1
- package/dist/react-native/defaultHttpClient-react-native.mjs.map +0 -1
- package/dist/react-native/logger/log-react-native.mjs.map +0 -1
- package/dist/react-native/policies/proxyPolicy-react-native.mjs.map +0 -1
- package/dist/react-native/util/bytesEncoding-react-native.mjs.map +0 -1
- package/dist/react-native/util/concat-react-native.mjs.map +0 -1
- package/dist/react-native/util/inspect-react-native.mjs.map +0 -1
- package/dist/react-native/util/sha256-react-native.mjs.map +0 -1
- package/dist/react-native/util/userAgentPlatform-react-native.mjs.map +0 -1
- package/dist/react-native/util/uuidUtils-react-native.mjs.map +0 -1
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{"version":3,"file":"nodeHttpClient.js","sourceRoot":"","sources":["../../src/nodeHttpClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport http from \"node:http\";\nimport https from \"node:https\";\nimport zlib from \"node:zlib\";\nimport { Transform } from \"node:stream\";\nimport { AbortError } from \"./abort-controller/AbortError.js\";\nimport type {\n HttpClient,\n HttpHeaders,\n PipelineRequest,\n PipelineResponse,\n RequestBodyType,\n TlsSettings,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { RestError } from \"./restError.js\";\nimport type { IncomingMessage } from \"node:http\";\nimport { logger } from \"./log.js\";\nimport { Sanitizer } from \"./util/sanitizer.js\";\n\nconst DEFAULT_TLS_SETTINGS = {};\n\nfunction isReadableStream(body: any): body is NodeJS.ReadableStream {\n return body && typeof body.pipe === \"function\";\n}\n\nfunction isStreamComplete(stream: NodeJS.ReadableStream): Promise<void> {\n if (stream.readable === false) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n const handler = (): void => {\n resolve();\n stream.removeListener(\"close\", handler);\n stream.removeListener(\"end\", handler);\n stream.removeListener(\"error\", handler);\n };\n\n stream.on(\"close\", handler);\n stream.on(\"end\", handler);\n stream.on(\"error\", handler);\n });\n}\n\nfunction isArrayBuffer(body: any): body is ArrayBuffer | ArrayBufferView {\n return body && typeof body.byteLength === \"number\";\n}\n\nclass ReportTransform extends Transform {\n private loadedBytes = 0;\n private progressCallback: (progress: TransferProgressEvent) => void;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n _transform(chunk: string | Buffer, _encoding: string, callback: Function): void {\n this.push(chunk);\n this.loadedBytes += chunk.length;\n try {\n this.progressCallback({ loadedBytes: this.loadedBytes });\n callback();\n } catch (e: any) {\n callback(e);\n }\n }\n\n constructor(progressCallback: (progress: TransferProgressEvent) => void) {\n super();\n this.progressCallback = progressCallback;\n }\n}\n\n/**\n * A HttpClient implementation that uses Node's \"https\" module to send HTTPS requests.\n * @internal\n */\nclass NodeHttpClient implements HttpClient {\n private cachedHttpAgent?: http.Agent;\n private cachedHttpsAgents: WeakMap<TlsSettings, https.Agent> = new WeakMap();\n\n /**\n * Makes a request over an underlying transport layer and returns the response.\n * @param request - The request to be made.\n */\n public async sendRequest(request: PipelineRequest): Promise<PipelineResponse> {\n const abortController = new AbortController();\n let abortListener: ((event: any) => void) | undefined;\n if (request.abortSignal) {\n if (request.abortSignal.aborted) {\n throw new AbortError(\"The operation was aborted. Request has already been canceled.\");\n }\n\n abortListener = (event: Event) => {\n if (event.type === \"abort\") {\n abortController.abort();\n }\n };\n request.abortSignal.addEventListener(\"abort\", abortListener);\n }\n\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n if (request.timeout > 0) {\n timeoutId = setTimeout(() => {\n const sanitizer = new Sanitizer();\n logger.info(`request to '${sanitizer.sanitizeUrl(request.url)}' timed out. canceling...`);\n abortController.abort();\n }, request.timeout);\n }\n\n const acceptEncoding = request.headers.get(\"Accept-Encoding\");\n const shouldDecompress =\n acceptEncoding?.includes(\"gzip\") || acceptEncoding?.includes(\"deflate\");\n\n let body = typeof request.body === \"function\" ? request.body() : request.body;\n if (body && !request.headers.has(\"Content-Length\")) {\n const bodyLength = getBodyLength(body);\n if (bodyLength !== null) {\n request.headers.set(\"Content-Length\", bodyLength);\n }\n }\n\n let responseStream: NodeJS.ReadableStream | undefined;\n try {\n if (body && request.onUploadProgress) {\n const onUploadProgress = request.onUploadProgress;\n const uploadReportStream = new ReportTransform(onUploadProgress);\n uploadReportStream.on(\"error\", (e) => {\n logger.error(\"Error in upload progress\", e);\n });\n if (isReadableStream(body)) {\n body.pipe(uploadReportStream);\n } else {\n uploadReportStream.end(body);\n }\n\n body = uploadReportStream;\n }\n\n const res = await this.makeRequest(request, abortController, body);\n\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n\n const headers = getResponseHeaders(res);\n\n const status = res.statusCode ?? 0;\n const response: PipelineResponse = {\n status,\n headers,\n request,\n };\n\n // Responses to HEAD must not have a body.\n // If they do return a body, that body must be ignored.\n if (request.method === \"HEAD\") {\n // call resume() and not destroy() to avoid closing the socket\n // and losing keep alive\n res.resume();\n return response;\n }\n\n responseStream = shouldDecompress ? getDecodedResponseStream(res, headers) : res;\n\n const onDownloadProgress = request.onDownloadProgress;\n if (onDownloadProgress) {\n const downloadReportStream = new ReportTransform(onDownloadProgress);\n downloadReportStream.on(\"error\", (e) => {\n logger.error(\"Error in download progress\", e);\n });\n responseStream.pipe(downloadReportStream);\n responseStream = downloadReportStream;\n }\n\n if (\n // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n request.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY) ||\n request.streamResponseStatusCodes?.has(response.status)\n ) {\n response.readableStreamBody = responseStream;\n } else {\n response.bodyAsText = await streamToText(responseStream);\n }\n\n return response;\n } finally {\n // clean up event listener\n if (request.abortSignal && abortListener) {\n let uploadStreamDone = Promise.resolve();\n if (isReadableStream(body)) {\n uploadStreamDone = isStreamComplete(body);\n }\n let downloadStreamDone = Promise.resolve();\n if (isReadableStream(responseStream)) {\n downloadStreamDone = isStreamComplete(responseStream);\n }\n Promise.all([uploadStreamDone, downloadStreamDone])\n .then(() => {\n // eslint-disable-next-line promise/always-return\n if (abortListener) {\n request.abortSignal?.removeEventListener(\"abort\", abortListener);\n }\n })\n .catch((e) => {\n logger.warning(\"Error when cleaning up abortListener on httpRequest\", e);\n });\n }\n }\n }\n\n private makeRequest(\n request: PipelineRequest,\n abortController: AbortController,\n body?: RequestBodyType,\n ): Promise<http.IncomingMessage> {\n const url = new URL(request.url);\n\n const isInsecure = url.protocol !== \"https:\";\n\n if (isInsecure && !request.allowInsecureConnection) {\n throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n }\n\n const agent = (request.agent as http.Agent) ?? this.getOrCreateAgent(request, isInsecure);\n const options: http.RequestOptions = {\n agent,\n hostname: url.hostname,\n path: `${url.pathname}${url.search}`,\n port: url.port,\n method: request.method,\n headers: request.headers.toJSON({ preserveCase: true }),\n ...request.requestOverrides,\n };\n\n return new Promise<http.IncomingMessage>((resolve, reject) => {\n const req = isInsecure ? http.request(options, resolve) : https.request(options, resolve);\n\n req.once(\"error\", (err: Error & { code?: string }) => {\n reject(\n new RestError(err.message, { code: err.code ?? RestError.REQUEST_SEND_ERROR, request }),\n );\n });\n\n abortController.signal.addEventListener(\"abort\", () => {\n const abortError = new AbortError(\n \"The operation was aborted. Rejecting from abort signal callback while making request.\",\n );\n req.destroy(abortError);\n reject(abortError);\n });\n if (body && isReadableStream(body)) {\n body.pipe(req);\n } else if (body) {\n if (typeof body === \"string\" || Buffer.isBuffer(body)) {\n req.end(body);\n } else if (isArrayBuffer(body)) {\n req.end(ArrayBuffer.isView(body) ? Buffer.from(body.buffer) : Buffer.from(body));\n } else {\n logger.error(\"Unrecognized body type\", body);\n reject(new RestError(\"Unrecognized body type\"));\n }\n } else {\n // streams don't like \"undefined\" being passed as data\n req.end();\n }\n });\n }\n\n private getOrCreateAgent(request: PipelineRequest, isInsecure: boolean): http.Agent {\n const disableKeepAlive = request.disableKeepAlive;\n\n // Handle Insecure requests first\n if (isInsecure) {\n if (disableKeepAlive) {\n // keepAlive:false is the default so we don't need a custom Agent\n return http.globalAgent;\n }\n\n if (!this.cachedHttpAgent) {\n // If there is no cached agent create a new one and cache it.\n this.cachedHttpAgent = new http.Agent({ keepAlive: true });\n }\n return this.cachedHttpAgent;\n } else {\n if (disableKeepAlive && !request.tlsSettings) {\n // When there are no tlsSettings and keepAlive is false\n // we don't need a custom agent\n return https.globalAgent;\n }\n\n // We use the tlsSettings to index cached clients\n const tlsSettings = request.tlsSettings ?? DEFAULT_TLS_SETTINGS;\n\n // Get the cached agent or create a new one with the\n // provided values for keepAlive and tlsSettings\n let agent = this.cachedHttpsAgents.get(tlsSettings);\n\n if (agent && agent.options.keepAlive === !disableKeepAlive) {\n return agent;\n }\n\n logger.info(\"No cached TLS Agent exist, creating a new Agent\");\n agent = new https.Agent({\n // keepAlive is true if disableKeepAlive is false.\n keepAlive: !disableKeepAlive,\n // Since we are spreading, if no tslSettings were provided, nothing is added to the agent options.\n ...tlsSettings,\n });\n\n this.cachedHttpsAgents.set(tlsSettings, agent);\n return agent;\n }\n }\n}\n\nfunction getResponseHeaders(res: IncomingMessage): HttpHeaders {\n const headers = createHttpHeaders();\n for (const header of Object.keys(res.headers)) {\n const value = res.headers[header];\n if (Array.isArray(value)) {\n if (value.length > 0) {\n headers.set(header, value[0]);\n }\n } else if (value) {\n headers.set(header, value);\n }\n }\n return headers;\n}\n\nfunction getDecodedResponseStream(\n stream: IncomingMessage,\n headers: HttpHeaders,\n): NodeJS.ReadableStream {\n const contentEncoding = headers.get(\"Content-Encoding\");\n if (contentEncoding === \"gzip\") {\n const unzip = zlib.createGunzip();\n stream.pipe(unzip);\n return unzip;\n } else if (contentEncoding === \"deflate\") {\n const inflate = zlib.createInflate();\n stream.pipe(inflate);\n return inflate;\n }\n\n return stream;\n}\n\nfunction streamToText(stream: NodeJS.ReadableStream): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n const buffer: Buffer[] = [];\n\n stream.on(\"data\", (chunk) => {\n if (Buffer.isBuffer(chunk)) {\n buffer.push(chunk);\n } else {\n buffer.push(Buffer.from(chunk));\n }\n });\n stream.on(\"end\", () => {\n resolve(Buffer.concat(buffer).toString(\"utf8\"));\n });\n stream.on(\"error\", (e) => {\n if (e && e?.name === \"AbortError\") {\n reject(e);\n } else {\n reject(\n new RestError(`Error reading response as text: ${e.message}`, {\n code: RestError.PARSE_ERROR,\n }),\n );\n }\n });\n });\n}\n\n/** @internal */\nexport function getBodyLength(body: RequestBodyType): number | null {\n if (!body) {\n return 0;\n } else if (Buffer.isBuffer(body)) {\n return body.length;\n } else if (isReadableStream(body)) {\n return null;\n } else if (isArrayBuffer(body)) {\n return body.byteLength;\n } else if (typeof body === \"string\") {\n return Buffer.from(body).length;\n } else {\n return null;\n }\n}\n\n/**\n * Create a new HttpClient instance for the NodeJS environment.\n * @internal\n */\nexport function createNodeHttpClient(): HttpClient {\n return new NodeHttpClient();\n}\n"]}
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["/mnt/vss/_work/1/s/sdk/core/ts-http-runtime/src/nodeHttpClient.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport http from \"node:http\";\nimport https from \"node:https\";\nimport zlib from \"node:zlib\";\nimport { Transform } from \"node:stream\";\nimport { AbortError } from \"./abort-controller/AbortError.js\";\nimport type {\n HttpClient,\n HttpHeaders,\n PipelineRequest,\n PipelineResponse,\n RequestBodyType,\n TlsSettings,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { RestError } from \"./restError.js\";\nimport type { IncomingMessage } from \"node:http\";\nimport { logger } from \"./log.js\";\nimport { Sanitizer } from \"./util/sanitizer.js\";\n\nconst DEFAULT_TLS_SETTINGS = {};\n\nfunction isReadableStream(body: any): body is NodeJS.ReadableStream {\n return body && typeof body.pipe === \"function\";\n}\n\nfunction isStreamComplete(stream: NodeJS.ReadableStream): Promise<void> {\n if (stream.readable === false) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n const handler = (): void => {\n resolve();\n stream.removeListener(\"close\", handler);\n stream.removeListener(\"end\", handler);\n stream.removeListener(\"error\", handler);\n };\n\n stream.on(\"close\", handler);\n stream.on(\"end\", handler);\n stream.on(\"error\", handler);\n });\n}\n\nfunction isArrayBuffer(body: any): body is ArrayBuffer | ArrayBufferView {\n return body && typeof body.byteLength === \"number\";\n}\n\nclass ReportTransform extends Transform {\n private loadedBytes = 0;\n private progressCallback: (progress: TransferProgressEvent) => void;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n _transform(chunk: string | Buffer, _encoding: string, callback: Function): void {\n this.push(chunk);\n this.loadedBytes += chunk.length;\n try {\n this.progressCallback({ loadedBytes: this.loadedBytes });\n callback();\n } catch (e: any) {\n callback(e);\n }\n }\n\n constructor(progressCallback: (progress: TransferProgressEvent) => void) {\n super();\n this.progressCallback = progressCallback;\n }\n}\n\n/**\n * A HttpClient implementation that uses Node's \"https\" module to send HTTPS requests.\n * @internal\n */\nclass NodeHttpClient implements HttpClient {\n private cachedHttpAgent?: http.Agent;\n private cachedHttpsAgents: WeakMap<TlsSettings, https.Agent> = new WeakMap();\n\n /**\n * Makes a request over an underlying transport layer and returns the response.\n * @param request - The request to be made.\n */\n public async sendRequest(request: PipelineRequest): Promise<PipelineResponse> {\n const abortController = new AbortController();\n let abortListener: ((event: any) => void) | undefined;\n if (request.abortSignal) {\n if (request.abortSignal.aborted) {\n throw new AbortError(\"The operation was aborted. Request has already been canceled.\");\n }\n\n abortListener = (event: Event) => {\n if (event.type === \"abort\") {\n abortController.abort();\n }\n };\n request.abortSignal.addEventListener(\"abort\", abortListener);\n }\n\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n if (request.timeout > 0) {\n timeoutId = setTimeout(() => {\n const sanitizer = new Sanitizer();\n logger.info(`request to '${sanitizer.sanitizeUrl(request.url)}' timed out. canceling...`);\n abortController.abort();\n }, request.timeout);\n }\n\n const acceptEncoding = request.headers.get(\"Accept-Encoding\");\n const shouldDecompress =\n acceptEncoding?.includes(\"gzip\") || acceptEncoding?.includes(\"deflate\");\n\n let body = typeof request.body === \"function\" ? request.body() : request.body;\n if (body && !request.headers.has(\"Content-Length\")) {\n const bodyLength = getBodyLength(body);\n if (bodyLength !== null) {\n request.headers.set(\"Content-Length\", bodyLength);\n }\n }\n\n let responseStream: NodeJS.ReadableStream | undefined;\n try {\n if (body && request.onUploadProgress) {\n const onUploadProgress = request.onUploadProgress;\n const uploadReportStream = new ReportTransform(onUploadProgress);\n uploadReportStream.on(\"error\", (e) => {\n logger.error(\"Error in upload progress\", e);\n });\n if (isReadableStream(body)) {\n body.pipe(uploadReportStream);\n } else {\n uploadReportStream.end(body);\n }\n\n body = uploadReportStream;\n }\n\n const res = await this.makeRequest(request, abortController, body);\n\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n\n const headers = getResponseHeaders(res);\n\n const status = res.statusCode ?? 0;\n const response: PipelineResponse = {\n status,\n headers,\n request,\n };\n\n // Responses to HEAD must not have a body.\n // If they do return a body, that body must be ignored.\n if (request.method === \"HEAD\") {\n // call resume() and not destroy() to avoid closing the socket\n // and losing keep alive\n res.resume();\n return response;\n }\n\n responseStream = shouldDecompress ? getDecodedResponseStream(res, headers) : res;\n\n const onDownloadProgress = request.onDownloadProgress;\n if (onDownloadProgress) {\n const downloadReportStream = new ReportTransform(onDownloadProgress);\n downloadReportStream.on(\"error\", (e) => {\n logger.error(\"Error in download progress\", e);\n });\n responseStream.pipe(downloadReportStream);\n responseStream = downloadReportStream;\n }\n\n if (\n // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n request.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY) ||\n request.streamResponseStatusCodes?.has(response.status)\n ) {\n response.readableStreamBody = responseStream;\n } else {\n response.bodyAsText = await streamToText(responseStream);\n }\n\n return response;\n } finally {\n // clean up event listener\n if (request.abortSignal && abortListener) {\n let uploadStreamDone = Promise.resolve();\n if (isReadableStream(body)) {\n uploadStreamDone = isStreamComplete(body);\n }\n let downloadStreamDone = Promise.resolve();\n if (isReadableStream(responseStream)) {\n downloadStreamDone = isStreamComplete(responseStream);\n }\n Promise.all([uploadStreamDone, downloadStreamDone])\n .then(() => {\n // eslint-disable-next-line promise/always-return\n if (abortListener) {\n request.abortSignal?.removeEventListener(\"abort\", abortListener);\n }\n })\n .catch((e) => {\n logger.warning(\"Error when cleaning up abortListener on httpRequest\", e);\n });\n }\n }\n }\n\n private makeRequest(\n request: PipelineRequest,\n abortController: AbortController,\n body?: RequestBodyType,\n ): Promise<http.IncomingMessage> {\n const url = new URL(request.url);\n\n const isInsecure = url.protocol !== \"https:\";\n\n if (isInsecure && !request.allowInsecureConnection) {\n throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n }\n\n const agent = (request.agent as http.Agent) ?? this.getOrCreateAgent(request, isInsecure);\n const options: http.RequestOptions = {\n agent,\n hostname: url.hostname,\n path: `${url.pathname}${url.search}`,\n port: url.port,\n method: request.method,\n headers: request.headers.toJSON({ preserveCase: true }),\n ...request.requestOverrides,\n };\n\n return new Promise<http.IncomingMessage>((resolve, reject) => {\n const req = isInsecure ? http.request(options, resolve) : https.request(options, resolve);\n\n req.once(\"error\", (err: Error & { code?: string }) => {\n reject(\n new RestError(err.message, { code: err.code ?? RestError.REQUEST_SEND_ERROR, request }),\n );\n });\n\n abortController.signal.addEventListener(\"abort\", () => {\n const abortError = new AbortError(\n \"The operation was aborted. Rejecting from abort signal callback while making request.\",\n );\n req.destroy(abortError);\n reject(abortError);\n });\n if (body && isReadableStream(body)) {\n body.pipe(req);\n } else if (body) {\n if (typeof body === \"string\" || Buffer.isBuffer(body)) {\n req.end(body);\n } else if (isArrayBuffer(body)) {\n req.end(ArrayBuffer.isView(body) ? Buffer.from(body.buffer) : Buffer.from(body));\n } else {\n logger.error(\"Unrecognized body type\", body);\n reject(new RestError(\"Unrecognized body type\"));\n }\n } else {\n // streams don't like \"undefined\" being passed as data\n req.end();\n }\n });\n }\n\n private getOrCreateAgent(request: PipelineRequest, isInsecure: boolean): http.Agent {\n const disableKeepAlive = request.disableKeepAlive;\n\n // Handle Insecure requests first\n if (isInsecure) {\n if (disableKeepAlive) {\n // keepAlive:false is the default so we don't need a custom Agent\n return http.globalAgent;\n }\n\n if (!this.cachedHttpAgent) {\n // If there is no cached agent create a new one and cache it.\n this.cachedHttpAgent = new http.Agent({ keepAlive: true });\n }\n return this.cachedHttpAgent;\n } else {\n if (disableKeepAlive && !request.tlsSettings) {\n // When there are no tlsSettings and keepAlive is false\n // we don't need a custom agent\n return https.globalAgent;\n }\n\n // We use the tlsSettings to index cached clients\n const tlsSettings = request.tlsSettings ?? DEFAULT_TLS_SETTINGS;\n\n // Get the cached agent or create a new one with the\n // provided values for keepAlive and tlsSettings\n let agent = this.cachedHttpsAgents.get(tlsSettings);\n\n if (agent && agent.options.keepAlive === !disableKeepAlive) {\n return agent;\n }\n\n logger.info(\"No cached TLS Agent exist, creating a new Agent\");\n agent = new https.Agent({\n // keepAlive is true if disableKeepAlive is false.\n keepAlive: !disableKeepAlive,\n // Since we are spreading, if no tslSettings were provided, nothing is added to the agent options.\n ...tlsSettings,\n });\n\n this.cachedHttpsAgents.set(tlsSettings, agent);\n return agent;\n }\n }\n}\n\nfunction getResponseHeaders(res: IncomingMessage): HttpHeaders {\n const headers = createHttpHeaders();\n for (const header of Object.keys(res.headers)) {\n const value = res.headers[header];\n if (Array.isArray(value)) {\n if (value.length > 0) {\n headers.set(header, value[0]);\n }\n } else if (value) {\n headers.set(header, value);\n }\n }\n return headers;\n}\n\nfunction getDecodedResponseStream(\n stream: IncomingMessage,\n headers: HttpHeaders,\n): NodeJS.ReadableStream {\n const contentEncoding = headers.get(\"Content-Encoding\");\n if (contentEncoding === \"gzip\") {\n const unzip = zlib.createGunzip();\n stream.pipe(unzip);\n return unzip;\n } else if (contentEncoding === \"deflate\") {\n const inflate = zlib.createInflate();\n stream.pipe(inflate);\n return inflate;\n }\n\n return stream;\n}\n\nfunction streamToText(stream: NodeJS.ReadableStream): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n const buffer: Buffer[] = [];\n\n stream.on(\"data\", (chunk) => {\n if (Buffer.isBuffer(chunk)) {\n buffer.push(chunk);\n } else {\n buffer.push(Buffer.from(chunk));\n }\n });\n stream.on(\"end\", () => {\n resolve(Buffer.concat(buffer).toString(\"utf8\"));\n });\n stream.on(\"error\", (e) => {\n if (e && e?.name === \"AbortError\") {\n reject(e);\n } else {\n reject(\n new RestError(`Error reading response as text: ${e.message}`, {\n code: RestError.PARSE_ERROR,\n }),\n );\n }\n });\n });\n}\n\n/** @internal */\nexport function getBodyLength(body: RequestBodyType): number | null {\n if (!body) {\n return 0;\n } else if (Buffer.isBuffer(body)) {\n return body.length;\n } else if (isReadableStream(body)) {\n return null;\n } else if (isArrayBuffer(body)) {\n return body.byteLength;\n } else if (typeof body === \"string\") {\n return Buffer.from(body).length;\n } else {\n return null;\n }\n}\n\n/**\n * Create a new HttpClient instance for the NodeJS environment.\n * @internal\n */\nexport function createNodeHttpClient(): HttpClient {\n return new NodeHttpClient();\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["http", "https", "zlib"]
|
|
7
|
+
}
|
|
@@ -1,265 +1,208 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var pipeline_exports = {};
|
|
19
|
+
__export(pipeline_exports, {
|
|
20
|
+
createEmptyPipeline: () => createEmptyPipeline
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(pipeline_exports);
|
|
23
|
+
const ValidPhaseNames = /* @__PURE__ */ new Set(["Deserialize", "Serialize", "Retry", "Sign"]);
|
|
12
24
|
class HttpPipeline {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
25
|
+
_policies = [];
|
|
26
|
+
_orderedPolicies;
|
|
27
|
+
constructor(policies) {
|
|
28
|
+
this._policies = policies?.slice(0) ?? [];
|
|
29
|
+
this._orderedPolicies = void 0;
|
|
30
|
+
}
|
|
31
|
+
addPolicy(policy, options = {}) {
|
|
32
|
+
if (options.phase && options.afterPhase) {
|
|
33
|
+
throw new Error("Policies inside a phase cannot specify afterPhase.");
|
|
18
34
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
throw new Error("Policies inside a phase cannot specify afterPhase.");
|
|
22
|
-
}
|
|
23
|
-
if (options.phase && !ValidPhaseNames.has(options.phase)) {
|
|
24
|
-
throw new Error(`Invalid phase name: ${options.phase}`);
|
|
25
|
-
}
|
|
26
|
-
if (options.afterPhase && !ValidPhaseNames.has(options.afterPhase)) {
|
|
27
|
-
throw new Error(`Invalid afterPhase name: ${options.afterPhase}`);
|
|
28
|
-
}
|
|
29
|
-
this._policies.push({
|
|
30
|
-
policy,
|
|
31
|
-
options,
|
|
32
|
-
});
|
|
33
|
-
this._orderedPolicies = undefined;
|
|
35
|
+
if (options.phase && !ValidPhaseNames.has(options.phase)) {
|
|
36
|
+
throw new Error(`Invalid phase name: ${options.phase}`);
|
|
34
37
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
this._policies = this._policies.filter((policyDescriptor) => {
|
|
38
|
-
if ((options.name && policyDescriptor.policy.name === options.name) ||
|
|
39
|
-
(options.phase && policyDescriptor.options.phase === options.phase)) {
|
|
40
|
-
removedPolicies.push(policyDescriptor.policy);
|
|
41
|
-
return false;
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
return true;
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
this._orderedPolicies = undefined;
|
|
48
|
-
return removedPolicies;
|
|
38
|
+
if (options.afterPhase && !ValidPhaseNames.has(options.afterPhase)) {
|
|
39
|
+
throw new Error(`Invalid afterPhase name: ${options.afterPhase}`);
|
|
49
40
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
41
|
+
this._policies.push({
|
|
42
|
+
policy,
|
|
43
|
+
options
|
|
44
|
+
});
|
|
45
|
+
this._orderedPolicies = void 0;
|
|
46
|
+
}
|
|
47
|
+
removePolicy(options) {
|
|
48
|
+
const removedPolicies = [];
|
|
49
|
+
this._policies = this._policies.filter((policyDescriptor) => {
|
|
50
|
+
if (options.name && policyDescriptor.policy.name === options.name || options.phase && policyDescriptor.options.phase === options.phase) {
|
|
51
|
+
removedPolicies.push(policyDescriptor.policy);
|
|
52
|
+
return false;
|
|
53
|
+
} else {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
this._orderedPolicies = void 0;
|
|
58
|
+
return removedPolicies;
|
|
59
|
+
}
|
|
60
|
+
sendRequest(httpClient, request) {
|
|
61
|
+
const policies = this.getOrderedPolicies();
|
|
62
|
+
const pipeline = policies.reduceRight(
|
|
63
|
+
(next, policy) => {
|
|
64
|
+
return (req) => {
|
|
65
|
+
return policy.sendRequest(req, next);
|
|
66
|
+
};
|
|
67
|
+
},
|
|
68
|
+
(req) => httpClient.sendRequest(req)
|
|
69
|
+
);
|
|
70
|
+
return pipeline(request);
|
|
71
|
+
}
|
|
72
|
+
getOrderedPolicies() {
|
|
73
|
+
if (!this._orderedPolicies) {
|
|
74
|
+
this._orderedPolicies = this.orderPolicies();
|
|
58
75
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
76
|
+
return this._orderedPolicies;
|
|
77
|
+
}
|
|
78
|
+
clone() {
|
|
79
|
+
return new HttpPipeline(this._policies);
|
|
80
|
+
}
|
|
81
|
+
static create() {
|
|
82
|
+
return new HttpPipeline();
|
|
83
|
+
}
|
|
84
|
+
orderPolicies() {
|
|
85
|
+
const result = [];
|
|
86
|
+
const policyMap = /* @__PURE__ */ new Map();
|
|
87
|
+
function createPhase(name) {
|
|
88
|
+
return {
|
|
89
|
+
name,
|
|
90
|
+
policies: /* @__PURE__ */ new Set(),
|
|
91
|
+
hasRun: false,
|
|
92
|
+
hasAfterPolicies: false
|
|
93
|
+
};
|
|
64
94
|
}
|
|
65
|
-
|
|
66
|
-
|
|
95
|
+
const serializePhase = createPhase("Serialize");
|
|
96
|
+
const noPhase = createPhase("None");
|
|
97
|
+
const deserializePhase = createPhase("Deserialize");
|
|
98
|
+
const retryPhase = createPhase("Retry");
|
|
99
|
+
const signPhase = createPhase("Sign");
|
|
100
|
+
const orderedPhases = [serializePhase, noPhase, deserializePhase, retryPhase, signPhase];
|
|
101
|
+
function getPhase(phase) {
|
|
102
|
+
if (phase === "Retry") {
|
|
103
|
+
return retryPhase;
|
|
104
|
+
} else if (phase === "Serialize") {
|
|
105
|
+
return serializePhase;
|
|
106
|
+
} else if (phase === "Deserialize") {
|
|
107
|
+
return deserializePhase;
|
|
108
|
+
} else if (phase === "Sign") {
|
|
109
|
+
return signPhase;
|
|
110
|
+
} else {
|
|
111
|
+
return noPhase;
|
|
112
|
+
}
|
|
67
113
|
}
|
|
68
|
-
|
|
69
|
-
|
|
114
|
+
for (const descriptor of this._policies) {
|
|
115
|
+
const policy = descriptor.policy;
|
|
116
|
+
const options = descriptor.options;
|
|
117
|
+
const policyName = policy.name;
|
|
118
|
+
if (policyMap.has(policyName)) {
|
|
119
|
+
throw new Error("Duplicate policy names not allowed in pipeline");
|
|
120
|
+
}
|
|
121
|
+
const node = {
|
|
122
|
+
policy,
|
|
123
|
+
dependsOn: /* @__PURE__ */ new Set(),
|
|
124
|
+
dependants: /* @__PURE__ */ new Set()
|
|
125
|
+
};
|
|
126
|
+
if (options.afterPhase) {
|
|
127
|
+
node.afterPhase = getPhase(options.afterPhase);
|
|
128
|
+
node.afterPhase.hasAfterPolicies = true;
|
|
129
|
+
}
|
|
130
|
+
policyMap.set(policyName, node);
|
|
131
|
+
const phase = getPhase(options.phase);
|
|
132
|
+
phase.policies.add(node);
|
|
70
133
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
* they were added unless they were specified to execute
|
|
86
|
-
* before/after other policies or after a particular phase.
|
|
87
|
-
*
|
|
88
|
-
* To determine the final order, we will walk the policy list
|
|
89
|
-
* in phase order multiple times until all dependencies are
|
|
90
|
-
* satisfied.
|
|
91
|
-
*
|
|
92
|
-
* `afterPolicies` are the set of policies that must be
|
|
93
|
-
* executed before a given policy. This requirement is
|
|
94
|
-
* considered satisfied when each of the listed policies
|
|
95
|
-
* have been scheduled.
|
|
96
|
-
*
|
|
97
|
-
* `beforePolicies` are the set of policies that must be
|
|
98
|
-
* executed after a given policy. Since this dependency
|
|
99
|
-
* can be expressed by converting it into a equivalent
|
|
100
|
-
* `afterPolicies` declarations, they are normalized
|
|
101
|
-
* into that form for simplicity.
|
|
102
|
-
*
|
|
103
|
-
* An `afterPhase` dependency is considered satisfied when all
|
|
104
|
-
* policies in that phase have scheduled.
|
|
105
|
-
*
|
|
106
|
-
*/
|
|
107
|
-
const result = [];
|
|
108
|
-
// Track all policies we know about.
|
|
109
|
-
const policyMap = new Map();
|
|
110
|
-
function createPhase(name) {
|
|
111
|
-
return {
|
|
112
|
-
name,
|
|
113
|
-
policies: new Set(),
|
|
114
|
-
hasRun: false,
|
|
115
|
-
hasAfterPolicies: false,
|
|
116
|
-
};
|
|
134
|
+
for (const descriptor of this._policies) {
|
|
135
|
+
const { policy, options } = descriptor;
|
|
136
|
+
const policyName = policy.name;
|
|
137
|
+
const node = policyMap.get(policyName);
|
|
138
|
+
if (!node) {
|
|
139
|
+
throw new Error(`Missing node for policy ${policyName}`);
|
|
140
|
+
}
|
|
141
|
+
if (options.afterPolicies) {
|
|
142
|
+
for (const afterPolicyName of options.afterPolicies) {
|
|
143
|
+
const afterNode = policyMap.get(afterPolicyName);
|
|
144
|
+
if (afterNode) {
|
|
145
|
+
node.dependsOn.add(afterNode);
|
|
146
|
+
afterNode.dependants.add(node);
|
|
147
|
+
}
|
|
117
148
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
// Small helper function to map phase name to each Phase
|
|
127
|
-
function getPhase(phase) {
|
|
128
|
-
if (phase === "Retry") {
|
|
129
|
-
return retryPhase;
|
|
130
|
-
}
|
|
131
|
-
else if (phase === "Serialize") {
|
|
132
|
-
return serializePhase;
|
|
133
|
-
}
|
|
134
|
-
else if (phase === "Deserialize") {
|
|
135
|
-
return deserializePhase;
|
|
136
|
-
}
|
|
137
|
-
else if (phase === "Sign") {
|
|
138
|
-
return signPhase;
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
return noPhase;
|
|
142
|
-
}
|
|
149
|
+
}
|
|
150
|
+
if (options.beforePolicies) {
|
|
151
|
+
for (const beforePolicyName of options.beforePolicies) {
|
|
152
|
+
const beforeNode = policyMap.get(beforePolicyName);
|
|
153
|
+
if (beforeNode) {
|
|
154
|
+
beforeNode.dependsOn.add(node);
|
|
155
|
+
node.dependants.add(beforeNode);
|
|
156
|
+
}
|
|
143
157
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
}
|
|
152
|
-
const node = {
|
|
153
|
-
policy,
|
|
154
|
-
dependsOn: new Set(),
|
|
155
|
-
dependants: new Set(),
|
|
156
|
-
};
|
|
157
|
-
if (options.afterPhase) {
|
|
158
|
-
node.afterPhase = getPhase(options.afterPhase);
|
|
159
|
-
node.afterPhase.hasAfterPolicies = true;
|
|
160
|
-
}
|
|
161
|
-
policyMap.set(policyName, node);
|
|
162
|
-
const phase = getPhase(options.phase);
|
|
163
|
-
phase.policies.add(node);
|
|
164
|
-
}
|
|
165
|
-
// Now that each policy has a node, connect dependency references.
|
|
166
|
-
for (const descriptor of this._policies) {
|
|
167
|
-
const { policy, options } = descriptor;
|
|
168
|
-
const policyName = policy.name;
|
|
169
|
-
const node = policyMap.get(policyName);
|
|
170
|
-
if (!node) {
|
|
171
|
-
throw new Error(`Missing node for policy ${policyName}`);
|
|
172
|
-
}
|
|
173
|
-
if (options.afterPolicies) {
|
|
174
|
-
for (const afterPolicyName of options.afterPolicies) {
|
|
175
|
-
const afterNode = policyMap.get(afterPolicyName);
|
|
176
|
-
if (afterNode) {
|
|
177
|
-
// Linking in both directions helps later
|
|
178
|
-
// when we want to notify dependants.
|
|
179
|
-
node.dependsOn.add(afterNode);
|
|
180
|
-
afterNode.dependants.add(node);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
if (options.beforePolicies) {
|
|
185
|
-
for (const beforePolicyName of options.beforePolicies) {
|
|
186
|
-
const beforeNode = policyMap.get(beforePolicyName);
|
|
187
|
-
if (beforeNode) {
|
|
188
|
-
// To execute before another node, make it
|
|
189
|
-
// depend on the current node.
|
|
190
|
-
beforeNode.dependsOn.add(node);
|
|
191
|
-
node.dependants.add(beforeNode);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
function walkPhase(phase) {
|
|
161
|
+
phase.hasRun = true;
|
|
162
|
+
for (const node of phase.policies) {
|
|
163
|
+
if (node.afterPhase && (!node.afterPhase.hasRun || node.afterPhase.policies.size)) {
|
|
164
|
+
continue;
|
|
195
165
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
// Even if the phase is empty, we should wait for it
|
|
204
|
-
// to be walked to avoid re-ordering policies.
|
|
205
|
-
continue;
|
|
206
|
-
}
|
|
207
|
-
if (node.dependsOn.size === 0) {
|
|
208
|
-
// If there's nothing else we're waiting for, we can
|
|
209
|
-
// add this policy to the result list.
|
|
210
|
-
result.push(node.policy);
|
|
211
|
-
// Notify anything that depends on this policy that
|
|
212
|
-
// the policy has been scheduled.
|
|
213
|
-
for (const dependant of node.dependants) {
|
|
214
|
-
dependant.dependsOn.delete(node);
|
|
215
|
-
}
|
|
216
|
-
policyMap.delete(node.policy.name);
|
|
217
|
-
phase.policies.delete(node);
|
|
218
|
-
}
|
|
219
|
-
}
|
|
166
|
+
if (node.dependsOn.size === 0) {
|
|
167
|
+
result.push(node.policy);
|
|
168
|
+
for (const dependant of node.dependants) {
|
|
169
|
+
dependant.dependsOn.delete(node);
|
|
170
|
+
}
|
|
171
|
+
policyMap.delete(node.policy.name);
|
|
172
|
+
phase.policies.delete(node);
|
|
220
173
|
}
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
}
|
|
232
|
-
// Don't proceed to the next phase until this phase finishes.
|
|
233
|
-
return;
|
|
234
|
-
}
|
|
235
|
-
if (phase.hasAfterPolicies) {
|
|
236
|
-
// Run any policies unblocked by this phase
|
|
237
|
-
walkPhase(noPhase);
|
|
238
|
-
}
|
|
239
|
-
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
function walkPhases() {
|
|
177
|
+
for (const phase of orderedPhases) {
|
|
178
|
+
walkPhase(phase);
|
|
179
|
+
if (phase.policies.size > 0 && phase !== noPhase) {
|
|
180
|
+
if (!noPhase.hasRun) {
|
|
181
|
+
walkPhase(noPhase);
|
|
182
|
+
}
|
|
183
|
+
return;
|
|
240
184
|
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
while (policyMap.size > 0) {
|
|
244
|
-
iteration++;
|
|
245
|
-
const initialResultLength = result.length;
|
|
246
|
-
// Keep walking each phase in order until we can order every node.
|
|
247
|
-
walkPhases();
|
|
248
|
-
// The result list *should* get at least one larger each time
|
|
249
|
-
// after the first full pass.
|
|
250
|
-
// Otherwise, we're going to loop forever.
|
|
251
|
-
if (result.length <= initialResultLength && iteration > 1) {
|
|
252
|
-
throw new Error("Cannot satisfy policy dependencies due to requirements cycle.");
|
|
253
|
-
}
|
|
185
|
+
if (phase.hasAfterPolicies) {
|
|
186
|
+
walkPhase(noPhase);
|
|
254
187
|
}
|
|
255
|
-
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
let iteration = 0;
|
|
191
|
+
while (policyMap.size > 0) {
|
|
192
|
+
iteration++;
|
|
193
|
+
const initialResultLength = result.length;
|
|
194
|
+
walkPhases();
|
|
195
|
+
if (result.length <= initialResultLength && iteration > 1) {
|
|
196
|
+
throw new Error("Cannot satisfy policy dependencies due to requirements cycle.");
|
|
197
|
+
}
|
|
256
198
|
}
|
|
199
|
+
return result;
|
|
200
|
+
}
|
|
257
201
|
}
|
|
258
|
-
/**
|
|
259
|
-
* Creates a totally empty pipeline.
|
|
260
|
-
* Useful for testing or creating a custom one.
|
|
261
|
-
*/
|
|
262
202
|
function createEmptyPipeline() {
|
|
263
|
-
|
|
203
|
+
return HttpPipeline.create();
|
|
264
204
|
}
|
|
265
|
-
|
|
205
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
206
|
+
0 && (module.exports = {
|
|
207
|
+
createEmptyPipeline
|
|
208
|
+
});
|