@stack-spot/portal-network 0.2.0 → 0.3.1

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 (164) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/api/account.d.ts +2368 -0
  3. package/dist/api/account.d.ts.map +1 -0
  4. package/dist/api/account.js +1521 -0
  5. package/dist/api/account.js.map +1 -0
  6. package/dist/api/ai.d.ts +1432 -0
  7. package/dist/api/ai.d.ts.map +1 -0
  8. package/dist/api/ai.js +1342 -0
  9. package/dist/api/ai.js.map +1 -0
  10. package/dist/api/apiRuntime.d.ts +922 -0
  11. package/dist/api/apiRuntime.d.ts.map +1 -0
  12. package/dist/api/apiRuntime.js +599 -0
  13. package/dist/api/apiRuntime.js.map +1 -0
  14. package/dist/api/cloudAccount.d.ts +473 -0
  15. package/dist/api/cloudAccount.d.ts.map +1 -0
  16. package/dist/api/cloudAccount.js +300 -0
  17. package/dist/api/cloudAccount.js.map +1 -0
  18. package/dist/api/cloudServices.d.ts +1233 -0
  19. package/dist/api/cloudServices.d.ts.map +1 -0
  20. package/dist/api/cloudServices.js +715 -0
  21. package/dist/api/cloudServices.js.map +1 -0
  22. package/dist/api/insights.d.ts +123 -0
  23. package/dist/api/insights.d.ts.map +1 -0
  24. package/dist/api/insights.js +112 -0
  25. package/dist/api/insights.js.map +1 -0
  26. package/dist/api/serviceCatalog.d.ts +737 -0
  27. package/dist/api/serviceCatalog.d.ts.map +1 -0
  28. package/dist/api/serviceCatalog.js +611 -0
  29. package/dist/api/serviceCatalog.js.map +1 -0
  30. package/dist/api/workflows.d.ts +366 -0
  31. package/dist/api/workflows.d.ts.map +1 -0
  32. package/dist/api/workflows.js +175 -0
  33. package/dist/api/workflows.js.map +1 -0
  34. package/dist/api/workspace.js +1476 -0
  35. package/dist/api/workspace.js.map +1 -0
  36. package/dist/api/workspaceManager.d.ts +1121 -0
  37. package/dist/api/workspaceManager.d.ts.map +1 -0
  38. package/dist/api/workspaceManager.js +357 -0
  39. package/dist/api/workspaceManager.js.map +1 -0
  40. package/dist/api/workspaceSearchEngine.d.ts +93 -0
  41. package/dist/api/workspaceSearchEngine.d.ts.map +1 -0
  42. package/dist/api/workspaceSearchEngine.js +55 -0
  43. package/dist/api/workspaceSearchEngine.js.map +1 -0
  44. package/dist/apis.json +121 -0
  45. package/dist/client/account.d.ts +217 -0
  46. package/dist/client/account.d.ts.map +1 -0
  47. package/dist/client/account.js +276 -0
  48. package/dist/client/account.js.map +1 -0
  49. package/dist/error/CanceledError.d.ts +8 -0
  50. package/dist/error/CanceledError.d.ts.map +1 -0
  51. package/dist/error/CanceledError.js +10 -0
  52. package/dist/error/CanceledError.js.map +1 -0
  53. package/dist/error/DefaultAPIError.d.ts +34 -0
  54. package/dist/error/DefaultAPIError.d.ts.map +1 -0
  55. package/dist/error/DefaultAPIError.js +82 -0
  56. package/dist/error/DefaultAPIError.js.map +1 -0
  57. package/dist/error/StackspotAPIError.d.ts +50 -0
  58. package/dist/error/StackspotAPIError.d.ts.map +1 -0
  59. package/dist/error/StackspotAPIError.js +54 -0
  60. package/dist/error/StackspotAPIError.js.map +1 -0
  61. package/dist/error/dictionary/account.d.ts +55 -0
  62. package/dist/error/dictionary/account.d.ts.map +1 -0
  63. package/dist/error/dictionary/account.js +55 -0
  64. package/dist/error/dictionary/account.js.map +1 -0
  65. package/dist/error/dictionary/action.d.ts +163 -0
  66. package/dist/error/dictionary/action.d.ts.map +1 -0
  67. package/dist/error/dictionary/action.js +163 -0
  68. package/dist/error/dictionary/action.js.map +1 -0
  69. package/dist/error/dictionary/base.d.ts +21 -0
  70. package/dist/error/dictionary/base.d.ts.map +1 -0
  71. package/dist/error/dictionary/base.js +21 -0
  72. package/dist/error/dictionary/base.js.map +1 -0
  73. package/dist/error/dictionary/cnt-fields.d.ts +13 -0
  74. package/dist/error/dictionary/cnt-fields.d.ts.map +1 -0
  75. package/dist/error/dictionary/cnt-fields.js +13 -0
  76. package/dist/error/dictionary/cnt-fields.js.map +1 -0
  77. package/dist/error/dictionary/cnt.d.ts +79 -0
  78. package/dist/error/dictionary/cnt.d.ts.map +1 -0
  79. package/dist/error/dictionary/cnt.js +79 -0
  80. package/dist/error/dictionary/cnt.js.map +1 -0
  81. package/dist/error/dictionary/rte.d.ts +23 -0
  82. package/dist/error/dictionary/rte.d.ts.map +1 -0
  83. package/dist/error/dictionary/rte.js +23 -0
  84. package/dist/error/dictionary/rte.js.map +1 -0
  85. package/dist/error/dictionary/rtm.d.ts +9 -0
  86. package/dist/error/dictionary/rtm.d.ts.map +1 -0
  87. package/dist/error/dictionary/rtm.js +9 -0
  88. package/dist/error/dictionary/rtm.js.map +1 -0
  89. package/dist/error/dictionary/workspace-fields.d.ts +9 -0
  90. package/dist/error/dictionary/workspace-fields.d.ts.map +1 -0
  91. package/dist/error/dictionary/workspace-fields.js +9 -0
  92. package/dist/error/dictionary/workspace-fields.js.map +1 -0
  93. package/dist/error/dictionary/workspace.d.ts +99 -0
  94. package/dist/error/dictionary/workspace.d.ts.map +1 -0
  95. package/dist/error/dictionary/workspace.js +99 -0
  96. package/dist/error/dictionary/workspace.js.map +1 -0
  97. package/dist/index.d.ts +7 -0
  98. package/dist/index.d.ts.map +1 -0
  99. package/dist/index.js +7 -0
  100. package/dist/index.js.map +1 -0
  101. package/dist/network/AutoInfiniteQuery.d.ts +23 -0
  102. package/dist/network/AutoInfiniteQuery.d.ts.map +1 -0
  103. package/dist/network/AutoInfiniteQuery.js +70 -0
  104. package/dist/network/AutoInfiniteQuery.js.map +1 -0
  105. package/dist/network/AutoMutation.d.ts +10 -0
  106. package/dist/network/AutoMutation.d.ts.map +1 -0
  107. package/dist/network/AutoMutation.js +20 -0
  108. package/dist/network/AutoMutation.js.map +1 -0
  109. package/dist/network/AutoOperation.d.ts +19 -0
  110. package/dist/network/AutoOperation.d.ts.map +1 -0
  111. package/dist/network/AutoOperation.js +105 -0
  112. package/dist/network/AutoOperation.js.map +1 -0
  113. package/dist/network/AutoQuery.d.ts +19 -0
  114. package/dist/network/AutoQuery.d.ts.map +1 -0
  115. package/dist/network/AutoQuery.js +70 -0
  116. package/dist/network/AutoQuery.js.map +1 -0
  117. package/dist/network/ManualInfiniteQuery.d.ts +25 -0
  118. package/dist/network/ManualInfiniteQuery.d.ts.map +1 -0
  119. package/dist/network/ManualInfiniteQuery.js +62 -0
  120. package/dist/network/ManualInfiniteQuery.js.map +1 -0
  121. package/dist/network/ManualMutation.d.ts +11 -0
  122. package/dist/network/ManualMutation.d.ts.map +1 -0
  123. package/dist/network/ManualMutation.js +32 -0
  124. package/dist/network/ManualMutation.js.map +1 -0
  125. package/dist/network/ManualOperation.d.ts +13 -0
  126. package/dist/network/ManualOperation.d.ts.map +1 -0
  127. package/dist/network/ManualOperation.js +53 -0
  128. package/dist/network/ManualOperation.js.map +1 -0
  129. package/dist/network/ManualQuery.d.ts +20 -0
  130. package/dist/network/ManualQuery.d.ts.map +1 -0
  131. package/dist/network/ManualQuery.js +77 -0
  132. package/dist/network/ManualQuery.js.map +1 -0
  133. package/dist/network/NetworkClient.d.ts +58 -0
  134. package/dist/network/NetworkClient.d.ts.map +1 -0
  135. package/dist/network/NetworkClient.js +107 -0
  136. package/dist/network/NetworkClient.js.map +1 -0
  137. package/dist/network/ReactQueryNetworkClient.d.ts +78 -0
  138. package/dist/network/ReactQueryNetworkClient.d.ts.map +1 -0
  139. package/dist/network/ReactQueryNetworkClient.js +144 -0
  140. package/dist/network/ReactQueryNetworkClient.js.map +1 -0
  141. package/dist/network/react-query-client.d.ts +6 -0
  142. package/dist/network/react-query-client.d.ts.map +1 -0
  143. package/dist/network/react-query-client.js +6 -0
  144. package/dist/network/react-query-client.js.map +1 -0
  145. package/dist/network/types.d.ts +234 -0
  146. package/dist/network/types.d.ts.map +1 -0
  147. package/dist/network/types.js +2 -0
  148. package/dist/network/types.js.map +1 -0
  149. package/dist/utils/use-extended-list.d.ts +39 -0
  150. package/dist/utils/use-extended-list.d.ts.map +1 -0
  151. package/dist/utils/use-extended-list.js +36 -0
  152. package/dist/utils/use-extended-list.js.map +1 -0
  153. package/package.json +1 -1
  154. package/src/client/account.ts +79 -14
  155. package/src/error/DefaultAPIError.ts +2 -3
  156. package/src/error/StackspotAPIError.ts +1 -1
  157. package/src/index.ts +1 -0
  158. package/src/network/AutoInfiniteQuery.ts +7 -0
  159. package/src/network/AutoOperation.ts +7 -1
  160. package/src/network/ManualInfiniteQuery.ts +7 -0
  161. package/src/network/NetworkClient.ts +16 -70
  162. package/src/network/ReactQueryNetworkClient.ts +18 -38
  163. package/src/network/types.ts +0 -10
  164. package/src/utils/use-extended-list.ts +80 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoQuery.js","sourceRoot":"","sources":["../../src/network/AutoQuery.ts"],"names":[],"mappings":"AAAA,+CAA+C;;;;;;;AAE/C,OAAO,EAAkE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAElI,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAGlD,MAAM,OAAO,SAA6B,SAAQ,aAAwB;IAMxE,YAAY,MAAgD;QAC1D,KAAK,CAAC,MAAM,CAAC,CAAA;;QANf;;WAEG;QACO;;;;mBAAkB,IAAI,GAAG,EAA0C;WAAA;IAI7E,CAAC;IAEO,aAAa,CAAC,SAAgC;QACpD,OAAO,KAAK,IAAI,EAAE;YAChB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC;gBAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;YACrG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YACxD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YACtC,OAAO,MAAO,CAAA;QAChB,CAAC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,SAAS,CAAuD;QACxE,OAAO,WAAW,CAAC,UAAU,CAAC;YAC5B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YAChC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;SACvC,CAAC,CAAA;IACJ,CAAC;IAuBD,QAAQ,CACN,GAAG,IAEgF;QAEnF,MAAM,MAAM,GAAG,uBAAA,IAAI,uDAAgB,MAApB,IAAI,EAAiB,IAAI,EAAE,GAAG,IAAI,CAAC,CAAA;QAClD,OAAO,MAAM,CAAC,IAAI,CAAA;IACpB,CAAC;IAED,gBAAgB,CACd,GAAG,IAEgF;QAEnF,MAAM,MAAM,GAAG,uBAAA,IAAI,uDAAgB,MAApB,IAAI,EAAiB,KAAK,EAAE,GAAG,IAAI,CAAC,CAAA;QACnD,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,KAAsC,EAAE,MAAM,CAAU,CAAA;IACxG,CAAC;IAED,UAAU,CAAC,SAA8B;QACvC,OAAO,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IAC5E,CAAC;IAED,MAAM,CAAC,SAA8B;QACnC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IAChD,CAAC;CACF;qGA7CG,QAAW,EACX,GAAG,IAEgF;IAEnF;;;mIAG+H;IAC/H,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC;QAC7C,CAAC,CAAC,IAA8E;QAChF,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAA8D,CAAC,CAAA;IACrF,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAA;IAClD,OAAO,GAAG,CAAC;QACT,GAAG,OAAO;QACV,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAChC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;KACvC,EAAE,WAAW,CAA0H,CAAA;AAC1I,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { InfiniteData, UseInfiniteQueryResult } from '@tanstack/react-query';
