@equinor/fusion-framework-module-services 5.1.1-msal-0b0dadf270ee512f019a325c2f1586f91f9150a4 → 5.1.2

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 (254) hide show
  1. package/CHANGELOG.md +114 -98
  2. package/dist/esm/bookmarks/api-version.js.map +1 -1
  3. package/dist/esm/bookmarks/client.js.map +1 -1
  4. package/dist/esm/bookmarks/endpoints/bookmark-apply.get.js.map +1 -1
  5. package/dist/esm/bookmarks/endpoints/bookmark.delete.js.map +1 -1
  6. package/dist/esm/bookmarks/endpoints/bookmark.get.js.map +1 -1
  7. package/dist/esm/bookmarks/endpoints/bookmark.patch.js.map +1 -1
  8. package/dist/esm/bookmarks/endpoints/bookmark.post.js.map +1 -1
  9. package/dist/esm/bookmarks/endpoints/user-bookmark-favourite.delete.js.map +1 -1
  10. package/dist/esm/bookmarks/endpoints/user-bookmark-favourite.head.js.map +1 -1
  11. package/dist/esm/bookmarks/endpoints/user-bookmark-favourite.post.js.map +1 -1
  12. package/dist/esm/bookmarks/endpoints/user-bookmarks.get.js.map +1 -1
  13. package/dist/esm/bookmarks/schemas.js +1 -3
  14. package/dist/esm/bookmarks/schemas.js.map +1 -1
  15. package/dist/esm/bookmarks/selectors.js.map +1 -1
  16. package/dist/esm/context/client.js +2 -2
  17. package/dist/esm/context/client.js.map +1 -1
  18. package/dist/esm/context/get/client.js.map +1 -1
  19. package/dist/esm/context/get/generate-endpoint.js +0 -1
  20. package/dist/esm/context/get/generate-endpoint.js.map +1 -1
  21. package/dist/esm/context/get/generate-parameters.js.map +1 -1
  22. package/dist/esm/context/get/types.js.map +1 -1
  23. package/dist/esm/context/index.js.map +1 -1
  24. package/dist/esm/context/query/client.js.map +1 -1
  25. package/dist/esm/context/query/generate-endpoint.js +58 -13
  26. package/dist/esm/context/query/generate-endpoint.js.map +1 -1
  27. package/dist/esm/context/query/generate-parameters.js.map +1 -1
  28. package/dist/esm/context/query/types.js.map +1 -1
  29. package/dist/esm/context/related/client.js.map +1 -1
  30. package/dist/esm/context/related/generate-endpoint.js +56 -13
  31. package/dist/esm/context/related/generate-endpoint.js.map +1 -1
  32. package/dist/esm/context/related/generate-parameters.js.map +1 -1
  33. package/dist/esm/context/related/types.js.map +1 -1
  34. package/dist/esm/context/static.js.map +1 -1
  35. package/dist/esm/errors.js.map +1 -1
  36. package/dist/esm/module.js.map +1 -1
  37. package/dist/esm/notification/client.js.map +1 -1
  38. package/dist/esm/notification/notification/delete/client.js.map +1 -1
  39. package/dist/esm/notification/notification/delete/generate-endpoint.js +0 -1
  40. package/dist/esm/notification/notification/delete/generate-endpoint.js.map +1 -1
  41. package/dist/esm/notification/notification/delete/generate-parameters.js.map +1 -1
  42. package/dist/esm/notification/notification/get/client.js.map +1 -1
  43. package/dist/esm/notification/notification/get/generate-endpoint.js +0 -1
  44. package/dist/esm/notification/notification/get/generate-endpoint.js.map +1 -1
  45. package/dist/esm/notification/notification/get/generate-parameters.js.map +1 -1
  46. package/dist/esm/notification/notification/getAll/client.js.map +1 -1
  47. package/dist/esm/notification/notification/getAll/generate-endpoint.js +0 -1
  48. package/dist/esm/notification/notification/getAll/generate-endpoint.js.map +1 -1
  49. package/dist/esm/notification/notification/getAll/generate-parameters.js.map +1 -1
  50. package/dist/esm/notification/notification/patch/client.js.map +1 -1
  51. package/dist/esm/notification/notification/patch/generate-endpoint.js +0 -1
  52. package/dist/esm/notification/notification/patch/generate-endpoint.js.map +1 -1
  53. package/dist/esm/notification/notification/patch/generate-parameters.js.map +1 -1
  54. package/dist/esm/notification/notification/post/client.js.map +1 -1
  55. package/dist/esm/notification/notification/post/generate-endpoint.js +0 -1
  56. package/dist/esm/notification/notification/post/generate-endpoint.js.map +1 -1
  57. package/dist/esm/notification/notification/post/generate-parameters.js.map +1 -1
  58. package/dist/esm/notification/settings/get/client.js.map +1 -1
  59. package/dist/esm/notification/settings/get/generate-endpoint.js +0 -1
  60. package/dist/esm/notification/settings/get/generate-endpoint.js.map +1 -1
  61. package/dist/esm/notification/settings/get/generate-parameters.js.map +1 -1
  62. package/dist/esm/notification/settings/put/client.js.map +1 -1
  63. package/dist/esm/notification/settings/put/generate-endpoint.js +0 -1
  64. package/dist/esm/notification/settings/put/generate-endpoint.js.map +1 -1
  65. package/dist/esm/notification/settings/put/generate-parameters.js.map +1 -1
  66. package/dist/esm/notification/static.js.map +1 -1
  67. package/dist/esm/people/client.js.map +1 -1
  68. package/dist/esm/people/person-details/client.js.map +1 -1
  69. package/dist/esm/people/person-details/generate-endpoint.js.map +1 -1
  70. package/dist/esm/people/person-details/generate-parameters.js.map +1 -1
  71. package/dist/esm/people/person-photo/client.js.map +1 -1
  72. package/dist/esm/people/person-photo/generate-endpoint.js.map +1 -1
  73. package/dist/esm/people/person-photo/generate-parameters.js.map +1 -1
  74. package/dist/esm/people/query/client.js.map +1 -1
  75. package/dist/esm/people/query/generate-endpoint.js.map +1 -1
  76. package/dist/esm/people/query/generate-parameters.js.map +1 -1
  77. package/dist/esm/people/static.js.map +1 -1
  78. package/dist/esm/people/utils.js.map +1 -1
  79. package/dist/esm/provider.js.map +1 -1
  80. package/dist/esm/utils.js.map +1 -1
  81. package/dist/esm/version.js +1 -1
  82. package/dist/tsconfig.tsbuildinfo +1 -1
  83. package/dist/types/bookmarks/api-version.d.ts +2 -2
  84. package/dist/types/bookmarks/client.d.ts +8 -8
  85. package/dist/types/bookmarks/endpoints/bookmark-apply.get.d.ts +1 -1
  86. package/dist/types/bookmarks/endpoints/bookmark.delete.d.ts +1 -1
  87. package/dist/types/bookmarks/endpoints/bookmark.get.d.ts +1 -1
  88. package/dist/types/bookmarks/endpoints/bookmark.patch.d.ts +1 -1
  89. package/dist/types/bookmarks/endpoints/bookmark.post.d.ts +1 -1
  90. package/dist/types/bookmarks/endpoints/user-bookmark-favourite.delete.d.ts +1 -1
  91. package/dist/types/bookmarks/endpoints/user-bookmark-favourite.head.d.ts +1 -1
  92. package/dist/types/bookmarks/endpoints/user-bookmark-favourite.post.d.ts +1 -1
  93. package/dist/types/bookmarks/endpoints/user-bookmarks.get.d.ts +1 -1
  94. package/dist/types/bookmarks/selectors.d.ts +1 -1
  95. package/dist/types/bookmarks/types.d.ts +1 -1
  96. package/dist/types/configurator.d.ts +1 -1
  97. package/dist/types/context/client.d.ts +4 -4
  98. package/dist/types/context/get/client.d.ts +3 -2
  99. package/dist/types/context/get/generate-endpoint.d.ts +2 -1
  100. package/dist/types/context/get/generate-parameters.d.ts +2 -1
  101. package/dist/types/context/get/types.d.ts +2 -2
  102. package/dist/types/context/index.d.ts +1 -0
  103. package/dist/types/context/query/client.d.ts +3 -2
  104. package/dist/types/context/query/generate-endpoint.d.ts +11 -1
  105. package/dist/types/context/query/generate-parameters.d.ts +3 -2
  106. package/dist/types/context/query/types.d.ts +2 -2
  107. package/dist/types/context/related/client.d.ts +3 -2
  108. package/dist/types/context/related/generate-endpoint.d.ts +11 -1
  109. package/dist/types/context/related/generate-parameters.d.ts +3 -2
  110. package/dist/types/context/related/types.d.ts +2 -2
  111. package/dist/types/context/static.d.ts +2 -2
  112. package/dist/types/module.d.ts +2 -2
  113. package/dist/types/notification/client.d.ts +9 -9
  114. package/dist/types/notification/notification/delete/client.d.ts +4 -3
  115. package/dist/types/notification/notification/delete/generate-endpoint.d.ts +2 -1
  116. package/dist/types/notification/notification/delete/generate-parameters.d.ts +4 -3
  117. package/dist/types/notification/notification/delete/types.d.ts +3 -3
  118. package/dist/types/notification/notification/get/client.d.ts +4 -3
  119. package/dist/types/notification/notification/get/generate-endpoint.d.ts +2 -1
  120. package/dist/types/notification/notification/get/generate-parameters.d.ts +4 -3
  121. package/dist/types/notification/notification/get/types.d.ts +3 -3
  122. package/dist/types/notification/notification/getAll/client.d.ts +4 -3
  123. package/dist/types/notification/notification/getAll/generate-endpoint.d.ts +2 -1
  124. package/dist/types/notification/notification/getAll/generate-parameters.d.ts +4 -3
  125. package/dist/types/notification/notification/getAll/types.d.ts +3 -3
  126. package/dist/types/notification/notification/patch/client.d.ts +4 -3
  127. package/dist/types/notification/notification/patch/generate-endpoint.d.ts +2 -1
  128. package/dist/types/notification/notification/patch/generate-parameters.d.ts +4 -3
  129. package/dist/types/notification/notification/patch/types.d.ts +3 -3
  130. package/dist/types/notification/notification/post/client.d.ts +4 -3
  131. package/dist/types/notification/notification/post/generate-endpoint.d.ts +2 -1
  132. package/dist/types/notification/notification/post/generate-parameters.d.ts +4 -3
  133. package/dist/types/notification/notification/post/types.d.ts +3 -3
  134. package/dist/types/notification/settings/get/client.d.ts +4 -3
  135. package/dist/types/notification/settings/get/generate-endpoint.d.ts +2 -1
  136. package/dist/types/notification/settings/get/generate-parameters.d.ts +4 -3
  137. package/dist/types/notification/settings/get/types.d.ts +3 -3
  138. package/dist/types/notification/settings/put/client.d.ts +4 -3
  139. package/dist/types/notification/settings/put/generate-endpoint.d.ts +2 -1
  140. package/dist/types/notification/settings/put/generate-parameters.d.ts +4 -3
  141. package/dist/types/notification/settings/put/types.d.ts +3 -3
  142. package/dist/types/notification/static.d.ts +2 -2
  143. package/dist/types/people/api-models.d.ts +2 -2
  144. package/dist/types/people/api-models.v2.d.ts +1 -1
  145. package/dist/types/people/api-models.v4.d.ts +1 -1
  146. package/dist/types/people/client.d.ts +4 -4
  147. package/dist/types/people/person-details/client.d.ts +2 -2
  148. package/dist/types/people/person-details/generate-parameters.d.ts +1 -1
  149. package/dist/types/people/person-details/types.d.ts +1 -1
  150. package/dist/types/people/person-photo/client.d.ts +2 -2
  151. package/dist/types/people/person-photo/generate-parameters.d.ts +1 -1
  152. package/dist/types/people/person-photo/types.d.ts +2 -2
  153. package/dist/types/people/query/client.d.ts +2 -2
  154. package/dist/types/people/query/generate-parameters.d.ts +1 -1
  155. package/dist/types/people/query/types.d.ts +2 -2
  156. package/dist/types/people/static.d.ts +2 -2
  157. package/dist/types/people/utils.d.ts +1 -1
  158. package/dist/types/provider.d.ts +3 -3
  159. package/dist/types/types.d.ts +1 -1
  160. package/dist/types/utils.d.ts +1 -1
  161. package/dist/types/version.d.ts +1 -1
  162. package/package.json +11 -7
  163. package/src/bookmarks/api-version.ts +2 -2
  164. package/src/bookmarks/client.ts +228 -231
  165. package/src/bookmarks/endpoints/bookmark-apply.get.ts +58 -58
  166. package/src/bookmarks/endpoints/bookmark.delete.ts +57 -57
  167. package/src/bookmarks/endpoints/bookmark.get.ts +62 -62
  168. package/src/bookmarks/endpoints/bookmark.patch.ts +78 -78
  169. package/src/bookmarks/endpoints/bookmark.post.ts +68 -68
  170. package/src/bookmarks/endpoints/user-bookmark-favourite.delete.ts +57 -57
  171. package/src/bookmarks/endpoints/user-bookmark-favourite.head.ts +57 -57
  172. package/src/bookmarks/endpoints/user-bookmark-favourite.post.ts +58 -58
  173. package/src/bookmarks/endpoints/user-bookmarks.get.ts +98 -98
  174. package/src/bookmarks/schemas.ts +54 -56
  175. package/src/bookmarks/selectors.ts +24 -24
  176. package/src/bookmarks/types.ts +6 -6
  177. package/src/configurator.ts +3 -3
  178. package/src/context/api-models.ts +19 -19
  179. package/src/context/client.ts +68 -58
  180. package/src/context/get/client.ts +18 -18
  181. package/src/context/get/generate-endpoint.ts +13 -14
  182. package/src/context/get/generate-parameters.ts +9 -9
  183. package/src/context/get/types.ts +20 -20
  184. package/src/context/index.ts +2 -0
  185. package/src/context/query/client.ts +22 -22
  186. package/src/context/query/generate-endpoint.ts +97 -49
  187. package/src/context/query/generate-parameters.ts +10 -10
  188. package/src/context/query/types.ts +25 -25
  189. package/src/context/related/client.ts +22 -22
  190. package/src/context/related/generate-endpoint.ts +92 -45
  191. package/src/context/related/generate-parameters.ts +10 -10
  192. package/src/context/related/types.ts +27 -27
  193. package/src/context/static.ts +3 -3
  194. package/src/errors.ts +6 -6
  195. package/src/module.ts +50 -52
  196. package/src/notification/api-models.ts +36 -36
  197. package/src/notification/client.ts +131 -151
  198. package/src/notification/notification/delete/client.ts +22 -22
  199. package/src/notification/notification/delete/generate-endpoint.ts +13 -14
  200. package/src/notification/notification/delete/generate-parameters.ts +18 -18
  201. package/src/notification/notification/delete/types.ts +21 -21
  202. package/src/notification/notification/get/client.ts +19 -19
  203. package/src/notification/notification/get/generate-endpoint.ts +13 -14
  204. package/src/notification/notification/get/generate-parameters.ts +11 -11
  205. package/src/notification/notification/get/types.ts +21 -21
  206. package/src/notification/notification/getAll/client.ts +22 -22
  207. package/src/notification/notification/getAll/generate-endpoint.ts +13 -14
  208. package/src/notification/notification/getAll/generate-parameters.ts +11 -11
  209. package/src/notification/notification/getAll/types.ts +21 -21
  210. package/src/notification/notification/patch/client.ts +22 -22
  211. package/src/notification/notification/patch/generate-endpoint.ts +13 -14
  212. package/src/notification/notification/patch/generate-parameters.ts +18 -18
  213. package/src/notification/notification/patch/types.ts +22 -22
  214. package/src/notification/notification/post/client.ts +22 -22
  215. package/src/notification/notification/post/generate-endpoint.ts +13 -14
  216. package/src/notification/notification/post/generate-parameters.ts +18 -18
  217. package/src/notification/notification/post/types.ts +31 -31
  218. package/src/notification/settings/get/client.ts +22 -22
  219. package/src/notification/settings/get/generate-endpoint.ts +13 -14
  220. package/src/notification/settings/get/generate-parameters.ts +11 -11
  221. package/src/notification/settings/get/types.ts +21 -21
  222. package/src/notification/settings/put/client.ts +22 -22
  223. package/src/notification/settings/put/generate-endpoint.ts +13 -14
  224. package/src/notification/settings/put/generate-parameters.ts +20 -20
  225. package/src/notification/settings/put/types.ts +20 -20
  226. package/src/notification/static.ts +3 -3
  227. package/src/people/api-models.ts +30 -30
  228. package/src/people/api-models.v2.ts +27 -27
  229. package/src/people/api-models.v4.ts +79 -79
  230. package/src/people/client.ts +73 -77
  231. package/src/people/person-details/client.ts +21 -18
  232. package/src/people/person-details/generate-endpoint.ts +16 -16
  233. package/src/people/person-details/generate-parameters.ts +8 -8
  234. package/src/people/person-details/types.ts +13 -13
  235. package/src/people/person-photo/client.ts +19 -22
  236. package/src/people/person-photo/generate-endpoint.ts +13 -13
  237. package/src/people/person-photo/generate-parameters.ts +8 -8
  238. package/src/people/person-photo/types.ts +8 -8
  239. package/src/people/query/client.ts +20 -18
  240. package/src/people/query/generate-endpoint.ts +14 -14
  241. package/src/people/query/generate-parameters.ts +8 -8
  242. package/src/people/query/types.ts +10 -10
  243. package/src/people/static.ts +2 -2
  244. package/src/people/utils.ts +20 -20
  245. package/src/provider.ts +85 -85
  246. package/src/types.ts +34 -34
  247. package/src/utils.ts +22 -26
  248. package/src/version.ts +1 -1
  249. package/tests/context.test.ts +109 -0
  250. package/tests/mocks/get-context-item.ts +60 -0
  251. package/tests/mocks/index.ts +1 -0
  252. package/tests/setup.ts +73 -0
  253. package/tsconfig.json +4 -3
  254. package/vitest.config.ts +11 -0
