@equinor/fusion-framework-module-services 2.3.0 → 2.5.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 (46) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/esm/bookmarks/client.js.map +1 -1
  3. package/dist/esm/bookmarks/patch/client.js +2 -2
  4. package/dist/esm/bookmarks/patch/client.js.map +1 -1
  5. package/dist/esm/bookmarks/patch/generate-endpoint.js.map +1 -1
  6. package/dist/esm/bookmarks/patch/generate-parameters.js.map +1 -1
  7. package/dist/esm/bookmarks/patch/index.js +3 -3
  8. package/dist/esm/bookmarks/patch/index.js.map +1 -1
  9. package/dist/esm/context/client.js +5 -0
  10. package/dist/esm/context/client.js.map +1 -1
  11. package/dist/esm/context/related/client.js +4 -0
  12. package/dist/esm/context/related/client.js.map +1 -0
  13. package/dist/esm/context/related/generate-endpoint.js +44 -0
  14. package/dist/esm/context/related/generate-endpoint.js.map +1 -0
  15. package/dist/esm/context/related/generate-parameters.js +7 -0
  16. package/dist/esm/context/related/generate-parameters.js.map +1 -0
  17. package/dist/esm/context/related/index.js +6 -0
  18. package/dist/esm/context/related/index.js.map +1 -0
  19. package/dist/esm/context/related/types.js +2 -0
  20. package/dist/esm/context/related/types.js.map +1 -0
  21. package/dist/tsconfig.tsbuildinfo +1 -1
  22. package/dist/types/bookmarks/client.d.ts +1 -1
  23. package/dist/types/bookmarks/patch/client.d.ts +3 -3
  24. package/dist/types/bookmarks/patch/generate-endpoint.d.ts +2 -2
  25. package/dist/types/bookmarks/patch/generate-parameters.d.ts +2 -2
  26. package/dist/types/bookmarks/patch/index.d.ts +3 -3
  27. package/dist/types/bookmarks/patch/types.d.ts +8 -8
  28. package/dist/types/context/client.d.ts +2 -0
  29. package/dist/types/context/related/client.d.ts +4 -0
  30. package/dist/types/context/related/generate-endpoint.d.ts +3 -0
  31. package/dist/types/context/related/generate-parameters.d.ts +4 -0
  32. package/dist/types/context/related/index.d.ts +5 -0
  33. package/dist/types/context/related/types.d.ts +29 -0
  34. package/package.json +5 -2
  35. package/src/bookmarks/client.ts +1 -5
  36. package/src/bookmarks/patch/client.ts +7 -7
  37. package/src/bookmarks/patch/generate-endpoint.ts +2 -2
  38. package/src/bookmarks/patch/generate-parameters.ts +2 -2
  39. package/src/bookmarks/patch/index.ts +3 -3
  40. package/src/bookmarks/patch/types.ts +14 -14
  41. package/src/context/client.ts +23 -0
  42. package/src/context/related/client.ts +35 -0
  43. package/src/context/related/generate-endpoint.ts +62 -0
  44. package/src/context/related/generate-parameters.ts +23 -0
  45. package/src/context/related/index.ts +8 -0
  46. package/src/context/related/types.ts +63 -0
@@ -3,7 +3,7 @@ import { ClientMethod } from '@equinor/fusion-framework-module-services/context'
3
3
  import { DeleteBookmarkResult, DeleteBookmarksFn, DeleteBookmarksResult } from './delete/types';
4
4
  import { ApiVersions, GetBookmarkResult, GetBookmarksFn, GetBookmarksResult } from './get/types';
5
5
  import { PostBookmarkResult, PostBookmarkFn, PostBookmarksResult } from './post/types';
6
- import { PutBookmarkFn as PatchBookmarkFn, PutBookmarkResult as PatchBookmarkResult, PutBookmarksResult as PatchBookmarksResult } from './patch';
6
+ import { PatchBookmarkFn, PatchBookmarkResult, PatchBookmarksResult } from './patch';
7
7
  import { GetAllBookmarkResult, GetAllBookmarksResult } from './getAll';
8
8
  import { PostBookmarkFavoriteFn, PostBookmarksFavoriteResult } from './favorites/post';
9
9
  import { DeleteBookmarksFavoriteFn, DeleteBookmarksFavoriteResult } from './favorites/delete';
@@ -1,5 +1,5 @@
1
1
  import { ClientRequestInit, IHttpClient } from '@equinor/fusion-framework-module-http/client';
2
2
  import { ClientMethod } from '../..';
