@microsoft/teams.common
Version:
<p> <a href="https://www.npmjs.com/package/@microsoft/teams.common" target="_blank"> <img src="https://img.shields.io/npm/v/@microsoft/teams.common/latest" /> </a> <a href="https://www.npmjs.com/package/@microsoft/teams.common?activeTa
1 lines • 23 kB
Source Map (JSON)
{"version":3,"sources":["../../src/http/client.ts"],"names":[],"mappings":"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","file":"client.mjs","sourcesContent":["import axios, { AxiosHeaders } from 'axios';\nimport type {\n AxiosInstance,\n AxiosResponse,\n AxiosRequestConfig,\n RawAxiosRequestHeaders,\n} from 'axios';\n\nimport { ConsoleLogger } from '../logging';\nimport type { ILogger } from '../logging';\n\nimport type { Interceptor } from './interceptor';\nimport type { Token } from './token';\n\n\nexport type ClientOptions = {\n /**\n * The client name\n */\n readonly name?: string;\n\n /**\n * The authorization token to use\n */\n readonly token?: Token;\n\n /**\n *: ILogger instance to use\n */\n readonly logger?: ILogger;\n\n /**\n * The baseUrl to prefix all client requests with\n */\n readonly baseUrl?: string;\n\n /**\n * Default request timeout (ms)\n */\n readonly timeout?: number;\n\n /**\n * Default headers\n */\n readonly headers?: RawAxiosRequestHeaders;\n\n /**\n * Default interceptors to register\n */\n readonly interceptors?: Array<Interceptor>;\n\n /**\n * Default middleware to register. Middleware runs in insertion order around\n * token resolution, existing interceptors, and the terminal HTTP transport.\n */\n readonly middlewares?: Array<Middleware>;\n};\n\n/**\n * Context for a single HTTP middleware invocation.\n *\n * `config` is the single source of truth for the outbound request: it carries\n * the method, URL, body (`data`), query `params`, `headers`, and SDK-local\n * `extensions`. Middleware reads and mutates the request through `config`\n * (e.g. `context.config.headers`, `context.config.extensions`); `extensions`\n * is never copied into headers, query params, or the request body by the\n * common client. `log` is available for diagnostics.\n */\nexport type MiddlewareContext<D = any> = {\n /**\n * Mutable request config for this outbound call.\n *\n * This is the authoritative request state. Read the method, URL, body, and\n * SDK-local `extensions` from here, and mutate it in place to change the\n * request seen by later middleware and the terminal HTTP transport.\n */\n config: RequestConfig<D>;\n\n /**\n * Client logger.\n */\n readonly log: ILogger;\n};\n\n/**\n * Calls the next middleware in the chain, or the terminal HTTP transport.\n */\nexport type MiddlewareNext<R = AxiosResponse> = () => Promise<R>;\n\n/**\n * HTTP middleware that wraps one outbound request.\n *\n * Middleware is registered with `client.use(...)` and runs in insertion order:\n * the first registered middleware is the outermost wrapper.\n */\nexport type Middleware = {\n invoke<R = AxiosResponse, D = any>(\n context: MiddlewareContext<D>,\n next: MiddlewareNext<R>\n ): Promise<R>;\n};\n\nexport type RequestConfig<D = any> = AxiosRequestConfig<D> & {\n /**\n * If provided, this token will be used instead of\n * the default token provided in the `ClientOptions`\n */\n token?: Token;\n\n /**\n * SDK-local request metadata for interceptors. This is not sent over the wire.\n */\n extensions?: Record<string, unknown>;\n};\n\ntype InterceptorRegistry = {\n readonly requestId?: number;\n readonly responseId?: number;\n readonly interceptor: Interceptor;\n};\n\nexport class Client {\n token?: Token;\n readonly name: string;\n\n protected options: ClientOptions;\n protected log: ILogger;\n protected http: AxiosInstance;\n protected seq: number = 0;\n protected _interceptors: Map<number, InterceptorRegistry>;\n protected _middlewares: Map<number, Middleware>;\n\n constructor(options: ClientOptions = {}) {\n this.options = options;\n this.name = options.name || 'http';\n this.token = options.token;\n this.log = options.logger || new ConsoleLogger(this.name);\n this._interceptors = new Map<number, InterceptorRegistry>();\n this._middlewares = new Map<number, Middleware>();\n this.http = axios.create({\n baseURL: options.baseUrl,\n timeout: options.timeout,\n headers: options.headers,\n });\n\n for (const interceptor of options.interceptors || []) {\n this.use(interceptor);\n }\n\n for (const middleware of options.middlewares || []) {\n this.use(middleware);\n }\n }\n\n get interceptors(): readonly Interceptor[] {\n return Array.from(this._interceptors.values()).map((i) => i.interceptor);\n }\n\n /**\n * Registered HTTP middleware in execution order.\n */\n get middlewares(): readonly Middleware[] {\n return Array.from(this._middlewares.values());\n }\n\n async get<T = any, R = AxiosResponse<T>, D = any>(\n url: string,\n config?: RequestConfig<D>,\n ): Promise<R> {\n return this.invokeMiddleware<T, R, D>({\n config: { ...config, method: 'get', url },\n log: this.log,\n }, 0, 'method');\n }\n\n async post<T = any, R = AxiosResponse<T>, D = any>(\n url: string,\n data?: D,\n config?: RequestConfig<D>,\n ): Promise<R> {\n return this.invokeMiddleware<T, R, D>({\n config: { ...config, method: 'post', url, data },\n log: this.log,\n }, 0, 'method');\n }\n\n async put<T = any, R = AxiosResponse<T>, D = any>(\n url: string,\n data?: D,\n config?: RequestConfig<D>,\n ): Promise<R> {\n return this.invokeMiddleware<T, R, D>({\n config: { ...config, method: 'put', url, data },\n log: this.log,\n }, 0, 'method');\n }\n\n async patch<T = any, R = AxiosResponse<T>, D = any>(\n url: string,\n data?: D,\n config?: RequestConfig<D>,\n ): Promise<R> {\n return this.invokeMiddleware<T, R, D>({\n config: { ...config, method: 'patch', url, data },\n log: this.log,\n }, 0, 'method');\n }\n\n async delete<T = any, R = AxiosResponse<T>, D = any>(\n url: string,\n config?: RequestConfig<D>,\n ): Promise<R> {\n return this.invokeMiddleware<T, R, D>({\n config: { ...config, method: 'delete', url },\n log: this.log,\n }, 0, 'method');\n }\n\n async request<T = any, R = AxiosResponse<T>, D = any>(\n config: RequestConfig<D>,\n ): Promise<R> {\n return this.invokeMiddleware<T, R, D>({\n config,\n log: this.log,\n }, 0, 'request');\n }\n\n /**\n * Register HTTP middleware.\n */\n use(middleware: Middleware): number;\n\n /**\n * Register an interceptor for request/response/error compatibility.\n */\n use(interceptor: Interceptor): number;\n\n use(handler: Interceptor | Middleware): number {\n if (isMiddleware(handler)) {\n return this.useMiddleware(handler);\n }\n\n return this.useInterceptor(handler);\n }\n\n /**\n * Eject an interceptor\n */\n eject(id: number): void {\n const registry = this._interceptors.get(id);\n\n if (!registry) {\n this._middlewares.delete(id);\n return;\n }\n\n if (registry.requestId !== undefined) {\n this.http.interceptors.request.eject(registry.requestId);\n }\n\n if (registry.responseId !== undefined) {\n this.http.interceptors.response.eject(registry.responseId);\n }\n\n this._interceptors.delete(id);\n }\n\n /**\n * Clear (Eject) all interceptors\n */\n clear(): void {\n for (const id of this._interceptors.keys()) {\n this.eject(id);\n }\n\n this._middlewares.clear();\n }\n\n /**\n * Create a copy of the client\n */\n clone(options?: ClientOptions): Client {\n const findUA = (h?: RawAxiosRequestHeaders): string | undefined => {\n if (!h) return undefined;\n const key = Object.keys(h).find((k) => k.toLowerCase() === 'user-agent');\n return key ? String(h[key]) : undefined;\n };\n\n const parentUA = findUA(this.options.headers);\n const childUA = findUA(options?.headers);\n const mergedUA =\n parentUA && childUA ? `${childUA} ${parentUA}` : childUA || parentUA;\n\n const headers = {\n ...this.options.headers,\n ...options?.headers,\n };\n\n if (mergedUA) {\n for (const key of Object.keys(headers)) {\n if (key.toLowerCase() === 'user-agent') {\n delete headers[key];\n }\n }\n\n headers['User-Agent'] = mergedUA;\n }\n\n return new Client({\n ...this.options,\n ...options,\n headers,\n interceptors: [\n ...Array.from(this._interceptors.values()).map((i) => i.interceptor),\n ],\n middlewares: [\n ...this.middlewares,\n ],\n });\n }\n\n protected async withConfig(\n config: RequestConfig = {},\n ): Promise<RequestConfig> {\n let token = config.token || this.token;\n const requestHasAuthorization = hasAuthorizationHeader(config.headers);\n\n if (config.token) {\n delete config.token;\n }\n\n if (this.options.headers) {\n config.headers = {\n ...this.options.headers,\n ...headersToObject(config.headers),\n };\n }\n\n if (token && !requestHasAuthorization && !hasAuthorizationHeader(config.headers)) {\n if (!config.headers) {\n config.headers = {};\n }\n\n if (typeof token === 'function') {\n token = await token(config);\n }\n\n if (token && typeof token === 'object') {\n token = token.toString();\n }\n\n if (!token?.toString().trim()) {\n return config;\n }\n\n config.headers['Authorization'] = `Bearer ${token}`;\n }\n\n return config;\n }\n\n private useMiddleware(middleware: Middleware): number {\n const id = ++this.seq;\n this._middlewares.set(id, middleware);\n return id;\n }\n\n /**\n * axios >= 1.19 types its verb methods as `AxiosResponseResult<T, R, D, P>`, a conditional keyed on an unexported marker symbol.\n * For any concrete `R` that conditional collapses to `R`, but TypeScript cannot prove that for an unconstrained generic, so each dispatch is asserted back to `Promise<R>`.\n */\n private async send<T, R, D>(\n config: RequestConfig<D>,\n dispatch: 'method' | 'request',\n ): Promise<R> {\n const resolvedConfig = await this.withConfig(config);\n if (dispatch === 'request') {\n return this.http.request<T, R, D>(resolvedConfig) as Promise<R>;\n }\n\n const method = resolvedConfig.method?.toLowerCase();\n const url = resolvedConfig.url;\n if (url === undefined) {\n return this.http.request<T, R, D>(resolvedConfig) as Promise<R>;\n }\n\n const transportConfig: RequestConfig<D> = { ...resolvedConfig };\n delete transportConfig.method;\n delete transportConfig.url;\n\n switch (method) {\n // get/delete carry any request body on `config.data`, so the resolved\n // config is forwarded as-is. (Stripping `data` here previously dropped\n // GET/DELETE request bodies that callers passed through `config`.)\n case 'get':\n return this.http.get<T, R, D>(url, transportConfig) as Promise<R>;\n case 'delete':\n return this.http.delete<T, R, D>(url, transportConfig) as Promise<R>;\n // post/put/patch take the body as a positional argument, so remove it\n // from the forwarded config to avoid sending it in two places.\n case 'post': {\n const { data, ...rest } = transportConfig;\n return this.http.post<T, R, D>(url, data, rest) as Promise<R>;\n }\n case 'put': {\n const { data, ...rest } = transportConfig;\n return this.http.put<T, R, D>(url, data, rest) as Promise<R>;\n }\n case 'patch': {\n const { data, ...rest } = transportConfig;\n return this.http.patch<T, R, D>(url, data, rest) as Promise<R>;\n }\n default:\n return this.http.request<T, R, D>(resolvedConfig) as Promise<R>;\n }\n }\n\n private useInterceptor(interceptor: Interceptor): number {\n const id = ++this.seq;\n let requestId: number | undefined = undefined;\n let responseId: number | undefined = undefined;\n\n if (interceptor.request) {\n requestId = this.http.interceptors.request.use(\n /* istanbul ignore next */\n (config) => {\n return interceptor.request!({ config, log: this.log });\n },\n /* istanbul ignore next */\n (error: any) => {\n if (!interceptor.error) return error;\n return interceptor.error({ error, log: this.log });\n },\n );\n }\n\n if (interceptor.response) {\n responseId = this.http.interceptors.response.use(\n /* istanbul ignore next */\n (res) => {\n return interceptor.response!({ res, log: this.log });\n },\n /* istanbul ignore next */\n (error: any) => {\n if (!interceptor.error) return error;\n return interceptor.error({ error, log: this.log });\n },\n );\n }\n\n this._interceptors.set(id, {\n requestId,\n responseId,\n interceptor,\n });\n\n return id;\n }\n\n private async invokeMiddleware<T, R, D>(\n context: MiddlewareContext<D>,\n index: number,\n dispatch: 'method' | 'request',\n ): Promise<R> {\n const middleware = this.middlewares.at(index);\n if (!middleware) {\n return this.send<T, R, D>(context.config, dispatch);\n }\n\n return middleware.invoke<R, D>(\n context,\n () => this.invokeMiddleware<T, R, D>(context, index + 1, dispatch)\n );\n }\n}\n\nfunction isMiddleware(handler: Interceptor | Middleware): handler is Middleware {\n return typeof (handler as Middleware).invoke === 'function';\n}\n\nfunction hasAuthorizationHeader(headers: RequestConfig['headers']): boolean {\n if (!headers) {\n return false;\n }\n\n if (headers instanceof AxiosHeaders) {\n return !!headers.get('Authorization') || !!headers.get('authorization');\n }\n\n return Object.keys(headers).some((key) => key.toLowerCase() === 'authorization');\n}\n\nfunction headersToObject(headers: RequestConfig['headers']): RawAxiosRequestHeaders | undefined {\n if (!headers) {\n return undefined;\n }\n\n if (headers instanceof AxiosHeaders) {\n return headers.toJSON() as RawAxiosRequestHeaders;\n }\n\n return headers as RawAxiosRequestHeaders;\n}\n"]}