@@ -1,25 +1,25 @@
1
- import { BlobResult } from '@equinor/fusion-framework-module-http/client';
1
+ import type { BlobResult } from '@equinor/fusion-framework-module-http/client';
2
2
  import { ApiVersion } from '../static';
3
- import { ClientDataMethod } from '../../types';
3
+ import type { ClientDataMethod } from '../../types';
4
4
 
5
5
  export type SupportedApiVersion = Extract<keyof typeof ApiVersion, 'v2'>;
6
6
 
7
7
  type ApiRequestArgsMap = {
8
- [ApiVersion.v2]: {
9
- azureId: string;
10
- };
8
+ [ApiVersion.v2]: {
9
+ azureId: string;
10
+ };
11
11
  };
12
12
 
13
13
  export type AllowedArgs = ApiRequestArgsMap[keyof ApiRequestArgsMap];
14
14
 
15
15
  export type ApiRequestArgs<T extends SupportedApiVersion> =
16
- ApiRequestArgsMap[(typeof ApiVersion)[T]];
16
+ ApiRequestArgsMap[(typeof ApiVersion)[T]];
17
17
 
18
18
  type ApiResponseTypes = {
19
- [ApiVersion.v2]: BlobResult;
19
+ [ApiVersion.v2]: BlobResult;
20
20
  };
