@equinor/fusion-framework-module-services 2.1.0 → 2.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 (239) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/esm/bookmarks/client.js +15 -0
  3. package/dist/esm/bookmarks/client.js.map +1 -1
  4. package/dist/esm/bookmarks/favorites/delete/client.js +4 -0
  5. package/dist/esm/bookmarks/favorites/delete/client.js.map +1 -0
  6. package/dist/esm/bookmarks/favorites/delete/generate-endpoint.js +12 -0
  7. package/dist/esm/bookmarks/favorites/delete/generate-endpoint.js.map +1 -0
  8. package/dist/esm/bookmarks/favorites/delete/generate-parameters.js +7 -0
  9. package/dist/esm/bookmarks/favorites/delete/generate-parameters.js.map +1 -0
  10. package/dist/esm/bookmarks/favorites/delete/index.js +5 -0
  11. package/dist/esm/bookmarks/favorites/delete/index.js.map +1 -0
  12. package/dist/esm/bookmarks/favorites/delete/types-v1.js +2 -0
  13. package/dist/esm/bookmarks/favorites/delete/types-v1.js.map +1 -0
  14. package/dist/esm/bookmarks/favorites/delete/types.js +2 -0
  15. package/dist/esm/bookmarks/favorites/delete/types.js.map +1 -0
  16. package/dist/esm/bookmarks/favorites/head/client.js +4 -0
  17. package/dist/esm/bookmarks/favorites/head/client.js.map +1 -0
  18. package/dist/esm/bookmarks/favorites/head/generate-endpoint.js +12 -0
  19. package/dist/esm/bookmarks/favorites/head/generate-endpoint.js.map +1 -0
  20. package/dist/esm/bookmarks/favorites/head/generate-parameters.js +9 -0
  21. package/dist/esm/bookmarks/favorites/head/generate-parameters.js.map +1 -0
  22. package/dist/esm/bookmarks/favorites/head/index.js +5 -0
  23. package/dist/esm/bookmarks/favorites/head/index.js.map +1 -0
  24. package/dist/esm/bookmarks/favorites/head/types.js +2 -0
  25. package/dist/esm/bookmarks/favorites/head/types.js.map +1 -0
  26. package/dist/esm/bookmarks/favorites/post/client.js +4 -0
  27. package/dist/esm/bookmarks/favorites/post/client.js.map +1 -0
  28. package/dist/esm/bookmarks/favorites/post/generate-endpoint.js +11 -0
  29. package/dist/esm/bookmarks/favorites/post/generate-endpoint.js.map +1 -0
  30. package/dist/esm/bookmarks/favorites/post/generate-parameters.js +9 -0
  31. package/dist/esm/bookmarks/favorites/post/generate-parameters.js.map +1 -0
  32. package/dist/esm/bookmarks/favorites/post/index.js +5 -0
  33. package/dist/esm/bookmarks/favorites/post/index.js.map +1 -0
  34. package/dist/esm/bookmarks/favorites/post/types.js +2 -0
  35. package/dist/esm/bookmarks/favorites/post/types.js.map +1 -0
  36. package/dist/esm/notification/api-models.js +2 -0
  37. package/dist/esm/notification/api-models.js.map +1 -0
  38. package/dist/esm/notification/client.js +43 -0
  39. package/dist/esm/notification/client.js.map +1 -0
  40. package/dist/esm/notification/index.js +5 -0
  41. package/dist/esm/notification/index.js.map +1 -0
  42. package/dist/esm/notification/notification/delete/client.js +4 -0
  43. package/dist/esm/notification/notification/delete/client.js.map +1 -0
  44. package/dist/esm/notification/notification/delete/generate-endpoint.js +18 -0
  45. package/dist/esm/notification/notification/delete/generate-endpoint.js.map +1 -0
  46. package/dist/esm/notification/notification/delete/generate-parameters.js +10 -0
  47. package/dist/esm/notification/notification/delete/generate-parameters.js.map +1 -0
  48. package/dist/esm/notification/notification/delete/index.js +6 -0
  49. package/dist/esm/notification/notification/delete/index.js.map +1 -0
  50. package/dist/esm/notification/notification/delete/types.js +2 -0
  51. package/dist/esm/notification/notification/delete/types.js.map +1 -0
  52. package/dist/esm/notification/notification/get/client.js +4 -0
  53. package/dist/esm/notification/notification/get/client.js.map +1 -0
  54. package/dist/esm/notification/notification/get/generate-endpoint.js +18 -0
  55. package/dist/esm/notification/notification/get/generate-endpoint.js.map +1 -0
  56. package/dist/esm/notification/notification/get/generate-parameters.js +7 -0
  57. package/dist/esm/notification/notification/get/generate-parameters.js.map +1 -0
  58. package/dist/esm/notification/notification/get/index.js +6 -0
  59. package/dist/esm/notification/notification/get/index.js.map +1 -0
  60. package/dist/esm/notification/notification/get/types.js +2 -0
  61. package/dist/esm/notification/notification/get/types.js.map +1 -0
  62. package/dist/esm/notification/notification/getAll/client.js +4 -0
  63. package/dist/esm/notification/notification/getAll/client.js.map +1 -0
  64. package/dist/esm/notification/notification/getAll/generate-endpoint.js +18 -0
  65. package/dist/esm/notification/notification/getAll/generate-endpoint.js.map +1 -0
  66. package/dist/esm/notification/notification/getAll/generate-parameters.js +7 -0
  67. package/dist/esm/notification/notification/getAll/generate-parameters.js.map +1 -0
  68. package/dist/esm/notification/notification/getAll/index.js +6 -0
  69. package/dist/esm/notification/notification/getAll/index.js.map +1 -0
  70. package/dist/esm/notification/notification/getAll/types.js +2 -0
  71. package/dist/esm/notification/notification/getAll/types.js.map +1 -0
  72. package/dist/esm/notification/notification/index.js +6 -0
  73. package/dist/esm/notification/notification/index.js.map +1 -0
  74. package/dist/esm/notification/notification/patch/client.js +4 -0
  75. package/dist/esm/notification/notification/patch/client.js.map +1 -0
  76. package/dist/esm/notification/notification/patch/generate-endpoint.js +18 -0
  77. package/dist/esm/notification/notification/patch/generate-endpoint.js.map +1 -0
  78. package/dist/esm/notification/notification/patch/generate-parameters.js +10 -0
  79. package/dist/esm/notification/notification/patch/generate-parameters.js.map +1 -0
  80. package/dist/esm/notification/notification/patch/index.js +6 -0
  81. package/dist/esm/notification/notification/patch/index.js.map +1 -0
  82. package/dist/esm/notification/notification/patch/types.js +2 -0
  83. package/dist/esm/notification/notification/patch/types.js.map +1 -0
  84. package/dist/esm/notification/notification/post/client.js +4 -0
  85. package/dist/esm/notification/notification/post/client.js.map +1 -0
  86. package/dist/esm/notification/notification/post/generate-endpoint.js +18 -0
  87. package/dist/esm/notification/notification/post/generate-endpoint.js.map +1 -0
  88. package/dist/esm/notification/notification/post/generate-parameters.js +10 -0
  89. package/dist/esm/notification/notification/post/generate-parameters.js.map +1 -0
  90. package/dist/esm/notification/notification/post/index.js +6 -0
  91. package/dist/esm/notification/notification/post/index.js.map +1 -0
  92. package/dist/esm/notification/notification/post/types.js +2 -0
  93. package/dist/esm/notification/notification/post/types.js.map +1 -0
  94. package/dist/esm/notification/settings/get/client.js +4 -0
  95. package/dist/esm/notification/settings/get/client.js.map +1 -0
  96. package/dist/esm/notification/settings/get/generate-endpoint.js +18 -0
  97. package/dist/esm/notification/settings/get/generate-endpoint.js.map +1 -0
  98. package/dist/esm/notification/settings/get/generate-parameters.js +7 -0
  99. package/dist/esm/notification/settings/get/generate-parameters.js.map +1 -0
  100. package/dist/esm/notification/settings/get/index.js +6 -0
  101. package/dist/esm/notification/settings/get/index.js.map +1 -0
  102. package/dist/esm/notification/settings/get/types.js +2 -0
  103. package/dist/esm/notification/settings/get/types.js.map +1 -0
  104. package/dist/esm/notification/settings/put/client.js +4 -0
  105. package/dist/esm/notification/settings/put/client.js.map +1 -0
  106. package/dist/esm/notification/settings/put/generate-endpoint.js +18 -0
  107. package/dist/esm/notification/settings/put/generate-endpoint.js.map +1 -0
  108. package/dist/esm/notification/settings/put/generate-parameters.js +10 -0
  109. package/dist/esm/notification/settings/put/generate-parameters.js.map +1 -0
  110. package/dist/esm/notification/settings/put/index.js +6 -0
  111. package/dist/esm/notification/settings/put/index.js.map +1 -0
  112. package/dist/esm/notification/settings/put/types.js +2 -0
  113. package/dist/esm/notification/settings/put/types.js.map +1 -0
  114. package/dist/esm/notification/static.js +6 -0
  115. package/dist/esm/notification/static.js.map +1 -0
  116. package/dist/esm/notification/types.js +2 -0
  117. package/dist/esm/notification/types.js.map +1 -0
  118. package/dist/esm/provider.js +7 -0
  119. package/dist/esm/provider.js.map +1 -1
  120. package/dist/tsconfig.tsbuildinfo +1 -1
  121. package/dist/types/bookmarks/client.d.ts +6 -0
  122. package/dist/types/bookmarks/favorites/delete/client.d.ts +5 -0
  123. package/dist/types/bookmarks/favorites/delete/generate-endpoint.d.ts +2 -0
  124. package/dist/types/bookmarks/favorites/delete/generate-parameters.d.ts +4 -0
  125. package/dist/types/bookmarks/favorites/delete/index.d.ts +4 -0
  126. package/dist/types/bookmarks/favorites/delete/types-v1.d.ts +3 -0
  127. package/dist/types/bookmarks/favorites/delete/types.d.ts +15 -0
  128. package/dist/types/bookmarks/favorites/head/client.d.ts +5 -0
  129. package/dist/types/bookmarks/favorites/head/generate-endpoint.d.ts +2 -0
  130. package/dist/types/bookmarks/favorites/head/generate-parameters.d.ts +4 -0
  131. package/dist/types/bookmarks/favorites/head/index.d.ts +4 -0
  132. package/dist/types/bookmarks/favorites/head/types.d.ts +17 -0
  133. package/dist/types/bookmarks/favorites/post/client.d.ts +5 -0
  134. package/dist/types/bookmarks/favorites/post/generate-endpoint.d.ts +2 -0
  135. package/dist/types/bookmarks/favorites/post/generate-parameters.d.ts +4 -0
  136. package/dist/types/bookmarks/favorites/post/index.d.ts +4 -0
  137. package/dist/types/bookmarks/favorites/post/types.d.ts +17 -0
  138. package/dist/types/notification/api-models.d.ts +54 -0
  139. package/dist/types/notification/client.d.ts +24 -0
  140. package/dist/types/notification/index.d.ts +4 -0
  141. package/dist/types/notification/notification/delete/client.d.ts +5 -0
  142. package/dist/types/notification/notification/delete/generate-endpoint.d.ts +2 -0
  143. package/dist/types/notification/notification/delete/generate-parameters.d.ts +5 -0
  144. package/dist/types/notification/notification/delete/index.d.ts +5 -0
  145. package/dist/types/notification/notification/delete/types.d.ts +21 -0
  146. package/dist/types/notification/notification/get/client.d.ts +5 -0
  147. package/dist/types/notification/notification/get/generate-endpoint.d.ts +2 -0
  148. package/dist/types/notification/notification/get/generate-parameters.d.ts +5 -0
  149. package/dist/types/notification/notification/get/index.d.ts +5 -0
  150. package/dist/types/notification/notification/get/types.d.ts +21 -0
  151. package/dist/types/notification/notification/getAll/client.d.ts +5 -0
  152. package/dist/types/notification/notification/getAll/generate-endpoint.d.ts +2 -0
  153. package/dist/types/notification/notification/getAll/generate-parameters.d.ts +5 -0
  154. package/dist/types/notification/notification/getAll/index.d.ts +5 -0
  155. package/dist/types/notification/notification/getAll/types.d.ts +21 -0
  156. package/dist/types/notification/notification/index.d.ts +5 -0
  157. package/dist/types/notification/notification/patch/client.d.ts +5 -0
  158. package/dist/types/notification/notification/patch/generate-endpoint.d.ts +2 -0
  159. package/dist/types/notification/notification/patch/generate-parameters.d.ts +5 -0
  160. package/dist/types/notification/notification/patch/index.d.ts +5 -0
  161. package/dist/types/notification/notification/patch/types.d.ts +22 -0
  162. package/dist/types/notification/notification/post/client.d.ts +5 -0
  163. package/dist/types/notification/notification/post/generate-endpoint.d.ts +2 -0
  164. package/dist/types/notification/notification/post/generate-parameters.d.ts +5 -0
  165. package/dist/types/notification/notification/post/index.d.ts +5 -0
  166. package/dist/types/notification/notification/post/types.d.ts +33 -0
  167. package/dist/types/notification/settings/get/client.d.ts +5 -0
  168. package/dist/types/notification/settings/get/generate-endpoint.d.ts +2 -0
  169. package/dist/types/notification/settings/get/generate-parameters.d.ts +5 -0
  170. package/dist/types/notification/settings/get/index.d.ts +5 -0
  171. package/dist/types/notification/settings/get/types.d.ts +21 -0
  172. package/dist/types/notification/settings/put/client.d.ts +5 -0
  173. package/dist/types/notification/settings/put/generate-endpoint.d.ts +2 -0
  174. package/dist/types/notification/settings/put/generate-parameters.d.ts +5 -0
  175. package/dist/types/notification/settings/put/index.d.ts +5 -0
  176. package/dist/types/notification/settings/put/types.d.ts +17 -0
  177. package/dist/types/notification/static.d.ts +4 -0
  178. package/dist/types/notification/types.d.ts +1 -0
  179. package/dist/types/provider.d.ts +2 -0
  180. package/package.json +6 -2
  181. package/src/bookmarks/client.ts +54 -0
  182. package/src/bookmarks/favorites/delete/client.ts +35 -0
  183. package/src/bookmarks/favorites/delete/generate-endpoint.ts +19 -0
  184. package/src/bookmarks/favorites/delete/generate-parameters.ts +25 -0
  185. package/src/bookmarks/favorites/delete/index.ts +6 -0
  186. package/src/bookmarks/favorites/delete/types-v1.ts +2 -0
  187. package/src/bookmarks/favorites/delete/types.ts +33 -0
  188. package/src/bookmarks/favorites/head/client.ts +35 -0
  189. package/src/bookmarks/favorites/head/generate-endpoint.ts +19 -0
  190. package/src/bookmarks/favorites/head/generate-parameters.ts +28 -0
  191. package/src/bookmarks/favorites/head/index.ts +6 -0
  192. package/src/bookmarks/favorites/head/types.ts +35 -0
  193. package/src/bookmarks/favorites/post/client.ts +35 -0
  194. package/src/bookmarks/favorites/post/generate-endpoint.ts +18 -0
  195. package/src/bookmarks/favorites/post/generate-parameters.ts +28 -0
  196. package/src/bookmarks/favorites/post/index.ts +6 -0
  197. package/src/bookmarks/favorites/post/types.ts +35 -0
  198. package/src/notification/api-models.ts +70 -0
  199. package/src/notification/client.ts +167 -0
  200. package/src/notification/index.ts +6 -0
  201. package/src/notification/notification/delete/client.ts +37 -0
  202. package/src/notification/notification/delete/generate-endpoint.ts +24 -0
  203. package/src/notification/notification/delete/generate-parameters.ts +32 -0
  204. package/src/notification/notification/delete/index.ts +8 -0
  205. package/src/notification/notification/delete/types.ts +44 -0
  206. package/src/notification/notification/get/client.ts +33 -0
  207. package/src/notification/notification/get/generate-endpoint.ts +25 -0
  208. package/src/notification/notification/get/generate-parameters.ts +22 -0
  209. package/src/notification/notification/get/index.ts +8 -0
  210. package/src/notification/notification/get/types.ts +44 -0
  211. package/src/notification/notification/getAll/client.ts +37 -0
  212. package/src/notification/notification/getAll/generate-endpoint.ts +25 -0
  213. package/src/notification/notification/getAll/generate-parameters.ts +22 -0
  214. package/src/notification/notification/getAll/index.ts +8 -0
  215. package/src/notification/notification/getAll/types.ts +44 -0
  216. package/src/notification/notification/index.ts +5 -0
  217. package/src/notification/notification/patch/client.ts +37 -0
  218. package/src/notification/notification/patch/generate-endpoint.ts +24 -0
  219. package/src/notification/notification/patch/generate-parameters.ts +32 -0
  220. package/src/notification/notification/patch/index.ts +8 -0
  221. package/src/notification/notification/patch/types.ts +45 -0
  222. package/src/notification/notification/post/client.ts +37 -0
  223. package/src/notification/notification/post/generate-endpoint.ts +25 -0
  224. package/src/notification/notification/post/generate-parameters.ts +32 -0
  225. package/src/notification/notification/post/index.ts +8 -0
  226. package/src/notification/notification/post/types.ts +57 -0
  227. package/src/notification/settings/get/client.ts +37 -0
  228. package/src/notification/settings/get/generate-endpoint.ts +25 -0
  229. package/src/notification/settings/get/generate-parameters.ts +22 -0
  230. package/src/notification/settings/get/index.ts +8 -0
  231. package/src/notification/settings/get/types.ts +44 -0
  232. package/src/notification/settings/put/client.ts +37 -0
  233. package/src/notification/settings/put/generate-endpoint.ts +25 -0
  234. package/src/notification/settings/put/generate-parameters.ts +34 -0
  235. package/src/notification/settings/put/index.ts +8 -0
  236. package/src/notification/settings/put/types.ts +38 -0
  237. package/src/notification/static.ts +6 -0
  238. package/src/notification/types.ts +5 -0
  239. package/src/provider.ts +8 -0
