@agnostack/requestd
Version:
Please contact agnoStack via info@agnostack.com for any questions
102 lines • 3.79 kB
JavaScript
;
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