@forgepack/request 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENCE +21 -0
- package/README.md +164 -0
- package/dist/api/api.d.ts +8 -0
- package/dist/api/api.d.ts.map +1 -0
- package/dist/api/api.js +35 -0
- package/dist/api/client.d.ts +30 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +50 -0
- package/dist/component/auth.d.ts +8 -0
- package/dist/component/auth.d.ts.map +1 -0
- package/dist/component/auth.js +9 -0
- package/dist/component/errorMessage.d.ts +6 -0
- package/dist/component/errorMessage.d.ts.map +1 -0
- package/dist/component/errorMessage.js +7 -0
- package/dist/component/request.d.ts +13 -0
- package/dist/component/request.d.ts.map +1 -0
- package/dist/component/request.js +12 -0
- package/dist/component/response.d.ts +13 -0
- package/dist/component/response.d.ts.map +1 -0
- package/dist/component/response.js +13 -0
- package/dist/component/token.d.ts +32 -0
- package/dist/component/token.d.ts.map +1 -0
- package/dist/component/token.js +16 -0
- package/dist/hook/useProvider.d.ts +13 -0
- package/dist/hook/useProvider.d.ts.map +1 -0
- package/dist/hook/useProvider.js +51 -0
- package/dist/hook/useRequest.d.ts +11 -0
- package/dist/hook/useRequest.d.ts.map +1 -0
- package/dist/hook/useRequest.js +38 -0
- package/dist/hook/useRequireAuth.d.ts +4 -0
- package/dist/hook/useRequireAuth.d.ts.map +1 -0
- package/dist/hook/useRequireAuth.js +21 -0
- package/dist/hooks/AuthContext.d.ts +19 -0
- package/dist/hooks/AuthContext.d.ts.map +1 -0
- package/dist/hooks/AuthContext.js +10 -0
- package/dist/hooks/AuthProvider.d.ts +27 -0
- package/dist/hooks/AuthProvider.d.ts.map +1 -0
- package/dist/hooks/AuthProvider.js +71 -0
- package/dist/hooks/useAuth.d.ts +33 -0
- package/dist/hooks/useAuth.d.ts.map +1 -0
- package/dist/hooks/useAuth.js +50 -0
- package/dist/hooks/useRequest.d.ts +37 -0
- package/dist/hooks/useRequest.d.ts.map +1 -0
- package/dist/hooks/useRequest.js +63 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/service/crud.d.ts +15 -0
- package/dist/service/crud.d.ts.map +1 -0
- package/dist/service/crud.js +116 -0
- package/dist/service/fetchPage.d.ts +5 -0
- package/dist/service/fetchPage.d.ts.map +1 -0
- package/dist/service/fetchPage.js +22 -0
- package/dist/service/token.d.ts +10 -0
- package/dist/service/token.d.ts.map +1 -0
- package/dist/service/token.js +93 -0
- package/dist/services/api.d.ts +33 -0
- package/dist/services/api.d.ts.map +1 -0
- package/dist/services/api.js +50 -0
- package/dist/services/auth.d.ts +51 -0
- package/dist/services/auth.d.ts.map +1 -0
- package/dist/services/auth.js +117 -0
- package/dist/services/crud.d.ts +120 -0
- package/dist/services/crud.d.ts.map +1 -0
- package/dist/services/crud.js +199 -0
- package/dist/services/token.d.ts +88 -0
- package/dist/services/token.d.ts.map +1 -0
- package/dist/services/token.js +176 -0
- package/dist/types/auth.d.ts +64 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +2 -0
- package/dist/types/error.d.ts +11 -0
- package/dist/types/error.d.ts.map +1 -0
- package/dist/types/error.js +2 -0
- package/dist/types/request.d.ts +25 -0
- package/dist/types/request.d.ts.map +1 -0
- package/dist/types/request.js +2 -0
- package/dist/types/response.d.ts +44 -0
- package/dist/types/response.d.ts.map +1 -0
- package/dist/types/response.js +2 -0
- package/dist/types/token.d.ts +43 -0
- package/dist/types/token.d.ts.map +1 -0
- package/dist/types/token.js +2 -0
- package/dist/utils/constants.d.ts +41 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +73 -0
- package/package.json +57 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getHeader = exports.decodeJwt = exports.getPayload = exports.removeToken = exports.setToken = exports.getToken = exports.isValidToken = void 0;
|
|
4
|
+
const auth_1 = require("../component/auth");
|
|
5
|
+
const token_1 = require("../component/token");
|
|
6
|
+
const isValidJSON = (json) => {
|
|
7
|
+
try {
|
|
8
|
+
JSON.parse(json);
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
const isValidToken = () => {
|
|
16
|
+
try {
|
|
17
|
+
const token = (0, exports.getToken)();
|
|
18
|
+
if (!(token === null || token === void 0 ? void 0 : token.accessToken))
|
|
19
|
+
return false;
|
|
20
|
+
const { exp } = (0, exports.getPayload)();
|
|
21
|
+
if (typeof exp !== 'number')
|
|
22
|
+
return false;
|
|
23
|
+
return exp * 1000 > Date.now();
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
exports.isValidToken = isValidToken;
|
|
30
|
+
const getToken = () => {
|
|
31
|
+
let token = `${localStorage.getItem(`token`)}`;
|
|
32
|
+
return isValidJSON(token) ? JSON.parse(token) : auth_1.initialAuth;
|
|
33
|
+
};
|
|
34
|
+
exports.getToken = getToken;
|
|
35
|
+
const setToken = (token) => {
|
|
36
|
+
localStorage.setItem(`token`, JSON.stringify(token));
|
|
37
|
+
};
|
|
38
|
+
exports.setToken = setToken;
|
|
39
|
+
const removeToken = () => {
|
|
40
|
+
localStorage.removeItem('token');
|
|
41
|
+
};
|
|
42
|
+
exports.removeToken = removeToken;
|
|
43
|
+
const getPayload = () => {
|
|
44
|
+
try {
|
|
45
|
+
const token = (0, exports.getToken)();
|
|
46
|
+
if (!(token === null || token === void 0 ? void 0 : token.accessToken))
|
|
47
|
+
return token_1.initialPayload;
|
|
48
|
+
const base64 = token.accessToken.split('.')[1]
|
|
49
|
+
.replace(/-/g, '+')
|
|
50
|
+
.replace(/_/g, '/');
|
|
51
|
+
const payload = decodeURIComponent(atob(base64)
|
|
52
|
+
.split('')
|
|
53
|
+
.map(c => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))
|
|
54
|
+
.join(''));
|
|
55
|
+
return isValidJSON(payload) ? JSON.parse(payload) : token_1.initialPayload;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return token_1.initialPayload;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
exports.getPayload = getPayload;
|
|
62
|
+
const decodeJwt = () => {
|
|
63
|
+
if ((0, exports.getToken)() !== null) {
|
|
64
|
+
var base64Url = (0, exports.getToken)().accessToken.split('.')[1];
|
|
65
|
+
var base64 = decodeURIComponent(atob(base64Url).split('').map((c) => {
|
|
66
|
+
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
|
|
67
|
+
}).join(''));
|
|
68
|
+
return base64;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
exports.decodeJwt = decodeJwt;
|
|
75
|
+
const getHeader = () => {
|
|
76
|
+
try {
|
|
77
|
+
const token = (0, exports.getToken)();
|
|
78
|
+
if (!(token === null || token === void 0 ? void 0 : token.accessToken))
|
|
79
|
+
return token_1.initialHeader;
|
|
80
|
+
const base64 = token.accessToken.split('.')[0]
|
|
81
|
+
.replace(/-/g, '+')
|
|
82
|
+
.replace(/_/g, '/');
|
|
83
|
+
const header = decodeURIComponent(atob(base64)
|
|
84
|
+
.split('')
|
|
85
|
+
.map(c => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))
|
|
86
|
+
.join(''));
|
|
87
|
+
return isValidJSON(header) ? JSON.parse(header) : token_1.initialHeader;
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return token_1.initialHeader;
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
exports.getHeader = getHeader;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { AxiosInstance } from 'axios';
|
|
2
|
+
import { Page } from '../types/response';
|
|
3
|
+
import { Search } from '../types/request';
|
|
4
|
+
/**
|
|
5
|
+
* Executa requisição paginada para um endpoint específico
|
|
6
|
+
*
|
|
7
|
+
* Funcionalidades:
|
|
8
|
+
* - Constrói URL com parâmetros de busca
|
|
9
|
+
* - Adiciona parâmetros de paginação
|
|
10
|
+
* - Suporte a ordenação
|
|
11
|
+
* - Cancelamento de requisição via AbortSignal
|
|
12
|
+
*
|
|
13
|
+
* @param api - Instância configurada do Axios
|
|
14
|
+
* @param endpoint - Endpoint da API (sem barra inicial)
|
|
15
|
+
* @param search - Parâmetros opcionais de busca e paginação
|
|
16
|
+
* @param signal - Signal para cancelamento da requisição
|
|
17
|
+
* @returns Promise com dados paginados
|
|
18
|
+
*
|
|
19
|
+
* @throws {Error} Lança erro se a requisição falhar
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const controller = new AbortController()
|
|
24
|
+
* const result = await fetchPage(
|
|
25
|
+
* api,
|
|
26
|
+
* 'users',
|
|
27
|
+
* { page: 0, size: 10, value: 'search term' },
|
|
28
|
+
* controller.signal
|
|
29
|
+
* )
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare const fetchPage: (api: AxiosInstance, endpoint: string, search?: Search, signal?: AbortSignal) => Promise<Page>;
|
|
33
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/services/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,SAAS,GAAU,KAAK,aAAa,EAAE,UAAU,MAAM,EAAE,SAAS,MAAM,EAAE,SAAS,WAAW,KAAG,OAAO,CAAC,IAAI,CAkBzH,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fetchPage = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Executa requisição paginada para um endpoint específico
|
|
6
|
+
*
|
|
7
|
+
* Funcionalidades:
|
|
8
|
+
* - Constrói URL com parâmetros de busca
|
|
9
|
+
* - Adiciona parâmetros de paginação
|
|
10
|
+
* - Suporte a ordenação
|
|
11
|
+
* - Cancelamento de requisição via AbortSignal
|
|
12
|
+
*
|
|
13
|
+
* @param api - Instância configurada do Axios
|
|
14
|
+
* @param endpoint - Endpoint da API (sem barra inicial)
|
|
15
|
+
* @param search - Parâmetros opcionais de busca e paginação
|
|
16
|
+
* @param signal - Signal para cancelamento da requisição
|
|
17
|
+
* @returns Promise com dados paginados
|
|
18
|
+
*
|
|
19
|
+
* @throws {Error} Lança erro se a requisição falhar
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const controller = new AbortController()
|
|
24
|
+
* const result = await fetchPage(
|
|
25
|
+
* api,
|
|
26
|
+
* 'users',
|
|
27
|
+
* { page: 0, size: 10, value: 'search term' },
|
|
28
|
+
* controller.signal
|
|
29
|
+
* )
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
const fetchPage = async (api, endpoint, search, signal) => {
|
|
33
|
+
var _a, _b, _c;
|
|
34
|
+
const uri = ((_a = search === null || search === void 0 ? void 0 : search.value) === null || _a === void 0 ? void 0 : _a.trim())
|
|
35
|
+
? `/${endpoint}?value=${encodeURIComponent(search.value)}`
|
|
36
|
+
: `/${endpoint}`;
|
|
37
|
+
const params = {
|
|
38
|
+
page: search === null || search === void 0 ? void 0 : search.page,
|
|
39
|
+
size: search === null || search === void 0 ? void 0 : search.size
|
|
40
|
+
};
|
|
41
|
+
if (((_b = search === null || search === void 0 ? void 0 : search.sort) === null || _b === void 0 ? void 0 : _b.order) && ((_c = search === null || search === void 0 ? void 0 : search.sort) === null || _c === void 0 ? void 0 : _c.key)) {
|
|
42
|
+
params.sort = `${search.sort.key},${search.sort.order}`;
|
|
43
|
+
}
|
|
44
|
+
const { data } = await api.get(uri, {
|
|
45
|
+
params: Object.keys(params).length > 0 ? params : undefined,
|
|
46
|
+
signal
|
|
47
|
+
});
|
|
48
|
+
return data;
|
|
49
|
+
};
|
|
50
|
+
exports.fetchPage = fetchPage;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { AxiosInstance } from 'axios';
|
|
2
|
+
import { ErrorMessage } from '../types/error';
|
|
3
|
+
import { LoginCredentials, LoginResponse, ChangePasswordData, ResetPasswordData } from '../types/auth';
|
|
4
|
+
/**
|
|
5
|
+
* Realiza login do usuário e armazena o token retornado
|
|
6
|
+
*
|
|
7
|
+
* @param api - Instância do Axios configurada
|
|
8
|
+
* @param url - Endpoint de login
|
|
9
|
+
* @param credentials - Credenciais do usuário
|
|
10
|
+
* @returns Promise com resposta de login formatada
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const result = await login(api, '/auth/login', {
|
|
15
|
+
* username: 'user',
|
|
16
|
+
* password: 'pass'
|
|
17
|
+
* })
|
|
18
|
+
*
|
|
19
|
+
* if (result.success) {
|
|
20
|
+
* console.log('Logado!', result.data)
|
|
21
|
+
* } else {
|
|
22
|
+
* console.error('Erros:', result.errors)
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare const login: (api: AxiosInstance, url: string, credentials: LoginCredentials) => Promise<LoginResponse>;
|
|
27
|
+
/**
|
|
28
|
+
* Realiza reset de senha do usuário e atualiza o token
|
|
29
|
+
*
|
|
30
|
+
* @param api - Instância do Axios configurada
|
|
31
|
+
* @param url - Endpoint de reset de senha
|
|
32
|
+
* @param data - Dados para reset da senha
|
|
33
|
+
* @returns Promise com dados de auth ou array de erros
|
|
34
|
+
*/
|
|
35
|
+
export declare const reset: (api: AxiosInstance, url: string, data: ResetPasswordData) => Promise<LoginResponse>;
|
|
36
|
+
/**
|
|
37
|
+
* Remove o token do localStorage e desloga o usuário
|
|
38
|
+
*/
|
|
39
|
+
export declare const logout: () => void;
|
|
40
|
+
/**
|
|
41
|
+
* Altera a senha do usuário autenticado
|
|
42
|
+
*
|
|
43
|
+
* @param api - Instância do Axios configurada
|
|
44
|
+
* @param data - Dados para alteração da senha
|
|
45
|
+
* @returns Promise com resposta de sucesso ou erros
|
|
46
|
+
*/
|
|
47
|
+
export declare const changePassword: (api: AxiosInstance, data: ChangePasswordData) => Promise<{
|
|
48
|
+
success: boolean;
|
|
49
|
+
errors?: ErrorMessage[];
|
|
50
|
+
}>;
|
|
51
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/services/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAQ,gBAAgB,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAwB5G;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,KAAK,GAAU,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,aAAa,gBAAgB,KAAG,OAAO,CAAC,aAAa,CAcjH,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,GAAU,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,MAAM,iBAAiB,KAAG,OAAO,CAAC,aAAa,CAc3G,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,YAElB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAU,KAAK,aAAa,EAAE,MAAM,kBAAkB,KAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,YAAY,EAAE,CAAA;CAAE,CAUxI,CAAA"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.changePassword = exports.logout = exports.reset = exports.login = void 0;
|
|
4
|
+
const token_1 = require("./token");
|
|
5
|
+
/**
|
|
6
|
+
* Processa erros de resposta da API e converte em formato padronizado
|
|
7
|
+
*
|
|
8
|
+
* @param error - Objeto de erro do Axios
|
|
9
|
+
* @returns Array de mensagens de erro formatadas
|
|
10
|
+
*/
|
|
11
|
+
const addError = (error) => {
|
|
12
|
+
var _a, _b, _c, _d;
|
|
13
|
+
let errorMessage = [];
|
|
14
|
+
if ((_b = (_a = error.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.validationErrors) {
|
|
15
|
+
error.response.data.validationErrors.forEach((element) => {
|
|
16
|
+
errorMessage.push({ field: element.field, message: element.message });
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
errorMessage.push({
|
|
21
|
+
field: 'Error',
|
|
22
|
+
message: ((_d = (_c = error.response) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.message) || 'Internal Error'
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
return errorMessage;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Realiza login do usuário e armazena o token retornado
|
|
29
|
+
*
|
|
30
|
+
* @param api - Instância do Axios configurada
|
|
31
|
+
* @param url - Endpoint de login
|
|
32
|
+
* @param credentials - Credenciais do usuário
|
|
33
|
+
* @returns Promise com resposta de login formatada
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* const result = await login(api, '/auth/login', {
|
|
38
|
+
* username: 'user',
|
|
39
|
+
* password: 'pass'
|
|
40
|
+
* })
|
|
41
|
+
*
|
|
42
|
+
* if (result.success) {
|
|
43
|
+
* console.log('Logado!', result.data)
|
|
44
|
+
* } else {
|
|
45
|
+
* console.error('Erros:', result.errors)
|
|
46
|
+
* }
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
const login = async (api, url, credentials) => {
|
|
50
|
+
try {
|
|
51
|
+
const response = await api.post(url, credentials);
|
|
52
|
+
(0, token_1.setToken)(response.data);
|
|
53
|
+
return {
|
|
54
|
+
success: true,
|
|
55
|
+
data: response.data
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
return {
|
|
60
|
+
success: false,
|
|
61
|
+
errors: addError(error)
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
exports.login = login;
|
|
66
|
+
/**
|
|
67
|
+
* Realiza reset de senha do usuário e atualiza o token
|
|
68
|
+
*
|
|
69
|
+
* @param api - Instância do Axios configurada
|
|
70
|
+
* @param url - Endpoint de reset de senha
|
|
71
|
+
* @param data - Dados para reset da senha
|
|
72
|
+
* @returns Promise com dados de auth ou array de erros
|
|
73
|
+
*/
|
|
74
|
+
const reset = async (api, url, data) => {
|
|
75
|
+
try {
|
|
76
|
+
const response = await api.put(url, data);
|
|
77
|
+
(0, token_1.setToken)(response.data);
|
|
78
|
+
return {
|
|
79
|
+
success: true,
|
|
80
|
+
data: response.data
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
return {
|
|
85
|
+
success: false,
|
|
86
|
+
errors: addError(error)
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
exports.reset = reset;
|
|
91
|
+
/**
|
|
92
|
+
* Remove o token do localStorage e desloga o usuário
|
|
93
|
+
*/
|
|
94
|
+
const logout = () => {
|
|
95
|
+
(0, token_1.removeToken)();
|
|
96
|
+
};
|
|
97
|
+
exports.logout = logout;
|
|
98
|
+
/**
|
|
99
|
+
* Altera a senha do usuário autenticado
|
|
100
|
+
*
|
|
101
|
+
* @param api - Instância do Axios configurada
|
|
102
|
+
* @param data - Dados para alteração da senha
|
|
103
|
+
* @returns Promise com resposta de sucesso ou erros
|
|
104
|
+
*/
|
|
105
|
+
const changePassword = async (api, data) => {
|
|
106
|
+
try {
|
|
107
|
+
await api.put(`/user/changePassword`, data);
|
|
108
|
+
return { success: true };
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
return {
|
|
112
|
+
success: false,
|
|
113
|
+
errors: addError(error)
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
exports.changePassword = changePassword;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { AxiosInstance } from 'axios';
|
|
2
|
+
import { ErrorMessage } from '../types/error';
|
|
3
|
+
import { Search } from '../types/request';
|
|
4
|
+
/**
|
|
5
|
+
* Cria um novo registro na API
|
|
6
|
+
*
|
|
7
|
+
* @template T - Tipo do objeto a ser criado
|
|
8
|
+
* @param api - Instância do Axios configurada
|
|
9
|
+
* @param url - Endpoint da API (sem barra inicial)
|
|
10
|
+
* @param object - Dados do objeto a ser criado
|
|
11
|
+
* @returns Promise com dados criados ou array de erros
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const result = await create(api, 'users', { name: 'João', email: 'joao@exemplo.com' })
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare const create: <T>(api: AxiosInstance, url: string, object: T) => Promise<any>;
|
|
19
|
+
/**
|
|
20
|
+
* Cria múltiplos registros de uma vez na API
|
|
21
|
+
*
|
|
22
|
+
* @template T - Tipo dos objetos a serem criados
|
|
23
|
+
* @param api - Instância do Axios configurada
|
|
24
|
+
* @param url - Endpoint da API (sem barra inicial)
|
|
25
|
+
* @param object - Array de objetos a serem criados
|
|
26
|
+
* @returns Promise com dados criados ou array de erros
|
|
27
|
+
*/
|
|
28
|
+
export declare const createAll: <T>(api: AxiosInstance, url: string, object: T[]) => Promise<ErrorMessage[] | T>;
|
|
29
|
+
/**
|
|
30
|
+
* Busca/recupera registros da API com suporte a paginação e busca
|
|
31
|
+
*
|
|
32
|
+
* Comportamentos:
|
|
33
|
+
* - Sem search: busca todos os registros
|
|
34
|
+
* - Com page/size: busca paginada
|
|
35
|
+
* - Com sort: busca paginada e ordenada
|
|
36
|
+
*
|
|
37
|
+
* @template T - Tipo dos dados retornados
|
|
38
|
+
* @param api - Instância do Axios configurada
|
|
39
|
+
* @param url - Endpoint da API (sem barra inicial)
|
|
40
|
+
* @param search - Parâmetros opcionais de busca/paginação
|
|
41
|
+
* @param signal - Signal para cancelamento da requisição
|
|
42
|
+
* @returns Promise com dados encontrados ou array de erros
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* // Busca simples
|
|
47
|
+
* const all = await retrieve(api, 'users')
|
|
48
|
+
*
|
|
49
|
+
* // Busca paginada
|
|
50
|
+
* const page = await retrieve(api, 'users', { page: 0, size: 10 })
|
|
51
|
+
*
|
|
52
|
+
* // Busca com filtro e ordenação
|
|
53
|
+
* const filtered = await retrieve(api, 'users', {
|
|
54
|
+
* value: 'João',
|
|
55
|
+
* page: 0,
|
|
56
|
+
* size: 10,
|
|
57
|
+
* sort: { key: 'name', order: 'ASC' }
|
|
58
|
+
* })
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare const retrieve: <T>(api: AxiosInstance, url: string, search?: Search, signal?: AbortSignal) => Promise<ErrorMessage[] | T>;
|
|
62
|
+
/**
|
|
63
|
+
* Atualiza um registro existente na API
|
|
64
|
+
*
|
|
65
|
+
* @template T - Tipo do objeto a ser atualizado
|
|
66
|
+
* @param api - Instância do Axios configurada
|
|
67
|
+
* @param url - Endpoint da API (sem barra inicial)
|
|
68
|
+
* @param object - Dados atualizados do objeto
|
|
69
|
+
* @returns Promise com dados atualizados ou array de erros
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```typescript
|
|
73
|
+
* const result = await update(api, 'users', { id: 1, name: 'João Silva' })
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
export declare const update: <T>(api: AxiosInstance, url: string, object: T) => Promise<ErrorMessage[] | T>;
|
|
77
|
+
/**
|
|
78
|
+
* Remove um registro específico da API
|
|
79
|
+
*
|
|
80
|
+
* @template T - Tipo da resposta
|
|
81
|
+
* @param api - Instância do Axios configurada
|
|
82
|
+
* @param url - Endpoint da API (sem barra inicial)
|
|
83
|
+
* @param id - ID do registro a ser removido
|
|
84
|
+
* @returns Promise com resposta ou array de erros
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```typescript
|
|
88
|
+
* const result = await remove(api, 'users', '123')
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export declare const remove: <T>(api: AxiosInstance, url: string, id: string) => Promise<ErrorMessage[] | T>;
|
|
92
|
+
/**
|
|
93
|
+
* Remove registros com chave composta (múltiplos IDs)
|
|
94
|
+
*
|
|
95
|
+
* @template T - Tipo da resposta
|
|
96
|
+
* @param api - Instância do Axios configurada
|
|
97
|
+
* @param url - Endpoint da API (sem barra inicial)
|
|
98
|
+
* @param object - Objeto com dados para remoção
|
|
99
|
+
* @param one - Primeiro identificador
|
|
100
|
+
* @param two - Segundo identificador
|
|
101
|
+
* @param three - Terceiro identificador (opcional)
|
|
102
|
+
* @param four - Quarto identificador (opcional)
|
|
103
|
+
* @returns Promise com resposta ou array de erros
|
|
104
|
+
*/
|
|
105
|
+
export declare const removeComposite: <T>(api: AxiosInstance, url: string, object: Object, one: string, two: string, three: string, four: string) => Promise<ErrorMessage[] | T>;
|
|
106
|
+
/**
|
|
107
|
+
* Remove todos os registros de um endpoint específico
|
|
108
|
+
*
|
|
109
|
+
* @template T - Tipo da resposta
|
|
110
|
+
* @param api - Instância do Axios configurada
|
|
111
|
+
* @param url - Endpoint da API (sem barra inicial)
|
|
112
|
+
* @returns Promise com resposta ou array de erros
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```typescript
|
|
116
|
+
* const result = await removeAll(api, 'temp-data')
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
export declare const removeAll: <T>(api: AxiosInstance, url: string) => Promise<ErrorMessage[] | T>;
|
|
120
|
+
//# sourceMappingURL=crud.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crud.d.ts","sourceRoot":"","sources":["../../src/services/crud.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AA2BzC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,MAAM,GAAU,CAAC,EAAG,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,QAAQ,CAAC,iBAI1E,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,SAAS,GAAU,CAAC,EAAG,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,QAAQ,CAAC,EAAE,gCAI/E,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,QAAQ,GAAU,CAAC,EAAG,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,SAAS,MAAM,EAAE,SAAS,WAAW,gCAcxG,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,MAAM,GAAU,CAAC,EAAG,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,QAAQ,CAAC,gCAI1E,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,MAAM,GAAU,CAAC,EAAG,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,IAAI,MAAM,gCAI3E,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,GAAU,CAAC,EAAG,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,QAAQ,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,OAAO,MAAM,EAAE,MAAM,MAAM,gCAU/I,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,SAAS,GAAU,CAAC,EAAG,KAAK,aAAa,EAAE,KAAK,MAAM,gCAIlE,CAAA"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.removeAll = exports.removeComposite = exports.remove = exports.update = exports.retrieve = exports.createAll = exports.create = void 0;
|
|
4
|
+
// Códigos de status HTTP:
|
|
5
|
+
// Respostas de informação (100-199),
|
|
6
|
+
// Respostas de sucesso (200-299),
|
|
7
|
+
// Redirecionamentos (300-399)
|
|
8
|
+
// Erros do cliente (400-499)
|
|
9
|
+
// Erros do servidor (500-599).
|
|
10
|
+
/**
|
|
11
|
+
* Processa erros de resposta da API e converte em formato padronizado
|
|
12
|
+
*
|
|
13
|
+
* @param error - Objeto de erro do Axios
|
|
14
|
+
* @returns Array de mensagens de erro formatadas
|
|
15
|
+
*/
|
|
16
|
+
const addError = (error) => {
|
|
17
|
+
var _a, _b;
|
|
18
|
+
let errorMessage = [];
|
|
19
|
+
if (error.response.data.validationErrors !== undefined) {
|
|
20
|
+
(_b = (_a = error.response.data) === null || _a === void 0 ? void 0 : _a.validationErrors) === null || _b === void 0 ? void 0 : _b.forEach((element) => {
|
|
21
|
+
errorMessage.push({ field: element.field, message: element.message });
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
errorMessage.push({ field: 'Error', message: 'Internal Error' });
|
|
26
|
+
}
|
|
27
|
+
return errorMessage;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Cria um novo registro na API
|
|
31
|
+
*
|
|
32
|
+
* @template T - Tipo do objeto a ser criado
|
|
33
|
+
* @param api - Instância do Axios configurada
|
|
34
|
+
* @param url - Endpoint da API (sem barra inicial)
|
|
35
|
+
* @param object - Dados do objeto a ser criado
|
|
36
|
+
* @returns Promise com dados criados ou array de erros
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const result = await create(api, 'users', { name: 'João', email: 'joao@exemplo.com' })
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
const create = async (api, url, object) => {
|
|
44
|
+
return await api.post(`/${url}`, object)
|
|
45
|
+
.then(response => { return response.data; })
|
|
46
|
+
.catch(error => { return addError(error); });
|
|
47
|
+
};
|
|
48
|
+
exports.create = create;
|
|
49
|
+
/**
|
|
50
|
+
* Cria múltiplos registros de uma vez na API
|
|
51
|
+
*
|
|
52
|
+
* @template T - Tipo dos objetos a serem criados
|
|
53
|
+
* @param api - Instância do Axios configurada
|
|
54
|
+
* @param url - Endpoint da API (sem barra inicial)
|
|
55
|
+
* @param object - Array de objetos a serem criados
|
|
56
|
+
* @returns Promise com dados criados ou array de erros
|
|
57
|
+
*/
|
|
58
|
+
const createAll = async (api, url, object) => {
|
|
59
|
+
return await api.post(`/${url}/createAll`, object)
|
|
60
|
+
.then(response => { return response.data; })
|
|
61
|
+
.catch(error => { return addError(error); });
|
|
62
|
+
};
|
|
63
|
+
exports.createAll = createAll;
|
|
64
|
+
/**
|
|
65
|
+
* Busca/recupera registros da API com suporte a paginação e busca
|
|
66
|
+
*
|
|
67
|
+
* Comportamentos:
|
|
68
|
+
* - Sem search: busca todos os registros
|
|
69
|
+
* - Com page/size: busca paginada
|
|
70
|
+
* - Com sort: busca paginada e ordenada
|
|
71
|
+
*
|
|
72
|
+
* @template T - Tipo dos dados retornados
|
|
73
|
+
* @param api - Instância do Axios configurada
|
|
74
|
+
* @param url - Endpoint da API (sem barra inicial)
|
|
75
|
+
* @param search - Parâmetros opcionais de busca/paginação
|
|
76
|
+
* @param signal - Signal para cancelamento da requisição
|
|
77
|
+
* @returns Promise com dados encontrados ou array de erros
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* // Busca simples
|
|
82
|
+
* const all = await retrieve(api, 'users')
|
|
83
|
+
*
|
|
84
|
+
* // Busca paginada
|
|
85
|
+
* const page = await retrieve(api, 'users', { page: 0, size: 10 })
|
|
86
|
+
*
|
|
87
|
+
* // Busca com filtro e ordenação
|
|
88
|
+
* const filtered = await retrieve(api, 'users', {
|
|
89
|
+
* value: 'João',
|
|
90
|
+
* page: 0,
|
|
91
|
+
* size: 10,
|
|
92
|
+
* sort: { key: 'name', order: 'ASC' }
|
|
93
|
+
* })
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
const retrieve = async (api, url, search, signal) => {
|
|
97
|
+
var _a, _b, _c;
|
|
98
|
+
if ((search === null || search === void 0 ? void 0 : search.page) === undefined && (search === null || search === void 0 ? void 0 : search.size) === undefined) {
|
|
99
|
+
return await api.get(`/${url}`)
|
|
100
|
+
.then(response => { return response.data; })
|
|
101
|
+
.catch(error => { return addError(error); });
|
|
102
|
+
}
|
|
103
|
+
else if (((_a = search === null || search === void 0 ? void 0 : search.sort) === null || _a === void 0 ? void 0 : _a.order) === undefined) {
|
|
104
|
+
return await api.get(`/${url}?value=${search === null || search === void 0 ? void 0 : search.value}`, { params: { page: search === null || search === void 0 ? void 0 : search.page, size: search === null || search === void 0 ? void 0 : search.size }, signal })
|
|
105
|
+
.then(response => { return response.data; })
|
|
106
|
+
.catch(error => { return addError(error); });
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
return await api.get(`/${url}?value=${search === null || search === void 0 ? void 0 : search.value}`, { params: { page: search === null || search === void 0 ? void 0 : search.page, size: search === null || search === void 0 ? void 0 : search.size, sort: `${(_b = search === null || search === void 0 ? void 0 : search.sort) === null || _b === void 0 ? void 0 : _b.key},${(_c = search === null || search === void 0 ? void 0 : search.sort) === null || _c === void 0 ? void 0 : _c.order}` }, signal })
|
|
110
|
+
.then(response => { return response.data; })
|
|
111
|
+
.catch(error => { return addError(error); });
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
exports.retrieve = retrieve;
|
|
115
|
+
/**
|
|
116
|
+
* Atualiza um registro existente na API
|
|
117
|
+
*
|
|
118
|
+
* @template T - Tipo do objeto a ser atualizado
|
|
119
|
+
* @param api - Instância do Axios configurada
|
|
120
|
+
* @param url - Endpoint da API (sem barra inicial)
|
|
121
|
+
* @param object - Dados atualizados do objeto
|
|
122
|
+
* @returns Promise com dados atualizados ou array de erros
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```typescript
|
|
126
|
+
* const result = await update(api, 'users', { id: 1, name: 'João Silva' })
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
const update = async (api, url, object) => {
|
|
130
|
+
return await api.put(`/${url}`, object)
|
|
131
|
+
.then(response => { return response.data; })
|
|
132
|
+
.catch(error => { return addError(error); });
|
|
133
|
+
};
|
|
134
|
+
exports.update = update;
|
|
135
|
+
/**
|
|
136
|
+
* Remove um registro específico da API
|
|
137
|
+
*
|
|
138
|
+
* @template T - Tipo da resposta
|
|
139
|
+
* @param api - Instância do Axios configurada
|
|
140
|
+
* @param url - Endpoint da API (sem barra inicial)
|
|
141
|
+
* @param id - ID do registro a ser removido
|
|
142
|
+
* @returns Promise com resposta ou array de erros
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* ```typescript
|
|
146
|
+
* const result = await remove(api, 'users', '123')
|
|
147
|
+
* ```
|
|
148
|
+
*/
|
|
149
|
+
const remove = async (api, url, id) => {
|
|
150
|
+
return await api.delete(`/${url}/${id}`)
|
|
151
|
+
.then(response => { return response.data; })
|
|
152
|
+
.catch(error => { return addError(error); });
|
|
153
|
+
};
|
|
154
|
+
exports.remove = remove;
|
|
155
|
+
/**
|
|
156
|
+
* Remove registros com chave composta (múltiplos IDs)
|
|
157
|
+
*
|
|
158
|
+
* @template T - Tipo da resposta
|
|
159
|
+
* @param api - Instância do Axios configurada
|
|
160
|
+
* @param url - Endpoint da API (sem barra inicial)
|
|
161
|
+
* @param object - Objeto com dados para remoção
|
|
162
|
+
* @param one - Primeiro identificador
|
|
163
|
+
* @param two - Segundo identificador
|
|
164
|
+
* @param three - Terceiro identificador (opcional)
|
|
165
|
+
* @param four - Quarto identificador (opcional)
|
|
166
|
+
* @returns Promise com resposta ou array de erros
|
|
167
|
+
*/
|
|
168
|
+
const removeComposite = async (api, url, object, one, two, three, four) => {
|
|
169
|
+
if (three !== '' && four !== '') {
|
|
170
|
+
return await api.delete(`/${url}`, object)
|
|
171
|
+
.then(response => { return response.data; })
|
|
172
|
+
.catch(error => { return addError(error); });
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
return await api.delete(`/${url}/${one}/${two}`, object)
|
|
176
|
+
.then(response => { return response.data; })
|
|
177
|
+
.catch(error => { return addError(error); });
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
exports.removeComposite = removeComposite;
|
|
181
|
+
/**
|
|
182
|
+
* Remove todos os registros de um endpoint específico
|
|
183
|
+
*
|
|
184
|
+
* @template T - Tipo da resposta
|
|
185
|
+
* @param api - Instância do Axios configurada
|
|
186
|
+
* @param url - Endpoint da API (sem barra inicial)
|
|
187
|
+
* @returns Promise com resposta ou array de erros
|
|
188
|
+
*
|
|
189
|
+
* @example
|
|
190
|
+
* ```typescript
|
|
191
|
+
* const result = await removeAll(api, 'temp-data')
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
const removeAll = async (api, url) => {
|
|
195
|
+
return await api.delete(`/${url}`)
|
|
196
|
+
.then(response => { return response.data; })
|
|
197
|
+
.catch(error => { return addError(error); });
|
|
198
|
+
};
|
|
199
|
+
exports.removeAll = removeAll;
|