3
- import { PutBookmarkArgs, PutBookmarkResult, PutBookmarksResult } from './types';
4
- export declare const putBookmark: <TClient extends IHttpClient<import("@equinor/fusion-framework-module-http/client").FetchRequest, Response> = IHttpClient<import("@equinor/fusion-framework-module-http/client").FetchRequest, Response>, TVersion extends "v1" = "v1", TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>>(client: TClient, version: TVersion, method?: TMethod) => <TResult = PutBookmarkResult<TVersion, unknown>>(args: PutBookmarkArgs<TVersion, unknown>, init?: ClientRequestInit<TClient, TResult> | undefined) => PutBookmarksResult<TVersion, TMethod, unknown, TResult>;
5
- export default putBookmark;
3
+ import { PatchBookmarkArgs, PatchBookmarkResult, PatchBookmarksResult } from './types';
4
+ export declare const patchBookmark: <TClient extends IHttpClient<import("@equinor/fusion-framework-module-http/client").FetchRequest, Response> = IHttpClient<import("@equinor/fusion-framework-module-http/client").FetchRequest, Response>, TVersion extends "v1" = "v1", TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>>(client: TClient, version: TVersion, method?: TMethod) => <TResult = PatchBookmarkResult<TVersion, unknown>>(args: PatchBookmarkArgs<TVersion, unknown>, init?: ClientRequestInit<TClient, TResult> | undefined) => PatchBookmarksResult<TVersion, TMethod, unknown, TResult>;
5
+ export default patchBookmark;
@@ -1,2 +1,2 @@
1
- import { PutBookmarkArgs } from './types';
2
- export declare const generateEndpoint: <TVersion extends "v1">(version: TVersion, _args: PutBookmarkArgs<TVersion, unknown>) => string;
1
+ import { PatchBookmarkArgs } from './types';
2
+ export declare const generateEndpoint: <TVersion extends "v1">(version: TVersion, _args: PatchBookmarkArgs<TVersion, unknown>) => string;
@@ -1,4 +1,4 @@
1
1
  import { ClientRequestInit, IHttpClient } from '@equinor/fusion-framework-module-http/client';
2
2
  import { ApiClientArguments } from '../..';
3
- import { PutBookmarkArgs } from './types';
4
- export declare const generateParameters: <TResult, TVersion extends "v1", TClient extends IHttpClient<import("@equinor/fusion-framework-module-http/client").FetchRequest, Response> = IHttpClient<import("@equinor/fusion-framework-module-http/client").FetchRequest, Response>>(version: TVersion, args: PutBookmarkArgs<TVersion, unknown>, init?: ClientRequestInit<TClient, TResult> | undefined) => ApiClientArguments<TClient, TResult>;
3
+ import { PatchBookmarkArgs } from './types';
4
+ export declare const generateParameters: <TResult, TVersion extends "v1", TClient extends IHttpClient<import("@equinor/fusion-framework-module-http/client").FetchRequest, Response> = IHttpClient<import("@equinor/fusion-framework-module-http/client").FetchRequest, Response>>(version: TVersion, args: PatchBookmarkArgs<TVersion, unknown>, init?: ClientRequestInit<TClient, TResult> | undefined) => ApiClientArguments<TClient, TResult>;
@@ -1,4 +1,4 @@
1
1
  export * from './types';
2
- export { putBookmark, default } from './client';
3
- export { generateEndpoint as generatePutEndpoint } from './generate-endpoint';
4
- export { generateParameters as generatePutParameters } from './generate-parameters';
2
+ export { patchBookmark, default } from './client';
3
+ export { generateEndpoint as generatePatchEndpoint } from './generate-endpoint';
4
+ export { generateParameters as generatePatchParameters } from './generate-parameters';
@@ -3,17 +3,17 @@ import { ClientRequestInit } from '@equinor/fusion-framework-module-http/client'
3
3
  import { ClientMethod } from '../..';
4
4
  import { ApiBookmarkEntityV1 } from '../api-models';
5
5
  import { PostBookmarksArgsV1 } from '../post';
