@equinor/fusion-framework-module-services 3.1.5 → 3.2.1
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 +1118 -0
- package/dist/esm/people/api-models.js +2 -0
- package/dist/esm/people/api-models.js.map +1 -0
- package/dist/esm/people/api-models.v2.js +2 -0
- package/dist/esm/people/api-models.v2.js.map +1 -0
- package/dist/esm/people/api-models.v4.js +2 -0
- package/dist/esm/people/api-models.v4.js.map +1 -0
- package/dist/esm/people/client.js +26 -0
- package/dist/esm/people/client.js.map +1 -0
- package/dist/esm/people/index.js +4 -0
- package/dist/esm/people/index.js.map +1 -0
- package/dist/esm/people/person-details/client.js +4 -0
- package/dist/esm/people/person-details/client.js.map +1 -0
- package/dist/esm/people/person-details/generate-endpoint.js +21 -0
- package/dist/esm/people/person-details/generate-endpoint.js.map +1 -0
- package/dist/esm/people/person-details/generate-parameters.js +7 -0
- package/dist/esm/people/person-details/generate-parameters.js.map +1 -0
- package/dist/esm/people/person-details/index.js +5 -0
- package/dist/esm/people/person-details/index.js.map +1 -0
- package/dist/esm/people/person-details/types.js +2 -0
- package/dist/esm/people/person-details/types.js.map +1 -0
- package/dist/esm/people/person-photo/client.js +4 -0
- package/dist/esm/people/person-photo/client.js.map +1 -0
- package/dist/esm/people/person-photo/generate-endpoint.js +18 -0
- package/dist/esm/people/person-photo/generate-endpoint.js.map +1 -0
- package/dist/esm/people/person-photo/generate-parameters.js +7 -0
- package/dist/esm/people/person-photo/generate-parameters.js.map +1 -0
- package/dist/esm/people/person-photo/index.js +5 -0
- package/dist/esm/people/person-photo/index.js.map +1 -0
- package/dist/esm/people/person-photo/types.js +2 -0
- package/dist/esm/people/person-photo/types.js.map +1 -0
- package/dist/esm/people/query/client.js +4 -0
- package/dist/esm/people/query/client.js.map +1 -0
- package/dist/esm/people/query/generate-endpoint.js +19 -0
- package/dist/esm/people/query/generate-endpoint.js.map +1 -0
- package/dist/esm/people/query/generate-parameters.js +7 -0
- package/dist/esm/people/query/generate-parameters.js.map +1 -0
- package/dist/esm/people/query/index.js +5 -0
- package/dist/esm/people/query/index.js.map +1 -0
- package/dist/esm/people/query/types.js +2 -0
- package/dist/esm/people/query/types.js.map +1 -0
- package/dist/esm/people/static.js +6 -0
- package/dist/esm/people/static.js.map +1 -0
- package/dist/esm/provider.js +8 -0
- package/dist/esm/provider.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/people/api-models.d.ts +34 -0
- package/dist/types/people/api-models.v2.d.ts +25 -0
- package/dist/types/people/api-models.v4.d.ts +81 -0
- package/dist/types/people/client.d.ts +15 -0
- package/dist/types/people/index.d.ts +3 -0
- package/dist/types/people/person-details/client.d.ts +5 -0
- package/dist/types/people/person-details/generate-endpoint.d.ts +2 -0
- package/dist/types/people/person-details/generate-parameters.d.ts +5 -0
- package/dist/types/people/person-details/index.d.ts +4 -0
- package/dist/types/people/person-details/types.d.ts +30 -0
- package/dist/types/people/person-photo/client.d.ts +5 -0
- package/dist/types/people/person-photo/generate-endpoint.d.ts +2 -0
- package/dist/types/people/person-photo/generate-parameters.d.ts +5 -0
- package/dist/types/people/person-photo/index.d.ts +4 -0
- package/dist/types/people/person-photo/types.d.ts +16 -0
- package/dist/types/people/query/client.d.ts +5 -0
- package/dist/types/people/query/generate-endpoint.d.ts +2 -0
- package/dist/types/people/query/generate-parameters.d.ts +5 -0
- package/dist/types/people/query/index.d.ts +4 -0
- package/dist/types/people/query/types.d.ts +17 -0
- package/dist/types/people/static.d.ts +4 -0
- package/dist/types/provider.d.ts +3 -0
- package/dist/types/types.d.ts +4 -0
- package/dist/types/version.d.ts +1 -1
- package/package.json +21 -5
- package/src/people/api-models.ts +52 -0
- package/src/people/api-models.v2.ts +31 -0
- package/src/people/api-models.v4.ts +100 -0
- package/src/people/client.ts +109 -0
- package/src/people/index.ts +5 -0
- package/src/people/person-details/client.ts +33 -0
- package/src/people/person-details/generate-endpoint.ts +28 -0
- package/src/people/person-details/generate-parameters.ts +22 -0
- package/src/people/person-details/index.ts +6 -0
- package/src/people/person-details/types.ts +54 -0
- package/src/people/person-photo/client.ts +33 -0
- package/src/people/person-photo/generate-endpoint.ts +25 -0
- package/src/people/person-photo/generate-parameters.ts +22 -0
- package/src/people/person-photo/index.ts +6 -0
- package/src/people/person-photo/types.ts +24 -0
- package/src/people/query/client.ts +33 -0
- package/src/people/query/generate-endpoint.ts +26 -0
- package/src/people/query/generate-parameters.ts +22 -0
- package/src/people/query/index.ts +6 -0
- package/src/people/query/types.ts +28 -0
- package/src/people/static.ts +4 -0
- package/src/provider.ts +10 -0
- package/src/types.ts +5 -0
- package/src/version.ts +1 -1
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { IHttpClient, ClientRequestInit } from '@equinor/fusion-framework-module-http/client';
|
|
2
|
+
|
|
3
|
+
import type { ClientDataMethod, ClientMethod } from '../types';
|
|
4
|
+
import { ApiVersion } from './static';
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
client as personDetailClient,
|
|
8
|
+
ApiResponse as PersonDetailApiResponse,
|
|
9
|
+
ApiResult as PersonDetailResult,
|
|
10
|
+
SupportedApiVersion as PersonDetailSupportedApiVersion,
|
|
11
|
+
ApiRequestArgs as PersonDetailApiRequestArgs,
|
|
12
|
+
} from './person-details';
|
|
13
|
+
|
|
14
|
+
import {
|
|
15
|
+
client as personQueryClient,
|
|
16
|
+
ApiResponse as PersonQueryApiResponse,
|
|
17
|
+
ApiResult as PersonQueryResult,
|
|
18
|
+
SupportedApiVersion as PersonQuerySupportedApiVersion,
|
|
19
|
+
ApiRequestArgs as PersonQueryApiRequestArgs,
|
|
20
|
+
} from './query';
|
|
21
|
+
|
|
22
|
+
import {
|
|
23
|
+
client as personPhotoClient,
|
|
24
|
+
ApiResponse as PersonPhotoApiResponse,
|
|
25
|
+
ApiResult as PersonPhotoResult,
|
|
26
|
+
SupportedApiVersion as PersonPhotoSupportedApiVersion,
|
|
27
|
+
ApiRequestArgs as PersonPhotoApiRequestArgs,
|
|
28
|
+
} from './person-photo';
|
|
29
|
+
|
|
30
|
+
export class PeopleApiClient<
|
|
31
|
+
// TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>,
|
|
32
|
+
TClient extends IHttpClient = IHttpClient,
|
|
33
|
+
> {
|
|
34
|
+
get Version(): typeof ApiVersion {
|
|
35
|
+
return ApiVersion;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
constructor(protected _client: TClient) {}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Fetch person by id
|
|
42
|
+
*/
|
|
43
|
+
public get<
|
|
44
|
+
TVersion extends PersonDetailSupportedApiVersion,
|
|
45
|
+
TArgs extends PersonDetailApiRequestArgs<TVersion>,
|
|
46
|
+
TResult extends PersonDetailApiResponse<TVersion, TArgs>,
|
|
47
|
+
TMethod extends keyof ClientMethod<TResult>,
|
|
48
|
+
>(
|
|
49
|
+
version: TVersion,
|
|
50
|
+
method: TMethod,
|
|
51
|
+
args: TArgs,
|
|
52
|
+
init?: ClientRequestInit<TClient, TResult>,
|
|
53
|
+
): PersonDetailResult<TVersion, TArgs, TMethod, TResult> {
|
|
54
|
+
const fn = personDetailClient<TVersion, TMethod, TClient, TArgs>(
|
|
55
|
+
this._client,
|
|
56
|
+
version,
|
|
57
|
+
method,
|
|
58
|
+
);
|
|
59
|
+
return fn(args, init);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Query person service
|
|
64
|
+
*/
|
|
65
|
+
public query<
|
|
66
|
+
TVersion extends PersonQuerySupportedApiVersion,
|
|
67
|
+
TArgs extends PersonQueryApiRequestArgs<TVersion>,
|
|
68
|
+
TResult = PersonQueryApiResponse<TVersion>,
|
|
69
|
+
TMethod extends keyof ClientMethod<TResult> = keyof ClientMethod<TResult>,
|
|
70
|
+
>(
|
|
71
|
+
version: TVersion,
|
|
72
|
+
method: TMethod,
|
|
73
|
+
args: TArgs,
|
|
74
|
+
init?: ClientRequestInit<TClient, TResult>,
|
|
75
|
+
): PersonQueryResult<TVersion, TMethod, TResult> {
|
|
76
|
+
const fn = personQueryClient<TVersion, TMethod, TClient>(this._client, version, method);
|
|
77
|
+
return fn<TResult>(args, init);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Photo person service
|
|
82
|
+
*/
|
|
83
|
+
public photo<
|
|
84
|
+
TVersion extends PersonPhotoSupportedApiVersion,
|
|
85
|
+
TArgs extends PersonPhotoApiRequestArgs<TVersion>,
|
|
86
|
+
TResult extends Blob = PersonPhotoApiResponse<TVersion>,
|
|
87
|
+
TMethod extends keyof ClientDataMethod = keyof ClientDataMethod,
|
|
88
|
+
>(
|
|
89
|
+
version: TVersion,
|
|
90
|
+
method: TMethod,
|
|
91
|
+
args: TArgs,
|
|
92
|
+
init?: ClientRequestInit<TClient, TResult>,
|
|
93
|
+
): PersonPhotoResult<TMethod> {
|
|
94
|
+
const fn = personPhotoClient<TVersion, TMethod, TClient>(this._client, version, method);
|
|
95
|
+
return fn<TResult>(args, init);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// const oo = new PeopleApiClient(null).get('v4', 'fetch', { azureId: '123' });
|
|
100
|
+
// const o2 = await new PeopleApiClient(null).get('v4', 'fetch', {
|
|
101
|
+
// azureId: '123',
|
|
102
|
+
// expand: ['roles'],
|
|
103
|
+
// });
|
|
104
|
+
// const o3 = await new PeopleApiClient(null).get('v4', 'fetch', {
|
|
105
|
+
// azureId: '123',
|
|
106
|
+
// expand: ['companies', 'roles'],
|
|
107
|
+
// });
|
|
108
|
+
|
|
109
|
+
export default PeopleApiClient;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ClientRequestInit, IHttpClient } from '@equinor/fusion-framework-module-http/client';
|
|
2
|
+
|
|
3
|
+
import { generateParameters } from './generate-parameters';
|
|
4
|
+
|
|
5
|
+
import type { ClientMethod } from '../../types';
|
|
6
|
+
import type { ApiResponse, ApiResult, ApiRequestArgs, SupportedApiVersion } from './types';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Method for fetching context item from context service
|
|
10
|
+
* @param client - client for execution of request
|
|
11
|
+
* @param version - version of API to call
|
|
12
|
+
* @param method - client method to call
|
|
13
|
+
*/
|
|
14
|
+
export const client =
|
|
15
|
+
<
|
|
16
|
+
TVersion extends SupportedApiVersion,
|
|
17
|
+
TMethod extends keyof ClientMethod = keyof ClientMethod,
|
|
18
|
+
TClient extends IHttpClient = IHttpClient,
|
|
19
|
+
TArgs extends ApiRequestArgs<TVersion> = ApiRequestArgs<TVersion>,
|
|
20
|
+
>(
|
|
21
|
+
client: TClient,
|
|
22
|
+
version: TVersion,
|
|
23
|
+
method: TMethod = 'json' as TMethod,
|
|
24
|
+
) =>
|
|
25
|
+
<T = ApiResponse<TVersion, TArgs>>(
|
|
26
|
+
args: TArgs,
|
|
27
|
+
init?: ClientRequestInit<TClient, T>,
|
|
28
|
+
): ApiResult<TVersion, TArgs, TMethod, T> =>
|
|
29
|
+
client[method](
|
|
30
|
+
...generateParameters<T, TVersion, TClient>(version, args, init),
|
|
31
|
+
) as ApiResult<TVersion, TArgs, TMethod, T>;
|
|
32
|
+
|
|
33
|
+
export default client;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { UnsupportedApiVersion } from '../../errors';
|
|
2
|
+
import { ApiVersion } from '../static';
|
|
3
|
+
|
|
4
|
+
import type { ApiRequestArgs, SupportedApiVersion } from './types';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Method for generating endpoint for getting context by id
|
|
8
|
+
*/
|
|
9
|
+
export const generateEndpoint = <TVersion extends SupportedApiVersion>(
|
|
10
|
+
version: TVersion,
|
|
11
|
+
args: ApiRequestArgs<TVersion>,
|
|
12
|
+
) => {
|
|
13
|
+
const apiVersion = ApiVersion[version as keyof typeof ApiVersion] ?? version;
|
|
14
|
+
switch (apiVersion) {
|
|
15
|
+
case ApiVersion.v4: {
|
|
16
|
+
const { azureId, expand } = args;
|
|
17
|
+
const params = new URLSearchParams();
|
|
18
|
+
params.append('api-version', apiVersion);
|
|
19
|
+
if (expand) {
|
|
20
|
+
params.append('$expand', expand.join(','));
|
|
21
|
+
}
|
|
22
|
+
return `/persons/${azureId}?${String(params)}`;
|
|
23
|
+
}
|
|
24
|
+
default: {
|
|
25
|
+
throw new UnsupportedApiVersion(version);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ClientRequestInit, IHttpClient } from '@equinor/fusion-framework-module-http/client';
|
|
2
|
+
|
|
3
|
+
import { generateEndpoint } from './generate-endpoint';
|
|
4
|
+
|
|
5
|
+
import type { ApiClientArguments } from '../../types';
|
|
6
|
+
import type { ApiRequestArgs, SupportedApiVersion } from './types';
|
|
7
|
+
|
|
8
|
+
/** function for creating http client arguments */
|
|
9
|
+
export const generateParameters = <
|
|
10
|
+
TResult,
|
|
11
|
+
TVersion extends SupportedApiVersion,
|
|
12
|
+
TClient extends IHttpClient = IHttpClient,
|
|
13
|
+
>(
|
|
14
|
+
version: TVersion,
|
|
15
|
+
args: ApiRequestArgs<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,54 @@
|
|
|
1
|
+
import { ApiVersion } from '../static';
|
|
2
|
+
import type { ApiManager } from '../api-models';
|
|
3
|
+
import type {
|
|
4
|
+
ApiCompanyInfo_v4,
|
|
5
|
+
ApiPersonContract_v4,
|
|
6
|
+
ApiPerson_v4,
|
|
7
|
+
ApiPersonPosition_v4,
|
|
8
|
+
ApiPersonRole_v4,
|
|
9
|
+
} from '../api-models.v4';
|
|
10
|
+
import { ClientMethod } from '../../types';
|
|
11
|
+
|
|
12
|
+
export type SupportedApiVersion = Extract<keyof typeof ApiVersion, 'v4'>;
|
|
13
|
+
|
|
14
|
+
type ApiRequestArgsMap = {
|
|
15
|
+
[ApiVersion.v4]: {
|
|
16
|
+
azureId: string;
|
|
17
|
+
expand?: Array<keyof ExpandMap[ApiVersion.v4]>;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export type AllowedArgs = ApiRequestArgsMap[keyof ApiRequestArgsMap];
|
|
22
|
+
|
|
23
|
+
type ExpandMap = {
|
|
24
|
+
[ApiVersion.v4]: {
|
|
25
|
+
roles: Array<ApiPersonRole_v4>;
|
|
26
|
+
positions: Array<ApiPersonPosition_v4>;
|
|
27
|
+
contracts: Array<ApiPersonContract_v4>;
|
|
28
|
+
manager: ApiManager;
|
|
29
|
+
companies: Array<ApiCompanyInfo_v4>;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export type ApiRequestArgs<T extends SupportedApiVersion> =
|
|
34
|
+
ApiRequestArgsMap[(typeof ApiVersion)[T]];
|
|
35
|
+
|
|
36
|
+
type ApiResponseTypes<TArgs extends AllowedArgs> = {
|
|
37
|
+
[ApiVersion.v4]: TArgs['expand'] extends Array<keyof ExpandMap[ApiVersion.v4]>
|
|
38
|
+
? ApiPerson_v4 & {
|
|
39
|
+
[K in TArgs['expand'][number]]: ExpandMap[ApiVersion.v4][K];
|
|
40
|
+
}
|
|
41
|
+
: ApiPerson_v4;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export type ApiResponse<
|
|
45
|
+
T extends SupportedApiVersion,
|
|
46
|
+
TArgs extends AllowedArgs,
|
|
47
|
+
> = ApiResponseTypes<TArgs>[(typeof ApiVersion)[T]];
|
|
48
|
+
|
|
49
|
+
export type ApiResult<
|
|
50
|
+
TVersion extends SupportedApiVersion,
|
|
51
|
+
TArgs extends ApiRequestArgs<TVersion>,
|
|
52
|
+
TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>,
|
|
53
|
+
TResult = ApiResponse<TVersion, TArgs>,
|
|
54
|
+
> = ClientMethod<TResult>[TMethod];
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ClientRequestInit, IHttpClient } from '@equinor/fusion-framework-module-http/client';
|
|
2
|
+
|
|
3
|
+
import { generateParameters } from './generate-parameters';
|
|
4
|
+
|
|
5
|
+
import type { ClientDataMethod } from '../../types';
|
|
6
|
+
import type { ApiResponse, ApiRequestArgs, SupportedApiVersion } from './types';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Method for fetching context item from context service
|
|
10
|
+
* @param client - client for execution of request
|
|
11
|
+
* @param version - version of API to call
|
|
12
|
+
* @param method - client method to call
|
|
13
|
+
*/
|
|
14
|
+
export const client =
|
|
15
|
+
<
|
|
16
|
+
TVersion extends SupportedApiVersion,
|
|
17
|
+
TMethod extends keyof ClientDataMethod = keyof ClientDataMethod,
|
|
18
|
+
TClient extends IHttpClient = IHttpClient,
|
|
19
|
+
TArgs extends ApiRequestArgs<TVersion> = ApiRequestArgs<TVersion>,
|
|
20
|
+
>(
|
|
21
|
+
client: TClient,
|
|
22
|
+
version: TVersion,
|
|
23
|
+
method: TMethod = 'blob' as TMethod,
|
|
24
|
+
) =>
|
|
25
|
+
<T extends Blob = ApiResponse<TVersion>>(
|
|
26
|
+
args: TArgs,
|
|
27
|
+
init?: ClientRequestInit<TClient, T>,
|
|
28
|
+
): ClientDataMethod[TMethod] =>
|
|
29
|
+
client[method](
|
|
30
|
+
...generateParameters<T, TVersion, TClient>(version, args, init),
|
|
31
|
+
) as ClientDataMethod[TMethod];
|
|
32
|
+
|
|
33
|
+
export default client;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { UnsupportedApiVersion } from '../../errors';
|
|
2
|
+
import { ApiVersion } from '../static';
|
|
3
|
+
|
|
4
|
+
import type { ApiRequestArgs, SupportedApiVersion } from './types';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Method for generating endpoint for getting context by id
|
|
8
|
+
*/
|
|
9
|
+
export const generateEndpoint = <TVersion extends SupportedApiVersion>(
|
|
10
|
+
version: TVersion,
|
|
11
|
+
args: ApiRequestArgs<TVersion>,
|
|
12
|
+
) => {
|
|
13
|
+
const apiVersion = ApiVersion[version as keyof typeof ApiVersion] ?? version;
|
|
14
|
+
switch (apiVersion) {
|
|
15
|
+
case ApiVersion.v2: {
|
|
16
|
+
const { azureId } = args;
|
|
17
|
+
const params = new URLSearchParams();
|
|
18
|
+
params.append('api-version', apiVersion);
|
|
19
|
+
return `/persons/${azureId}/photo?${String(params)}`;
|
|
20
|
+
}
|
|
21
|
+
default: {
|
|
22
|
+
throw new UnsupportedApiVersion(version);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ClientRequestInit, IHttpClient } from '@equinor/fusion-framework-module-http/client';
|
|
2
|
+
|
|
3
|
+
import { generateEndpoint } from './generate-endpoint';
|
|
4
|
+
|
|
5
|
+
import type { ApiClientArguments } from '../../types';
|
|
6
|
+
import type { ApiRequestArgs, SupportedApiVersion } from './types';
|
|
7
|
+
|
|
8
|
+
/** function for creating http client arguments */
|
|
9
|
+
export const generateParameters = <
|
|
10
|
+
TResult,
|
|
11
|
+
TVersion extends SupportedApiVersion,
|
|
12
|
+
TClient extends IHttpClient = IHttpClient,
|
|
13
|
+
>(
|
|
14
|
+
version: TVersion,
|
|
15
|
+
args: ApiRequestArgs<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,24 @@
|
|
|
1
|
+
import { ApiVersion } from '../static';
|
|
2
|
+
import { ClientDataMethod } from '../../types';
|
|
3
|
+
|
|
4
|
+
export type SupportedApiVersion = Extract<keyof typeof ApiVersion, 'v2'>;
|
|
5
|
+
|
|
6
|
+
type ApiRequestArgsMap = {
|
|
7
|
+
[ApiVersion.v2]: {
|
|
8
|
+
azureId: string;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export type AllowedArgs = ApiRequestArgsMap[keyof ApiRequestArgsMap];
|
|
13
|
+
|
|
14
|
+
export type ApiRequestArgs<T extends SupportedApiVersion> =
|
|
15
|
+
ApiRequestArgsMap[(typeof ApiVersion)[T]];
|
|
16
|
+
|
|
17
|
+
type ApiResponseTypes = {
|
|
18
|
+
[ApiVersion.v2]: Blob;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export type ApiResponse<T extends SupportedApiVersion> = ApiResponseTypes[(typeof ApiVersion)[T]];
|
|
22
|
+
|
|
23
|
+
export type ApiResult<TMethod extends keyof ClientDataMethod = keyof ClientDataMethod> =
|
|
24
|
+
ClientDataMethod[TMethod];
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ClientRequestInit, IHttpClient } from '@equinor/fusion-framework-module-http/client';
|
|
2
|
+
|
|
3
|
+
import { generateParameters } from './generate-parameters';
|
|
4
|
+
|
|
5
|
+
import type { ClientMethod } from '../../types';
|
|
6
|
+
import type { ApiResponse, ApiResult, ApiRequestArgs, SupportedApiVersion } from './types';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Method for fetching context item from context service
|
|
10
|
+
* @param client - client for execution of request
|
|
11
|
+
* @param version - version of API to call
|
|
12
|
+
* @param method - client method to call
|
|
13
|
+
*/
|
|
14
|
+
export const client =
|
|
15
|
+
<
|
|
16
|
+
TVersion extends SupportedApiVersion,
|
|
17
|
+
TMethod extends keyof ClientMethod = keyof ClientMethod,
|
|
18
|
+
TClient extends IHttpClient = IHttpClient,
|
|
19
|
+
TArgs extends ApiRequestArgs<TVersion> = ApiRequestArgs<TVersion>,
|
|
20
|
+
>(
|
|
21
|
+
client: TClient,
|
|
22
|
+
version: TVersion,
|
|
23
|
+
method: TMethod = 'json' as TMethod,
|
|
24
|
+
) =>
|
|
25
|
+
<T = ApiResponse<TVersion>>(
|
|
26
|
+
args: TArgs,
|
|
27
|
+
init?: ClientRequestInit<TClient, T>,
|
|
28
|
+
): ApiResult<TVersion, TMethod, T> =>
|
|
29
|
+
client[method](
|
|
30
|
+
...generateParameters<T, TVersion, TClient>(version, args, init),
|
|
31
|
+
) as ApiResult<TVersion, TMethod, T>;
|
|
32
|
+
|
|
33
|
+
export default client;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { UnsupportedApiVersion } from '../../errors';
|
|
2
|
+
import { ApiVersion } from '../static';
|
|
3
|
+
|
|
4
|
+
import type { ApiRequestArgs, SupportedApiVersion } from './types';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Method for generating endpoint for getting context by id
|
|
8
|
+
*/
|
|
9
|
+
export const generateEndpoint = <TVersion extends SupportedApiVersion>(
|
|
10
|
+
version: TVersion,
|
|
11
|
+
args: ApiRequestArgs<TVersion>,
|
|
12
|
+
) => {
|
|
13
|
+
const apiVersion = ApiVersion[version as keyof typeof ApiVersion] ?? version;
|
|
14
|
+
switch (apiVersion) {
|
|
15
|
+
case ApiVersion.v2: {
|
|
16
|
+
const { search } = args;
|
|
17
|
+
const params = new URLSearchParams();
|
|
18
|
+
params.append('api-version', apiVersion);
|
|
19
|
+
params.append('$search', search);
|
|
20
|
+
return `/persons?${String(params)}`;
|
|
21
|
+
}
|
|
22
|
+
default: {
|
|
23
|
+
throw new UnsupportedApiVersion(version);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ClientRequestInit, IHttpClient } from '@equinor/fusion-framework-module-http/client';
|
|
2
|
+
|
|
3
|
+
import { generateEndpoint } from './generate-endpoint';
|
|
4
|
+
|
|
5
|
+
import type { ApiClientArguments } from '../../types';
|
|
6
|
+
import type { ApiRequestArgs, SupportedApiVersion } from './types';
|
|
7
|
+
|
|
8
|
+
/** function for creating http client arguments */
|
|
9
|
+
export const generateParameters = <
|
|
10
|
+
TResult,
|
|
11
|
+
TVersion extends SupportedApiVersion,
|
|
12
|
+
TClient extends IHttpClient = IHttpClient,
|
|
13
|
+
>(
|
|
14
|
+
version: TVersion,
|
|
15
|
+
args: ApiRequestArgs<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,28 @@
|
|
|
1
|
+
import { ApiVersion } from '../static';
|
|
2
|
+
import { ApiPerson_v2 } from '../api-models.v2';
|
|
3
|
+
import { ClientMethod } from '../../types';
|
|
4
|
+
|
|
5
|
+
export type SupportedApiVersion = Extract<keyof typeof ApiVersion, 'v2'>;
|
|
6
|
+
|
|
7
|
+
type ApiRequestArgsMap = {
|
|
8
|
+
[ApiVersion.v2]: {
|
|
9
|
+
search: string;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export type AllowedArgs = ApiRequestArgsMap[keyof ApiRequestArgsMap];
|
|
14
|
+
|
|
15
|
+
export type ApiRequestArgs<T extends SupportedApiVersion> =
|
|
16
|
+
ApiRequestArgsMap[(typeof ApiVersion)[T]];
|
|
17
|
+
|
|
18
|
+
type ApiResponseTypes = {
|
|
19
|
+
[ApiVersion.v2]: Array<ApiPerson_v2>;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export type ApiResponse<T extends SupportedApiVersion> = ApiResponseTypes[(typeof ApiVersion)[T]];
|
|
23
|
+
|
|
24
|
+
export type ApiResult<
|
|
25
|
+
TVersion extends SupportedApiVersion,
|
|
26
|
+
TMethod extends keyof ClientMethod<unknown> = keyof ClientMethod<unknown>,
|
|
27
|
+
TResult = ApiResponse<TVersion>,
|
|
28
|
+
> = ClientMethod<TResult>[TMethod];
|
package/src/provider.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { ApiClientFactory } from './types';
|
|
|
5
5
|
import { ContextApiClient } from './context';
|
|
6
6
|
import BookmarksApiClient from './bookmarks/client';
|
|
7
7
|
import { NotificationApiClient } from './notification';
|
|
8
|
+
import { PeopleApiClient } from './people/client';
|
|
8
9
|
|
|
9
10
|
export interface IApiProvider<TClient extends IHttpClient = IHttpClient> {
|
|
10
11
|
/**
|
|
@@ -26,6 +27,10 @@ export interface IApiProvider<TClient extends IHttpClient = IHttpClient> {
|
|
|
26
27
|
createNotificationClient<TMethod extends keyof ClientMethod>(
|
|
27
28
|
method: TMethod,
|
|
28
29
|
): Promise<NotificationApiClient<TMethod, TClient>>;
|
|
30
|
+
/**
|
|
31
|
+
* @param method - Version of the service to use
|
|
32
|
+
*/
|
|
33
|
+
createPeopleClient(): Promise<PeopleApiClient<TClient>>;
|
|
29
34
|
}
|
|
30
35
|
|
|
31
36
|
type ApiProviderCtorArgs<TClient extends IHttpClient = IHttpClient> = {
|
|
@@ -102,4 +107,9 @@ export class ApiProvider<TClient extends IHttpClient = IHttpClient>
|
|
|
102
107
|
httpClient.responseHandler.add('validate_api_request', validateResponse);
|
|
103
108
|
return new ContextApiClient(httpClient, method);
|
|
104
109
|
}
|
|
110
|
+
public async createPeopleClient(): Promise<PeopleApiClient<TClient>> {
|
|
111
|
+
const httpClient = await this._createClientFn('people');
|
|
112
|
+
httpClient.responseHandler.add('validate_api_request', validateResponse);
|
|
113
|
+
return new PeopleApiClient(httpClient);
|
|
114
|
+
}
|
|
105
115
|
}
|
package/src/types.ts
CHANGED
package/src/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Generated by genversion.
|
|
2
|
-
export const version = '3.1
|
|
2
|
+
export const version = '3.2.1';
|