21
21
 
22
22
  export type ApiResponse<T extends SupportedApiVersion> = ApiResponseTypes[(typeof ApiVersion)[T]];
23
23
 
24
24
  export type ApiResult<TMethod extends keyof ClientDataMethod = keyof ClientDataMethod> =
25
- ClientDataMethod[TMethod];
25
+ ClientDataMethod[TMethod];
@@ -1,4 +1,4 @@
1
- import { ClientRequestInit, IHttpClient } from '@equinor/fusion-framework-module-http/client';
1
+ import type { ClientRequestInit, IHttpClient } from '@equinor/fusion-framework-module-http/client';
2
2
 
3
3
  import { generateParameters } from './generate-parameters';
4
4
 
@@ -12,22 +12,24 @@ import type { ApiResponse, ApiResult, ApiRequestArgs, SupportedApiVersion } from
12
12
  * @param method - client method to call
13
13
  */
14
14
  export const client =
15
- <
16
- TVersion extends SupportedApiVersion,
17
- TMethod extends keyof ClientMethod = keyof ClientMethod,
18
- TClient extends IHttpClient = IHttpClient,
19
- TArgs extends ApiRequestArgs<TVersion> = ApiRequestArgs<TVersion>,
20
- >(
21
- client: TClient,
22
- version: TVersion,
23
- method: TMethod = 'json' as TMethod,
24
- ) =>
25
- <T = ApiResponse<TVersion>>(
26
- args: TArgs,
27
- init?: ClientRequestInit<TClient, T>,
28
- ): ApiResult<TVersion, TMethod, T> =>
29
- client[method](
30
- ...generateParameters<T, TVersion, TClient>(version, args, init),
31
- ) as ApiResult<TVersion, TMethod, T>;
15
+ <
16
+ TVersion extends SupportedApiVersion,
17
+ TMethod extends keyof ClientMethod = keyof ClientMethod,
18
+ TClient extends IHttpClient = IHttpClient,
19
+ TArgs extends ApiRequestArgs<TVersion> = ApiRequestArgs<TVersion>,
20
+ >(
21
+ client: TClient,
22
+ version: TVersion,
23
+ method: TMethod = 'json' as TMethod,
24
+ ) =>
25
+ <T = ApiResponse<TVersion>>(
26
+ args: TArgs,
27
+ init?: ClientRequestInit<TClient, T>,
28
+ ): ApiResult<TVersion, TMethod, T> =>
29
+ client[method](...generateParameters<T, TVersion, TClient>(version, args, init)) as ApiResult<
30
+ TVersion,
31
+ TMethod,
32
+ T
33
+ >;
32
34
 