6
- export type PutBookmarkResult<TVersion extends ApiVersions, TPayload> = PutBookmarksVersions<TPayload>[TVersion]['result'];
7
- export type PutBookmarkArgs<TVersion extends ApiVersions, TPayload = unknown> = PutBookmarksVersions<TPayload>[TVersion]['args'];
8
- export type PutBookmarksResult<TVersion extends ApiVersions, TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>, TPayload = unknown, TResult = PutBookmarkResult<TVersion, TPayload>> = ClientMethod<TResult>[TMethod];
9
- export type PutBookmarkFn<TVersion extends ApiVersions, TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>, TClient extends IHttpClient = IHttpClient, TPayload = unknown, TResult = PutBookmarkResult<TVersion, TPayload>> = (args: PutBookmarkArgs<TVersion>, init?: ClientRequestInit<TClient, TResult>) => PutBookmarksResult<TVersion, TMethod, TPayload, TResult>;
10
- export interface PutBookmarksArgsV1<T = unknown> extends PostBookmarksArgsV1<T> {
6
+ export type PatchBookmarkResult<TVersion extends ApiVersions, TPayload> = PatchBookmarksVersions<TPayload>[TVersion]['result'];
7
+ export type PatchBookmarkArgs<TVersion extends ApiVersions, TPayload = unknown> = PatchBookmarksVersions<TPayload>[TVersion]['args'];
8
+ export type PatchBookmarksResult<TVersion extends ApiVersions, TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>, TPayload = unknown, TResult = PatchBookmarkResult<TVersion, TPayload>> = ClientMethod<TResult>[TMethod];
9
+ export type PatchBookmarkFn<TVersion extends ApiVersions, TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>, TClient extends IHttpClient = IHttpClient, TPayload = unknown, TResult = PatchBookmarkResult<TVersion, TPayload>> = (args: PatchBookmarkArgs<TVersion>, init?: ClientRequestInit<TClient, TResult>) => PatchBookmarksResult<TVersion, TMethod, TPayload, TResult>;
10
+ export interface PatchBookmarksArgsV1<T = unknown> extends Partial<PostBookmarksArgsV1<T>> {
11
11
  id: string;
12
12
  }
13
- export type PutBookmarksVersions<TPayload = unknown> = {
13
+ export type PatchBookmarksVersions<TPayload = unknown> = {
14
14
  ['v1']: {
15
- args: PutBookmarksArgsV1<TPayload>;
15
+ args: PatchBookmarksArgsV1<TPayload>;
16
16
  result: ApiBookmarkEntityV1<TPayload>;
17
17
  };
18
18
  };
19
- export type ApiVersions = keyof PutBookmarksVersions<unknown>;
19
+ export type ApiVersions = keyof PatchBookmarksVersions<unknown>;
@@ -2,6 +2,7 @@ import { IHttpClient } from '@equinor/fusion-framework-module-http';
2
2
  import { ClientMethod, ApiVersion } from '@equinor/fusion-framework-module-services/context';
3
3
  import { GetContextFn, GetContextResponse, GetContextResult } from './get';
4
4
  import { QueryContextFn, QueryContextResponse, QueryContextResult } from './query';
5
+ import { RelatedContextFn, RelatedContextResponse, RelatedContextResult } from './related';
5
6
  export declare class ContextApiClient<TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>, TClient extends IHttpClient = IHttpClient> {
6
7
  protected _client: TClient;
7
8
  protected _method: TMethod;
@@ -9,5 +10,6 @@ export declare class ContextApiClient<TMethod extends keyof ClientMethod<unknown
9
10
  constructor(_client: TClient, _method: TMethod);
10
11
  get<TVersion extends string = keyof typeof ApiVersion, TResult = GetContextResponse<TVersion>>(version: TVersion, ...args: Parameters<GetContextFn<TVersion, TMethod, TClient, TResult>>): GetContextResult<TVersion, TMethod, TResult>;
11
12
  query<TVersion extends string = keyof typeof ApiVersion, TResult = QueryContextResponse<TVersion>>(version: TVersion, ...args: Parameters<QueryContextFn<TVersion, TMethod, TClient, TResult>>): QueryContextResult<TVersion, TMethod, TResult>;
13
+ related<TVersion extends string = keyof typeof ApiVersion, TResult = RelatedContextResponse<TVersion>>(version: TVersion, ...args: Parameters<RelatedContextFn<TVersion, TMethod, TClient, TResult>>): RelatedContextResult<TVersion, TMethod, TResult>;
12
14
  }
13
15
  export default ContextApiClient;
@@ -0,0 +1,4 @@
1
+ import { ClientRequestInit, IHttpClient } from '@equinor/fusion-framework-module-http/client';
2
+ import type { RelatedContextArgs, RelatedContextResponse, RelatedContextResult, ClientMethod } from './types';
3
+ export declare const relatedContexts: <TVersion extends string = "v1" | "v2", TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>, TClient extends IHttpClient<import("@equinor/fusion-framework-module-http/client").FetchRequest, Response> = IHttpClient<import("@equinor/fusion-framework-module-http/client").FetchRequest, Response>>(client: TClient, version: TVersion, method?: TMethod) => <T = RelatedContextResponse<TVersion>>(args: RelatedContextArgs<TVersion>, init?: ClientRequestInit<TClient, T> | undefined) => RelatedContextResult<TVersion, TMethod, T>;
4
+ export default relatedContexts;
@@ -0,0 +1,3 @@
1
+ import type { RelatedContextArgs } from './types';
2
+ export declare const generateEndpoint: <TVersion extends string = "v1" | "v2">(version: TVersion, args: RelatedContextArgs<TVersion>) => string;
3
+ export default generateEndpoint;
@@ -0,0 +1,4 @@
1
+ import { ClientRequestInit, IHttpClient } from '@equinor/fusion-framework-module-http/client';
2
+ import type { RelatedContextArgs, ApiClientArguments } from './types';
3
+ export declare const generateParameters: <TResult, TVersion extends string = "v1" | "v2", TClient extends IHttpClient<import("@equinor/fusion-framework-module-http/client").FetchRequest, Response> = IHttpClient<import("@equinor/fusion-framework-module-http/client").FetchRequest, Response>>(version: TVersion, args: RelatedContextArgs<TVersion>, init?: ClientRequestInit<TClient, TResult> | undefined) => ApiClientArguments<TClient, TResult>;
4
+ export default generateParameters;
@@ -0,0 +1,5 @@
1
+ export { ApiVersion, ApiContextEntity } from '@equinor/fusion-framework-module-services/context';
2
+ export { generateEndpoint } from './generate-endpoint';
3
+ export { generateParameters } from './generate-parameters';
4
+ export * from './types';
5
+ export { relatedContexts, default } from './client';
@@ -0,0 +1,29 @@
1
+ import { IHttpClient, ClientRequestInit } from '@equinor/fusion-framework-module-http/client';
2
+ import { ApiVersion, ApiContextEntity, ClientMethod } from '@equinor/fusion-framework-module-services/context';
3
+ export { ApiClientArguments, ClientMethod, } from '@equinor/fusion-framework-module-services/context';
4
+ export type RelatedContextOdataFilter = {
5
+ type?: string[];
6
+ };
7
+ export type RelatedContextOdataParameters = {
8
+ search?: string;
9
+ filter?: RelatedContextOdataFilter;
10
+ };
11
+ type RelatedContextArgs_v1 = {
12
+ id: string;
13
+ query?: string | RelatedContextOdataParameters;
14
+ };
15
+ type RelatedContextArgs_v2 = RelatedContextArgs_v1;
16
+ type RelatedContextArgTypes = {
17
+ [ApiVersion.v1]: RelatedContextArgs_v1;
18
+ [ApiVersion.v2]: RelatedContextArgs_v2;
19
+ };
20
+ export type RelatedContextArgs<T> = T extends keyof typeof ApiVersion ? RelatedContextArgTypes[(typeof ApiVersion)[T]] : {
21
+ id: string;
22
+ };
23
+ type RelatedContextResponseTypes = {
24
+ [ApiVersion.v1]: Array<ApiContextEntity<ApiVersion.v1>>;
25
+ [ApiVersion.v2]: Array<ApiContextEntity<ApiVersion.v2>>;
26
+ };
27
+ export type RelatedContextResponse<T> = T extends keyof typeof ApiVersion ? RelatedContextResponseTypes[(typeof ApiVersion)[T]] : unknown;
28
+ export type RelatedContextFn<TVersion extends string = keyof typeof ApiVersion, TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>, TClient extends IHttpClient = IHttpClient, TResult = RelatedContextResponse<TVersion>> = (args: RelatedContextArgs<TVersion>, init?: ClientRequestInit<TClient, TResult>) => RelatedContextResult<TVersion, TMethod, TResult>;
29
+ export type RelatedContextResult<TVersion extends string = keyof typeof ApiVersion, TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>, TResult = RelatedContextResponse<TVersion>> = ClientMethod<TResult>[TMethod];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@equinor/fusion-framework-module-services",
3
- "version": "2.3.0",
3
+ "version": "2.5.0",
4
4
  "description": "",
5
5
  "sideEffects": false,
6
6
  "main": "dist/esm/index.js",
@@ -22,6 +22,9 @@
22
22
  "context/query": [
23
23
  "dist/types/context/query/index"
24
24
  ],
25
+ "context/related": [
26
+ "dist/types/context/related/index"
27
+ ],
25
28
  "bookmarks": [
26
29
  "dist/types/bookmarks/index"
27
30
  ]
@@ -63,5 +66,5 @@
63
66
  "@equinor/fusion-framework-module": ">=1.2.2",
64
67
  "odata-query": "^7.0.3"
65
68
  },
66
- "gitHead": "2cec998dee5e0781c2cc2b327e2e119d12cd0046"
69
+ "gitHead": "dd4ed92c8f1d020f3b537172b4fe7788aeae99e7"
67
70
  }
