@pixotope/query 0.2.0 → 0.5.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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @pixotope/query@0.2.0 build /home/circleci/project/packages/query
2
+ > @pixotope/query@0.5.0 build /home/circleci/project/packages/query
3
3
  > tsup src/index.ts --format cjs,esm --dts --sourcemap
4
4
 
5
5
  CLI Building entry: src/index.ts
@@ -8,13 +8,13 @@
8
8
  CLI Target: es6
9
9
  CJS Build start
10
10
  ESM Build start
11
- CJS dist/index.cjs 22.17 KB
12
- CJS dist/index.cjs.map 41.66 KB
13
- CJS ⚡️ Build success in 29ms
14
- ESM dist/index.js 20.95 KB
15
- ESM dist/index.js.map 41.66 KB
16
- ESM ⚡️ Build success in 30ms
11
+ ESM dist/index.js 21.28 KB
12
+ ESM dist/index.js.map 42.77 KB
13
+ ESM ⚡️ Build success in 27ms
14
+ CJS dist/index.cjs 22.62 KB
15
+ CJS dist/index.cjs.map 42.90 KB
16
+ CJS ⚡️ Build success in 28ms
17
17
  DTS Build start
18
- DTS ⚡️ Build success in 1515ms
19
- DTS dist/index.d.cts 9.19 KB
20
- DTS dist/index.d.ts 9.19 KB
18
+ DTS ⚡️ Build success in 1516ms
19
+ DTS dist/index.d.cts 13.79 KB
20
+ DTS dist/index.d.ts 13.79 KB
@@ -1,4 +1,4 @@
1
1
 
2
- > @pixotope/query@0.2.0 check-types /home/circleci/project/packages/query
2
+ > @pixotope/query@0.5.0 check-types /home/circleci/project/packages/query
3
3
  > tsc --noEmit
4
4
 
@@ -1,15 +1,15 @@
1
1
 
2
- > @pixotope/query@0.2.0 test /home/circleci/project/packages/query
2
+ > @pixotope/query@0.5.0 test /home/circleci/project/packages/query
3
3
  > vitest
4
4
 
5
5
 
6
6
   RUN  v3.2.4 /home/circleci/project/packages/query
7
7
 
8
- ✓ src/useSubscriptionCore.test.ts (21 tests) 105ms
9
- ✓ src/useQuery.test.ts (17 tests) 420ms
8
+ ✓ src/useSubscriptionCore.test.ts (21 tests) 96ms
9
+ ✓ src/useQuery.test.ts (17 tests) 410ms
10
10
 
11
11
   Test Files  2 passed (2)
12
12
   Tests  38 passed (38)
13
-  Start at  15:54:05
14
-  Duration  3.60s (transform 369ms, setup 332ms, collect 746ms, tests 525ms, environment 1.54s, prepare 891ms)
13
+  Start at  17:03:20
14
+  Duration  3.52s (transform 319ms, setup 294ms, collect 630ms, tests 506ms, environment 2.43s, prepare 1.66s)
15
15
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @pixotope/query
2
2
 
3
+ ## 0.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - f814fd0: - improved and simplified `useQuery`
8
+
9
+ ## 0.4.0
10
+
11
+ ### Minor Changes
12
+
13
+ - 2546f76: - general type and compatibility improvements
14
+
15
+ ## 0.3.0
16
+
17
+ ### Minor Changes
18
+
19
+ - f89bd57: `@pixotope/query`
20
+
21
+ - feat: add useMutation and useSubscriptionCore exports to query package
22
+
3
23
  ## 0.2.0
4
24
 
5
25
  ### Minor Changes
