@equinor/fusion-framework-module-services 2.1.0 → 2.2.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.
- package/CHANGELOG.md +6 -0
- package/dist/esm/notification/api-models.js +2 -0
- package/dist/esm/notification/api-models.js.map +1 -0
- package/dist/esm/notification/client.js +43 -0
- package/dist/esm/notification/client.js.map +1 -0
- package/dist/esm/notification/index.js +5 -0
- package/dist/esm/notification/index.js.map +1 -0
- package/dist/esm/notification/notification/delete/client.js +4 -0
- package/dist/esm/notification/notification/delete/client.js.map +1 -0
- package/dist/esm/notification/notification/delete/generate-endpoint.js +18 -0
- package/dist/esm/notification/notification/delete/generate-endpoint.js.map +1 -0
- package/dist/esm/notification/notification/delete/generate-parameters.js +10 -0
- package/dist/esm/notification/notification/delete/generate-parameters.js.map +1 -0
- package/dist/esm/notification/notification/delete/index.js +6 -0
- package/dist/esm/notification/notification/delete/index.js.map +1 -0
- package/dist/esm/notification/notification/delete/types.js +2 -0
- package/dist/esm/notification/notification/delete/types.js.map +1 -0
- package/dist/esm/notification/notification/get/client.js +4 -0
- package/dist/esm/notification/notification/get/client.js.map +1 -0
- package/dist/esm/notification/notification/get/generate-endpoint.js +18 -0
- package/dist/esm/notification/notification/get/generate-endpoint.js.map +1 -0
- package/dist/esm/notification/notification/get/generate-parameters.js +7 -0
- package/dist/esm/notification/notification/get/generate-parameters.js.map +1 -0
- package/dist/esm/notification/notification/get/index.js +6 -0
- package/dist/esm/notification/notification/get/index.js.map +1 -0
- package/dist/esm/notification/notification/get/types.js +2 -0
- package/dist/esm/notification/notification/get/types.js.map +1 -0
- package/dist/esm/notification/notification/getAll/client.js +4 -0
- package/dist/esm/notification/notification/getAll/client.js.map +1 -0
- package/dist/esm/notification/notification/getAll/generate-endpoint.js +18 -0
- package/dist/esm/notification/notification/getAll/generate-endpoint.js.map +1 -0
- package/dist/esm/notification/notification/getAll/generate-parameters.js +7 -0
- package/dist/esm/notification/notification/getAll/generate-parameters.js.map +1 -0
- package/dist/esm/notification/notification/getAll/index.js +6 -0
- package/dist/esm/notification/notification/getAll/index.js.map +1 -0
- package/dist/esm/notification/notification/getAll/types.js +2 -0
- package/dist/esm/notification/notification/getAll/types.js.map +1 -0
- package/dist/esm/notification/notification/index.js +6 -0
- package/dist/esm/notification/notification/index.js.map +1 -0
- package/dist/esm/notification/notification/patch/client.js +4 -0
- package/dist/esm/notification/notification/patch/client.js.map +1 -0
- package/dist/esm/notification/notification/patch/generate-endpoint.js +18 -0
- package/dist/esm/notification/notification/patch/generate-endpoint.js.map +1 -0
- package/dist/esm/notification/notification/patch/generate-parameters.js +10 -0
- package/dist/esm/notification/notification/patch/generate-parameters.js.map +1 -0
- package/dist/esm/notification/notification/patch/index.js +6 -0
- package/dist/esm/notification/notification/patch/index.js.map +1 -0
- package/dist/esm/notification/notification/patch/types.js +2 -0
- package/dist/esm/notification/notification/patch/types.js.map +1 -0
- package/dist/esm/notification/notification/post/client.js +4 -0
- package/dist/esm/notification/notification/post/client.js.map +1 -0
- package/dist/esm/notification/notification/post/generate-endpoint.js +18 -0
- package/dist/esm/notification/notification/post/generate-endpoint.js.map +1 -0
- package/dist/esm/notification/notification/post/generate-parameters.js +10 -0
- package/dist/esm/notification/notification/post/generate-parameters.js.map +1 -0
- package/dist/esm/notification/notification/post/index.js +6 -0
- package/dist/esm/notification/notification/post/index.js.map +1 -0
- package/dist/esm/notification/notification/post/types.js +2 -0
- package/dist/esm/notification/notification/post/types.js.map +1 -0
- package/dist/esm/notification/settings/get/client.js +4 -0
- package/dist/esm/notification/settings/get/client.js.map +1 -0
- package/dist/esm/notification/settings/get/generate-endpoint.js +18 -0
- package/dist/esm/notification/settings/get/generate-endpoint.js.map +1 -0
- package/dist/esm/notification/settings/get/generate-parameters.js +7 -0
- package/dist/esm/notification/settings/get/generate-parameters.js.map +1 -0
- package/dist/esm/notification/settings/get/index.js +6 -0
- package/dist/esm/notification/settings/get/index.js.map +1 -0
- package/dist/esm/notification/settings/get/types.js +2 -0
- package/dist/esm/notification/settings/get/types.js.map +1 -0
- package/dist/esm/notification/settings/put/client.js +4 -0
- package/dist/esm/notification/settings/put/client.js.map +1 -0
- package/dist/esm/notification/settings/put/generate-endpoint.js +18 -0
- package/dist/esm/notification/settings/put/generate-endpoint.js.map +1 -0
- package/dist/esm/notification/settings/put/generate-parameters.js +10 -0
- package/dist/esm/notification/settings/put/generate-parameters.js.map +1 -0
- package/dist/esm/notification/settings/put/index.js +6 -0
- package/dist/esm/notification/settings/put/index.js.map +1 -0
- package/dist/esm/notification/settings/put/types.js +2 -0
- package/dist/esm/notification/settings/put/types.js.map +1 -0
- package/dist/esm/notification/static.js +6 -0
- package/dist/esm/notification/static.js.map +1 -0
- package/dist/esm/notification/types.js +2 -0
- package/dist/esm/notification/types.js.map +1 -0
- package/dist/esm/provider.js +7 -0
- package/dist/esm/provider.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/notification/api-models.d.ts +54 -0
- package/dist/types/notification/client.d.ts +24 -0
- package/dist/types/notification/index.d.ts +4 -0
- package/dist/types/notification/notification/delete/client.d.ts +5 -0
- package/dist/types/notification/notification/delete/generate-endpoint.d.ts +2 -0
- package/dist/types/notification/notification/delete/generate-parameters.d.ts +5 -0
- package/dist/types/notification/notification/delete/index.d.ts +5 -0
- package/dist/types/notification/notification/delete/types.d.ts +21 -0
- package/dist/types/notification/notification/get/client.d.ts +5 -0
- package/dist/types/notification/notification/get/generate-endpoint.d.ts +2 -0
- package/dist/types/notification/notification/get/generate-parameters.d.ts +5 -0
- package/dist/types/notification/notification/get/index.d.ts +5 -0
- package/dist/types/notification/notification/get/types.d.ts +21 -0
- package/dist/types/notification/notification/getAll/client.d.ts +5 -0
- package/dist/types/notification/notification/getAll/generate-endpoint.d.ts +2 -0
- package/dist/types/notification/notification/getAll/generate-parameters.d.ts +5 -0
- package/dist/types/notification/notification/getAll/index.d.ts +5 -0
- package/dist/types/notification/notification/getAll/types.d.ts +21 -0
- package/dist/types/notification/notification/index.d.ts +5 -0
- package/dist/types/notification/notification/patch/client.d.ts +5 -0
- package/dist/types/notification/notification/patch/generate-endpoint.d.ts +2 -0
- package/dist/types/notification/notification/patch/generate-parameters.d.ts +5 -0
- package/dist/types/notification/notification/patch/index.d.ts +5 -0
- package/dist/types/notification/notification/patch/types.d.ts +22 -0
- package/dist/types/notification/notification/post/client.d.ts +5 -0
- package/dist/types/notification/notification/post/generate-endpoint.d.ts +2 -0
- package/dist/types/notification/notification/post/generate-parameters.d.ts +5 -0
- package/dist/types/notification/notification/post/index.d.ts +5 -0
- package/dist/types/notification/notification/post/types.d.ts +33 -0
- package/dist/types/notification/settings/get/client.d.ts +5 -0
- package/dist/types/notification/settings/get/generate-endpoint.d.ts +2 -0
- package/dist/types/notification/settings/get/generate-parameters.d.ts +5 -0
- package/dist/types/notification/settings/get/index.d.ts +5 -0
- package/dist/types/notification/settings/get/types.d.ts +21 -0
- package/dist/types/notification/settings/put/client.d.ts +5 -0
- package/dist/types/notification/settings/put/generate-endpoint.d.ts +2 -0
- package/dist/types/notification/settings/put/generate-parameters.d.ts +5 -0
- package/dist/types/notification/settings/put/index.d.ts +5 -0
- package/dist/types/notification/settings/put/types.d.ts +17 -0
- package/dist/types/notification/static.d.ts +4 -0
- package/dist/types/notification/types.d.ts +1 -0
- package/dist/types/provider.d.ts +2 -0
- package/package.json +6 -2
- package/src/notification/api-models.ts +70 -0
- package/src/notification/client.ts +167 -0
- package/src/notification/index.ts +6 -0
- package/src/notification/notification/delete/client.ts +37 -0
- package/src/notification/notification/delete/generate-endpoint.ts +24 -0
- package/src/notification/notification/delete/generate-parameters.ts +32 -0
- package/src/notification/notification/delete/index.ts +8 -0
- package/src/notification/notification/delete/types.ts +44 -0
- package/src/notification/notification/get/client.ts +33 -0
- package/src/notification/notification/get/generate-endpoint.ts +25 -0
- package/src/notification/notification/get/generate-parameters.ts +22 -0
- package/src/notification/notification/get/index.ts +8 -0
- package/src/notification/notification/get/types.ts +44 -0
- package/src/notification/notification/getAll/client.ts +37 -0
- package/src/notification/notification/getAll/generate-endpoint.ts +25 -0
- package/src/notification/notification/getAll/generate-parameters.ts +22 -0
- package/src/notification/notification/getAll/index.ts +8 -0
- package/src/notification/notification/getAll/types.ts +44 -0
- package/src/notification/notification/index.ts +5 -0
- package/src/notification/notification/patch/client.ts +37 -0
- package/src/notification/notification/patch/generate-endpoint.ts +24 -0
- package/src/notification/notification/patch/generate-parameters.ts +32 -0
- package/src/notification/notification/patch/index.ts +8 -0
- package/src/notification/notification/patch/types.ts +45 -0
- package/src/notification/notification/post/client.ts +37 -0
- package/src/notification/notification/post/generate-endpoint.ts +25 -0
- package/src/notification/notification/post/generate-parameters.ts +32 -0
- package/src/notification/notification/post/index.ts +8 -0
- package/src/notification/notification/post/types.ts +57 -0
- package/src/notification/settings/get/client.ts +37 -0
- package/src/notification/settings/get/generate-endpoint.ts +25 -0
- package/src/notification/settings/get/generate-parameters.ts +22 -0
- package/src/notification/settings/get/index.ts +8 -0
- package/src/notification/settings/get/types.ts +44 -0
- package/src/notification/settings/put/client.ts +37 -0
- package/src/notification/settings/put/generate-endpoint.ts +25 -0
- package/src/notification/settings/put/generate-parameters.ts +34 -0
- package/src/notification/settings/put/index.ts +8 -0
- package/src/notification/settings/put/types.ts +38 -0
- package/src/notification/static.ts +6 -0
- package/src/notification/types.ts +5 -0
- 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];
|
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>> {
|