@@ -7,11 +7,7 @@ import getBookmark from './get/client';
7
7
  import { ApiVersions, GetBookmarkResult, GetBookmarksFn, GetBookmarksResult } from './get/types';
8
8
  import { PostBookmarkResult, PostBookmarkFn, PostBookmarksResult } from './post/types';
9
9
  import postBookmark from './post/client';
10
- import patchBookmark, {
11
- PutBookmarkFn as PatchBookmarkFn,
12
- PutBookmarkResult as PatchBookmarkResult,
13
- PutBookmarksResult as PatchBookmarksResult,
14
- } from './patch';
10
+ import patchBookmark, { PatchBookmarkFn, PatchBookmarkResult, PatchBookmarksResult } from './patch';
15
11
  import getAllBookmarks, { GetAllBookmarkResult, GetAllBookmarksResult } from './getAll';
16
12
  import addBookmarkFavorite, {
17
13
  PostBookmarkFavoriteFn,
@@ -1,7 +1,7 @@
1
1
  import { ClientRequestInit, IHttpClient } from '@equinor/fusion-framework-module-http/client';
2
2
  import { ClientMethod } from '../..';
3
3
  import { generateParameters } from './generate-parameters';
4
- import { ApiVersions, PutBookmarkArgs, PutBookmarkResult, PutBookmarksResult } from './types';
4
+ import { ApiVersions, PatchBookmarkArgs, PatchBookmarkResult, PatchBookmarksResult } from './types';
5
5
 
6
6
  /**
7
7
  * Method for updating bookmark
@@ -9,7 +9,7 @@ import { ApiVersions, PutBookmarkArgs, PutBookmarkResult, PutBookmarksResult } f
9
9
  * @param version - version of API to call
10
10
  * @param method - client method to call
11
11
  */
12
- export const putBookmark =
12
+ export const patchBookmark =
13
13
  <
14
14
  TClient extends IHttpClient = IHttpClient,
15
15
  TVersion extends ApiVersions = ApiVersions,
@@ -19,12 +19,12 @@ export const putBookmark =
19
19
  version: TVersion,
20
20
  method: TMethod = 'json' as TMethod
21
21
  ) =>
