@equinor/fusion-framework-module-services 5.0.0-next-663bed8344cc2ca0111705b05045173328b3104d → 5.0.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 +10 -7
- package/dist/esm/bookmarks/api-version.js +6 -0
- package/dist/esm/bookmarks/api-version.js.map +1 -0
- package/dist/esm/bookmarks/client.js +148 -47
- package/dist/esm/bookmarks/client.js.map +1 -1
- package/dist/esm/bookmarks/endpoints/bookmark-apply.get.js +49 -0
- package/dist/esm/bookmarks/endpoints/bookmark-apply.get.js.map +1 -0
- package/dist/esm/bookmarks/endpoints/bookmark.delete.js +48 -0
- package/dist/esm/bookmarks/endpoints/bookmark.delete.js.map +1 -0
- package/dist/esm/bookmarks/endpoints/bookmark.get.js +53 -0
- package/dist/esm/bookmarks/endpoints/bookmark.get.js.map +1 -0
- package/dist/esm/bookmarks/endpoints/bookmark.patch.js +68 -0
- package/dist/esm/bookmarks/endpoints/bookmark.patch.js.map +1 -0
- package/dist/esm/bookmarks/endpoints/bookmark.post.js +57 -0
- package/dist/esm/bookmarks/endpoints/bookmark.post.js.map +1 -0
- package/dist/esm/bookmarks/endpoints/user-bookmark-favourite.delete.js +48 -0
- package/dist/esm/bookmarks/endpoints/user-bookmark-favourite.delete.js.map +1 -0
- package/dist/esm/bookmarks/endpoints/user-bookmark-favourite.head.js +49 -0
- package/dist/esm/bookmarks/endpoints/user-bookmark-favourite.head.js.map +1 -0
- package/dist/esm/bookmarks/endpoints/user-bookmark-favourite.post.js +49 -0
- package/dist/esm/bookmarks/endpoints/user-bookmark-favourite.post.js.map +1 -0
- package/dist/esm/bookmarks/endpoints/user-bookmarks.get.js +75 -0
- package/dist/esm/bookmarks/endpoints/user-bookmarks.get.js.map +1 -0
- package/dist/esm/bookmarks/index.js +1 -2
- package/dist/esm/bookmarks/index.js.map +1 -1
- package/dist/esm/bookmarks/schemas.js +76 -0
- package/dist/esm/bookmarks/schemas.js.map +1 -0
- package/dist/esm/bookmarks/selectors.js +58 -0
- package/dist/esm/bookmarks/selectors.js.map +1 -0
- package/dist/esm/utils.js +35 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/esm/version.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/bookmarks/api-version.d.ts +4 -0
- package/dist/types/bookmarks/client.d.ts +132 -34
- package/dist/types/bookmarks/endpoints/bookmark-apply.get.d.ts +40 -0
- package/dist/types/bookmarks/endpoints/bookmark.delete.d.ts +31 -0
- package/dist/types/bookmarks/endpoints/bookmark.get.d.ts +351 -0
- package/dist/types/bookmarks/endpoints/bookmark.patch.d.ts +254 -0
- package/dist/types/bookmarks/endpoints/bookmark.post.d.ts +231 -0
- package/dist/types/bookmarks/endpoints/user-bookmark-favourite.delete.d.ts +31 -0
- package/dist/types/bookmarks/endpoints/user-bookmark-favourite.head.d.ts +31 -0
- package/dist/types/bookmarks/endpoints/user-bookmark-favourite.post.d.ts +31 -0
- package/dist/types/bookmarks/endpoints/user-bookmarks.get.d.ts +235 -0
- package/dist/types/bookmarks/index.d.ts +3 -2
- package/dist/types/bookmarks/schemas.d.ts +383 -0
- package/dist/types/bookmarks/selectors.d.ts +17 -0
- package/dist/types/bookmarks/types.d.ts +5 -1
- package/dist/types/provider.d.ts +2 -2
- package/dist/types/types.d.ts +74 -11
- package/dist/types/utils.d.ts +18 -0
- package/dist/types/version.d.ts +1 -1
- package/package.json +11 -11
- package/src/bookmarks/README.md +90 -0
- package/src/bookmarks/api-version.ts +4 -0
- package/src/bookmarks/client.ts +257 -77
- package/src/bookmarks/endpoints/bookmark-apply.get.ts +114 -0
- package/src/bookmarks/endpoints/bookmark.delete.ts +113 -0
- package/src/bookmarks/endpoints/bookmark.get.ts +118 -0
- package/src/bookmarks/endpoints/bookmark.patch.ts +135 -0
- package/src/bookmarks/endpoints/bookmark.post.ts +124 -0
- package/src/bookmarks/endpoints/user-bookmark-favourite.delete.ts +113 -0
- package/src/bookmarks/endpoints/user-bookmark-favourite.head.ts +114 -0
- package/src/bookmarks/endpoints/user-bookmark-favourite.post.ts +114 -0
- package/src/bookmarks/endpoints/user-bookmarks.get.ts +142 -0
- package/src/bookmarks/index.ts +3 -3
- package/src/bookmarks/schemas.ts +81 -0
- package/src/bookmarks/selectors.ts +49 -0
- package/src/bookmarks/types.ts +16 -1
- package/src/provider.ts +4 -4
- package/src/types.ts +92 -11
- package/src/utils.ts +51 -0
- package/src/version.ts +1 -1
- package/dist/esm/bookmarks/api-models.js +0 -2
- package/dist/esm/bookmarks/api-models.js.map +0 -1
- package/dist/esm/bookmarks/delete/client.js +0 -10
- package/dist/esm/bookmarks/delete/client.js.map +0 -1
- package/dist/esm/bookmarks/delete/generate-endpoint.js +0 -20
- package/dist/esm/bookmarks/delete/generate-endpoint.js.map +0 -1
- package/dist/esm/bookmarks/delete/generate-parameters.js +0 -8
- package/dist/esm/bookmarks/delete/generate-parameters.js.map +0 -1
- package/dist/esm/bookmarks/delete/index.js +0 -5
- package/dist/esm/bookmarks/delete/index.js.map +0 -1
- package/dist/esm/bookmarks/delete/types-v1.js +0 -2
- package/dist/esm/bookmarks/delete/types-v1.js.map +0 -1
- package/dist/esm/bookmarks/delete/types.js +0 -2
- package/dist/esm/bookmarks/delete/types.js.map +0 -1
- package/dist/esm/bookmarks/favorites/delete/client.js +0 -10
- package/dist/esm/bookmarks/favorites/delete/client.js.map +0 -1
- package/dist/esm/bookmarks/favorites/delete/generate-endpoint.js +0 -15
- package/dist/esm/bookmarks/favorites/delete/generate-endpoint.js.map +0 -1
- package/dist/esm/bookmarks/favorites/delete/generate-parameters.js +0 -8
- package/dist/esm/bookmarks/favorites/delete/generate-parameters.js.map +0 -1
- package/dist/esm/bookmarks/favorites/delete/index.js +0 -5
- package/dist/esm/bookmarks/favorites/delete/index.js.map +0 -1
- package/dist/esm/bookmarks/favorites/delete/types-v1.js +0 -2
- package/dist/esm/bookmarks/favorites/delete/types-v1.js.map +0 -1
- package/dist/esm/bookmarks/favorites/delete/types.js +0 -2
- package/dist/esm/bookmarks/favorites/delete/types.js.map +0 -1
- package/dist/esm/bookmarks/favorites/head/client.js +0 -10
- package/dist/esm/bookmarks/favorites/head/client.js.map +0 -1
- package/dist/esm/bookmarks/favorites/head/generate-endpoint.js +0 -15
- package/dist/esm/bookmarks/favorites/head/generate-endpoint.js.map +0 -1
- package/dist/esm/bookmarks/favorites/head/generate-parameters.js +0 -10
- package/dist/esm/bookmarks/favorites/head/generate-parameters.js.map +0 -1
- package/dist/esm/bookmarks/favorites/head/index.js +0 -5
- package/dist/esm/bookmarks/favorites/head/index.js.map +0 -1
- package/dist/esm/bookmarks/favorites/head/types.js +0 -2
- package/dist/esm/bookmarks/favorites/head/types.js.map +0 -1
- package/dist/esm/bookmarks/favorites/post/client.js +0 -10
- package/dist/esm/bookmarks/favorites/post/client.js.map +0 -1
- package/dist/esm/bookmarks/favorites/post/generate-endpoint.js +0 -14
- package/dist/esm/bookmarks/favorites/post/generate-endpoint.js.map +0 -1
- package/dist/esm/bookmarks/favorites/post/generate-parameters.js +0 -10
- package/dist/esm/bookmarks/favorites/post/generate-parameters.js.map +0 -1
- package/dist/esm/bookmarks/favorites/post/index.js +0 -5
- package/dist/esm/bookmarks/favorites/post/index.js.map +0 -1
- package/dist/esm/bookmarks/favorites/post/types.js +0 -2
- package/dist/esm/bookmarks/favorites/post/types.js.map +0 -1
- package/dist/esm/bookmarks/get/client.js +0 -10
- package/dist/esm/bookmarks/get/client.js.map +0 -1
- package/dist/esm/bookmarks/get/generate-endpoint.js +0 -20
- package/dist/esm/bookmarks/get/generate-endpoint.js.map +0 -1
- package/dist/esm/bookmarks/get/generate-parameters.js +0 -7
- package/dist/esm/bookmarks/get/generate-parameters.js.map +0 -1
- package/dist/esm/bookmarks/get/index.js +0 -5
- package/dist/esm/bookmarks/get/index.js.map +0 -1
- package/dist/esm/bookmarks/get/types.js +0 -2
- package/dist/esm/bookmarks/get/types.js.map +0 -1
- package/dist/esm/bookmarks/getAll/client.js +0 -10
- package/dist/esm/bookmarks/getAll/client.js.map +0 -1
- package/dist/esm/bookmarks/getAll/generate-endpoint.js +0 -14
- package/dist/esm/bookmarks/getAll/generate-endpoint.js.map +0 -1
- package/dist/esm/bookmarks/getAll/generate-parameters.js +0 -7
- package/dist/esm/bookmarks/getAll/generate-parameters.js.map +0 -1
- package/dist/esm/bookmarks/getAll/index.js +0 -5
- package/dist/esm/bookmarks/getAll/index.js.map +0 -1
- package/dist/esm/bookmarks/getAll/types.js +0 -2
- package/dist/esm/bookmarks/getAll/types.js.map +0 -1
- package/dist/esm/bookmarks/patch/client.js +0 -10
- package/dist/esm/bookmarks/patch/client.js.map +0 -1
- package/dist/esm/bookmarks/patch/generate-endpoint.js +0 -14
- package/dist/esm/bookmarks/patch/generate-endpoint.js.map +0 -1
- package/dist/esm/bookmarks/patch/generate-parameters.js +0 -10
- package/dist/esm/bookmarks/patch/generate-parameters.js.map +0 -1
- package/dist/esm/bookmarks/patch/index.js +0 -5
- package/dist/esm/bookmarks/patch/index.js.map +0 -1
- package/dist/esm/bookmarks/patch/types.js +0 -2
- package/dist/esm/bookmarks/patch/types.js.map +0 -1
- package/dist/esm/bookmarks/post/client.js +0 -10
- package/dist/esm/bookmarks/post/client.js.map +0 -1
- package/dist/esm/bookmarks/post/generate-endpoint.js +0 -14
- package/dist/esm/bookmarks/post/generate-endpoint.js.map +0 -1
- package/dist/esm/bookmarks/post/generate-parameters.js +0 -10
- package/dist/esm/bookmarks/post/generate-parameters.js.map +0 -1
- package/dist/esm/bookmarks/post/index.js +0 -5
- package/dist/esm/bookmarks/post/index.js.map +0 -1
- package/dist/esm/bookmarks/post/types.js +0 -2
- package/dist/esm/bookmarks/post/types.js.map +0 -1
- package/dist/types/bookmarks/api-models.d.ts +0 -42
- package/dist/types/bookmarks/delete/client.d.ts +0 -11
- package/dist/types/bookmarks/delete/generate-endpoint.d.ts +0 -5
- package/dist/types/bookmarks/delete/generate-parameters.d.ts +0 -5
- package/dist/types/bookmarks/delete/index.d.ts +0 -4
- package/dist/types/bookmarks/delete/types-v1.d.ts +0 -4
- package/dist/types/bookmarks/delete/types.d.ts +0 -18
- package/dist/types/bookmarks/favorites/delete/client.d.ts +0 -11
- package/dist/types/bookmarks/favorites/delete/generate-endpoint.d.ts +0 -5
- package/dist/types/bookmarks/favorites/delete/generate-parameters.d.ts +0 -5
- package/dist/types/bookmarks/favorites/delete/index.d.ts +0 -4
- package/dist/types/bookmarks/favorites/delete/types-v1.d.ts +0 -4
- package/dist/types/bookmarks/favorites/delete/types.d.ts +0 -16
- package/dist/types/bookmarks/favorites/head/client.d.ts +0 -11
- package/dist/types/bookmarks/favorites/head/generate-endpoint.d.ts +0 -5
- package/dist/types/bookmarks/favorites/head/generate-parameters.d.ts +0 -5
- package/dist/types/bookmarks/favorites/head/index.d.ts +0 -4
- package/dist/types/bookmarks/favorites/head/types.d.ts +0 -17
- package/dist/types/bookmarks/favorites/post/client.d.ts +0 -11
- package/dist/types/bookmarks/favorites/post/generate-endpoint.d.ts +0 -5
- package/dist/types/bookmarks/favorites/post/generate-parameters.d.ts +0 -5
- package/dist/types/bookmarks/favorites/post/index.d.ts +0 -4
- package/dist/types/bookmarks/favorites/post/types.d.ts +0 -17
- package/dist/types/bookmarks/get/client.d.ts +0 -11
- package/dist/types/bookmarks/get/generate-endpoint.d.ts +0 -5
- package/dist/types/bookmarks/get/generate-parameters.d.ts +0 -5
- package/dist/types/bookmarks/get/index.d.ts +0 -4
- package/dist/types/bookmarks/get/types.d.ts +0 -21
- package/dist/types/bookmarks/getAll/client.d.ts +0 -11
- package/dist/types/bookmarks/getAll/generate-endpoint.d.ts +0 -5
- package/dist/types/bookmarks/getAll/generate-parameters.d.ts +0 -5
- package/dist/types/bookmarks/getAll/index.d.ts +0 -4
- package/dist/types/bookmarks/getAll/types.d.ts +0 -11
- package/dist/types/bookmarks/patch/client.d.ts +0 -11
- package/dist/types/bookmarks/patch/generate-endpoint.d.ts +0 -5
- package/dist/types/bookmarks/patch/generate-parameters.d.ts +0 -5
- package/dist/types/bookmarks/patch/index.d.ts +0 -4
- package/dist/types/bookmarks/patch/types.d.ts +0 -21
- package/dist/types/bookmarks/post/client.d.ts +0 -11
- package/dist/types/bookmarks/post/generate-endpoint.d.ts +0 -5
- package/dist/types/bookmarks/post/generate-parameters.d.ts +0 -5
- package/dist/types/bookmarks/post/index.d.ts +0 -4
- package/dist/types/bookmarks/post/types.d.ts +0 -34
- package/src/bookmarks/api-models.ts +0 -46
- package/src/bookmarks/delete/client.ts +0 -35
- package/src/bookmarks/delete/generate-endpoint.ts +0 -24
- package/src/bookmarks/delete/generate-parameters.ts +0 -25
- package/src/bookmarks/delete/index.ts +0 -6
- package/src/bookmarks/delete/types-v1.ts +0 -2
- package/src/bookmarks/delete/types.ts +0 -35
- package/src/bookmarks/favorites/delete/client.ts +0 -35
- package/src/bookmarks/favorites/delete/generate-endpoint.ts +0 -19
- package/src/bookmarks/favorites/delete/generate-parameters.ts +0 -25
- package/src/bookmarks/favorites/delete/index.ts +0 -6
- package/src/bookmarks/favorites/delete/types-v1.ts +0 -2
- package/src/bookmarks/favorites/delete/types.ts +0 -33
- package/src/bookmarks/favorites/head/client.ts +0 -35
- package/src/bookmarks/favorites/head/generate-endpoint.ts +0 -19
- package/src/bookmarks/favorites/head/generate-parameters.ts +0 -28
- package/src/bookmarks/favorites/head/index.ts +0 -6
- package/src/bookmarks/favorites/head/types.ts +0 -35
- package/src/bookmarks/favorites/post/client.ts +0 -35
- package/src/bookmarks/favorites/post/generate-endpoint.ts +0 -18
- package/src/bookmarks/favorites/post/generate-parameters.ts +0 -28
- package/src/bookmarks/favorites/post/index.ts +0 -6
- package/src/bookmarks/favorites/post/types.ts +0 -35
- package/src/bookmarks/get/client.ts +0 -30
- package/src/bookmarks/get/generate-endpoint.ts +0 -24
- package/src/bookmarks/get/generate-parameters.ts +0 -18
- package/src/bookmarks/get/index.ts +0 -6
- package/src/bookmarks/get/types.ts +0 -39
- package/src/bookmarks/getAll/client.ts +0 -30
- package/src/bookmarks/getAll/generate-endpoint.ts +0 -15
- package/src/bookmarks/getAll/generate-parameters.ts +0 -18
- package/src/bookmarks/getAll/index.ts +0 -6
- package/src/bookmarks/getAll/types.ts +0 -21
- package/src/bookmarks/patch/client.ts +0 -30
- package/src/bookmarks/patch/generate-endpoint.ts +0 -18
- package/src/bookmarks/patch/generate-parameters.ts +0 -28
- package/src/bookmarks/patch/index.ts +0 -6
- package/src/bookmarks/patch/types.ts +0 -45
- package/src/bookmarks/post/client.ts +0 -30
- package/src/bookmarks/post/generate-endpoint.ts +0 -18
- package/src/bookmarks/post/generate-parameters.ts +0 -28
- package/src/bookmarks/post/index.ts +0 -6
- package/src/bookmarks/post/types.ts +0 -58
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
import type {
|
|
4
|
+
ClientRequestInit,
|
|
5
|
+
FetchRequestInit,
|
|
6
|
+
IHttpClient,
|
|
7
|
+
JsonRequest,
|
|
8
|
+
} from '@equinor/fusion-framework-module-http/client';
|
|
9
|
+
|
|
10
|
+
import type { ClientMethod, ExtractApiVersion, FilterAllowedApiVersions } from '../types';
|
|
11
|
+
|
|
12
|
+
import { extractVersion } from '../../utils';
|
|
13
|
+
import { ApiVersion } from '../api-version';
|
|
14
|
+
import { statusSelector } from '../selectors';
|
|
15
|
+
|
|
16
|
+
/** API version which this operation uses. */
|
|
17
|
+
type AvailableVersions = ApiVersion.v1;
|
|
18
|
+
|
|
19
|
+
/** Defines the allowed versions for this operation. (key of enum as string or enum value) */
|
|
20
|
+
type AllowedVersions = FilterAllowedApiVersions<AvailableVersions>;
|
|
21
|
+
|
|
22
|
+
/** Schema for the input arguments to this operation. */
|
|
23
|
+
const ArgSchema = {
|
|
24
|
+
[ApiVersion.v1]: z.object({
|
|
25
|
+
bookmarkId: z.string(),
|
|
26
|
+
}),
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
/** Schema for the response from the API. */
|
|
30
|
+
const ApiResponseSchema = {
|
|
31
|
+
[ApiVersion.v1]: z.boolean(),
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/** Defines the expected output from the api. */
|
|
35
|
+
type ApiResponse<TVersion extends AllowedVersions> = z.infer<
|
|
36
|
+
(typeof ApiResponseSchema)[ExtractApiVersion<TVersion>]
|
|
37
|
+
>;
|
|
38
|
+
|
|
39
|
+
/** Defines the input arguments to this operation. */
|
|
40
|
+
type MethodArg<TVersion extends AllowedVersions> = z.input<
|
|
41
|
+
(typeof ArgSchema)[ExtractApiVersion<TVersion>]
|
|
42
|
+
>;
|
|
43
|
+
|
|
44
|
+
/** Defines the expected output of this operation. */
|
|
45
|
+
type MethodResult<
|
|
46
|
+
TVersion extends AllowedVersions,
|
|
47
|
+
TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>,
|
|
48
|
+
TResult = ApiResponse<TVersion>,
|
|
49
|
+
> = ClientMethod<TResult>[TMethod];
|
|
50
|
+
|
|
51
|
+
/** utility function for generating http request initialization parameters */
|
|
52
|
+
const generateRequestParameters = <TResult, TVersion extends AvailableVersions>(
|
|
53
|
+
version: TVersion,
|
|
54
|
+
args: z.infer<(typeof ArgSchema)[TVersion]>,
|
|
55
|
+
init?: ClientRequestInit<IHttpClient, TResult>,
|
|
56
|
+
): ClientRequestInit<IHttpClient, TResult> => {
|
|
57
|
+
switch (version) {
|
|
58
|
+
case ApiVersion.v1: {
|
|
59
|
+
const baseInit: FetchRequestInit<ApiResponse<ApiVersion.v1>, JsonRequest> = {
|
|
60
|
+
method: 'DELETE',
|
|
61
|
+
selector: statusSelector,
|
|
62
|
+
};
|
|
63
|
+
return Object.assign({}, baseInit, init);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
throw Error(`Unknown API version: ${version}`);
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
/** utility function for generating the api path */
|
|
70
|
+
const generateApiPath = <TVersion extends AvailableVersions>(
|
|
71
|
+
version: TVersion,
|
|
72
|
+
args: z.infer<(typeof ArgSchema)[TVersion]>,
|
|
73
|
+
): string => {
|
|
74
|
+
switch (version) {
|
|
75
|
+
case ApiVersion.v1: {
|
|
76
|
+
const params = new URLSearchParams();
|
|
77
|
+
params.append('api-version', version);
|
|
78
|
+
return `/persons/me/bookmarks/favourites/${args.bookmarkId}?${String(params)}`;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
throw Error(`Unknown API version: ${version}`);
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
/** executes the api call */
|
|
85
|
+
const executeApiCall = <TVersion extends AllowedVersions, TMethod extends keyof ClientMethod>(
|
|
86
|
+
version: TVersion,
|
|
87
|
+
client: IHttpClient,
|
|
88
|
+
method: TMethod = 'json' as TMethod,
|
|
89
|
+
) => {
|
|
90
|
+
type MethodVersion = ExtractApiVersion<TVersion>;
|
|
91
|
+
const apiVersion = extractVersion(ApiVersion, version);
|
|
92
|
+
return <
|
|
93
|
+
TResponse = ApiResponse<MethodVersion>,
|
|
94
|
+
TResult = MethodResult<MethodVersion, TMethod, TResponse>,
|
|
95
|
+
>(
|
|
96
|
+
input: MethodArg<MethodVersion>,
|
|
97
|
+
init?: ClientRequestInit<IHttpClient, TResponse>,
|
|
98
|
+
): TResult => {
|
|
99
|
+
const args = ArgSchema[apiVersion].parse(input);
|
|
100
|
+
return client[method](
|
|
101
|
+
generateApiPath(apiVersion, args),
|
|
102
|
+
generateRequestParameters(apiVersion, args, init),
|
|
103
|
+
) as TResult;
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
export {
|
|
108
|
+
AllowedVersions as RemoveBookmarkFavouriteVersion,
|
|
109
|
+
MethodArg as RemoveBookmarkFavouriteArgs,
|
|
110
|
+
ApiResponse as RemoveBookmarkFavouriteResponse,
|
|
111
|
+
MethodResult as RemoveBookmarkFavouriteResult,
|
|
112
|
+
executeApiCall as removeFavoriteBookmark,
|
|
113
|
+
};
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
import type {
|
|
4
|
+
ClientRequestInit,
|
|
5
|
+
FetchRequestInit,
|
|
6
|
+
IHttpClient,
|
|
7
|
+
JsonRequest,
|
|
8
|
+
} from '@equinor/fusion-framework-module-http/client';
|
|
9
|
+
|
|
10
|
+
import type { ClientMethod, ExtractApiVersion, FilterAllowedApiVersions } from '../types';
|
|
11
|
+
|
|
12
|
+
import { extractVersion } from '../../utils';
|
|
13
|
+
import { ApiVersion } from '../api-version';
|
|
14
|
+
import { headSelector } from '../selectors';
|
|
15
|
+
|
|
16
|
+
/** API version which this operation uses. */
|
|
17
|
+
type AvailableVersions = ApiVersion.v1;
|
|
18
|
+
|
|
19
|
+
/** Defines the allowed versions for this operation. (key of enum as string or enum value) */
|
|
20
|
+
type AllowedVersions = FilterAllowedApiVersions<AvailableVersions>;
|
|
21
|
+
|
|
22
|
+
/** Schema for the input arguments to this operation. */
|
|
23
|
+
const ArgSchema = {
|
|
24
|
+
[ApiVersion.v1]: z.object({
|
|
25
|
+
bookmarkId: z.string(),
|
|
26
|
+
}),
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
/** Schema for the response from the API. */
|
|
30
|
+
const ApiResponseSchema = {
|
|
31
|
+
[ApiVersion.v1]: z.boolean(),
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/** Defines the expected output from the api. */
|
|
35
|
+
type ApiResponse<TVersion extends AllowedVersions> = z.infer<
|
|
36
|
+
(typeof ApiResponseSchema)[ExtractApiVersion<TVersion>]
|
|
37
|
+
>;
|
|
38
|
+
|
|
39
|
+
/** Defines the input arguments to this operation. */
|
|
40
|
+
type MethodArg<TVersion extends AllowedVersions> = z.input<
|
|
41
|
+
(typeof ArgSchema)[ExtractApiVersion<TVersion>]
|
|
42
|
+
>;
|
|
43
|
+
|
|
44
|
+
/** Defines the expected output of this operation. */
|
|
45
|
+
type MethodResult<
|
|
46
|
+
TVersion extends AllowedVersions,
|
|
47
|
+
TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>,
|
|
48
|
+
TResult = ApiResponse<TVersion>,
|
|
49
|
+
> = ClientMethod<TResult>[TMethod];
|
|
50
|
+
|
|
51
|
+
/** utility function for generating http request initialization parameters */
|
|
52
|
+
const generateRequestParameters = <TResult, TVersion extends AvailableVersions>(
|
|
53
|
+
version: TVersion,
|
|
54
|
+
args: z.infer<(typeof ArgSchema)[TVersion]>,
|
|
55
|
+
init?: ClientRequestInit<IHttpClient, TResult>,
|
|
56
|
+
): ClientRequestInit<IHttpClient, TResult> => {
|
|
57
|
+
switch (version) {
|
|
58
|
+
case ApiVersion.v1: {
|
|
59
|
+
const baseInit: FetchRequestInit<ApiResponse<ApiVersion.v1>, JsonRequest> = {
|
|
60
|
+
method: 'POST',
|
|
61
|
+
selector: headSelector,
|
|
62
|
+
body: args,
|
|
63
|
+
};
|
|
64
|
+
return Object.assign({}, baseInit, init);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
throw Error(`Unknown API version: ${version}`);
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
/** utility function for generating the api path */
|
|
71
|
+
const generateApiPath = <TVersion extends AvailableVersions>(
|
|
72
|
+
version: TVersion,
|
|
73
|
+
args: z.infer<(typeof ArgSchema)[TVersion]>,
|
|
74
|
+
): string => {
|
|
75
|
+
switch (version) {
|
|
76
|
+
case ApiVersion.v1: {
|
|
77
|
+
const params = new URLSearchParams();
|
|
78
|
+
params.append('api-version', version);
|
|
79
|
+
return `/persons/me/bookmarks/favourites/${args.bookmarkId}?${String(params)}`;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
throw Error(`Unknown API version: ${version}`);
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
/** executes the api call */
|
|
86
|
+
const executeApiCall = <TVersion extends AllowedVersions, TMethod extends keyof ClientMethod>(
|
|
87
|
+
version: TVersion,
|
|
88
|
+
client: IHttpClient,
|
|
89
|
+
method: TMethod = 'json' as TMethod,
|
|
90
|
+
) => {
|
|
91
|
+
type MethodVersion = ExtractApiVersion<TVersion>;
|
|
92
|
+
const apiVersion = extractVersion(ApiVersion, version);
|
|
93
|
+
return <
|
|
94
|
+
TResponse = ApiResponse<MethodVersion>,
|
|
95
|
+
TResult = MethodResult<MethodVersion, TMethod, TResponse>,
|
|
96
|
+
>(
|
|
97
|
+
input: MethodArg<MethodVersion>,
|
|
98
|
+
init?: ClientRequestInit<IHttpClient, TResponse>,
|
|
99
|
+
): TResult => {
|
|
100
|
+
const args = ArgSchema[apiVersion].parse(input);
|
|
101
|
+
return client[method](
|
|
102
|
+
generateApiPath(apiVersion, args),
|
|
103
|
+
generateRequestParameters(apiVersion, args, init),
|
|
104
|
+
) as TResult;
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
export {
|
|
109
|
+
AllowedVersions as IsFavoriteBookmarkVersion,
|
|
110
|
+
MethodArg as IsFavoriteBookmarkArgs,
|
|
111
|
+
ApiResponse as IsFavoriteBookmarkResponse,
|
|
112
|
+
MethodResult as IsFavoriteBookmarkResult,
|
|
113
|
+
executeApiCall as isFavoriteBookmark,
|
|
114
|
+
};
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
import type {
|
|
4
|
+
ClientRequestInit,
|
|
5
|
+
FetchRequestInit,
|
|
6
|
+
IHttpClient,
|
|
7
|
+
JsonRequest,
|
|
8
|
+
} from '@equinor/fusion-framework-module-http/client';
|
|
9
|
+
|
|
10
|
+
import type { ClientMethod, ExtractApiVersion, FilterAllowedApiVersions } from '../types';
|
|
11
|
+
|
|
12
|
+
import { extractVersion } from '../../utils';
|
|
13
|
+
import { ApiVersion } from '../api-version';
|
|
14
|
+
import { statusSelector } from '../selectors';
|
|
15
|
+
|
|
16
|
+
/** API version which this operation uses. */
|
|
17
|
+
type AvailableVersions = ApiVersion.v1;
|
|
18
|
+
|
|
19
|
+
/** Defines the allowed versions for this operation. (key of enum as string or enum value) */
|
|
20
|
+
type AllowedVersions = FilterAllowedApiVersions<AvailableVersions>;
|
|
21
|
+
|
|
22
|
+
/** Schema for the input arguments to this operation. */
|
|
23
|
+
const ArgSchema = {
|
|
24
|
+
[ApiVersion.v1]: z.object({
|
|
25
|
+
bookmarkId: z.string(),
|
|
26
|
+
}),
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
/** Schema for the response from the API. */
|
|
30
|
+
const ApiResponseSchema = {
|
|
31
|
+
[ApiVersion.v1]: z.boolean(),
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/** Defines the expected output from the api. */
|
|
35
|
+
type ApiResponse<TVersion extends AllowedVersions> = z.infer<
|
|
36
|
+
(typeof ApiResponseSchema)[ExtractApiVersion<TVersion>]
|
|
37
|
+
>;
|
|
38
|
+
|
|
39
|
+
/** Defines the input arguments to this operation. */
|
|
40
|
+
type MethodArg<TVersion extends AllowedVersions> = z.input<
|
|
41
|
+
(typeof ArgSchema)[ExtractApiVersion<TVersion>]
|
|
42
|
+
>;
|
|
43
|
+
|
|
44
|
+
/** Defines the expected output of this operation. */
|
|
45
|
+
type MethodResult<
|
|
46
|
+
TVersion extends AllowedVersions,
|
|
47
|
+
TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>,
|
|
48
|
+
TResult = ApiResponse<TVersion>,
|
|
49
|
+
> = ClientMethod<TResult>[TMethod];
|
|
50
|
+
|
|
51
|
+
/** utility function for generating http request initialization parameters */
|
|
52
|
+
const generateRequestParameters = <TResult, TVersion extends AvailableVersions>(
|
|
53
|
+
version: TVersion,
|
|
54
|
+
args: z.infer<(typeof ArgSchema)[TVersion]>,
|
|
55
|
+
init?: ClientRequestInit<IHttpClient, TResult>,
|
|
56
|
+
): ClientRequestInit<IHttpClient, TResult> => {
|
|
57
|
+
switch (version) {
|
|
58
|
+
case ApiVersion.v1: {
|
|
59
|
+
const baseInit: FetchRequestInit<ApiResponse<ApiVersion.v1>, JsonRequest> = {
|
|
60
|
+
method: 'POST',
|
|
61
|
+
selector: statusSelector,
|
|
62
|
+
body: args,
|
|
63
|
+
};
|
|
64
|
+
return Object.assign({}, baseInit, init);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
throw Error(`Unknown API version: ${version}`);
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
/** utility function for generating the api path */
|
|
71
|
+
const generateApiPath = <TVersion extends AvailableVersions>(
|
|
72
|
+
version: TVersion,
|
|
73
|
+
_args: z.infer<(typeof ArgSchema)[TVersion]>,
|
|
74
|
+
): string => {
|
|
75
|
+
switch (version) {
|
|
76
|
+
case ApiVersion.v1: {
|
|
77
|
+
const params = new URLSearchParams();
|
|
78
|
+
params.append('api-version', version);
|
|
79
|
+
return `/persons/me/bookmarks/favourites?${String(params)}`;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
throw Error(`Unknown API version: ${version}`);
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
/** executes the api call */
|
|
86
|
+
const executeApiCall = <TVersion extends AllowedVersions, TMethod extends keyof ClientMethod>(
|
|
87
|
+
version: TVersion,
|
|
88
|
+
client: IHttpClient,
|
|
89
|
+
method: TMethod = 'json' as TMethod,
|
|
90
|
+
) => {
|
|
91
|
+
type MethodVersion = ExtractApiVersion<TVersion>;
|
|
92
|
+
const apiVersion = extractVersion(ApiVersion, version);
|
|
93
|
+
return <
|
|
94
|
+
TResponse = ApiResponse<MethodVersion>,
|
|
95
|
+
TResult = MethodResult<MethodVersion, TMethod, TResponse>,
|
|
96
|
+
>(
|
|
97
|
+
input: MethodArg<MethodVersion>,
|
|
98
|
+
init?: ClientRequestInit<IHttpClient, TResponse>,
|
|
99
|
+
): TResult => {
|
|
100
|
+
const args = ArgSchema[apiVersion].parse(input);
|
|
101
|
+
return client[method](
|
|
102
|
+
generateApiPath(apiVersion, args),
|
|
103
|
+
generateRequestParameters(apiVersion, args, init),
|
|
104
|
+
) as TResult;
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
export {
|
|
109
|
+
AllowedVersions as AddBookmarkFavouriteVersion,
|
|
110
|
+
MethodArg as AddBookmarkFavouriteArgs,
|
|
111
|
+
ApiResponse as AddBookmarkFavouriteResponse,
|
|
112
|
+
MethodResult as AddBookmarkFavouriteResult,
|
|
113
|
+
executeApiCall as addBookmarkAsFavourite,
|
|
114
|
+
};
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
import type {
|
|
4
|
+
ClientRequestInit,
|
|
5
|
+
FetchRequestInit,
|
|
6
|
+
IHttpClient,
|
|
7
|
+
JsonRequest,
|
|
8
|
+
} from '@equinor/fusion-framework-module-http/client';
|
|
9
|
+
|
|
10
|
+
import type { ClientMethod, ExtractApiVersion, FilterAllowedApiVersions } from '../types';
|
|
11
|
+
|
|
12
|
+
import { extractVersion, schemaSelector } from '../../utils';
|
|
13
|
+
import { ApiVersion } from '../api-version';
|
|
14
|
+
import { ApiBookmarkSchema, ApiSourceSystem } from '../schemas';
|
|
15
|
+
|
|
16
|
+
/** API version which this operation uses. */
|
|
17
|
+
type AvailableVersions = ApiVersion.v1;
|
|
18
|
+
|
|
19
|
+
/** Defines the allowed versions for this operation. (key of enum as string or enum value) */
|
|
20
|
+
type AllowedVersions = FilterAllowedApiVersions<AvailableVersions>;
|
|
21
|
+
|
|
22
|
+
/** Schema for the input arguments to this operation. */
|
|
23
|
+
const ArgSchema = {
|
|
24
|
+
[ApiVersion.v1]: z
|
|
25
|
+
.object({
|
|
26
|
+
filter: z
|
|
27
|
+
.string()
|
|
28
|
+
.or(
|
|
29
|
+
z
|
|
30
|
+
.object({
|
|
31
|
+
appKey: z.string().optional(),
|
|
32
|
+
contextId: z.string().optional(),
|
|
33
|
+
sourceSystem: ApiSourceSystem[ApiVersion.v1].partial().optional(),
|
|
34
|
+
})
|
|
35
|
+
.transform((x) => {
|
|
36
|
+
return Object.entries(x)
|
|
37
|
+
.map(([key, value]) => {
|
|
38
|
+
if (typeof value === 'string') {
|
|
39
|
+
return `${key} eq '${value}'`;
|
|
40
|
+
}
|
|
41
|
+
if (typeof value === 'object') {
|
|
42
|
+
return Object.entries(value)
|
|
43
|
+
.map(
|
|
44
|
+
([subKey, subValue]) =>
|
|
45
|
+
`${key}.${subKey} eq '${subValue}'`,
|
|
46
|
+
)
|
|
47
|
+
.join(' and ');
|
|
48
|
+
}
|
|
49
|
+
})
|
|
50
|
+
.filter((x) => !!x)
|
|
51
|
+
.join(' and ');
|
|
52
|
+
}),
|
|
53
|
+
)
|
|
54
|
+
.optional(),
|
|
55
|
+
})
|
|
56
|
+
.optional(),
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
/** Schema for the response from the API. */
|
|
60
|
+
const ApiResponseSchema = {
|
|
61
|
+
[ApiVersion.v1]: z.array(ApiBookmarkSchema[ApiVersion.v1]),
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
/** Defines the expected output from the api. */
|
|
65
|
+
type ApiResponse<TVersion extends AllowedVersions> = z.infer<
|
|
66
|
+
(typeof ApiResponseSchema)[ExtractApiVersion<TVersion>]
|
|
67
|
+
>;
|
|
68
|
+
|
|
69
|
+
/** Defines the input arguments to this operation. */
|
|
70
|
+
type MethodArg<TVersion extends AllowedVersions> = z.input<
|
|
71
|
+
(typeof ArgSchema)[ExtractApiVersion<TVersion>]
|
|
72
|
+
>;
|
|
73
|
+
|
|
74
|
+
/** Defines the expected output of this operation. */
|
|
75
|
+
type MethodResult<
|
|
76
|
+
TVersion extends AllowedVersions,
|
|
77
|
+
TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>,
|
|
78
|
+
TResult = ApiResponse<TVersion>,
|
|
79
|
+
> = ClientMethod<TResult>[TMethod];
|
|
80
|
+
|
|
81
|
+
/** utility function for generating http request initialization parameters */
|
|
82
|
+
const generateRequestParameters = <TResult, TVersion extends AvailableVersions>(
|
|
83
|
+
version: TVersion,
|
|
84
|
+
_args: z.infer<(typeof ArgSchema)[TVersion]>,
|
|
85
|
+
init?: ClientRequestInit<IHttpClient, TResult>,
|
|
86
|
+
): ClientRequestInit<IHttpClient, TResult> => {
|
|
87
|
+
switch (version) {
|
|
88
|
+
case ApiVersion.v1: {
|
|
89
|
+
const baseInit: FetchRequestInit<ApiResponse<ApiVersion.v1>, JsonRequest> = {
|
|
90
|
+
selector: schemaSelector(ApiResponseSchema[version]),
|
|
91
|
+
};
|
|
92
|
+
return Object.assign({}, baseInit, init);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
throw Error(`Unknown API version: ${version}`);
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
/** utility function for generating the api path */
|
|
99
|
+
const generateApiPath = <TVersion extends AvailableVersions>(
|
|
100
|
+
version: TVersion,
|
|
101
|
+
args: z.infer<(typeof ArgSchema)[TVersion]>,
|
|
102
|
+
): string => {
|
|
103
|
+
switch (version) {
|
|
104
|
+
case ApiVersion.v1: {
|
|
105
|
+
const params = new URLSearchParams();
|
|
106
|
+
params.append('api-version', version);
|
|
107
|
+
args?.filter && params.append('$filter', args.filter);
|
|
108
|
+
return `/persons/me/bookmarks/?${String(params)}`;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
throw Error(`Unknown API version: ${version}`);
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
/** executes the api call */
|
|
115
|
+
const executeApiCall = <TVersion extends AllowedVersions, TMethod extends keyof ClientMethod>(
|
|
116
|
+
version: TVersion,
|
|
117
|
+
client: IHttpClient,
|
|
118
|
+
method: TMethod = 'json' as TMethod,
|
|
119
|
+
) => {
|
|
120
|
+
type MethodVersion = ExtractApiVersion<TVersion>;
|
|
121
|
+
const apiVersion = extractVersion(ApiVersion, version);
|
|
122
|
+
return <
|
|
123
|
+
TResponse = ApiResponse<MethodVersion>,
|
|
124
|
+
TResult = MethodResult<MethodVersion, TMethod, TResponse>,
|
|
125
|
+
>(
|
|
126
|
+
input: MethodArg<MethodVersion>,
|
|
127
|
+
init?: ClientRequestInit<IHttpClient, TResponse>,
|
|
128
|
+
): TResult => {
|
|
129
|
+
const args = ArgSchema[apiVersion].parse(input);
|
|
130
|
+
const path = generateApiPath(apiVersion, args);
|
|
131
|
+
const params = generateRequestParameters(apiVersion, args, init);
|
|
132
|
+
return client[method](path, params) as TResult;
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
export {
|
|
137
|
+
AllowedVersions as GetBookmarksVersion,
|
|
138
|
+
MethodArg as GetBookmarksArgs,
|
|
139
|
+
ApiResponse as GetBookmarksResponse,
|
|
140
|
+
MethodResult as GetBookmarksResult,
|
|
141
|
+
executeApiCall as getBookmarks,
|
|
142
|
+
};
|
package/src/bookmarks/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { BookmarksApiClient, default } from './client';
|
|
2
|
-
|
|
3
|
-
export * from './
|
|
4
|
-
export * from './types';
|
|
2
|
+
export { ApiVersion } from './api-version';
|
|
3
|
+
export type * from './schemas';
|
|
4
|
+
export type * from './types';
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { ApiVersion } from './api-version';
|
|
2
|
+
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
|
|
5
|
+
export const ApiDateSchema = z
|
|
6
|
+
.string()
|
|
7
|
+
.datetime({ offset: true })
|
|
8
|
+
.transform((x) => new Date(x));
|
|
9
|
+
|
|
10
|
+
export const ApiPersonSchema = {
|
|
11
|
+
[ApiVersion.v1]: z.object({
|
|
12
|
+
azureUniqueId: z.string(),
|
|
13
|
+
name: z.string(),
|
|
14
|
+
mail: z.string().optional(),
|
|
15
|
+
phoneNumber: z.string().optional(),
|
|
16
|
+
jobTitle: z.string().optional(),
|
|
17
|
+
accountType: z
|
|
18
|
+
.enum(['Employee', 'Consultant', 'External', 'Application', 'Local'])
|
|
19
|
+
.optional(),
|
|
20
|
+
accountClassification: z.enum(['Unclassified', 'Internal', 'External']).optional(),
|
|
21
|
+
}),
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export const ApiSourceSystem = {
|
|
25
|
+
[ApiVersion.v1]: z.object({
|
|
26
|
+
identifier: z.string(),
|
|
27
|
+
name: z.string().nullish(),
|
|
28
|
+
subSystem: z.string().nullish(),
|
|
29
|
+
}),
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export const ApiFusionContext = {
|
|
33
|
+
[ApiVersion.v1]: z.object({
|
|
34
|
+
id: z.string(),
|
|
35
|
+
name: z.string().nullish(),
|
|
36
|
+
type: z.string().nullish(),
|
|
37
|
+
}),
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Defines the schema for the API bookmark entity, which includes various properties such as the unique identifier, name, application key, description, sharing status, context, creator and updater information, creation and update timestamps, and source system details.
|
|
42
|
+
*
|
|
43
|
+
* This schema is defined for the v1 API version, and the properties are validated using the Zod library.
|
|
44
|
+
*/
|
|
45
|
+
export const ApiBookmarkSchema = {
|
|
46
|
+
get [ApiVersion.v1]() {
|
|
47
|
+
return z.object({
|
|
48
|
+
id: z.string(),
|
|
49
|
+
name: z.string(),
|
|
50
|
+
appKey: z.string(),
|
|
51
|
+
description: z.string().optional(),
|
|
52
|
+
isShared: z.boolean().optional(),
|
|
53
|
+
context: ApiFusionContext[ApiVersion.v1].optional(),
|
|
54
|
+
createdBy: ApiPersonSchema[ApiVersion.v1],
|
|
55
|
+
updatedBy: ApiPersonSchema[ApiVersion.v1].optional(),
|
|
56
|
+
created: ApiDateSchema,
|
|
57
|
+
updated: ApiDateSchema.optional(),
|
|
58
|
+
sourceSystem: ApiSourceSystem[ApiVersion.v1].optional(),
|
|
59
|
+
});
|
|
60
|
+
},
|
|
61
|
+
get [ApiVersion.v2]() {
|
|
62
|
+
return this[ApiVersion.v1];
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export const ApiBookmarkPayload = {
|
|
67
|
+
get [ApiVersion.v1]() {
|
|
68
|
+
return z
|
|
69
|
+
.record(z.unknown())
|
|
70
|
+
.or(z.string())
|
|
71
|
+
.optional()
|
|
72
|
+
.default('')
|
|
73
|
+
.transform((x) => {
|
|
74
|
+
try {
|
|
75
|
+
return typeof x === 'string' ? JSON.parse(x) : x;
|
|
76
|
+
} catch {
|
|
77
|
+
return x;
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
},
|
|
81
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { HttpJsonResponseError } from '@equinor/fusion-framework-module-http';
|
|
2
|
+
import { type ResponseSelector } from '@equinor/fusion-framework-module-http/selectors';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* A response selector that checks the status of an HTTP response and throws an error if the response is not successful.
|
|
6
|
+
*
|
|
7
|
+
* @param res - The HTTP response to check.
|
|
8
|
+
* @returns `true` if the response is successful, otherwise throws an `HttpJsonResponseError`.
|
|
9
|
+
* @throws {HttpJsonResponseError} If the response is not successful, with the error message, response, and any additional data or cause.
|
|
10
|
+
*/
|
|
11
|
+
export const statusSelector: ResponseSelector<boolean> = async (res) => {
|
|
12
|
+
if (res.ok) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
const message = `Failed to execute request. Status code: ${res.status}`;
|
|
16
|
+
let cause: unknown;
|
|
17
|
+
let data: unknown;
|
|
18
|
+
switch (res.status) {
|
|
19
|
+
case 403:
|
|
20
|
+
case 404: {
|
|
21
|
+
try {
|
|
22
|
+
data = await res.json();
|
|
23
|
+
} catch (error) {
|
|
24
|
+
cause = error;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
throw new HttpJsonResponseError(message, res, { cause, data });
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* A response selector that checks the status of an HTTP response is `2xx` = true or `404` = false, otherwise throws an error.
|
|
33
|
+
*
|
|
34
|
+
* @param res - The HTTP response to check.
|
|
35
|
+
* @returns `true` if the response is successful, `false` if the response has a 404 status code, otherwise throws an `HttpJsonResponseError`.
|
|
36
|
+
* @throws {HttpJsonResponseError} If the response is not successful and does not have a 404 status code, with the error message, response, and any additional data or cause.
|
|
37
|
+
*/
|
|
38
|
+
export const headSelector: ResponseSelector<boolean> = (res) => {
|
|
39
|
+
try {
|
|
40
|
+
return statusSelector(res);
|
|
41
|
+
} catch (error) {
|
|
42
|
+
if (error instanceof HttpJsonResponseError) {
|
|
43
|
+
if (error.response.status === 404) {
|
|
44
|
+
return Promise.resolve(false);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
};
|
package/src/bookmarks/types.ts
CHANGED
|
@@ -1 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
import type {
|
|
2
|
+
FilterAllowedApiVersions as FilterAllowApiVersionsBase,
|
|
3
|
+
ExtractApiVersion as ExtractApiVersionBase,
|
|
4
|
+
} from '../types';
|
|
5
|
+
|
|
6
|
+
import { ApiVersion } from './api-version';
|
|
7
|
+
|
|
8
|
+
export { ClientMethodType, ClientMethod, ApiClientArguments } from '../types';
|
|
9
|
+
|
|
10
|
+
export type FilterAllowedApiVersions<TAllowed extends string = keyof typeof ApiVersion> =
|
|
11
|
+
FilterAllowApiVersionsBase<typeof ApiVersion, TAllowed>;
|
|
12
|
+
|
|
13
|
+
export type ExtractApiVersion<
|
|
14
|
+
TVersion extends string,
|
|
15
|
+
TAllowed extends string = FilterAllowedApiVersions,
|
|
16
|
+
> = ExtractApiVersionBase<typeof ApiVersion, TVersion, TAllowed>;
|
package/src/provider.ts
CHANGED
|
@@ -11,9 +11,9 @@ export interface IApiProvider<TClient extends IHttpClient = IHttpClient> {
|
|
|
11
11
|
/**
|
|
12
12
|
* @param method - Version of the service to use
|
|
13
13
|
*/
|
|
14
|
-
createBookmarksClient<TMethod extends keyof ClientMethod
|
|
14
|
+
createBookmarksClient<TMethod extends keyof ClientMethod>(
|
|
15
15
|
method: TMethod,
|
|
16
|
-
): Promise<BookmarksApiClient<TMethod, TClient
|
|
16
|
+
): Promise<BookmarksApiClient<TMethod, TClient>>;
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* @param method - Version of the service to use
|
|
@@ -92,9 +92,9 @@ export class ApiProvider<TClient extends IHttpClient = IHttpClient>
|
|
|
92
92
|
return new NotificationApiClient(httpClient, method);
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
public async createBookmarksClient<TMethod extends keyof ClientMethod
|
|
95
|
+
public async createBookmarksClient<TMethod extends keyof ClientMethod>(
|
|
96
96
|
method: TMethod,
|
|
97
|
-
): Promise<BookmarksApiClient<TMethod, TClient
|
|
97
|
+
): Promise<BookmarksApiClient<TMethod, TClient>> {
|
|
98
98
|
const httpClient = await this._createClientFn('bookmarks');
|
|
99
99
|
httpClient.responseHandler.add('validate_api_request', validateResponse);
|
|
100
100
|
return new BookmarksApiClient(httpClient, method);
|