@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.
Files changed (87) hide show
  1. package/LICENCE +21 -0
  2. package/README.md +164 -0
  3. package/dist/api/api.d.ts +8 -0
  4. package/dist/api/api.d.ts.map +1 -0
  5. package/dist/api/api.js +35 -0
  6. package/dist/api/client.d.ts +30 -0
  7. package/dist/api/client.d.ts.map +1 -0
  8. package/dist/api/client.js +50 -0
  9. package/dist/component/auth.d.ts +8 -0
  10. package/dist/component/auth.d.ts.map +1 -0
  11. package/dist/component/auth.js +9 -0
  12. package/dist/component/errorMessage.d.ts +6 -0
  13. package/dist/component/errorMessage.d.ts.map +1 -0
  14. package/dist/component/errorMessage.js +7 -0
  15. package/dist/component/request.d.ts +13 -0
  16. package/dist/component/request.d.ts.map +1 -0
  17. package/dist/component/request.js +12 -0
  18. package/dist/component/response.d.ts +13 -0
  19. package/dist/component/response.d.ts.map +1 -0
  20. package/dist/component/response.js +13 -0
  21. package/dist/component/token.d.ts +32 -0
  22. package/dist/component/token.d.ts.map +1 -0
  23. package/dist/component/token.js +16 -0
  24. package/dist/hook/useProvider.d.ts +13 -0
  25. package/dist/hook/useProvider.d.ts.map +1 -0
  26. package/dist/hook/useProvider.js +51 -0
  27. package/dist/hook/useRequest.d.ts +11 -0
  28. package/dist/hook/useRequest.d.ts.map +1 -0
  29. package/dist/hook/useRequest.js +38 -0
  30. package/dist/hook/useRequireAuth.d.ts +4 -0
  31. package/dist/hook/useRequireAuth.d.ts.map +1 -0
  32. package/dist/hook/useRequireAuth.js +21 -0
  33. package/dist/hooks/AuthContext.d.ts +19 -0
  34. package/dist/hooks/AuthContext.d.ts.map +1 -0
  35. package/dist/hooks/AuthContext.js +10 -0
  36. package/dist/hooks/AuthProvider.d.ts +27 -0
  37. package/dist/hooks/AuthProvider.d.ts.map +1 -0
  38. package/dist/hooks/AuthProvider.js +71 -0
  39. package/dist/hooks/useAuth.d.ts +33 -0
  40. package/dist/hooks/useAuth.d.ts.map +1 -0
  41. package/dist/hooks/useAuth.js +50 -0
  42. package/dist/hooks/useRequest.d.ts +37 -0
  43. package/dist/hooks/useRequest.d.ts.map +1 -0
  44. package/dist/hooks/useRequest.js +63 -0
  45. package/dist/index.d.ts +29 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +49 -0
  48. package/dist/service/crud.d.ts +15 -0
  49. package/dist/service/crud.d.ts.map +1 -0
  50. package/dist/service/crud.js +116 -0
  51. package/dist/service/fetchPage.d.ts +5 -0
  52. package/dist/service/fetchPage.d.ts.map +1 -0
  53. package/dist/service/fetchPage.js +22 -0
  54. package/dist/service/token.d.ts +10 -0
  55. package/dist/service/token.d.ts.map +1 -0
  56. package/dist/service/token.js +93 -0
  57. package/dist/services/api.d.ts +33 -0
  58. package/dist/services/api.d.ts.map +1 -0
  59. package/dist/services/api.js +50 -0
  60. package/dist/services/auth.d.ts +51 -0
  61. package/dist/services/auth.d.ts.map +1 -0
  62. package/dist/services/auth.js +117 -0
  63. package/dist/services/crud.d.ts +120 -0
  64. package/dist/services/crud.d.ts.map +1 -0
  65. package/dist/services/crud.js +199 -0
  66. package/dist/services/token.d.ts +88 -0
  67. package/dist/services/token.d.ts.map +1 -0
  68. package/dist/services/token.js +176 -0
  69. package/dist/types/auth.d.ts +64 -0
  70. package/dist/types/auth.d.ts.map +1 -0
  71. package/dist/types/auth.js +2 -0
  72. package/dist/types/error.d.ts +11 -0
  73. package/dist/types/error.d.ts.map +1 -0
  74. package/dist/types/error.js +2 -0
  75. package/dist/types/request.d.ts +25 -0
  76. package/dist/types/request.d.ts.map +1 -0
  77. package/dist/types/request.js +2 -0
  78. package/dist/types/response.d.ts +44 -0
  79. package/dist/types/response.d.ts.map +1 -0
  80. package/dist/types/response.js +2 -0
  81. package/dist/types/token.d.ts +43 -0
  82. package/dist/types/token.d.ts.map +1 -0
  83. package/dist/types/token.js +2 -0
  84. package/dist/utils/constants.d.ts +41 -0
  85. package/dist/utils/constants.d.ts.map +1 -0
  86. package/dist/utils/constants.js +73 -0
  87. 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;