@intellegens/cornerstone-client 0.0.9999-alpha-13 → 0.0.9999-alpha-15
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/dist/adapters/CollectionViewAdapter/index.d.ts +1 -1
- package/dist/services/api/ApiCrudControllerClient/index.d.ts +3 -3
- package/dist/services/api/ApiReadControllerClient/index.d.ts +4 -4
- package/dist/services/api/UserManagementControllerClient/index.d.ts +1 -1
- package/package.json +1 -1
- package/src/adapters/CollectionViewAdapter/index.ts +3 -3
- package/src/services/api/ApiCrudControllerClient/index.ts +15 -9
- package/src/services/api/ApiReadControllerClient/index.ts +13 -13
- package/src/services/api/UserManagementControllerClient/index.ts +7 -1
- package/tests/ApiClients.test.ts +3 -3
|
@@ -47,7 +47,7 @@ export type CollectionViewAdapterOptions<TDto> = {
|
|
|
47
47
|
* Receives a loading state flag and the updated data collection.
|
|
48
48
|
* @param options - Optional settings of type CollectionViewAdapter to customize the behavior of the adapter.
|
|
49
49
|
*/
|
|
50
|
-
export declare class CollectionViewAdapter<TKey, TDto extends IIdentifiable<TKey>> {
|
|
50
|
+
export declare class CollectionViewAdapter<TKey, TDto extends IIdentifiable<TKey>, TDetailsDto extends IIdentifiable<TKey>> {
|
|
51
51
|
private _readClient;
|
|
52
52
|
private _isLoading;
|
|
53
53
|
private _pageData;
|
|
@@ -10,7 +10,7 @@ import { ApiReadControllerClient } from '../ApiReadControllerClient';
|
|
|
10
10
|
* @template TKey - Type of the entity key (e.g., number, string, GUID, etc.)
|
|
11
11
|
* @template TDto - Data Transfer Object representing the entity
|
|
12
12
|
*/
|
|
13
|
-
export declare class ApiCrudControllerClient<TKey,
|
|
13
|
+
export declare class ApiCrudControllerClient<TKey, TResultDto extends IIdentifiable<TKey>, TSingleResultDto extends IIdentifiable<TKey>, TInsertRequestDto, TUpdateRequestDto> extends ApiReadControllerClient<TKey, TResultDto, TSingleResultDto> {
|
|
14
14
|
/**
|
|
15
15
|
* Constructor
|
|
16
16
|
* @param baseControllerPath Base path to API controller
|
|
@@ -23,7 +23,7 @@ export declare class ApiCrudControllerClient<TKey, TDto extends IIdentifiable<TK
|
|
|
23
23
|
* @param {AbortSignal} [signal] - Optional cancellation signal
|
|
24
24
|
* @returns The created entity DTO
|
|
25
25
|
*/
|
|
26
|
-
create(dto:
|
|
26
|
+
create(dto: TInsertRequestDto, signal?: AbortSignal): Promise<ApiResponseDto<TSingleResultDto, EmptyMetadataDto>>;
|
|
27
27
|
/**
|
|
28
28
|
* Updates an existing entity.
|
|
29
29
|
* @param id - The ID of the entity to update
|
|
@@ -31,7 +31,7 @@ export declare class ApiCrudControllerClient<TKey, TDto extends IIdentifiable<TK
|
|
|
31
31
|
* @param {AbortSignal} [signal] - Optional cancellation signal
|
|
32
32
|
* @returns The updated entity DTO
|
|
33
33
|
*/
|
|
34
|
-
update(id: TKey, dto:
|
|
34
|
+
update(id: TKey, dto: TUpdateRequestDto, signal?: AbortSignal): Promise<ApiResponseDto<TSingleResultDto, EmptyMetadataDto>>;
|
|
35
35
|
/**
|
|
36
36
|
* Deletes an entity by ID.
|
|
37
37
|
* @param id - The ID of the entity to delete
|
|
@@ -4,7 +4,7 @@ import { IHttpService } from '../HttpService';
|
|
|
4
4
|
/**
|
|
5
5
|
* Base client for read-only API controllers
|
|
6
6
|
*/
|
|
7
|
-
export declare class ApiReadControllerClient<TKey,
|
|
7
|
+
export declare class ApiReadControllerClient<TKey, TResultDto extends IIdentifiable<TKey>, TSingleResultDto extends IIdentifiable<TKey>> {
|
|
8
8
|
protected readonly baseControllerPath: string;
|
|
9
9
|
/**
|
|
10
10
|
* Constructor
|
|
@@ -22,19 +22,19 @@ export declare class ApiReadControllerClient<TKey, TDto extends IIdentifiable<TK
|
|
|
22
22
|
* @param {AbortSignal} [signal] - Optional cancellation signal
|
|
23
23
|
* @returns {Promise<ApiSuccessResponseDto<TDto>[], ReadMetadataDto>>} List of all entities with metadata
|
|
24
24
|
*/
|
|
25
|
-
readAll(signal?: AbortSignal): Promise<ApiResponseDto<
|
|
25
|
+
readAll(signal?: AbortSignal): Promise<ApiResponseDto<TResultDto[], ReadMetadataDto>>;
|
|
26
26
|
/**
|
|
27
27
|
* Fetches selected entities based on a filter definition.
|
|
28
28
|
* @param {any} definition - The filter definition object
|
|
29
29
|
* @param {AbortSignal} [signal] - Optional cancellation signal
|
|
30
30
|
* @returns {Promise<ApiSuccessResponseDto<TDto>[], ReadMetadataDto>>} The result of the read operation with metadata
|
|
31
31
|
*/
|
|
32
|
-
readSelected(definition: ReadSelectedDefinitionDto<
|
|
32
|
+
readSelected(definition: ReadSelectedDefinitionDto<TResultDto>, signal?: AbortSignal): Promise<ApiResponseDto<TResultDto[], ReadMetadataDto>>;
|
|
33
33
|
/**
|
|
34
34
|
* Fetches a single entity by its ID.
|
|
35
35
|
* @param {TKey} id - The ID of the entity
|
|
36
36
|
* @param {AbortSignal} [signal] - Optional cancellation signal
|
|
37
37
|
* @returns {Promise<ApiSuccessResponseDto<TDto, EmptyMetadataDto>>} The requested entity
|
|
38
38
|
*/
|
|
39
|
-
readSingle(id: TKey, signal?: AbortSignal): Promise<ApiResponseDto<
|
|
39
|
+
readSingle(id: TKey, signal?: AbortSignal): Promise<ApiResponseDto<TSingleResultDto, EmptyMetadataDto>>;
|
|
40
40
|
}
|
|
@@ -9,7 +9,7 @@ import { ApiResponseDto, ClaimDto, EmptyMetadataDto, ReadMetadataDto, UserDto }
|
|
|
9
9
|
* @template TKey - Type of the entity key (e.g., number, string, GUID, etc.)
|
|
10
10
|
* @template TUser - Data Transfer Object representing the user entity
|
|
11
11
|
*/
|
|
12
|
-
export declare class UserManagementControllerClient<TKey,
|
|
12
|
+
export declare class UserManagementControllerClient<TKey, TResultDto extends UserDto<TKey>, TSingleResultDto extends UserDto<TKey>, TInsertRequestDto extends UserDto<TKey>, TUpdateRequestDto extends UserDto<TKey>> extends ApiCrudControllerClient<TKey, TResultDto, TSingleResultDto, TInsertRequestDto, TUpdateRequestDto> {
|
|
13
13
|
/**
|
|
14
14
|
* Constructor
|
|
15
15
|
* @param baseControllerPath Base path to API controller
|
package/package.json
CHANGED
|
@@ -51,8 +51,8 @@ export type CollectionViewAdapterOptions<TDto> = {
|
|
|
51
51
|
* Receives a loading state flag and the updated data collection.
|
|
52
52
|
* @param options - Optional settings of type CollectionViewAdapter to customize the behavior of the adapter.
|
|
53
53
|
*/
|
|
54
|
-
export class CollectionViewAdapter<TKey, TDto extends IIdentifiable<TKey>> {
|
|
55
|
-
private _readClient: ApiReadControllerClient<TKey, TDto>;
|
|
54
|
+
export class CollectionViewAdapter<TKey, TDto extends IIdentifiable<TKey>, TDetailsDto extends IIdentifiable<TKey>> {
|
|
55
|
+
private _readClient: ApiReadControllerClient<TKey, TDto, TDetailsDto>;
|
|
56
56
|
|
|
57
57
|
private _isLoading = false;
|
|
58
58
|
private _pageData: TDto[] = [];
|
|
@@ -81,7 +81,7 @@ export class CollectionViewAdapter<TKey, TDto extends IIdentifiable<TKey>> {
|
|
|
81
81
|
dataChangedCallback: (isLoading: boolean, data: TDto[] | undefined, error: string | undefined) => void,
|
|
82
82
|
options?: CollectionViewAdapterOptions<TDto>,
|
|
83
83
|
) {
|
|
84
|
-
this._readClient = new ApiReadControllerClient<TKey, TDto>(controllerName);
|
|
84
|
+
this._readClient = new ApiReadControllerClient<TKey, TDto, TDetailsDto>(controllerName);
|
|
85
85
|
|
|
86
86
|
this._initialOptions = {
|
|
87
87
|
pagination: {
|
|
@@ -15,7 +15,13 @@ import { fail, ok } from '@utils/result';
|
|
|
15
15
|
* @template TDto - Data Transfer Object representing the entity
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
export class ApiCrudControllerClient<
|
|
18
|
+
export class ApiCrudControllerClient<
|
|
19
|
+
TKey,
|
|
20
|
+
TResultDto extends IIdentifiable<TKey>,
|
|
21
|
+
TSingleResultDto extends IIdentifiable<TKey>,
|
|
22
|
+
TInsertRequestDto,
|
|
23
|
+
TUpdateRequestDto,
|
|
24
|
+
> extends ApiReadControllerClient<TKey, TResultDto, TSingleResultDto> {
|
|
19
25
|
/**
|
|
20
26
|
* Constructor
|
|
21
27
|
* @param baseControllerPath Base path to API controller
|
|
@@ -31,7 +37,7 @@ export class ApiCrudControllerClient<TKey, TDto extends IIdentifiable<TKey>> ext
|
|
|
31
37
|
* @param {AbortSignal} [signal] - Optional cancellation signal
|
|
32
38
|
* @returns The created entity DTO
|
|
33
39
|
*/
|
|
34
|
-
public async create(dto:
|
|
40
|
+
public async create(dto: TInsertRequestDto, signal?: AbortSignal): Promise<ApiResponseDto<TSingleResultDto, EmptyMetadataDto>> {
|
|
35
41
|
try {
|
|
36
42
|
const url = await apiInitializationService.getApiUrl(this.baseControllerPath, `/Create`);
|
|
37
43
|
const res = await this.httpService.request(url, {
|
|
@@ -42,14 +48,14 @@ export class ApiCrudControllerClient<TKey, TDto extends IIdentifiable<TKey>> ext
|
|
|
42
48
|
signal,
|
|
43
49
|
});
|
|
44
50
|
if (!res.ok) {
|
|
45
|
-
return fail<ApiSuccessResponseDto<
|
|
51
|
+
return fail<ApiSuccessResponseDto<TSingleResultDto, EmptyMetadataDto>, ApiErrorResponseDto>(await res.json());
|
|
46
52
|
}
|
|
47
53
|
|
|
48
|
-
return ok<ApiSuccessResponseDto<
|
|
54
|
+
return ok<ApiSuccessResponseDto<TSingleResultDto, EmptyMetadataDto>, ApiErrorResponseDto>(await res.json());
|
|
49
55
|
} catch (err) {
|
|
50
56
|
console.error(err);
|
|
51
57
|
|
|
52
|
-
return fail<ApiSuccessResponseDto<
|
|
58
|
+
return fail<ApiSuccessResponseDto<TSingleResultDto, EmptyMetadataDto>, ApiErrorResponseDto>({
|
|
53
59
|
error: {
|
|
54
60
|
code: ErrorCode.UnknownError,
|
|
55
61
|
message: 'Unknown error occurred while creating the record.',
|
|
@@ -66,7 +72,7 @@ export class ApiCrudControllerClient<TKey, TDto extends IIdentifiable<TKey>> ext
|
|
|
66
72
|
* @param {AbortSignal} [signal] - Optional cancellation signal
|
|
67
73
|
* @returns The updated entity DTO
|
|
68
74
|
*/
|
|
69
|
-
public async update(id: TKey, dto:
|
|
75
|
+
public async update(id: TKey, dto: TUpdateRequestDto, signal?: AbortSignal): Promise<ApiResponseDto<TSingleResultDto, EmptyMetadataDto>> {
|
|
70
76
|
try {
|
|
71
77
|
const url = await apiInitializationService.getApiUrl(this.baseControllerPath, `/Update?id=${encodeURIComponent(String(id))}`);
|
|
72
78
|
const res = await this.httpService.request(url, {
|
|
@@ -78,14 +84,14 @@ export class ApiCrudControllerClient<TKey, TDto extends IIdentifiable<TKey>> ext
|
|
|
78
84
|
});
|
|
79
85
|
|
|
80
86
|
if (!res.ok) {
|
|
81
|
-
return fail<ApiSuccessResponseDto<
|
|
87
|
+
return fail<ApiSuccessResponseDto<TSingleResultDto, EmptyMetadataDto>, ApiErrorResponseDto>(await res.json());
|
|
82
88
|
}
|
|
83
89
|
|
|
84
|
-
return ok<ApiSuccessResponseDto<
|
|
90
|
+
return ok<ApiSuccessResponseDto<TSingleResultDto, EmptyMetadataDto>, ApiErrorResponseDto>(await res.json());
|
|
85
91
|
} catch (err) {
|
|
86
92
|
console.error(err);
|
|
87
93
|
|
|
88
|
-
return fail<ApiSuccessResponseDto<
|
|
94
|
+
return fail<ApiSuccessResponseDto<TSingleResultDto, EmptyMetadataDto>, ApiErrorResponseDto>({
|
|
89
95
|
error: {
|
|
90
96
|
code: ErrorCode.UnknownError,
|
|
91
97
|
message: `Unknown error occurred while updating the record with id ${id}`,
|
|
@@ -15,7 +15,7 @@ import { ErrorCode } from '@data';
|
|
|
15
15
|
/**
|
|
16
16
|
* Base client for read-only API controllers
|
|
17
17
|
*/
|
|
18
|
-
export class ApiReadControllerClient<TKey,
|
|
18
|
+
export class ApiReadControllerClient<TKey, TResultDto extends IIdentifiable<TKey>, TSingleResultDto extends IIdentifiable<TKey>> {
|
|
19
19
|
/**
|
|
20
20
|
* Constructor
|
|
21
21
|
* @param baseControllerPath Base path to API controller
|
|
@@ -46,20 +46,20 @@ export class ApiReadControllerClient<TKey, TDto extends IIdentifiable<TKey>> {
|
|
|
46
46
|
* @param {AbortSignal} [signal] - Optional cancellation signal
|
|
47
47
|
* @returns {Promise<ApiSuccessResponseDto<TDto>[], ReadMetadataDto>>} List of all entities with metadata
|
|
48
48
|
*/
|
|
49
|
-
public async readAll(signal?: AbortSignal): Promise<ApiResponseDto<
|
|
49
|
+
public async readAll(signal?: AbortSignal): Promise<ApiResponseDto<TResultDto[], ReadMetadataDto>> {
|
|
50
50
|
try {
|
|
51
51
|
const url = await apiInitializationService.getApiUrl(this.baseControllerPath, `/ReadAll`);
|
|
52
52
|
const res = await this.httpService.request(url, { method: 'GET', credentials: 'include', signal });
|
|
53
53
|
|
|
54
54
|
if (!res.ok) {
|
|
55
|
-
return fail<ApiSuccessResponseDto<
|
|
55
|
+
return fail<ApiSuccessResponseDto<TResultDto[], ReadMetadataDto>, ApiErrorResponseDto>(await res.json());
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
return ok<ApiSuccessResponseDto<
|
|
58
|
+
return ok<ApiSuccessResponseDto<TResultDto[], ReadMetadataDto>, ApiErrorResponseDto>(await res.json());
|
|
59
59
|
} catch (err) {
|
|
60
60
|
console.error(err);
|
|
61
61
|
|
|
62
|
-
return fail<ApiSuccessResponseDto<
|
|
62
|
+
return fail<ApiSuccessResponseDto<TResultDto[], ReadMetadataDto>, ApiErrorResponseDto>({
|
|
63
63
|
error: {
|
|
64
64
|
code: ErrorCode.UnknownError,
|
|
65
65
|
message: 'Unknown error fetching all records',
|
|
@@ -75,7 +75,7 @@ export class ApiReadControllerClient<TKey, TDto extends IIdentifiable<TKey>> {
|
|
|
75
75
|
* @param {AbortSignal} [signal] - Optional cancellation signal
|
|
76
76
|
* @returns {Promise<ApiSuccessResponseDto<TDto>[], ReadMetadataDto>>} The result of the read operation with metadata
|
|
77
77
|
*/
|
|
78
|
-
public async readSelected(definition: ReadSelectedDefinitionDto<
|
|
78
|
+
public async readSelected(definition: ReadSelectedDefinitionDto<TResultDto>, signal?: AbortSignal): Promise<ApiResponseDto<TResultDto[], ReadMetadataDto>> {
|
|
79
79
|
try {
|
|
80
80
|
const url = await apiInitializationService.getApiUrl(this.baseControllerPath, `/ReadSelected`);
|
|
81
81
|
const res = await this.httpService.request(url, {
|
|
@@ -87,14 +87,14 @@ export class ApiReadControllerClient<TKey, TDto extends IIdentifiable<TKey>> {
|
|
|
87
87
|
});
|
|
88
88
|
|
|
89
89
|
if (!res.ok) {
|
|
90
|
-
return fail<ApiSuccessResponseDto<
|
|
90
|
+
return fail<ApiSuccessResponseDto<TResultDto[], ReadMetadataDto>, ApiErrorResponseDto>(await res.json());
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
return ok<ApiSuccessResponseDto<
|
|
93
|
+
return ok<ApiSuccessResponseDto<TResultDto[], ReadMetadataDto>, ApiErrorResponseDto>(await res.json());
|
|
94
94
|
} catch (err) {
|
|
95
95
|
console.error(err);
|
|
96
96
|
|
|
97
|
-
return fail<ApiSuccessResponseDto<
|
|
97
|
+
return fail<ApiSuccessResponseDto<TResultDto[], ReadMetadataDto>, ApiErrorResponseDto>({
|
|
98
98
|
error: {
|
|
99
99
|
code: ErrorCode.UnknownError,
|
|
100
100
|
message: 'Unknown error fetching selected records',
|
|
@@ -110,20 +110,20 @@ export class ApiReadControllerClient<TKey, TDto extends IIdentifiable<TKey>> {
|
|
|
110
110
|
* @param {AbortSignal} [signal] - Optional cancellation signal
|
|
111
111
|
* @returns {Promise<ApiSuccessResponseDto<TDto, EmptyMetadataDto>>} The requested entity
|
|
112
112
|
*/
|
|
113
|
-
public async readSingle(id: TKey, signal?: AbortSignal): Promise<ApiResponseDto<
|
|
113
|
+
public async readSingle(id: TKey, signal?: AbortSignal): Promise<ApiResponseDto<TSingleResultDto, EmptyMetadataDto>> {
|
|
114
114
|
try {
|
|
115
115
|
const url = await apiInitializationService.getApiUrl(this.baseControllerPath, `/ReadSingle?id=${encodeURIComponent(String(id))}`);
|
|
116
116
|
const res = await this.httpService.request(url, { method: 'GET', credentials: 'include', signal });
|
|
117
117
|
|
|
118
118
|
if (!res.ok) {
|
|
119
|
-
return fail<ApiSuccessResponseDto<
|
|
119
|
+
return fail<ApiSuccessResponseDto<TSingleResultDto, EmptyMetadataDto>, ApiErrorResponseDto>(await res.json());
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
-
return ok<ApiSuccessResponseDto<
|
|
122
|
+
return ok<ApiSuccessResponseDto<TSingleResultDto, EmptyMetadataDto>, ApiErrorResponseDto>(await res.json());
|
|
123
123
|
} catch (err) {
|
|
124
124
|
console.error(err);
|
|
125
125
|
|
|
126
|
-
return fail<ApiSuccessResponseDto<
|
|
126
|
+
return fail<ApiSuccessResponseDto<TSingleResultDto, EmptyMetadataDto>, ApiErrorResponseDto>({
|
|
127
127
|
error: {
|
|
128
128
|
code: ErrorCode.UnknownError,
|
|
129
129
|
message: `Unknown error fetching record with id ${id}`,
|
|
@@ -12,7 +12,13 @@ import { fail, ok } from '@utils/result';
|
|
|
12
12
|
* @template TKey - Type of the entity key (e.g., number, string, GUID, etc.)
|
|
13
13
|
* @template TUser - Data Transfer Object representing the user entity
|
|
14
14
|
*/
|
|
15
|
-
export class UserManagementControllerClient<
|
|
15
|
+
export class UserManagementControllerClient<
|
|
16
|
+
TKey,
|
|
17
|
+
TResultDto extends UserDto<TKey>,
|
|
18
|
+
TSingleResultDto extends UserDto<TKey>,
|
|
19
|
+
TInsertRequestDto extends UserDto<TKey>,
|
|
20
|
+
TUpdateRequestDto extends UserDto<TKey>,
|
|
21
|
+
> extends ApiCrudControllerClient<TKey, TResultDto, TSingleResultDto, TInsertRequestDto, TUpdateRequestDto> {
|
|
16
22
|
/**
|
|
17
23
|
* Constructor
|
|
18
24
|
* @param baseControllerPath Base path to API controller
|
package/tests/ApiClients.test.ts
CHANGED
|
@@ -52,7 +52,7 @@ describe('API Clients with HTTP Service Abstraction', () => {
|
|
|
52
52
|
});
|
|
53
53
|
|
|
54
54
|
describe('ApiReadControllerClient', () => {
|
|
55
|
-
let client: ApiReadControllerClient<number, any>;
|
|
55
|
+
let client: ApiReadControllerClient<number, any, any>;
|
|
56
56
|
|
|
57
57
|
beforeEach(() => {
|
|
58
58
|
client = new ApiReadControllerClient('/api/test', mockHttpService);
|
|
@@ -145,7 +145,7 @@ describe('API Clients with HTTP Service Abstraction', () => {
|
|
|
145
145
|
});
|
|
146
146
|
|
|
147
147
|
describe('ApiCrudControllerClient', () => {
|
|
148
|
-
let client: ApiCrudControllerClient<number, any>;
|
|
148
|
+
let client: ApiCrudControllerClient<number, any, any, any, any>;
|
|
149
149
|
|
|
150
150
|
beforeEach(() => {
|
|
151
151
|
client = new ApiCrudControllerClient('/api/crud', mockHttpService);
|
|
@@ -212,7 +212,7 @@ describe('API Clients with HTTP Service Abstraction', () => {
|
|
|
212
212
|
});
|
|
213
213
|
|
|
214
214
|
describe('UserManagementControllerClient', () => {
|
|
215
|
-
let client: UserManagementControllerClient<number, any>;
|
|
215
|
+
let client: UserManagementControllerClient<number, any, any, any, any>;
|
|
216
216
|
|
|
217
217
|
beforeEach(() => {
|
|
218
218
|
client = new UserManagementControllerClient('/api/users', mockHttpService);
|