@stack-spot/portal-network 0.1.0 → 0.3.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.
Files changed (163) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/package.json +7 -6
  3. package/src/apis.json +2 -10
  4. package/src/client/account.ts +111 -4
  5. package/src/error/CanceledError.ts +3 -0
  6. package/src/error/DefaultAPIError.ts +27 -1
  7. package/src/error/StackspotAPIError.ts +33 -1
  8. package/src/index.ts +1 -0
  9. package/src/network/AutoInfiniteQuery.ts +104 -0
  10. package/src/network/AutoOperation.ts +7 -1
  11. package/src/network/AutoQuery.ts +2 -1
  12. package/src/network/ManualInfiniteQuery.ts +95 -0
  13. package/src/network/ManualQuery.ts +2 -2
  14. package/src/network/NetworkClient.ts +53 -41
  15. package/src/network/ReactQueryNetworkClient.ts +131 -33
  16. package/src/network/react-query-client.ts +3 -0
  17. package/src/network/types.ts +207 -11
  18. package/src/utils/use-extended-list.ts +80 -0
  19. package/.generate-api.failed.json +0 -1
  20. package/dist/api/account.d.ts +0 -2368
  21. package/dist/api/account.d.ts.map +0 -1
  22. package/dist/api/account.js +0 -1521
  23. package/dist/api/account.js.map +0 -1
  24. package/dist/api/ai.d.ts +0 -1432
  25. package/dist/api/ai.d.ts.map +0 -1
  26. package/dist/api/ai.js +0 -1342
  27. package/dist/api/ai.js.map +0 -1
  28. package/dist/api/apiRuntime.d.ts +0 -922
  29. package/dist/api/apiRuntime.d.ts.map +0 -1
  30. package/dist/api/apiRuntime.js +0 -599
  31. package/dist/api/apiRuntime.js.map +0 -1
  32. package/dist/api/cloudAccount.d.ts +0 -473
  33. package/dist/api/cloudAccount.d.ts.map +0 -1
  34. package/dist/api/cloudAccount.js +0 -300
  35. package/dist/api/cloudAccount.js.map +0 -1
  36. package/dist/api/cloudServices.d.ts +0 -1233
  37. package/dist/api/cloudServices.d.ts.map +0 -1
  38. package/dist/api/cloudServices.js +0 -715
  39. package/dist/api/cloudServices.js.map +0 -1
  40. package/dist/api/insights.d.ts +0 -123
  41. package/dist/api/insights.d.ts.map +0 -1
  42. package/dist/api/insights.js +0 -112
  43. package/dist/api/insights.js.map +0 -1
  44. package/dist/api/plugin.d.ts +0 -368
  45. package/dist/api/plugin.d.ts.map +0 -1
  46. package/dist/api/plugin.js +0 -218
  47. package/dist/api/plugin.js.map +0 -1
  48. package/dist/api/serviceCatalog.d.ts +0 -737
  49. package/dist/api/serviceCatalog.d.ts.map +0 -1
  50. package/dist/api/serviceCatalog.js +0 -611
  51. package/dist/api/serviceCatalog.js.map +0 -1
  52. package/dist/api/workflows.d.ts +0 -366
  53. package/dist/api/workflows.d.ts.map +0 -1
  54. package/dist/api/workflows.js +0 -175
  55. package/dist/api/workflows.js.map +0 -1
  56. package/dist/api/workspace.js +0 -1476
  57. package/dist/api/workspace.js.map +0 -1
  58. package/dist/api/workspaceManager.d.ts +0 -1121
  59. package/dist/api/workspaceManager.d.ts.map +0 -1
  60. package/dist/api/workspaceManager.js +0 -357
  61. package/dist/api/workspaceManager.js.map +0 -1
  62. package/dist/api/workspaceSearchEngine.d.ts +0 -93
  63. package/dist/api/workspaceSearchEngine.d.ts.map +0 -1
  64. package/dist/api/workspaceSearchEngine.js +0 -55
  65. package/dist/api/workspaceSearchEngine.js.map +0 -1
  66. package/dist/apis.json +0 -129
  67. package/dist/client/account.d.ts +0 -46
  68. package/dist/client/account.d.ts.map +0 -1
  69. package/dist/client/account.js +0 -104
  70. package/dist/client/account.js.map +0 -1
  71. package/dist/error/CanceledError.d.ts +0 -5
  72. package/dist/error/CanceledError.d.ts.map +0 -1
  73. package/dist/error/CanceledError.js +0 -7
  74. package/dist/error/CanceledError.js.map +0 -1
  75. package/dist/error/DefaultAPIError.d.ts +0 -9
  76. package/dist/error/DefaultAPIError.d.ts.map +0 -1
  77. package/dist/error/DefaultAPIError.js +0 -58
  78. package/dist/error/DefaultAPIError.js.map +0 -1
  79. package/dist/error/StackspotAPIError.d.ts +0 -19
  80. package/dist/error/StackspotAPIError.d.ts.map +0 -1
  81. package/dist/error/StackspotAPIError.js +0 -39
  82. package/dist/error/StackspotAPIError.js.map +0 -1
  83. package/dist/error/dictionary/account.d.ts +0 -55
  84. package/dist/error/dictionary/account.d.ts.map +0 -1
  85. package/dist/error/dictionary/account.js +0 -55
  86. package/dist/error/dictionary/account.js.map +0 -1
  87. package/dist/error/dictionary/action.d.ts +0 -163
  88. package/dist/error/dictionary/action.d.ts.map +0 -1
  89. package/dist/error/dictionary/action.js +0 -163
  90. package/dist/error/dictionary/action.js.map +0 -1
  91. package/dist/error/dictionary/base.d.ts +0 -21
  92. package/dist/error/dictionary/base.d.ts.map +0 -1
  93. package/dist/error/dictionary/base.js +0 -21
  94. package/dist/error/dictionary/base.js.map +0 -1
  95. package/dist/error/dictionary/cnt-fields.d.ts +0 -13
  96. package/dist/error/dictionary/cnt-fields.d.ts.map +0 -1
  97. package/dist/error/dictionary/cnt-fields.js +0 -13
  98. package/dist/error/dictionary/cnt-fields.js.map +0 -1
  99. package/dist/error/dictionary/cnt.d.ts +0 -79
  100. package/dist/error/dictionary/cnt.d.ts.map +0 -1
  101. package/dist/error/dictionary/cnt.js +0 -79
  102. package/dist/error/dictionary/cnt.js.map +0 -1
  103. package/dist/error/dictionary/rte.d.ts +0 -23
  104. package/dist/error/dictionary/rte.d.ts.map +0 -1
  105. package/dist/error/dictionary/rte.js +0 -23
  106. package/dist/error/dictionary/rte.js.map +0 -1
  107. package/dist/error/dictionary/rtm.d.ts +0 -9
  108. package/dist/error/dictionary/rtm.d.ts.map +0 -1
  109. package/dist/error/dictionary/rtm.js +0 -9
  110. package/dist/error/dictionary/rtm.js.map +0 -1
  111. package/dist/error/dictionary/workspace-fields.d.ts +0 -9
  112. package/dist/error/dictionary/workspace-fields.d.ts.map +0 -1
  113. package/dist/error/dictionary/workspace-fields.js +0 -9
  114. package/dist/error/dictionary/workspace-fields.js.map +0 -1
  115. package/dist/error/dictionary/workspace.d.ts +0 -99
  116. package/dist/error/dictionary/workspace.d.ts.map +0 -1
  117. package/dist/error/dictionary/workspace.js +0 -99
  118. package/dist/error/dictionary/workspace.js.map +0 -1
  119. package/dist/index.d.ts +0 -6
  120. package/dist/index.d.ts.map +0 -1
  121. package/dist/index.js +0 -6
  122. package/dist/index.js.map +0 -1
  123. package/dist/network/AutoMutation.d.ts +0 -10
  124. package/dist/network/AutoMutation.d.ts.map +0 -1
  125. package/dist/network/AutoMutation.js +0 -20
  126. package/dist/network/AutoMutation.js.map +0 -1
  127. package/dist/network/AutoOperation.d.ts +0 -19
  128. package/dist/network/AutoOperation.d.ts.map +0 -1
  129. package/dist/network/AutoOperation.js +0 -99
  130. package/dist/network/AutoOperation.js.map +0 -1
  131. package/dist/network/AutoQuery.d.ts +0 -19
  132. package/dist/network/AutoQuery.d.ts.map +0 -1
  133. package/dist/network/AutoQuery.js +0 -70
  134. package/dist/network/AutoQuery.js.map +0 -1
  135. package/dist/network/ManualMutation.d.ts +0 -11
  136. package/dist/network/ManualMutation.d.ts.map +0 -1
  137. package/dist/network/ManualMutation.js +0 -32
  138. package/dist/network/ManualMutation.js.map +0 -1
  139. package/dist/network/ManualOperation.d.ts +0 -13
  140. package/dist/network/ManualOperation.d.ts.map +0 -1
  141. package/dist/network/ManualOperation.js +0 -53
  142. package/dist/network/ManualOperation.js.map +0 -1
  143. package/dist/network/ManualQuery.d.ts +0 -20
  144. package/dist/network/ManualQuery.d.ts.map +0 -1
  145. package/dist/network/ManualQuery.js +0 -77
  146. package/dist/network/ManualQuery.js.map +0 -1
  147. package/dist/network/NetworkClient.d.ts +0 -20
  148. package/dist/network/NetworkClient.d.ts.map +0 -1
  149. package/dist/network/NetworkClient.js +0 -85
  150. package/dist/network/NetworkClient.js.map +0 -1
  151. package/dist/network/ReactQueryNetworkClient.d.ts +0 -16
  152. package/dist/network/ReactQueryNetworkClient.d.ts.map +0 -1
  153. package/dist/network/ReactQueryNetworkClient.js +0 -125
  154. package/dist/network/ReactQueryNetworkClient.js.map +0 -1
  155. package/dist/network/react-query-client.d.ts +0 -3
  156. package/dist/network/react-query-client.d.ts.map +0 -1
  157. package/dist/network/react-query-client.js +0 -3
  158. package/dist/network/react-query-client.js.map +0 -1
  159. package/dist/network/types.d.ts +0 -55
  160. package/dist/network/types.d.ts.map +0 -1
  161. package/dist/network/types.js +0 -2
  162. package/dist/network/types.js.map +0 -1
  163. package/src/api/plugin.ts +0 -685
