UNPKG

@hubspot/api-client

Version:

NodeJS v3 [HubSpot API](https://developers.hubspot.com/docs/api/overview) SDK(Client) files

200 lines 7.96 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.sendBufferedRequest = exports.sendFetchRequest = void 0; const http = __importStar(require("http")); const https = __importStar(require("https")); const url_1 = require("url"); const form_data_1 = __importDefault(require("form-data")); function sendFetchRequest(url, options) { return __awaiter(this, void 0, void 0, function* () { if (isFormDataBody(options.body)) { const response = yield sendNodeRequest(url, options); const responseBody = shouldOmitResponseBody(response.status) ? null : yield response.binary(); return new Response(responseBody, { headers: response.headers, status: response.status, }); } return yield fetch(url, buildRequestInit(options)); }); } exports.sendFetchRequest = sendFetchRequest; function sendBufferedRequest(url, options) { return __awaiter(this, void 0, void 0, function* () { if (options.agent) { return yield sendNodeRequest(url, options); } const response = yield sendFetchRequest(url, options); return createBufferedResponse(response.status, getHeadersFromFetchResponse(response), () => __awaiter(this, void 0, void 0, function* () { return Buffer.from(yield response.arrayBuffer()); })); }); } exports.sendBufferedRequest = sendBufferedRequest; function buildRequestInit(options) { const requestInit = { method: options.method, headers: normalizeHeaders(options.headers, options.body), }; if (options.body !== undefined) { requestInit.body = options.body; } if (isPipeableBody(options.body)) { requestInit.duplex = 'half'; } return requestInit; } function normalizeHeaders(headers, body) { if (isFormDataBody(body)) { return mergeHeaders(headers, body.getHeaders()); } if (!headers) { return undefined; } return Object.assign({}, headers); } function mergeHeaders(headers, nextHeaders) { const mergedHeaders = headers ? Object.assign({}, headers) : {}; for (const [nextHeaderName, nextHeaderValue] of Object.entries(nextHeaders)) { const existingHeaderName = Object.keys(mergedHeaders).find((headerName) => headerName.toLowerCase() === nextHeaderName.toLowerCase()); if (existingHeaderName) { delete mergedHeaders[existingHeaderName]; } mergedHeaders[nextHeaderName] = nextHeaderValue; } return mergedHeaders; } function isFormDataBody(body) { return body instanceof form_data_1.default; } function isPipeableBody(body) { return typeof body === 'object' && body !== null && 'pipe' in body && 'on' in body; } function sendNodeRequest(url, options) { return __awaiter(this, void 0, void 0, function* () { const targetUrl = typeof url === 'string' ? new URL(url) : url; const requestHeaders = normalizeHeaders(options.headers, options.body); const requestBody = serializeBody(options.body); const transport = targetUrl.protocol === 'https:' ? https : http; return yield new Promise((resolve, reject) => { const request = transport.request(targetUrl, { agent: options.agent, headers: requestHeaders, method: options.method, }, (response) => { const chunks = []; response.on('data', (chunk) => { chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)); }); response.on('end', () => { var _a; const body = Buffer.concat(chunks); resolve(createBufferedResponse((_a = response.statusCode) !== null && _a !== void 0 ? _a : 0, getHeadersFromNodeResponse(response), () => __awaiter(this, void 0, void 0, function* () { return body; }))); }); response.on('error', reject); }); request.on('error', reject); if (requestBody === undefined) { request.end(); return; } if (isPipeableBody(requestBody)) { requestBody.on('error', reject); requestBody.pipe(request); return; } request.end(requestBody); }); }); } function serializeBody(body) { if (body === undefined) { return undefined; } if (typeof body === 'string' || Buffer.isBuffer(body) || isPipeableBody(body)) { return body; } if (body instanceof url_1.URLSearchParams) { return body.toString(); } throw new TypeError('Unsupported HTTP request body for Node transport.'); } function getHeadersFromFetchResponse(response) { const headers = {}; response.headers.forEach((value, name) => { headers[name] = value; }); return headers; } function getHeadersFromNodeResponse(response) { const headers = {}; for (const [name, value] of Object.entries(response.headers)) { if (value === undefined) { continue; } headers[name] = Array.isArray(value) ? value.join(', ') : value; } return headers; } function createBufferedResponse(status, headers, getBody) { let bodyPromise; const readBody = () => __awaiter(this, void 0, void 0, function* () { if (!bodyPromise) { bodyPromise = getBody(); } return yield bodyPromise; }); return { status, headers, binary() { return __awaiter(this, void 0, void 0, function* () { return yield readBody(); }); }, text() { return __awaiter(this, void 0, void 0, function* () { return (yield readBody()).toString(); }); }, }; } function shouldOmitResponseBody(status) { return status === 101 || status === 204 || status === 205 || status === 304; } //# sourceMappingURL=Transport.js.map