UNPKG

@agnostack/requestd

Version:

Please contact agnoStack via info@agnostack.com for any questions

102 lines 3.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.testBrowserStorage = exports.replaceHeaders = exports.convertHeaders = exports.safeParse = exports.safeTrim = exports.removeTrailingSlash = exports.removeLeadingSlash = exports.stringNotEmpty = exports.ensureObject = exports.ensureString = exports.delay = exports.DEFAULT_VERBS = exports.TEST_STORAGE = void 0; const browser_monads_ts_1 = require("browser-monads-ts"); exports.TEST_STORAGE = { KEY: '__test', VALUE: '1' }; exports.DEFAULT_VERBS = ['GET', 'PUT', 'POST', 'PATCH', 'DELETE', 'QUERY']; const delay = async (time) => { return new Promise((resolve) => { return setTimeout(() => { return resolve(); }, time); }); }; exports.delay = delay; const ensureString = (string) => (string ? `${string}` : ''); exports.ensureString = ensureString; const ensureObject = (object) => object || {}; exports.ensureObject = ensureObject; const stringNotEmpty = (stringable) => { const string = (0, exports.ensureString)(stringable); return string.length > 0 && !['null', 'undefined'].includes(string); }; exports.stringNotEmpty = stringNotEmpty; const removeLeadingSlash = (string) => { return (0, exports.ensureString)(string).replace(/^\/+/, ''); }; exports.removeLeadingSlash = removeLeadingSlash; const removeTrailingSlash = (string) => { return (0, exports.ensureString)(string).replace(/\/+$/, ''); }; exports.removeTrailingSlash = removeTrailingSlash; // eslint-disable-next-line @typescript-eslint/no-explicit-any const safeTrim = (object) => { if (object && (typeof object === 'string')) { object = object.trim(); } return object; }; exports.safeTrim = safeTrim; const safeParse = ( // eslint-disable-next-line @typescript-eslint/no-explicit-any value, trim) => { let response; if (value && (typeof value === 'string')) { if (trim) { response = (0, exports.safeTrim)(value); } if (value.startsWith('{') || value.startsWith('[') || value.startsWith('"')) { response = JSON.parse(value); } } return response || value; }; exports.safeParse = safeParse; const convertHeaders = (headers) => { const _headers = {}; if (headers) { // TODO: handle parent > headers.forEach(value, key, parent: Headers) headers.forEach((value, key) => { const previousValues = _headers[key] || []; _headers[key] = [ ...previousValues, value ]; }); } return _headers; }; exports.convertHeaders = convertHeaders; const mustacheReplace = (input, replacements) => { return (0, exports.ensureString)(input).replace(/{{(.*?)}}/g, (match, ...groups) => { return groups[0] !== 'undefined' ? (0, exports.ensureObject)(replacements)[groups[0]] || match : match; }); }; const replaceHeaders = (headers = {}, replacements = {}) => { return Object.entries(headers).reduce((previousHeaders, [key, value]) => { return Object.assign(Object.assign({}, previousHeaders), { [key]: mustacheReplace(value, replacements) }); }, {}); }; exports.replaceHeaders = replaceHeaders; const testBrowserStorage = (type) => { try { const storage = browser_monads_ts_1.window[type]; if (!storage) { return false; } storage.setItem(exports.TEST_STORAGE.KEY, exports.TEST_STORAGE.VALUE); const value = storage.getItem(exports.TEST_STORAGE.KEY); storage.removeItem(exports.TEST_STORAGE.KEY); return value === exports.TEST_STORAGE.VALUE; } catch (ignore) { return false; } }; exports.testBrowserStorage = testBrowserStorage; //# sourceMappingURL=utils.js.map