@eleven-am/nestjs-storage
Version:
A NestJS module for uploading files to cloud storage providers
71 lines • 2.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeRequest = makeRequest;
function performFetch({ method, headers, body, query, address, abortSignal, }) {
const url = new URL(address);
if (query) {
Object.entries(query).forEach(([key, value]) => {
if (Array.isArray(value)) {
value.forEach((value) => url.searchParams.append(key, String(value)));
}
else {
url.searchParams.append(key, String(value));
}
});
}
return fetch(url.toString(), {
method,
headers,
body: body ? JSON.stringify(body) : undefined,
signal: abortSignal,
});
}
function getData(params) {
return new Promise((resolve, reject) => {
performFetch(params)
.then((response) => {
const isJson = response.headers.get('content-type')?.includes('application/json') ??
false;
const statusCode = response.status;
const statusText = response.statusText;
const isOk = response.ok;
if (!isOk) {
reject({
statusCode,
statusText,
});
}
if (isJson) {
response
.json()
.then((json) => {
resolve(json);
})
.catch((error) => {
reject(error);
});
}
else {
response
.text()
.then((text) => {
resolve(text);
})
.catch((error) => {
reject(error);
});
}
})
.catch((error) => {
reject(error);
});
});
}
async function makeRequest(params, schema) {
const data = await getData(params);
if (schema) {
return schema.parse(data);
}
return data;
}
//# sourceMappingURL=makeRequest.js.map