mirror of
https://github.com/SomboChea/ui
synced 2024-11-05 06:04:28 +07:00
6b5d0b7e2e
This PR convert the code base to Typescript, the changes are the following: - migrate code base to Typescript (3.4.x) - enable `eslint` and `@typescript-eslint/eslint-plugin` (warnings still need to be addressed in future pull request - update relevant dependencies for this PR (linting, etc) - enable `bundlezise` (it was disabled for some reason) * refactor: refactoring to typescript * refactor: migrating to typescript * refactor: applied feedbacks * fix: fixed conflicts * refactored: changed registry * refactor: updated registry & removed unnecessary lib * fix: fixed registry ur * fix: fixed page load * refactor: refactored footer wip * refactor: converting to ts..wip * refactor: converting to ts. wip * refactor: converting to ts. wip * refactor: converting to ts * refactor: converting to ts * fix: fixed load errors * refactor: converted files to ts * refactor: removed flow from tests * fix: removed transpiled files * refactor: added ts-ignore * fix: fixed errors * fix: fixed types * fix: fixing jest import -.- * fix: fixing lint errors * fix: fixing lint errors * fix: fixed lint errors * refactor: removed unnecessary tsconfig's config * fix: fixing errors * fix: fixed warning * fix: fixed test * refactor: wip * refactor: wip * refactor: wip * fix: fixing tests: wip * wip * wip * fix: fixed search test * wip * fix: fixing lint errors * fix: re-added stylelint * refactor: updated stylelint script * fix: fixed: 'styles.js' were found. * fix: fixed Search tests * chore: enable eslint eslint needs expecitely to know which file has to lint, by default is JS, in this case we need also ts,tsx files eslint . --ext .js,.ts * chore: vcode eslint settings * chore: restore eslint previous conf * chore: clean jest config * chore: fix eslint warnings * chore: eslint errors cleared chore: clean warnings chore: remove github actions test phases chore: remove dupe rule * chore: update handler name * chore: restore logo from img to url css prop - loading images with css is more performant than using img html tags, switching this might be a breaking change - restore no-empty-source seems the linting do not accept false - update snapshots - remove @material-ui/styles * chore: update stylelint linting * chore: update stylelint linting * chore: fix a mistake on move tabs to a function * chore: eanble bundlezie * chore: use default_executor in circleci * chore: update readme
68 lines
1.7 KiB
TypeScript
68 lines
1.7 KiB
TypeScript
import storage from './storage';
|
|
import '../../types';
|
|
|
|
/**
|
|
* Handles response according to content type
|
|
* @param {object} response
|
|
* @returns {promise}
|
|
*/
|
|
function handleResponseType(response): Promise<any> {
|
|
if (response.headers) {
|
|
const contentType = response.headers.get('Content-Type');
|
|
if (contentType.includes('application/pdf')) {
|
|
return Promise.all([response.ok, response.blob()]);
|
|
}
|
|
if (contentType.includes('application/json')) {
|
|
return Promise.all([response.ok, response.json()]);
|
|
}
|
|
// it includes all text types
|
|
if (contentType.includes('text/')) {
|
|
return Promise.all([response.ok, response.text()]);
|
|
}
|
|
}
|
|
|
|
return Promise.resolve();
|
|
}
|
|
|
|
class API {
|
|
public request(url: string, method = 'GET', options: any = {}): Promise<any> {
|
|
if (!window.VERDACCIO_API_URL) {
|
|
throw new Error('VERDACCIO_API_URL is not defined!');
|
|
}
|
|
|
|
const token = storage.getItem('token');
|
|
if (token) {
|
|
if (!options.headers) options.headers = {};
|
|
|
|
options.headers.authorization = `Bearer ${token}`;
|
|
}
|
|
|
|
if (!['http://', 'https://', '//'].some(prefix => url.startsWith(prefix))) {
|
|
// @ts-ignore
|
|
url = window.VERDACCIO_API_URL + url;
|
|
}
|
|
|
|
return new Promise<any>((resolve, reject) => {
|
|
fetch(url, {
|
|
method,
|
|
credentials: 'same-origin',
|
|
...options,
|
|
})
|
|
// @ts-ignore
|
|
.then(handleResponseType)
|
|
.then(([responseOk, body]) => {
|
|
if (responseOk) {
|
|
resolve(body);
|
|
} else {
|
|
reject(body);
|
|
}
|
|
})
|
|
.catch(error => {
|
|
reject(error);
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
export default new API();
|