wangzhibo
2026-05-09 53418655c061ac26f66058253f39200aced1ab1d
1
2
3
4
5
6
7
{
  "version": 3,
  "sources": ["/mnt/vss/_work/1/s/sdk/core/core-rest-pipeline/src/createPipelineFromOptions.ts"],
  "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { type LogPolicyOptions, logPolicy } from \"./policies/logPolicy.js\";\nimport { type Pipeline, createEmptyPipeline } from \"./pipeline.js\";\nimport type { Agent, PipelineRetryOptions, ProxySettings, TlsSettings } from \"./interfaces.js\";\nimport { type RedirectPolicyOptions, redirectPolicy } from \"./policies/redirectPolicy.js\";\nimport { type UserAgentPolicyOptions, userAgentPolicy } from \"./policies/userAgentPolicy.js\";\nimport { multipartPolicy, multipartPolicyName } from \"./policies/multipartPolicy.js\";\nimport { decompressResponsePolicy } from \"./policies/decompressResponsePolicy.js\";\nimport { defaultRetryPolicy } from \"./policies/defaultRetryPolicy.js\";\nimport { formDataPolicy } from \"./policies/formDataPolicy.js\";\nimport { isNodeLike } from \"@azure/core-util\";\nimport { proxyPolicy } from \"./policies/proxyPolicy.js\";\nimport { setClientRequestIdPolicy } from \"./policies/setClientRequestIdPolicy.js\";\nimport { agentPolicy } from \"./policies/agentPolicy.js\";\nimport { tlsPolicy } from \"./policies/tlsPolicy.js\";\nimport { tracingPolicy } from \"./policies/tracingPolicy.js\";\nimport { wrapAbortSignalLikePolicy } from \"./policies/wrapAbortSignalLikePolicy.js\";\n\n/**\n * Defines options that are used to configure the HTTP pipeline for\n * an SDK client.\n */\nexport interface PipelineOptions {\n  /**\n   * Options that control how to retry failed requests.\n   */\n  retryOptions?: PipelineRetryOptions;\n\n  /**\n   * Options to configure a proxy for outgoing requests.\n   */\n  proxyOptions?: ProxySettings;\n\n  /** Options for configuring Agent instance for outgoing requests */\n  agent?: Agent;\n\n  /** Options for configuring TLS authentication */\n  tlsOptions?: TlsSettings;\n\n  /**\n   * Options for how redirect responses are handled.\n   */\n  redirectOptions?: RedirectPolicyOptions;\n\n  /**\n   * Options for adding user agent details to outgoing requests.\n   */\n  userAgentOptions?: UserAgentPolicyOptions;\n\n  /**\n   * Options for setting common telemetry and tracing info to outgoing requests.\n   */\n  telemetryOptions?: TelemetryOptions;\n}\n\n/**\n * Defines options that are used to configure common telemetry and tracing info\n */\nexport interface TelemetryOptions {\n  /**\n   * The name of the header to pass the request ID to.\n   */\n  clientRequestIdHeaderName?: string;\n}\n\n/**\n * Defines options that are used to configure internal options of\n * the HTTP pipeline for an SDK client.\n */\nexport interface InternalPipelineOptions extends PipelineOptions {\n  /**\n   * Options to configure request/response logging.\n   */\n  loggingOptions?: LogPolicyOptions;\n}\n\n/**\n * Create a new pipeline with a default set of customizable policies.\n * @param options - Options to configure a custom pipeline.\n */\nexport function createPipelineFromOptions(options: InternalPipelineOptions): Pipeline {\n  const pipeline = createEmptyPipeline();\n\n  if (isNodeLike) {\n    if (options.agent) {\n      pipeline.addPolicy(agentPolicy(options.agent));\n    }\n    if (options.tlsOptions) {\n      pipeline.addPolicy(tlsPolicy(options.tlsOptions));\n    }\n    pipeline.addPolicy(proxyPolicy(options.proxyOptions));\n    pipeline.addPolicy(decompressResponsePolicy());\n  }\n\n  pipeline.addPolicy(wrapAbortSignalLikePolicy());\n\n  pipeline.addPolicy(formDataPolicy(), { beforePolicies: [multipartPolicyName] });\n  pipeline.addPolicy(userAgentPolicy(options.userAgentOptions));\n  pipeline.addPolicy(setClientRequestIdPolicy(options.telemetryOptions?.clientRequestIdHeaderName));\n  // The multipart policy is added after policies with no phase, so that\n  // policies can be added between it and formDataPolicy to modify\n  // properties (e.g., making the boundary constant in recorded tests).\n  pipeline.addPolicy(multipartPolicy(), { afterPhase: \"Deserialize\" });\n  pipeline.addPolicy(defaultRetryPolicy(options.retryOptions), { phase: \"Retry\" });\n  pipeline.addPolicy(tracingPolicy({ ...options.userAgentOptions, ...options.loggingOptions }), {\n    afterPhase: \"Retry\",\n  });\n  if (isNodeLike) {\n    // Both XHR and Fetch expect to handle redirects automatically,\n    // so only include this policy when we're in Node.\n    pipeline.addPolicy(redirectPolicy(options.redirectOptions), { afterPhase: \"Retry\" });\n  }\n  pipeline.addPolicy(logPolicy(options.loggingOptions), { afterPhase: \"Sign\" });\n\n  return pipeline;\n}\n"],
  "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,uBAAiD;AACjD,sBAAmD;AAEnD,4BAA2D;AAC3D,6BAA6D;AAC7D,6BAAqD;AACrD,sCAAyC;AACzC,gCAAmC;AACnC,4BAA+B;AAC/B,uBAA2B;AAC3B,yBAA4B;AAC5B,sCAAyC;AACzC,yBAA4B;AAC5B,uBAA0B;AAC1B,2BAA8B;AAC9B,uCAA0C;AAgEnC,SAAS,0BAA0B,SAA4C;AACpF,QAAM,eAAW,qCAAoB;AAErC,MAAI,6BAAY;AACd,QAAI,QAAQ,OAAO;AACjB,eAAS,cAAU,gCAAY,QAAQ,KAAK,CAAC;AAAA,IAC/C;AACA,QAAI,QAAQ,YAAY;AACtB,eAAS,cAAU,4BAAU,QAAQ,UAAU,CAAC;AAAA,IAClD;AACA,aAAS,cAAU,gCAAY,QAAQ,YAAY,CAAC;AACpD,aAAS,cAAU,0DAAyB,CAAC;AAAA,EAC/C;AAEA,WAAS,cAAU,4DAA0B,CAAC;AAE9C,WAAS,cAAU,sCAAe,GAAG,EAAE,gBAAgB,CAAC,0CAAmB,EAAE,CAAC;AAC9E,WAAS,cAAU,wCAAgB,QAAQ,gBAAgB,CAAC;AAC5D,WAAS,cAAU,0DAAyB,QAAQ,kBAAkB,yBAAyB,CAAC;AAIhG,WAAS,cAAU,wCAAgB,GAAG,EAAE,YAAY,cAAc,CAAC;AACnE,WAAS,cAAU,8CAAmB,QAAQ,YAAY,GAAG,EAAE,OAAO,QAAQ,CAAC;AAC/E,WAAS,cAAU,oCAAc,EAAE,GAAG,QAAQ,kBAAkB,GAAG,QAAQ,eAAe,CAAC,GAAG;AAAA,IAC5F,YAAY;AAAA,EACd,CAAC;AACD,MAAI,6BAAY;AAGd,aAAS,cAAU,sCAAe,QAAQ,eAAe,GAAG,EAAE,YAAY,QAAQ,CAAC;AAAA,EACrF;AACA,WAAS,cAAU,4BAAU,QAAQ,cAAc,GAAG,EAAE,YAAY,OAAO,CAAC;AAE5E,SAAO;AACT;",
  "names": []
}