@openapi-qraft/react 1.0.0-beta.1 → 1.0.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +99 -57
  3. package/dist/QraftContext.d.ts +8 -0
  4. package/dist/QraftContext.d.ts.map +1 -0
  5. package/dist/QraftContext.js +3 -0
  6. package/dist/QraftContext.js.map +1 -0
  7. package/dist/RequestClient.d.ts +19 -0
  8. package/dist/RequestClient.d.ts.map +1 -0
  9. package/dist/RequestClient.js +2 -0
  10. package/dist/RequestClient.js.map +1 -0
  11. package/dist/ServiceOperation.d.ts +122 -0
  12. package/dist/ServiceOperation.d.ts.map +1 -0
  13. package/dist/ServiceOperation.js +2 -0
  14. package/dist/ServiceOperation.js.map +1 -0
  15. package/dist/callbacks/getInfiniteQueryData.d.ts +6 -0
  16. package/dist/callbacks/getInfiniteQueryData.d.ts.map +1 -0
  17. package/dist/callbacks/getInfiniteQueryData.js +8 -0
  18. package/dist/callbacks/getInfiniteQueryData.js.map +1 -0
  19. package/dist/callbacks/getInfiniteQueryKey.d.ts +8 -0
  20. package/dist/callbacks/getInfiniteQueryKey.d.ts.map +1 -0
  21. package/dist/callbacks/getInfiniteQueryKey.js +7 -0
  22. package/dist/callbacks/getInfiniteQueryKey.js.map +1 -0
  23. package/dist/callbacks/getMutationKey.d.ts +5 -0
  24. package/dist/callbacks/getMutationKey.d.ts.map +1 -0
  25. package/dist/callbacks/getMutationKey.js +22 -0
  26. package/dist/callbacks/getMutationKey.js.map +1 -0
  27. package/dist/callbacks/getQueryData.d.ts +5 -0
  28. package/dist/callbacks/getQueryData.d.ts.map +1 -0
  29. package/dist/callbacks/getQueryData.js +8 -0
  30. package/dist/callbacks/getQueryData.js.map +1 -0
  31. package/dist/callbacks/getQueryKey.d.ts +7 -0
  32. package/dist/callbacks/getQueryKey.d.ts.map +1 -0
  33. package/dist/callbacks/getQueryKey.js +4 -0
  34. package/dist/callbacks/getQueryKey.js.map +1 -0
  35. package/dist/callbacks/mutationFn.d.ts +4 -0
  36. package/dist/callbacks/mutationFn.d.ts.map +1 -0
  37. package/dist/callbacks/mutationFn.js +8 -0
  38. package/dist/callbacks/mutationFn.js.map +1 -0
  39. package/dist/callbacks/queryFn.d.ts +15 -0
  40. package/dist/callbacks/queryFn.d.ts.map +1 -0
  41. package/dist/callbacks/queryFn.js +10 -0
  42. package/dist/callbacks/queryFn.js.map +1 -0
  43. package/dist/callbacks/setInfiniteQueryData.d.ts +6 -0
  44. package/dist/callbacks/setInfiniteQueryData.d.ts.map +1 -0
  45. package/dist/callbacks/setInfiniteQueryData.js +6 -0
  46. package/dist/callbacks/setInfiniteQueryData.js.map +1 -0
  47. package/dist/callbacks/setQueryData.d.ts +5 -0
  48. package/dist/callbacks/setQueryData.d.ts.map +1 -0
  49. package/dist/callbacks/setQueryData.js +9 -0
  50. package/dist/callbacks/setQueryData.js.map +1 -0
  51. package/dist/callbacks/useInfiniteQuery.d.ts +13 -0
  52. package/dist/callbacks/useInfiniteQuery.d.ts.map +1 -0
  53. package/dist/callbacks/useInfiniteQuery.js +50 -0
  54. package/dist/callbacks/useInfiniteQuery.js.map +1 -0
  55. package/dist/callbacks/useMutation.d.ts +7 -0
  56. package/dist/callbacks/useMutation.d.ts.map +1 -0
  57. package/dist/callbacks/useMutation.js +51 -0
  58. package/dist/callbacks/useMutation.js.map +1 -0
  59. package/dist/callbacks/useQuery.d.ts +9 -0
  60. package/dist/callbacks/useQuery.d.ts.map +1 -0
  61. package/dist/callbacks/useQuery.js +27 -0
  62. package/dist/callbacks/useQuery.js.map +1 -0
  63. package/dist/index.d.ts +9 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +4 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/lib/createCallbackProxyDecoration.d.ts +5 -0
  68. package/dist/lib/createCallbackProxyDecoration.d.ts.map +1 -0
  69. package/dist/lib/createCallbackProxyDecoration.js +21 -0
  70. package/dist/lib/createCallbackProxyDecoration.js.map +1 -0
  71. package/dist/lib/createRecursiveProxy.d.ts +7 -0
  72. package/dist/lib/createRecursiveProxy.d.ts.map +1 -0
  73. package/dist/lib/createRecursiveProxy.js +24 -0
  74. package/dist/lib/createRecursiveProxy.js.map +1 -0
  75. package/dist/lib/request.d.ts +32 -0
  76. package/dist/lib/request.d.ts.map +1 -0
  77. package/dist/lib/request.js +167 -0
  78. package/dist/lib/request.js.map +1 -0
  79. package/dist/qraftAPIClient.d.ts +25 -0
  80. package/dist/qraftAPIClient.d.ts.map +1 -0
  81. package/dist/qraftAPIClient.js +22 -0
  82. package/dist/qraftAPIClient.js.map +1 -0
  83. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutationFn.js","sourceRoot":"","sources":["../../src/callbacks/mutationFn.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,YAA4C,EAC5C,MAA2B,EAC3B,IAAa,EACb,EAAE;IACF,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAOzB,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,EAAE;QACpB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { QraftClientOptions } from '../qraftAPIClient.js';
