@pixotope/query 0.6.0 → 0.8.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/index.d.cts CHANGED
@@ -31,80 +31,34 @@ type UseQueryResult<TData = unknown, TError = unknown, TParams = void, TSelectDa
31
31
  } & (Stateless extends true ? {} : WithData$1<TSelectData>);
32
32
  declare const useQuery: <TData = unknown, TError = unknown, TParams = void, TSelected = TData, Stateless extends true | undefined = undefined>({ queryFn, ...options }: QueryOptions<TData, TError, TParams, TSelected, Stateless>) => UseQueryResult<TSelected, TError, TParams, TSelected, Stateless>;
33
33
 
34
- type MutationFunction<TData = unknown, TParams = unknown> = (params: TParams, overrideTargetMachine?: string) => Promise<TData>;
35
- interface MutationOptions<TData = unknown, TError = unknown, TParams = void> {
36
- mutationFn: MutationFunction<TData, TParams>;
34
+ type MutationFunction<TData = unknown, TParams = unknown, TMetadata = unknown> = (params: TParams, meta?: TMetadata) => Promise<TData>;
35
+ interface MutationOptions<TData = unknown, TError = unknown, TParams = void, TMetadata = unknown> {
36
+ mutationFn: MutationFunction<TData, TParams, TMetadata>;
37
37
  params?: TParams;
38
- onSuccess?: (data: TData, variables: TParams) => Promise<unknown> | unknown;
39
- onError?: (error: TMutationError<TError>, variables: TParams) => Promise<unknown> | unknown;
40
- onSettled?: (data: TData | undefined, error: TMutationError<TError> | null, variables: TParams) => Promise<unknown> | unknown;
38
+ onSuccess?: (data: TData, variables: TParams, meta?: TMetadata) => Promise<unknown> | unknown;
39
+ onError?: (error: TMutationError<TError>, variables: TParams, meta?: TMetadata) => Promise<unknown> | unknown;
40
+ onSettled?: (data: TData | undefined, error: TMutationError<TError> | null, variables: TParams, meta?: TMetadata) => Promise<unknown> | unknown;
41
41
  compareOrThrow?: (result: TData | TError) => boolean;
42
42
  timeout?: number;
43
- prepareParams?: (variables: TParams, defaults?: TParams) => TParams;
43
+ prepareParams?: (variables: TParams, defaults?: TParams, meta?: TMetadata) => TParams;
44
44
  }
45
45
  type TMutationError<TError> = TError | Error | null;
46
- interface MutateOptions<TData = unknown, TError = unknown, TParams = void> {
47
- onSuccess?: (data: TData, variables: TParams) => void;
48
- onError?: (error: TMutationError<TError>, variables: TParams) => void;
49
- onSettled?: (data: TData | undefined, error: TMutationError<TError> | null, variables: TParams) => void;
46
+ interface MutateOptions<TData = unknown, TError = unknown, TParams = void, TMetadata = unknown> {
47
+ onSuccess?: (data: TData, variables: TParams, meta?: TMetadata) => void;
48
+ onError?: (error: TMutationError<TError>, variables: TParams, meta?: TMetadata) => void;
49
+ onSettled?: (data: TData | undefined, error: TMutationError<TError> | null, variables: TParams, meta?: TMetadata) => void;
50
50
  }
51
51
  type MutationStatus = "idle" | "loading" | "success" | "error";
52
52
  declare class ComparisonFailError<TPayload = unknown> extends Error {
53
53
  readonly payload: TPayload;
54
54
  constructor(message: string, payload: TPayload);
55
55
  }
56
- /**
57
- * `useMutation` is a hook that allows you to perform a mutation/push updates to the services while
58
- * providing extensive API to tap into the status and results of the mutation.
59
- * @param mutationFn The mutation function to be called when the `mutate` function is called.
60
- * `useMutation` does not care about what the function does, all it needs it a function that returns
61
- * a promise.
62
- * @param options Options to configure the mutation.
63
- * @returns An object with the following properties:
64
- * - `mutateAsync`: A function that takes in the variables and returns a promise that resolves to the
65
- * result of the mutation. This function can be awaited to get the result of the mutation. Callbacks can
66
- * be passed to this function to be called when the mutation is successful or when it fails. It's good idea
67
- * to wrap this function in a try/catch block.
68
- * - `mutate`: A function that takes in the variables and returns nothing. This function does not
69
- * return a promise. Callbacks can be passed to this function to be called when the mutation is
70
- * successful or when it fails.
71
- * - `status`: The status of the mutation. Can be one of `idle`, `loading`, `success` or `error`.
72
- * - `result`: The result of the mutation. This is undefined until the mutation is successful.
73
- * - `reset`: A function that resets the mutation to the initial state.
74
- * - `error`: The error object if the mutation has failed.
75
- * @example
76
- * ```typescript
77
- * const mutationRes = useMutation({
78
- * mutationFn: (variables) => {
79
- * return ZMQHelper.callSomethingAsync(variables)
80
- * },
81
- * onSuccess: (data) => {
82
- * // do something with the result
83
- * },
84
- * onError: (error) => {
85
- * // do something with the error
86
- * },
87
- * onSettled: (data, error) => {
88
- * // do something when the mutation is done
89
- * }});
90
- *
91
- * // call the mutation
92
- * const res = await mutationRes.mutateAsync({ foo: "bar" });
93
- * // OR
94
- * mutationRes.mutate({ foo: "bar" }, {
95
- * onSuccess: (data) => {
96
- * // do something with the result
97
- * // for example show a toast message
98
- * // stop local loading state
99
- * });
100
- * ```
101
- */
102
- declare const useMutation: <TData = unknown, TError = unknown, TParams = void>(options: MutationOptions<TData, TError, TParams>) => {
103
- mutateAsync: (params: TParams, overrideTargetMachine?: string) => Promise<TData>;
56
+ declare const useMutation: <TData = unknown, TError = unknown, TParams = void, TMetadata = unknown>(options: MutationOptions<TData, TError, TParams, TMetadata>) => {
57
+ mutateAsync: (params: TParams, meta?: TMetadata) => Promise<TData>;
104
58
  status: MutationStatus;
105
59
  result: TData | undefined;
106
- mutate: (variables: TParams, options?: MutateOptions<TData, TError, TParams> & {
107
- overrideTargetMachine?: string;
60
+ mutate: (variables: TParams, options?: MutateOptions<TData, TError, TParams, TMetadata> & {
61
+ meta?: TMetadata;
108
62
  }) => void;
109
63
  reset: () => void;
110
64
  error: TMutationError<TError>;
@@ -116,36 +70,38 @@ type MutationInfo<TData, TError, TParams> = {
116
70
  params: TParams;
117
71
  };
118
72
  type FnToParamsBase = Record<string, MutationInfo<unknown, unknown, unknown>>;
119
- type TPromiseFunction<TResponse, TParams> = (args: Omit<ZMQClient.Call<TResponse, {
73
+ type TPromiseFunction<TResponse, TParams, TExtraParams> = (args: Omit<ZMQClient.Call<TResponse, {
120
74
  functionName: string;
121
75
  parameters: TParams;
122
76
  options?: Omit<TSocketServerCallOptions, "toCallIfNoResponse">;
123
- }>, "id">) => Promise<TResponse>;
124
- declare const useCallMutationBase: <TFnToParams extends FnToParamsBase, TData = unknown, TError = unknown, TParams = unknown>(promiseFunc: TPromiseFunction<TData, TParams>, functionName: keyof TFnToParams, service: string, options?: Omit<MutationOptions<TData, TError, TParams>, "mutationFn">) => {
125
- mutateAsync: (params: TParams, overrideTargetMachine?: string) => Promise<TData>;
77
+ }>, "id"> & {
78
+ meta?: TExtraParams;
79
+ }) => Promise<TResponse>;
80
+ declare const useCallMutationBase: <TFnToParams extends FnToParamsBase, TData = unknown, TError = unknown, TParams = unknown, TMetadata = unknown>(promiseFunc: TPromiseFunction<TData, TParams, TMetadata>, functionName: keyof TFnToParams, service: (meta?: TMetadata) => string, options?: Omit<MutationOptions<TData, TError, TParams, TMetadata>, "mutationFn">) => {
81
+ mutateAsync: (params: TParams, meta?: TMetadata | undefined) => Promise<TData>;
126
82
  status: "idle" | "loading" | "success" | "error";
127
83
  result: TData | undefined;
128
- mutate: (variables: TParams, options?: (MutateOptions<TData, TError, TParams> & {
129
- overrideTargetMachine?: string;
84
+ mutate: (variables: TParams, options?: (MutateOptions<TData, TError, TParams, TMetadata> & {
85
+ meta?: TMetadata | undefined;
130
86
  }) | undefined) => void;
131
87
  reset: () => void;
132
88
  error: Error | TError | null;
133
89
  };
134
- declare function buildMutationHook<TFnToParams extends FnToParamsBase>(promiseFunc: TPromiseFunction<unknown, unknown>, genTargetService: (machine: string | undefined) => string): <TFn extends keyof TFnToParams>(func: TFn, options?: Parameters<typeof useCallMutationBase<TFnToParams, TFnToParams[TFn]["data"], TFnToParams[TFn]["error"], TFnToParams[TFn]["params"]>>[3] & {
135
- machine?: string;
136
- }) => {
137
- mutateAsync: (params: TFnToParams[TFn]["params"], overrideTargetMachine?: string) => Promise<TFnToParams[TFn]["data"]>;
90
+ declare function buildMutationHook<TFnToParams extends FnToParamsBase, TMetadata = unknown>(promiseFunc: TPromiseFunction<unknown, unknown, unknown>, genTargetService: (meta?: TMetadata) => string): <TFn extends keyof TFnToParams>(func: TFn, options?: Parameters<typeof useCallMutationBase<TFnToParams, TFnToParams[TFn]["data"], TFnToParams[TFn]["error"], TFnToParams[TFn]["params"], TMetadata>>[3]) => {
91
+ mutateAsync: (params: TFnToParams[TFn]["params"], meta?: TMetadata | undefined) => Promise<TFnToParams[TFn]["data"]>;
138
92
  status: "idle" | "loading" | "success" | "error";
139
93
  result: TFnToParams[TFn]["data"] | undefined;
140
- mutate: (variables: TFnToParams[TFn]["params"], options?: (MutateOptions<TFnToParams[TFn]["data"], TFnToParams[TFn]["error"], TFnToParams[TFn]["params"]> & {
141
- overrideTargetMachine?: string;
94
+ mutate: (variables: TFnToParams[TFn]["params"], options?: (MutateOptions<TFnToParams[TFn]["data"], TFnToParams[TFn]["error"], TFnToParams[TFn]["params"], TMetadata> & {
95
+ meta?: TMetadata | undefined;
142
96
  }) | undefined) => void;
143
97
  reset: () => void;
144
98
  error: Error | TFnToParams[TFn]["error"] | null;
145
99
  };
146
- declare const useCallQueryBase: <TFnToParams extends FnToParamsBase, TData = unknown, TError = unknown, TParams = unknown, TSelect = TData>(promiseFunction: TPromiseFunction<TData, TParams>, functionName: keyof TFnToParams, params: TParams, service: string, options?: Omit<QueryOptions<TData, TError, TParams, TSelect>, "queryFn">) => UseQueryResult<TSelect, TError, TParams, TSelect, undefined>;
147
- declare function buildQueryHook<TFnToParams extends FnToParamsBase>(promiseFunction: TPromiseFunction<unknown, unknown>, getTargetService: (machine: string | undefined) => string): <TFn extends keyof TFnToParams, TSelect = TFnToParams[TFn]["data"]>(func: TFn, params: TFnToParams[TFn]["params"], options?: Parameters<typeof useCallQueryBase<TFnToParams, TFnToParams[TFn]["data"], TFnToParams[TFn]["error"], TFnToParams[TFn]["params"], TSelect>>[4] & {
148
- machine?: string;
100
+ declare const useCallQueryBase: <TFnToParams extends FnToParamsBase, TData = unknown, TError = unknown, TParams = unknown, TSelect = TData, TMetadata = unknown>(promiseFunction: TPromiseFunction<TData, TParams, TMetadata>, functionName: keyof TFnToParams, params: TParams, service: (meta?: TMetadata) => string, options?: Omit<QueryOptions<TData, TError, TParams, TSelect>, "queryFn"> & {
101
+ meta?: TMetadata;
102
+ }) => UseQueryResult<TSelect, TError, TParams, TSelect, undefined>;
103
+ declare function buildQueryHook<TFnToParams extends FnToParamsBase, TMetadata = unknown>(promiseFunction: TPromiseFunction<unknown, unknown, unknown>, getTargetService: (meta?: TMetadata) => string): <TFn extends keyof TFnToParams, TSelect = TFnToParams[TFn]["data"]>(func: TFn, params: TFnToParams[TFn]["params"], options?: Parameters<typeof useCallQueryBase<TFnToParams, TFnToParams[TFn]["data"], TFnToParams[TFn]["error"], TFnToParams[TFn]["params"], TSelect, TMetadata>>[4] & {
104
+ meta?: TMetadata;
149
105
  }) => UseQueryResult<TSelect, TFnToParams[TFn]["error"], TFnToParams[TFn]["params"], TSelect, undefined>;
150
106
 
151
107
  /**
@@ -154,7 +110,7 @@ declare function buildQueryHook<TFnToParams extends FnToParamsBase>(promiseFunct
154
110
  * @description useSubscriptionCore | This hook handle core subscription logic
155
111
  * and provides a way to subscribe and unsubscribe to a topic via any callback
156
112
  */
157
- type SubscriptionState = "idle" | "subscribed" | "subscribing";
113
+ type SubscriptionState = "idle" | "subscribed" | "subscribing" | "error";
158
114
  type MessageHandler<TMessage> = (message: TMessage) => void;
159
115
  type Connection = {
160
116
  acknowledge: () => void;
@@ -178,8 +134,9 @@ type SubscriptionCoreOptions<TData, TMessage = TData, Stateless extends true | u
178
134
  */
179
135
  enabled?: boolean;
180
136
  /**
181
- * @description Function that will be called to compare the message with the
182
- * previous message. If the function returns true, the message will be ignored.
137
+ * @description Function that will be called before the message is processed.
138
+ * Returning `true` will cause the message to not be set to state and call {@link onError} if provided.
139
+ * Status will be set to `error`.
183
140
  */
184
141
  compareOrThrow?: (data: TMessage) => boolean;
185
142
  /**
@@ -230,32 +187,34 @@ type SubscriptionCoreReturnType<TData, Stateless extends true | undefined> = {
230
187
  */
231
188
  declare function useSubscriptionCore<TData = unknown, TMessage = TData, Stateless extends true | undefined = undefined>(options: SubscriptionCoreOptions<TData, TMessage, Stateless>): SubscriptionCoreReturnType<TData, Stateless>;
232
189
 
233
- type SubscriptionOptions<TData, TMessage = unknown, Stateless extends true | undefined = undefined> = Omit<SubscriptionCoreOptions<TData, TMessage, Stateless>, "subscriberFn"> & {
190
+ type SubscriptionOptions<TData, TMessage = unknown, Stateless extends true | undefined = undefined, TMetadata extends {} = {}> = Omit<SubscriptionCoreOptions<TData, TMessage, Stateless>, "subscriberFn"> & {
234
191
  service: string;
235
192
  topic: string;
236
193
  maxDownwardDepth?: number;
194
+ } & {
195
+ meta?: TMetadata;
237
196
  };
238
- type TSubscriptionHandlerFunction<TMessage> = (opts: {
197
+ type TSubscriptionHandlerFunction<TMessage, TMetadata extends {} = {}> = (opts: {
239
198
  service: string;
240
199
  name: string;
241
200
  callback: (message: TMessage) => void;
242
201
  maxDownwardDepth?: number;
202
+ } & {
203
+ meta?: TMetadata;
243
204
  }) => () => void;
244
- declare function useSubscription<TData = unknown, TMessage = TData, Stateless extends true | undefined = undefined>(subscriptionHandler: TSubscriptionHandlerFunction<TMessage>, options: SubscriptionOptions<TData, TMessage, Stateless>): SubscriptionCoreReturnType<TData, Stateless>;
245
- declare function buildServiceSubscriptionHook(subscriptionHandler: TSubscriptionHandlerFunction<unknown>, targetMachine: (machine: string | undefined) => string): <TData, TMessage = TData, Stateless extends true | undefined = undefined>(options: Omit<SubscriptionOptions<TData, TMessage, Stateless>, "service"> & {
205
+ declare function useSubscription<TData = unknown, TMessage = TData, Stateless extends true | undefined = undefined, TMetadata extends {} = {}>(subscriptionHandler: TSubscriptionHandlerFunction<TMessage, TMetadata>, options: SubscriptionOptions<TData, TMessage, Stateless, TMetadata>): SubscriptionCoreReturnType<TData, Stateless>;
206
+ declare function buildServiceSubscriptionHook<TMetadata extends {} = {}>(subscriptionHandler: TSubscriptionHandlerFunction<unknown, TMetadata>, targetMachine: (machine: string | undefined) => string): <TData, TMessage = TData, Stateless extends true | undefined = undefined>(options: Omit<SubscriptionOptions<TData, TMessage, Stateless, TMetadata>, "service"> & {
246
207
  machine?: string;
247
208
  }) => SubscriptionCoreReturnType<TData, Stateless>;
248
209
 
249
- declare function bindClientSocketProxy(socketClientProxy: ZMQProxyWSClient): (opts: {
250
- service: string;
251
- name: string;
252
- callback: (message: unknown) => void;
253
- maxDownwardDepth?: number;
254
- }) => () => void;
210
+ type TProxySubscriptionHandlerParams<TMetadata extends {} = {}> = Parameters<Parameters<typeof buildServiceSubscriptionHook<TMetadata>>[0]>[0];
211
+ declare function bindClientSocketProxy(socketClientProxy: ZMQProxyWSClient): (args: TProxySubscriptionHandlerParams) => () => void;
255
212
  declare function bindPromiseFunction(clientSocketProxy: ZMQProxyWSClient): (args: Omit<_pixotope_zmq_client.ZMQClient.Call<unknown, {
256
213
  functionName: string;
257
214
  parameters: unknown;
258
215
  options?: Omit<_pixotope_zmq_client.TSocketServerCallOptions, "toCallIfNoResponse">;
259
- }>, "id">) => Promise<unknown>;
216
+ }>, "id"> & {
217
+ meta?: unknown;
218
+ }) => Promise<unknown>;
260
219
 
261
- export { ComparisonFailError, type Connection, type MessageHandler, type MutateOptions, type MutationFunction, type MutationInfo, type MutationOptions, type QueryOptions, type SubscriptionCoreOptions, type SubscriptionCoreReturnType, type SubscriptionOptions, type TPromiseFunction, type TSubscriptionHandlerFunction, type UseQueryResult, bindClientSocketProxy, bindPromiseFunction, buildMutationHook, buildQueryHook, buildServiceSubscriptionHook, useMutation, useQuery, useSubscription, useSubscriptionCore };
220
+ export { ComparisonFailError, type Connection, type MessageHandler, type MutateOptions, type MutationFunction, type MutationInfo, type MutationOptions, type QueryOptions, type SubscriptionCoreOptions, type SubscriptionCoreReturnType, type SubscriptionOptions, type TPromiseFunction, type TProxySubscriptionHandlerParams, type TSubscriptionHandlerFunction, type UseQueryResult, bindClientSocketProxy, bindPromiseFunction, buildMutationHook, buildQueryHook, buildServiceSubscriptionHook, useMutation, useQuery, useSubscription, useSubscriptionCore };
package/dist/index.d.ts CHANGED
@@ -31,80 +31,34 @@ type UseQueryResult<TData = unknown, TError = unknown, TParams = void, TSelectDa
31
31
  } & (Stateless extends true ? {} : WithData$1<TSelectData>);
32
32
  declare const useQuery: <TData = unknown, TError = unknown, TParams = void, TSelected = TData, Stateless extends true | undefined = undefined>({ queryFn, ...options }: QueryOptions<TData, TError, TParams, TSelected, Stateless>) => UseQueryResult<TSelected, TError, TParams, TSelected, Stateless>;
33
33
 
34
- type MutationFunction<TData = unknown, TParams = unknown> = (params: TParams, overrideTargetMachine?: string) => Promise<TData>;
35
- interface MutationOptions<TData = unknown, TError = unknown, TParams = void> {
36
- mutationFn: MutationFunction<TData, TParams>;
34
+ type MutationFunction<TData = unknown, TParams = unknown, TMetadata = unknown> = (params: TParams, meta?: TMetadata) => Promise<TData>;
35
+ interface MutationOptions<TData = unknown, TError = unknown, TParams = void, TMetadata = unknown> {
36
+ mutationFn: MutationFunction<TData, TParams, TMetadata>;
37
37
  params?: TParams;
38
- onSuccess?: (data: TData, variables: TParams) => Promise<unknown> | unknown;
39
- onError?: (error: TMutationError<TError>, variables: TParams) => Promise<unknown> | unknown;
40
- onSettled?: (data: TData | undefined, error: TMutationError<TError> | null, variables: TParams) => Promise<unknown> | unknown;
38
+ onSuccess?: (data: TData, variables: TParams, meta?: TMetadata) => Promise<unknown> | unknown;
39
+ onError?: (error: TMutationError<TError>, variables: TParams, meta?: TMetadata) => Promise<unknown> | unknown;
40
+ onSettled?: (data: TData | undefined, error: TMutationError<TError> | null, variables: TParams, meta?: TMetadata) => Promise<unknown> | unknown;
41
41
  compareOrThrow?: (result: TData | TError) => boolean;
42
42
  timeout?: number;
43
- prepareParams?: (variables: TParams, defaults?: TParams) => TParams;
43
+ prepareParams?: (variables: TParams, defaults?: TParams, meta?: TMetadata) => TParams;
44
44
  }
45
45
  type TMutationError<TError> = TError | Error | null;
46
- interface MutateOptions<TData = unknown, TError = unknown, TParams = void> {
47
- onSuccess?: (data: TData, variables: TParams) => void;
48
- onError?: (error: TMutationError<TError>, variables: TParams) => void;
49
- onSettled?: (data: TData | undefined, error: TMutationError<TError> | null, variables: TParams) => void;
46
+ interface MutateOptions<TData = unknown, TError = unknown, TParams = void, TMetadata = unknown> {
47
+ onSuccess?: (data: TData, variables: TParams, meta?: TMetadata) => void;
48
+ onError?: (error: TMutationError<TError>, variables: TParams, meta?: TMetadata) => void;
49
+ onSettled?: (data: TData | undefined, error: TMutationError<TError> | null, variables: TParams, meta?: TMetadata) => void;
50
50
  }
51
51
  type MutationStatus = "idle" | "loading" | "success" | "error";
52
52
  declare class ComparisonFailError<TPayload = unknown> extends Error {
53
53
  readonly payload: TPayload;
54
54
  constructor(message: string, payload: TPayload);
55
55
  }
56
- /**
57
- * `useMutation` is a hook that allows you to perform a mutation/push updates to the services while
58
- * providing extensive API to tap into the status and results of the mutation.
59
- * @param mutationFn The mutation function to be called when the `mutate` function is called.
60
- * `useMutation` does not care about what the function does, all it needs it a function that returns
61
- * a promise.
62
- * @param options Options to configure the mutation.
63
- * @returns An object with the following properties:
64
- * - `mutateAsync`: A function that takes in the variables and returns a promise that resolves to the
65
- * result of the mutation. This function can be awaited to get the result of the mutation. Callbacks can
66
- * be passed to this function to be called when the mutation is successful or when it fails. It's good idea
67
- * to wrap this function in a try/catch block.
68
- * - `mutate`: A function that takes in the variables and returns nothing. This function does not
69
- * return a promise. Callbacks can be passed to this function to be called when the mutation is
70
- * successful or when it fails.
71
- * - `status`: The status of the mutation. Can be one of `idle`, `loading`, `success` or `error`.
72
- * - `result`: The result of the mutation. This is undefined until the mutation is successful.
73
- * - `reset`: A function that resets the mutation to the initial state.
74
- * - `error`: The error object if the mutation has failed.
75
- * @example
76
- * ```typescript
77
- * const mutationRes = useMutation({
78
- * mutationFn: (variables) => {
79
- * return ZMQHelper.callSomethingAsync(variables)
80
- * },
81
- * onSuccess: (data) => {
82
- * // do something with the result
83
- * },
84
- * onError: (error) => {
85
- * // do something with the error
86
- * },
87
- * onSettled: (data, error) => {
88
- * // do something when the mutation is done
89
- * }});
90
- *
91
- * // call the mutation
92
- * const res = await mutationRes.mutateAsync({ foo: "bar" });
93
- * // OR
94
- * mutationRes.mutate({ foo: "bar" }, {
95
- * onSuccess: (data) => {
96
- * // do something with the result
97
- * // for example show a toast message
98
- * // stop local loading state
99
- * });
100
- * ```
101
- */
102
- declare const useMutation: <TData = unknown, TError = unknown, TParams = void>(options: MutationOptions<TData, TError, TParams>) => {
103
- mutateAsync: (params: TParams, overrideTargetMachine?: string) => Promise<TData>;
56
+ declare const useMutation: <TData = unknown, TError = unknown, TParams = void, TMetadata = unknown>(options: MutationOptions<TData, TError, TParams, TMetadata>) => {
57
+ mutateAsync: (params: TParams, meta?: TMetadata) => Promise<TData>;
104
58
  status: MutationStatus;
105
59
  result: TData | undefined;
106
- mutate: (variables: TParams, options?: MutateOptions<TData, TError, TParams> & {
107
- overrideTargetMachine?: string;
60
+ mutate: (variables: TParams, options?: MutateOptions<TData, TError, TParams, TMetadata> & {
61
+ meta?: TMetadata;
108
62
  }) => void;
109
63
  reset: () => void;
110
64
  error: TMutationError<TError>;
@@ -116,36 +70,38 @@ type MutationInfo<TData, TError, TParams> = {
116
70
  params: TParams;
117
71
  };
118
72
  type FnToParamsBase = Record<string, MutationInfo<unknown, unknown, unknown>>;
119
- type TPromiseFunction<TResponse, TParams> = (args: Omit<ZMQClient.Call<TResponse, {
73
+ type TPromiseFunction<TResponse, TParams, TExtraParams> = (args: Omit<ZMQClient.Call<TResponse, {
120
74
  functionName: string;
121
75
  parameters: TParams;
122
76
  options?: Omit<TSocketServerCallOptions, "toCallIfNoResponse">;
123
- }>, "id">) => Promise<TResponse>;
124
- declare const useCallMutationBase: <TFnToParams extends FnToParamsBase, TData = unknown, TError = unknown, TParams = unknown>(promiseFunc: TPromiseFunction<TData, TParams>, functionName: keyof TFnToParams, service: string, options?: Omit<MutationOptions<TData, TError, TParams>, "mutationFn">) => {
125
- mutateAsync: (params: TParams, overrideTargetMachine?: string) => Promise<TData>;
77
+ }>, "id"> & {
78
+ meta?: TExtraParams;
79
+ }) => Promise<TResponse>;
80
+ declare const useCallMutationBase: <TFnToParams extends FnToParamsBase, TData = unknown, TError = unknown, TParams = unknown, TMetadata = unknown>(promiseFunc: TPromiseFunction<TData, TParams, TMetadata>, functionName: keyof TFnToParams, service: (meta?: TMetadata) => string, options?: Omit<MutationOptions<TData, TError, TParams, TMetadata>, "mutationFn">) => {
81
+ mutateAsync: (params: TParams, meta?: TMetadata | undefined) => Promise<TData>;
126
82
  status: "idle" | "loading" | "success" | "error";
127
83
  result: TData | undefined;
128
- mutate: (variables: TParams, options?: (MutateOptions<TData, TError, TParams> & {
129
- overrideTargetMachine?: string;
84
+ mutate: (variables: TParams, options?: (MutateOptions<TData, TError, TParams, TMetadata> & {
85
+ meta?: TMetadata | undefined;
130
86
  }) | undefined) => void;
131
87
  reset: () => void;
132
88
  error: Error | TError | null;
133
89
  };
134
- declare function buildMutationHook<TFnToParams extends FnToParamsBase>(promiseFunc: TPromiseFunction<unknown, unknown>, genTargetService: (machine: string | undefined) => string): <TFn extends keyof TFnToParams>(func: TFn, options?: Parameters<typeof useCallMutationBase<TFnToParams, TFnToParams[TFn]["data"], TFnToParams[TFn]["error"], TFnToParams[TFn]["params"]>>[3] & {
135
- machine?: string;
136
- }) => {
137
- mutateAsync: (params: TFnToParams[TFn]["params"], overrideTargetMachine?: string) => Promise<TFnToParams[TFn]["data"]>;
90
+ declare function buildMutationHook<TFnToParams extends FnToParamsBase, TMetadata = unknown>(promiseFunc: TPromiseFunction<unknown, unknown, unknown>, genTargetService: (meta?: TMetadata) => string): <TFn extends keyof TFnToParams>(func: TFn, options?: Parameters<typeof useCallMutationBase<TFnToParams, TFnToParams[TFn]["data"], TFnToParams[TFn]["error"], TFnToParams[TFn]["params"], TMetadata>>[3]) => {
91
+ mutateAsync: (params: TFnToParams[TFn]["params"], meta?: TMetadata | undefined) => Promise<TFnToParams[TFn]["data"]>;
138
92
  status: "idle" | "loading" | "success" | "error";
139
93
  result: TFnToParams[TFn]["data"] | undefined;
140
- mutate: (variables: TFnToParams[TFn]["params"], options?: (MutateOptions<TFnToParams[TFn]["data"], TFnToParams[TFn]["error"], TFnToParams[TFn]["params"]> & {
141
- overrideTargetMachine?: string;
94
+ mutate: (variables: TFnToParams[TFn]["params"], options?: (MutateOptions<TFnToParams[TFn]["data"], TFnToParams[TFn]["error"], TFnToParams[TFn]["params"], TMetadata> & {
95
+ meta?: TMetadata | undefined;
142
96
  }) | undefined) => void;
143
97
  reset: () => void;
144
98
  error: Error | TFnToParams[TFn]["error"] | null;
145
99
  };
146
- declare const useCallQueryBase: <TFnToParams extends FnToParamsBase, TData = unknown, TError = unknown, TParams = unknown, TSelect = TData>(promiseFunction: TPromiseFunction<TData, TParams>, functionName: keyof TFnToParams, params: TParams, service: string, options?: Omit<QueryOptions<TData, TError, TParams, TSelect>, "queryFn">) => UseQueryResult<TSelect, TError, TParams, TSelect, undefined>;
147
- declare function buildQueryHook<TFnToParams extends FnToParamsBase>(promiseFunction: TPromiseFunction<unknown, unknown>, getTargetService: (machine: string | undefined) => string): <TFn extends keyof TFnToParams, TSelect = TFnToParams[TFn]["data"]>(func: TFn, params: TFnToParams[TFn]["params"], options?: Parameters<typeof useCallQueryBase<TFnToParams, TFnToParams[TFn]["data"], TFnToParams[TFn]["error"], TFnToParams[TFn]["params"], TSelect>>[4] & {
148
- machine?: string;
100
+ declare const useCallQueryBase: <TFnToParams extends FnToParamsBase, TData = unknown, TError = unknown, TParams = unknown, TSelect = TData, TMetadata = unknown>(promiseFunction: TPromiseFunction<TData, TParams, TMetadata>, functionName: keyof TFnToParams, params: TParams, service: (meta?: TMetadata) => string, options?: Omit<QueryOptions<TData, TError, TParams, TSelect>, "queryFn"> & {
101
+ meta?: TMetadata;
102
+ }) => UseQueryResult<TSelect, TError, TParams, TSelect, undefined>;
103
+ declare function buildQueryHook<TFnToParams extends FnToParamsBase, TMetadata = unknown>(promiseFunction: TPromiseFunction<unknown, unknown, unknown>, getTargetService: (meta?: TMetadata) => string): <TFn extends keyof TFnToParams, TSelect = TFnToParams[TFn]["data"]>(func: TFn, params: TFnToParams[TFn]["params"], options?: Parameters<typeof useCallQueryBase<TFnToParams, TFnToParams[TFn]["data"], TFnToParams[TFn]["error"], TFnToParams[TFn]["params"], TSelect, TMetadata>>[4] & {
104
+ meta?: TMetadata;
149
105
  }) => UseQueryResult<TSelect, TFnToParams[TFn]["error"], TFnToParams[TFn]["params"], TSelect, undefined>;
150
106
 
151
107
  /**
@@ -154,7 +110,7 @@ declare function buildQueryHook<TFnToParams extends FnToParamsBase>(promiseFunct
154
110
  * @description useSubscriptionCore | This hook handle core subscription logic
155
111
  * and provides a way to subscribe and unsubscribe to a topic via any callback
156
112
  */
157
- type SubscriptionState = "idle" | "subscribed" | "subscribing";
113
+ type SubscriptionState = "idle" | "subscribed" | "subscribing" | "error";
158
114
  type MessageHandler<TMessage> = (message: TMessage) => void;
159
115
  type Connection = {
160
116
  acknowledge: () => void;
@@ -178,8 +134,9 @@ type SubscriptionCoreOptions<TData, TMessage = TData, Stateless extends true | u
178
134
  */
179
135
  enabled?: boolean;
180
136
  /**
181
- * @description Function that will be called to compare the message with the
182
- * previous message. If the function returns true, the message will be ignored.
137
+ * @description Function that will be called before the message is processed.
138
+ * Returning `true` will cause the message to not be set to state and call {@link onError} if provided.
139
+ * Status will be set to `error`.
183
140
  */
184
141
  compareOrThrow?: (data: TMessage) => boolean;
185
142
  /**
@@ -230,32 +187,34 @@ type SubscriptionCoreReturnType<TData, Stateless extends true | undefined> = {
230
187
  */
231
188
  declare function useSubscriptionCore<TData = unknown, TMessage = TData, Stateless extends true | undefined = undefined>(options: SubscriptionCoreOptions<TData, TMessage, Stateless>): SubscriptionCoreReturnType<TData, Stateless>;
232
189
 
233
- type SubscriptionOptions<TData, TMessage = unknown, Stateless extends true | undefined = undefined> = Omit<SubscriptionCoreOptions<TData, TMessage, Stateless>, "subscriberFn"> & {
190
+ type SubscriptionOptions<TData, TMessage = unknown, Stateless extends true | undefined = undefined, TMetadata extends {} = {}> = Omit<SubscriptionCoreOptions<TData, TMessage, Stateless>, "subscriberFn"> & {
234
191
  service: string;
235
192
  topic: string;
236
193
  maxDownwardDepth?: number;
194
+ } & {
195
+ meta?: TMetadata;
237
196
  };
238
- type TSubscriptionHandlerFunction<TMessage> = (opts: {
197
+ type TSubscriptionHandlerFunction<TMessage, TMetadata extends {} = {}> = (opts: {
239
198
  service: string;
240
199
  name: string;
241
200
  callback: (message: TMessage) => void;
242
201
  maxDownwardDepth?: number;
202
+ } & {
203
+ meta?: TMetadata;
243
204
  }) => () => void;
244
- declare function useSubscription<TData = unknown, TMessage = TData, Stateless extends true | undefined = undefined>(subscriptionHandler: TSubscriptionHandlerFunction<TMessage>, options: SubscriptionOptions<TData, TMessage, Stateless>): SubscriptionCoreReturnType<TData, Stateless>;
245
- declare function buildServiceSubscriptionHook(subscriptionHandler: TSubscriptionHandlerFunction<unknown>, targetMachine: (machine: string | undefined) => string): <TData, TMessage = TData, Stateless extends true | undefined = undefined>(options: Omit<SubscriptionOptions<TData, TMessage, Stateless>, "service"> & {
205
+ declare function useSubscription<TData = unknown, TMessage = TData, Stateless extends true | undefined = undefined, TMetadata extends {} = {}>(subscriptionHandler: TSubscriptionHandlerFunction<TMessage, TMetadata>, options: SubscriptionOptions<TData, TMessage, Stateless, TMetadata>): SubscriptionCoreReturnType<TData, Stateless>;
206
+ declare function buildServiceSubscriptionHook<TMetadata extends {} = {}>(subscriptionHandler: TSubscriptionHandlerFunction<unknown, TMetadata>, targetMachine: (machine: string | undefined) => string): <TData, TMessage = TData, Stateless extends true | undefined = undefined>(options: Omit<SubscriptionOptions<TData, TMessage, Stateless, TMetadata>, "service"> & {
246
207
  machine?: string;
247
208
  }) => SubscriptionCoreReturnType<TData, Stateless>;
248
209
 
249
- declare function bindClientSocketProxy(socketClientProxy: ZMQProxyWSClient): (opts: {
250
- service: string;
251
- name: string;
252
- callback: (message: unknown) => void;
253
- maxDownwardDepth?: number;
254
- }) => () => void;
210
+ type TProxySubscriptionHandlerParams<TMetadata extends {} = {}> = Parameters<Parameters<typeof buildServiceSubscriptionHook<TMetadata>>[0]>[0];
211
+ declare function bindClientSocketProxy(socketClientProxy: ZMQProxyWSClient): (args: TProxySubscriptionHandlerParams) => () => void;
255
212
  declare function bindPromiseFunction(clientSocketProxy: ZMQProxyWSClient): (args: Omit<_pixotope_zmq_client.ZMQClient.Call<unknown, {
256
213
  functionName: string;
257
214
  parameters: unknown;
258
215
  options?: Omit<_pixotope_zmq_client.TSocketServerCallOptions, "toCallIfNoResponse">;
259
- }>, "id">) => Promise<unknown>;
216
+ }>, "id"> & {
217
+ meta?: unknown;
218
+ }) => Promise<unknown>;
260
219
 
261
- export { ComparisonFailError, type Connection, type MessageHandler, type MutateOptions, type MutationFunction, type MutationInfo, type MutationOptions, type QueryOptions, type SubscriptionCoreOptions, type SubscriptionCoreReturnType, type SubscriptionOptions, type TPromiseFunction, type TSubscriptionHandlerFunction, type UseQueryResult, bindClientSocketProxy, bindPromiseFunction, buildMutationHook, buildQueryHook, buildServiceSubscriptionHook, useMutation, useQuery, useSubscription, useSubscriptionCore };
220
+ export { ComparisonFailError, type Connection, type MessageHandler, type MutateOptions, type MutationFunction, type MutationInfo, type MutationOptions, type QueryOptions, type SubscriptionCoreOptions, type SubscriptionCoreReturnType, type SubscriptionOptions, type TPromiseFunction, type TProxySubscriptionHandlerParams, type TSubscriptionHandlerFunction, type UseQueryResult, bindClientSocketProxy, bindPromiseFunction, buildMutationHook, buildQueryHook, buildServiceSubscriptionHook, useMutation, useQuery, useSubscription, useSubscriptionCore };