@ventlio/tanstack-query 0.1.0

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 (39) hide show
  1. package/dist/constants/index.d.ts +1 -0
  2. package/dist/constants/index.js +6 -0
  3. package/dist/constants/index.js.map +1 -0
  4. package/dist/index.d.ts +3 -0
  5. package/dist/index.js +28 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/index.mjs +110 -0
  8. package/dist/index.mjs.map +1 -0
  9. package/dist/request/axios-instance.d.ts +2 -0
  10. package/dist/request/axios-instance.js +14 -0
  11. package/dist/request/axios-instance.js.map +1 -0
  12. package/dist/request/buildFormData.d.ts +3 -0
  13. package/dist/request/buildFormData.js +14 -0
  14. package/dist/request/buildFormData.js.map +1 -0
  15. package/dist/request/index.d.ts +6 -0
  16. package/dist/request/make-request.d.ts +2 -0
  17. package/dist/request/make-request.js +52 -0
  18. package/dist/request/make-request.js.map +1 -0
  19. package/dist/request/request.enum.d.ts +11 -0
  20. package/dist/request/request.enum.js +16 -0
  21. package/dist/request/request.enum.js.map +1 -0
  22. package/dist/request/request.interface.d.ts +39 -0
  23. package/dist/request/transformer.d.ts +7 -0
  24. package/dist/request/transformer.js +26 -0
  25. package/dist/request/transformer.js.map +1 -0
  26. package/dist/useMyHook.d.ts +1 -0
  27. package/dist/useMyHook.js +14 -0
  28. package/dist/useMyHook.js.map +1 -0
  29. package/package.json +68 -0
  30. package/src/constants/index.ts +1 -0
  31. package/src/index.ts +3 -0
  32. package/src/request/axios-instance.ts +12 -0
  33. package/src/request/buildFormData.ts +11 -0
  34. package/src/request/index.ts +6 -0
  35. package/src/request/make-request.ts +63 -0
  36. package/src/request/request.enum.ts +12 -0
  37. package/src/request/request.interface.ts +45 -0
  38. package/src/request/transformer.ts +32 -0
  39. package/src/useMyHook.ts +11 -0