2
+ import type { RequestClientSchema } from '../RequestClient.js';
3
+ export declare const queryFn: (qraftOptions: QraftClientOptions | undefined, schema: RequestClientSchema, args: [options: {
4
+ signal?: AbortSignal | undefined;
5
+ meta?: Record<string, any> | undefined;
6
+ } & ({
7
+ queryKey: [unknown, never];
8
+ } | {
9
+ parameters: never;
10
+ }), client: (schema: RequestClientSchema, options: {
11
+ parameters: never;
12
+ signal?: AbortSignal | undefined;
13
+ meta?: Record<string, any> | undefined;
14
+ }) => Promise<unknown>]) => Promise<unknown>;
15
+ //# sourceMappingURL=queryFn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryFn.d.ts","sourceRoot":"","sources":["../../src/callbacks/queryFn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG/D,eAAO,MAAM,OAAO,iBACJ,kBAAkB,GAAG,SAAS,UACpC,mBAAmB;;;;;;;;;;;4CAc5B,CAAC"}
@@ -0,0 +1,10 @@
1
+ export const queryFn = (qraftOptions, schema, args) => {
2
+ const [options, client] = args;
3
+ const parameters = 'queryKey' in options ? options.queryKey[1] : options.parameters;
4
+ return client(schema, {
5
+ parameters,
6
+ meta: options.meta,
7
+ signal: options.signal,
8
+ });
9
+ };
10
+ //# sourceMappingURL=queryFn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryFn.js","sourceRoot":"","sources":["../../src/callbacks/queryFn.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,YAA4C,EAC5C,MAA2B,EAC3B,IAEC,EACD,EAAE;IACF,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC/B,MAAM,UAAU,GACd,UAAU,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAEnE,OAAO,MAAM,CAAC,MAAM,EAAE;QACpB,UAAU;QACV,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { InfiniteData } from '@tanstack/query-core';
2
+ import type { QraftClientOptions } from '../qraftAPIClient.js';
3
+ import type { RequestClientSchema } from '../RequestClient.js';
4
+ import type { ServiceOperationQuery } from '../ServiceOperation.js';
5
+ export declare function setInfiniteQueryData<TData>(qraftOptions: QraftClientOptions | undefined, schema: RequestClientSchema, args: Parameters<ServiceOperationQuery<RequestClientSchema, unknown, TData>['setInfiniteQueryData']>): InfiniteData<TData> | undefined;
6
+ //# sourceMappingURL=setInfiniteQueryData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setInfiniteQueryData.d.ts","sourceRoot":"","sources":["../../src/callbacks/setInfiniteQueryData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAEV,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAEhC,wBAAgB,oBAAoB,CAAC,KAAK,EACxC,YAAY,EAAE,kBAAkB,GAAG,SAAS,EAC5C,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,UAAU,CACd,qBAAqB,CACnB,mBAAmB,EACnB,OAAO,EACP,KAAK,CACN,CAAC,sBAAsB,CAAC,CAC1B,GACA,YAAY,CAAC,KAAK,CAAC,GAAG,SAAS,CASjC"}
@@ -0,0 +1,6 @@
1
+ export function setInfiniteQueryData(qraftOptions, schema, args) {
2
+ const [params, updater, queryClient, options] = args;
3
+ const queryKey = [{ url: schema.url, infinite: true }, params];
4
+ return queryClient.setQueryData(queryKey, updater, options);
5
+ }
6
+ //# sourceMappingURL=setInfiniteQueryData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setInfiniteQueryData.js","sourceRoot":"","sources":["../../src/callbacks/setInfiniteQueryData.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,oBAAoB,CAClC,YAA4C,EAC5C,MAA2B,EAC3B,IAMC;IAED,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAErD,MAAM,QAAQ,GAGV,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;IAElD,OAAO,WAAW,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAgB,EAAE,OAAO,CAAC,CAAC;AACvE,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { QraftClientOptions } from '../qraftAPIClient.js';
2
+ import type { RequestClientSchema } from '../RequestClient.js';
3
+ import { ServiceOperationQuery } from '../ServiceOperation.js';
4
+ export declare function setQueryData<TData>(qraftOptions: QraftClientOptions | undefined, schema: RequestClientSchema, args: Parameters<ServiceOperationQuery<RequestClientSchema, unknown, TData>['setQueryData']>): TData | undefined;
5
+ //# sourceMappingURL=setQueryData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setQueryData.d.ts","sourceRoot":"","sources":["../../src/callbacks/setQueryData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EACL,qBAAqB,EAEtB,MAAM,wBAAwB,CAAC;AAEhC,wBAAgB,YAAY,CAAC,KAAK,EAChC,YAAY,EAAE,kBAAkB,GAAG,SAAS,EAC5C,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,UAAU,CACd,qBAAqB,CAAC,mBAAmB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,cAAc,CAAC,CAC3E,GACA,KAAK,GAAG,SAAS,CASnB"}
@@ -0,0 +1,9 @@
1
+ export function setQueryData(qraftOptions, schema, args) {
2
+ const [params, updater, queryClient, options] = args;
3
+ const queryKey = [
4
+ { url: schema.url },
5
+ params,
6
+ ];
7
+ return queryClient.setQueryData(queryKey, updater, options);
8
+ }
9
+ //# sourceMappingURL=setQueryData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setQueryData.js","sourceRoot":"","sources":["../../src/callbacks/setQueryData.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,YAAY,CAC1B,YAA4C,EAC5C,MAA2B,EAC3B,IAEC;IAED,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAErD,MAAM,QAAQ,GAA2D;QACvE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE;QACnB,MAAM;KACP,CAAC;IAEF,OAAO,WAAW,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAgB,EAAE,OAAO,CAAC,CAAC;AACvE,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { DefaultError, InfiniteData } from '@tanstack/query-core';
2
+ import { UseInfiniteQueryResult } from '@tanstack/react-query';
3
+ import type { QraftClientOptions } from '../qraftAPIClient.js';
4
+ import type { RequestClientSchema } from '../RequestClient.js';
5
+ import { ServiceOperationQuery } from '../ServiceOperation.js';
6
+ export declare const useInfiniteQuery: <TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>>(qraftOptions: QraftClientOptions | undefined, schema: RequestClientSchema, args: Parameters<ServiceOperationQuery<RequestClientSchema, unknown, unknown>['useInfiniteQuery']>) => UseInfiniteQueryResult<TData, TError>;
7
+ /**
8
+ * Merges objects with provided depth
9
+ * @param depth
10
+ * @param args
11
+ */
12
+ export declare function shelfMerge<T>(depth?: number, ...args: T[]): T;
13
+ //# sourceMappingURL=useInfiniteQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInfiniteQuery.d.ts","sourceRoot":"","sources":["../../src/callbacks/useInfiniteQuery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAEL,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,eAAO,MAAM,gBAAgB,EAAE,CAC7B,YAAY,EACZ,MAAM,GAAG,YAAY,EACrB,KAAK,GAAG,YAAY,CAAC,YAAY,CAAC,EAElC,YAAY,EAAE,kBAAkB,GAAG,SAAS,EAC5C,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,UAAU,CACd,qBAAqB,CACnB,mBAAmB,EACnB,OAAO,EACP,OAAO,CACR,CAAC,kBAAkB,CAAC,CACtB,KACE,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAwBxC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,SAAI,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CA6BxD"}
@@ -0,0 +1,50 @@
1
+ import { useContext } from 'react';
2
+ import { useInfiniteQuery as useInfiniteQueryBase, } from '@tanstack/react-query';
3
+ import { QraftContext } from '../QraftContext.js';
4
+ export const useInfiniteQuery = (qraftOptions, schema, args) => {
5
+ const [params, options, ...restArgs] = args;
6
+ const requestClient = useContext(qraftOptions?.context ?? QraftContext)
7
+ ?.requestClient;
8
+ if (!requestClient)
9
+ throw new Error(`QraftContext.requestClient not found`);
10
+ return useInfiniteQueryBase({
11
+ ...options,
12
+ queryKey: [{ url: schema.url, infinite: true }, params],
13
+ queryFn: options?.queryFn ??
14
+ function ({ queryKey: [, queryParams], signal, meta, pageParam }) {
15
+ return requestClient(schema, {
16
+ parameters: shelfMerge(2, queryParams, pageParam),
17
+ signal,
18
+ meta,
19
+ });
20
+ },
21
+ }, ...restArgs);
22
+ };
23
+ /**
24
+ * Merges objects with provided depth
25
+ * @param depth
26
+ * @param args
27
+ */
28
+ export function shelfMerge(depth = 2, ...args) {
29
+ return args.reduce((acc, arg) => {
30
+ if (!arg || typeof arg !== 'object')
31
+ return acc;
32
+ Object.entries(arg).forEach(([key, value]) => {
33
+ if (typeof value !== 'object') {
34
+ acc[key] = value;
35
+ return;
36
+ }
37
+ if (Array.isArray(value)) {
38
+ acc[key] = value;
39
+ return;
40
+ }
41
+ if (depth > 1) {
42
+ acc[key] = shelfMerge(depth - 1, acc[key], value);
43
+ return;
44
+ }
45
+ acc[key] = value;
46
+ });
47
+ return acc;
48
+ }, {});
49
+ }
50
+ //# sourceMappingURL=useInfiniteQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInfiniteQuery.js","sourceRoot":"","sources":["../../src/callbacks/useInfiniteQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGnC,OAAO,EACL,gBAAgB,IAAI,oBAAoB,GAEzC,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlD,MAAM,CAAC,MAAM,gBAAgB,GAcgB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;IAC1E,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;IAE5C,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,IAAI,YAAY,CAAC;QACrE,EAAE,aAAa,CAAC;IAElB,IAAI,CAAC,aAAa;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAE5E,OAAO,oBAAoB,CACzB;QACE,GAAG,OAAO;QACV,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAe,CAAU;QACzE,OAAO,EACL,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC9D,OAAO,aAAa,CAAC,MAAM,EAAE;oBAC3B,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,CAAU;oBAC1D,MAAM;oBACN,IAAI;iBACL,CAAC,CAAC;YACL,CAAC;KACJ,EACD,GAAG,QAAQ,CACH,CAAC;AACb,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAI,KAAK,GAAG,CAAC,EAAE,GAAG,IAAS;IACnD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC;QAEhD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,GAAG,CAAC,GAAY,CAAC,GAAG,KAAc,CAAC;gBACnC,OAAO;YACT,CAAC;YAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,GAAG,CAAC,GAAY,CAAC,GAAG,KAAc,CAAC;gBACnC,OAAO;YACT,CAAC;YAED,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,GAAG,CAAC,GAAY,CAAC,GAAG,UAAU,CAC5B,KAAK,GAAG,CAAC,EACT,GAAG,CAAC,GAAY,CAAC,EACjB,KAAK,CACG,CAAC;gBACX,OAAO;YACT,CAAC;YAED,GAAG,CAAC,GAAY,CAAC,GAAG,KAAc,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAO,CAAC,CAAC;AACd,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { DefaultError } from '@tanstack/query-core';
2
+ import type { UseMutationResult } from '@tanstack/react-query';
3
+ import type { QraftClientOptions } from '../qraftAPIClient.js';
4
+ import type { RequestClientSchema } from '../RequestClient.js';
5
+ import { ServiceOperationMutation } from '../ServiceOperation.js';
6
+ export declare const useMutation: <TData = unknown, TError = DefaultError, TVariables = void, TContext = unknown>(qraftOptions: QraftClientOptions | undefined, schema: RequestClientSchema, args: Parameters<ServiceOperationMutation<RequestClientSchema, object | undefined, TVariables, TData>['useMutation']>) => UseMutationResult<TData, TError, TVariables, TContext>;
7
+ //# sourceMappingURL=useMutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMutation.d.ts","sourceRoot":"","sources":["../../src/callbacks/useMutation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EACL,wBAAwB,EAEzB,MAAM,wBAAwB,CAAC;AAEhC,eAAO,MAAM,WAAW,EAAE,CACxB,KAAK,GAAG,OAAO,EACf,MAAM,GAAG,YAAY,EACrB,UAAU,GAAG,IAAI,EACjB,QAAQ,GAAG,OAAO,EAElB,YAAY,EAAE,kBAAkB,GAAG,SAAS,EAC5C,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,UAAU,CACd,wBAAwB,CACtB,mBAAmB,EACnB,MAAM,GAAG,SAAS,EAClB,UAAU,EACV,KAAK,CACN,CAAC,aAAa,CAAC,CACjB,KACE,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAqEzD,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { useContext } from 'react';
2
+ import { useMutation as useMutationBase } from '@tanstack/react-query';
3
+ import { QraftContext } from '../QraftContext.js';
4
+ export const useMutation = (qraftOptions, schema, args) => {
5
+ const [parameters, options, ...restArgs] = args;
6
+ if (parameters &&
7
+ typeof parameters === 'object' &&
8
+ options &&
9
+ 'mutationKey' in options)
10
+ throw new Error(`'useMutation': parameters and 'options.mutationKey' cannot be used together`);
11
+ const requestClient = useContext(qraftOptions?.context ?? QraftContext)
12
+ ?.requestClient;
13
+ if (!requestClient)
14
+ throw new Error(`QraftContext.requestClient not found`);
15
+ const mutationKey = parameters && typeof parameters === 'object'
16
+ ? [
17
+ {
18
+ url: schema.url,
19
+ method: schema.method,
20
+ },
21
+ parameters,
22
+ ]
23
+ : options && 'mutationKey' in options
24
+ ? options.mutationKey
25
+ : [
26
+ {
27
+ url: schema.url,
28
+ method: schema.method,
29
+ },
30
+ ];
31
+ return useMutationBase({
32
+ ...options,
33
+ mutationKey,
34
+ mutationFn: options?.mutationFn ??
35
+ (parameters
36
+ ? function (bodyPayload) {
37
+ return requestClient(schema, {
38
+ parameters,
39
+ body: bodyPayload,
40
+ });
41
+ }
42
+ : function (parametersAndBodyPayload) {
43
+ const { body, ...parameters } = parametersAndBodyPayload;
44
+ return requestClient(schema, {
45
+ body,
46
+ parameters,
47
+ });
48
+ }),
49
+ }, ...restArgs);
50
+ };
51
+ //# sourceMappingURL=useMutation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMutation.js","sourceRoot":"","sources":["../../src/callbacks/useMutation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAInC,OAAO,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGvE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOlD,MAAM,CAAC,MAAM,WAAW,GAgBsC,CAC5D,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,EAAE;IACF,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;IAEhD,IACE,UAAU;QACV,OAAO,UAAU,KAAK,QAAQ;QAC9B,OAAO;QACP,aAAa,IAAI,OAAO;QAExB,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;IAEJ,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,IAAI,YAAY,CAAC;QACrE,EAAE,aAAa,CAAC;IAElB,IAAI,CAAC,aAAa;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAE5E,MAAM,WAAW,GACf,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ;QAC1C,CAAC,CAAE;YACC;gBACE,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB;YACD,UAAU;SACD;QACb,CAAC,CAAC,OAAO,IAAI,aAAa,IAAI,OAAO;YACnC,CAAC,CAAE,OAAO,CAAC,WAGP;YACJ,CAAC,CAAE;gBACC;oBACE,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB;aACQ,CAAC;IAEpB,OAAO,eAAe,CACpB;QACE,GAAG,OAAO;QACV,WAAW;QACX,UAAU,EACR,OAAO,EAAE,UAAU;YACnB,CAAC,UAAU;gBACT,CAAC,CAAC,UAAU,WAAW;oBACnB,OAAO,aAAa,CAAC,MAAM,EAAE;wBAC3B,UAAU;wBACV,IAAI,EAAE,WAAoB;qBAC3B,CAAC,CAAC;gBACL,CAAC;gBACH,CAAC,CAAC,UAAU,wBAAwB;oBAChC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,EAAE,GAAG,wBAE/B,CAAC;oBAEF,OAAO,aAAa,CAAC,MAAM,EAAE;wBAC3B,IAAI;wBACJ,UAAU;qBACF,CAAC,CAAC;gBACd,CAAC,CAAC;KACT,EACD,GAAG,QAAQ,CACH,CAAC;AACb,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { DefaultError } from '@tanstack/query-core';
2
+ import type { UseQueryResult } from '@tanstack/react-query';
3
+ import type { QraftClientOptions } from '../qraftAPIClient.js';
4
+ import type { RequestClientSchema } from '../RequestClient.js';
5
+ import { ServiceOperationQuery, ServiceOperationQueryKey } from '../ServiceOperation.js';
6
+ export declare const useQuery: <TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData>(qraftOptions: QraftClientOptions | undefined, schema: RequestClientSchema, args: Parameters<ServiceOperationQuery<RequestClientSchema, unknown, unknown>['useQuery']>) => UseQueryResult<TData, TError> & {
7
+ queryKey: ServiceOperationQueryKey<RequestClientSchema, unknown>;
8
+ };
9
+ //# sourceMappingURL=useQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useQuery.d.ts","sourceRoot":"","sources":["../../src/callbacks/useQuery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAEhC,eAAO,MAAM,QAAQ,EAAE,CACrB,YAAY,GAAG,OAAO,EACtB,MAAM,GAAG,YAAY,EACrB,KAAK,GAAG,YAAY,EAEpB,YAAY,EAAE,kBAAkB,GAAG,SAAS,EAC5C,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,UAAU,CACd,qBAAqB,CAAC,mBAAmB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,CACzE,KACE,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG;IACnC,QAAQ,EAAE,wBAAwB,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;CA8BlE,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { useContext } from 'react';
2
+ import { useQuery as useQueryBase } from '@tanstack/react-query';
3
+ import { QraftContext } from '../QraftContext.js';
4
+ export const useQuery = (qraftOptions, schema, args) => {
5
+ const [params, options, ...restArgs] = args;
6
+ const requestClient = useContext(qraftOptions?.context ?? QraftContext)
7
+ ?.requestClient;
8
+ if (!requestClient)
9
+ throw new Error(`QraftContext.requestClient not found`);
10
+ const queryKey = [
11
+ { url: schema.url },
12
+ params,
13
+ ];
14
+ return useQueryBase({
15
+ ...options,
16
+ queryKey,
17
+ queryFn: options?.queryFn ??
18
+ function ({ queryKey: [, queryParams], signal, meta }) {
19
+ return requestClient(schema, {
20
+ parameters: queryParams,
21
+ signal,
22
+ meta,
23
+ });
24
+ },
25
+ }, ...restArgs);
26
+ };
27
+ //# sourceMappingURL=useQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useQuery.js","sourceRoot":"","sources":["../../src/callbacks/useQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAInC,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGjE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOlD,MAAM,CAAC,MAAM,QAAQ,GAYjB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;IACjC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;IAE5C,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,IAAI,YAAY,CAAC;QACrE,EAAE,aAAa,CAAC;IAElB,IAAI,CAAC,aAAa;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAE5E,MAAM,QAAQ,GAA2D;QACvE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE;QACnB,MAAM;KACP,CAAC;IAEF,OAAO,YAAY,CACjB;QACE,GAAG,OAAO;QACV,QAAQ;QACR,OAAO,EACL,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;gBACnD,OAAO,aAAa,CAAC,MAAM,EAAE;oBAC3B,UAAU,EAAE,WAAoB;oBAChC,MAAM;oBACN,IAAI;iBACL,CAAC,CAAC;YACL,CAAC;KACJ,EACD,GAAG,QAAQ,CACH,CAAC;AACb,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { qraftAPIClient } from './qraftAPIClient.js';
2
+ export type { QraftClientOptions } from './qraftAPIClient.js';
3
+ export { QraftContext } from './QraftContext.js';
4
+ export type { QraftContextValue } from './QraftContext.js';
5
+ export { request, urlSerializer, bodySerializer } from './lib/request.js';
6
+ export type { APIRequestInit, HeadersOptions } from './lib/request.js';
7
+ export type { ServiceOperationQuery, ServiceOperationMutation, } from './ServiceOperation.js';
8
+ export type { RequestClient } from './RequestClient.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC1E,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvE,YAAY,EACV,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export { qraftAPIClient } from './qraftAPIClient.js';
2
+ export { QraftContext } from './QraftContext.js';
3
+ export { request, urlSerializer, bodySerializer } from './lib/request.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Create proxy for decorating procedures
3
+ */
4
+ export declare function createCallbackProxyDecoration<Functions extends string[] | Readonly<string[]>>(functions: Functions, callback: (path: string[], functionName: Functions[number], args: unknown[]) => unknown): unknown;
5
+ //# sourceMappingURL=createCallbackProxyDecoration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createCallbackProxyDecoration.d.ts","sourceRoot":"","sources":["../../src/lib/createCallbackProxyDecoration.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,SAAS,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAE/C,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CACR,IAAI,EAAE,MAAM,EAAE,EACd,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,EAC/B,IAAI,EAAE,OAAO,EAAE,KACZ,OAAO,WAoBb"}
@@ -0,0 +1,21 @@
1
+ import { createRecursiveProxy } from './createRecursiveProxy.js';
2
+ /**
3
+ * Create proxy for decorating procedures
4
+ */
5
+ export function createCallbackProxyDecoration(functions, callback) {
6
+ return createRecursiveProxy((opts) => {
7
+ const path = opts.path.slice(0, -1);
8
+ // The last arg is for instance `.useMutation` or `.useQuery()`
9
+ const functionName = opts.path[opts.path.length - 1];
10
+ if (functionName === '_def') {
11
+ return {
12
+ path: path,
13
+ };
14
+ }
15
+ if (!functions.includes(functionName)) {
16
+ throw new Error(`Function ${functionName} is not supported`);
17
+ }
18
+ return callback(path, functionName, opts.args);
19
+ }, []);
20
+ }
21
+ //# sourceMappingURL=createCallbackProxyDecoration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createCallbackProxyDecoration.js","sourceRoot":"","sources":["../../src/lib/createCallbackProxyDecoration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAG3C,SAAoB,EACpB,QAIY;IAEZ,OAAO,oBAAoB,CAAC,CAAC,IAAI,EAAE,EAAE;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEpC,+DAA+D;QAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAErD,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;YAC5B,OAAO;gBACL,IAAI,EAAE,IAAI;aACX,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,YAAY,YAAY,mBAAmB,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC"}
@@ -0,0 +1,7 @@
1
+ type ProxyCallback = (opts: {
2
+ path: string[];
3
+ args: unknown[];
4
+ }) => unknown;
5
+ export declare function createRecursiveProxy(callback: ProxyCallback, path: string[]): unknown;
6
+ export {};
7
+ //# sourceMappingURL=createRecursiveProxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createRecursiveProxy.d.ts","sourceRoot":"","sources":["../../src/lib/createRecursiveProxy.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,OAAO,EAAE,CAAA;CAAE,KAAK,OAAO,CAAC;AAE5E,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,WAoB3E"}
@@ -0,0 +1,24 @@
1
+ export function createRecursiveProxy(callback, path) {
2
+ const proxy = new Proxy(noop, {
3
+ get(_obj, key) {
4
+ if (typeof key !== 'string' || key === 'then') {
5
+ // special case for if the proxy is accidentally treated
6
+ // like a PromiseLike (like in `Promise.resolve(proxy)`)
7
+ return undefined;
8
+ }
9
+ return createRecursiveProxy(callback, [...path, key]);
10
+ },
11
+ apply(_1, _2, args) {
12
+ const isApply = path[path.length - 1] === 'apply';
13
+ return callback({
14
+ args: isApply ? (args.length >= 2 ? args[1] : []) : args,
15
+ path: isApply ? path.slice(0, -1) : path,
16
+ });
17
+ },
18
+ });
19
+ return proxy;
20
+ }
21
+ function noop() {
22
+ // noop
23
+ }
24
+ //# sourceMappingURL=createRecursiveProxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createRecursiveProxy.js","sourceRoot":"","sources":["../../src/lib/createRecursiveProxy.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,oBAAoB,CAAC,QAAuB,EAAE,IAAc;IAC1E,MAAM,KAAK,GAAY,IAAI,KAAK,CAAC,IAAI,EAAE;QACrC,GAAG,CAAC,IAAI,EAAE,GAAG;YACX,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBAC9C,wDAAwD;gBACxD,wDAAwD;gBACxD,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,oBAAoB,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI;YAChB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC;YAClD,OAAO,QAAQ,CAAC;gBACd,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;gBACxD,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;aACzC,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,IAAI;IACX,OAAO;AACT,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @throws {error: object|string, response: Response} if the request fails
3
+ */
4
+ export declare function request<T>(config: {
5
+ baseUrl: string;
6
+ }, requestInit: APIRequestInit, { urlSerializer: urlSerializerFunc, bodySerializer: bodySerializerFunc, }: {
7
+ urlSerializer: typeof urlSerializer;
8
+ bodySerializer: typeof bodySerializer;
9
+ }): Promise<T>;
10
+ export declare function urlSerializer(config: {
11
+ baseUrl: string;
12
+ }, { url, parameters }: Pick<APIRequestInit, 'url' | 'parameters'>): string;
13
+ export declare function bodySerializer(options: {
14
+ method: APIRequestInit['method'];
15
+ mediaType: APIRequestInit['mediaType'];
16
+ body: APIRequestInit['body'];
17
+ }): string | Blob | FormData | undefined;
18
+ export type HeadersOptions = HeadersInit | Record<string, string | number | boolean | null | undefined>;
19
+ export type APIRequestInit = {
20
+ readonly method: 'get' | 'put' | 'post' | 'patch' | 'delete' | 'options' | 'head' | 'trace';
21
+ readonly url: string;
22
+ readonly parameters?: {
23
+ readonly path?: Record<string, any>;
24
+ readonly cookie?: Record<string, any>;
25
+ readonly header?: Record<string, any>;
26
+ readonly query?: Record<string, any>;
27
+ };
28
+ readonly body?: BodyInit | Record<string, unknown> | null;
29
+ readonly mediaType?: string;
30
+ readonly headers?: HeadersOptions;
31
+ } & Omit<RequestInit, 'headers' | 'method' | 'body'>;
32
+ //# sourceMappingURL=request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/lib/request.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAsB,OAAO,CAAC,CAAC,EAC7B,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAC3B,WAAW,EAAE,cAAc,EAC3B,EACE,aAAa,EAAE,iBAAiB,EAChC,cAAc,EAAE,kBAAkB,GACnC,EAAE;IACD,aAAa,EAAE,OAAO,aAAa,CAAC;IACpC,cAAc,EAAE,OAAO,cAAc,CAAC;CACvC,GACA,OAAO,CAAC,CAAC,CAAC,CA2CZ;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAC3B,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,YAAY,CAAC,GAC9D,MAAM,CAaR;AA6DD,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IACjC,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IACvC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;CAC9B,wCAuBA;AAiED,MAAM,MAAM,cAAc,GACtB,WAAW,GACX,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAEjE,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,MAAM,EACX,KAAK,GACL,KAAK,GACL,MAAM,GACN,OAAO,GACP,QAAQ,GACR,SAAS,GACT,MAAM,GACN,OAAO,CAAC;IACZ,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,CAAC,EAAE;QACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACtC,CAAC;IACF,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;CACnC,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * @throws {error: object|string, response: Response} if the request fails
3
+ */
4
+ export async function request(config, requestInit, { urlSerializer: urlSerializerFunc, bodySerializer: bodySerializerFunc, }) {
5
+ const { method, url, parameters, mediaType, headers, body, ...requestInitRest } = requestInit;
6
+ const requestBody = bodySerializerFunc({
7
+ method,
8
+ mediaType,
9
+ body,
10
+ });
11
+ const response = await fetch(urlSerializerFunc(config, { url, parameters }), {
12
+ method: method.toUpperCase(),
13
+ body: requestBody,
14
+ headers: mergeHeaders({
15
+ Accept: 'application/json',
16
+ 'Content-Type': mediaType ?? getBodyContentType(body),
17
+ }, headers, parameters?.header, requestBody instanceof FormData
18
+ ? // remove `Content-Type` if serialized body is FormData; browser will correctly set Content-Type & boundary expression
19
+ { 'Content-Type': null }
20
+ : undefined),
21
+ ...requestInitRest,
22
+ });
23
+ // clone response to allow multiple reads
24
+ const clonedResponse = response.clone();
25
+ if (!response.ok) {
26
+ throw await getResponseBody(clonedResponse);
27
+ }
28
+ return (await getResponseBody(clonedResponse));
29
+ }
30
+ export function urlSerializer(config, { url, parameters }) {
31
+ const path = url.replace(/{(.*?)}/g, (substring, group) => {
32
+ if (parameters?.path?.hasOwnProperty(group)) {
33
+ return encodeURI(String(parameters?.path[group]));
34
+ }
35
+ return substring;
36
+ });
37
+ if (parameters?.query) {
38
+ return `${config.baseUrl}${path}${getQueryString(parameters.query)}`;
39
+ }
40
+ return `${config.baseUrl}${path}`;
41
+ }
42
+ function getQueryString(params) {
43
+ const qs = [];
44
+ const append = (key, value) => {
45
+ qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);
46
+ };
47
+ const process = (key, value) => {
48
+ if (typeof value === 'undefined' || value === null)
49
+ return;
50
+ if (Array.isArray(value)) {
51
+ value.forEach((v) => {
52
+ process(key, v);
53
+ });
54
+ }
55
+ else if (typeof value === 'object') {
56
+ Object.entries(value).forEach(([k, v]) => {
57
+ process(`${key}[${k}]`, v);
58
+ });
59
+ }
60
+ else {
61
+ append(key, value);
62
+ }
63
+ };
64
+ Object.entries(params).forEach(([key, value]) => {
65
+ process(key, value);
66
+ });
67
+ if (qs.length > 0) {
68
+ return `?${qs.join('&')}`;
69
+ }
70
+ return '';
71
+ }
72
+ function mergeHeaders(...allHeaders) {
73
+ const headers = new Headers();
74
+ for (const headerSet of allHeaders) {
75
+ if (!headerSet || typeof headerSet !== 'object') {
76
+ continue;
77
+ }
78
+ const headersIterator = headerSet instanceof Headers
79
+ ? headerSet.entries()
80
+ : Object.entries(headerSet);
81
+ for (const [headerKey, headerValue] of headersIterator) {
82
+ if (headerValue === null) {
83
+ headers.delete(headerKey);
84
+ }
85
+ else if (headerValue !== undefined) {
86
+ headers.set(headerKey, headerValue);
87
+ }
88
+ }
89
+ }
90
+ return headers;
91
+ }
92
+ export function bodySerializer(options) {
93
+ if (options.body === undefined)
94
+ return;
95
+ if (options.method === 'get' ||
96
+ options.method === 'head' ||
97
+ options.method === 'options')
98
+ return;
99
+ if (options.mediaType?.includes('/form-data'))
100
+ return getRequestBodyFormData(options);
101
+ if (!options.mediaType?.includes('/json') &&
102
+ (typeof options.body === 'string' ||
103
+ options.body instanceof Blob ||
104
+ options.body instanceof FormData)) {
105
+ return options.body;
106
+ }
107
+ return JSON.stringify(options.body);
108
+ }
109
+ function getRequestBodyFormData({ body, }) {
110
+ if (body instanceof FormData)
111
+ return body;
112
+ if (body === null)
113
+ return;
114
+ if (body instanceof Blob)
115
+ throw new Error('Blob not supported in form-data');
116
+ if (body instanceof ArrayBuffer)
117
+ throw new Error('ArrayBuffer not supported in form-data');
118
+ if (body instanceof URLSearchParams)
119
+ throw new Error('URLSearchParams not supported in form-data');
120
+ if (body instanceof ReadableStream)
121
+ throw new Error('ReadableStream not supported in form-data');
122
+ if (typeof body === 'string')
123
+ throw new Error('String not supported in form-data');
124
+ if (typeof body !== 'object')
125
+ throw new Error(`Unsupported body type ${typeof body} in form-data.`);
126
+ const formData = new FormData();
127
+ const process = (key, value) => {
128
+ if (typeof value === 'string' || value instanceof Blob) {
129
+ formData.append(key, value);
130
+ }
131
+ else {
132
+ formData.append(key, JSON.stringify(value));
133
+ }
134
+ };
135
+ Object.entries(body)
136
+ .filter(([_, value]) => typeof value !== 'undefined' && value !== null)
137
+ .forEach(([key, value]) => {
138
+ if (Array.isArray(value)) {
139
+ value.forEach((v) => process(key, v));
140
+ }
141
+ else {
142
+ process(key, value);
143
+ }
144
+ });
145
+ return formData;
146
+ }
147
+ function getBodyContentType(body) {
148
+ if (!body)
149
+ return;
150
+ if (body instanceof Blob)
151
+ return body.type || 'application/octet-stream';
152
+ if (typeof body === 'string')
153
+ return 'text/plain';
154
+ if (!(body instanceof FormData))
155
+ return 'application/json';
156
+ }
157
+ async function getResponseBody(response) {
158
+ if (response.status === 204 || response.headers.get('Content-Length') === '0')
159
+ return undefined;
160
+ const contentType = response.headers.get('Content-Type')?.toLowerCase();
161
+ const isJSON = contentType?.includes('/json') || contentType?.includes('+json');
162
+ // parse response (falling back to .text() when necessary)
163
+ if (isJSON)
164
+ return response.json();
165
+ return response.text();
166
+ }
167
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/lib/request.ts"],"names":[],"mappings":"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"}