tapi-rs 3.0.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.
@@ -0,0 +1,35 @@
1
+ const translations = {
2
+ en: {
3
+ errors: {
4
+ requestFailed: "Unable to complete the request",
5
+ mapperError: "Error applying mapper to response",
6
+ invalidErrorFormat: "Invalid error message format",
7
+ undefinedParams: "Undefined parameters present"
8
+ },
9
+ builder: {
10
+ hostRequired: "Host is required - use .withHost() first",
11
+ routesRequired: "Routes are required - use .withRoutes() first",
12
+ errorHandlerRequired: "Error handler is required - use .withApiError() first"
13
+ }
14
+ },
15
+ br: {
16
+ errors: {
17
+ requestFailed: "Não foi possível completar a requisição",
18
+ mapperError: "Erro ao aplicar o mapper na resposta",
19
+ invalidErrorFormat: "Formato de mensagem de erro inválido",
20
+ undefinedParams: "Parâmetros 'undefined' presentes"
21
+ },
22
+ builder: {
23
+ hostRequired: "Host é obrigatório - use .withHost() primeiro",
24
+ routesRequired: "Rotas são obrigatórias - use .withRoutes() primeiro",
25
+ errorHandlerRequired: "Manipulador de erro é obrigatório - use .withApiError() primeiro"
26
+ }
27
+ }
28
+ };
29
+ export function getTranslations(language = "en") {
30
+ return translations[language];
31
+ }
32
+ export function t(language = "en") {
33
+ return getTranslations(language);
34
+ }
35
+ //# sourceMappingURL=translations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translations.js","sourceRoot":"","sources":["../src/translations.ts"],"names":[],"mappings":"AAgBA,MAAM,YAAY,GAAmC;IACnD,EAAE,EAAE;QACF,MAAM,EAAE;YACN,aAAa,EAAE,gCAAgC;YAC/C,WAAW,EAAE,mCAAmC;YAChD,kBAAkB,EAAE,8BAA8B;YAClD,eAAe,EAAE,8BAA8B;SAChD;QACD,OAAO,EAAE;YACP,YAAY,EAAE,0CAA0C;YACxD,cAAc,EAAE,+CAA+C;YAC/D,oBAAoB,EAAE,uDAAuD;SAC9E;KACF;IACD,EAAE,EAAE;QACF,MAAM,EAAE;YACN,aAAa,EAAE,yCAAyC;YACxD,WAAW,EAAE,sCAAsC;YACnD,kBAAkB,EAAE,sCAAsC;YAC1D,eAAe,EAAE,kCAAkC;SACpD;QACD,OAAO,EAAE;YACP,YAAY,EAAE,+CAA+C;YAC7D,cAAc,EAAE,qDAAqD;YACrE,oBAAoB,EAAE,kEAAkE;SACzF;KACF;CACF,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,WAAqB,IAAI;IACvD,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,CAAC,CAAC,WAAqB,IAAI;IACzC,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,105 @@
1
+ import * as ResponseSchema from "./response";
2
+ export type HttpMethod = "GET" | "POST" | "PUT" | "DELETE" | "PATCH";
3
+ /**
4
+ * Request configuration with pure TypeScript types
5
+ * Types are passed via generics, not runtime schemas
6
+ */
7
+ export type RequestConfig<TMethod extends HttpMethod = HttpMethod, TPath = undefined, TBody = undefined, TFormData = undefined, TQuery = undefined, THeaders = undefined, TResponse = unknown, TMapped = TResponse, TMapArg = undefined> = {
8
+ method: TMethod;
9
+ endpoint: string;
10
+ response: ResponseSchema.ResponseConfig<TResponse, TMapped, TMapArg>;
11
+ };
12
+ export type RouteDefinitions = {
13
+ [key: string]: RequestConfig<any, any, any, any, any, any, any, any, any> | RouteDefinitions;
14
+ };
15
+ type InferPathParam<TPath> = TPath extends undefined ? {
16
+ path?: never;
17
+ } : {
18
+ path: TPath;
19
+ };
20
+ type InferBodyParam<TBody> = TBody extends undefined ? {
21
+ body?: never;
22
+ } : {
23
+ body: TBody;
24
+ };
25
+ type InferFormDataParam<TFormData> = TFormData extends undefined ? {
26
+ formData?: never;
27
+ } : {
28
+ formData: TFormData;
29
+ };
30
+ type InferQueryParam<TQuery> = TQuery extends undefined ? {
31
+ query?: never;
32
+ } : {
33
+ query: TQuery;
34
+ };
35
+ type InferHeaderParam<THeaders> = THeaders extends undefined ? {
36
+ headers?: never;
37
+ } : {
38
+ headers: THeaders;
39
+ };
40
+ type ExtractPath<T> = T extends RequestConfig<any, infer P, any, any, any, any, any, any, any> ? P : undefined;
41
+ type ExtractBody<T> = T extends RequestConfig<any, any, infer B, any, any, any, any, any, any> ? B : undefined;
42
+ type ExtractFormData<T> = T extends RequestConfig<any, any, any, infer F, any, any, any, any, any> ? F : undefined;
43
+ type ExtractQuery<T> = T extends RequestConfig<any, any, any, any, infer Q, any, any, any, any> ? Q : undefined;
44
+ type ExtractHeaders<T> = T extends RequestConfig<any, any, any, any, any, infer H, any, any, any> ? H : undefined;
45
+ type ExtractMapArg<T> = T extends RequestConfig<any, any, any, any, any, any, any, any, infer M> ? M : undefined;
46
+ export type RequesterParams<T extends RequestConfig<any, any, any, any, any, any, any, any, any>> = InferPathParam<ExtractPath<T>> & InferBodyParam<ExtractBody<T>> & InferFormDataParam<ExtractFormData<T>> & InferQueryParam<ExtractQuery<T>> & InferHeaderParam<ExtractHeaders<T>>;
47
+ export type InferMapperParams<T extends RequestConfig<any, any, any, any, any, any, any, any, any>> = ExtractMapArg<T> extends undefined ? {
48
+ map?: never;
49
+ } : {
50
+ map: ExtractMapArg<T>;
51
+ };
52
+ export type CallSignature<T extends RequestConfig<any, any, any, any, any, any, any, any, any>> = InferPathParam<ExtractPath<T>> & InferBodyParam<ExtractBody<T>> & InferFormDataParam<ExtractFormData<T>> & InferQueryParam<ExtractQuery<T>> & InferHeaderParam<ExtractHeaders<T>> & InferMapperParams<T> & {
53
+ lazy?: boolean;
54
+ skipMapper?: boolean;
55
+ preventFetchingWithUndefinedParams?: boolean;
56
+ };
57
+ export type PrefetchCallback = (args: {
58
+ url: string;
59
+ method: HttpMethod;
60
+ headers: Headers;
61
+ body?: BodyInit | null;
62
+ }) => Promise<void> | void;
63
+ export type PostfetchCallback<TData = any, TError = any> = (response: ApiResponse<TData, TError>) => Promise<void> | void;
64
+ export type Success<T> = {
65
+ ok: true;
66
+ status: "success";
67
+ data: T;
68
+ };
69
+ export type UndefinedParamError = {
70
+ ok: false;
71
+ code: number;
72
+ status: "undefined_param";
73
+ message: string;
74
+ };
75
+ export type NetworkError = {
76
+ ok: false;
77
+ code: number;
78
+ status: "network_error";
79
+ message: string;
80
+ error: Error;
81
+ };
82
+ export type CustomError<T = string> = {
83
+ ok: false;
84
+ code: number;
85
+ status: "api_error";
86
+ message: string;
87
+ data: T;
88
+ };
89
+ export type MapperError = {
90
+ ok: false;
91
+ code: number;
92
+ status: "mapper_error";
93
+ message: string;
94
+ error: Error;
95
+ };
96
+ export type Errors<T = string> = NetworkError | CustomError<T> | MapperError | UndefinedParamError;
97
+ export type ApiResponse<TData, TError = string> = (Success<TData> | Errors<TError>) & {
98
+ endpoint: string;
99
+ method: HttpMethod;
100
+ };
101
+ export type RequesterFunction<TConfig extends RequestConfig<any, any, any, any, any, any, any, any, any>, TError = string> = ((params: CallSignature<TConfig>) => Promise<ApiResponse<ResponseSchema.InferResult<TConfig["response"]>, TError>>) & {
102
+ mapper?: ResponseSchema.InferMapper<TConfig["response"]>;
103
+ };
104
+ export {};
105
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErE;;;GAGG;AACH,MAAM,MAAM,aAAa,CACvB,OAAO,SAAS,UAAU,GAAG,UAAU,EACvC,KAAK,GAAG,SAAS,EACjB,KAAK,GAAG,SAAS,EACjB,SAAS,GAAG,SAAS,EACrB,MAAM,GAAG,SAAS,EAClB,QAAQ,GAAG,SAAS,EACpB,SAAS,GAAG,OAAO,EACnB,OAAO,GAAG,SAAS,EACnB,OAAO,GAAG,SAAS,IACjB;IACF,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;CACtE,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,gBAAgB,CAAC;CAC9F,CAAC;AAGF,KAAK,cAAc,CAAC,KAAK,IAAI,KAAK,SAAS,SAAS,GAAG;IAAE,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC;AAC1F,KAAK,cAAc,CAAC,KAAK,IAAI,KAAK,SAAS,SAAS,GAAG;IAAE,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC;AAC1F,KAAK,kBAAkB,CAAC,SAAS,IAAI,SAAS,SAAS,SAAS,GAAG;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,CAAC;AAClH,KAAK,eAAe,CAAC,MAAM,IAAI,MAAM,SAAS,SAAS,GAAG;IAAE,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAChG,KAAK,gBAAgB,CAAC,QAAQ,IAAI,QAAQ,SAAS,SAAS,GAAG;IAAE,OAAO,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;AAG3G,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC/G,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC/G,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AACnH,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAChH,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAClH,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAEjH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAChI,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAC9B,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GACtC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAChC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtC,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAChG,aAAa,CAAC,CAAC,CAAC,SAAS,SAAS,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC;AAEnF,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAC9H,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAC9B,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GACtC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAChC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GACnC,iBAAiB,CAAC,CAAC,CAAC,GAAG;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kCAAkC,CAAC,EAAE,OAAO,CAAC;CAC9C,CAAC;AAGJ,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;CAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC7I,MAAM,MAAM,iBAAiB,CAAC,KAAK,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAG1H,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC;AAElE,MAAM,MAAM,mBAAmB,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAC1G,MAAM,MAAM,YAAY,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAC/G,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,MAAM,IAAI;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC;AACjH,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAC7G,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,mBAAmB,CAAC;AAEnG,MAAM,MAAM,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAE/H,MAAM,MAAM,iBAAiB,CAAC,OAAO,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC,CAC5H,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,KAC3B,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG;IACpF,MAAM,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;CAC1D,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { Language } from "./translations";
2
+ import * as Types from "./types";
3
+ export declare function buildUrl<T extends Types.RequestConfig<any, any, any, any, any, any, any, any, any>>(host: string, config: T, params: Types.RequesterParams<T>): string;
4
+ export declare function executeRequest<T extends Types.RequestConfig<any, any, any, any, any, any, any, any, any>>(url: string, config: T, params: Types.RequesterParams<T>, defaultHeaders?: Record<string, string>, language?: Language): Promise<Response | Types.NetworkError>;
5
+ export declare function handleErrorResponse<TError = string>(response: Response, errorHandler?: (response: Response) => Promise<TError>, language?: Language): Promise<Types.CustomError<TError>>;
6
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAK,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,wBAAgB,QAAQ,CAAC,CAAC,SAAS,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM,CActK;AAED,wBAAsB,cAAc,CAAC,CAAC,SAAS,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC7G,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,EAChC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,QAAQ,GAAE,QAAe,GACxB,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,CAsCxC;AAED,wBAAsB,mBAAmB,CAAC,MAAM,GAAG,MAAM,EACvD,QAAQ,EAAE,QAAQ,EAClB,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,MAAM,CAAC,EACtD,QAAQ,GAAE,QAAe,GACxB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CA6BpC"}
package/dist/utils.js ADDED
@@ -0,0 +1,84 @@
1
+ import * as Errors from "./errors";
2
+ import { t } from "./translations";
3
+ export function buildUrl(host, config, params) {
4
+ let url = config.endpoint;
5
+ // Replace path parameters
6
+ if (params.path) {
7
+ for (const [key, value] of Object.entries(params.path)) {
8
+ url = url.replace(`:${key}`, encodeURIComponent(String(value)));
9
+ }
10
+ }
11
+ // Add query parameters
12
+ const queryString = params.query ? `?${new URLSearchParams(params.query).toString()}` : "";
13
+ return `${host}${url}${queryString}`;
14
+ }
15
+ export async function executeRequest(url, config, params, defaultHeaders, language = "en") {
16
+ const translations = t(language);
17
+ const headers = new Headers({ ...defaultHeaders });
18
+ // Add custom headers from params
19
+ if (params.headers) {
20
+ for (const [key, value] of Object.entries(params.headers)) {
21
+ headers.append(key, String(value));
22
+ }
23
+ }
24
+ let body;
25
+ // Handle FormData
26
+ if (params.formData) {
27
+ body = new FormData();
28
+ for (const [key, value] of Object.entries(params.formData)) {
29
+ if (value instanceof Array) {
30
+ if (value.length !== 0 && value[0] instanceof File) {
31
+ for (const item of value) {
32
+ body.append(key, item);
33
+ }
34
+ continue;
35
+ }
36
+ }
37
+ body.append(key, value);
38
+ }
39
+ }
40
+ else if (params.body) {
41
+ // Handle JSON body
42
+ body = JSON.stringify(params.body);
43
+ headers.append("Content-Type", "application/json");
44
+ }
45
+ try {
46
+ return await fetch(url, { method: config.method, headers, body });
47
+ }
48
+ catch (error) {
49
+ return Errors.createNetworkError(translations.errors.requestFailed, error instanceof Error ? error : new Error(String(error)));
50
+ }
51
+ }
52
+ export async function handleErrorResponse(response, errorHandler, language = "en") {
53
+ const translations = t(language);
54
+ let data;
55
+ let message;
56
+ if (errorHandler) {
57
+ try {
58
+ data = await errorHandler(response);
59
+ message = `API error ${response.status}: ${response.statusText}`;
60
+ }
61
+ catch (error) {
62
+ data = `Failed to parse error response: ${error}`;
63
+ message = `API error ${response.status}: ${response.statusText}`;
64
+ }
65
+ }
66
+ else {
67
+ try {
68
+ const errorText = await response.json();
69
+ if (typeof errorText === "string") {
70
+ data = errorText;
71
+ message = errorText;
72
+ }
73
+ else {
74
+ throw new Error(translations.errors.invalidErrorFormat);
75
+ }
76
+ }
77
+ catch {
78
+ data = `API error ${response.status}: ${response.statusText}`;
79
+ message = `API error ${response.status}: ${response.statusText}`;
80
+ }
81
+ }
82
+ return Errors.createCustomError(message, data, response.status);
83
+ }
84
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "tapi-rs",
3
+ "version": "3.0.0",
4
+ "description": "A modern, type-safe REST API client builder for TypeScript/JavaScript applications with React hooks integration and intelligent error handling.",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "module": "dist/index.js",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js",
12
+ "require": "./dist/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "README.md",
18
+ "package.json"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc",
22
+ "clean": "rimraf dist",
23
+ "prepublishOnly": "npm run clean && npm run build",
24
+ "format": "prettier --write \"src/**/*.ts\"",
25
+ "check-format": "prettier --check \"src/**/*.ts\"",
26
+ "verify": "node verify-build.js",
27
+ "pack-test": "npm pack --dry-run"
28
+ },
29
+ "keywords": [
30
+ "typescript",
31
+ "api",
32
+ "client",
33
+ "rest",
34
+ "react",
35
+ "hooks",
36
+ "type-safe",
37
+ "fetch"
38
+ ],
39
+ "author": "Pedro Bartolini",
40
+ "license": "MIT",
41
+ "repository": {
42
+ "type": "git",
43
+ "url": "git+https://github.com/pedrobartolini/tapi.git"
44
+ },
45
+ "bugs": {
46
+ "url": "https://github.com/pedrobartolini/tapi/issues"
47
+ },
48
+ "homepage": "https://github.com/pedrobartolini/tapi#readme",
49
+ "type": "module",
50
+ "engines": {
51
+ "node": ">=16.0.0"
52
+ },
53
+ "peerDependencies": {
54
+ "react": ">=16.8.0"
55
+ },
56
+ "dependencies": {
57
+ "react-fast-compare": "^3.2.2"
58
+ },
59
+ "devDependencies": {
60
+ "prettier": "^3.6.2",
61
+ "rimraf": "^5.0.5",
62
+ "typescript": "^5.3.0",
63
+ "react": "^19.1.0",
64
+ "@types/react": "^18.2.0"
65
+ }
66
+ }