2
+ import { StackspotAPIError } from '../error/StackspotAPIError.js';
3
+ import { ManualQuery } from './ManualQuery.js';
4
+ import { InfiniteQueryConfig, InfiniteQueryObject, UseInfiniteQueryObjectOptions } from './types.js';
5
+ export declare class ManualInfiniteQuery<Variables extends Record<string, any>, Result, PageParamName extends keyof Variables, Accumulator extends keyof Result | ''> extends ManualQuery<Variables, Result> implements InfiniteQueryObject<Variables, Result, Accumulator> {
6
+ constructor(config: InfiniteQueryConfig<Variables, Result, PageParamName, Accumulator> & {
7
+ apiName: string;
8
+ });
9
+ private getConfig;
10
+ private createInfiniteQueryFn;
11
+ private getListFromData;
12
+ private useInfiniteQueryResult;
13
+ useInfiniteQuery(variables?: Variables, options?: UseInfiniteQueryObjectOptions): [
14
+ Accumulator extends keyof Result ? Result[Accumulator] : Result,
15
+ UseInfiniteQueryResult<InfiniteData<Result>, StackspotAPIError>
16
+ ];
17
+ useStatefulInfiniteQuery(variables?: Variables, options?: UseInfiniteQueryObjectOptions): [
18
+ Accumulator extends keyof Result ? Result[Accumulator] : Result,
19
+ boolean,
20
+ StackspotAPIError | undefined | null,
21
+ UseInfiniteQueryResult<InfiniteData<Result>, StackspotAPIError>
22
+ ];
23
+ invalidate(variables?: Partial<Variables> | undefined): Promise<void>;
24
+ }
25
+ //# sourceMappingURL=ManualInfiniteQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManualInfiniteQuery.d.ts","sourceRoot":"","sources":["../../src/network/ManualInfiniteQuery.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAkC,sBAAsB,EAA8C,MAAM,uBAAuB,CAAA;AACxJ,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,OAAO,EAAuB,mBAAmB,EAAE,mBAAmB,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAA;AAEtH,qBAAa,mBAAmB,CAC9B,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrC,MAAM,EACN,aAAa,SAAS,MAAM,SAAS,EACrC,WAAW,SAAS,MAAM,MAAM,GAAG,EAAE,CACrC,SAAQ,WAAW,CAAC,SAAS,EAAE,MAAM,CAAE,YAAW,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC;gBACzF,MAAM,EAAE,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;IAI5G,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,sBAAsB;IAa9B,gBAAgB,CACd,SAAS,CAAC,EAAE,SAAS,EACrB,OAAO,CAAC,EAAE,6BAA6B,GACtC;QACD,WAAW,SAAS,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM;QAC/D,sBAAsB,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC;KAChE;IAQD,wBAAwB,CACtB,SAAS,CAAC,EAAE,SAAS,EACrB,OAAO,CAAC,EAAE,6BAA6B,GACtC;QACD,WAAW,SAAS,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM;QAC/D,OAAO;QACP,iBAAiB,GAAG,SAAS,GAAG,IAAI;QACpC,sBAAsB,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC;KAChE;IAUK,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAM5E"}
@@ -0,0 +1,62 @@
1
+ /* eslint-disable react-hooks/rules-of-hooks */
2
+ import { useInfiniteQuery, useSuspenseInfiniteQuery } from '@tanstack/react-query';
3
+ import { ManualQuery } from './ManualQuery.js';
4
+ import { queryClient } from './react-query-client.js';
5
+ export class ManualInfiniteQuery extends ManualQuery {
6
+ constructor(config) {
7
+ super(config);
8
+ }
9
+ getConfig() {
10
+ return this.config;
11
+ }
12
+ createInfiniteQueryFn(variables) {
13
+ return async ({ pageParam }) => {
14
+ const paginatedVariables = {
15
+ ...variables,
16
+ [this.getConfig().pageParamName]: pageParam ?? variables?.[this.getConfig().pageParamName],
17
+ };
18
+ if (!this.currentRequests.has(paginatedVariables))
19
+ this.currentRequests.set(paginatedVariables, this.makeRequest(paginatedVariables));
20
+ const result = await this.currentRequests.get(paginatedVariables);
21
+ this.currentRequests.delete(paginatedVariables);
22
+ return result;
23
+ };
24
+ }
25
+ getListFromData(data) {
26
+ return data?.pages.map(page => this.getConfig().accumulator ? page[this.getConfig().accumulator] : page).flat();
27
+ }
28
+ useInfiniteQueryResult(suspense, variables = {}, options) {
29
+ variables = { ...variables, ...this.getConfig().defaultVariables };
30
+ const use = suspense ? useSuspenseInfiniteQuery : useInfiniteQuery;
31
+ return use({
32
+ ...options,
33
+ queryKey: ['infinite', ...this.getKey(variables)],
34
+ queryFn: this.createInfiniteQueryFn(variables),
35
+ initialPageParam: this.getConfig().initialPageParam,
36
+ getNextPageParam: (lastPage, allPages, lastPageParam, allPageParams) => this.getConfig().getNextPageParam({ variables, lastPage, allPages, lastPageParam, allPageParams }),
37
+ }, queryClient);
38
+ }
39
+ useInfiniteQuery(variables, options) {
40
+ const result = this.useInfiniteQueryResult(true, variables, options);
41
+ return [
42
+ this.getListFromData(result.data),
43
+ result,
44
+ ];
45
+ }
46
+ useStatefulInfiniteQuery(variables, options) {
47
+ const result = this.useInfiniteQueryResult(false, variables, options);
48
+ return [
49
+ this.getListFromData(result.data),
50
+ result.isPending,
51
+ result.error,
52
+ result,
53
+ ];
54
+ }
55
+ async invalidate(variables) {
56
+ await Promise.all([
57
+ super.invalidate(variables),
58
+ queryClient.invalidateQueries({ queryKey: ['infinite', ...this.getKey(variables)] }),
59
+ ]);
60
+ }
61
+ }
62
+ //# sourceMappingURL=ManualInfiniteQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManualInfiniteQuery.js","sourceRoot":"","sources":["../../src/network/ManualInfiniteQuery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { UseMutationOptions } from '@tanstack/react-query';
2
+ import { StackspotAPIError } from '../error/StackspotAPIError.js';
3
+ import { ManualOperation } from './ManualOperation.js';
4
+ import { FullOperationConfig, MutationObject } from './types.js';
5
+ export declare class ManualMutation<Variables extends Record<string, any> | void, Result> extends ManualOperation<Variables> implements MutationObject<Variables, Result> {
6
+ constructor(config: FullOperationConfig<Variables extends void ? [AbortSignal] : [AbortSignal, Variables], Result>);
7
+ private makeRequest;
8
+ mutate(...args: Variables extends void ? [] : [variables: Variables]): Promise<any>;
9
+ useMutation(options?: Omit<UseMutationOptions<Result, StackspotAPIError, Variables>, 'mutationFn'>): readonly [any, boolean, StackspotAPIError | undefined, any];
10
+ }
11
+ //# sourceMappingURL=ManualMutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManualMutation.d.ts","sourceRoot":"","sources":["../../src/network/ManualMutation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAe,MAAM,uBAAuB,CAAA;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7D,qBAAa,cAAc,CACzB,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAC5C,MAAM,CACN,SAAQ,eAAe,CAAC,SAAS,CAAE,YAAW,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC;gBACnE,MAAM,EAAE,mBAAmB,CAAC,SAAS,SAAS,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC;YAIpG,WAAW;IAazB,MAAM,CAAC,GAAG,IAAI,EAAE,SAAS,SAAS,IAAI,GAAG,EAAE,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC;IAIpE,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC;CAOnG"}
@@ -0,0 +1,32 @@
1
+ /* eslint-disable react-hooks/rules-of-hooks */
2
+ import { useMutation } from '@tanstack/react-query';
3
+ import { ManualOperation } from './ManualOperation.js';
4
+ import { queryClient } from './react-query-client.js';
5
+ export class ManualMutation extends ManualOperation {
6
+ constructor(config) {
7
+ super(config);
8
+ }
9
+ async makeRequest(variables) {
10
+ const abortController = new AbortController();
11
+ if (!this.abortMap.has(variables))
12
+ this.abortMap.set(variables, []);
13
+ this.abortMap.get(variables)?.push(abortController);
14
+ try {
15
+ return await this.config.request(...[abortController.signal, variables]);
16
+ }
17
+ finally {
18
+ this.abortMap.delete(variables);
19
+ }
20
+ }
21
+ mutate(...args) {
22
+ return this.makeRequest(...args);
23
+ }
24
+ useMutation(options) {
25
+ const result = useMutation({
26
+ ...options,
27
+ mutationFn: (...args) => this.makeRequest(...args),
28
+ }, queryClient);
29
+ return [result.mutateAsync, result.isPending, result.error, result];
30
+ }
31
+ }
32
+ //# sourceMappingURL=ManualMutation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManualMutation.js","sourceRoot":"","sources":["../../src/network/ManualMutation.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,OAAO,EAAsB,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAEvE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAGlD,MAAM,OAAO,cAGX,SAAQ,eAA0B;IAClC,YAAY,MAAsG;QAChH,KAAK,CAAC,MAAM,CAAC,CAAA;IACf,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,SAA+B;QACvD,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;QAC7C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QACnE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAA;QACnD,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAC9B,GAAG,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAsE,CAC5G,CAAA;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACjC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAG,IAA0D;QAClE,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAA;IAClC,CAAC;IAED,WAAW,CAAC,OAAsF;QAChG,MAAM,MAAM,GAAG,WAAW,CAAuC;YAC/D,GAAG,OAAO;YACV,UAAU,EAAE,CAAC,GAAG,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;SACxD,EAAE,WAAW,CAAC,CAAA;QACf,OAAO,CAAC,MAAM,CAAC,WAAkB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,KAAsC,EAAE,MAAa,CAAU,CAAA;IAC7H,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import { UseQueryOptions, UseQueryResult } from '@tanstack/react-query';
2
+ import { StackspotAPIError } from '../error/StackspotAPIError.js';
3
+ import { FullOperationConfig, OperationObject } from './types.js';
4
+ export declare abstract class ManualOperation<Variables extends Record<string, any> | void> implements OperationObject<Variables> {
5
+ protected config: FullOperationConfig<Variables extends void ? [AbortSignal] : [AbortSignal, Variables], any>;
6
+ protected abortMap: Map<Record<string, any> | undefined, AbortController[]>;
7
+ constructor(config: FullOperationConfig<Variables extends void ? [AbortSignal] : [AbortSignal, Variables], any>);
8
+ isAllowed(...[variables]: Variables extends void ? [] : [variables?: Partial<Variables>]): Promise<boolean>;
9
+ useAllowed(...args: Variables extends void ? [options?: Omit<UseQueryOptions, 'queryFn' | 'queryKey'>] : [variables?: Partial<Variables>, options?: Omit<UseQueryOptions, 'queryFn' | 'queryKey'>]): readonly [boolean | undefined, boolean, StackspotAPIError | null, UseQueryResult<boolean, StackspotAPIError>];
10
+ getPermissionKey(variables?: Partial<Variables>): (string | Partial<Variables> | undefined)[];
11
+ cancel(variables?: Partial<Variables> | undefined): boolean;
12
+ }
13
+ //# sourceMappingURL=ManualOperation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManualOperation.d.ts","sourceRoot":"","sources":["../../src/network/ManualOperation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAY,MAAM,uBAAuB,CAAA;AAEjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAE9D,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9D,8BAAsB,eAAe,CAAC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAE,YAAW,eAAe,CAAC,SAAS,CAAC;IACvH,SAAS,CAAC,MAAM,EAAE,mBAAmB,CAAC,SAAS,SAAS,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,CAAA;IAC7G,SAAS,CAAC,QAAQ,0DAAgE;gBAEtE,MAAM,EAAE,mBAAmB,CAAC,SAAS,SAAS,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC;IAI/G,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,SAAS,SAAS,IAAI,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAQxF,UAAU,CACR,GAAG,IAAI,EAAE,SAAS,SAAS,IAAI,GAC3B,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC,GACzD,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC;IAY/F,gBAAgB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC;IAI/C,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS;CAWlD"}
@@ -0,0 +1,53 @@
1
+ /* eslint-disable react-hooks/rules-of-hooks */
2
+ import { useQuery } from '@tanstack/react-query';
3
+ import { CanceledError } from '../error/CanceledError.js';
4
+ import { queryClient } from './react-query-client.js';
5
+ export class ManualOperation {
6
+ constructor(config) {
7
+ Object.defineProperty(this, "config", {
8
+ enumerable: true,
9
+ configurable: true,
10
+ writable: true,
11
+ value: void 0
12
+ });
13
+ Object.defineProperty(this, "abortMap", {
14
+ enumerable: true,
15
+ configurable: true,
16
+ writable: true,
17
+ value: new Map()
18
+ });
19
+ this.config = config;
20
+ }
21
+ isAllowed(...[variables]) {
22
+ return queryClient.fetchQuery({
23
+ queryKey: this.getPermissionKey(variables),
24
+ // @ts-ignore the following is correct. TS can't correctly infer the conditional type here =(
25
+ queryFn: () => this.config.permission(variables),
26
+ });
27
+ }
28
+ useAllowed(...args) {
29
+ const [variables, options] = args.length === 2 ? args : [undefined, args[0]];
30
+ const result = useQuery({
31
+ ...options,
32
+ queryKey: this.getPermissionKey(variables),
33
+ // @ts-ignore the following is correct. TS can't correctly infer the conditional type here =(
34
+ queryFn: () => this.config.permission(variables),
35
+ }, queryClient);
36
+ return [result.data, result.isPending, result.error, result];
37
+ }
38
+ getPermissionKey(variables) {
39
+ return [this.config.apiName, `${this.config.name}.permission`, variables];
40
+ }
41
+ cancel(variables) {
42
+ if (variables && this.abortMap.has(variables)) {
43
+ this.abortMap.get(variables)?.forEach(c => c.abort(new CanceledError()));
44
+ return true;
45
+ }
46
+ if (!variables && this.abortMap.size) {
47
+ this.abortMap.forEach(controllers => controllers.forEach(c => c.abort(new CanceledError())));
48
+ return true;
49
+ }
50
+ return false;
51
+ }
52
+ }
53
+ //# sourceMappingURL=ManualOperation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManualOperation.js","sourceRoot":"","sources":["../../src/network/ManualOperation.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,OAAO,EAAmC,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAGlD,MAAM,OAAgB,eAAe;IAInC,YAAY,MAAmG;QAHrG;;;;;WAAmG;QACnG;;;;mBAAW,IAAI,GAAG,EAAsD;WAAA;QAGhF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,SAAS,CAAC,GAAG,CAAC,SAAS,CAAiE;QACtF,OAAO,WAAW,CAAC,UAAU,CAAC;YAC5B,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAsB,CAAC;YACvD,6FAA6F;YAC7F,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;SACjD,CAAC,CAAA;IACJ,CAAC;IAED,UAAU,CACR,GAAG,IAE0F;QAE7F,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5E,MAAM,MAAM,GAAG,QAAQ,CAAC;YACtB,GAAG,OAAO;YACV,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAsB,CAAC;YACvD,6FAA6F;YAC7F,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;SACjD,EAAE,WAAW,CAA+C,CAAA;QAC7D,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAU,CAAA;IACvE,CAAC;IAED,gBAAgB,CAAC,SAA8B;QAC7C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,aAAa,EAAE,SAAS,CAAC,CAAA;IAC3E,CAAC;IAED,MAAM,CAAC,SAA0C;QAC/C,IAAI,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC,CAAA;YACxE,OAAO,IAAI,CAAA;QACb,CAAC;QACD,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC,CAAC,CAAA;YAC5F,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;CACF"}
@@ -0,0 +1,20 @@
1
+ import { DefinedUseQueryResult, UseQueryOptions } from '@tanstack/react-query';
2
+ import { StackspotAPIError } from '../error/StackspotAPIError.js';
3
+ import { ManualOperation } from './ManualOperation.js';
4
+ import { FullOperationConfig, QueryObject } from './types.js';
5
+ export declare class ManualQuery<Variables extends Record<string, any> | void, Result> extends ManualOperation<Variables> implements QueryObject<Variables, Result> {
6
+ #private;
7
+ /**
8
+ * Prevents the same request from being triggered more than once if subsequent calls are made before the first ends.
9
+ */
10
+ protected currentRequests: Map<Record<string, any> | undefined, Promise<Result>>;
11
+ constructor(config: FullOperationConfig<Variables extends void ? [AbortSignal] : [AbortSignal, Variables], Result>);
12
+ protected makeRequest(variables: Record<string, any> | undefined): Promise<any>;
13
+ private createQueryFn;
14
+ query(...[variables]: Variables extends void ? [] : [variables: Variables]): Promise<Result>;
15
+ useQuery(...args: Variables extends void ? [options?: Omit<UseQueryOptions, 'queryFn' | 'queryKey'>] : [variables: Variables, options?: Omit<UseQueryOptions, 'queryFn' | 'queryKey'>]): Result;
16
+ useStatefulQuery(...args: Variables extends void ? [options?: Omit<UseQueryOptions, 'queryFn' | 'queryKey'>] : [variables: Variables, options?: Omit<UseQueryOptions, 'queryFn' | 'queryKey'>]): readonly [Result, false, StackspotAPIError | undefined, DefinedUseQueryResult<Result, StackspotAPIError>];
17
+ invalidate(variables?: Partial<Variables>): Promise<void>;
18
+ getKey(variables?: Partial<Variables>): (string | Partial<Variables> | undefined)[];
19
+ }
20
+ //# sourceMappingURL=ManualQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManualQuery.d.ts","sourceRoot":"","sources":["../../src/network/ManualQuery.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAsD,MAAM,uBAAuB,CAAA;AAClI,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1D,qBAAa,WAAW,CACtB,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAC5C,MAAM,CACN,SAAQ,eAAe,CAAC,SAAS,CAAE,YAAW,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC;;IAC5E;;OAEG;IACH,SAAS,CAAC,eAAe,wDAA8D;gBAE3E,MAAM,EAAE,mBAAmB,CAAC,SAAS,SAAS,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC;cAIlG,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS;IAatE,OAAO,CAAC,aAAa;IAOrB,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,SAAS,SAAS,IAAI,GAAG,EAAE,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC;IA0B1E,QAAQ,CACN,GAAG,IAAI,EAAE,SAAS,SAAS,IAAI,GAC3B,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC,GACzD,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC;IAMrF,gBAAgB,CACd,GAAG,IAAI,EAAE,SAAS,SAAS,IAAI,GAC3B,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC,GACzD,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC;IAMrF,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC;IAIzC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC;CAGtC"}
@@ -0,0 +1,77 @@
1
+ /* eslint-disable react-hooks/rules-of-hooks */
2
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
+ };
7
+ var _ManualQuery_instances, _ManualQuery_useQueryResult;
8
+ import { useQuery, useSuspenseQuery } from '@tanstack/react-query';
9
+ import { ManualOperation } from './ManualOperation.js';
10
+ import { queryClient } from './react-query-client.js';
11
+ export class ManualQuery extends ManualOperation {
12
+ constructor(config) {
13
+ super(config);
14
+ _ManualQuery_instances.add(this);
15
+ /**
16
+ * Prevents the same request from being triggered more than once if subsequent calls are made before the first ends.
17
+ */
18
+ Object.defineProperty(this, "currentRequests", {
19
+ enumerable: true,
20
+ configurable: true,
21
+ writable: true,
22
+ value: new Map()
23
+ });
24
+ }
25
+ async makeRequest(variables) {
26
+ const abortController = new AbortController();
27
+ this.abortMap.set(variables, [abortController]);
28
+ try {
29
+ return await this.config.request(...[abortController.signal, variables]);
30
+ }
31
+ finally {
32
+ this.abortMap.delete(variables);
33
+ this.currentRequests.delete(variables);
34
+ }
35
+ }
36
+ createQueryFn(variables) {
37
+ return () => {
38
+ if (!this.currentRequests.has(variables))
39
+ this.currentRequests.set(variables, this.makeRequest(variables));
40
+ return this.currentRequests.get(variables);
41
+ };
42
+ }
43
+ query(...[variables]) {
44
+ return queryClient.fetchQuery({
45
+ queryKey: this.getKey(variables),
46
+ queryFn: this.createQueryFn(variables),
47
+ });
48
+ }
49
+ useQuery(...args) {
50
+ const result = __classPrivateFieldGet(this, _ManualQuery_instances, "m", _ManualQuery_useQueryResult).call(this, false, ...args);
51
+ return result.data;
52
+ }
53
+ useStatefulQuery(...args) {
54
+ const result = __classPrivateFieldGet(this, _ManualQuery_instances, "m", _ManualQuery_useQueryResult).call(this, false, ...args);
55
+ return [result.data, result.isPending, result.error, result];
56
+ }
57
+ invalidate(variables) {
58
+ return queryClient.invalidateQueries({ queryKey: this.getKey(variables) });
59
+ }
60
+ getKey(variables) {
61
+ return [this.config.apiName, this.config.name, variables];
62
+ }
63
+ }
64
+ _ManualQuery_instances = new WeakSet(), _ManualQuery_useQueryResult = function _ManualQuery_useQueryResult(suspense, ...args) {
65
+ /* `this.config.request` is a function with arity 1 or 2. If it accepts variables, its arity is 2: the 1st parameter is the
66
+ AbortSignal and the 2nd is the variables. If it doesn't accept variables, its arity is one: it accepts only the AbortSignal.
67
+ We can use this information to determine what the type of `args` actually is at runtime. If variables are accepted, than the 1st
68
+ argument is the variables and the 2nd is the query options, otherwise, it has a single argument, which is the query options. */
69
+ const [variables, options] = this.config.request.length === 2 ? args : [undefined, args[0]];
70
+ const use = suspense ? useSuspenseQuery : useQuery;
71
+ return use({
72
+ ...options,
73
+ queryKey: this.getKey(variables),
74
+ queryFn: this.createQueryFn(variables),
75
+ }, queryClient);
76
+ };
77
+ //# sourceMappingURL=ManualQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManualQuery.js","sourceRoot":"","sources":["../../src/network/ManualQuery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { Env, HTTPMethod, SessionManager } from './types.js';
2
+ /**
3
+ * A set of methods for performing network requests to an API.
4
+ *
5
+ * The requests are authenticated unless there's no session available.
6
+ *
7
+ * In order for a network client to work properly, the general setup for the class `NetworkClient` must be made before any request is
8
+ * attempted:
9
+ *
10
+ * ```
11
+ * NetworkClient.setup(mySessionManager, currentEnv)
12
+ * ```
13
+ */
14
+ export declare abstract class NetworkClient {
15
+ private baseURL;
16
+ private static sessionManager?;
17
+ private static env?;
18
+ /**
19
+ * @param baseURL An object with the keys "dev", "stg" and "prd". The values must be the url for each of these environments.
20
+ */
21
+ constructor(baseURL: Record<Env, string>);
22
+ /**
23
+ * Sets up all network clients. Must be called before attempting to make any request.
24
+ * @param sessionManager An object with functions capable of checking, retrieving and ending the current session.
25
+ * @param env The environment to send the requests to.
26
+ */
27
+ static setup(sessionManager: SessionManager, env: Env): void;
28
+ private uninitializedError;
29
+ /**
30
+ * Builds a URL with the `baseUrl` of this network client and the `path` passed as parameter.
31
+ * @param path the path to the resource.
32
+ * @returns a full URL.
33
+ */
34
+ protected resolveURL(path: string): URL;
35
+ /**
36
+ * Verifies if the current user is allowed to send the given request.
37
+ * @param method the request's method.
38
+ * @param path the path to the resource.
39
+ * @param body the request's body.
40
+ * @returns a promise that resolves to true if it's allowed or false otherwise.
41
+ */
42
+ protected requestPermission(method: HTTPMethod, path: string, body?: string | object): Promise<boolean>;
43
+ private getSessionManager;
44
+ /**
45
+ * Makes a request (same signature as `globalThis.fetch`). This request will prepend the base url to the url and, if there's an active
46
+ * session, include authentication headers.
47
+ * @param input the url or request object.
48
+ * @param init the fetch options.
49
+ * @returns a promise with the Response.
50
+ */
51
+ protected fetch(input: string | URL | Request, init?: RequestInit): Promise<Response>;
52
+ /**
53
+ * Checks whether or not the current account is freemium.
54
+ * @returns true if it's a freemium account, false otherwise.
55
+ */
56
+ protected isFreemium(): boolean;
57
+ }
58
+ //# sourceMappingURL=NetworkClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkClient.d.ts","sourceRoot":"","sources":["../../src/network/NetworkClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAEzD;;;;;;;;;;;GAWG;AACH,8BAAsB,aAAa;IACjC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAgB;IAC9C,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAK;IAExB;;OAEG;gBACS,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC;IAIxC;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG;IAKrD,OAAO,CAAC,kBAAkB;IAI1B;;;;OAIG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM;IASjC;;;;;;OAMG;IACH,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvG,OAAO,CAAC,iBAAiB;IAMzB;;;;;;OAMG;IACH,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgBrF;;;OAGG;IACH,SAAS,CAAC,UAAU;CAIrB"}
@@ -0,0 +1,107 @@
1
+ import { AuthenticationError } from '@stack-spot/auth';
2
+ import { requestPermission } from '@stack-spot/opa';
3
+ /**
4
+ * A set of methods for performing network requests to an API.
5
+ *
6
+ * The requests are authenticated unless there's no session available.
7
+ *
8
+ * In order for a network client to work properly, the general setup for the class `NetworkClient` must be made before any request is
9
+ * attempted:
10
+ *
11
+ * ```
12
+ * NetworkClient.setup(mySessionManager, currentEnv)
13
+ * ```
14
+ */
15
+ export class NetworkClient {
16
+ /**
17
+ * @param baseURL An object with the keys "dev", "stg" and "prd". The values must be the url for each of these environments.
18
+ */
19
+ constructor(baseURL) {
20
+ Object.defineProperty(this, "baseURL", {
21
+ enumerable: true,
22
+ configurable: true,
23
+ writable: true,
24
+ value: void 0
25
+ });
26
+ this.baseURL = baseURL;
27
+ }
28
+ /**
29
+ * Sets up all network clients. Must be called before attempting to make any request.
30
+ * @param sessionManager An object with functions capable of checking, retrieving and ending the current session.
31
+ * @param env The environment to send the requests to.
32
+ */
33
+ static setup(sessionManager, env) {
34
+ NetworkClient.sessionManager = sessionManager;
35
+ NetworkClient.env = env;
36
+ }
37
+ uninitializedError() {
38
+ return new Error('Please, call "NetworkClient.setup(sessionManager, env)" before attempting to make a request.');
39
+ }
40
+ /**
41
+ * Builds a URL with the `baseUrl` of this network client and the `path` passed as parameter.
42
+ * @param path the path to the resource.
43
+ * @returns a full URL.
44
+ */
45
+ resolveURL(path) {
46
+ if (!NetworkClient.env)
47
+ throw this.uninitializedError();
48
+ // paths must not start with "/", otherwise, the base url will not be fully appended to it.
49
+ const fixedPath = path.replace(/^\//, '');
50
+ // the baseUrl must end with "/", otherwise, the last of its part will get replaced by the path, instead of concatenated with.
51
+ const fixedBaseUrl = this.baseURL[NetworkClient.env].replace(/([^/])$/, '$1/');
52
+ return new URL(fixedPath, fixedBaseUrl);
53
+ }
54
+ /**
55
+ * Verifies if the current user is allowed to send the given request.
56
+ * @param method the request's method.
57
+ * @param path the path to the resource.
58
+ * @param body the request's body.
59
+ * @returns a promise that resolves to true if it's allowed or false otherwise.
60
+ */
61
+ requestPermission(method, path, body) {
62
+ return requestPermission(method, this.resolveURL(path).toString(), body);
63
+ }
64
+ getSessionManager() {
65
+ const sessionManager = NetworkClient.sessionManager;
66
+ if (!sessionManager)
67
+ throw this.uninitializedError();
68
+ return sessionManager;
69
+ }
70
+ /**
71
+ * Makes a request (same signature as `globalThis.fetch`). This request will prepend the base url to the url and, if there's an active
72
+ * session, include authentication headers.
73
+ * @param input the url or request object.
74
+ * @param init the fetch options.
75
+ * @returns a promise with the Response.
76
+ */
77
+ fetch(input, init) {
78
+ const sessionManager = this.getSessionManager();
79
+ let inputWithBaseUrl = '';
80
+ if (typeof input === 'string')
81
+ inputWithBaseUrl = this.resolveURL(input);
82
+ else if (input instanceof URL)
83
+ inputWithBaseUrl = this.resolveURL(input.toString());
84
+ else
85
+ inputWithBaseUrl = { ...input, url: this.resolveURL(input.url).toString() };
86
+ // some APIs throw errors if the method is lowercase, the following line prevents it
87
+ if (init?.method)
88
+ init.method = init.method.toUpperCase();
89
+ try {
90
+ return sessionManager.hasSession() ? sessionManager.getSession().fetch(inputWithBaseUrl, init) : fetch(inputWithBaseUrl, init);
91
+ }
92
+ catch (error) {
93
+ if (error instanceof AuthenticationError)
94
+ sessionManager.endSession();
95
+ throw error;
96
+ }
97
+ }
98
+ /**
99
+ * Checks whether or not the current account is freemium.
100
+ * @returns true if it's a freemium account, false otherwise.
101
+ */
102
+ isFreemium() {
103
+ const sessionManager = this.getSessionManager();
104
+ return sessionManager.hasSession() && !!sessionManager.getSession().getTokenData().freemium_status;
105
+ }
106
+ }
107
+ //# sourceMappingURL=NetworkClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkClient.js","sourceRoot":"","sources":["../../src/network/NetworkClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAGnD;;;;;;;;;;;GAWG;AACH,MAAM,OAAgB,aAAa;IAKjC;;OAEG;IACH,YAAY,OAA4B;QAPhC;;;;;WAA4B;QAQlC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,cAA8B,EAAE,GAAQ;QACnD,aAAa,CAAC,cAAc,GAAG,cAAc,CAAA;QAC7C,aAAa,CAAC,GAAG,GAAG,GAAG,CAAA;IACzB,CAAC;IAEO,kBAAkB;QACxB,OAAO,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAA;IAClH,CAAC;IAED;;;;OAIG;IACO,UAAU,CAAC,IAAY;QAC/B,IAAI,CAAC,aAAa,CAAC,GAAG;YAAE,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACvD,2FAA2F;QAC3F,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACzC,8HAA8H;QAC9H,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAC9E,OAAO,IAAI,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;IACzC,CAAC;IAED;;;;;;OAMG;IACO,iBAAiB,CAAC,MAAkB,EAAE,IAAY,EAAE,IAAsB;QAClF,OAAO,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAA;IAC1E,CAAC;IAEO,iBAAiB;QACvB,MAAM,cAAc,GAAG,aAAa,CAAC,cAAc,CAAA;QACnD,IAAI,CAAC,cAAc;YAAE,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACpD,OAAO,cAAc,CAAA;IACvB,CAAC;IAED;;;;;;OAMG;IACO,KAAK,CAAC,KAA6B,EAAE,IAAkB;QAC/D,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAC/C,IAAI,gBAAgB,GAA2B,EAAE,CAAA;QACjD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;aACnE,IAAI,KAAK,YAAY,GAAG;YAAE,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;;YAC9E,gBAAgB,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAA;QAChF,oFAAoF;QACpF,IAAI,IAAI,EAAE,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAA;QACzD,IAAI,CAAC;YACH,OAAO,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAA;QAChI,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,mBAAmB;gBAAE,cAAc,CAAC,UAAU,EAAE,CAAA;YACrE,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAED;;;OAGG;IACO,UAAU;QAClB,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAC/C,OAAO,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,CAAC,eAAe,CAAA;IACpG,CAAC;CACF"}
@@ -0,0 +1,78 @@
1
+ import { Defaults, HttpError, RequestOpts } from '@oazapfts/runtime';
2
+ import { StackspotAPIError } from '../error/StackspotAPIError.js';
3
+ import { NetworkClient } from './NetworkClient.js';
4
+ import { Env, InfiniteQueryConfig, InfiniteQueryObject, InfiniteQueryOptions, MutationObject, OperationConfig, OperationObject, QueryObject } from './types.js';
5
+ export declare const DEFAULT_PAGE_SIZE = 20;
6
+ /**
7
+ * A Network Client that uses oazapfts for making requests and React Query for managing responses.
8
+ */
9
+ export declare abstract class ReactQueryNetworkClient extends NetworkClient {
10
+ #private;
11
+ /**
12
+ * @param baseURL An object with the keys "dev", "stg" and "prd". The values must be the url for each of these environments.
13
+ * @param defaults the `default` object of the API this client is for (provided by the code generated by oazapfts).
14
+ */
15
+ constructor(baseURL: Record<Env, string>, defaults: Defaults<any>);
16
+ /**
17
+ * Receives an HttpError and returns a StackspotAPIError.
18
+ * @param error the original HttpError created by oazapfts.
19
+ */
20
+ protected abstract buildStackSpotError(error: HttpError): StackspotAPIError;
21
+ /**
22
+ * Builds a query manually by using a configuration object.
23
+ * @param config the configuration object containing the name, a request function and a permission function.
24
+ */
25
+ protected query<Args extends [AbortSignal, Record<string, any>] | [AbortSignal], Result>(config: OperationConfig<Args, Result>): QueryObject<Args extends [AbortSignal] ? void : Args[1], Result>;
26
+ /**
27
+ * Builds a query manually by using a configuration object.
28
+ * @param config the configuration object containing the name and a request function.
29
+ */
30
+ protected query<Args extends [AbortSignal, Record<string, any>] | [AbortSignal], Result>(config: Omit<OperationConfig<Args, Result>, 'permission'>): Omit<QueryObject<Args extends [AbortSignal] ? void : Args[1], Result>, 'isAllowed' | 'useAllowed' | 'getPermissionKey'>;
31
+ /**
32
+ * Builds a query automatically by using a function generated by oazapfts.
33
+ * @param fn the oazapfts function.
34
+ */
35
+ protected query<Args extends [opts?: RequestOpts] | [variables: Record<string, any>, opts?: RequestOpts], Result>(fn: (...args: Args) => Promise<Result>): Args extends [variables: infer Variables, opts?: RequestOpts] ? QueryObject<Variables, Result> : QueryObject<void, Result>;
36
+ /**
37
+ * Builds a query manually by using a configuration object.
38
+ * @param config the configuration object containing the name, a request function and a permission function.
39
+ */
40
+ protected infiniteQuery<Variables extends Record<string, any>, Result, PageParamName extends keyof Variables, Accumulator extends keyof Result | ''>(config: InfiniteQueryConfig<Variables, Result, PageParamName, Accumulator>): InfiniteQueryObject<Variables, Result, Accumulator>;
41
+ /**
42
+ * Builds a query manually by using a configuration object.
43
+ * @param config the configuration object containing the name and a request function.
44
+ */
45
+ protected infiniteQuery<Variables extends Record<string, any>, Result, PageParamName extends keyof Variables, Accumulator extends keyof Result | ''>(config: Omit<InfiniteQueryConfig<Variables, Result, PageParamName, Accumulator>, 'permission'>): Omit<InfiniteQueryObject<Variables, Result, Accumulator>, 'isAllowed' | 'useAllowed' | 'getPermissionKey'>;
46
+ /**
47
+ * Builds a query automatically by using a function generated by oazapfts.
48
+ * @param fn the oazapfts function.
49
+ * @param options the configuration for the infinite query.
50
+ */
51
+ protected infiniteQuery<Variables extends Record<string, any>, Result, PageParamName extends keyof Variables, Accumulator extends keyof Result>(fn: (variables: Variables, opts?: RequestOpts) => Promise<Result>, options: Partial<InfiniteQueryOptions<Variables, Result, PageParamName, Accumulator>>): InfiniteQueryObject<Variables, Result, Accumulator>;
52
+ /**
53
+ * Builds a query automatically by using a function generated by oazapfts with the variables `page` and `size`.
54
+ * @param fn the oazapfts function that returns an array.
55
+ * @param options optional configuration for the infinite query. By default, it will use the variables page and size of the function
56
+ * passed in the first parameter.
57
+ */
58
+ protected infiniteQuery<Variables extends {
59
+ page?: number;
60
+ size?: number;
61
+ }, Result extends any[], PageParamName extends keyof Variables = 'page', Accumulator extends keyof Result | '' = ''>(fn: (variables: Variables, opts?: RequestOpts) => Promise<Result>, options?: Partial<InfiniteQueryOptions<Variables, Result, PageParamName, Accumulator>>): InfiniteQueryObject<Variables, Result, Accumulator>;
62
+ /**
63
+ * Builds a mutation manually by using a configuration object.
64
+ * @param config the configuration object containing the name, a request function and a permission function.
65
+ */
66
+ protected mutation<Args extends [AbortSignal, Record<string, any>] | [AbortSignal], Result>(config: OperationConfig<Args, Result>): MutationObject<Args extends [AbortSignal] ? void : Args[1], Result>;
67
+ /**
68
+ * Builds a mutation manually by using a configuration object.
69
+ * @param config the configuration object containing the name and a request function.
70
+ */
71
+ protected mutation<Args extends [AbortSignal, Record<string, any>] | [AbortSignal], Result>(config: Omit<OperationConfig<Args, Result>, 'permission'>): Omit<MutationObject<Args extends [AbortSignal] ? void : Args[1], Result>, keyof OperationObject<any>>;
72
+ /**
73
+ * Builds a mutation automatically by using a function generated by oazapfts.
74
+ * @param fn the oazapfts function.
75
+ */
76
+ protected mutation<Args extends [opts?: RequestOpts] | [variables: Record<string, any>, opts?: RequestOpts], Result>(fn: (...args: Args) => Promise<Result>): Args extends [variables: infer Variables, opts?: RequestOpts] ? MutationObject<Variables, Result> : MutationObject<void, Result>;
77
+ }
78
+ //# sourceMappingURL=ReactQueryNetworkClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReactQueryNetworkClient.d.ts","sourceRoot":"","sources":["../../src/network/ReactQueryNetworkClient.ts"],"names":[],"mappings":"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"}