@tableau/taco-toolkit
Version:
Tableau Connector Toolkit
112 lines • 6.83 kB
JavaScript
;
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.isRedirectCode = exports.parseFormData = exports.getContentType = exports.composeFetchOption = exports.isResponseError = void 0;
var request_1 = require("../../shared/app-transport/request");
var type_utils_1 = require("../../shared/type-utils");
/**
* Check if Error is thrown from superagent due to reponse with 4xx, 5xx status.
* For 4xx, 5xx status, superagent throws Error object with status and response.
*/
function isResponseError(value) {
if (value === null || typeof value !== 'object') {
return false;
}
return 'status' in value && 'response' in value;
}
exports.isResponseError = isResponseError;
function composeFetchOption(method, headers, body) {
var e_1, _a;
var requestHeaders = headers ? (0, request_1.normalizeHeaders)(headers) : {};
var requestBody = body;
// serialize object typed body
if (typeof requestBody === 'object') {
var contentType = requestHeaders['Content-Type'];
if (contentType === undefined) {
contentType = 'application/json';
requestHeaders['Content-Type'] = contentType;
}
contentType = getContentType(contentType);
if (contentType === 'application/x-www-form-urlencoded') {
var params = new URLSearchParams();
try {
for (var _b = __values(Object.entries(requestBody)), _c = _b.next(); !_c.done; _c = _b.next()) {
var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
params.append(key, (0, type_utils_1.stringifyUnknown)(value));
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
requestBody = params.toString();
}
else {
requestBody = JSON.stringify(requestBody);
}
}
var fetchOption = {
method: method,
};
if (Object.keys(requestHeaders).length > 0) {
fetchOption.headers = requestHeaders;
}
if (body !== undefined) {
fetchOption.body = requestBody;
}
return fetchOption;
}
exports.composeFetchOption = composeFetchOption;
/**
* Get media type part from Content-Type header value, and returns it in lowercase.
*
* Reference: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type#syntax
*/
function getContentType(contentTypeHeader) {
var mediaType = contentTypeHeader.split(';')[0];
return mediaType.toLowerCase();
}
exports.getContentType = getContentType;
/**
* Parse form string into key-value pair object.
*/
function parseFormData(value) {
var searchParams = new URLSearchParams(value);
return Object.fromEntries(searchParams);
}
exports.parseFormData = parseFormData;
var REDIRECT_CODES = new Set([301, 302, 303, 305, 307, 308]);
function isRedirectCode(code) {
return REDIRECT_CODES.has(code);
}
exports.isRedirectCode = isRedirectCode;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lcHMvdXRpbHMvcmVxdWVzdC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSw4REFBcUU7QUFDckUsc0RBQTBEO0FBTzFEOzs7R0FHRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxLQUFjO0lBQzVDLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDL0MsT0FBTyxLQUFLLENBQUE7S0FDYjtJQUVELE9BQU8sUUFBUSxJQUFJLEtBQUssSUFBSSxVQUFVLElBQUksS0FBSyxDQUFBO0FBQ2pELENBQUM7QUFORCwwQ0FNQztBQUVELFNBQWdCLGtCQUFrQixDQUNoQyxNQUEyQyxFQUMzQyxPQUE0QyxFQUM1QyxJQUFpQzs7SUFFakMsSUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFBLDBCQUFnQixFQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFFL0QsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFBO0lBQ3RCLDhCQUE4QjtJQUM5QixJQUFJLE9BQU8sV0FBVyxLQUFLLFFBQVEsRUFBRTtRQUNuQyxJQUFJLFdBQVcsR0FBRyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDaEQsSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFO1lBQzdCLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQTtZQUNoQyxjQUFjLENBQUMsY0FBYyxDQUFDLEdBQUcsV0FBVyxDQUFBO1NBQzdDO1FBRUQsV0FBVyxHQUFHLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUN6QyxJQUFJLFdBQVcsS0FBSyxtQ0FBbUMsRUFBRTtZQUN2RCxJQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFBOztnQkFDcEMsS0FBMkIsSUFBQSxLQUFBLFNBQUEsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQSxnQkFBQSw0QkFBRTtvQkFBN0MsSUFBQSxLQUFBLG1CQUFZLEVBQVgsR0FBRyxRQUFBLEVBQUUsS0FBSyxRQUFBO29CQUNwQixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFBLDZCQUFnQixFQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7aUJBQzVDOzs7Ozs7Ozs7WUFDRCxXQUFXLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFBO1NBQ2hDO2FBQU07WUFDTCxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQTtTQUMxQztLQUNGO0lBRUQsSUFBTSxXQUFXLEdBQStCO1FBQzlDLE1BQU0sUUFBQTtLQUNQLENBQUE7SUFFRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUMxQyxXQUFXLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQTtLQUNyQztJQUVELElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtRQUN0QixXQUFXLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQTtLQUMvQjtJQUVELE9BQU8sV0FBVyxDQUFBO0FBQ3BCLENBQUM7QUF6Q0QsZ0RBeUNDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxpQkFBeUI7SUFDdEQsSUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pELE9BQU8sU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFBO0FBQ2hDLENBQUM7QUFIRCx3Q0FHQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFDLEtBQWE7SUFDekMsSUFBTSxZQUFZLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDL0MsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFBO0FBQ3pDLENBQUM7QUFIRCxzQ0FHQztBQUVELElBQU0sY0FBYyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO0FBRTlELFNBQWdCLGNBQWMsQ0FBQyxJQUFZO0lBQ3pDLE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUNqQyxDQUFDO0FBRkQsd0NBRUMifQ==