@@ -0,0 +1,80 @@
1
+ import { useEffect, useRef, useState } from 'react'
2
+
3
+ type ExtensionMap<T> = Record<string, (item: T) => any>
4
+
5
+ type Unpromisify<T> = T extends Promise<infer R> ? R : T
6
+
7
+ type Extension<E extends ExtensionMap<any>> = { [K in keyof E]?: Unpromisify<ReturnType<E[K]>> }
8
+
9
+ type ItemWithExtensions<T, E extends ExtensionMap<T>> = T & Extension<E>
10
+
11
+ /**
12
+ * Computes the given extensions for the items in the list passed as parameter. An extension will, most of the times, return a promise,
13
+ * but it can return whatever you'd like.
14
+ *
15
+ * If the extensions are promises and are still loading, the items won't have the corresponding keys.
16
+ *
17
+ * Attention: once an extension is calculated for an item, it's never calculated again. An item is identified by the parameter "idProp"
18
+ * (3rd), which is "id" by default.
19
+ *
20
+ * @example
21
+ * ```
22
+ * const [groups] = accountClient.memberGroups.useInfiniteQuery({ memberId: 'someId' })
23
+ * const extendedGroups = useExtendedList(groups, {
24
+ * canRemoveMemberFromGroup: group => accountClient.removeMemberFromGroup.isAllowed({ groupId: group.id, memberId: 'someId' }),
25
+ * title: group => `${group.name} (${group.totalUsers})`,
26
+ * })
27
+ * ```
28
+ * Above, each item in `extendedGroups` will have the properties `canRemoveMemberFromGroup` and `title`, once all permission have been
29
+ * fetched.
30
+ *
31
+ * @param list the items to compute extensions for.
32
+ * @param extensions an object where the keys are the extension names and the values are functions that return the value of the extension.
33
+ * @param idProp the name of the property that can be used as an id. 'id' by default.
34
+ * @returns an array with 2 items:
35
+ * - [0]: the list with the permission properties.
36
+ * - [1]: true if waiting for a promise, false otherwise.
37
+ */
38
+ export function useExtendedList<T, E extends ExtensionMap<T>>(
39
+ list: T[], extensions: E, idProp: keyof T,
40
+ ): [ItemWithExtensions<T, E>[], boolean]
41
+ export function useExtendedList<T extends { id: string }, E extends ExtensionMap<T>>(
42
+ list: T[], extensions: E, idProp?: keyof T,
43
+ ): [ItemWithExtensions<T, E>[], boolean]
44
+ export function useExtendedList<T, E extends ExtensionMap<T>>(
45
+ list: T[], extensions: E, idProp = 'id' as keyof T,
46
+ ): [ItemWithExtensions<T, E>[], boolean] {
47
+ const [listWithExtensions, setListWithExtensions] = useState(list as ItemWithExtensions<T, E>[])
48
+ const [isLoading, setLoading] = useState(true)
49
+ const extensionMap = useRef(new Map<any, Extension<E>>())
50
+ const listId = list.map(i => i[idProp]).join(';')
51
+
52
+ useEffect(() => {
53
+ async function update() {
54
+ setLoading(true)
55
+ const newList = await Promise.all(list.map(async (item) => {
56
+ const itemExtensions: Extension<E> = extensionMap.current.get(item[idProp]) ?? {}
57
+ if (Object.keys(itemExtensions).length === 0) {
58
+ await Promise.all(Object.keys(extensions).map(async (key: keyof E) => {
59
+ try {
60
+ // "await" because it might be a promise
61
+ itemExtensions[key] = await extensions[key](item)
62
+ } catch (error) {
63
+ // eslint-disable-next-line no-console
64
+ console.error(`Failed to compute extension "${String(key)}" for item with id "${item[idProp]}". It will have undefined as its value, which may cause errors ahead. Caused by the error below:`)
65
+ // eslint-disable-next-line no-console
66
+ console.error(error)
67
+ }
68
+ }))
69
+ extensionMap.current.set(item[idProp], itemExtensions)
70
+ }
71
+ return { ...item, ...itemExtensions }
72
+ }))
73
+ setLoading(false)
74
+ setListWithExtensions(newList)
75
+ }
76
+ update()
77
+ }, [listId])
78
+
79
+ return [listWithExtensions.length ? listWithExtensions : list as ItemWithExtensions<T, E>[], isLoading]
80
+ }
@@ -1 +0,0 @@
1
- ["apiManagement","content","dataPlatform"]