@@ -0,0 +1,24 @@
1
+ import { UnsupportedApiVersion } from '@equinor/fusion-framework-module-services/errors';
2
+ import { ApiVersion } from '@equinor/fusion-framework-module-services/notification';
3
+ import type { PatchNotificationArgs } from './types';
4
+
5
+ /**
6
+ * Method for generating endpoint for getting notification by id
7
+ */
8
+ export const generateEndpoint = <TVersion extends string = keyof typeof ApiVersion>(
9
+ version: TVersion,
10
+ args: PatchNotificationArgs<TVersion>
11
+ ) => {
12
+ const apiVersion = ApiVersion[version as keyof typeof ApiVersion] ?? version;
13
+ switch (apiVersion) {
14
+ case ApiVersion.v2:
15
+ throw new UnsupportedApiVersion(version);
16
+ case ApiVersion.v1:
17
+ default: {
18
+ const { id } = args as { id: string };
19
+ const params = new URLSearchParams();
20
+ params.append('api-version', apiVersion);
21
+ return `/notification/${id}/?${String(params)}`;
22
+ }
23
+ }
24
+ };
@@ -0,0 +1,32 @@
1
+ import type { ClientRequestInit, IHttpClient } from '@equinor/fusion-framework-module-http/client';
2
+ import { ApiVersion } from '../../static';
3
+ import { ApiClientArguments } from '../../types';
4
+
5
+ import { generateEndpoint } from './generate-endpoint';
6
+ import { PatchNotificationArgs } from './types';
7
+
8
+ /** function for creating http client arguments */
9
+ export const generateParameters = <
10
+ TResult,
11
+ TVersion extends string = keyof typeof ApiVersion,
12
+ TClient extends IHttpClient = IHttpClient
13
+ >(
14
+ version: TVersion,
15
+ args: PatchNotificationArgs<TVersion>,
16
+ init?: ClientRequestInit<TClient, TResult>
17
+ ): ApiClientArguments<TClient, TResult> => {
18
+ const path = generateEndpoint(version, args);
19
+
20
+ const headers = new Headers();
21
+ headers.append('content-type', 'application/json');
22
+
23
+ const requestParams: ClientRequestInit<TClient, TResult> = Object.assign(
24
+ {},
25
+ { method: 'patch', body: JSON.stringify(args), headers: headers },
26
+ init
27
+ );
28
+
29
+ return [path, requestParams];
30
+ };
31
+
32
+ export default generateParameters;
@@ -0,0 +1,8 @@
1
+ export { ApiVersion } from '@equinor/fusion-framework-module-services/notification';
2
+
3
+ export { generateEndpoint } from './generate-endpoint';
4
+ export { generateParameters } from './generate-parameters';
5
+
6
+ export * from './types';
7
+
8
+ export { updateSeenByUser as getNotificationById, default } from './client';
@@ -0,0 +1,45 @@
1
+ import { IHttpClient, ClientRequestInit } from '@equinor/fusion-framework-module-http/client';
2
+ import { ClientMethod } from '../../../types';
3
+ import { ApiNotificationEntity } from '../../api-models';
4
+ import { ApiVersion } from '../../static';
5
+
6
+ type PatchNotificationArgs_v1 = {
7
+ id: string;
8
+ seenByUser: boolean;
9
+ };
10
+
11
+ type PatchNotificationArgs_v2 = PatchNotificationArgs_v1;
12
+
13
+ type PatchNotificationArgsTypes = {
14
+ [ApiVersion.v1]: PatchNotificationArgs_v1;
15
+ [ApiVersion.v2]: PatchNotificationArgs_v2;
16
+ };
17
+
18
+ export type PatchNotificationArgs<T extends string> = T extends keyof typeof ApiVersion
19
+ ? PatchNotificationArgsTypes[(typeof ApiVersion)[T]]
20
+ : unknown;
21
+
22
+ type PatchNotificationResponseTypes = {
23
+ [ApiVersion.v1]: ApiNotificationEntity<ApiVersion.v1>;
24
+ [ApiVersion.v2]: ApiNotificationEntity<ApiVersion.v2>;
25
+ };
26
+
27
+ export type PatchNotificationResponse<T> = T extends keyof typeof ApiVersion
28
+ ? PatchNotificationResponseTypes[(typeof ApiVersion)[T]]
29
+ : unknown;
30
+
31
+ export type PatchNotificationFn<
32
+ TVersion extends string = keyof typeof ApiVersion,
33
+ TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>,
34
+ TClient extends IHttpClient = IHttpClient,
35
+ TResult = PatchNotificationResponse<TVersion>
36
+ > = (
37
+ args: PatchNotificationArgs<TVersion>,
38
+ init?: ClientRequestInit<TClient, TResult>
39
+ ) => PatchNotificationResult<TVersion, TMethod, TResult>;
40
+
41
+ export type PatchNotificationResult<
42
+ TVersion extends string = keyof typeof ApiVersion,
43
+ TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>,
44
+ TResult = PatchNotificationResponse<TVersion>
45
+ > = ClientMethod<TResult>[TMethod];
@@ -0,0 +1,37 @@
1
+ import { ClientRequestInit, IHttpClient } from '@equinor/fusion-framework-module-http/client';
2
+ import { ClientMethod } from '../../../types';
3
+ import { ApiVersion } from '../../static';
4
+
5
+ import { generateParameters } from './generate-parameters';
6
+
7
+ import type {
8
+ PostNotificationArgs,
9
+ PostNotificationResult,
10
+ PostNotificationResponse,
11
+ } from './types';
12
+
13
+ /**
14
+ * Method for creating a notification item
15
+ * @param client - client for execution of request
16
+ * @param version - version of API to call
17
+ * @param method - client method to call
18
+ */
19
+ export const createNotification =
20
+ <
21
+ TVersion extends string = keyof typeof ApiVersion,
22
+ TMethod extends keyof ClientMethod = keyof ClientMethod,
23
+ TClient extends IHttpClient = IHttpClient
24
+ >(
25
+ client: TClient,
26
+ version: TVersion,
27
+ method: TMethod = 'json' as TMethod
28
+ ) =>
29
+ <T = PostNotificationResponse<TVersion>>(
30
+ args: PostNotificationArgs<TVersion>,
31
+ init?: ClientRequestInit<TClient, T>
32
+ ): PostNotificationResult<TVersion, TMethod, T> =>
33
+ client[method](
34
+ ...generateParameters<T, TVersion, TClient>(version, args, init)
35
+ ) as PostNotificationResult<TVersion, TMethod, T>;
36
+
37
+ export default createNotification;
@@ -0,0 +1,25 @@
1
+ import { UnsupportedApiVersion } from '@equinor/fusion-framework-module-services/errors';
2
+ import { ApiVersion } from '@equinor/fusion-framework-module-services/notification';
3
+
4
+ import type { PostNotificationArgs } from './types';
5
+
6
+ /**
7
+ * Method for generating endpoint for getting all notifications
8
+ */
9
+ export const generateEndpoint = <TVersion extends string = keyof typeof ApiVersion>(
10
+ version: TVersion,
11
+ args: PostNotificationArgs<TVersion>
12
+ ) => {
13
+ const apiVersion = ApiVersion[version as keyof typeof ApiVersion] ?? version;
14
+ switch (apiVersion) {
15
+ case ApiVersion.v2:
16
+ throw new UnsupportedApiVersion(version);
17
+ case ApiVersion.v1:
18
+ default: {
19
+ const { userId } = args as { userId: string };
20
+ const params = new URLSearchParams();
21
+ params.append('api-version', apiVersion);
22
+ return `/person/${userId}/notifications/?${String(params)}`;
23
+ }
24
+ }
25
+ };
@@ -0,0 +1,32 @@
1
+ import type { ClientRequestInit, IHttpClient } from '@equinor/fusion-framework-module-http/client';
2
+ import { ApiVersion } from '../../static';
3
+ import { ApiClientArguments } from '../../types';
4
+
5
+ import { generateEndpoint } from './generate-endpoint';
6
+ import { PostNotificationArgs } from './types';
7
+
8
+ /** function for creating http client arguments */
9
+ export const generateParameters = <
10
+ TResult,
11
+ TVersion extends string = keyof typeof ApiVersion,
12
+ TClient extends IHttpClient = IHttpClient
13
+ >(
14
+ version: TVersion,
15
+ args: PostNotificationArgs<TVersion>,
16
+ init?: ClientRequestInit<TClient, TResult>
17
+ ): ApiClientArguments<TClient, TResult> => {
18
+ const path = generateEndpoint(version, args);
19
+
20
+ const headers = new Headers();
21
+ headers.append('content-type', 'application/json');
22
+
23
+ const requestParams: ClientRequestInit<TClient, TResult> = Object.assign(
24
+ {},
25
+ { method: 'post', body: JSON.stringify(args), headers: headers },
26
+ init
27
+ );
28
+
29
+ return [path, requestParams];
30
+ };
31
+
32
+ export default generateParameters;
@@ -0,0 +1,8 @@
1
+ export { ApiVersion } from '@equinor/fusion-framework-module-services/notification';
2
+
3
+ export { generateEndpoint } from './generate-endpoint';
4
+ export { generateParameters } from './generate-parameters';
5
+
6
+ export * from './types';
7
+
8
+ export { createNotification as getNotificationById, default } from './client';
@@ -0,0 +1,57 @@
1
+ import { IHttpClient, ClientRequestInit } from '@equinor/fusion-framework-module-http/client';
2
+ import { ClientMethod } from '../../../types';
3
+ import { ApiNotificationEntity } from '../../api-models';
4
+ import { ApiVersion } from '../../static';
5
+
6
+ type SourceSystem_v1 = {
7
+ name: string;
8
+ subSystem: string;
9
+ identifier: string;
10
+ };
11
+
12
+ type PostNotificationArgs_v1 = {
13
+ appKey: string;
14
+ emailPriority: number;
15
+ fallbackHtml: string;
16
+ title: string;
17
+ description: string;
18
+ card: string;
19
+ sourceSystem: SourceSystem_v1;
20
+ originalCreatorUniqueId: string;
21
+ };
22
+
23
+ type PostNotificationArgs_v2 = PostNotificationArgs_v1;
24
+
25
+ type PostNotificationArgsTypes = {
26
+ [ApiVersion.v1]: PostNotificationArgs_v1;
27
+ [ApiVersion.v2]: PostNotificationArgs_v2;
28
+ };
29
+
30
+ export type PostNotificationArgs<T extends string> = T extends keyof typeof ApiVersion
31
+ ? PostNotificationArgsTypes[(typeof ApiVersion)[T]]
32
+ : unknown;
33
+
34
+ type PostNotificationResponseTypes = {
35
+ [ApiVersion.v1]: Array<ApiNotificationEntity<ApiVersion.v1>>;
36
+ [ApiVersion.v2]: Array<ApiNotificationEntity<ApiVersion.v2>>;
37
+ };
38
+
39
+ export type PostNotificationResponse<T> = T extends keyof typeof ApiVersion
40
+ ? PostNotificationResponseTypes[(typeof ApiVersion)[T]]
41
+ : unknown;
42
+
43
+ export type PostNotificationFn<
44
+ TVersion extends string = keyof typeof ApiVersion,
45
+ TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>,
46
+ TClient extends IHttpClient = IHttpClient,
47
+ TResult = PostNotificationResponse<TVersion>
48
+ > = (
49
+ args: PostNotificationArgs<TVersion>,
50
+ init?: ClientRequestInit<TClient, TResult>
51
+ ) => PostNotificationResult<TVersion, TMethod, TResult>;
52
+
53
+ export type PostNotificationResult<
54
+ TVersion extends string = keyof typeof ApiVersion,
55
+ TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>,
56
+ TResult = PostNotificationResponse<TVersion>
57
+ > = ClientMethod<TResult>[TMethod];
@@ -0,0 +1,37 @@
1
+ import { ClientRequestInit, IHttpClient } from '@equinor/fusion-framework-module-http/client';
2
+ import { ClientMethod } from '../../../types';
3
+ import { ApiVersion } from '../../static';
4
+
5
+ import { generateParameters } from './generate-parameters';
6
+
7
+ import type {
8
+ GetUserNotificationSettingsArgs,
9
+ GetUserNotificationsSettingsResult,
10
+ GetUserNotificationSettingsResponse,
11
+ } from './types';
12
+
13
+ /**
14
+ * Method for fetching user notification settings from the notifications service
15
+ * @param client - client for execution of request
16
+ * @param version - version of API to call
17
+ * @param method - client method to call
18
+ */
19
+ export const getUserNotificationSettings =
20
+ <
21
+ TVersion extends string = keyof typeof ApiVersion,
22
+ TMethod extends keyof ClientMethod = keyof ClientMethod,
23
+ TClient extends IHttpClient = IHttpClient
24
+ >(
25
+ client: TClient,
26
+ version: TVersion,
27
+ method: TMethod = 'json' as TMethod
28
+ ) =>
29
+ <T = GetUserNotificationSettingsResponse<TVersion>>(
30
+ args: GetUserNotificationSettingsArgs<TVersion>,
31
+ init?: ClientRequestInit<TClient, T>
32
+ ): GetUserNotificationsSettingsResult<TVersion, TMethod, T> =>
33
+ client[method](
34
+ ...generateParameters<T, TVersion, TClient>(version, args, init)
35
+ ) as GetUserNotificationsSettingsResult<TVersion, TMethod, T>;
36
+
37
+ export default getUserNotificationSettings;
@@ -0,0 +1,25 @@
1
+ import { UnsupportedApiVersion } from '@equinor/fusion-framework-module-services/errors';
2
+ import { ApiVersion } from '@equinor/fusion-framework-module-services/notification';
3
+
4
+ import type { GetUserNotificationSettingsArgs } from './types';
5
+
6
+ /**
7
+ * Method for generating endpoint for getting all notifications
8
+ */
9
+ export const generateEndpoint = <TVersion extends string = keyof typeof ApiVersion>(
10
+ version: TVersion,
11
+ args: GetUserNotificationSettingsArgs<TVersion>
12
+ ) => {
13
+ const apiVersion = ApiVersion[version as keyof typeof ApiVersion] ?? version;
14
+ switch (apiVersion) {
15
+ case ApiVersion.v2:
16
+ throw new UnsupportedApiVersion(version);
17
+ case ApiVersion.v1:
18
+ default: {
19
+ const { userId } = args as { userId: string };
20
+ const params = new URLSearchParams();
21
+ params.append('api-version', apiVersion);
22
+ return `/person/${userId}/notifications/settings/?${String(params)}`;
23
+ }
24
+ }
25
+ };
@@ -0,0 +1,22 @@
1
+ import type { ClientRequestInit, IHttpClient } from '@equinor/fusion-framework-module-http/client';
2
+ import { ApiVersion } from '../../static';
3
+ import { ApiClientArguments } from '../../types';
4
+
5
+ import { generateEndpoint } from './generate-endpoint';
6
+ import { GetUserNotificationSettingsArgs } from './types';
7
+
8
+ /** function for creating http client arguments */
9
+ export const generateParameters = <
10
+ TResult,
11
+ TVersion extends string = keyof typeof ApiVersion,
12
+ TClient extends IHttpClient = IHttpClient
13
+ >(
14
+ version: TVersion,
15
+ args: GetUserNotificationSettingsArgs<TVersion>,
16
+ init?: ClientRequestInit<TClient, TResult>
17
+ ): ApiClientArguments<TClient, TResult> => {
18
+ const path = generateEndpoint(version, args);
19
+ return [path, init];
20
+ };
21
+
22
+ export default generateParameters;
@@ -0,0 +1,8 @@
1
+ export { ApiVersion } from '@equinor/fusion-framework-module-services/notification';
2
+
3
+ export { generateEndpoint } from './generate-endpoint';
4
+ export { generateParameters } from './generate-parameters';
5
+
6
+ export * from './types';
7
+
8
+ export { getUserNotificationSettings, default } from './client';
@@ -0,0 +1,44 @@
1
+ import { IHttpClient, ClientRequestInit } from '@equinor/fusion-framework-module-http/client';
2
+ import { ClientMethod } from '../../../types';
3
+ import { ApiNotificationSettingsEntity } from '../../api-models';
4
+ import { ApiVersion } from '../../static';
5
+
6
+ type GetUserNotificationSettingsArgs_v1 = {
7
+ userId: string;
8
+ };
9
+
10
+ type GetUserNotificationSettingsArgs_v2 = GetUserNotificationSettingsArgs_v1;
11
+
12
+ type GetUserNotificationSettingsArgsTypes = {
13
+ [ApiVersion.v1]: GetUserNotificationSettingsArgs_v1;
14
+ [ApiVersion.v2]: GetUserNotificationSettingsArgs_v2;
15
+ };
16
+
17
+ export type GetUserNotificationSettingsArgs<T extends string> = T extends keyof typeof ApiVersion
18
+ ? GetUserNotificationSettingsArgsTypes[(typeof ApiVersion)[T]]
19
+ : unknown;
20
+
21
+ type GetUserNotificationSettingsResponseTypes = {
22
+ [ApiVersion.v1]: ApiNotificationSettingsEntity<ApiVersion.v1>;
23
+ [ApiVersion.v2]: ApiNotificationSettingsEntity<ApiVersion.v2>;
24
+ };
25
+
26
+ export type GetUserNotificationSettingsResponse<T> = T extends keyof typeof ApiVersion
27
+ ? GetUserNotificationSettingsResponseTypes[(typeof ApiVersion)[T]]
28
+ : unknown;
29
+
30
+ export type GetUserNotificationSettingsFn<
31
+ TVersion extends string = keyof typeof ApiVersion,
32
+ TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>,
33
+ TClient extends IHttpClient = IHttpClient,
34
+ TResult = GetUserNotificationSettingsResponse<TVersion>
35
+ > = (
36
+ args: GetUserNotificationSettingsArgs<TVersion>,
37
+ init?: ClientRequestInit<TClient, TResult>
38
+ ) => GetUserNotificationsSettingsResult<TVersion, TMethod, TResult>;
39
+
40
+ export type GetUserNotificationsSettingsResult<
41
+ TVersion extends string = keyof typeof ApiVersion,
42
+ TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>,
43
+ TResult = GetUserNotificationSettingsResponse<TVersion>
44
+ > = ClientMethod<TResult>[TMethod];
@@ -0,0 +1,37 @@
1
+ import { ClientRequestInit, IHttpClient } from '@equinor/fusion-framework-module-http/client';
2
+ import { ClientMethod } from '../../../types';
3
+ import { ApiVersion } from '../../static';
4
+
5
+ import { generateParameters } from './generate-parameters';
6
+
7
+ import type {
8
+ PutUserNotificationSettingsArgs,
9
+ PutUserNotificationSettingsResult,
10
+ PutUserNotificationSettingsResponse,
11
+ } from './types';
12
+
13
+ /**
14
+ * Method for fetching user notification settings from the notifications service
15
+ * @param client - client for execution of request
16
+ * @param version - version of API to call
17
+ * @param method - client method to call
18
+ */
19
+ export const updateUserNotificationSettings =
20
+ <
21
+ TVersion extends string = keyof typeof ApiVersion,
22
+ TMethod extends keyof ClientMethod = keyof ClientMethod,
23
+ TClient extends IHttpClient = IHttpClient
24
+ >(
25
+ client: TClient,
26
+ version: TVersion,
27
+ method: TMethod = 'json' as TMethod
28
+ ) =>
29
+ <T = PutUserNotificationSettingsResponse<TVersion>>(
30
+ args: PutUserNotificationSettingsArgs<TVersion>,
31
+ init?: ClientRequestInit<TClient, T>
32
+ ): PutUserNotificationSettingsResult<TVersion, TMethod, T> =>
33
+ client[method](
34
+ ...generateParameters<T, TVersion, TClient>(version, args, init)
35
+ ) as PutUserNotificationSettingsResult<TVersion, TMethod, T>;
36
+
37
+ export default updateUserNotificationSettings;
@@ -0,0 +1,25 @@
1
+ import { UnsupportedApiVersion } from '@equinor/fusion-framework-module-services/errors';
2
+ import { ApiVersion } from '@equinor/fusion-framework-module-services/notification';
3
+
4
+ import type { PutUserNotificationSettingsArgs } from './types';
5
+
6
+ /**
7
+ * Method for generating endpoint for getting all notifications
8
+ */
9
+ export const generateEndpoint = <TVersion extends string = keyof typeof ApiVersion>(
10
+ version: TVersion,
11
+ args: PutUserNotificationSettingsArgs<TVersion>
12
+ ) => {
13
+ const apiVersion = ApiVersion[version as keyof typeof ApiVersion] ?? version;
14
+ switch (apiVersion) {
15
+ case ApiVersion.v2:
16
+ throw new UnsupportedApiVersion(version);
17
+ case ApiVersion.v1:
18
+ default: {
19
+ const { userId } = args as { userId: string };
20
+ const params = new URLSearchParams();
21
+ params.append('api-version', apiVersion);
22
+ return `/person/${userId}/notifications/settings/?${String(params)}`;
23
+ }
24
+ }
25
+ };
@@ -0,0 +1,34 @@
1
+ import type { ClientRequestInit, IHttpClient } from '@equinor/fusion-framework-module-http/client';
2
+ import { ApiVersion } from '../../static';
3
+ import { ApiClientArguments } from '../../types';
4
+
5
+ import { generateEndpoint } from './generate-endpoint';
6
+ import { PutUserNotificationSettingsArgs } from './types';
7
+
8
+ /** function for creating http client arguments */
9
+ export const generateParameters = <
10
+ TResult,
11
+ TVersion extends string = keyof typeof ApiVersion,
12
+ TClient extends IHttpClient = IHttpClient
13
+ >(
14
+ version: TVersion,
15
+ args: PutUserNotificationSettingsArgs<TVersion>,
16
+ init?: ClientRequestInit<TClient, TResult>
17
+ ): ApiClientArguments<TClient, TResult> => {
18
+ const path = generateEndpoint(version, args);
19
+ //add versions switch case later
20
+
21
+ //Not sure why this is needed, defaults to application/problem+json failing the request
22
+ const headers = new Headers();
23
+ headers.append('content-type', 'application/json');
24
+
25
+ const requestParams: ClientRequestInit<TClient, TResult> = Object.assign(
26
+ {},
27
+ { method: 'put', body: JSON.stringify(args), headers: headers },
28
+ init
29
+ );
30
+
31
+ return [path, requestParams];
32
+ };
33
+
34
+ export default generateParameters;
@@ -0,0 +1,8 @@
1
+ export { ApiVersion } from '@equinor/fusion-framework-module-services/notification';
2
+
3
+ export { generateEndpoint } from './generate-endpoint';
4
+ export { generateParameters } from './generate-parameters';
5
+
6
+ export * from './types';
7
+
8
+ export { updateUserNotificationSettings, default } from './client';
@@ -0,0 +1,38 @@
1
+ import { IHttpClient, ClientRequestInit } from '@equinor/fusion-framework-module-http/client';
2
+ import { ClientMethod } from '../../../types';
3
+ import { ApiNotificationSettingsEntity } from '../../api-models';
4
+ import { ApiVersion } from '../../static';
5
+
6
+ type PutUserNotificationSettingsArgsTypes = {
7
+ [ApiVersion.v1]: ApiNotificationSettingsEntity<ApiVersion.v1>;
8
+ [ApiVersion.v2]: ApiNotificationSettingsEntity<ApiVersion.v2>;
9
+ };
10
+
11
+ export type PutUserNotificationSettingsArgs<T extends string> = T extends keyof typeof ApiVersion
12
+ ? PutUserNotificationSettingsArgsTypes[(typeof ApiVersion)[T]]
13
+ : unknown;
14
+
15
+ type GetUserNotificationSettingsResponseTypes = {
16
+ [ApiVersion.v2]: ApiNotificationSettingsEntity<ApiVersion.v2>;
17
+ [ApiVersion.v1]: ApiNotificationSettingsEntity<ApiVersion.v1>;
18
+ };
19
+
20
+ export type PutUserNotificationSettingsResponse<T> = T extends keyof typeof ApiVersion
21
+ ? GetUserNotificationSettingsResponseTypes[(typeof ApiVersion)[T]]
22
+ : unknown;
23
+
24
+ export type PutUserNotificationSettingsFn<
25
+ TVersion extends string = keyof typeof ApiVersion,
26
+ TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>,
27
+ TClient extends IHttpClient = IHttpClient,
28
+ TResult = PutUserNotificationSettingsResponse<TVersion>
29
+ > = (
30
+ args: PutUserNotificationSettingsArgs<TVersion>,
31
+ init?: ClientRequestInit<TClient, TResult>
32
+ ) => PutUserNotificationSettingsResult<TVersion, TMethod, TResult>;
33
+
34
+ export type PutUserNotificationSettingsResult<
35
+ TVersion extends string = keyof typeof ApiVersion,
36
+ TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>,
37
+ TResult = PutUserNotificationSettingsResponse<TVersion>
38
+ > = ClientMethod<TResult>[TMethod];
@@ -0,0 +1,6 @@
1
+ /** index of api versions of context service */
2
+ export enum ApiVersion {
3
+ 'v1' = '1.0',
4
+ /** not in use atm */
5
+ 'v2' = '2.0',
6
+ }
@@ -0,0 +1,5 @@
1
+ export {
2
+ ClientMethodType,
3
+ ClientMethod,
4
+ ApiClientArguments,
5
+ } from '@equinor/fusion-framework-module-services';
package/src/provider.ts CHANGED
@@ -4,6 +4,7 @@ import { ClientMethod } from './types';
4
4
  import { ApiClientFactory } from './types';
5
5
  import { ContextApiClient } from './context';
6
6
  import BookmarksApiClient from './bookmarks/client';
7
+ import { NotificationApiClient } from './notification';
7
8
 
8
9
  export interface IApiProvider<TClient extends IHttpClient = IHttpClient> {
9
10
  /**
@@ -34,6 +35,13 @@ export class ApiProvider<TClient extends IHttpClient = IHttpClient>
34
35
  this._createClientFn = createClient;
35
36
  }
36
37
 
38
+ public async createNotificationClient<TMethod extends keyof ClientMethod>(
39
+ method: TMethod
40
+ ): Promise<NotificationApiClient<TMethod, TClient>> {
41
+ const httpClient = await this._createClientFn('notification');
42
+ return new NotificationApiClient(httpClient, method);
43
+ }
44
+
37
45
  public async createBookmarksClient<TMethod extends keyof ClientMethod, TPayload = unknown>(
38
46
  method: TMethod
39
47
  ): Promise<BookmarksApiClient<TMethod, TClient, TPayload>> {