@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.
@@ -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, TDto extends IIdentifiable<TKey>> extends ApiReadControllerClient<TKey, TDto> {
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: TDto, signal?: AbortSignal): Promise<ApiResponseDto<TDto, EmptyMetadataDto>>;
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: TDto, signal?: AbortSignal): Promise<ApiResponseDto<TDto, EmptyMetadataDto>>;
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, TDto extends IIdentifiable<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<TDto[], ReadMetadataDto>>;
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<TDto>, signal?: AbortSignal): Promise<ApiResponseDto<TDto[], ReadMetadataDto>>;
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<TDto, EmptyMetadataDto>>;
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, TUser extends UserDto<TKey>> extends ApiCrudControllerClient<TKey, TUser> {
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intellegens/cornerstone-client",
3
- "version": "0.0.9999-alpha-13",
3
+ "version": "0.0.9999-alpha-15",
4
4
  "private": false,
5
5
  "publishable": true,
6
6
  "main": "./dist/index.js",
@@ -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<TKey, TDto extends IIdentifiable<TKey>> extends ApiReadControllerClient<TKey, TDto> {
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: TDto, signal?: AbortSignal): Promise<ApiResponseDto<TDto, EmptyMetadataDto>> {
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<TDto, EmptyMetadataDto>, ApiErrorResponseDto>(await res.json());
51
+ return fail<ApiSuccessResponseDto<TSingleResultDto, EmptyMetadataDto>, ApiErrorResponseDto>(await res.json());
46
52
  }
47
53
 
48
- return ok<ApiSuccessResponseDto<TDto, EmptyMetadataDto>, ApiErrorResponseDto>(await res.json());
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<TDto, EmptyMetadataDto>, ApiErrorResponseDto>({
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: TDto, signal?: AbortSignal): Promise<ApiResponseDto<TDto, EmptyMetadataDto>> {
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<TDto, EmptyMetadataDto>, ApiErrorResponseDto>(await res.json());
87
+ return fail<ApiSuccessResponseDto<TSingleResultDto, EmptyMetadataDto>, ApiErrorResponseDto>(await res.json());
82
88
  }
83
89
 
84
- return ok<ApiSuccessResponseDto<TDto, EmptyMetadataDto>, ApiErrorResponseDto>(await res.json());
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<TDto, EmptyMetadataDto>, ApiErrorResponseDto>({
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, TDto extends IIdentifiable<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<TDto[], ReadMetadataDto>> {
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<TDto[], ReadMetadataDto>, ApiErrorResponseDto>(await res.json());
55
+ return fail<ApiSuccessResponseDto<TResultDto[], ReadMetadataDto>, ApiErrorResponseDto>(await res.json());
56
56
  }
57
57
 
58
- return ok<ApiSuccessResponseDto<TDto[], ReadMetadataDto>, ApiErrorResponseDto>(await res.json());
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<TDto[], ReadMetadataDto>, ApiErrorResponseDto>({
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<TDto>, signal?: AbortSignal): Promise<ApiResponseDto<TDto[], ReadMetadataDto>> {
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<TDto[], ReadMetadataDto>, ApiErrorResponseDto>(await res.json());
90
+ return fail<ApiSuccessResponseDto<TResultDto[], ReadMetadataDto>, ApiErrorResponseDto>(await res.json());
91
91
  }
92
92
 
93
- return ok<ApiSuccessResponseDto<TDto[], ReadMetadataDto>, ApiErrorResponseDto>(await res.json());
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<TDto[], ReadMetadataDto>, ApiErrorResponseDto>({
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<TDto, EmptyMetadataDto>> {
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<TDto, EmptyMetadataDto>, ApiErrorResponseDto>(await res.json());
119
+ return fail<ApiSuccessResponseDto<TSingleResultDto, EmptyMetadataDto>, ApiErrorResponseDto>(await res.json());
120
120
  }
121
121
 
122
- return ok<ApiSuccessResponseDto<TDto, EmptyMetadataDto>, ApiErrorResponseDto>(await res.json());
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<TDto, EmptyMetadataDto>, ApiErrorResponseDto>({
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<TKey, TUser extends UserDto<TKey>> extends ApiCrudControllerClient<TKey, TUser> {
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
@@ -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);