package/dist/index.cjs CHANGED
@@ -148,12 +148,16 @@ var require_comparison = __commonJS({
148
148
  // src/index.ts
149
149
  var index_exports = {};
150
150
  __export(index_exports, {
151
+ ComparisonFailError: () => ComparisonFailError,
151
152
  bindClientSocketProxy: () => bindClientSocketProxy,
153
+ bindPromiseFunction: () => bindPromiseFunction,
152
154
  buildMutationHook: () => buildMutationHook,
153
155
  buildQueryHook: () => buildQueryHook,
154
156
  buildServiceSubscriptionHook: () => buildServiceSubscriptionHook,
157
+ useMutation: () => useMutation,
155
158
  useQuery: () => useQuery,
156
- useSubscription: () => useSubscription
159
+ useSubscription: () => useSubscription,
160
+ useSubscriptionCore: () => useSubscriptionCore
157
161
  });
158
162
  module.exports = __toCommonJS(index_exports);
159
163
 
@@ -282,6 +286,7 @@ var import_react2 = require("react");
282
286
  function normalizeQueryKey(queryKey) {
283
287
  return JSON.stringify(queryKey);
284
288
  }
289
+ var getRandomUUID = () => Math.random().toString(36).substring(2, 15);
285
290
  var useQuery = (_a) => {
286
291
  var _b = _a, {
287
292
  queryFn
@@ -303,7 +308,6 @@ var useQuery = (_a) => {
303
308
  key: queryKeyPassed
304
309
  } = options;
305
310
  const queryKey = normalizeQueryKey(queryKeyPassed != null ? queryKeyPassed : []);
306
- const promiseResolutionInProgress = (0, import_react2.useRef)(false);
307
311
  const lastFetchedAt = (0, import_react2.useRef)(null);
308
312
  const lastQueryKey = (0, import_react2.useRef)(void 0);
309
313
  const queryFnRef = (0, import_react2.useRef)(queryFn);
@@ -332,6 +336,7 @@ var useQuery = (_a) => {
332
336
  stateless,
333
337
  timeout
334
338
  };
339
+ const requestIdRef = (0, import_react2.useRef)(getRandomUUID());
335
340
  const [status, setStatus] = (0, import_react2.useState)(() => {
336
341
  return "idle";
337
342
  });
@@ -364,7 +369,9 @@ var useQuery = (_a) => {
364
369
  const refetch = (0, import_react2.useCallback)(
365
370
  (params = void 0) => __async(null, null, function* () {
366
371
  var _a2, _b2, _c, _d, _e, _f, _g, _h;
367
- if (promiseResolutionInProgress.current || !internalOptionsRef.current.enabled) {
372
+ const requestId = getRandomUUID();
373
+ requestIdRef.current = requestId;
374
+ if (!internalOptionsRef.current.enabled) {
368
375
  return;
369
376
  }
370
377
  setStatus("loading");
@@ -381,9 +388,10 @@ var useQuery = (_a) => {
381
388
  )
382
389
  ] : []
383
390
  ];
384
- promiseResolutionInProgress.current = true;
385
391
  const res = yield Promise.race(promises);
386
- promiseResolutionInProgress.current = false;
392
+ if (requestIdRef.current !== requestId) {
393
+ return;
394
+ }
387
395
  if (res === "timeout") {
388
396
  throw new Error("timeout");
389
397
  }
@@ -411,36 +419,17 @@ var useQuery = (_a) => {
411
419
  refetch();
412
420
  }, [refetch]);
413
421
  (0, import_react2.useEffect)(() => {
414
- if (enabled) {
415
- refetch();
416
- }
417
- }, [enabled, refetch, queryKey]);
418
- (0, import_react2.useEffect)(() => {
419
- if (lastQueryKey.current === void 0) {
420
- lastQueryKey.current = queryKey;
421
- refetch();
422
- return;
423
- }
424
- if (queryKey !== lastQueryKey.current) {
425
- lastQueryKey.current = queryKey;
426
- refetch();
427
- }
428
- }, [queryKey, refetch, enabled]);
429
- (0, import_react2.useEffect)(() => {
422
+ const cleanups = [];
430
423
  if (refetchOnWindowFocus) {
431
424
  const queryHandleFocus = () => {
432
- if (shouldRefetch()) {
433
- refetch();
434
- }
425
+ refetch();
435
426
  };
436
427
  window.addEventListener("focus", queryHandleFocus);
437
- return () => {
428
+ cleanups.push(() => {
438
429
  window.removeEventListener("focus", queryHandleFocus);
439
- };
430
+ });
440
431
  }
441
- }, [refetchOnWindowFocus, refetch, shouldRefetch]);
442
- (0, import_react2.useEffect)(() => {
443
- if (refetchInterval !== 0) {
432
+ if (refetchInterval > 0) {
444
433
  const interval = setInterval(
445
434
  () => {
446
435
  if (shouldRefetch()) {
@@ -449,11 +438,25 @@ var useQuery = (_a) => {
449
438
  },
450
439
  Math.max(refetchInterval, 1e3)
451
440
  );
452
- return () => {
441
+ cleanups.push(() => {
453
442
  clearInterval(interval);
454
- };
443
+ });
444
+ }
445
+ if (lastQueryKey.current === void 0 || queryKey !== lastQueryKey.current) {
446
+ lastQueryKey.current = queryKey;
447
+ refetch();
455
448
  }
456
- }, [refetch, refetchInterval, shouldRefetch]);
449
+ return () => {
450
+ cleanups.forEach((cleanup) => cleanup());
451
+ };
452
+ }, [
453
+ queryKey,
454
+ enabled,
455
+ refetchOnWindowFocus,
456
+ refetchInterval,
457
+ shouldRefetch,
458
+ refetch
459
+ ]);
457
460
  return {
458
461
  data: select && data !== void 0 ? select(data) : data,
459
462
  error,
@@ -464,7 +467,7 @@ var useQuery = (_a) => {
464
467
  };
465
468
 
466
469
  // src/factories.ts
467
- var useCallMutationBase = (clientProxy, functionName, service, options) => {
470
+ var useCallMutationBase = (promiseFunc, functionName, service, options) => {
468
471
  const _a = (0, import_react3.useMemo)(() => options != null ? options : {}, [options]), {
469
472
  avoidTimeout = true,
470
473
  customTimeout = void 0
@@ -475,7 +478,7 @@ var useCallMutationBase = (clientProxy, functionName, service, options) => {
475
478
  const mutationFn = (0, import_react3.useCallback)(
476
479
  (parameters) => __async(null, null, function* () {
477
480
  try {
478
- const res = yield clientProxy.callAsync({
481
+ return yield promiseFunc({
479
482
  service,
480
483
  functionName: functionName.toString(),
481
484
  parameters,
@@ -484,7 +487,6 @@ var useCallMutationBase = (clientProxy, functionName, service, options) => {
484
487
  customTimeout
485
488
  }
486
489
  });
487
- return res.message.Result;
488
490
  } catch (e) {
489
491
  throw e.message;
490
492
  }
@@ -495,13 +497,13 @@ var useCallMutationBase = (clientProxy, functionName, service, options) => {
495
497
  mutationFn
496
498
  }, rest));
497
499
  };
498
- function buildMutationHook(socketClientProxy, genTargetService) {
500
+ function buildMutationHook(promiseFunc, genTargetService) {
499
501
  return function useCallMutationBuilder(func, options) {
500
502
  const targetService = genTargetService(options == null ? void 0 : options.machine);
501
- return useCallMutationBase(socketClientProxy, func, targetService, options);
503
+ return useCallMutationBase(promiseFunc, func, targetService, options);
502
504
  };
503
505
  }
504
- var useCallQueryBase = (clientProxy, functionName, params, service, options) => {
506
+ var useCallQueryBase = (promiseFunction, functionName, params, service, options) => {
505
507
  const _a = (0, import_react3.useMemo)(() => options != null ? options : {}, [options]), {
506
508
  avoidTimeout = true,
507
509
  customTimeout = void 0
@@ -512,7 +514,7 @@ var useCallQueryBase = (clientProxy, functionName, params, service, options) =>
512
514
  const queryFn = (0, import_react3.useCallback)(
513
515
  (refetchParams, overrideTargetMachine) => __async(null, null, function* () {
514
516
  try {
515
- const res = yield clientProxy.callAsync({
517
+ return yield promiseFunction({
516
518
  service: overrideTargetMachine != null ? overrideTargetMachine : service,
517
519
  functionName: functionName.toString(),
518
520
  parameters: refetchParams != null ? refetchParams : params,
@@ -521,7 +523,6 @@ var useCallQueryBase = (clientProxy, functionName, params, service, options) =>
521
523
  customTimeout
522
524
  }
523
525
  });
524
- return res.message.Result;
525
526
  } catch (e) {
526
527
  if (e instanceof Error) {
527
528
  throw e;
@@ -535,10 +536,10 @@ var useCallQueryBase = (clientProxy, functionName, params, service, options) =>
535
536
  queryFn
536
537
  }, rest));
537
538
  };
538
- function buildQueryHook(clientSocketProxy, getTargetService) {
539
+ function buildQueryHook(promiseFunction, getTargetService) {
539
540
  return function useCallQueryBuilder(func, params, options) {
540
541
  const targetService = getTargetService(options == null ? void 0 : options.machine);
541
- return useCallQueryBase(clientSocketProxy, func, params, targetService, options);
542
+ return useCallQueryBase(promiseFunction, func, params, targetService, options);
542
543
  };
543
544
  }
544
545
 
@@ -678,16 +679,35 @@ function buildServiceSubscriptionHook(subscriptionHandler, targetMachine) {
678
679
  );
679
680
  };
680
681
  }
682
+
683
+ // src/proxyBinders.ts
681
684
  function bindClientSocketProxy(socketClientProxy) {
682
- return (...args) => socketClientProxy.mirror(...args)[0];
685
+ return (...args) => {
686
+ const _a = args[0], { callback: cbHook } = _a, rest = __objRest(_a, ["callback"]);
687
+ return socketClientProxy.mirror(__spreadProps(__spreadValues({}, rest), {
688
+ callback: (message) => {
689
+ cbHook(message.message);
690
+ }
691
+ }))[0];
692
+ };
693
+ }
694
+ function bindPromiseFunction(clientSocketProxy) {
695
+ return (...args) => __async(null, null, function* () {
696
+ const res = yield clientSocketProxy.callAsync(...args);
697
+ return res.message.Result;
698
+ });
683
699
  }
684
700
  // Annotate the CommonJS export names for ESM import in node:
685
701
  0 && (module.exports = {
702
+ ComparisonFailError,
686
703
  bindClientSocketProxy,
704
+ bindPromiseFunction,
687
705
  buildMutationHook,
688
706
  buildQueryHook,
689
707
  buildServiceSubscriptionHook,
708
+ useMutation,
690
709
  useQuery,
691
- useSubscription
710
+ useSubscription,
711
+ useSubscriptionCore
692
712
  });
693
713
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../utils/dist/comparison/index.js","../src/index.ts","../src/factories.ts","../src/useMutation.ts","../src/useQuery.ts","../src/useSubscriptionCore.ts","../src/useSubscription.ts"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/comparison/index.ts\nvar comparison_exports = {};\n__export(comparison_exports, {\n shallowEqual: () => shallowEqual\n});\nmodule.exports = __toCommonJS(comparison_exports);\n\n// src/comparison/shallowEqual.ts\nfunction shallowEqual(objA, objB) {\n if (Object.is(objA, objB)) {\n return true;\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n if (objA instanceof Map && objB instanceof Map) {\n if (objA.size !== objB.size) return false;\n for (const [key, value] of objA) {\n if (!Object.is(value, objB.get(key))) {\n return false;\n }\n }\n return true;\n }\n if (objA instanceof Set && objB instanceof Set) {\n if (objA.size !== objB.size) return false;\n for (const value of objA) {\n if (!objB.has(value)) {\n return false;\n }\n }\n return true;\n }\n const keysA = Object.keys(objA);\n if (keysA.length !== Object.keys(objB).length) {\n return false;\n }\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !Object.is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n shallowEqual\n});\n","export * from \"./factories\";\nexport * from \"./useSubscription\";\nexport * from \"./useQuery\";\n","import { useCallback, useMemo } from \"react\";\nimport { MutationOptions, useMutation } from \"./useMutation\";\nimport { QueryOptions, useQuery } from \"./useQuery\";\nimport type { ZMQProxyWSClient } from \"@pixotope/zmq-client\";\n\nexport type MutationInfo<TData, TError, TParams> = {\n data: TData;\n error: TError;\n params: TParams;\n};\n\ntype FnToParamsBase = Record<string, MutationInfo<unknown, unknown, unknown>>;\n\nconst useCallMutationBase = <\n TFnToParams extends FnToParamsBase,\n TData = unknown,\n TError = unknown,\n TParams = unknown,\n>(\n clientProxy: ZMQProxyWSClient,\n functionName: keyof TFnToParams,\n service: string,\n options?: Omit<MutationOptions<TData, TError, TParams>, \"mutationFn\"> & {\n avoidTimeout?: boolean;\n customTimeout?: number;\n }\n) => {\n const {\n avoidTimeout = true,\n customTimeout = undefined,\n ...rest\n } = useMemo(() => options ?? {}, [options]);\n const mutationFn = useCallback(\n async (parameters: TParams) => {\n try {\n const res = await clientProxy.callAsync<TData, TParams>({\n service,\n functionName: functionName.toString(),\n parameters,\n options: {\n avoidTimeout,\n customTimeout,\n },\n });\n\n return res.message.Result;\n } catch (e: any) {\n throw e.message;\n }\n },\n [avoidTimeout, customTimeout, functionName, service]\n );\n\n return useMutation<TData, TError, TParams>({\n mutationFn,\n ...rest,\n });\n};\n\nexport function buildMutationHook<TFnToParams extends FnToParamsBase>(\n socketClientProxy: ZMQProxyWSClient,\n genTargetService: (machine: string | undefined) => string\n) {\n return function useCallMutationBuilder<TFn extends keyof TFnToParams>(\n func: TFn,\n options?: Parameters<\n typeof useCallMutationBase<\n TFnToParams,\n TFnToParams[TFn][\"data\"],\n TFnToParams[TFn][\"error\"],\n TFnToParams[TFn][\"params\"]\n >\n >[3] & { machine?: string }\n ) {\n const targetService = genTargetService(options?.machine);\n\n return useCallMutationBase<\n TFnToParams,\n TFnToParams[TFn][\"data\"],\n TFnToParams[TFn][\"error\"],\n TFnToParams[TFn][\"params\"]\n >(socketClientProxy, func, targetService, options);\n };\n}\n\nconst useCallQueryBase = <\n TFnToParams extends FnToParamsBase,\n TData = unknown,\n TError = unknown,\n TParams = unknown,\n TSelect = TData,\n>(\n clientProxy: ZMQProxyWSClient,\n functionName: keyof TFnToParams,\n params: TParams,\n service: string,\n options?: Omit<QueryOptions<TData, TError, TParams, TSelect>, \"queryFn\"> & {\n avoidTimeout?: boolean;\n customTimeout?: number;\n }\n) => {\n const {\n avoidTimeout = true,\n customTimeout = undefined,\n ...rest\n } = useMemo(() => options ?? {}, [options]);\n const queryFn = useCallback(\n async (refetchParams: TParams | void, overrideTargetMachine?: string) => {\n try {\n const res = await clientProxy.callAsync<TData, TParams>({\n service: overrideTargetMachine ?? service,\n functionName: functionName.toString(),\n parameters: refetchParams ?? params,\n options: {\n avoidTimeout,\n customTimeout,\n },\n });\n return res.message.Result;\n } catch (e) {\n if (e instanceof Error) {\n throw e;\n }\n throw new Error(e as string);\n }\n },\n [avoidTimeout, customTimeout, functionName, service, params]\n );\n\n return useQuery<TData, TError, TParams, TSelect>({\n queryFn,\n ...rest,\n });\n};\n\nexport function buildQueryHook<TFnToParams extends FnToParamsBase>(\n clientSocketProxy: ZMQProxyWSClient,\n getTargetService: (machine: string | undefined) => string\n) {\n return function useCallQueryBuilder<\n TFn extends keyof TFnToParams,\n TSelect = TFnToParams[TFn][\"data\"],\n >(\n func: TFn,\n params: TFnToParams[TFn][\"params\"],\n options?: Parameters<\n typeof useCallQueryBase<\n TFnToParams,\n TFnToParams[TFn][\"data\"],\n TFnToParams[TFn][\"error\"],\n TFnToParams[TFn][\"params\"],\n TSelect\n >\n >[4] & { machine?: string }\n ) {\n const targetService = getTargetService(options?.machine);\n\n return useCallQueryBase<\n TFnToParams,\n TFnToParams[TFn][\"data\"],\n TFnToParams[TFn][\"error\"],\n TFnToParams[TFn][\"params\"],\n TSelect\n >(clientSocketProxy, func, params, targetService, options);\n };\n}\n","import { useCallback, useRef, useState } from \"react\";\n\nexport type MutationFunction<TData = unknown, TParams = unknown> = (\n params: TParams,\n overrideTargetMachine?: string\n) => Promise<TData>;\n\nexport interface MutationOptions<\n TData = unknown,\n TError = unknown,\n TParams = void,\n> {\n mutationFn: MutationFunction<TData, TParams>;\n params?: TParams;\n onSuccess?: (data: TData, variables: TParams) => Promise<unknown> | unknown;\n onError?: (error: TError, variables: TParams) => Promise<unknown> | unknown;\n onSettled?: (\n data: TData | undefined,\n error: TError | null,\n variables: TParams\n ) => Promise<unknown> | unknown;\n compareOrThrow?: (result: TData | TError) => boolean;\n timeout?: number;\n prepareParams?: (variables: TParams, defaults?: TParams) => TParams;\n}\n\nexport interface MutateOptions<\n TData = unknown,\n TError = unknown,\n TParams = void,\n> {\n onSuccess?: (data: TData, variables: TParams) => void;\n onError?: (error: TError, variables: TParams) => void;\n onSettled?: (\n data: TData | undefined,\n error: TError | null,\n variables: TParams\n ) => void;\n}\n\ntype MutationStatus = \"idle\" | \"loading\" | \"success\" | \"error\";\ntype RaceErrorReason = \"timeout\";\ntype RacePromises<T> = Promise<T | RaceErrorReason>;\n\nexport class ComparisonFailError<TPayload = unknown> extends Error {\n public readonly payload: TPayload;\n\n constructor(message: string, payload: TPayload) {\n super(message);\n this.name = this.constructor.name;\n this.payload = payload;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ComparisonFailError);\n }\n }\n}\n\n/**\n * `useMutation` is a hook that allows you to perform a mutation/push updates to the services while\n * providing extensive API to tap into the status and results of the mutation.\n * @param mutationFn The mutation function to be called when the `mutate` function is called.\n * `useMutation` does not care about what the function does, all it needs it a function that returns\n * a promise.\n * @param options Options to configure the mutation.\n * @returns An object with the following properties:\n * - `mutateAsync`: A function that takes in the variables and returns a promise that resolves to the\n * result of the mutation. This function can be awaited to get the result of the mutation. Callbacks can\n * be passed to this function to be called when the mutation is successful or when it fails. It's good idea\n * to wrap this function in a try/catch block.\n * - `mutate`: A function that takes in the variables and returns nothing. This function does not\n * return a promise. Callbacks can be passed to this function to be called when the mutation is\n * successful or when it fails.\n * - `status`: The status of the mutation. Can be one of `idle`, `loading`, `success` or `error`.\n * - `result`: The result of the mutation. This is undefined until the mutation is successful.\n * - `reset`: A function that resets the mutation to the initial state.\n * - `error`: The error object if the mutation has failed.\n * @example\n * ```typescript\n * const mutationRes = useMutation({\n * mutationFn: (variables) => {\n * return ZMQHelper.callSomethingAsync(variables)\n * },\n * onSuccess: (data) => {\n * // do something with the result\n * },\n * onError: (error) => {\n * // do something with the error\n * },\n * onSettled: (data, error) => {\n * // do something when the mutation is done\n * }});\n *\n * // call the mutation\n * const res = await mutationRes.mutateAsync({ foo: \"bar\" });\n * // OR\n * mutationRes.mutate({ foo: \"bar\" }, {\n * onSuccess: (data) => {\n * // do something with the result\n * // for example show a toast message\n * // stop local loading state\n * });\n * ```\n */\nexport const useMutation = <TData = unknown, TError = unknown, TParams = void>(\n options: MutationOptions<TData, TError, TParams>\n) => {\n const {\n mutationFn,\n compareOrThrow,\n onError,\n onSettled,\n onSuccess,\n prepareParams,\n params,\n timeout,\n } = options;\n const [status, setStatus] = useState<MutationStatus>(\"idle\");\n const [error, setError] = useState<TError | null>(null);\n const [result, setResult] = useState<TData | undefined>(undefined);\n const mutationFnRef = useRef(mutationFn);\n const internalOptionsRef = useRef({\n params,\n timeout,\n });\n const internalCallbackRefistry = <const>{\n onSuccess,\n onError,\n onSettled,\n compareOrThrow,\n prepareParams,\n };\n const internalCallbackRef = useRef(internalCallbackRefistry);\n internalCallbackRef.current = internalCallbackRefistry;\n\n const mutateAsync = useCallback(\n async (params: TParams, overrideTargetMachine?: string) => {\n setStatus(\"loading\");\n setError(null);\n\n try {\n const promises: RacePromises<TData>[] = [\n mutationFnRef.current(\n internalCallbackRef.current.prepareParams\n ? internalCallbackRef.current.prepareParams(\n params,\n internalOptionsRef.current.params\n )\n : params,\n overrideTargetMachine\n ),\n ...(internalOptionsRef.current.timeout\n ? [\n new Promise<RaceErrorReason>((resolve) =>\n setTimeout(\n () => resolve(\"timeout\"),\n internalOptionsRef.current.timeout\n )\n ),\n ]\n : []),\n ];\n\n const res = await Promise.race(promises);\n\n if (res === \"timeout\") {\n throw new Error(\"timeout\");\n }\n\n if (internalCallbackRef.current.compareOrThrow?.(res)) {\n throw new ComparisonFailError(JSON.stringify(res), res);\n }\n\n setResult(res);\n setStatus(\"success\");\n\n internalCallbackRef.current.onSuccess?.(res, params);\n internalCallbackRef.current.onSettled?.(res, null, params);\n\n return res;\n } catch (error: any) {\n setError(error);\n setStatus(\"error\");\n\n if (internalCallbackRef.current.onError) {\n internalCallbackRef.current.onError(error, params);\n }\n\n if (internalCallbackRef.current.onSettled) {\n internalCallbackRef.current.onSettled(undefined, error, params);\n }\n\n throw error;\n }\n },\n []\n );\n\n const mutate = useCallback(\n (\n variables: TParams,\n options?: MutateOptions<TData, TError, TParams> & {\n overrideTargetMachine?: string;\n }\n ) => {\n mutateAsync(variables, options?.overrideTargetMachine).then(\n (data) => {\n options?.onSuccess?.(data, variables);\n options?.onSettled?.(data, null, variables);\n },\n (error) => {\n options?.onError?.(error, variables);\n options?.onSettled?.(undefined, error, variables);\n }\n );\n },\n [mutateAsync]\n );\n\n return {\n mutateAsync,\n status,\n result,\n mutate,\n reset: () => setStatus(\"idle\"),\n error,\n };\n};\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\nexport interface QueryOptions<\n TData = unknown,\n TError = unknown,\n TParams = void,\n TSelectData = TData,\n Stateless extends true | undefined = undefined,\n> {\n queryFn: (params: TParams | undefined | void) => Promise<TData>;\n onSuccess?: (data: TData) => Promise<void> | void;\n onError?: (error: TError) => Promise<void> | void;\n onSettled?: (\n data: TData | undefined,\n error: TError | undefined\n ) => Promise<void> | void;\n timeout?: number;\n enabled?: boolean;\n initialData?: TData | Functionize<TData>;\n select?: (data: TData) => TSelectData;\n refetchOnWindowFocus?: boolean;\n refetchInterval?: number;\n compareOrThrow?: (data: TData) => boolean;\n stateless?: Stateless;\n key?: TQueryKey;\n}\n\ntype Functionize<T> = () => T;\ntype QueryStatus = \"idle\" | \"loading\" | \"success\" | \"error\" | \"timeout\";\ntype RaceErrorReason = \"timeout\";\ntype RacePromises<T> = Promise<T | RaceErrorReason>;\ntype WithData<TData> = { data: TData | undefined };\ntype TQueryKey = readonly any[];\n\nexport type UseQueryResult<\n TData = unknown,\n TError = unknown,\n TParams = void,\n TSelectData = TData,\n Stateless extends true | undefined = undefined,\n> = {\n error: TError | null;\n status: QueryStatus;\n refetch: (params: TParams | void | undefined) => Promise<void>;\n reset: () => void;\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n} & (Stateless extends true ? {} : WithData<TSelectData>);\n\nfunction normalizeQueryKey(queryKey: TQueryKey): string {\n return JSON.stringify(queryKey);\n}\n\ntype TInternalCallbackRef<TData, TError, TSelectData> = {\n onError?: (error: TError) => Promise<void> | void;\n onSuccess?: (data: TData) => Promise<void> | void;\n onSettled?: (\n data: TData | undefined,\n error: TError | undefined\n ) => Promise<void> | void;\n compareOrThrow?: (data: TData) => boolean;\n select?: (data: TData) => TSelectData;\n};\n\ntype TInternalOptionsRef<TData> = {\n timeout?: number;\n enabled: boolean;\n refetchOnWindowFocus: boolean;\n refetchInterval: number;\n compareOrThrow?: (data: TData) => boolean;\n stateless?: boolean;\n};\n\nexport const useQuery = <\n TData = unknown,\n TError = unknown,\n TParams = void,\n TSelected = TData,\n Stateless extends true | undefined = undefined,\n>({\n queryFn,\n ...options\n}: QueryOptions<TData, TError, TParams, TSelected, Stateless>): UseQueryResult<\n TSelected,\n TError,\n TParams,\n TSelected,\n Stateless\n> => {\n const {\n enabled = true,\n refetchOnWindowFocus = false,\n refetchInterval = 0,\n initialData,\n select,\n onError,\n onSuccess,\n onSettled,\n timeout,\n compareOrThrow,\n stateless,\n key: queryKeyPassed,\n } = options;\n const queryKey = normalizeQueryKey(queryKeyPassed ?? []);\n const promiseResolutionInProgress = useRef(false);\n const lastFetchedAt = useRef<number | null>(null);\n const lastQueryKey = useRef<string | undefined>(undefined);\n const queryFnRef = useRef(queryFn);\n queryFnRef.current = queryFn;\n const internalCallbackRef = useRef<\n TInternalCallbackRef<TData, TError, TSelected>\n >({});\n internalCallbackRef.current = {\n onError,\n onSuccess,\n onSettled,\n compareOrThrow,\n select,\n };\n const internalOptionsRef = useRef<TInternalOptionsRef<TData>>({\n enabled,\n refetchOnWindowFocus,\n refetchInterval,\n compareOrThrow,\n stateless,\n timeout,\n });\n internalOptionsRef.current = {\n enabled,\n refetchOnWindowFocus,\n refetchInterval,\n compareOrThrow,\n stateless,\n timeout,\n };\n\n const [status, setStatus] = useState<QueryStatus>(() => {\n return \"idle\";\n });\n const [error, setError] = useState<TError | null>(null);\n const [data, setData] = useState<TData | undefined>(() => {\n if (initialData !== undefined) {\n if (typeof initialData === \"function\") {\n return (initialData as Functionize<TData>)();\n }\n\n return initialData as TData;\n }\n\n return undefined;\n });\n\n const handleSetData = useCallback((data: TData) => {\n if (internalOptionsRef.current.stateless) {\n return;\n }\n\n setData(data);\n }, []);\n\n const shouldRefetch = useCallback(() => {\n if (!internalOptionsRef.current.enabled) {\n return false;\n }\n\n if (lastFetchedAt.current === null) {\n return true;\n }\n\n return (\n new Date().getTime() - lastFetchedAt.current >\n internalOptionsRef.current?.refetchInterval\n );\n }, []);\n\n const refetch = useCallback(\n async (params: TParams | void | undefined = undefined) => {\n if (\n promiseResolutionInProgress.current ||\n !internalOptionsRef.current.enabled\n ) {\n return;\n }\n\n setStatus(\"loading\");\n setError(null);\n\n try {\n const promises: RacePromises<TData>[] = [\n queryFnRef.current(params),\n ...(internalOptionsRef.current.timeout\n ? [\n new Promise<RaceErrorReason>((resolve) =>\n setTimeout(\n () => resolve(\"timeout\"),\n internalOptionsRef.current.timeout\n )\n ),\n ]\n : []),\n ];\n\n promiseResolutionInProgress.current = true;\n const res = await Promise.race(promises);\n promiseResolutionInProgress.current = false;\n\n if (res === \"timeout\") {\n throw new Error(\"timeout\");\n }\n\n handleSetData(res);\n\n if (\n internalCallbackRef.current.compareOrThrow &&\n internalCallbackRef.current.compareOrThrow(res) === true\n ) {\n throw new Error(\"compareOrThrow\");\n }\n\n setStatus(\"success\");\n lastFetchedAt.current = new Date().getTime();\n internalCallbackRef.current.onSuccess?.(res);\n internalCallbackRef.current.onSettled?.(res, undefined);\n } catch (error: any) {\n setError(error);\n setStatus(\"error\");\n internalCallbackRef.current.onError?.(error);\n internalCallbackRef.current.onSettled?.(undefined, error);\n }\n },\n [handleSetData]\n );\n\n const reset = useCallback(() => {\n setData(undefined);\n setStatus(\"idle\");\n setError(null);\n refetch();\n }, [refetch]);\n\n useEffect(() => {\n if (enabled) {\n refetch();\n }\n }, [enabled, refetch, queryKey]);\n\n useEffect(() => {\n if (lastQueryKey.current === undefined) {\n lastQueryKey.current = queryKey;\n refetch();\n return;\n }\n\n if (queryKey !== lastQueryKey.current) {\n lastQueryKey.current = queryKey;\n refetch();\n }\n }, [queryKey, refetch, enabled]);\n\n useEffect(() => {\n if (refetchOnWindowFocus) {\n const queryHandleFocus = () => {\n if (shouldRefetch()) {\n refetch();\n }\n };\n\n window.addEventListener(\"focus\", queryHandleFocus);\n\n return () => {\n window.removeEventListener(\"focus\", queryHandleFocus);\n };\n }\n }, [refetchOnWindowFocus, refetch, shouldRefetch]);\n\n useEffect(() => {\n if (refetchInterval !== 0) {\n const interval = setInterval(\n () => {\n if (shouldRefetch()) {\n refetch();\n }\n },\n Math.max(refetchInterval, 1000)\n );\n\n return () => {\n clearInterval(interval);\n };\n }\n }, [refetch, refetchInterval, shouldRefetch]);\n\n return {\n data:\n select && data !== undefined\n ? select(data as TData)\n : (data as unknown as TSelected),\n error,\n status,\n refetch,\n reset,\n };\n};\n","/**\n * @fileoverview useSubscriptionCore\n * @name useSubscriptionCore.ts\n * @description useSubscriptionCore | This hook handle core subscription logic\n * and provides a way to subscribe and unsubscribe to a topic via any callback\n */\n\nimport { shallowEqual } from \"@pixotope/utils/comparison\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\ntype SubscriptionState = \"idle\" | \"subscribed\" | \"subscribing\";\nexport type MessageHandler<TMessage> = (message: TMessage) => void;\nexport type Connection = {\n acknowledge: () => void;\n};\nexport type SubscriptionCoreOptions<\n TData,\n TMessage = TData,\n Stateless extends true | undefined = undefined,\n> = {\n /**\n * @description Function that will be called when the message is received.\n */\n onMessage?: (message: TMessage) => void;\n /**\n * @description Function that will be called when the subscription is created.\n */\n onSubscribed?: (message: TMessage) => void;\n /**\n * @description Function that will be called when the subscription is created.\n */\n onError?: (error: TMessage) => void;\n /**\n * @description Whether the subscription is enabled.\n * @default true\n */\n enabled?: boolean;\n /**\n * @description Function that will be called to compare the message with the\n * previous message. If the function returns true, the message will be ignored.\n */\n compareOrThrow?: (data: TMessage) => boolean;\n /**\n * @description Function that will be called to select the data from the message.\n */\n select?: (data: TMessage) => TData;\n /**\n * @description Initial state of the subscription.\n * @default undefined\n */\n initialState?: TData;\n /**\n * @description Function that will be called when the subscription is created.\n */\n subscriberFn: (\n handler: MessageHandler<TMessage>,\n connection: Connection\n ) => () => void /** unsubscribe Fn */;\n /**\n * @description Whether the subscription is stateless. Data will not be\n * stored by the hook internally.\n * @default false\n */\n stateless?: Stateless;\n /**\n * @description Custom equality function for comparing data.\n * @default shallowEqual\n */\n isEqual?: <T = TData>(a: T, b: T) => boolean;\n};\n\ntype WithStatus = {\n status: SubscriptionState;\n};\n\ntype WithData<TData> = {\n data: TData;\n};\n\nexport type SubscriptionCoreReturnType<\n TData,\n Stateless extends true | undefined,\n> = {\n reSubscribe: () => void;\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n} & (Stateless extends true ? {} : WithStatus & WithData<TData>);\n\n/**\n * @description `useSubscriptionCore` | This hook handle core subscription logic\n * and provides a way to subscribe and unsubscribe to a topic via any callback.\n * The hook expose a handler function. All the consumer code need to do is to\n * call this handler function with the message received from the topic or pass\n * it directly to the callback function that is passed to the subscriberFn.\n * - `status` - current status of the subscription\n * - `data` - the data after the select function is applied to the message\n * - `reSubscribe` - function that can be called to re-subscribe to the topic\n *\n * An example how this hook works can be found in {@link ./useSubscription.ts}\n */\nexport function useSubscriptionCore<\n TData = unknown,\n TMessage = TData,\n Stateless extends true | undefined = undefined,\n>(\n options: SubscriptionCoreOptions<TData, TMessage, Stateless>\n): SubscriptionCoreReturnType<TData, Stateless> {\n const {\n enabled = true,\n initialState = undefined,\n onSubscribed,\n stateless,\n compareOrThrow,\n subscriberFn,\n onMessage,\n onError,\n select,\n isEqual = shallowEqual,\n } = options;\n const [status, setStatus] = useState<SubscriptionState>(\"idle\");\n const [data, setData] = useState<TData | undefined>(initialState);\n const unsubcribeRef = useRef<() => void | undefined>(undefined);\n const initialStateRef = useRef(initialState);\n const subscriberFnRef = useRef(subscriberFn);\n const callbackRefRegistry = <const>{\n onMessage,\n onError,\n select,\n compareOrThrow,\n onSubscribed,\n isEqual,\n };\n const internalCallbacksRef = useRef(callbackRefRegistry);\n internalCallbacksRef.current = callbackRefRegistry;\n\n const updateStatus = useCallback(\n (newStatus: SubscriptionState, message?: TMessage) => {\n if (stateless) {\n return;\n }\n\n setStatus((prev) => {\n if (prev === newStatus) {\n return prev;\n }\n\n if (newStatus === \"subscribed\" && message) {\n internalCallbacksRef.current.onSubscribed?.(message);\n }\n\n return newStatus;\n });\n },\n [stateless]\n );\n\n const connection: Connection = useMemo(\n () => ({\n acknowledge: () => {\n updateStatus(\"subscribed\");\n },\n }),\n [updateStatus]\n );\n\n const handler = useCallback(\n async (message: TMessage) => {\n if (internalCallbacksRef.current.compareOrThrow?.(message)) {\n internalCallbacksRef.current.onError?.(message);\n\n return;\n }\n\n const selectedMessage = <TData>(\n (internalCallbacksRef.current.select?.(message) ?? message)\n );\n\n if (!stateless) {\n setData((prev) => {\n if (isEqual(prev, selectedMessage)) {\n return prev;\n }\n\n return selectedMessage;\n });\n }\n\n updateStatus(\"subscribed\", message);\n internalCallbacksRef.current.onMessage?.(message);\n },\n [stateless, updateStatus]\n );\n\n const unsubscribe = useCallback(() => {\n updateStatus(\"idle\");\n unsubcribeRef.current?.();\n unsubcribeRef.current = undefined;\n }, [updateStatus]);\n\n const subscribe = useCallback(() => {\n unsubcribeRef.current?.();\n updateStatus(\"subscribing\");\n setData(initialStateRef.current);\n unsubcribeRef.current = subscriberFnRef.current(handler, connection);\n }, [connection, handler, updateStatus]);\n\n useEffect(() => {\n if (enabled) {\n subscribe();\n } else {\n unsubscribe();\n }\n\n return () => {\n unsubscribe();\n };\n }, [enabled, subscribe, unsubscribe]);\n\n return {\n status,\n data,\n reSubscribe: subscribe,\n } as unknown as any;\n}\n","import type { ZMQProxyWSClient } from \"@pixotope/zmq-client\";\nimport {\n SubscriptionCoreOptions,\n useSubscriptionCore,\n} from \"./useSubscriptionCore\";\n\nexport type SubscriptionOptions<\n TData,\n TMessage = unknown,\n Stateless extends true | undefined = undefined,\n> = Omit<\n SubscriptionCoreOptions<TData, TMessage, Stateless>,\n \"subscriberFn\"\n> & {\n service: string;\n topic: string;\n maxDownwardDepth?: number;\n};\n\nexport type TSubscriptionHandlerFunction<TMessage> = (opts: {\n service: string;\n name: string;\n callback: (message: TMessage) => void;\n maxDownwardDepth?: number;\n}) => () => void;\n\nexport function useSubscription<\n TData = unknown,\n TMessage = TData,\n Stateless extends true | undefined = undefined,\n>(\n subscriptionHandler: TSubscriptionHandlerFunction<TMessage>,\n options: SubscriptionOptions<TData, TMessage, Stateless>\n) {\n const { topic, service, maxDownwardDepth = 1000 } = options;\n\n return useSubscriptionCore<TData, TMessage, Stateless>({\n ...options,\n subscriberFn: (handler) => {\n const unsubscribe = subscriptionHandler({\n service,\n name: topic,\n callback: (message: TMessage) => {\n handler(message);\n },\n maxDownwardDepth,\n });\n\n return unsubscribe;\n },\n });\n}\n\nexport function buildServiceSubscriptionHook(\n subscriptionHandler: TSubscriptionHandlerFunction<unknown>,\n targetMachine: (machine: string | undefined) => string\n) {\n return function useSubscriptionBuilder<\n TData,\n TMessage = TData,\n Stateless extends true | undefined = undefined,\n >(\n options: Omit<\n SubscriptionOptions<TData, TMessage, Stateless>,\n \"service\"\n > & {\n machine?: string;\n }\n ) {\n const targetService = targetMachine(options.machine);\n return useSubscription<TData, TMessage, Stateless>(\n <TSubscriptionHandlerFunction<TMessage>>subscriptionHandler,\n {\n service: targetService,\n ...options,\n }\n );\n };\n}\n\nexport function bindClientSocketProxy(socketClientProxy: ZMQProxyWSClient) {\n return (\n ...args: Parameters<Parameters<typeof buildServiceSubscriptionHook>[0]>\n ) => socketClientProxy.mirror(...args)[0];\n}\n"],"mappings":"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","names":["exports","module","__defProp","__getOwnPropDesc","__getOwnPropNames","__hasOwnProp","__export","__copyProps","__toCommonJS","shallowEqual","import_react","params","error","options","import_react","data","_a","_b","error","import_react"]}
1
+ {"version":3,"sources":["../../utils/dist/comparison/index.js","../src/index.ts","../src/factories.ts","../src/useMutation.ts","../src/useQuery.ts","../src/useSubscriptionCore.ts","../src/useSubscription.ts","../src/proxyBinders.ts"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/comparison/index.ts\nvar comparison_exports = {};\n__export(comparison_exports, {\n shallowEqual: () => shallowEqual\n});\nmodule.exports = __toCommonJS(comparison_exports);\n\n// src/comparison/shallowEqual.ts\nfunction shallowEqual(objA, objB) {\n if (Object.is(objA, objB)) {\n return true;\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n if (objA instanceof Map && objB instanceof Map) {\n if (objA.size !== objB.size) return false;\n for (const [key, value] of objA) {\n if (!Object.is(value, objB.get(key))) {\n return false;\n }\n }\n return true;\n }\n if (objA instanceof Set && objB instanceof Set) {\n if (objA.size !== objB.size) return false;\n for (const value of objA) {\n if (!objB.has(value)) {\n return false;\n }\n }\n return true;\n }\n const keysA = Object.keys(objA);\n if (keysA.length !== Object.keys(objB).length) {\n return false;\n }\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !Object.is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n shallowEqual\n});\n","export * from \"./factories\";\nexport * from \"./useSubscription\";\nexport * from \"./useQuery\";\nexport * from \"./useMutation\";\nexport * from \"./useSubscriptionCore\";\nexport * from \"./proxyBinders\";\n","import type { TSocketServerCallOptions, ZMQClient } from \"@pixotope/zmq-client\";\nimport { useCallback, useMemo } from \"react\";\nimport { MutationOptions, useMutation } from \"./useMutation\";\nimport { QueryOptions, useQuery } from \"./useQuery\";\n\nexport type MutationInfo<TData, TError, TParams> = {\n data: TData;\n error: TError;\n params: TParams;\n};\n\ntype FnToParamsBase = Record<string, MutationInfo<unknown, unknown, unknown>>;\n\nexport type TPromiseFunction<TResponse, TParams> = (\n args: Omit<\n ZMQClient.Call<\n TResponse,\n {\n functionName: string;\n parameters: TParams;\n options?: Omit<TSocketServerCallOptions, \"toCallIfNoResponse\">;\n }\n >,\n \"id\"\n >\n) => Promise<TResponse>;\n\nconst useCallMutationBase = <\n TFnToParams extends FnToParamsBase,\n TData = unknown,\n TError = unknown,\n TParams = unknown,\n>(\n promiseFunc: TPromiseFunction<TData, TParams>,\n functionName: keyof TFnToParams,\n service: string,\n options?: Omit<MutationOptions<TData, TError, TParams>, \"mutationFn\"> & {\n avoidTimeout?: boolean;\n customTimeout?: number;\n }\n) => {\n const {\n avoidTimeout = true,\n customTimeout = undefined,\n ...rest\n } = useMemo(() => options ?? {}, [options]);\n const mutationFn = useCallback(\n async (parameters: TParams) => {\n try {\n return await promiseFunc({\n service,\n functionName: functionName.toString(),\n parameters,\n options: {\n avoidTimeout,\n customTimeout,\n },\n });\n } catch (e: any) {\n throw e.message;\n }\n },\n [avoidTimeout, customTimeout, functionName, service]\n );\n\n return useMutation<TData, TError, TParams>({\n mutationFn,\n ...rest,\n });\n};\n\nexport function buildMutationHook<TFnToParams extends FnToParamsBase>(\n promiseFunc: TPromiseFunction<unknown, unknown>,\n genTargetService: (machine: string | undefined) => string\n) {\n return function useCallMutationBuilder<TFn extends keyof TFnToParams>(\n func: TFn,\n options?: Parameters<\n typeof useCallMutationBase<\n TFnToParams,\n TFnToParams[TFn][\"data\"],\n TFnToParams[TFn][\"error\"],\n TFnToParams[TFn][\"params\"]\n >\n >[3] & { machine?: string }\n ) {\n const targetService = genTargetService(options?.machine);\n\n return useCallMutationBase<\n TFnToParams,\n TFnToParams[TFn][\"data\"],\n TFnToParams[TFn][\"error\"],\n TFnToParams[TFn][\"params\"]\n >(promiseFunc, func, targetService, options);\n };\n}\n\nconst useCallQueryBase = <\n TFnToParams extends FnToParamsBase,\n TData = unknown,\n TError = unknown,\n TParams = unknown,\n TSelect = TData,\n>(\n promiseFunction: TPromiseFunction<TData, TParams>,\n functionName: keyof TFnToParams,\n params: TParams,\n service: string,\n options?: Omit<QueryOptions<TData, TError, TParams, TSelect>, \"queryFn\"> & {\n avoidTimeout?: boolean;\n customTimeout?: number;\n }\n) => {\n const {\n avoidTimeout = true,\n customTimeout = undefined,\n ...rest\n } = useMemo(() => options ?? {}, [options]);\n const queryFn = useCallback(\n async (refetchParams: TParams | void, overrideTargetMachine?: string) => {\n try {\n return await promiseFunction({\n service: overrideTargetMachine ?? service,\n functionName: functionName.toString(),\n parameters: refetchParams ?? params,\n options: {\n avoidTimeout,\n customTimeout,\n },\n });\n } catch (e) {\n if (e instanceof Error) {\n throw e;\n }\n throw new Error(e as string);\n }\n },\n [avoidTimeout, customTimeout, functionName, service, params]\n );\n\n return useQuery<TData, TError, TParams, TSelect>({\n queryFn,\n ...rest,\n });\n};\n\nexport function buildQueryHook<TFnToParams extends FnToParamsBase>(\n promiseFunction: TPromiseFunction<unknown, unknown>,\n getTargetService: (machine: string | undefined) => string\n) {\n return function useCallQueryBuilder<\n TFn extends keyof TFnToParams,\n TSelect = TFnToParams[TFn][\"data\"],\n >(\n func: TFn,\n params: TFnToParams[TFn][\"params\"],\n options?: Parameters<\n typeof useCallQueryBase<\n TFnToParams,\n TFnToParams[TFn][\"data\"],\n TFnToParams[TFn][\"error\"],\n TFnToParams[TFn][\"params\"],\n TSelect\n >\n >[4] & { machine?: string }\n ) {\n const targetService = getTargetService(options?.machine);\n\n return useCallQueryBase<\n TFnToParams,\n TFnToParams[TFn][\"data\"],\n TFnToParams[TFn][\"error\"],\n TFnToParams[TFn][\"params\"],\n TSelect\n >(promiseFunction, func, params, targetService, options);\n };\n}\n","import { useCallback, useRef, useState } from \"react\";\n\nexport type MutationFunction<TData = unknown, TParams = unknown> = (\n params: TParams,\n overrideTargetMachine?: string\n) => Promise<TData>;\n\nexport interface MutationOptions<\n TData = unknown,\n TError = unknown,\n TParams = void,\n> {\n mutationFn: MutationFunction<TData, TParams>;\n params?: TParams;\n onSuccess?: (data: TData, variables: TParams) => Promise<unknown> | unknown;\n onError?: (error: TError, variables: TParams) => Promise<unknown> | unknown;\n onSettled?: (\n data: TData | undefined,\n error: TError | null,\n variables: TParams\n ) => Promise<unknown> | unknown;\n compareOrThrow?: (result: TData | TError) => boolean;\n timeout?: number;\n prepareParams?: (variables: TParams, defaults?: TParams) => TParams;\n}\n\nexport interface MutateOptions<\n TData = unknown,\n TError = unknown,\n TParams = void,\n> {\n onSuccess?: (data: TData, variables: TParams) => void;\n onError?: (error: TError, variables: TParams) => void;\n onSettled?: (\n data: TData | undefined,\n error: TError | null,\n variables: TParams\n ) => void;\n}\n\ntype MutationStatus = \"idle\" | \"loading\" | \"success\" | \"error\";\ntype RaceErrorReason = \"timeout\";\ntype RacePromises<T> = Promise<T | RaceErrorReason>;\n\nexport class ComparisonFailError<TPayload = unknown> extends Error {\n public readonly payload: TPayload;\n\n constructor(message: string, payload: TPayload) {\n super(message);\n this.name = this.constructor.name;\n this.payload = payload;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ComparisonFailError);\n }\n }\n}\n\n/**\n * `useMutation` is a hook that allows you to perform a mutation/push updates to the services while\n * providing extensive API to tap into the status and results of the mutation.\n * @param mutationFn The mutation function to be called when the `mutate` function is called.\n * `useMutation` does not care about what the function does, all it needs it a function that returns\n * a promise.\n * @param options Options to configure the mutation.\n * @returns An object with the following properties:\n * - `mutateAsync`: A function that takes in the variables and returns a promise that resolves to the\n * result of the mutation. This function can be awaited to get the result of the mutation. Callbacks can\n * be passed to this function to be called when the mutation is successful or when it fails. It's good idea\n * to wrap this function in a try/catch block.\n * - `mutate`: A function that takes in the variables and returns nothing. This function does not\n * return a promise. Callbacks can be passed to this function to be called when the mutation is\n * successful or when it fails.\n * - `status`: The status of the mutation. Can be one of `idle`, `loading`, `success` or `error`.\n * - `result`: The result of the mutation. This is undefined until the mutation is successful.\n * - `reset`: A function that resets the mutation to the initial state.\n * - `error`: The error object if the mutation has failed.\n * @example\n * ```typescript\n * const mutationRes = useMutation({\n * mutationFn: (variables) => {\n * return ZMQHelper.callSomethingAsync(variables)\n * },\n * onSuccess: (data) => {\n * // do something with the result\n * },\n * onError: (error) => {\n * // do something with the error\n * },\n * onSettled: (data, error) => {\n * // do something when the mutation is done\n * }});\n *\n * // call the mutation\n * const res = await mutationRes.mutateAsync({ foo: \"bar\" });\n * // OR\n * mutationRes.mutate({ foo: \"bar\" }, {\n * onSuccess: (data) => {\n * // do something with the result\n * // for example show a toast message\n * // stop local loading state\n * });\n * ```\n */\nexport const useMutation = <TData = unknown, TError = unknown, TParams = void>(\n options: MutationOptions<TData, TError, TParams>\n) => {\n const {\n mutationFn,\n compareOrThrow,\n onError,\n onSettled,\n onSuccess,\n prepareParams,\n params,\n timeout,\n } = options;\n const [status, setStatus] = useState<MutationStatus>(\"idle\");\n const [error, setError] = useState<TError | null>(null);\n const [result, setResult] = useState<TData | undefined>(undefined);\n const mutationFnRef = useRef(mutationFn);\n const internalOptionsRef = useRef({\n params,\n timeout,\n });\n const internalCallbackRefistry = <const>{\n onSuccess,\n onError,\n onSettled,\n compareOrThrow,\n prepareParams,\n };\n const internalCallbackRef = useRef(internalCallbackRefistry);\n internalCallbackRef.current = internalCallbackRefistry;\n\n const mutateAsync = useCallback(\n async (params: TParams, overrideTargetMachine?: string) => {\n setStatus(\"loading\");\n setError(null);\n\n try {\n const promises: RacePromises<TData>[] = [\n mutationFnRef.current(\n internalCallbackRef.current.prepareParams\n ? internalCallbackRef.current.prepareParams(\n params,\n internalOptionsRef.current.params\n )\n : params,\n overrideTargetMachine\n ),\n ...(internalOptionsRef.current.timeout\n ? [\n new Promise<RaceErrorReason>((resolve) =>\n setTimeout(\n () => resolve(\"timeout\"),\n internalOptionsRef.current.timeout\n )\n ),\n ]\n : []),\n ];\n\n const res = await Promise.race(promises);\n\n if (res === \"timeout\") {\n throw new Error(\"timeout\");\n }\n\n if (internalCallbackRef.current.compareOrThrow?.(res)) {\n throw new ComparisonFailError(JSON.stringify(res), res);\n }\n\n setResult(res);\n setStatus(\"success\");\n\n internalCallbackRef.current.onSuccess?.(res, params);\n internalCallbackRef.current.onSettled?.(res, null, params);\n\n return res;\n } catch (error: any) {\n setError(error);\n setStatus(\"error\");\n\n if (internalCallbackRef.current.onError) {\n internalCallbackRef.current.onError(error, params);\n }\n\n if (internalCallbackRef.current.onSettled) {\n internalCallbackRef.current.onSettled(undefined, error, params);\n }\n\n throw error;\n }\n },\n []\n );\n\n const mutate = useCallback(\n (\n variables: TParams,\n options?: MutateOptions<TData, TError, TParams> & {\n overrideTargetMachine?: string;\n }\n ) => {\n mutateAsync(variables, options?.overrideTargetMachine).then(\n (data) => {\n options?.onSuccess?.(data, variables);\n options?.onSettled?.(data, null, variables);\n },\n (error) => {\n options?.onError?.(error, variables);\n options?.onSettled?.(undefined, error, variables);\n }\n );\n },\n [mutateAsync]\n );\n\n return {\n mutateAsync,\n status,\n result,\n mutate,\n reset: () => setStatus(\"idle\"),\n error,\n };\n};\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\nexport interface QueryOptions<\n TData = unknown,\n TError = unknown,\n TParams = void,\n TSelectData = TData,\n Stateless extends true | undefined = undefined,\n> {\n queryFn: (params: TParams | undefined | void) => Promise<TData>;\n onSuccess?: (data: TData) => Promise<void> | void;\n onError?: (error: TError) => Promise<void> | void;\n onSettled?: (\n data: TData | undefined,\n error: TError | undefined\n ) => Promise<void> | void;\n timeout?: number;\n enabled?: boolean;\n initialData?: TData | Functionize<TData>;\n select?: (data: TData) => TSelectData;\n refetchOnWindowFocus?: boolean;\n refetchInterval?: number;\n compareOrThrow?: (data: TData) => boolean;\n stateless?: Stateless;\n key?: TQueryKey;\n}\n\ntype Functionize<T> = () => T;\ntype QueryStatus = \"idle\" | \"loading\" | \"success\" | \"error\" | \"timeout\";\ntype RaceErrorReason = \"timeout\";\ntype RacePromises<T> = Promise<T | RaceErrorReason>;\ntype WithData<TData> = { data: TData | undefined };\ntype TQueryKey = readonly any[];\n\nexport type UseQueryResult<\n TData = unknown,\n TError = unknown,\n TParams = void,\n TSelectData = TData,\n Stateless extends true | undefined = undefined,\n> = {\n error: TError | null;\n status: QueryStatus;\n refetch: (params: TParams | void | undefined) => Promise<void>;\n reset: () => void;\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n} & (Stateless extends true ? {} : WithData<TSelectData>);\n\nfunction normalizeQueryKey(queryKey: TQueryKey): string {\n return JSON.stringify(queryKey);\n}\n\ntype TInternalCallbackRef<TData, TError, TSelectData> = {\n onError?: (error: TError) => Promise<void> | void;\n onSuccess?: (data: TData) => Promise<void> | void;\n onSettled?: (\n data: TData | undefined,\n error: TError | undefined\n ) => Promise<void> | void;\n compareOrThrow?: (data: TData) => boolean;\n select?: (data: TData) => TSelectData;\n};\n\ntype TInternalOptionsRef<TData> = {\n timeout?: number;\n enabled: boolean;\n refetchOnWindowFocus: boolean;\n refetchInterval: number;\n compareOrThrow?: (data: TData) => boolean;\n stateless?: boolean;\n};\n\nconst getRandomUUID = () => Math.random().toString(36).substring(2, 15);\n\nexport const useQuery = <\n TData = unknown,\n TError = unknown,\n TParams = void,\n TSelected = TData,\n Stateless extends true | undefined = undefined,\n>({\n queryFn,\n ...options\n}: QueryOptions<TData, TError, TParams, TSelected, Stateless>): UseQueryResult<\n TSelected,\n TError,\n TParams,\n TSelected,\n Stateless\n> => {\n const {\n enabled = true,\n refetchOnWindowFocus = false,\n refetchInterval = 0,\n initialData,\n select,\n onError,\n onSuccess,\n onSettled,\n timeout,\n compareOrThrow,\n stateless,\n key: queryKeyPassed,\n } = options;\n const queryKey = normalizeQueryKey(queryKeyPassed ?? []);\n const lastFetchedAt = useRef<number | null>(null);\n const lastQueryKey = useRef<string | undefined>(undefined);\n const queryFnRef = useRef(queryFn);\n queryFnRef.current = queryFn;\n const internalCallbackRef = useRef<\n TInternalCallbackRef<TData, TError, TSelected>\n >({});\n internalCallbackRef.current = {\n onError,\n onSuccess,\n onSettled,\n compareOrThrow,\n select,\n };\n const internalOptionsRef = useRef<TInternalOptionsRef<TData>>({\n enabled,\n refetchOnWindowFocus,\n refetchInterval,\n compareOrThrow,\n stateless,\n timeout,\n });\n internalOptionsRef.current = {\n enabled,\n refetchOnWindowFocus,\n refetchInterval,\n compareOrThrow,\n stateless,\n timeout,\n };\n const requestIdRef = useRef(getRandomUUID());\n\n const [status, setStatus] = useState<QueryStatus>(() => {\n return \"idle\";\n });\n const [error, setError] = useState<TError | null>(null);\n const [data, setData] = useState<TData | undefined>(() => {\n if (initialData !== undefined) {\n if (typeof initialData === \"function\") {\n return (initialData as Functionize<TData>)();\n }\n\n return initialData as TData;\n }\n\n return undefined;\n });\n\n const handleSetData = useCallback((data: TData) => {\n if (internalOptionsRef.current.stateless) {\n return;\n }\n\n setData(data);\n }, []);\n\n const shouldRefetch = useCallback(() => {\n if (!internalOptionsRef.current.enabled) {\n return false;\n }\n\n if (lastFetchedAt.current === null) {\n return true;\n }\n\n return (\n new Date().getTime() - lastFetchedAt.current >\n internalOptionsRef.current?.refetchInterval\n );\n }, []);\n\n const refetch = useCallback(\n async (params: TParams | void | undefined = undefined) => {\n const requestId = getRandomUUID();\n requestIdRef.current = requestId;\n if (!internalOptionsRef.current.enabled) {\n return;\n }\n\n setStatus(\"loading\");\n setError(null);\n\n try {\n const promises: RacePromises<TData>[] = [\n queryFnRef.current(params),\n ...(internalOptionsRef.current.timeout\n ? [\n new Promise<RaceErrorReason>((resolve) =>\n setTimeout(\n () => resolve(\"timeout\"),\n internalOptionsRef.current.timeout\n )\n ),\n ]\n : []),\n ];\n\n const res = await Promise.race(promises);\n if (requestIdRef.current !== requestId) {\n return;\n }\n\n if (res === \"timeout\") {\n throw new Error(\"timeout\");\n }\n\n handleSetData(res);\n\n if (\n internalCallbackRef.current.compareOrThrow &&\n internalCallbackRef.current.compareOrThrow(res) === true\n ) {\n throw new Error(\"compareOrThrow\");\n }\n\n setStatus(\"success\");\n lastFetchedAt.current = new Date().getTime();\n internalCallbackRef.current.onSuccess?.(res);\n internalCallbackRef.current.onSettled?.(res, undefined);\n } catch (error: any) {\n setError(error);\n setStatus(\"error\");\n internalCallbackRef.current.onError?.(error);\n internalCallbackRef.current.onSettled?.(undefined, error);\n }\n },\n [handleSetData]\n );\n\n const reset = useCallback(() => {\n setData(undefined);\n setStatus(\"idle\");\n setError(null);\n refetch();\n }, [refetch]);\n\n useEffect(() => {\n const cleanups: (() => void)[] = [];\n\n // If the query should be refetched on window focus, add a listener\n if (refetchOnWindowFocus) {\n const queryHandleFocus = () => {\n refetch();\n };\n\n window.addEventListener(\"focus\", queryHandleFocus);\n\n cleanups.push(() => {\n window.removeEventListener(\"focus\", queryHandleFocus);\n });\n }\n\n // If the query should be refetched on an interval, add an interval\n if (refetchInterval > 0) {\n const interval = setInterval(\n () => {\n if (shouldRefetch()) {\n refetch();\n }\n },\n Math.max(refetchInterval, 1000)\n );\n\n cleanups.push(() => {\n clearInterval(interval);\n });\n }\n\n // If the query key has changed, refetch\n if (\n lastQueryKey.current === undefined ||\n queryKey !== lastQueryKey.current\n ) {\n lastQueryKey.current = queryKey;\n refetch();\n }\n\n return () => {\n cleanups.forEach((cleanup) => cleanup());\n };\n }, [\n queryKey,\n enabled,\n refetchOnWindowFocus,\n refetchInterval,\n shouldRefetch,\n refetch,\n ]);\n\n return {\n data:\n select && data !== undefined\n ? select(data as TData)\n : (data as unknown as TSelected),\n error,\n status,\n refetch,\n reset,\n };\n};\n","/**\n * @fileoverview useSubscriptionCore\n * @name useSubscriptionCore.ts\n * @description useSubscriptionCore | This hook handle core subscription logic\n * and provides a way to subscribe and unsubscribe to a topic via any callback\n */\n\nimport { shallowEqual } from \"@pixotope/utils/comparison\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\ntype SubscriptionState = \"idle\" | \"subscribed\" | \"subscribing\";\nexport type MessageHandler<TMessage> = (message: TMessage) => void;\nexport type Connection = {\n acknowledge: () => void;\n};\nexport type SubscriptionCoreOptions<\n TData,\n TMessage = TData,\n Stateless extends true | undefined = undefined,\n> = {\n /**\n * @description Function that will be called when the message is received.\n */\n onMessage?: (message: TMessage) => void;\n /**\n * @description Function that will be called when the subscription is created.\n */\n onSubscribed?: (message: TMessage) => void;\n /**\n * @description Function that will be called when the subscription is created.\n */\n onError?: (error: TMessage) => void;\n /**\n * @description Whether the subscription is enabled.\n * @default true\n */\n enabled?: boolean;\n /**\n * @description Function that will be called to compare the message with the\n * previous message. If the function returns true, the message will be ignored.\n */\n compareOrThrow?: (data: TMessage) => boolean;\n /**\n * @description Function that will be called to select the data from the message.\n */\n select?: (data: TMessage) => TData;\n /**\n * @description Initial state of the subscription.\n * @default undefined\n */\n initialState?: TData;\n /**\n * @description Function that will be called when the subscription is created.\n */\n subscriberFn: (\n handler: MessageHandler<TMessage>,\n connection: Connection\n ) => () => void /** unsubscribe Fn */;\n /**\n * @description Whether the subscription is stateless. Data will not be\n * stored by the hook internally.\n * @default false\n */\n stateless?: Stateless;\n /**\n * @description Custom equality function for comparing data.\n * @default shallowEqual\n */\n isEqual?: <T = TData>(a: T, b: T) => boolean;\n};\n\ntype WithStatus = {\n status: SubscriptionState;\n};\n\ntype WithData<TData> = {\n data: TData;\n};\n\nexport type SubscriptionCoreReturnType<\n TData,\n Stateless extends true | undefined,\n> = {\n reSubscribe: () => void;\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n} & (Stateless extends true ? {} : WithStatus & WithData<TData>);\n\n/**\n * @description `useSubscriptionCore` | This hook handle core subscription logic\n * and provides a way to subscribe and unsubscribe to a topic via any callback.\n * The hook expose a handler function. All the consumer code need to do is to\n * call this handler function with the message received from the topic or pass\n * it directly to the callback function that is passed to the subscriberFn.\n * - `status` - current status of the subscription\n * - `data` - the data after the select function is applied to the message\n * - `reSubscribe` - function that can be called to re-subscribe to the topic\n *\n * An example how this hook works can be found in {@link ./useSubscription.ts}\n */\nexport function useSubscriptionCore<\n TData = unknown,\n TMessage = TData,\n Stateless extends true | undefined = undefined,\n>(\n options: SubscriptionCoreOptions<TData, TMessage, Stateless>\n): SubscriptionCoreReturnType<TData, Stateless> {\n const {\n enabled = true,\n initialState = undefined,\n onSubscribed,\n stateless,\n compareOrThrow,\n subscriberFn,\n onMessage,\n onError,\n select,\n isEqual = shallowEqual,\n } = options;\n const [status, setStatus] = useState<SubscriptionState>(\"idle\");\n const [data, setData] = useState<TData | undefined>(initialState);\n const unsubcribeRef = useRef<() => void | undefined>(undefined);\n const initialStateRef = useRef(initialState);\n const subscriberFnRef = useRef(subscriberFn);\n const callbackRefRegistry = <const>{\n onMessage,\n onError,\n select,\n compareOrThrow,\n onSubscribed,\n isEqual,\n };\n const internalCallbacksRef = useRef(callbackRefRegistry);\n internalCallbacksRef.current = callbackRefRegistry;\n\n const updateStatus = useCallback(\n (newStatus: SubscriptionState, message?: TMessage) => {\n if (stateless) {\n return;\n }\n\n setStatus((prev) => {\n if (prev === newStatus) {\n return prev;\n }\n\n if (newStatus === \"subscribed\" && message) {\n internalCallbacksRef.current.onSubscribed?.(message);\n }\n\n return newStatus;\n });\n },\n [stateless]\n );\n\n const connection: Connection = useMemo(\n () => ({\n acknowledge: () => {\n updateStatus(\"subscribed\");\n },\n }),\n [updateStatus]\n );\n\n const handler = useCallback(\n async (message: TMessage) => {\n if (internalCallbacksRef.current.compareOrThrow?.(message)) {\n internalCallbacksRef.current.onError?.(message);\n\n return;\n }\n\n const selectedMessage = <TData>(\n (internalCallbacksRef.current.select?.(message) ?? message)\n );\n\n if (!stateless) {\n setData((prev) => {\n if (isEqual(prev, selectedMessage)) {\n return prev;\n }\n\n return selectedMessage;\n });\n }\n\n updateStatus(\"subscribed\", message);\n internalCallbacksRef.current.onMessage?.(message);\n },\n [stateless, updateStatus]\n );\n\n const unsubscribe = useCallback(() => {\n updateStatus(\"idle\");\n unsubcribeRef.current?.();\n unsubcribeRef.current = undefined;\n }, [updateStatus]);\n\n const subscribe = useCallback(() => {\n unsubcribeRef.current?.();\n updateStatus(\"subscribing\");\n setData(initialStateRef.current);\n unsubcribeRef.current = subscriberFnRef.current(handler, connection);\n }, [connection, handler, updateStatus]);\n\n useEffect(() => {\n if (enabled) {\n subscribe();\n } else {\n unsubscribe();\n }\n\n return () => {\n unsubscribe();\n };\n }, [enabled, subscribe, unsubscribe]);\n\n return {\n status,\n data,\n reSubscribe: subscribe,\n } as unknown as any;\n}\n","import {\n SubscriptionCoreOptions,\n useSubscriptionCore,\n} from \"./useSubscriptionCore\";\n\nexport type SubscriptionOptions<\n TData,\n TMessage = unknown,\n Stateless extends true | undefined = undefined,\n> = Omit<\n SubscriptionCoreOptions<TData, TMessage, Stateless>,\n \"subscriberFn\"\n> & {\n service: string;\n topic: string;\n maxDownwardDepth?: number;\n};\n\nexport type TSubscriptionHandlerFunction<TMessage> = (opts: {\n service: string;\n name: string;\n callback: (message: TMessage) => void;\n maxDownwardDepth?: number;\n}) => () => void;\n\nexport function useSubscription<\n TData = unknown,\n TMessage = TData,\n Stateless extends true | undefined = undefined,\n>(\n subscriptionHandler: TSubscriptionHandlerFunction<TMessage>,\n options: SubscriptionOptions<TData, TMessage, Stateless>\n) {\n const { topic, service, maxDownwardDepth = 1000 } = options;\n\n return useSubscriptionCore<TData, TMessage, Stateless>({\n ...options,\n subscriberFn: (handler) => {\n const unsubscribe = subscriptionHandler({\n service,\n name: topic,\n callback: (message: TMessage) => {\n handler(message);\n },\n maxDownwardDepth,\n });\n\n return unsubscribe;\n },\n });\n}\n\nexport function buildServiceSubscriptionHook(\n subscriptionHandler: TSubscriptionHandlerFunction<unknown>,\n targetMachine: (machine: string | undefined) => string\n) {\n return function useSubscriptionBuilder<\n TData,\n TMessage = TData,\n Stateless extends true | undefined = undefined,\n >(\n options: Omit<\n SubscriptionOptions<TData, TMessage, Stateless>,\n \"service\"\n > & {\n machine?: string;\n }\n ) {\n const targetService = targetMachine(options.machine);\n return useSubscription<TData, TMessage, Stateless>(\n <TSubscriptionHandlerFunction<TMessage>>subscriptionHandler,\n {\n service: targetService,\n ...options,\n }\n );\n };\n}\n","import type { ZMQProxyWSClient } from \"@pixotope/zmq-client\";\nimport type { TPromiseFunction } from \"./factories\";\nimport type { buildServiceSubscriptionHook } from \"./useSubscription\";\n\nexport function bindClientSocketProxy(socketClientProxy: ZMQProxyWSClient) {\n return (\n ...args: Parameters<Parameters<typeof buildServiceSubscriptionHook>[0]>\n ) => {\n const { callback: cbHook, ...rest } = args[0];\n return socketClientProxy.mirror({\n ...rest,\n callback: (message) => {\n cbHook(message.message);\n },\n })[0];\n };\n}\n\nexport function bindPromiseFunction(clientSocketProxy: ZMQProxyWSClient) {\n return async (...args: Parameters<TPromiseFunction<unknown, unknown>>) => {\n const res = await clientSocketProxy.callAsync(...args);\n return res.message.Result;\n };\n}\n"],"mappings":"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","names":["exports","module","__defProp","__getOwnPropDesc","__getOwnPropNames","__hasOwnProp","__export","__copyProps","__toCommonJS","shallowEqual","import_react","params","error","options","import_react","data","_a","_b","error","import_react"]}