@@ -0,0 +1 @@
1
+ export declare const API_BASE_URL = "";
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ const API_BASE_URL = '';
4
+
5
+ exports.API_BASE_URL = API_BASE_URL;
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,3 @@
1
+ export * from './constants';
2
+ export * from './request';
3
+ export * from './useMyHook';
package/dist/index.js ADDED
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ var index = require('./constants/index.js');
4
+ var axiosInstance = require('./request/axios-instance.js');
5
+ var buildFormData = require('./request/buildFormData.js');
6
+ var makeRequest = require('./request/make-request.js');
7
+ var request_enum = require('./request/request.enum.js');
8
+ var transformer = require('./request/transformer.js');
9
+ var useMyHook = require('./useMyHook.js');
10
+
11
+
12
+
13
+ exports.API_BASE_URL = index.API_BASE_URL;
14
+ exports.axiosInstance = axiosInstance.axiosInstance;
15
+ exports.buildFormData = buildFormData.buildFormData;
16
+ exports.makeRequest = makeRequest.makeRequest;
17
+ Object.defineProperty(exports, 'ContentType', {
18
+ enumerable: true,
19
+ get: function () { return request_enum.ContentType; }
20
+ });
21
+ Object.defineProperty(exports, 'HttpMethod', {
22
+ enumerable: true,
23
+ get: function () { return request_enum.HttpMethod; }
24
+ });
25
+ exports.errorTransformer = transformer.errorTransformer;
26
+ exports.successTransformer = transformer.successTransformer;
27
+ exports.useMyHook = useMyHook.useMyHook;
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index.mjs ADDED
@@ -0,0 +1,110 @@
1
+ import axios from 'axios';
2
+ import { useState } from 'react';
3
+
4
+ const API_BASE_URL = '';
5
+
6
+ const axiosInstance = (headers) => {
7
+ return axios.create({
8
+ baseURL: 'https://api.ventlio.com',
9
+ timeout: 100000,
10
+ headers,
11
+ });
12
+ };
13
+
14
+ const buildFormData = (body) => {
15
+ const formData = new FormData();
16
+ const bodyKeys = Object.keys(body);
17
+ bodyKeys.forEach((key) => {
18
+ formData.append(key, body[key]);
19
+ });
20
+ body = formData;
21
+ return { body };
22
+ };
23
+
24
+ var HttpMethod;
25
+ (function (HttpMethod) {
26
+ HttpMethod["GET"] = "GET";
27
+ HttpMethod["POST"] = "POST";
28
+ HttpMethod["PUT"] = "PUT";
29
+ HttpMethod["PATCH"] = "PATCH";
30
+ HttpMethod["DELETE"] = "DELETE";
31
+ })(HttpMethod || (HttpMethod = {}));
32
+ var ContentType;
33
+ (function (ContentType) {
34
+ ContentType["APPLICATION_JSON"] = "application/json";
35
+ ContentType["MULTIPART_FORM_DATA"] = "multipart/form-data";
36
+ })(ContentType || (ContentType = {}));
37
+
38
+ //
39
+ const errorTransformer = (data) => {
40
+ return {
41
+ message: data.message,
42
+ statusCode: data.statusCode,
43
+ timeStamp: new Date(),
44
+ status: false,
45
+ data: data.data,
46
+ };
47
+ };
48
+ //
49
+ const successTransformer = (data) => {
50
+ return {
51
+ message: data.message ?? 'Request successful',
52
+ statusCode: data.statusCode,
53
+ timeStamp: new Date(),
54
+ status: true,
55
+ data: data.data,
56
+ };
57
+ };
58
+
59
+ async function makeRequest({ body, method = HttpMethod.GET, path, bearerToken, formData, }) {
60
+ // construct api full url
61
+ const apiFullUrl = `${API_BASE_URL}${path}`;
62
+ // configure body
63
+ body = formData ? buildFormData(body) : body;
64
+ // configure request header
65
+ const headers = {
66
+ Authorization: `Bearer ${bearerToken}`,
67
+ };
68
+ if (!formData) {
69
+ headers['Content-Type'] = ContentType.APPLICATION_JSON;
70
+ }
71
+ try {
72
+ const axios = axiosInstance(headers);
73
+ // send request
74
+ const resp = await axios({
75
+ url: apiFullUrl,
76
+ method,
77
+ data: formData ? body : JSON.stringify(body),
78
+ });
79
+ // get response json
80
+ const jsonResp = await resp.data();
81
+ // get response code
82
+ const responseCode = resp.status;
83
+ if (responseCode > 299) {
84
+ // server returned an error
85
+ return errorTransformer({ ...jsonResp, statusCode: responseCode });
86
+ }
87
+ return successTransformer({
88
+ ...jsonResp,
89
+ statusCode: responseCode,
90
+ });
91
+ }
92
+ catch (error) {
93
+ return errorTransformer({
94
+ statusCode: error.status,
95
+ message: error.message,
96
+ code: error.status || error.statusCode,
97
+ });
98
+ }
99
+ }
100
+
101
+ const useMyHook = () => {
102
+ const [value, setValue] = useState('');
103
+ const updateValue = (newValue) => {
104
+ setValue(newValue);
105
+ };
106
+ return [value, updateValue];
107
+ };
108
+
109
+ export { API_BASE_URL, ContentType, HttpMethod, axiosInstance, buildFormData, errorTransformer, makeRequest, successTransformer, useMyHook };
110
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,2 @@
1
+ import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios';
2
+ export declare const axiosInstance: (headers: RawAxiosRequestHeaders) => AxiosInstance;
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ var axios = require('axios');
4
+
5
+ const axiosInstance = (headers) => {
6
+ return axios.create({
7
+ baseURL: 'https://api.ventlio.com',
8
+ timeout: 100000,
9
+ headers,
10
+ });
11
+ };
12
+
13
+ exports.axiosInstance = axiosInstance;
14
+ //# sourceMappingURL=axios-instance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"axios-instance.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
@@ -0,0 +1,3 @@
1
+ export declare const buildFormData: (body: any) => {
2
+ body: any;
3
+ };
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ const buildFormData = (body) => {
4
+ const formData = new FormData();
5
+ const bodyKeys = Object.keys(body);
6
+ bodyKeys.forEach((key) => {
7
+ formData.append(key, body[key]);
8
+ });
9
+ body = formData;
10
+ return { body };
11
+ };
12
+
13
+ exports.buildFormData = buildFormData;
14
+ //# sourceMappingURL=buildFormData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildFormData.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
@@ -0,0 +1,6 @@
1
+ export * from './axios-instance';
2
+ export * from './buildFormData';
3
+ export * from './make-request';
4
+ export * from './request.enum';
5
+ export * from './request.interface';
6
+ export * from './transformer';
@@ -0,0 +1,2 @@
1
+ import type { IMakeRequest } from './request.interface';
2
+ export declare function makeRequest<TResponse>({ body, method, path, bearerToken, formData, }: IMakeRequest): Promise<import("./request.interface").IRequestError>;
@@ -0,0 +1,52 @@
1
+ 'use strict';
2
+
3
+ var index = require('../constants/index.js');
4
+ var axiosInstance = require('./axios-instance.js');
5
+ var buildFormData = require('./buildFormData.js');
6
+ var request_enum = require('./request.enum.js');
7
+ var transformer = require('./transformer.js');
8
+
9
+ async function makeRequest({ body, method = request_enum.HttpMethod.GET, path, bearerToken, formData, }) {
10
+ // construct api full url
11
+ const apiFullUrl = `${index.API_BASE_URL}${path}`;
12
+ // configure body
13
+ body = formData ? buildFormData.buildFormData(body) : body;
14
+ // configure request header
15
+ const headers = {
16
+ Authorization: `Bearer ${bearerToken}`,
17
+ };
18
+ if (!formData) {
19
+ headers['Content-Type'] = request_enum.ContentType.APPLICATION_JSON;
20
+ }
21
+ try {
22
+ const axios = axiosInstance.axiosInstance(headers);
23
+ // send request
24
+ const resp = await axios({
25
+ url: apiFullUrl,
26
+ method,
27
+ data: formData ? body : JSON.stringify(body),
28
+ });
29
+ // get response json
30
+ const jsonResp = await resp.data();
31
+ // get response code
32
+ const responseCode = resp.status;
33
+ if (responseCode > 299) {
34
+ // server returned an error
35
+ return transformer.errorTransformer({ ...jsonResp, statusCode: responseCode });
36
+ }
37
+ return transformer.successTransformer({
38
+ ...jsonResp,
39
+ statusCode: responseCode,
40
+ });
41
+ }
42
+ catch (error) {
43
+ return transformer.errorTransformer({
44
+ statusCode: error.status,
45
+ message: error.message,
46
+ code: error.status || error.statusCode,
47
+ });
48
+ }
49
+ }
50
+
51
+ exports.makeRequest = makeRequest;
52
+ //# sourceMappingURL=make-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-request.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,11 @@
1
+ export declare enum HttpMethod {
2
+ GET = "GET",
3
+ POST = "POST",
4
+ PUT = "PUT",
5
+ PATCH = "PATCH",
6
+ DELETE = "DELETE"
7
+ }
8
+ export declare enum ContentType {
9
+ APPLICATION_JSON = "application/json",
10
+ MULTIPART_FORM_DATA = "multipart/form-data"
11
+ }
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ exports.HttpMethod = void 0;
4
+ (function (HttpMethod) {
5
+ HttpMethod["GET"] = "GET";
6
+ HttpMethod["POST"] = "POST";
7
+ HttpMethod["PUT"] = "PUT";
8
+ HttpMethod["PATCH"] = "PATCH";
9
+ HttpMethod["DELETE"] = "DELETE";
10
+ })(exports.HttpMethod || (exports.HttpMethod = {}));
11
+ exports.ContentType = void 0;
12
+ (function (ContentType) {
13
+ ContentType["APPLICATION_JSON"] = "application/json";
14
+ ContentType["MULTIPART_FORM_DATA"] = "multipart/form-data";
15
+ })(exports.ContentType || (exports.ContentType = {}));
16
+ //# sourceMappingURL=request.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.enum.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
@@ -0,0 +1,39 @@
1
+ import type { HttpMethod } from './request.enum';
2
+ export interface IMakeRequest {
3
+ path: string;
4
+ body?: BodyInit | null;
5
+ method?: HttpMethod;
6
+ bearerToken?: string;
7
+ formData?: boolean;
8
+ }
9
+ export interface AxiosInstanceOption {
10
+ bearerToken?: string;
11
+ contentType?: string;
12
+ }
13
+ export interface IRequestError {
14
+ statusCode: number;
15
+ message: string;
16
+ timeStamp: Date;
17
+ status: boolean;
18
+ data?: any;
19
+ }
20
+ export interface IRequestSuccess<T> {
21
+ statusCode: number;
22
+ message: string;
23
+ timeStamp: Date;
24
+ status: boolean;
25
+ data: T;
26
+ }
27
+ export interface IServerRequestSuccess {
28
+ status?: boolean;
29
+ data: any;
30
+ message?: string;
31
+ }
32
+ export interface IServerRequestError {
33
+ status?: boolean;
34
+ code?: number;
35
+ success?: boolean;
36
+ message: string;
37
+ error?: Record<string, any>;
38
+ data?: Record<string, any>;
39
+ }
@@ -0,0 +1,7 @@
1
+ import type { IRequestError, IRequestSuccess, IServerRequestError, IServerRequestSuccess } from './request.interface';
2
+ export declare const errorTransformer: (data: IServerRequestError & {
3
+ statusCode: number;
4
+ }) => IRequestError;
5
+ export declare const successTransformer: <T>(data: IServerRequestSuccess & {
6
+ statusCode: number;
7
+ }) => IRequestSuccess<T>;
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+
3
+ //
4
+ const errorTransformer = (data) => {
5
+ return {
6
+ message: data.message,
7
+ statusCode: data.statusCode,
8
+ timeStamp: new Date(),
9
+ status: false,
10
+ data: data.data,
11
+ };
12
+ };
13
+ //
14
+ const successTransformer = (data) => {
15
+ return {
16
+ message: data.message ?? 'Request successful',
17
+ statusCode: data.statusCode,
18
+ timeStamp: new Date(),
19
+ status: true,
20
+ data: data.data,
21
+ };
22
+ };
23
+
24
+ exports.errorTransformer = errorTransformer;
25
+ exports.successTransformer = successTransformer;
26
+ //# sourceMappingURL=transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformer.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1 @@
1
+ export declare const useMyHook: () => [string, (newValue: string) => void];
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+
5
+ const useMyHook = () => {
6
+ const [value, setValue] = react.useState('');
7
+ const updateValue = (newValue) => {
8
+ setValue(newValue);
9
+ };
10
+ return [value, updateValue];
11
+ };
12
+
13
+ exports.useMyHook = useMyHook;
14
+ //# sourceMappingURL=useMyHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMyHook.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
package/package.json ADDED
@@ -0,0 +1,68 @@
1
+ {
2
+ "name": "@ventlio/tanstack-query",
3
+ "version": "0.1.0",
4
+ "license": "MIT",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "author": {
8
+ "email": "ventliodevs@gmail.com",
9
+ "name": "Ventlio",
10
+ "url": "https://ventlio.com"
11
+ },
12
+ "scripts": {
13
+ "build": "rollup --config rollup.config.ts --configPlugin rollup-plugin-typescript2",
14
+ "build:watch": "yarn build -w"
15
+ },
16
+ "peerDependencies": {
17
+ "@tanstack/react-query": "^4.26.1",
18
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
19
+ "axios": "^1.3.4",
20
+ "react-native": "*"
21
+ },
22
+ "peerDependenciesMeta": {
23
+ "react-native": {
24
+ "optional": true
25
+ }
26
+ },
27
+ "exports": {
28
+ "types": "./dist/index.d.ts",
29
+ "import": "./dist/index.mjs",
30
+ "default": "./dist/index.js"
31
+ },
32
+ "devDependencies": {
33
+ "@rollup/plugin-commonjs": "^24.0.1",
34
+ "@rollup/plugin-json": "^6.0.0",
35
+ "@rollup/plugin-node-resolve": "^15.0.1",
36
+ "@rollup/plugin-typescript": "^11.0.0",
37
+ "@tanstack/react-query": "^4.26.1",
38
+ "@types/axios": "^0.14.0",
39
+ "@types/node": "*",
40
+ "@types/react": "^18.0.28",
41
+ "@typescript-eslint/eslint-plugin": "^5.54.1",
42
+ "@typescript-eslint/parser": "^5.54.1",
43
+ "axios": "^1.3.4",
44
+ "eslint": "^8.36.0",
45
+ "eslint-config-google": "^0.14.0",
46
+ "eslint-config-prettier": "^8.7.0",
47
+ "eslint-import-resolver-typescript": "^3.5.3",
48
+ "eslint-plugin-import": "^2.27.5",
49
+ "eslint-plugin-prettier": "^4.2.1",
50
+ "eslint-plugin-react": "^7.32.2",
51
+ "eslint-plugin-react-hooks": "^4.6.0",
52
+ "prettier": "^2.8.4",
53
+ "react": "^18.2.0",
54
+ "rollup": "^3.19.1",
55
+ "rollup-plugin-typescript2": "^0.34.1",
56
+ "ts-node": "^10.9.1",
57
+ "tslib": "^2.5.0",
58
+ "typescript": "^4.9.5"
59
+ },
60
+ "files": [
61
+ "dist/app/*",
62
+ "dist/**/*",
63
+ "src"
64
+ ],
65
+ "dependencies": {
66
+ "rmf": "^2.0.0"
67
+ }
68
+ }
@@ -0,0 +1 @@
1
+ export const API_BASE_URL = '';
package/src/index.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './constants';
2
+ export * from './request';
3
+ export * from './useMyHook';
@@ -0,0 +1,12 @@
1
+ import type { AxiosInstance, RawAxiosRequestHeaders } from 'axios';
2
+ import axios from 'axios';
3
+
4
+ export const axiosInstance = (
5
+ headers: RawAxiosRequestHeaders
6
+ ): AxiosInstance => {
7
+ return axios.create({
8
+ baseURL: 'https://api.ventlio.com',
9
+ timeout: 100000,
10
+ headers,
11
+ });
12
+ };
@@ -0,0 +1,11 @@
1
+ export const buildFormData = (body: any) => {
2
+ const formData = new FormData();
3
+
4
+ const bodyKeys = Object.keys(body);
5
+ bodyKeys.forEach((key) => {
6
+ formData.append(key, body[key]);
7
+ });
8
+ body = formData;
9
+
10
+ return { body };
11
+ };
@@ -0,0 +1,6 @@
1
+ export * from './axios-instance';
2
+ export * from './buildFormData';
3
+ export * from './make-request';
4
+ export * from './request.enum';
5
+ export * from './request.interface';
6
+ export * from './transformer';
@@ -0,0 +1,63 @@
1
+ import { API_BASE_URL } from '../constants';
2
+ import { axiosInstance } from './axios-instance';
3
+
4
+ import { buildFormData } from './buildFormData';
5
+ import { ContentType, HttpMethod } from './request.enum';
6
+ import type { IMakeRequest } from './request.interface';
7
+ import { errorTransformer, successTransformer } from './transformer';
8
+
9
+ export async function makeRequest<TResponse>({
10
+ body,
11
+ method = HttpMethod.GET,
12
+ path,
13
+ bearerToken,
14
+ formData,
15
+ }: IMakeRequest) {
16
+ // construct api full url
17
+ const apiFullUrl = `${API_BASE_URL}${path}`;
18
+
19
+ // configure body
20
+ body = formData ? (buildFormData(body) as any) : body;
21
+
22
+ // configure request header
23
+ const headers: Record<string, any> = {
24
+ Authorization: `Bearer ${bearerToken}`,
25
+ };
26
+
27
+ if (!formData) {
28
+ headers['Content-Type'] = ContentType.APPLICATION_JSON;
29
+ }
30
+
31
+ try {
32
+ const axios = axiosInstance(headers);
33
+
34
+ // send request
35
+ const resp = await axios({
36
+ url: apiFullUrl,
37
+ method,
38
+ data: formData ? body : JSON.stringify(body),
39
+ });
40
+
41
+ // get response json
42
+ const jsonResp: any = await resp.data();
43
+
44
+ // get response code
45
+ const responseCode = resp.status;
46
+
47
+ if (responseCode > 299) {
48
+ // server returned an error
49
+ return errorTransformer({ ...jsonResp, statusCode: responseCode });
50
+ }
51
+
52
+ return successTransformer<TResponse>({
53
+ ...jsonResp,
54
+ statusCode: responseCode,
55
+ });
56
+ } catch (error: any) {
57
+ return errorTransformer({
58
+ statusCode: error.status,
59
+ message: error.message,
60
+ code: error.status || error.statusCode,
61
+ });
62
+ }
63
+ }
@@ -0,0 +1,12 @@
1
+ export enum HttpMethod {
2
+ GET = 'GET',
3
+ POST = 'POST',
4
+ PUT = 'PUT',
5
+ PATCH = 'PATCH',
6
+ DELETE = 'DELETE',
7
+ }
8
+
9
+ export enum ContentType {
10
+ APPLICATION_JSON = 'application/json',
11
+ MULTIPART_FORM_DATA = 'multipart/form-data',
12
+ }
@@ -0,0 +1,45 @@
1
+ import type { HttpMethod } from './request.enum';
2
+
3
+ export interface IMakeRequest {
4
+ path: string;
5
+ body?: BodyInit | null;
6
+ method?: HttpMethod;
7
+ bearerToken?: string;
8
+ formData?: boolean;
9
+ }
10
+
11
+ export interface AxiosInstanceOption {
12
+ bearerToken?: string;
13
+ contentType?: string;
14
+ }
15
+
16
+ export interface IRequestError {
17
+ statusCode: number;
18
+ message: string;
19
+ timeStamp: Date;
20
+ status: boolean;
21
+ data?: any;
22
+ }
23
+
24
+ export interface IRequestSuccess<T> {
25
+ statusCode: number;
26
+ message: string;
27
+ timeStamp: Date;
28
+ status: boolean;
29
+ data: T;
30
+ }
31
+
32
+ export interface IServerRequestSuccess {
33
+ status?: boolean;
34
+ data: any;
35
+ message?: string;
36
+ }
37
+
38
+ export interface IServerRequestError {
39
+ status?: boolean;
40
+ code?: number;
41
+ success?: boolean;
42
+ message: string;
43
+ error?: Record<string, any>;
44
+ data?: Record<string, any>;
45
+ }
@@ -0,0 +1,32 @@
1
+ import type {
2
+ IRequestError,
3
+ IRequestSuccess,
4
+ IServerRequestError,
5
+ IServerRequestSuccess,
6
+ } from './request.interface';
7
+
8
+ //
9
+ export const errorTransformer = (
10
+ data: IServerRequestError & { statusCode: number }
11
+ ): IRequestError => {
12
+ return {
13
+ message: data.message,
14
+ statusCode: data.statusCode,
15
+ timeStamp: new Date(),
16
+ status: false,
17
+ data: data.data,
18
+ };
19
+ };
20
+
21
+ //
22
+ export const successTransformer = <T>(
23
+ data: IServerRequestSuccess & { statusCode: number }
24
+ ): IRequestSuccess<T> => {
25
+ return {
26
+ message: data.message ?? 'Request successful',
27
+ statusCode: data.statusCode,
28
+ timeStamp: new Date(),
29
+ status: true,
30
+ data: data.data,
31
+ };
32
+ };
@@ -0,0 +1,11 @@
1
+ import { useState } from 'react';
2
+
3
+ export const useMyHook = (): [string, (newValue: string) => void] => {
4
+ const [value, setValue] = useState('');
5
+
6
+ const updateValue = (newValue: string) => {
7
+ setValue(newValue);
8
+ };
9
+
10
+ return [value, updateValue];
11
+ };