contentful-sdk-core
Version:
Core modules for the Contentful JS SDKs
1 lines • 6.19 kB
Source Map (JSON)
{"version":3,"file":"create-default-options.js","sources":["../../src/create-default-options.ts"],"sourcesContent":["import { CreateHttpClientParams, DefaultOptions } from './types'\nimport { AxiosRequestHeaders } from 'axios'\nimport qs from 'qs'\n\n// Matches 'sub.host:port' or 'host:port' and extracts hostname and port\n// Also enforces toplevel domain specified, no spaces and no protocol\nconst HOST_REGEX = /^(?!\\w+:\\/\\/)([^\\s:]+\\.?[^\\s:]+)(?::(\\d+))?(?!:)$/\n\n/**\n * Create default options\n * @private\n * @param {CreateHttpClientParams} options - Initialization parameters for the HTTP client\n * @return {DefaultOptions} options to pass to axios\n */\nexport default function createDefaultOptions(options: CreateHttpClientParams): DefaultOptions {\n const defaultConfig = {\n insecure: false as const,\n retryOnError: true as const,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logHandler: (level: string, data: any): void => {\n if (level === 'error' && data) {\n const title = [data.name, data.message].filter((a) => a).join(' - ')\n console.error(`[error] ${title}`)\n console.error(data)\n return\n }\n console.log(`[${level}] ${data}`)\n },\n // Passed to axios\n headers: {} as AxiosRequestHeaders,\n httpAgent: false as const,\n httpsAgent: false as const,\n timeout: 30000,\n throttle: 0,\n basePath: '',\n adapter: undefined,\n maxContentLength: 1073741824, // 1GB\n maxBodyLength: 1073741824, // 1GB\n }\n const config = {\n ...defaultConfig,\n ...options,\n }\n\n if (!config.accessToken) {\n const missingAccessTokenError = new TypeError('Expected parameter accessToken')\n config.logHandler('error', missingAccessTokenError)\n throw missingAccessTokenError\n }\n\n // Construct axios baseURL option\n const protocol = config.insecure ? 'http' : 'https'\n const space = config.space ? `${config.space}/` : ''\n let hostname = config.defaultHostname\n let port: number | string = config.insecure ? 80 : 443\n if (config.host && HOST_REGEX.test(config.host)) {\n const parsed = config.host.split(':')\n if (parsed.length === 2) {\n ;[hostname, port] = parsed\n } else {\n hostname = parsed[0]\n }\n }\n\n // Ensure that basePath does start but not end with a slash\n if (config.basePath) {\n config.basePath = `/${config.basePath.split('/').filter(Boolean).join('/')}`\n }\n\n const baseURL =\n options.baseURL || `${protocol}://${hostname}:${port}${config.basePath}/spaces/${space}`\n\n if (!config.headers.Authorization && typeof config.accessToken !== 'function') {\n config.headers.Authorization = 'Bearer ' + config.accessToken\n }\n\n const axiosOptions: DefaultOptions = {\n // Axios\n baseURL,\n headers: config.headers,\n httpAgent: config.httpAgent,\n httpsAgent: config.httpsAgent,\n proxy: config.proxy,\n timeout: config.timeout,\n adapter: config.adapter,\n fetchOptions: config.fetchOptions,\n maxContentLength: config.maxContentLength,\n maxBodyLength: config.maxBodyLength,\n paramsSerializer: {\n serialize: (params) => {\n return qs.stringify(params)\n },\n },\n // Contentful\n logHandler: config.logHandler,\n responseLogger: config.responseLogger,\n requestLogger: config.requestLogger,\n retryOnError: config.retryOnError,\n }\n return axiosOptions\n}\n"],"names":[],"mappings":"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"}