22
- <TResult = PutBookmarkResult<TVersion, unknown>>(
23
- args: PutBookmarkArgs<TVersion>,
22
+ <TResult = PatchBookmarkResult<TVersion, unknown>>(
23
+ args: PatchBookmarkArgs<TVersion>,
24
24
  init?: ClientRequestInit<TClient, TResult>
25
- ): PutBookmarksResult<TVersion, TMethod, unknown, TResult> =>
25
+ ): PatchBookmarksResult<TVersion, TMethod, unknown, TResult> =>
26
26
  client[method](
27
27
  ...generateParameters<TResult, TVersion, TClient>(version, args, init)
28
- ) as PutBookmarksResult<TVersion, TMethod, unknown, TResult>;
28
+ ) as PatchBookmarksResult<TVersion, TMethod, unknown, TResult>;
29
29
 
30
- export default putBookmark;
30
+ export default patchBookmark;
@@ -1,11 +1,11 @@
1
- import { ApiVersions, PutBookmarkArgs } from './types';
1
+ import { ApiVersions, PatchBookmarkArgs } from './types';
2
2
 
3
3
  /**
4
4
  * Method for generating endpoint for getting bookmark by id
5
5
  */
6
6
  export const generateEndpoint = <TVersion extends ApiVersions>(
7
7
  version: TVersion,
8
- _args: PutBookmarkArgs<TVersion>
8
+ _args: PatchBookmarkArgs<TVersion>
9
9
  ) => {
10
10
  switch (version) {
11
11
  case 'v1':
@@ -1,7 +1,7 @@
1
1
  import { ClientRequestInit, IHttpClient } from '@equinor/fusion-framework-module-http/client';
2
2
  import { ApiClientArguments } from '../..';
3
3
  import { generateEndpoint } from './generate-endpoint';
4
- import { ApiVersions, PutBookmarkArgs } from './types';
4
+ import { ApiVersions, PatchBookmarkArgs } from './types';
5
5
 
6
6
  /** function for creating http client arguments */
7
7
  export const generateParameters = <
@@ -10,7 +10,7 @@ export const generateParameters = <
10
10
  TClient extends IHttpClient = IHttpClient
11
11
  >(
12
12
  version: TVersion,
13
- args: PutBookmarkArgs<TVersion>,
13
+ args: PatchBookmarkArgs<TVersion>,
14
14
  init?: ClientRequestInit<TClient, TResult>
15
15
  ): ApiClientArguments<TClient, TResult> => {
16
16
  const path = generateEndpoint(version, args);
@@ -1,6 +1,6 @@
1
1
  export * from './types';
2
2
 
3
- export { putBookmark, default } from './client';
3
+ export { patchBookmark, default } from './client';
4
4
 
5
- export { generateEndpoint as generatePutEndpoint } from './generate-endpoint';
6
- export { generateParameters as generatePutParameters } from './generate-parameters';
5
+ export { generateEndpoint as generatePatchEndpoint } from './generate-endpoint';
6
+ export { generateParameters as generatePatchParameters } from './generate-parameters';
@@ -4,42 +4,42 @@ import { ClientMethod } from '../..';
4
4
  import { ApiBookmarkEntityV1 } from '../api-models';
5
5
  import { PostBookmarksArgsV1 } from '../post';
6
6
 
7
- export type PutBookmarkResult<
7
+ export type PatchBookmarkResult<
8
8
  TVersion extends ApiVersions,
9
9
  TPayload
10
- > = PutBookmarksVersions<TPayload>[TVersion]['result'];
10
+ > = PatchBookmarksVersions<TPayload>[TVersion]['result'];
11
11
 
12
12
  /** Returns args for PutBookmark based on version*/
13
- export type PutBookmarkArgs<
13
+ export type PatchBookmarkArgs<
14
14
  TVersion extends ApiVersions,
15
15
  TPayload = unknown
16
- > = PutBookmarksVersions<TPayload>[TVersion]['args'];
16
+ > = PatchBookmarksVersions<TPayload>[TVersion]['args'];
17
17
 
18
18
  /**Gets result type for PutBookmark call based on version and method */
19
- export type PutBookmarksResult<
19
+ export type PatchBookmarksResult<
20
20
  TVersion extends ApiVersions,
21
21
  TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>,
22
22
  TPayload = unknown,
23
- TResult = PutBookmarkResult<TVersion, TPayload>
23
+ TResult = PatchBookmarkResult<TVersion, TPayload>
24
24
  > = ClientMethod<TResult>[TMethod];
25
25
 
26
- export type PutBookmarkFn<
26
+ export type PatchBookmarkFn<
27
27
  TVersion extends ApiVersions,
28
28
  TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>,
29
29
  TClient extends IHttpClient = IHttpClient,
30
30
  TPayload = unknown,
31
- TResult = PutBookmarkResult<TVersion, TPayload>
31
+ TResult = PatchBookmarkResult<TVersion, TPayload>
32
32
  > = (
33
- args: PutBookmarkArgs<TVersion>,
33
+ args: PatchBookmarkArgs<TVersion>,
34
34
  init?: ClientRequestInit<TClient, TResult>
35
- ) => PutBookmarksResult<TVersion, TMethod, TPayload, TResult>;
35
+ ) => PatchBookmarksResult<TVersion, TMethod, TPayload, TResult>;
36
36
 
37
- export interface PutBookmarksArgsV1<T = unknown> extends PostBookmarksArgsV1<T> {
37
+ export interface PatchBookmarksArgsV1<T = unknown> extends Partial<PostBookmarksArgsV1<T>> {
38
38
  id: string;
39
39
  }
40
40
 
41
- export type PutBookmarksVersions<TPayload = unknown> = {
42
- ['v1']: { args: PutBookmarksArgsV1<TPayload>; result: ApiBookmarkEntityV1<TPayload> };
41
+ export type PatchBookmarksVersions<TPayload = unknown> = {
42
+ ['v1']: { args: PatchBookmarksArgsV1<TPayload>; result: ApiBookmarkEntityV1<TPayload> };
43
43
  };
44
44
 
45
- export type ApiVersions = keyof PutBookmarksVersions<unknown>;
45
+ export type ApiVersions = keyof PatchBookmarksVersions<unknown>;
@@ -3,8 +3,16 @@ import { IHttpClient } from '@equinor/fusion-framework-module-http';
3
3
  import { ClientMethod, ApiVersion } from '@equinor/fusion-framework-module-services/context';
4
4
 
5
5
  import { getContext, GetContextFn, GetContextResponse, GetContextResult } from './get';
6
+
6
7
  import { queryContext, QueryContextFn, QueryContextResponse, QueryContextResult } from './query';
7
8
 
9
+ import {
10
+ RelatedContextFn,
11
+ RelatedContextResponse,
12
+ RelatedContextResult,
13
+ relatedContexts,
14
+ } from './related';
15
+
8
16
  export class ContextApiClient<
9
17
  TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>,
10
18
  TClient extends IHttpClient = IHttpClient
@@ -44,6 +52,21 @@ export class ContextApiClient<
44
52
  const fn = queryContext<TVersion, TMethod, TClient>(this._client, version, this._method);
45
53
  return fn<TResult>(...args);
46
54
  }
55
+
56
+ /**
57
+ * Query context service
58
+ * @see {@link query/client}
59
+ */
60
+ public related<
61
+ TVersion extends string = keyof typeof ApiVersion,
62
+ TResult = RelatedContextResponse<TVersion>
63
+ >(
64
+ version: TVersion,
65
+ ...args: Parameters<RelatedContextFn<TVersion, TMethod, TClient, TResult>>
66
+ ): RelatedContextResult<TVersion, TMethod, TResult> {
67
+ const fn = relatedContexts<TVersion, TMethod, TClient>(this._client, version, this._method);
68
+ return fn<TResult>(...args);
69
+ }
47
70
  }
48
71
 
49
72
  export default ContextApiClient;
@@ -0,0 +1,35 @@
1
+ import { ClientRequestInit, IHttpClient } from '@equinor/fusion-framework-module-http/client';
2
+
3
+ import { ApiVersion } from '@equinor/fusion-framework-module-services/context';
4
+
5
+ import { generateParameters } from './generate-parameters';
6
+
7
+ import type {
8
+ RelatedContextArgs,
9
+ RelatedContextResponse,
10
+ RelatedContextResult,
11
+ ClientMethod,
12
+ } from './types';
13
+
14
+ /**
15
+ * Function for querying the context service
16
+ */
17
+ export const relatedContexts =
18
+ <
19
+ TVersion extends string = keyof typeof ApiVersion,
20
+ TMethod extends keyof ClientMethod = keyof ClientMethod,
21
+ TClient extends IHttpClient = IHttpClient
22
+ >(
23
+ client: TClient,
24
+ version: TVersion,
25
+ method: TMethod = 'json' as TMethod
26
+ ) =>
27
+ <T = RelatedContextResponse<TVersion>>(
28
+ args: RelatedContextArgs<TVersion>,
29
+ init?: ClientRequestInit<TClient, T>
30
+ ): RelatedContextResult<TVersion, TMethod, T> =>
31
+ client[method](
32
+ ...generateParameters<T, TVersion, TClient>(version, args, init)
33
+ ) as RelatedContextResult<TVersion, TMethod, T>;
34
+
35
+ export default relatedContexts;
@@ -0,0 +1,62 @@
1
+ import buildOdataQuery from 'odata-query';
2
+
3
+ import { UnsupportedApiVersion } from '@equinor/fusion-framework-module-services/errors';
4
+
5
+ import { ApiVersion } from '@equinor/fusion-framework-module-services/context';
6
+
7
+ import type {
8
+ RelatedContextArgs,
9
+ RelatedContextOdataFilter,
10
+ RelatedContextOdataParameters,
11
+ } from './types';
12
+
13
+ const buildOdataFilter = (filterObj: RelatedContextOdataFilter) => {
14
+ return Object.keys(filterObj).reduce((acc, key) => {
15
+ switch (key) {
16
+ case 'type':
17
+ return filterObj[key]?.length ? { ...acc, [key]: { in: filterObj[key] } } : acc;
18
+ default:
19
+ return { ...acc, [key]: filterObj[key as keyof typeof filterObj] };
20
+ }
21
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
+ }, {} as any);
23
+ };
24
+
25
+ const buildOdataObject = (parameters: RelatedContextOdataParameters) => {
26
+ return Object.keys(parameters).reduce((acc, key) => {
27
+ switch (key) {
28
+ case 'filter':
29
+ return {
30
+ ...acc,
31
+ [key]: buildOdataFilter(parameters['filter'] as RelatedContextOdataFilter),
32
+ };
33
+ default:
34
+ return { ...acc, [key]: parameters[key as keyof typeof parameters] };
35
+ }
36
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
37
+ }, {} as any);
38
+ };
39
+
40
+ const createSearchParameters = (args: string | RelatedContextOdataParameters) => {
41
+ return typeof args === 'string' ? args : buildOdataQuery(buildOdataObject(args));
42
+ };
43
+
44
+ export const generateEndpoint = <TVersion extends string = keyof typeof ApiVersion>(
45
+ version: TVersion,
46
+ args: RelatedContextArgs<TVersion>
47
+ ) => {
48
+ const apiVersion = ApiVersion[version as keyof typeof ApiVersion] ?? version;
49
+ switch (apiVersion) {
50
+ case ApiVersion.v2:
51
+ throw new UnsupportedApiVersion(version);
52
+ case ApiVersion.v1:
53
+ default: {
54
+ const { id, query } = args as RelatedContextArgs<'v1'>;
55
+ const params = new URLSearchParams(createSearchParameters(query || ''));
56
+ params.append('api-version', apiVersion);
57
+ return `/contexts/${id}/relations?${String(params)}`;
58
+ }
59
+ }
60
+ };
61
+
62
+ export default generateEndpoint;
@@ -0,0 +1,23 @@
1
+ import { ClientRequestInit, IHttpClient } from '@equinor/fusion-framework-module-http/client';
2
+
3
+ import { ApiVersion } from '@equinor/fusion-framework-module-services/context';
4
+
5
+ import { generateEndpoint } from './generate-endpoint';
6
+
7
+ import type { RelatedContextArgs, ApiClientArguments } from './types';
8
+
9
+ /** Function for generating parameter for querying context service */
10
+ export const generateParameters = <
11
+ TResult,
12
+ TVersion extends string = keyof typeof ApiVersion,
13
+ TClient extends IHttpClient = IHttpClient
14
+ >(
15
+ version: TVersion,
16
+ args: RelatedContextArgs<TVersion>,
17
+ init?: ClientRequestInit<TClient, TResult>
18
+ ): ApiClientArguments<TClient, TResult> => {
19
+ const path = generateEndpoint(version, args);
20
+ return [path, init];
21
+ };
22
+
23
+ export default generateParameters;
@@ -0,0 +1,8 @@
1
+ export { ApiVersion, ApiContextEntity } from '@equinor/fusion-framework-module-services/context';
2
+
3
+ export { generateEndpoint } from './generate-endpoint';
4
+ export { generateParameters } from './generate-parameters';
5
+
6
+ export * from './types';
7
+
8
+ export { relatedContexts, default } from './client';
@@ -0,0 +1,63 @@
1
+ import { IHttpClient, ClientRequestInit } from '@equinor/fusion-framework-module-http/client';
2
+
3
+ import {
4
+ ApiVersion,
5
+ ApiContextEntity,
6
+ ClientMethod,
7
+ } from '@equinor/fusion-framework-module-services/context';
8
+
9
+ export {
10
+ ApiClientArguments,
11
+ ClientMethod,
12
+ } from '@equinor/fusion-framework-module-services/context';
13
+
14
+ export type RelatedContextOdataFilter = {
15
+ type?: string[];
16
+ };
17
+
18
+ export type RelatedContextOdataParameters = {
19
+ search?: string;
20
+ filter?: RelatedContextOdataFilter;
21
+ };
22
+
23
+ type RelatedContextArgs_v1 = {
24
+ /** context id */
25
+ id: string;
26
+ query?: string | RelatedContextOdataParameters;
27
+ };
28
+
29
+ type RelatedContextArgs_v2 = RelatedContextArgs_v1;
30
+
31
+ type RelatedContextArgTypes = {
32
+ [ApiVersion.v1]: RelatedContextArgs_v1;
33
+ [ApiVersion.v2]: RelatedContextArgs_v2;
34
+ };
35
+
36
+ export type RelatedContextArgs<T> = T extends keyof typeof ApiVersion
37
+ ? RelatedContextArgTypes[(typeof ApiVersion)[T]]
38
+ : { id: string };
39
+
40
+ type RelatedContextResponseTypes = {
41
+ [ApiVersion.v1]: Array<ApiContextEntity<ApiVersion.v1>>;
42
+ [ApiVersion.v2]: Array<ApiContextEntity<ApiVersion.v2>>;
43
+ };
44
+
45
+ export type RelatedContextResponse<T> = T extends keyof typeof ApiVersion
46
+ ? RelatedContextResponseTypes[(typeof ApiVersion)[T]]
47
+ : unknown;
48
+
49
+ export type RelatedContextFn<
50
+ TVersion extends string = keyof typeof ApiVersion,
51
+ TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>,
52
+ TClient extends IHttpClient = IHttpClient,
53
+ TResult = RelatedContextResponse<TVersion>
54
+ > = (
55
+ args: RelatedContextArgs<TVersion>,
56
+ init?: ClientRequestInit<TClient, TResult>
57
+ ) => RelatedContextResult<TVersion, TMethod, TResult>;
58
+
59
+ export type RelatedContextResult<
60
+ TVersion extends string = keyof typeof ApiVersion,
61
+ TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>,
62
+ TResult = RelatedContextResponse<TVersion>
63
+ > = ClientMethod<TResult>[TMethod];