33
35
  export default client;
@@ -7,20 +7,20 @@ import type { ApiRequestArgs, SupportedApiVersion } from './types';
7
7
  * Method for generating endpoint for getting context by id
8
8
  */
9
9
  export const generateEndpoint = <TVersion extends SupportedApiVersion>(
10
- version: TVersion,
11
- args: ApiRequestArgs<TVersion>,
10
+ version: TVersion,
11
+ args: ApiRequestArgs<TVersion>,
12
12
  ) => {
13
- const apiVersion = ApiVersion[version as keyof typeof ApiVersion] ?? version;
14
- switch (apiVersion) {
15
- case ApiVersion.v2: {
16
- const { search } = args;
17
- const params = new URLSearchParams();
18
- params.append('api-version', apiVersion);
19
- params.append('$search', search);
20
- return `/persons?${String(params)}`;
21
- }
22
- default: {
23
- throw new UnsupportedApiVersion(version);
24
- }
13
+ const apiVersion = ApiVersion[version as keyof typeof ApiVersion] ?? version;
14
+ switch (apiVersion) {
15
+ case ApiVersion.v2: {
16
+ const { search } = args;
17
+ const params = new URLSearchParams();
18
+ params.append('api-version', apiVersion);
19
+ params.append('$search', search);
20
+ return `/persons?${String(params)}`;
25
21
  }
22
+ default: {
23
+ throw new UnsupportedApiVersion(version);
24
+ }
25
+ }
26
26
  };
@@ -7,16 +7,16 @@ import type { ApiRequestArgs, SupportedApiVersion } from './types';
7
7
 
8
8
  /** function for creating http client arguments */
9
9
  export const generateParameters = <
10
- TResult,
11
- TVersion extends SupportedApiVersion,
12
- TClient extends IHttpClient = IHttpClient,
10
+ TResult,
11
+ TVersion extends SupportedApiVersion,
12
+ TClient extends IHttpClient = IHttpClient,
13
13
  >(
14
- version: TVersion,
15
- args: ApiRequestArgs<TVersion>,
16
- init?: ClientRequestInit<TClient, TResult>,
14
+ version: TVersion,
15
+ args: ApiRequestArgs<TVersion>,
16
+ init?: ClientRequestInit<TClient, TResult>,
17
17
  ): ApiClientArguments<TClient, TResult> => {
18
- const path = generateEndpoint(version, args);
19
- return [path, init];
18
+ const path = generateEndpoint(version, args);
19
+ return [path, init];
20
20
  };
21
21
 
22
22
  export default generateParameters;
@@ -1,28 +1,28 @@
1
1
  import { ApiVersion } from '../static';
2
- import { ApiPerson_v2 } from '../api-models.v2';
3
- import { ClientMethod } from '../../types';
2
+ import type { ApiPerson_v2 } from '../api-models.v2';
3
+ import type { ClientMethod } from '../../types';
4
4
 
5
5
  export type SupportedApiVersion = Extract<keyof typeof ApiVersion, 'v2'>;
6
6
 
7
7
  type ApiRequestArgsMap = {
8
- [ApiVersion.v2]: {
9
- search: string;
10
- };
8
+ [ApiVersion.v2]: {
9
+ search: string;
10
+ };
11
11
  };
12
12
 
13
13
  export type AllowedArgs = ApiRequestArgsMap[keyof ApiRequestArgsMap];
14
14
 
15
15
  export type ApiRequestArgs<T extends SupportedApiVersion> =
16
- ApiRequestArgsMap[(typeof ApiVersion)[T]];
16
+ ApiRequestArgsMap[(typeof ApiVersion)[T]];
17
17
 
18
18
  type ApiResponseTypes = {
19
- [ApiVersion.v2]: Array<ApiPerson_v2>;
19
+ [ApiVersion.v2]: Array<ApiPerson_v2>;
20
20
  };
21
21
 
22
22
  export type ApiResponse<T extends SupportedApiVersion> = ApiResponseTypes[(typeof ApiVersion)[T]];
23
23
 
24
24
  export type ApiResult<
25
- TVersion extends SupportedApiVersion,
26
- TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>,
27
- TResult = ApiResponse<TVersion>,
25
+ TVersion extends SupportedApiVersion,
26
+ TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>,
27
+ TResult = ApiResponse<TVersion>,
28
28
  > = ClientMethod<TResult>[TMethod];
@@ -1,4 +1,4 @@
1
1
  export enum ApiVersion {
2
- 'v2' = '2.0',
3
- 'v4' = '4.0',
2
+ v2 = '2.0',
3
+ v4 = '4.0',
4
4
  }
@@ -1,29 +1,29 @@
1
- import { ApiPerson } from './api-models';
1
+ import type { ApiPerson } from './api-models';
2
2
  import { ApiVersion } from './static';
3
3
 
4
4
  // type SupportedApiVersion = Extract<keyof typeof ApiVersion, 'v2' | 'v4'>;
5
5
 
6
6
  const requiredApiPersonAttributes = {
7
- [ApiVersion.v2]: [
8
- 'azureUniqueId',
9
- /** TODO - has to be more required attributes to identify V2??? */
10
- ] satisfies Array<keyof ApiPerson<'v2'>>,
11
- [ApiVersion.v4]: [
12
- /** TODO - has to be more required attributes to identify V4??? */
13
- 'azureUniqueId',
14
- ] satisfies Array<keyof ApiPerson<'v4'>>,
7
+ [ApiVersion.v2]: [
8
+ 'azureUniqueId',
9
+ /** TODO - has to be more required attributes to identify V2??? */
10
+ ] satisfies Array<keyof ApiPerson<'v2'>>,
11
+ [ApiVersion.v4]: [
12
+ /** TODO - has to be more required attributes to identify V4??? */
13
+ 'azureUniqueId',
14
+ ] satisfies Array<keyof ApiPerson<'v4'>>,
15
15
  };
16
16
 
17
17
  export const isApiPerson = <V extends keyof typeof ApiVersion>(version: V) => {
18
- /** todo add options for more strict check */
19
- return <T>(value: T): value is T extends ApiPerson<V> ? T : never => {
20
- /** early escape if value is not defined or not a object */
21
- if (typeof value !== 'object') {
22
- return false;
23
- }
24
- const attr = Object.keys(value as object);
25
- const requiredAttr = requiredApiPersonAttributes[ApiVersion[version]];
26
- const result = requiredAttr.every((key) => attr.includes(key));
27
- return result;
28
- };
18
+ /** todo add options for more strict check */
19
+ return <T>(value: T): value is T extends ApiPerson<V> ? T : never => {
20
+ /** early escape if value is not defined or not a object */
21
+ if (typeof value !== 'object') {
22
+ return false;
23
+ }
24
+ const attr = Object.keys(value as object);
25
+ const requiredAttr = requiredApiPersonAttributes[ApiVersion[version]];
26
+ const result = requiredAttr.every((key) => attr.includes(key));
27
+ return result;
28
+ };
29
29
  };
package/src/provider.ts CHANGED
@@ -1,117 +1,117 @@
1
- import { IHttpClient } from '@equinor/fusion-framework-module-http';
2
- import { ClientMethod } from './types';
1
+ import type { IHttpClient } from '@equinor/fusion-framework-module-http';
2
+ import type { ClientMethod } from './types';
3
3
 
4
- import { ApiClientFactory } from './types';
4
+ import type { ApiClientFactory } from './types';
5
5
  import { ContextApiClient } from './context';
6
6
  import BookmarksApiClient from './bookmarks/client';
7
7
  import { NotificationApiClient } from './notification';
8
8
  import { PeopleApiClient } from './people/client';
9
9
 
10
10
  export interface IApiProvider<TClient extends IHttpClient = IHttpClient> {
11
- /**
12
- * @param method - Version of the service to use
13
- */
14
- createBookmarksClient<TMethod extends keyof ClientMethod>(
15
- method: TMethod,
16
- ): Promise<BookmarksApiClient<TMethod, TClient>>;
11
+ /**
12
+ * @param method - Version of the service to use
13
+ */
14
+ createBookmarksClient<TMethod extends keyof ClientMethod>(
15
+ method: TMethod,
16
+ ): Promise<BookmarksApiClient<TMethod, TClient>>;
17
17
 
18
- /**
19
- * @param method - Version of the service to use
20
- */
21
- createContextClient<TMethod extends keyof ClientMethod>(
22
- method: TMethod,
23
- ): Promise<ContextApiClient<TMethod, TClient>>;
24
- /**
25
- * @param method - Version of the service to use
26
- */
27
- createNotificationClient<TMethod extends keyof ClientMethod>(
28
- method: TMethod,
29
- ): Promise<NotificationApiClient<TMethod, TClient>>;
30
- /**
31
- * @param method - Version of the service to use
32
- */
33
- createPeopleClient(): Promise<PeopleApiClient<TClient>>;
18
+ /**
19
+ * @param method - Version of the service to use
20
+ */
21
+ createContextClient<TMethod extends keyof ClientMethod>(
22
+ method: TMethod,
23
+ ): Promise<ContextApiClient<TMethod, TClient>>;
24
+ /**
25
+ * @param method - Version of the service to use
26
+ */
27
+ createNotificationClient<TMethod extends keyof ClientMethod>(
28
+ method: TMethod,
29
+ ): Promise<NotificationApiClient<TMethod, TClient>>;
30
+ /**
31
+ * @param method - Version of the service to use
32
+ */
33
+ createPeopleClient(): Promise<PeopleApiClient<TClient>>;
34
34
  }
35
35
 
36
36
  type ApiProviderCtorArgs<TClient extends IHttpClient = IHttpClient> = {
37
- /** method for creating IHttpClients for api clients */
38
- createClient: ApiClientFactory<TClient>;
37
+ /** method for creating IHttpClients for api clients */
38
+ createClient: ApiClientFactory<TClient>;
39
39
  };
40
40
 
41
41
  // TODO move to own file
42
42
  type ApiProviderErrorResponse = {
43
- type: ResponseType;
44
- status: number;
45
- statusText: string;
46
- headers: Headers;
47
- url: string;
48
- data: unknown;
43
+ type: ResponseType;
44
+ status: number;
45
+ statusText: string;
46
+ headers: Headers;
47
+ url: string;
48
+ data: unknown;
49
49
  };
50
50
 
51
51
  // TODO move to own file
52
52
  export class ApiProviderError extends Error {
53
- readonly response: ApiProviderErrorResponse;
53
+ readonly response: ApiProviderErrorResponse;
54
54
 
55
- constructor(msg: string, response: ApiProviderErrorResponse, options?: ErrorOptions) {
56
- super(msg, options);
57
- this.response = response;
58
- this.name = 'ApiProviderError';
59
- }
55
+ constructor(msg: string, response: ApiProviderErrorResponse, options?: ErrorOptions) {
56
+ super(msg, options);
57
+ this.response = response;
58
+ this.name = 'ApiProviderError';
59
+ }
60
60
  }
61
61
 
62
62
  // TODO move to own file
63
63
  const validateResponse = async (response: Response) => {
64
- if (!response.ok) {
65
- const { headers, status, statusText, type, url, bodyUsed } = response;
66
- const isJson = headers.get('content-type')?.match(/application\/(\w*)?[+]?json/);
67
- const data = !bodyUsed && (await (isJson ? response.json() : response.text()));
68
- throw new ApiProviderError('failed to execute request, response was not ok', {
69
- headers,
70
- status,
71
- statusText,
72
- type,
73
- url,
74
- data,
75
- });
76
- }
64
+ if (!response.ok) {
65
+ const { headers, status, statusText, type, url, bodyUsed } = response;
66
+ const isJson = headers.get('content-type')?.match(/application\/(\w*)?[+]?json/);
67
+ const data = !bodyUsed && (await (isJson ? response.json() : response.text()));
68
+ throw new ApiProviderError('failed to execute request, response was not ok', {
69
+ headers,
70
+ status,
71
+ statusText,
72
+ type,
73
+ url,
74
+ data,
75
+ });
76
+ }
77
77
  };
78
78
 
79
79
  export class ApiProvider<TClient extends IHttpClient = IHttpClient>
80
- implements IApiProvider<TClient>
80
+ implements IApiProvider<TClient>
81
81
  {
82
- protected _createClientFn: ApiClientFactory<TClient>;
83
- constructor({ createClient }: ApiProviderCtorArgs<TClient>) {
84
- this._createClientFn = createClient;
85
- }
82
+ protected _createClientFn: ApiClientFactory<TClient>;
83
+ constructor({ createClient }: ApiProviderCtorArgs<TClient>) {
84
+ this._createClientFn = createClient;
85
+ }
86
86
 
87
- public async createNotificationClient<TMethod extends keyof ClientMethod>(
88
- method: TMethod,
89
- ): Promise<NotificationApiClient<TMethod, TClient>> {
90
- const httpClient = await this._createClientFn('notification');
91
- httpClient.responseHandler.add('validate_api_request', validateResponse);
92
- return new NotificationApiClient(httpClient, method);
93
- }
87
+ public async createNotificationClient<TMethod extends keyof ClientMethod>(
88
+ method: TMethod,
89
+ ): Promise<NotificationApiClient<TMethod, TClient>> {
90
+ const httpClient = await this._createClientFn('notification');
91
+ httpClient.responseHandler.add('validate_api_request', validateResponse);
92
+ return new NotificationApiClient(httpClient, method);
93
+ }
94
94
 
95
- public async createBookmarksClient<TMethod extends keyof ClientMethod>(
96
- method: TMethod,
97
- ): Promise<BookmarksApiClient<TMethod, TClient>> {
98
- const httpClient = await this._createClientFn('bookmarks');
99
- // TODO: update when new ResponseOperator is available
100
- // will fail because 'HEAD' will return 404 when no bookmarks are found
101
- // httpClient.responseHandler.add('validate_api_request', validateResponse);
102
- return new BookmarksApiClient(httpClient, method);
103
- }
95
+ public async createBookmarksClient<TMethod extends keyof ClientMethod>(
96
+ method: TMethod,
97
+ ): Promise<BookmarksApiClient<TMethod, TClient>> {
98
+ const httpClient = await this._createClientFn('bookmarks');
99
+ // TODO: update when new ResponseOperator is available
100
+ // will fail because 'HEAD' will return 404 when no bookmarks are found
101
+ // httpClient.responseHandler.add('validate_api_request', validateResponse);
102
+ return new BookmarksApiClient(httpClient, method);
103
+ }
104
104
 
105
- public async createContextClient<TMethod extends keyof ClientMethod>(
106
- method: TMethod,
107
- ): Promise<ContextApiClient<TMethod, TClient>> {
108
- const httpClient = await this._createClientFn('context');
109
- httpClient.responseHandler.add('validate_api_request', validateResponse);
110
- return new ContextApiClient(httpClient, method);
111
- }
112
- public async createPeopleClient(): Promise<PeopleApiClient<TClient>> {
113
- const httpClient = await this._createClientFn('people');
114
- httpClient.responseHandler.add('validate_api_request', validateResponse);
115
- return new PeopleApiClient(httpClient);
116
- }
105
+ public async createContextClient<TMethod extends keyof ClientMethod>(
106
+ method: TMethod,
107
+ ): Promise<ContextApiClient<TMethod, TClient>> {
108
+ const httpClient = await this._createClientFn('context');
109
+ httpClient.responseHandler.add('validate_api_request', validateResponse);
110
+ return new ContextApiClient(httpClient, method);
111
+ }
112
+ public async createPeopleClient(): Promise<PeopleApiClient<TClient>> {
113
+ const httpClient = await this._createClientFn('people');
114
+ httpClient.responseHandler.add('validate_api_request', validateResponse);
115
+ return new PeopleApiClient(httpClient);
116
+ }
117
117
  }
package/src/types.ts CHANGED
@@ -1,8 +1,8 @@
1
- import {
2
- ClientRequestInit,
3
- IHttpClient,
4
- StreamResponse,
5
- BlobResult,
1
+ import type {
2
+ ClientRequestInit,
3
+ IHttpClient,
4
+ StreamResponse,
5
+ BlobResult,
6
6
  } from '@equinor/fusion-framework-module-http/client';
7
7
 
8
8
  /**
@@ -12,7 +12,7 @@ import {
12
12
  * @returns A Promise that resolves to an instance of the HTTP client.
13
13
  */
14
14
  export type ApiClientFactory<TClient extends IHttpClient = IHttpClient> = (
15
- name: string,
15
+ name: string,
16
16
  ) => Promise<TClient>;
17
17
 
18
18
  /**
@@ -24,27 +24,27 @@ export type ApiClientFactory<TClient extends IHttpClient = IHttpClient> = (
24
24
  * @param init - Optional initialization options for the API client request.
25
25
  */
26
26
  export type ApiClientArguments<TClient extends IHttpClient, TResult = unknown> = [
27
- path: string,
28
- init?: ClientRequestInit<TClient, TResult>,
27
+ path: string,
28
+ init?: ClientRequestInit<TClient, TResult>,
29
29
  ];
30
30
 
31
31
  /**
32
32
  * Execute methods on the IHttpClient
33
33
  */
34
34
  export type ClientMethod<T = unknown> = {
35
- /**
36
- * Fetch JSON data from a service
37
- */
38
- json: Promise<T>;
39
- /**
40
- * Fetch JSON data from a service as observable
41
- */
42
- json$: StreamResponse<T>;
35
+ /**
36
+ * Fetch JSON data from a service
37
+ */
38
+ json: Promise<T>;
39
+ /**
40
+ * Fetch JSON data from a service as observable
41
+ */
42
+ json$: StreamResponse<T>;
43
43
  };
44
44
 
45
45
  export type ClientDataMethod<T extends BlobResult = BlobResult> = {
46
- blob: Promise<T>;
47
- blob$: StreamResponse<T>;
46
+ blob: Promise<T>;
47
+ blob$: StreamResponse<T>;
48
48
  };
49
49
 
50
50
  export type ClientMethodType = keyof ClientMethod;
@@ -97,16 +97,16 @@ export type ClientMethodType = keyof ClientMethod;
97
97
  * values are a subset of `AllowedTypes`.
98
98
  */
99
99
  export type FilterAllowedApiVersions<
100
- TAvailableTypes extends Record<string, string>,
101
- TAllowedTypes extends string | number | symbol = keyof TAvailableTypes,
100
+ TAvailableTypes extends Record<string, string>,
101
+ TAllowedTypes extends string | number | symbol = keyof TAvailableTypes,
102
102
  > = {
103
- [K in keyof TAvailableTypes]: TAvailableTypes extends Record<K, infer V>
104
- ? K extends TAllowedTypes
105
- ? K | V
106
- : V extends TAllowedTypes
107
- ? V | K
108
- : never
109
- : never;
103
+ [K in keyof TAvailableTypes]: TAvailableTypes extends Record<K, infer V>
104
+ ? K extends TAllowedTypes
105
+ ? K | V
106
+ : V extends TAllowedTypes
107
+ ? V | K
108
+ : never
109
+ : never;
110
110
  }[keyof TAvailableTypes];
111
111
 
112
112
  /**
@@ -118,11 +118,11 @@ export type FilterAllowedApiVersions<
118
118
  * @returns The API version type if it is available and allowed, otherwise `never`.
119
119
  */
120
120
  export type ExtractApiVersion<
121
- TAvailableTypes extends Record<string, string>,
122
- TVersion extends string,
123
- TAllowedTypes extends string | number | symbol = FilterAllowedApiVersions<TAvailableTypes>,
121
+ TAvailableTypes extends Record<string, string>,
122
+ TVersion extends string,
123
+ TAllowedTypes extends string | number | symbol = FilterAllowedApiVersions<TAvailableTypes>,
124
124
  > = TVersion extends keyof TAvailableTypes
125
- ? TAvailableTypes[TVersion]
126
- : TVersion extends TAllowedTypes
127
- ? TVersion
128
- : never;
125
+ ? TAvailableTypes[TVersion]
126
+ : TVersion extends TAllowedTypes
127
+ ? TVersion
128
+ : never;
package/src/utils.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { z } from 'zod';
1
+ import type { z } from 'zod';
2
2
 
3
- import { FetchResponse } from '@equinor/fusion-framework-module-http';
3
+ import type { FetchResponse } from '@equinor/fusion-framework-module-http';
4
4
  import {
5
- type ResponseSelector,
6
- jsonSelector,
5
+ type ResponseSelector,
6
+ jsonSelector,
7
7
  } from '@equinor/fusion-framework-module-http/selectors';
8
8
 
9
9
  import type { ExtractApiVersion } from './types';
@@ -16,25 +16,21 @@ import type { ExtractApiVersion } from './types';
16
16
  * @returns The extracted API version, or throws an error if the version is not supported.
17
17
  */
18
18
  export const extractVersion = <
19
- TApiVersions extends Record<string, string>,
20
- TAllowedApiVersion extends string,
21
- TVersion extends string,
19
+ TApiVersions extends Record<string, string>,
20
+ TAllowedApiVersion extends string,
21
+ TVersion extends string,
22
22
  >(
23
- apiVersions: TApiVersions,
24
- version: TVersion,
23
+ apiVersions: TApiVersions,
24
+ version: TVersion,
25
25
  ): ExtractApiVersion<TApiVersions, TVersion, TAllowedApiVersion> => {
26
- if (version in apiVersions) {
27
- return apiVersions[version] as ExtractApiVersion<
28
- TApiVersions,
29
- TVersion,
30
- TAllowedApiVersion
31
- >;
32
- }
33
- const extractedVersion = Object.values(apiVersions).find((v) => v === version);
34
- if (!extractedVersion) {
35
- throw new Error(`Version ${version} is not supported`);
36
- }
37
- return extractedVersion as ExtractApiVersion<TApiVersions, TVersion, TAllowedApiVersion>;
26
+ if (version in apiVersions) {
27
+ return apiVersions[version] as ExtractApiVersion<TApiVersions, TVersion, TAllowedApiVersion>;
28
+ }
29
+ const extractedVersion = Object.values(apiVersions).find((v) => v === version);
30
+ if (!extractedVersion) {
31
+ throw new Error(`Version ${version} is not supported`);
32
+ }
33
+ return extractedVersion as ExtractApiVersion<TApiVersions, TVersion, TAllowedApiVersion>;
38
34
  };
39
35
 
40
36
  /**
@@ -44,8 +40,8 @@ export const extractVersion = <
44
40
  * @returns A response selector function that parses the response body using the provided schema.
45
41
  */
46
42
  export const schemaSelector =
47
- <Output, Def extends z.ZodTypeDef, Input>(
48
- schema: z.ZodSchema<Output, Def, Input>,
49
- ): ResponseSelector<Output> =>
50
- async (response: FetchResponse<Input>) =>
51
- schema.parse(await jsonSelector(response));
43
+ <Output, Def extends z.ZodTypeDef, Input>(
44
+ schema: z.ZodSchema<Output, Def, Input>,
45
+ ): ResponseSelector<Output> =>
46
+ async (response: FetchResponse<Input>) =>
47
+ schema.parse(await jsonSelector(response));
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  // Generated by genversion.
2
- export const version = '5.1.0';
2
+ export const version = '5.1.2';