@ackee/antonio-core
Version:
A HTTP client built on fetch API with axios-like API.
70 lines (68 loc) • 9.53 kB
JavaScript
import Headers from 'fetch-headers';
function hasStringTag(value) {
return value[Symbol.toStringTag] !== undefined;
}
const getEntriesOf = (value = {}) => {
return hasStringTag(value) ? value.entries() : Object.entries(value ?? {});
};
export function mergeHeaders(headersA, headersB) {
const result = new Headers();
for (const [key, value] of getEntriesOf(headersA)) {
result.set(key, value);
}
for (const [key, value] of getEntriesOf(headersB)) {
result.set(key, value);
}
return result;
}
function setSearchParam(searchParams, name, value) {
if (Array.isArray(value)) {
value.forEach(item => searchParams.append(name, String(item)));
} else {
searchParams.append(name, String(value));
}
}
export function mergeParams(paramsA, paramsB) {
const result = new URLSearchParams([...paramsA.entries()]);
// delete conflicted keys
for (const key of paramsA.keys()) {
if (paramsB.has(key)) {
result.delete(key);
}
}
// append new values
for (const [key, value] of paramsB.entries()) {
setSearchParam(result, key, value);
}
return result;
}
function parseParams(params) {
if (!params || params instanceof URLSearchParams) {
return params || new URLSearchParams();
}
const searchParams = new URLSearchParams();
Object.entries(params).forEach(([key, value]) => {
setSearchParam(searchParams, key, value);
});
return searchParams;
}
export function mergeRequestConfigs(configA, configB = {}) {
const result = {
...configA,
...configB
};
if (configA.headers || configB.headers) {
result.headers = mergeHeaders(configA.headers, configB.headers);
}
if (configA.uriParams && configB.uriParams) {
result.uriParams = {
...configA.uriParams,
...configB.uriParams
};
}
if (configA.params || configB.params) {
result.params = mergeParams(parseParams(configA.params), parseParams(configB.params));
}
return result;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJIZWFkZXJzIiwiaGFzU3RyaW5nVGFnIiwidmFsdWUiLCJTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsInVuZGVmaW5lZCIsImdldEVudHJpZXNPZiIsImVudHJpZXMiLCJPYmplY3QiLCJtZXJnZUhlYWRlcnMiLCJoZWFkZXJzQSIsImhlYWRlcnNCIiwicmVzdWx0Iiwia2V5Iiwic2V0Iiwic2V0U2VhcmNoUGFyYW0iLCJzZWFyY2hQYXJhbXMiLCJuYW1lIiwiQXJyYXkiLCJpc0FycmF5IiwiZm9yRWFjaCIsIml0ZW0iLCJhcHBlbmQiLCJTdHJpbmciLCJtZXJnZVBhcmFtcyIsInBhcmFtc0EiLCJwYXJhbXNCIiwiVVJMU2VhcmNoUGFyYW1zIiwia2V5cyIsImhhcyIsImRlbGV0ZSIsInBhcnNlUGFyYW1zIiwicGFyYW1zIiwibWVyZ2VSZXF1ZXN0Q29uZmlncyIsImNvbmZpZ0EiLCJjb25maWdCIiwiaGVhZGVycyIsInVyaVBhcmFtcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3JlcXVlc3QvdXRpbHMvbWVyZ2VSZXF1ZXN0Q29uZmlncy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgSGVhZGVycyBmcm9tICdmZXRjaC1oZWFkZXJzJztcblxuaW1wb3J0IHR5cGUgeyBGaW5hbFJlcXVlc3RDb25maWcsIFJlcXVlc3RDb25maWcsIFJlcXVlc3RIZWFkZXJzLCBSZXF1ZXN0U2VhcmNoUGFyYW1zIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgdHlwZSB7IERlZmF1bHRSZXF1ZXN0Q29uZmlnIH0gZnJvbSAnLi4vY29uZmlnJztcblxuZnVuY3Rpb24gaGFzU3RyaW5nVGFnKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBIZWFkZXJzIHwgVVJMU2VhcmNoUGFyYW1zIHtcbiAgICByZXR1cm4gdmFsdWVbU3ltYm9sLnRvU3RyaW5nVGFnXSAhPT0gdW5kZWZpbmVkO1xufVxuXG5jb25zdCBnZXRFbnRyaWVzT2YgPSAodmFsdWU6IGFueSA9IHt9KSA9PiB7XG4gICAgcmV0dXJuIGhhc1N0cmluZ1RhZyh2YWx1ZSkgPyAodmFsdWUuZW50cmllcygpIGFzIEl0ZXJhYmxlSXRlcmF0b3I8W3N0cmluZywgYW55XT4pIDogT2JqZWN0LmVudHJpZXModmFsdWUgPz8ge30pO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlSGVhZGVycyhoZWFkZXJzQT86IFJlcXVlc3RIZWFkZXJzLCBoZWFkZXJzQj86IFJlcXVlc3RIZWFkZXJzKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IEhlYWRlcnMoKTtcblxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGdldEVudHJpZXNPZihoZWFkZXJzQSkpIHtcbiAgICAgICAgcmVzdWx0LnNldChrZXksIHZhbHVlKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBnZXRFbnRyaWVzT2YoaGVhZGVyc0IpKSB7XG4gICAgICAgIHJlc3VsdC5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gc2V0U2VhcmNoUGFyYW0oc2VhcmNoUGFyYW1zOiBVUkxTZWFyY2hQYXJhbXMsIG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKGl0ZW0gPT4gc2VhcmNoUGFyYW1zLmFwcGVuZChuYW1lLCBTdHJpbmcoaXRlbSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBzZWFyY2hQYXJhbXMuYXBwZW5kKG5hbWUsIFN0cmluZyh2YWx1ZSkpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlUGFyYW1zKHBhcmFtc0E6IFVSTFNlYXJjaFBhcmFtcywgcGFyYW1zQjogVVJMU2VhcmNoUGFyYW1zKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhbLi4ucGFyYW1zQS5lbnRyaWVzKCldKTtcblxuICAgIC8vIGRlbGV0ZSBjb25mbGljdGVkIGtleXNcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBwYXJhbXNBLmtleXMoKSkge1xuICAgICAgICBpZiAocGFyYW1zQi5oYXMoa2V5KSkge1xuICAgICAgICAgICAgcmVzdWx0LmRlbGV0ZShrZXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gYXBwZW5kIG5ldyB2YWx1ZXNcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBwYXJhbXNCLmVudHJpZXMoKSkge1xuICAgICAgICBzZXRTZWFyY2hQYXJhbShyZXN1bHQsIGtleSwgdmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlUGFyYW1zKHBhcmFtcz86IFJlcXVlc3RTZWFyY2hQYXJhbXMpIHtcbiAgICBpZiAoIXBhcmFtcyB8fCBwYXJhbXMgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIHBhcmFtcyB8fCBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuXG4gICAgT2JqZWN0LmVudHJpZXMocGFyYW1zKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgc2V0U2VhcmNoUGFyYW0oc2VhcmNoUGFyYW1zLCBrZXksIHZhbHVlKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBzZWFyY2hQYXJhbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVJlcXVlc3RDb25maWdzKGNvbmZpZ0E6IERlZmF1bHRSZXF1ZXN0Q29uZmlnLCBjb25maWdCOiBSZXF1ZXN0Q29uZmlnID0ge30pIHtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAgIC4uLmNvbmZpZ0EsXG4gICAgICAgIC4uLmNvbmZpZ0IsXG4gICAgfTtcblxuICAgIGlmIChjb25maWdBLmhlYWRlcnMgfHwgY29uZmlnQi5oZWFkZXJzKSB7XG4gICAgICAgIHJlc3VsdC5oZWFkZXJzID0gbWVyZ2VIZWFkZXJzKGNvbmZpZ0EuaGVhZGVycywgY29uZmlnQi5oZWFkZXJzKTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnQS51cmlQYXJhbXMgJiYgY29uZmlnQi51cmlQYXJhbXMpIHtcbiAgICAgICAgcmVzdWx0LnVyaVBhcmFtcyA9IHtcbiAgICAgICAgICAgIC4uLmNvbmZpZ0EudXJpUGFyYW1zLFxuICAgICAgICAgICAgLi4uY29uZmlnQi51cmlQYXJhbXMsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ0EucGFyYW1zIHx8IGNvbmZpZ0IucGFyYW1zKSB7XG4gICAgICAgIHJlc3VsdC5wYXJhbXMgPSBtZXJnZVBhcmFtcyhwYXJzZVBhcmFtcyhjb25maWdBLnBhcmFtcyksIHBhcnNlUGFyYW1zKGNvbmZpZ0IucGFyYW1zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdCBhcyBGaW5hbFJlcXVlc3RDb25maWc7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLE9BQU8sTUFBTSxlQUFlO0FBTW5DLFNBQVNDLFlBQVlBLENBQUNDLEtBQVUsRUFBc0M7RUFDbEUsT0FBT0EsS0FBSyxDQUFDQyxNQUFNLENBQUNDLFdBQVcsQ0FBQyxLQUFLQyxTQUFTO0FBQ2xEO0FBRUEsTUFBTUMsWUFBWSxHQUFHQSxDQUFDSixLQUFVLEdBQUcsQ0FBQyxDQUFDLEtBQUs7RUFDdEMsT0FBT0QsWUFBWSxDQUFDQyxLQUFLLENBQUMsR0FBSUEsS0FBSyxDQUFDSyxPQUFPLENBQUMsQ0FBQyxHQUF1Q0MsTUFBTSxDQUFDRCxPQUFPLENBQUNMLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNuSCxDQUFDO0FBRUQsT0FBTyxTQUFTTyxZQUFZQSxDQUFDQyxRQUF5QixFQUFFQyxRQUF5QixFQUFFO0VBQy9FLE1BQU1DLE1BQU0sR0FBRyxJQUFJWixPQUFPLENBQUMsQ0FBQztFQUU1QixLQUFLLE1BQU0sQ0FBQ2EsR0FBRyxFQUFFWCxLQUFLLENBQUMsSUFBSUksWUFBWSxDQUFDSSxRQUFRLENBQUMsRUFBRTtJQUMvQ0UsTUFBTSxDQUFDRSxHQUFHLENBQUNELEdBQUcsRUFBRVgsS0FBSyxDQUFDO0VBQzFCO0VBRUEsS0FBSyxNQUFNLENBQUNXLEdBQUcsRUFBRVgsS0FBSyxDQUFDLElBQUlJLFlBQVksQ0FBQ0ssUUFBUSxDQUFDLEVBQUU7SUFDL0NDLE1BQU0sQ0FBQ0UsR0FBRyxDQUFDRCxHQUFHLEVBQUVYLEtBQUssQ0FBQztFQUMxQjtFQUVBLE9BQU9VLE1BQU07QUFDakI7QUFFQSxTQUFTRyxjQUFjQSxDQUFDQyxZQUE2QixFQUFFQyxJQUFZLEVBQUVmLEtBQVUsRUFBUTtFQUNuRixJQUFJZ0IsS0FBSyxDQUFDQyxPQUFPLENBQUNqQixLQUFLLENBQUMsRUFBRTtJQUN0QkEsS0FBSyxDQUFDa0IsT0FBTyxDQUFDQyxJQUFJLElBQUlMLFlBQVksQ0FBQ00sTUFBTSxDQUFDTCxJQUFJLEVBQUVNLE1BQU0sQ0FBQ0YsSUFBSSxDQUFDLENBQUMsQ0FBQztFQUNsRSxDQUFDLE1BQU07SUFDSEwsWUFBWSxDQUFDTSxNQUFNLENBQUNMLElBQUksRUFBRU0sTUFBTSxDQUFDckIsS0FBSyxDQUFDLENBQUM7RUFDNUM7QUFDSjtBQUVBLE9BQU8sU0FBU3NCLFdBQVdBLENBQUNDLE9BQXdCLEVBQUVDLE9BQXdCLEVBQUU7RUFDNUUsTUFBTWQsTUFBTSxHQUFHLElBQUllLGVBQWUsQ0FBQyxDQUFDLEdBQUdGLE9BQU8sQ0FBQ2xCLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQzs7RUFFMUQ7RUFDQSxLQUFLLE1BQU1NLEdBQUcsSUFBSVksT0FBTyxDQUFDRyxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzlCLElBQUlGLE9BQU8sQ0FBQ0csR0FBRyxDQUFDaEIsR0FBRyxDQUFDLEVBQUU7TUFDbEJELE1BQU0sQ0FBQ2tCLE1BQU0sQ0FBQ2pCLEdBQUcsQ0FBQztJQUN0QjtFQUNKOztFQUVBO0VBQ0EsS0FBSyxNQUFNLENBQUNBLEdBQUcsRUFBRVgsS0FBSyxDQUFDLElBQUl3QixPQUFPLENBQUNuQixPQUFPLENBQUMsQ0FBQyxFQUFFO0lBQzFDUSxjQUFjLENBQUNILE1BQU0sRUFBRUMsR0FBRyxFQUFFWCxLQUFLLENBQUM7RUFDdEM7RUFFQSxPQUFPVSxNQUFNO0FBQ2pCO0FBRUEsU0FBU21CLFdBQVdBLENBQUNDLE1BQTRCLEVBQUU7RUFDL0MsSUFBSSxDQUFDQSxNQUFNLElBQUlBLE1BQU0sWUFBWUwsZUFBZSxFQUFFO0lBQzlDLE9BQU9LLE1BQU0sSUFBSSxJQUFJTCxlQUFlLENBQUMsQ0FBQztFQUMxQztFQUVBLE1BQU1YLFlBQVksR0FBRyxJQUFJVyxlQUFlLENBQUMsQ0FBQztFQUUxQ25CLE1BQU0sQ0FBQ0QsT0FBTyxDQUFDeUIsTUFBTSxDQUFDLENBQUNaLE9BQU8sQ0FBQyxDQUFDLENBQUNQLEdBQUcsRUFBRVgsS0FBSyxDQUFDLEtBQUs7SUFDN0NhLGNBQWMsQ0FBQ0MsWUFBWSxFQUFFSCxHQUFHLEVBQUVYLEtBQUssQ0FBQztFQUM1QyxDQUFDLENBQUM7RUFFRixPQUFPYyxZQUFZO0FBQ3ZCO0FBRUEsT0FBTyxTQUFTaUIsbUJBQW1CQSxDQUFDQyxPQUE2QixFQUFFQyxPQUFzQixHQUFHLENBQUMsQ0FBQyxFQUFFO0VBQzVGLE1BQU12QixNQUFNLEdBQUc7SUFDWCxHQUFHc0IsT0FBTztJQUNWLEdBQUdDO0VBQ1AsQ0FBQztFQUVELElBQUlELE9BQU8sQ0FBQ0UsT0FBTyxJQUFJRCxPQUFPLENBQUNDLE9BQU8sRUFBRTtJQUNwQ3hCLE1BQU0sQ0FBQ3dCLE9BQU8sR0FBRzNCLFlBQVksQ0FBQ3lCLE9BQU8sQ0FBQ0UsT0FBTyxFQUFFRCxPQUFPLENBQUNDLE9BQU8sQ0FBQztFQUNuRTtFQUVBLElBQUlGLE9BQU8sQ0FBQ0csU0FBUyxJQUFJRixPQUFPLENBQUNFLFNBQVMsRUFBRTtJQUN4Q3pCLE1BQU0sQ0FBQ3lCLFNBQVMsR0FBRztNQUNmLEdBQUdILE9BQU8sQ0FBQ0csU0FBUztNQUNwQixHQUFHRixPQUFPLENBQUNFO0lBQ2YsQ0FBQztFQUNMO0VBRUEsSUFBSUgsT0FBTyxDQUFDRixNQUFNLElBQUlHLE9BQU8sQ0FBQ0gsTUFBTSxFQUFFO0lBQ2xDcEIsTUFBTSxDQUFDb0IsTUFBTSxHQUFHUixXQUFXLENBQUNPLFdBQVcsQ0FBQ0csT0FBTyxDQUFDRixNQUFNLENBQUMsRUFBRUQsV0FBVyxDQUFDSSxPQUFPLENBQUNILE1BQU0sQ0FBQyxDQUFDO0VBQ3pGO0VBRUEsT0FBT3BCLE1BQU07QUFDakIiLCJpZ25vcmVMaXN0IjpbXX0=