zustic 1.0.8 → 1.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.
- package/dist/i18n/index.d.mts +39 -0
- package/dist/i18n/index.d.ts +39 -0
- package/dist/i18n/index.js +1 -0
- package/dist/i18n/index.mjs +1 -0
- package/dist/query/index.d.mts +47 -7
- package/dist/query/index.d.ts +47 -7
- package/dist/query/index.js +1 -1
- package/dist/query/index.mjs +1 -1
- package/package.json +6 -1
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
interface I18nParams<T, L> {
|
|
2
|
+
initialLan: L;
|
|
3
|
+
resource: (lan: L) => Promise<T> | T;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Recursively gets all nested keys from object using dot notation.
|
|
8
|
+
* Safely handles deep nesting without infinite recursion.
|
|
9
|
+
*/
|
|
10
|
+
type Join<K extends string | number, P extends string | number> =
|
|
11
|
+
`${K}${'' extends P ? '' : `.${P}` }`;
|
|
12
|
+
|
|
13
|
+
type Prev = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ...0[]];
|
|
14
|
+
|
|
15
|
+
type NestedKeys<T, D extends number = 9> =
|
|
16
|
+
D extends never ? never :
|
|
17
|
+
T extends object
|
|
18
|
+
? {
|
|
19
|
+
[K in keyof T]-?: K extends string
|
|
20
|
+
? T[K] extends (infer U)[]
|
|
21
|
+
? K
|
|
22
|
+
: T[K] extends object
|
|
23
|
+
? K | Join<K, NestedKeys<T[K], Prev[D]>>
|
|
24
|
+
: K
|
|
25
|
+
: never
|
|
26
|
+
}[keyof T & string]
|
|
27
|
+
: never;
|
|
28
|
+
|
|
29
|
+
type TranslationKey<T> = NestedKeys<T> & string;
|
|
30
|
+
|
|
31
|
+
declare function create<T = any, L = any>(params: I18nParams<T, L>): () => {
|
|
32
|
+
t: (key: TranslationKey<T>) => string;
|
|
33
|
+
lan: L;
|
|
34
|
+
updateTranslation: (lang: L) => void;
|
|
35
|
+
isUpdating: boolean;
|
|
36
|
+
isInitialLoading: boolean;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export { create };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
interface I18nParams<T, L> {
|
|
2
|
+
initialLan: L;
|
|
3
|
+
resource: (lan: L) => Promise<T> | T;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Recursively gets all nested keys from object using dot notation.
|
|
8
|
+
* Safely handles deep nesting without infinite recursion.
|
|
9
|
+
*/
|
|
10
|
+
type Join<K extends string | number, P extends string | number> =
|
|
11
|
+
`${K}${'' extends P ? '' : `.${P}` }`;
|
|
12
|
+
|
|
13
|
+
type Prev = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ...0[]];
|
|
14
|
+
|
|
15
|
+
type NestedKeys<T, D extends number = 9> =
|
|
16
|
+
D extends never ? never :
|
|
17
|
+
T extends object
|
|
18
|
+
? {
|
|
19
|
+
[K in keyof T]-?: K extends string
|
|
20
|
+
? T[K] extends (infer U)[]
|
|
21
|
+
? K
|
|
22
|
+
: T[K] extends object
|
|
23
|
+
? K | Join<K, NestedKeys<T[K], Prev[D]>>
|
|
24
|
+
: K
|
|
25
|
+
: never
|
|
26
|
+
}[keyof T & string]
|
|
27
|
+
: never;
|
|
28
|
+
|
|
29
|
+
type TranslationKey<T> = NestedKeys<T> & string;
|
|
30
|
+
|
|
31
|
+
declare function create<T = any, L = any>(params: I18nParams<T, L>): () => {
|
|
32
|
+
t: (key: TranslationKey<T>) => string;
|
|
33
|
+
lan: L;
|
|
34
|
+
updateTranslation: (lang: L) => void;
|
|
35
|
+
isUpdating: boolean;
|
|
36
|
+
isInitialLoading: boolean;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export { create };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";"use client";var c=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var w=Object.prototype.hasOwnProperty;var M=(e,a)=>{for(var t in a)c(e,t,{get:a[t],enumerable:!0})},x=(e,a,t,n)=>{if(a&&typeof a=="object"||typeof a=="function")for(let i of h(a))!w.call(e,i)&&i!==t&&c(e,i,{get:()=>a[i],enumerable:!(n=U(a,i))||n.enumerable});return e};var b=e=>x(c({},"__esModule",{value:!0}),e);var C={};M(C,{create:()=>E});module.exports=b(C);var m=require("react");function S(e,a=[]){let t,n=[],i=r=>{let s=typeof r=="function"?r(t):r;t={...t,...s},n.forEach(d=>d())},l=()=>t,u=v(i,l,a);t=e(u,l);let o=r=>(n.push(r),()=>{n=n.filter(s=>s!==r)});return(r=s=>s)=>(0,m.useSyncExternalStore)(o,()=>r(t))}var v=(e,a,t)=>!t||t.length===0?e:t.reduceRight((n,i)=>i(e,a)(n),e);var y=require("react");function E(e){let{resource:a,initialLan:t}=e,n=0,i=S((l,u)=>({lan:t,data:null,isUpdating:!1,isInitialLoading:!0,async load(o){let r=++n,s=u().data===null;l({isUpdating:!s,isInitialLoading:s});let d=await Promise.resolve(a(o));r===n&&l({data:d,isUpdating:!1,isInitialLoading:!1})},update(o){l({lan:o})}}));return function(){let{lan:u,data:o,update:r,isUpdating:s,isInitialLoading:d,load:L}=i();(0,y.useEffect)(()=>{L(u)},[u]);function g(p){var f;return!o||d?"":(f=p.split(".").reduce((T,I)=>T==null?void 0:T[I],o))!=null?f:p}function P(p){r(p)}return{t:g,lan:u,updateTranslation:P,isUpdating:s,isInitialLoading:d}}}0&&(module.exports={create});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{a as d}from"../chunk-RXPCG2VZ.mjs";import{useEffect as I}from"react";function S(p){let{resource:f,initialLan:L}=p,l=0,T=d((a,n)=>({lan:L,data:null,isUpdating:!1,isInitialLoading:!0,async load(t){let s=++l,i=n().data===null;a({isUpdating:!i,isInitialLoading:i});let e=await Promise.resolve(f(t));s===l&&a({data:e,isUpdating:!1,isInitialLoading:!1})},update(t){a({lan:t})}}));return function(){let{lan:n,data:t,update:s,isUpdating:i,isInitialLoading:e,load:c}=T();I(()=>{c(n)},[n]);function g(r){var u;return!t||e?"":(u=r.split(".").reduce((o,y)=>o==null?void 0:o[y],t))!=null?u:r}function m(r){s(r)}return{t:g,lan:n,updateTranslation:m,isUpdating:i,isInitialLoading:e}}}export{S as create};
|
package/dist/query/index.d.mts
CHANGED
|
@@ -15,7 +15,7 @@ type QueryFnObj = {
|
|
|
15
15
|
/** The API endpoint URL */
|
|
16
16
|
url: string;
|
|
17
17
|
/** HTTP method (GET, POST, PUT, DELETE, PATCH) */
|
|
18
|
-
method
|
|
18
|
+
method?: "GET" | "POST" | "PUT" | "DELETE" | "PATCH";
|
|
19
19
|
/** Optional request body */
|
|
20
20
|
body?: any;
|
|
21
21
|
/** Optional HTTP headers */
|
|
@@ -72,12 +72,12 @@ type ApiOptionBase<Arg, R> = {
|
|
|
72
72
|
* Transform the response data before storing in cache.
|
|
73
73
|
* Useful for normalizing, filtering, or restructuring API responses.
|
|
74
74
|
*/
|
|
75
|
-
transformResponse?: (currData: any, preData: any) => Promise<R> | R;
|
|
75
|
+
transformResponse?: (currData: any, preData: any, arg: Arg) => Promise<R> | R;
|
|
76
76
|
/**
|
|
77
77
|
* Transform error responses for consistent error handling.
|
|
78
78
|
* Useful for extracting error messages or codes.
|
|
79
79
|
*/
|
|
80
|
-
transformError?: (currError: any, preError: any) => Promise<any> | any;
|
|
80
|
+
transformError?: (currError: any, preError: any, arg: Arg) => Promise<any> | any;
|
|
81
81
|
/**
|
|
82
82
|
* Transform request body before sending to API.
|
|
83
83
|
* Useful for adding timestamps, user info, or formatting data.
|
|
@@ -92,17 +92,29 @@ type ApiOptionBase<Arg, R> = {
|
|
|
92
92
|
* Called when the endpoint encounters an error.
|
|
93
93
|
* Useful for error logging, showing toast messages, or retries.
|
|
94
94
|
*/
|
|
95
|
-
onError?: (err: any) => Promise<void> | void;
|
|
95
|
+
onError?: (err: any, arg: Arg) => Promise<void> | void;
|
|
96
96
|
/**
|
|
97
97
|
* Called when the endpoint succeeds.
|
|
98
98
|
* Useful for success logging, showing notifications, or side effects.
|
|
99
99
|
*/
|
|
100
|
-
onSuccess?: (data: R) => Promise<void> | void;
|
|
100
|
+
onSuccess?: (data: R, arg: Arg) => Promise<void> | void;
|
|
101
101
|
/**
|
|
102
102
|
* Custom query function that bypasses the base query.
|
|
103
103
|
* Useful for complex request logic or special handling.
|
|
104
104
|
*/
|
|
105
105
|
queryFnc?: (arg: Arg, baseQuery: CreateApiParams<any>['baseQuery']) => MainQueryReturnTypes;
|
|
106
|
+
/**
|
|
107
|
+
* Lifecycle hook that runs when the query starts.
|
|
108
|
+
* Useful for optimistic updates, cache manipulation, or side effects.
|
|
109
|
+
*
|
|
110
|
+
* `queryFulfilled` resolves when the request succeeds
|
|
111
|
+
* and rejects when the request fails.
|
|
112
|
+
*/
|
|
113
|
+
onQueryStarted?: (arg: Arg, api: {
|
|
114
|
+
queryFulfilled: Promise<{
|
|
115
|
+
data: R;
|
|
116
|
+
}>;
|
|
117
|
+
}) => Promise<void> | void;
|
|
106
118
|
/**
|
|
107
119
|
* Endpoint-level middleware functions.
|
|
108
120
|
* Execute in addition to global middleware.
|
|
@@ -279,6 +291,13 @@ type InferQueryArg<T> = T extends QueryDef<infer Arg, any, any> ? Arg : never;
|
|
|
279
291
|
type QueryKeys<T> = {
|
|
280
292
|
[K in keyof T]: T[K] extends QueryDef<any, any, any> ? K : never;
|
|
281
293
|
}[keyof T];
|
|
294
|
+
type UpdateQueryPatchResult = {
|
|
295
|
+
/**
|
|
296
|
+
* Reverts the cache back to its previous state.
|
|
297
|
+
* Useful for rolling back optimistic updates when a request fails.
|
|
298
|
+
*/
|
|
299
|
+
undo: () => void;
|
|
300
|
+
};
|
|
282
301
|
/** @internal Infers result type from a query definition */
|
|
283
302
|
type InferQueryResult<T> = T extends QueryDef<any, infer Result, any> ? Result : never;
|
|
284
303
|
/**
|
|
@@ -337,7 +356,28 @@ type HooksFromEndpoints<T extends EndpointsMap<TagTypes>, TagTypes extends reado
|
|
|
337
356
|
* });
|
|
338
357
|
* ```
|
|
339
358
|
*/
|
|
340
|
-
updateQueryData: <K extends QueryKeys<T>>(key: K, arg: InferQueryArg<T[K]>, updater: (data: InferQueryResult<T[K]>) => InferQueryResult<T[K]>) =>
|
|
359
|
+
updateQueryData: <K extends QueryKeys<T>>(key: K, arg: InferQueryArg<T[K]>, updater: (data: InferQueryResult<T[K]>) => InferQueryResult<T[K]>) => UpdateQueryPatchResult | undefined;
|
|
360
|
+
/**
|
|
361
|
+
* Retrieves cached query data for a specific endpoint and arguments.
|
|
362
|
+
*
|
|
363
|
+
* Useful when you need to read the current cached state of a query
|
|
364
|
+
* without triggering a new request.
|
|
365
|
+
*
|
|
366
|
+
* @template K - The endpoint key
|
|
367
|
+
* @param key - The endpoint name (e.g., 'getUser', 'getPosts')
|
|
368
|
+
* @param arg - The arguments used when calling the endpoint
|
|
369
|
+
* @returns The cached query data if available, otherwise `undefined`
|
|
370
|
+
*
|
|
371
|
+
* @example
|
|
372
|
+
* ```typescript
|
|
373
|
+
* const user = api.utils.getApiDraftData('getUser', { id: 1 });
|
|
374
|
+
*
|
|
375
|
+
* if (user) {
|
|
376
|
+
* console.log(user.name);
|
|
377
|
+
* }
|
|
378
|
+
* ```
|
|
379
|
+
*/
|
|
380
|
+
getApiDraftData: <K extends QueryKeys<T>>(key: K, arg: InferQueryArg<T[K]>) => InferQueryResult<T[K]> | undefined;
|
|
341
381
|
/**
|
|
342
382
|
* Invalidate cache tags to trigger refetches of affected queries.
|
|
343
383
|
* Supports both string tags and object tags with IDs.
|
|
@@ -433,7 +473,7 @@ type BuilderType<TagTypes extends readonly string[] = readonly []> = {
|
|
|
433
473
|
* @returns Mutation endpoint definition
|
|
434
474
|
*/
|
|
435
475
|
mutation<Result, Arg = void>(config: {
|
|
436
|
-
query?: (arg: Arg) => QueryFnObj;
|
|
476
|
+
query?: (arg: Arg) => QueryFnObj | string;
|
|
437
477
|
} & ApiOptionMutation<Arg, Result>): MutationDef<Arg, Result, TagTypes>;
|
|
438
478
|
};
|
|
439
479
|
/** @internal Base query return type with discriminated union for success/error */
|
package/dist/query/index.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ type QueryFnObj = {
|
|
|
15
15
|
/** The API endpoint URL */
|
|
16
16
|
url: string;
|
|
17
17
|
/** HTTP method (GET, POST, PUT, DELETE, PATCH) */
|
|
18
|
-
method
|
|
18
|
+
method?: "GET" | "POST" | "PUT" | "DELETE" | "PATCH";
|
|
19
19
|
/** Optional request body */
|
|
20
20
|
body?: any;
|
|
21
21
|
/** Optional HTTP headers */
|
|
@@ -72,12 +72,12 @@ type ApiOptionBase<Arg, R> = {
|
|
|
72
72
|
* Transform the response data before storing in cache.
|
|
73
73
|
* Useful for normalizing, filtering, or restructuring API responses.
|
|
74
74
|
*/
|
|
75
|
-
transformResponse?: (currData: any, preData: any) => Promise<R> | R;
|
|
75
|
+
transformResponse?: (currData: any, preData: any, arg: Arg) => Promise<R> | R;
|
|
76
76
|
/**
|
|
77
77
|
* Transform error responses for consistent error handling.
|
|
78
78
|
* Useful for extracting error messages or codes.
|
|
79
79
|
*/
|
|
80
|
-
transformError?: (currError: any, preError: any) => Promise<any> | any;
|
|
80
|
+
transformError?: (currError: any, preError: any, arg: Arg) => Promise<any> | any;
|
|
81
81
|
/**
|
|
82
82
|
* Transform request body before sending to API.
|
|
83
83
|
* Useful for adding timestamps, user info, or formatting data.
|
|
@@ -92,17 +92,29 @@ type ApiOptionBase<Arg, R> = {
|
|
|
92
92
|
* Called when the endpoint encounters an error.
|
|
93
93
|
* Useful for error logging, showing toast messages, or retries.
|
|
94
94
|
*/
|
|
95
|
-
onError?: (err: any) => Promise<void> | void;
|
|
95
|
+
onError?: (err: any, arg: Arg) => Promise<void> | void;
|
|
96
96
|
/**
|
|
97
97
|
* Called when the endpoint succeeds.
|
|
98
98
|
* Useful for success logging, showing notifications, or side effects.
|
|
99
99
|
*/
|
|
100
|
-
onSuccess?: (data: R) => Promise<void> | void;
|
|
100
|
+
onSuccess?: (data: R, arg: Arg) => Promise<void> | void;
|
|
101
101
|
/**
|
|
102
102
|
* Custom query function that bypasses the base query.
|
|
103
103
|
* Useful for complex request logic or special handling.
|
|
104
104
|
*/
|
|
105
105
|
queryFnc?: (arg: Arg, baseQuery: CreateApiParams<any>['baseQuery']) => MainQueryReturnTypes;
|
|
106
|
+
/**
|
|
107
|
+
* Lifecycle hook that runs when the query starts.
|
|
108
|
+
* Useful for optimistic updates, cache manipulation, or side effects.
|
|
109
|
+
*
|
|
110
|
+
* `queryFulfilled` resolves when the request succeeds
|
|
111
|
+
* and rejects when the request fails.
|
|
112
|
+
*/
|
|
113
|
+
onQueryStarted?: (arg: Arg, api: {
|
|
114
|
+
queryFulfilled: Promise<{
|
|
115
|
+
data: R;
|
|
116
|
+
}>;
|
|
117
|
+
}) => Promise<void> | void;
|
|
106
118
|
/**
|
|
107
119
|
* Endpoint-level middleware functions.
|
|
108
120
|
* Execute in addition to global middleware.
|
|
@@ -279,6 +291,13 @@ type InferQueryArg<T> = T extends QueryDef<infer Arg, any, any> ? Arg : never;
|
|
|
279
291
|
type QueryKeys<T> = {
|
|
280
292
|
[K in keyof T]: T[K] extends QueryDef<any, any, any> ? K : never;
|
|
281
293
|
}[keyof T];
|
|
294
|
+
type UpdateQueryPatchResult = {
|
|
295
|
+
/**
|
|
296
|
+
* Reverts the cache back to its previous state.
|
|
297
|
+
* Useful for rolling back optimistic updates when a request fails.
|
|
298
|
+
*/
|
|
299
|
+
undo: () => void;
|
|
300
|
+
};
|
|
282
301
|
/** @internal Infers result type from a query definition */
|
|
283
302
|
type InferQueryResult<T> = T extends QueryDef<any, infer Result, any> ? Result : never;
|
|
284
303
|
/**
|
|
@@ -337,7 +356,28 @@ type HooksFromEndpoints<T extends EndpointsMap<TagTypes>, TagTypes extends reado
|
|
|
337
356
|
* });
|
|
338
357
|
* ```
|
|
339
358
|
*/
|
|
340
|
-
updateQueryData: <K extends QueryKeys<T>>(key: K, arg: InferQueryArg<T[K]>, updater: (data: InferQueryResult<T[K]>) => InferQueryResult<T[K]>) =>
|
|
359
|
+
updateQueryData: <K extends QueryKeys<T>>(key: K, arg: InferQueryArg<T[K]>, updater: (data: InferQueryResult<T[K]>) => InferQueryResult<T[K]>) => UpdateQueryPatchResult | undefined;
|
|
360
|
+
/**
|
|
361
|
+
* Retrieves cached query data for a specific endpoint and arguments.
|
|
362
|
+
*
|
|
363
|
+
* Useful when you need to read the current cached state of a query
|
|
364
|
+
* without triggering a new request.
|
|
365
|
+
*
|
|
366
|
+
* @template K - The endpoint key
|
|
367
|
+
* @param key - The endpoint name (e.g., 'getUser', 'getPosts')
|
|
368
|
+
* @param arg - The arguments used when calling the endpoint
|
|
369
|
+
* @returns The cached query data if available, otherwise `undefined`
|
|
370
|
+
*
|
|
371
|
+
* @example
|
|
372
|
+
* ```typescript
|
|
373
|
+
* const user = api.utils.getApiDraftData('getUser', { id: 1 });
|
|
374
|
+
*
|
|
375
|
+
* if (user) {
|
|
376
|
+
* console.log(user.name);
|
|
377
|
+
* }
|
|
378
|
+
* ```
|
|
379
|
+
*/
|
|
380
|
+
getApiDraftData: <K extends QueryKeys<T>>(key: K, arg: InferQueryArg<T[K]>) => InferQueryResult<T[K]> | undefined;
|
|
341
381
|
/**
|
|
342
382
|
* Invalidate cache tags to trigger refetches of affected queries.
|
|
343
383
|
* Supports both string tags and object tags with IDs.
|
|
@@ -433,7 +473,7 @@ type BuilderType<TagTypes extends readonly string[] = readonly []> = {
|
|
|
433
473
|
* @returns Mutation endpoint definition
|
|
434
474
|
*/
|
|
435
475
|
mutation<Result, Arg = void>(config: {
|
|
436
|
-
query?: (arg: Arg) => QueryFnObj;
|
|
476
|
+
query?: (arg: Arg) => QueryFnObj | string;
|
|
437
477
|
} & ApiOptionMutation<Arg, Result>): MutationDef<Arg, Result, TagTypes>;
|
|
438
478
|
};
|
|
439
479
|
/** @internal Base query return type with discriminated union for success/error */
|
package/dist/query/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var H=Object.defineProperty;var
|
|
1
|
+
"use strict";var H=Object.defineProperty;var W=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var V=Object.prototype.hasOwnProperty;var X=(e,n)=>{for(var a in n)H(e,a,{get:n[a],enumerable:!0})},Y=(e,n,a,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let p of G(n))!V.call(e,p)&&p!==a&&H(e,p,{get:()=>n[p],enumerable:!(r=W(n,p))||r.enumerable});return e};var Z=e=>Y(H({},"__esModule",{value:!0}),e);var tr={};X(tr,{createApi:()=>rr});module.exports=Z(tr);var N=require("react");var U=require("react");function O(e,n=[]){let a,r=[],p=y=>{let h=typeof y=="function"?y(a):y;a={...a,...h},r.forEach(S=>S())},g=()=>a,A=j(p,g,n);a=e(A,g);let f=y=>(r.push(y),()=>{r=r.filter(h=>h!==y)});return(y=h=>h)=>(0,U.useSyncExternalStore)(f,()=>y(a))}var j=(e,n,a)=>!a||a.length===0?e:a.reduceRight((r,p)=>p(e,n)(r),e);var D=async(e,n,a,r,p,g,A)=>{var S,E,m,Q,F,M,l;n({isLoading:!0});let f,y,h=new Promise((u,w)=>{f=u,y=w});if(r!=null&&r.onQueryStarted)try{r.onQueryStarted(e,{queryFulfilled:h})}catch(u){}try{let u=null,w=null,s=a().cashExp,o=Date.now(),i=!1;if(A||JSON.stringify(a().arg||{})!==JSON.stringify(e||{})?i=!1:i=s>=o,i&&(u=a().data),!i&&(r!=null&&r.queryFnc)){n({isFetching:!0});let{data:t,error:c}=await((S=r==null?void 0:r.queryFnc)==null?void 0:S.call(r,e,p));t&&(u=t),c&&(w=c)}else{let t=r.queryFn(e);if(r!=null&&r.transformHeader&&(t.headers=await((E=r==null?void 0:r.transformHeader)==null?void 0:E.call(r,t==null?void 0:t.headers))),r!=null&&r.transformBody&&(t.body=await((m=r==null?void 0:r.transformBody)==null?void 0:m.call(r,t==null?void 0:t.body))),!i){n({isFetching:!0});let{data:c,error:T}=await p(t);c&&(u=c),T&&(w=T)}}if(u&&(r!=null&&r.transformResponse&&(u=await((Q=r.transformResponse)==null?void 0:Q.call(r,u,a().data,e))),r!=null&&r.onSuccess&&await((F=r.onSuccess)==null?void 0:F.call(r,u,e))),w&&(r!=null&&r.transformError&&(w=await((M=r.transformError)==null?void 0:M.call(r,w,a().error,e))),r!=null&&r.onError&&await((l=r.onError)==null?void 0:l.call(r,w,e))),u){let t=null;return r.providesTags&&(typeof r.providesTags=="function"?t=r.providesTags(u):Array.isArray(r.providesTags)&&(t=r.providesTags)),n({data:u,isSuccess:!0,isLoading:!1,isFetching:!1,cashExp:i?s:Date.now()+g,arg:e,tags:t}),f==null||f({data:u}),{data:u}}return n({isLoading:!1,isSuccess:!1,isFetching:!1,isError:!0,error:w,arg:e}),y==null||y(w),{error:w}}catch(u){return n({isLoading:!1,isSuccess:!1,isFetching:!1,isError:!0,error:u,arg:e}),y==null||y(u),{error:u}}};async function P(e,n,a,r,p,g,A,f,y){var Q,F,M;let h={arg:e,def:r,get:a,set:n};for(let l of y)await((Q=l.beforeQuery)==null?void 0:Q.call(l,h));let S=-1,E=async l=>{if(l<=S)throw new Error("next() called multiple times");S=l;let u=f[l];return u?u(h,()=>E(l+1)):D(e,n,a,r,p,g,A)},m=await E(0);for(let l of y)await((F=l.afterQuery)==null?void 0:F.call(l,m,h));if(m!=null&&m.error)for(let l of y)await((M=l.onError)==null?void 0:M.call(l,m.error,h));return m}function B(e){return e.charAt(0).toUpperCase()+e.slice(1)}function K(e,n){return`${e}__${JSON.stringify(n!=null?n:{})}`}function J(e,n){let a=typeof e=="string",r=typeof n=="string";if(a&&r)return e===n;if(!a&&!r){let p=e.type===n.type,g=!e.id||e.id===n.id;return p&&g}return!1}function rr(e){let{baseQuery:n,endpoints:a,cacheTimeout:r=30*1e3,middlewares:p=[],plugins:g=[],tagTypes:A=[]}=e,y=a({query:s=>({type:"query",queryFn:s.query,...s}),mutation:s=>({type:"mutation",queryFn:s.query,...s})}),h={},S=(g||[]).filter(s=>s.middleware&&typeof s.middleware=="function").map(s=>s.middleware),E=new Map,m=new Map,Q=(s,o)=>{let i=(o.plugins||[]).filter(t=>(t==null?void 0:t.middleware)&&typeof t.middleware=="function").map(t=>t.middleware);if(o.type==="query")return(t,c)=>{let T=K(s,t);if(!E.has(T)){let _=O((C,b)=>(m.set(T,{set:C,get:b}),{data:null,isLoading:!1,isError:!1,isFetching:!1,isSuccess:!1,error:null,arg:null,cashExp:0,query:q=>P(q,C,b,o,n,r,!1,[...p,...o.middlewares||[],...i,...S],[...g,...o.plugins||[]]),reFetch:()=>{var q;return P((q=b())==null?void 0:q.arg,C,b,o,n,r,!0,[...p,...o.middlewares||[],...i,...S],[...g,...o.plugins||[]])}}));E.set(T,_)}let{skip:d}=c||{},x=E.get(T),{query:R,error:I,isError:L,isLoading:k,isSuccess:v,reFetch:$,data:z}=x();return(0,N.useEffect)(()=>{d||R(t)},[JSON.stringify(t||{})]),{error:I,isError:L,isLoading:k,isSuccess:v,data:z,reFetch:$}};if(o.type==="mutation"){let t=null;return()=>{t||(t=O((L,k)=>({data:null,isLoading:!1,isError:!1,isSuccess:!1,error:null,arg:null,cashExp:0,query:v=>P(v,L,k,o,n,0,!1,[...p,...o.middlewares||[],...i,...S],[...g,...o.plugins||[]])})));let{query:c,error:T,isError:d,isLoading:x,isSuccess:R,data:I}=t();return[c,{error:T,isError:d,isLoading:x,isSuccess:R,data:I}]}}};for(let s in y){let o=y[s],i=`use${B(s)}`+(o.type==="query"?"Query":"Mutation");h[i]=Q(s,o)}function F(s,o,i){var x;let t=K(s,o),c=m.get(t);if(!c)return;let T=(x=c.get())==null?void 0:x.data,d=i(T);return c.set({data:d}),{undo(){c.set({data:T})}}}function M(s,o){var c;let i=K(s,o),t=m.get(i);if(t)return(c=t.get())==null?void 0:c.data}function l(s){var o;if(!(!s||s.length===0))for(let[,i]of m.entries()){let t=i.get(),c=(t==null?void 0:t.tags)||[];s.some(d=>c.some(x=>J(d,x)))&&(i.set({cashExp:0}),(o=t==null?void 0:t.reFetch)==null||o.call(t))}}function u(){var s,o;for(let[,i]of m.entries())i.set({cashExp:0}),(o=(s=i.get())==null?void 0:s.reFetch)==null||o.call(s)}function w(s,o){var c,T;let i=K(s,o),t=m.get(i);t&&(t.set({cashExp:0}),(T=(c=t.get())==null?void 0:c.reFetch)==null||T.call(c))}return{...h,utils:{updateQueryData:F,invalidateTags:l,resetApiState:u,refetchQuery:w,getApiDraftData:M}}}0&&(module.exports={createApi});
|
package/dist/query/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as C}from"../chunk-RXPCG2VZ.mjs";import{useEffect as
|
|
1
|
+
import{a as C}from"../chunk-RXPCG2VZ.mjs";import{useEffect as $}from"react";var O=async(s,u,m,r,h,T,q)=>{var E,Q,y,A,S,K,c;u({isLoading:!0});let x,p,w=new Promise((i,g)=>{x=i,p=g});if(r!=null&&r.onQueryStarted)try{r.onQueryStarted(s,{queryFulfilled:w})}catch(i){}try{let i=null,g=null,n=m().cashExp,e=Date.now(),a=!1;if(q||JSON.stringify(m().arg||{})!==JSON.stringify(s||{})?a=!1:a=n>=e,a&&(i=m().data),!a&&(r!=null&&r.queryFnc)){u({isFetching:!0});let{data:t,error:o}=await((E=r==null?void 0:r.queryFnc)==null?void 0:E.call(r,s,h));t&&(i=t),o&&(g=o)}else{let t=r.queryFn(s);if(r!=null&&r.transformHeader&&(t.headers=await((Q=r==null?void 0:r.transformHeader)==null?void 0:Q.call(r,t==null?void 0:t.headers))),r!=null&&r.transformBody&&(t.body=await((y=r==null?void 0:r.transformBody)==null?void 0:y.call(r,t==null?void 0:t.body))),!a){u({isFetching:!0});let{data:o,error:l}=await h(t);o&&(i=o),l&&(g=l)}}if(i&&(r!=null&&r.transformResponse&&(i=await((A=r.transformResponse)==null?void 0:A.call(r,i,m().data,s))),r!=null&&r.onSuccess&&await((S=r.onSuccess)==null?void 0:S.call(r,i,s))),g&&(r!=null&&r.transformError&&(g=await((K=r.transformError)==null?void 0:K.call(r,g,m().error,s))),r!=null&&r.onError&&await((c=r.onError)==null?void 0:c.call(r,g,s))),i){let t=null;return r.providesTags&&(typeof r.providesTags=="function"?t=r.providesTags(i):Array.isArray(r.providesTags)&&(t=r.providesTags)),u({data:i,isSuccess:!0,isLoading:!1,isFetching:!1,cashExp:a?n:Date.now()+T,arg:s,tags:t}),x==null||x({data:i}),{data:i}}return u({isLoading:!1,isSuccess:!1,isFetching:!1,isError:!0,error:g,arg:s}),p==null||p(g),{error:g}}catch(i){return u({isLoading:!1,isSuccess:!1,isFetching:!1,isError:!0,error:i,arg:s}),p==null||p(i),{error:i}}};async function I(s,u,m,r,h,T,q,x,p){var A,S,K;let w={arg:s,def:r,get:m,set:u};for(let c of p)await((A=c.beforeQuery)==null?void 0:A.call(c,w));let E=-1,Q=async c=>{if(c<=E)throw new Error("next() called multiple times");E=c;let i=x[c];return i?i(w,()=>Q(c+1)):O(s,u,m,r,h,T,q)},y=await Q(0);for(let c of p)await((S=c.afterQuery)==null?void 0:S.call(c,y,w));if(y!=null&&y.error)for(let c of p)await((K=c.onError)==null?void 0:K.call(c,y.error,w));return y}function D(s){return s.charAt(0).toUpperCase()+s.slice(1)}function M(s,u){return`${s}__${JSON.stringify(u!=null?u:{})}`}function B(s,u){let m=typeof s=="string",r=typeof u=="string";if(m&&r)return s===u;if(!m&&!r){let h=s.type===u.type,T=!s.id||s.id===u.id;return h&&T}return!1}function j(s){let{baseQuery:u,endpoints:m,cacheTimeout:r=30*1e3,middlewares:h=[],plugins:T=[],tagTypes:q=[]}=s,p=m({query:n=>({type:"query",queryFn:n.query,...n}),mutation:n=>({type:"mutation",queryFn:n.query,...n})}),w={},E=(T||[]).filter(n=>n.middleware&&typeof n.middleware=="function").map(n=>n.middleware),Q=new Map,y=new Map,A=(n,e)=>{let a=(e.plugins||[]).filter(t=>(t==null?void 0:t.middleware)&&typeof t.middleware=="function").map(t=>t.middleware);if(e.type==="query")return(t,o)=>{let l=M(n,t);if(!Q.has(l)){let U=C((v,b)=>(y.set(l,{set:v,get:b}),{data:null,isLoading:!1,isError:!1,isFetching:!1,isSuccess:!1,error:null,arg:null,cashExp:0,query:d=>I(d,v,b,e,u,r,!1,[...h,...e.middlewares||[],...a,...E],[...T,...e.plugins||[]]),reFetch:()=>{var d;return I((d=b())==null?void 0:d.arg,v,b,e,u,r,!0,[...h,...e.middlewares||[],...a,...E],[...T,...e.plugins||[]])}}));Q.set(l,U)}let{skip:f}=o||{},F=Q.get(l),{query:R,error:P,isError:k,isLoading:H,isSuccess:L,reFetch:J,data:N}=F();return $(()=>{f||R(t)},[JSON.stringify(t||{})]),{error:P,isError:k,isLoading:H,isSuccess:L,data:N,reFetch:J}};if(e.type==="mutation"){let t=null;return()=>{t||(t=C((k,H)=>({data:null,isLoading:!1,isError:!1,isSuccess:!1,error:null,arg:null,cashExp:0,query:L=>I(L,k,H,e,u,0,!1,[...h,...e.middlewares||[],...a,...E],[...T,...e.plugins||[]])})));let{query:o,error:l,isError:f,isLoading:F,isSuccess:R,data:P}=t();return[o,{error:l,isError:f,isLoading:F,isSuccess:R,data:P}]}}};for(let n in p){let e=p[n],a=`use${D(n)}`+(e.type==="query"?"Query":"Mutation");w[a]=A(n,e)}function S(n,e,a){var F;let t=M(n,e),o=y.get(t);if(!o)return;let l=(F=o.get())==null?void 0:F.data,f=a(l);return o.set({data:f}),{undo(){o.set({data:l})}}}function K(n,e){var o;let a=M(n,e),t=y.get(a);if(t)return(o=t.get())==null?void 0:o.data}function c(n){var e;if(!(!n||n.length===0))for(let[,a]of y.entries()){let t=a.get(),o=(t==null?void 0:t.tags)||[];n.some(f=>o.some(F=>B(f,F)))&&(a.set({cashExp:0}),(e=t==null?void 0:t.reFetch)==null||e.call(t))}}function i(){var n,e;for(let[,a]of y.entries())a.set({cashExp:0}),(e=(n=a.get())==null?void 0:n.reFetch)==null||e.call(n)}function g(n,e){var o,l;let a=M(n,e),t=y.get(a);t&&(t.set({cashExp:0}),(l=(o=t.get())==null?void 0:o.reFetch)==null||l.call(o))}return{...w,utils:{updateQueryData:S,invalidateTags:c,resetApiState:i,refetchQuery:g,getApiDraftData:K}}}export{j as createApi};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zustic",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "A fast, minimal state management solution for React ecosystems. Works seamlessly with React, Next.js, and React Native, offering predictable state updates with a tiny footprint.",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "tsup",
|
|
@@ -16,6 +16,11 @@
|
|
|
16
16
|
"types": "./dist/query/index.d.ts",
|
|
17
17
|
"import": "./dist/query/index.mjs",
|
|
18
18
|
"require": "./dist/query/index.js"
|
|
19
|
+
},
|
|
20
|
+
"./i18n": {
|
|
21
|
+
"types": "./dist/i18n/index.d.ts",
|
|
22
|
+
"import": "./dist/i18n/index.mjs",
|
|
23
|
+
"require": "./dist/i18n/index.js"
|
|
19
24
|
}
|
|
20
25
|
},
|
|
21
26
|
"directories": {
|