@intellegens/cornerstone-client 0.0.9999-alpha-41 → 0.0.9999-alpha-43

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 (233) hide show
  1. package/dist/adapters/collection-view-adapter.d.ts +123 -0
  2. package/dist/adapters/collection-view-adapter.integration.test.d.ts +1 -0
  3. package/dist/adapters/collection-view-adapter.integration.test.js +141 -0
  4. package/dist/adapters/collection-view-adapter.js +352 -0
  5. package/dist/adapters/index.d.ts +2 -2
  6. package/dist/adapters/index.js +2 -2
  7. package/dist/adapters/search-adapter.d.ts +83 -0
  8. package/dist/adapters/search-adapter.js +284 -0
  9. package/dist/data/api/dto/crud/crud-metadata-dto.js +1 -0
  10. package/dist/data/api/dto/crud/index.d.ts +1 -1
  11. package/dist/data/api/dto/crud/index.js +1 -1
  12. package/dist/data/api/dto/index.d.ts +1 -1
  13. package/dist/data/api/dto/index.js +1 -1
  14. package/dist/data/api/dto/property-path-dto.d.ts +4 -0
  15. package/dist/data/api/dto/property-path-dto.js +1 -0
  16. package/dist/data/api/dto/read/index.d.ts +10 -10
  17. package/dist/data/api/dto/read/index.js +10 -10
  18. package/dist/data/api/dto/read/read-metadata-dto.d.ts +8 -0
  19. package/dist/data/api/dto/read/read-metadata-dto.js +1 -0
  20. package/dist/data/api/dto/read/read-selected-definition-dto.d.ts +18 -0
  21. package/dist/data/api/dto/read/read-selected-definition-dto.js +1 -0
  22. package/dist/data/api/dto/read/read-selected-nested-collection-criteria-dto.d.ts +22 -0
  23. package/dist/data/api/dto/read/read-selected-nested-collection-criteria-dto.js +1 -0
  24. package/dist/data/api/dto/read/read-selected-nested-criteria-dto.d.ts +18 -0
  25. package/dist/data/api/dto/read/read-selected-nested-criteria-dto.js +1 -0
  26. package/dist/data/api/dto/read/read-selected-ordering-definition-dto.d.ts +7 -0
  27. package/dist/data/api/dto/read/read-selected-ordering-definition-dto.js +1 -0
  28. package/dist/data/api/dto/read/read-selected-ordering-property-definition-dto.d.ts +14 -0
  29. package/dist/data/api/dto/read/read-selected-ordering-property-definition-dto.js +1 -0
  30. package/dist/data/api/dto/read/read-selected-pagination-definition-dto.d.ts +13 -0
  31. package/dist/data/api/dto/read/read-selected-pagination-definition-dto.js +1 -0
  32. package/dist/data/api/dto/read/read-selected-search-definition-builder.d.ts +167 -0
  33. package/dist/data/api/dto/read/read-selected-search-definition-builder.js +267 -0
  34. package/dist/data/api/dto/read/read-selected-search-definition-dto.d.ts +33 -0
  35. package/dist/data/api/dto/read/read-selected-search-definition-dto.js +1 -0
  36. package/dist/data/api/dto/read/read-selected-search-property-definition-dto.d.ts +114 -0
  37. package/dist/data/api/dto/read/read-selected-search-property-definition-dto.js +1 -0
  38. package/dist/data/api/dto/read-options-dto.d.ts +8 -0
  39. package/dist/data/api/dto/read-options-dto.js +1 -0
  40. package/dist/data/api/dto/read-result-dto.d.ts +12 -0
  41. package/dist/data/api/dto/read-result-dto.js +1 -0
  42. package/dist/data/api/dto/read-result-metadata-dto.d.ts +8 -0
  43. package/dist/data/api/dto/read-result-metadata-dto.js +1 -0
  44. package/dist/data/api/dto/response/api-error-dto.d.ts +17 -0
  45. package/dist/data/api/dto/response/api-error-dto.js +1 -0
  46. package/dist/data/api/dto/response/api-error-response-dto.d.ts +11 -0
  47. package/dist/data/api/dto/response/api-error-response-dto.js +1 -0
  48. package/dist/data/api/dto/response/api-response-dto.d.ts +3 -0
  49. package/dist/data/api/dto/response/api-response-dto.js +1 -0
  50. package/dist/data/api/dto/response/api-success-response-dto.d.ts +13 -0
  51. package/dist/data/api/dto/response/api-success-response-dto.js +1 -0
  52. package/dist/data/api/dto/response/index.d.ts +5 -5
  53. package/dist/data/api/dto/response/index.js +5 -5
  54. package/dist/data/api/dto/response/metadata-dto.d.ts +25 -0
  55. package/dist/data/api/dto/response/metadata-dto.js +1 -0
  56. package/dist/data/api/enum/read/index.d.ts +5 -5
  57. package/dist/data/api/enum/read/index.js +5 -5
  58. package/dist/data/api/enum/read/read-selected-collection-operator.d.ts +16 -0
  59. package/dist/data/api/enum/read/read-selected-collection-operator.js +17 -0
  60. package/dist/data/api/enum/read/read-selected-comparison-operator.d.ts +69 -0
  61. package/dist/data/api/enum/read/read-selected-comparison-operator.js +76 -0
  62. package/dist/data/api/enum/read/read-selected-logical-operator.d.ts +15 -0
  63. package/dist/data/api/enum/read/read-selected-logical-operator.js +16 -0
  64. package/dist/data/api/enum/read/read-selected-ordering-direction.d.ts +13 -0
  65. package/dist/data/api/enum/read/read-selected-ordering-direction.js +14 -0
  66. package/dist/data/api/enum/read/read-selected-property-type.d.ts +66 -0
  67. package/dist/data/api/enum/read/read-selected-property-type.js +75 -0
  68. package/dist/data/api/enum/response/error-code.d.ts +14 -0
  69. package/dist/data/api/enum/response/error-code.js +15 -0
  70. package/dist/data/api/enum/response/index.d.ts +1 -1
  71. package/dist/data/api/enum/response/index.js +1 -1
  72. package/dist/data/api/interface/icommon-identifiable.d.ts +7 -0
  73. package/dist/data/api/interface/icommon-identifiable.js +1 -0
  74. package/dist/data/api/interface/iconcurrency-safe.d.ts +9 -0
  75. package/dist/data/api/interface/iconcurrency-safe.js +1 -0
  76. package/dist/data/api/interface/iidentifiable-secondary.d.ts +9 -0
  77. package/dist/data/api/interface/iidentifiable-secondary.js +1 -0
  78. package/dist/data/api/interface/iidentifiable.d.ts +11 -0
  79. package/dist/data/api/interface/iidentifiable.js +1 -0
  80. package/dist/data/api/interface/index.d.ts +4 -3
  81. package/dist/data/api/interface/index.js +4 -3
  82. package/dist/data/auth/dto/claim-dto.d.ts +4 -0
  83. package/dist/data/auth/dto/claim-dto.js +1 -0
  84. package/dist/data/auth/dto/index.d.ts +6 -5
  85. package/dist/data/auth/dto/index.js +6 -5
  86. package/dist/data/auth/dto/register-request-dto.d.ts +4 -0
  87. package/dist/data/auth/dto/register-request-dto.js +1 -0
  88. package/dist/data/auth/dto/role-dto.d.ts +5 -0
  89. package/dist/data/auth/dto/role-dto.js +1 -0
  90. package/dist/data/auth/dto/role-with-claims-dto.d.ts +5 -0
  91. package/dist/data/auth/dto/role-with-claims-dto.js +1 -0
  92. package/dist/data/auth/dto/sign-in-request-dto.d.ts +4 -0
  93. package/dist/data/auth/dto/sign-in-request-dto.js +1 -0
  94. package/dist/data/auth/dto/tokens-dto.d.ts +4 -0
  95. package/dist/data/auth/dto/tokens-dto.js +1 -0
  96. package/dist/data/auth/dto/user-dto.d.ts +16 -0
  97. package/dist/data/auth/dto/user-dto.js +1 -0
  98. package/dist/data/auth/dto/user-info-dto.d.ts +14 -0
  99. package/dist/data/auth/dto/user-info-dto.js +1 -0
  100. package/dist/services/api/api-crud-controller-client.d.ts +62 -0
  101. package/dist/services/api/api-crud-controller-client.integration.test.d.ts +1 -0
  102. package/dist/services/api/api-crud-controller-client.integration.test.js +34 -0
  103. package/dist/services/api/api-crud-controller-client.js +133 -0
  104. package/dist/services/api/api-initialization-service.d.ts +106 -0
  105. package/dist/services/api/api-initialization-service.js +207 -0
  106. package/dist/services/api/api-read-controller-client.d.ts +62 -0
  107. package/dist/services/api/api-read-controller-client.integration.test.d.ts +1 -0
  108. package/dist/services/api/api-read-controller-client.integration.test.js +59 -0
  109. package/dist/services/api/api-read-controller-client.js +129 -0
  110. package/dist/services/api/http-service/fetch-http-service.d.ts +7 -0
  111. package/dist/services/api/http-service/fetch-http-service.integration.test.d.ts +1 -0
  112. package/dist/services/api/http-service/fetch-http-service.integration.test.js +52 -0
  113. package/dist/services/api/http-service/fetch-http-service.js +29 -0
  114. package/dist/services/api/http-service/http-request-config.d.ts +10 -0
  115. package/dist/services/api/http-service/http-request-config.js +1 -0
  116. package/dist/services/api/http-service/http-response.d.ts +11 -0
  117. package/dist/services/api/http-service/http-response.js +3 -0
  118. package/dist/services/api/http-service/http-service.d.ts +5 -0
  119. package/dist/services/api/http-service/http-service.js +5 -0
  120. package/dist/services/api/http-service/ihttp-service.d.ts +13 -0
  121. package/dist/services/api/http-service/ihttp-service.js +3 -0
  122. package/dist/services/api/http-service/index.d.ts +5 -0
  123. package/dist/services/api/http-service/index.js +5 -0
  124. package/dist/services/api/index.d.ts +5 -5
  125. package/dist/services/api/index.js +5 -5
  126. package/dist/services/api/user-management-controller-client.d.ts +80 -0
  127. package/dist/services/api/user-management-controller-client.integration.test.d.ts +1 -0
  128. package/dist/services/api/user-management-controller-client.integration.test.js +60 -0
  129. package/dist/services/api/user-management-controller-client.js +291 -0
  130. package/dist/services/auth/client/auth-service.d.ts +75 -0
  131. package/dist/services/auth/client/auth-service.js +200 -0
  132. package/dist/services/auth/client/authorization-management-controller-client.d.ts +48 -0
  133. package/dist/services/auth/client/authorization-management-controller-client.integration.test.d.ts +1 -0
  134. package/dist/services/auth/client/authorization-management-controller-client.integration.test.js +89 -0
  135. package/dist/services/auth/client/authorization-management-controller-client.js +148 -0
  136. package/dist/services/auth/client/index.d.ts +2 -2
  137. package/dist/services/auth/client/index.js +2 -2
  138. package/dist/utils/authorization.d.ts +17 -0
  139. package/dist/utils/authorization.js +45 -0
  140. package/dist/utils/events.d.ts +19 -0
  141. package/dist/utils/events.js +12 -0
  142. package/dist/utils/index.d.ts +2 -0
  143. package/dist/utils/index.js +2 -0
  144. package/dist/utils/result.d.ts +21 -0
  145. package/dist/utils/result.js +16 -0
  146. package/dist/utils/search.d.ts +34 -0
  147. package/dist/utils/search.js +106 -0
  148. package/package.json +6 -6
  149. package/src/adapters/collection-view-adapter.integration.test.ts +172 -0
  150. package/src/adapters/collection-view-adapter.ts +458 -0
  151. package/src/adapters/index.ts +2 -2
  152. package/src/adapters/search-adapter.ts +374 -0
  153. package/src/data/api/dto/crud/crud-metadata-dto.ts +4 -0
  154. package/src/data/api/dto/crud/index.ts +1 -1
  155. package/src/data/api/dto/index.ts +1 -1
  156. package/src/data/api/dto/read/index.ts +10 -10
  157. package/src/data/api/dto/read/{ReadSelectedSearchDefinitionBuilder.ts → read-selected-search-definition-builder.ts} +4 -4
  158. package/src/data/api/dto/{ReadResultDto.ts → read-result-dto.ts} +1 -1
  159. package/src/data/api/dto/response/{ApiErrorDto.ts → api-error-dto.ts} +1 -1
  160. package/src/data/api/dto/response/index.ts +5 -5
  161. package/src/data/api/enum/read/index.ts +5 -5
  162. package/src/data/api/enum/response/{ErrorCode.ts → error-code.ts} +1 -0
  163. package/src/data/api/enum/response/index.ts +1 -1
  164. package/src/data/api/interface/{ICommonIdentifiable.ts → icommon-identifiable.ts} +1 -1
  165. package/src/data/api/interface/{IConcurrencySafe.ts → iconcurrency-safe.ts} +1 -1
  166. package/src/data/api/interface/{IIdentifiable.ts → iidentifiable.ts} +1 -1
  167. package/src/data/api/interface/index.ts +4 -3
  168. package/src/data/auth/dto/index.ts +6 -5
  169. package/src/data/auth/dto/role-with-claims-dto.ts +6 -0
  170. package/src/data/auth/dto/{UserDto.ts → user-dto.ts} +5 -6
  171. package/src/services/api/{ApiCrudControllerClient/index.integration.test.ts → api-crud-controller-client.integration.test.ts} +1 -1
  172. package/src/services/api/{ApiCrudControllerClient/index.ts → api-crud-controller-client.ts} +62 -7
  173. package/src/services/api/{ApiInitializationService/index.ts → api-initialization-service.ts} +2 -4
  174. package/src/services/api/{ApiReadControllerClient/index.integration.test.ts → api-read-controller-client.integration.test.ts} +1 -1
  175. package/src/services/api/{ApiReadControllerClient/index.ts → api-read-controller-client.ts} +55 -6
  176. package/src/services/api/{HttpService/FetchHttpService.integration.test.ts → http-service/fetch-http-service.integration.test.ts} +1 -1
  177. package/src/services/api/http-service/http-service.ts +6 -0
  178. package/src/services/api/http-service/index.ts +5 -0
  179. package/src/services/api/index.ts +5 -5
  180. package/src/services/api/{UserManagementControllerClient/index.integration.test.ts → user-management-controller-client.integration.test.ts} +1 -1
  181. package/src/services/api/user-management-controller-client.ts +322 -0
  182. package/src/services/auth/client/index.ts +2 -2
  183. package/src/utils/events.ts +29 -0
  184. package/src/utils/index.ts +2 -0
  185. package/demo/index.ts +0 -29
  186. package/demo/public_html/favicon.ico +0 -0
  187. package/demo/public_html/index.html +0 -105
  188. package/demo/public_html/websettings.json +0 -3
  189. package/src/adapters/CollectionViewAdapter/index.integration.test.ts +0 -197
  190. package/src/adapters/CollectionViewAdapter/index.ts +0 -477
  191. package/src/adapters/SearchAdapter/index.ts +0 -302
  192. package/src/services/api/HttpService/index.ts +0 -12
  193. package/src/services/api/UserManagementControllerClient/index.ts +0 -134
  194. /package/{src/data/api/dto/crud/CrudMetadataDto.ts → dist/data/api/dto/crud/crud-metadata-dto.d.ts} +0 -0
  195. /package/src/data/api/dto/{PropertyPathDto.ts → property-path-dto.ts} +0 -0
  196. /package/src/data/api/dto/read/{ReadMetadataDto.ts → read-metadata-dto.ts} +0 -0
  197. /package/src/data/api/dto/read/{ReadSelectedDefinitionDto.ts → read-selected-definition-dto.ts} +0 -0
  198. /package/src/data/api/dto/read/{ReadSelectedNestedCollectionCriteriaDto.ts → read-selected-nested-collection-criteria-dto.ts} +0 -0
  199. /package/src/data/api/dto/read/{ReadSelectedNestedCriteriaDto.ts → read-selected-nested-criteria-dto.ts} +0 -0
  200. /package/src/data/api/dto/read/{ReadSelectedOrderingDefinitionDto.ts → read-selected-ordering-definition-dto.ts} +0 -0
  201. /package/src/data/api/dto/read/{ReadSelectedOrderingPropertyDefinitionDto.ts → read-selected-ordering-property-definition-dto.ts} +0 -0
  202. /package/src/data/api/dto/read/{ReadSelectedPaginationDefinitionDto.ts → read-selected-pagination-definition-dto.ts} +0 -0
  203. /package/src/data/api/dto/read/{ReadSelectedSearchDefinitionDto.ts → read-selected-search-definition-dto.ts} +0 -0
  204. /package/src/data/api/dto/read/{ReadSelectedSearchPropertyDefinitionDto.ts → read-selected-search-property-definition-dto.ts} +0 -0
  205. /package/src/data/api/dto/{ReadOptionsDto.ts → read-options-dto.ts} +0 -0
  206. /package/src/data/api/dto/{ReadResultMetadataDto.ts → read-result-metadata-dto.ts} +0 -0
  207. /package/src/data/api/dto/response/{ApiErrorResponseDto.ts → api-error-response-dto.ts} +0 -0
  208. /package/src/data/api/dto/response/{ApiResponseDto.ts → api-response-dto.ts} +0 -0
  209. /package/src/data/api/dto/response/{ApiSuccessResponseDto.ts → api-success-response-dto.ts} +0 -0
  210. /package/src/data/api/dto/response/{MetadataDto.ts → metadata-dto.ts} +0 -0
  211. /package/src/data/api/enum/read/{ReadSelectedCollectionOperator.ts → read-selected-collection-operator.ts} +0 -0
  212. /package/src/data/api/enum/read/{ReadSelectedComparisonOperator.ts → read-selected-comparison-operator.ts} +0 -0
  213. /package/src/data/api/enum/read/{ReadSelectedLogicalOperator.ts → read-selected-logical-operator.ts} +0 -0
  214. /package/src/data/api/enum/read/{ReadSelectedOrderingDirection.ts → read-selected-ordering-direction.ts} +0 -0
  215. /package/src/data/api/enum/read/{ReadSelectedPropertyType.ts → read-selected-property-type.ts} +0 -0
  216. /package/src/data/api/interface/{IIdentifiableSecondary.ts → iidentifiable-secondary.ts} +0 -0
  217. /package/src/data/auth/dto/{ClaimDto.ts → claim-dto.ts} +0 -0
  218. /package/src/data/auth/dto/{RegisterRequestDto.ts → register-request-dto.ts} +0 -0
  219. /package/src/data/auth/dto/{RoleDto.ts → role-dto.ts} +0 -0
  220. /package/src/data/auth/dto/{SignInRequestDto.ts → sign-in-request-dto.ts} +0 -0
  221. /package/src/data/auth/dto/{TokensDto.ts → tokens-dto.ts} +0 -0
  222. /package/src/data/auth/dto/{UserInfoDto.ts → user-info-dto.ts} +0 -0
  223. /package/src/services/api/{HttpService → http-service}/README.md +0 -0
  224. /package/src/services/api/{HttpService/FetchHttpService.ts → http-service/fetch-http-service.ts} +0 -0
  225. /package/src/services/api/{HttpService/HttpRequestConfig.ts → http-service/http-request-config.ts} +0 -0
  226. /package/src/services/api/{HttpService/HttpResponse.ts → http-service/http-response.ts} +0 -0
  227. /package/src/services/api/{HttpService/IHttpService.ts → http-service/ihttp-service.ts} +0 -0
  228. /package/src/services/auth/client/{AuthService/index.ts → auth-service.ts} +0 -0
  229. /package/src/services/auth/client/{AuthorizationManagementControllerClient/index.integration.test.ts → authorization-management-controller-client.integration.test.ts} +0 -0
  230. /package/src/services/auth/client/{AuthorizationManagementControllerClient/index.ts → authorization-management-controller-client.ts} +0 -0
  231. /package/src/utils/{authorization/index.ts → authorization.ts} +0 -0
  232. /package/src/utils/{result/index.ts → result.ts} +0 -0
  233. /package/src/utils/{search/index.ts → search.ts} +0 -0
@@ -0,0 +1,83 @@
1
+ import { PropertyPathDto, ReadSelectedOrderingDirection, ReadSelectedSearchDefinitionDto } from '../data';
2
+ import { IReadSelectedClient } from '../services';
3
+ import { IHasObservableProperty, SingularEventTarget } from '../utils';
4
+ export type SearchAdapterBaseOptions<TDto> = {
5
+ primaryKey: string | ((item: TDto) => string);
6
+ multiselect: boolean;
7
+ defaultSearch?: ReadSelectedSearchDefinitionDto<TDto>;
8
+ defaultText?: string;
9
+ searchTriggerMinLength?: number;
10
+ searchDebounceDelay?: number;
11
+ ordering?: {
12
+ path: PropertyPathDto;
13
+ direction: ReadSelectedOrderingDirection;
14
+ }[];
15
+ limit?: number;
16
+ };
17
+ export type SearchAdapterOptions<TDto> = SearchAdapterBaseOptions<TDto> & (TDto extends {
18
+ type: string;
19
+ } ? {
20
+ typesToSearch?: string[];
21
+ } : {});
22
+ export interface ISearchAdapter<TDto> extends IHasObservableProperty<'isLoading', boolean>, IHasObservableProperty<'error', string | undefined>, IHasObservableProperty<'searchData', readonly TDto[]>, IHasObservableProperty<'totalItemCount', number>, IHasObservableProperty<'types', string[] | undefined>, IHasObservableProperty<'search', ReadSelectedSearchDefinitionDto<TDto> | undefined>, IHasObservableProperty<'text', string | undefined>, IHasObservableProperty<'selection', readonly TDto[]> {
23
+ readonly options: Required<SearchAdapterBaseOptions<TDto>>;
24
+ readonly searchTriggerMinLength: number;
25
+ setTypes(types: string[] | undefined): void;
26
+ setSearch(search: ReadSelectedSearchDefinitionDto<TDto> | undefined): void;
27
+ setText(text: string | undefined): void;
28
+ refresh(): void;
29
+ selectionAdd(item: TDto): void;
30
+ selectionRemove(item: TDto): void;
31
+ selectionToggle(item: TDto): void;
32
+ selectionClear(): void;
33
+ destroy(): void;
34
+ }
35
+ export declare class SearchAdapter<TDto> implements ISearchAdapter<TDto> {
36
+ readonly options: Required<SearchAdapterBaseOptions<TDto>>;
37
+ readonly isLoadingChanged: SingularEventTarget<boolean>;
38
+ readonly errorChanged: SingularEventTarget<string | undefined>;
39
+ readonly searchDataChanged: SingularEventTarget<readonly TDto[]>;
40
+ readonly totalItemCountChanged: SingularEventTarget<number>;
41
+ readonly typesChanged: SingularEventTarget<string[] | undefined>;
42
+ readonly searchChanged: SingularEventTarget<ReadSelectedSearchDefinitionDto<TDto> | undefined>;
43
+ readonly textChanged: SingularEventTarget<string | undefined>;
44
+ readonly selectionChanged: SingularEventTarget<readonly TDto[]>;
45
+ private _readClient;
46
+ private _isLoading;
47
+ private _error;
48
+ private _searchData;
49
+ private _totalItemCount;
50
+ private _types;
51
+ private _search;
52
+ private _text;
53
+ private _selection;
54
+ private _lastSearchedText;
55
+ private _currentAbortController?;
56
+ private _fetchTimeout?;
57
+ constructor(options: SearchAdapterOptions<TDto>, client: IReadSelectedClient<any, any> | string);
58
+ get isLoading(): boolean;
59
+ get error(): string | undefined;
60
+ get searchData(): readonly TDto[];
61
+ get totalItemCount(): number;
62
+ get types(): string[] | undefined;
63
+ get search(): ReadSelectedSearchDefinitionDto<TDto> | undefined;
64
+ get text(): string | undefined;
65
+ get selection(): readonly TDto[];
66
+ get searchTriggerMinLength(): number;
67
+ setTypes(types: string[] | undefined): void;
68
+ setSearch(search: ReadSelectedSearchDefinitionDto<TDto> | undefined): void;
69
+ setText(text: string | undefined): void;
70
+ refresh(): void;
71
+ private _getItemKey;
72
+ selectionAdd(item: TDto): void;
73
+ selectionRemove(item: TDto): void;
74
+ selectionToggle(item: TDto): void;
75
+ selectionClear(): void;
76
+ destroy(): void;
77
+ private _triggerFetch;
78
+ private _scheduleFetch;
79
+ private _executeFetch;
80
+ private _emitSearchState;
81
+ private _buildDefinition;
82
+ private _cancelPendingRequests;
83
+ }
@@ -0,0 +1,284 @@
1
+ import { ErrorCode, ReadSelectedComparisonOperator, ReadSelectedLogicalOperator, ReadSelectedPropertyType, } from '../data';
2
+ import { ApiReadControllerClient } from '../services';
3
+ import { SingularEventTarget, toPascalCase } from '../utils';
4
+ const DEFAULT_OPTIONS = {
5
+ defaultSearch: undefined,
6
+ defaultText: undefined,
7
+ searchTriggerMinLength: 1,
8
+ searchDebounceDelay: 100,
9
+ ordering: [],
10
+ limit: undefined,
11
+ };
12
+ export class SearchAdapter {
13
+ options;
14
+ isLoadingChanged = new SingularEventTarget();
15
+ errorChanged = new SingularEventTarget();
16
+ searchDataChanged = new SingularEventTarget();
17
+ totalItemCountChanged = new SingularEventTarget();
18
+ typesChanged = new SingularEventTarget();
19
+ searchChanged = new SingularEventTarget();
20
+ textChanged = new SingularEventTarget();
21
+ selectionChanged = new SingularEventTarget();
22
+ _readClient;
23
+ _isLoading = false;
24
+ _error = undefined;
25
+ _searchData = [];
26
+ _totalItemCount = 0;
27
+ _types;
28
+ _search;
29
+ _text;
30
+ _selection = [];
31
+ _lastSearchedText = undefined;
32
+ _currentAbortController;
33
+ _fetchTimeout;
34
+ constructor(options, client) {
35
+ this._readClient = typeof client === 'string' ? new ApiReadControllerClient(client) : client;
36
+ this.options = {
37
+ ...DEFAULT_OPTIONS,
38
+ ...options,
39
+ };
40
+ this._types = options.typesToSearch;
41
+ this._search = this.options.defaultSearch;
42
+ this._text = this.options.defaultText;
43
+ }
44
+ // --- Getters ---
45
+ get isLoading() {
46
+ return this._isLoading;
47
+ }
48
+ get error() {
49
+ return this._error;
50
+ }
51
+ get searchData() {
52
+ return this._searchData;
53
+ }
54
+ get totalItemCount() {
55
+ return this._totalItemCount;
56
+ }
57
+ get types() {
58
+ return this._types;
59
+ }
60
+ get search() {
61
+ return this._search;
62
+ }
63
+ get text() {
64
+ return this._text;
65
+ }
66
+ get selection() {
67
+ return this._selection;
68
+ }
69
+ get searchTriggerMinLength() {
70
+ return this.options.searchTriggerMinLength;
71
+ }
72
+ // --- Mutations ---
73
+ setTypes(types) {
74
+ this._types = types;
75
+ this._lastSearchedText = undefined;
76
+ this.typesChanged.dispatchEvent(this._types);
77
+ this._triggerFetch();
78
+ }
79
+ setSearch(search) {
80
+ this._search = search;
81
+ this._lastSearchedText = undefined;
82
+ this.searchChanged.dispatchEvent(this._search);
83
+ this._triggerFetch();
84
+ }
85
+ setText(text) {
86
+ if (this._text === text)
87
+ return;
88
+ this._text = text;
89
+ this.textChanged.dispatchEvent(this._text);
90
+ this._triggerFetch();
91
+ }
92
+ refresh() {
93
+ this._lastSearchedText = undefined;
94
+ this._triggerFetch();
95
+ }
96
+ // --- Selection ---
97
+ _getItemKey(item) {
98
+ const pk = this.options.primaryKey;
99
+ if (typeof pk === 'function')
100
+ return pk(item);
101
+ return String(item[pk]);
102
+ }
103
+ selectionAdd(item) {
104
+ const key = this._getItemKey(item);
105
+ if (this._selection.find(x => this._getItemKey(x) === key))
106
+ return;
107
+ if (this.options.multiselect) {
108
+ this._selection = [...this._selection, item];
109
+ }
110
+ else {
111
+ this._selection = [item];
112
+ }
113
+ this._searchData = this._searchData.filter(d => this._getItemKey(d) !== key);
114
+ this.selectionChanged.dispatchEvent(this._selection);
115
+ this.searchDataChanged.dispatchEvent(this._searchData);
116
+ }
117
+ selectionRemove(item) {
118
+ const key = this._getItemKey(item);
119
+ this._selection = this._selection.filter(s => this._getItemKey(s) !== key);
120
+ this._searchData = [...this._searchData, item];
121
+ this.selectionChanged.dispatchEvent(this._selection);
122
+ this.searchDataChanged.dispatchEvent(this._searchData);
123
+ }
124
+ selectionToggle(item) {
125
+ const key = this._getItemKey(item);
126
+ if (this._selection.find(x => this._getItemKey(x) === key)) {
127
+ this.selectionRemove(item);
128
+ }
129
+ else {
130
+ this.selectionAdd(item);
131
+ }
132
+ }
133
+ selectionClear() {
134
+ this._selection = [];
135
+ this.selectionChanged.dispatchEvent(this._selection);
136
+ }
137
+ // --- Lifecycle ---
138
+ destroy() {
139
+ this._cancelPendingRequests();
140
+ }
141
+ // --- Private ---
142
+ _triggerFetch() {
143
+ const textLength = this._text?.length ?? 0;
144
+ if (textLength < this.options.searchTriggerMinLength) {
145
+ this._searchData = [];
146
+ this._lastSearchedText = undefined;
147
+ this._emitSearchState();
148
+ return;
149
+ }
150
+ if (this._text === this._lastSearchedText)
151
+ return;
152
+ this._lastSearchedText = this._text;
153
+ this._searchData = [];
154
+ this._scheduleFetch();
155
+ }
156
+ _scheduleFetch() {
157
+ this._isLoading = true;
158
+ this.isLoadingChanged.dispatchEvent(true);
159
+ if (this._fetchTimeout !== undefined) {
160
+ clearTimeout(this._fetchTimeout);
161
+ }
162
+ this._fetchTimeout = setTimeout(() => this._executeFetch(), this.options.searchDebounceDelay);
163
+ }
164
+ async _executeFetch() {
165
+ let abortController;
166
+ try {
167
+ if (this._currentAbortController) {
168
+ try {
169
+ this._currentAbortController.abort();
170
+ }
171
+ catch {
172
+ // Ignore abort errors
173
+ }
174
+ }
175
+ abortController = new AbortController();
176
+ this._currentAbortController = abortController;
177
+ const definition = this._buildDefinition();
178
+ const response = await this._readClient.readSelected(definition, abortController.signal);
179
+ if (!response.ok) {
180
+ if (response.error.code === ErrorCode.Aborted)
181
+ return;
182
+ this._error = response.error.details ?? response.error.message ?? 'Unknown error';
183
+ }
184
+ else {
185
+ this._error = undefined;
186
+ this._totalItemCount = response.metadata?.totalCount ?? response.result.length;
187
+ const selectedKeys = new Set(this._selection.map(item => this._getItemKey(item)));
188
+ this._searchData = response.result.filter((item) => !selectedKeys.has(this._getItemKey(item)));
189
+ }
190
+ }
191
+ catch (error) {
192
+ console.error('Error fetching data:', error);
193
+ this._error = error instanceof Error ? error.message : 'Unknown error';
194
+ }
195
+ finally {
196
+ if (abortController && this._currentAbortController === abortController) {
197
+ this._isLoading = false;
198
+ this._currentAbortController = undefined;
199
+ this.isLoadingChanged.dispatchEvent(false);
200
+ this.errorChanged.dispatchEvent(this._error);
201
+ this._emitSearchState();
202
+ }
203
+ }
204
+ }
205
+ _emitSearchState() {
206
+ this.searchDataChanged.dispatchEvent(this._searchData);
207
+ this.totalItemCountChanged.dispatchEvent(this._totalItemCount);
208
+ }
209
+ _buildDefinition() {
210
+ const definition = {};
211
+ // Pagination
212
+ if (this.options.limit !== undefined) {
213
+ definition.paginationDefinition = { skip: 0, limit: this.options.limit };
214
+ }
215
+ // Ordering
216
+ if (this.options.ordering.length > 0) {
217
+ definition.orderingDefinition = {
218
+ order: this.options.ordering.map(o => ({
219
+ propertyPath: o.path.map(x => toPascalCase(x)),
220
+ direction: o.direction,
221
+ })),
222
+ };
223
+ }
224
+ // Search definition (from options or setSearch)
225
+ if (this._search) {
226
+ definition.searchDefinition = { ...this._search };
227
+ }
228
+ // Text search criterion
229
+ if (this._text) {
230
+ const textCriterion = {
231
+ propertyName: 'Name',
232
+ comparisonOperator: ReadSelectedComparisonOperator.IContains,
233
+ valueType: ReadSelectedPropertyType.String,
234
+ value: this._text,
235
+ };
236
+ if (!definition.searchDefinition) {
237
+ definition.searchDefinition = {
238
+ logicalOperator: ReadSelectedLogicalOperator.And,
239
+ propertyCriteria: [textCriterion],
240
+ };
241
+ }
242
+ else {
243
+ definition.searchDefinition.propertyCriteria = [...(definition.searchDefinition.propertyCriteria || []), textCriterion];
244
+ }
245
+ }
246
+ // Type criteria
247
+ if (this._types && this._types.length > 0) {
248
+ if (!definition.searchDefinition) {
249
+ definition.searchDefinition = {
250
+ logicalOperator: ReadSelectedLogicalOperator.And,
251
+ propertyCriteria: [],
252
+ };
253
+ }
254
+ if (!definition.searchDefinition.searches) {
255
+ definition.searchDefinition.searches = [];
256
+ }
257
+ definition.searchDefinition.searches.push({
258
+ logicalOperator: ReadSelectedLogicalOperator.Or,
259
+ propertyCriteria: this._types.map(type => ({
260
+ propertyName: 'Type',
261
+ comparisonOperator: ReadSelectedComparisonOperator.IEqual,
262
+ valueType: ReadSelectedPropertyType.String,
263
+ value: type,
264
+ })),
265
+ });
266
+ }
267
+ return definition;
268
+ }
269
+ _cancelPendingRequests() {
270
+ if (this._fetchTimeout !== undefined) {
271
+ clearTimeout(this._fetchTimeout);
272
+ this._fetchTimeout = undefined;
273
+ }
274
+ if (this._currentAbortController) {
275
+ try {
276
+ this._currentAbortController.abort();
277
+ }
278
+ catch {
279
+ // Ignore abort errors
280
+ }
281
+ this._currentAbortController = undefined;
282
+ }
283
+ }
284
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1 +1 @@
1
- export * from './CrudMetadataDto';
1
+ export * from './crud-metadata-dto';
@@ -1 +1 @@
1
- export * from './CrudMetadataDto';
1
+ export * from './crud-metadata-dto';
@@ -1,4 +1,4 @@
1
1
  export * from './response';
2
2
  export * from './read';
3
3
  export * from './crud';
4
- export * from './PropertyPathDto';
4
+ export * from './property-path-dto';
@@ -1,4 +1,4 @@
1
1
  export * from './response';
2
2
  export * from './read';
3
3
  export * from './crud';
4
- export * from './PropertyPathDto';
4
+ export * from './property-path-dto';
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Array of properties that when combined form a path to a property.
3
+ */
4
+ export type PropertyPathDto = string[];
@@ -0,0 +1 @@
1
+ export {};
@@ -1,10 +1,10 @@
1
- export * from './ReadMetadataDto';
2
- export * from './ReadSelectedSearchPropertyDefinitionDto';
3
- export * from './ReadSelectedNestedCriteriaDto';
4
- export * from './ReadSelectedNestedCollectionCriteriaDto';
5
- export * from './ReadSelectedOrderingDefinitionDto';
6
- export * from './ReadSelectedOrderingPropertyDefinitionDto';
7
- export * from './ReadSelectedPaginationDefinitionDto';
8
- export * from './ReadSelectedDefinitionDto';
9
- export * from './ReadSelectedSearchDefinitionDto';
10
- export * from './ReadSelectedSearchDefinitionBuilder';
1
+ export * from './read-metadata-dto';
2
+ export * from './read-selected-search-property-definition-dto';
3
+ export * from './read-selected-nested-criteria-dto';
4
+ export * from './read-selected-nested-collection-criteria-dto';
5
+ export * from './read-selected-ordering-definition-dto';
6
+ export * from './read-selected-ordering-property-definition-dto';
7
+ export * from './read-selected-pagination-definition-dto';
8
+ export * from './read-selected-definition-dto';
9
+ export * from './read-selected-search-definition-dto';
10
+ export * from './read-selected-search-definition-builder';
@@ -1,10 +1,10 @@
1
- export * from './ReadMetadataDto';
2
- export * from './ReadSelectedSearchPropertyDefinitionDto';
3
- export * from './ReadSelectedNestedCriteriaDto';
4
- export * from './ReadSelectedNestedCollectionCriteriaDto';
5
- export * from './ReadSelectedOrderingDefinitionDto';
6
- export * from './ReadSelectedOrderingPropertyDefinitionDto';
7
- export * from './ReadSelectedPaginationDefinitionDto';
8
- export * from './ReadSelectedDefinitionDto';
9
- export * from './ReadSelectedSearchDefinitionDto';
10
- export * from './ReadSelectedSearchDefinitionBuilder';
1
+ export * from './read-metadata-dto';
2
+ export * from './read-selected-search-property-definition-dto';
3
+ export * from './read-selected-nested-criteria-dto';
4
+ export * from './read-selected-nested-collection-criteria-dto';
5
+ export * from './read-selected-ordering-definition-dto';
6
+ export * from './read-selected-ordering-property-definition-dto';
7
+ export * from './read-selected-pagination-definition-dto';
8
+ export * from './read-selected-definition-dto';
9
+ export * from './read-selected-search-definition-dto';
10
+ export * from './read-selected-search-definition-builder';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Metadata associated with a read result.
3
+ *
4
+ * @property {number} [totalCount] - The total number of items available.
5
+ */
6
+ export type ReadMetadataDto = {
7
+ totalCount?: number;
8
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,18 @@
1
+ import { ReadSelectedPaginationDefinitionDto, ReadSelectedOrderingDefinitionDto, ReadSelectedSearchDefinitionDto } from '../../..';
2
+ /**
3
+ * Defines the selection criteria for a controller to fetch multiple records
4
+ */
5
+ export type ReadSelectedDefinitionDto<T> = {
6
+ /**
7
+ * Pagination definition
8
+ */
9
+ paginationDefinition?: ReadSelectedPaginationDefinitionDto;
10
+ /**
11
+ * Ordering definition
12
+ */
13
+ orderingDefinition?: ReadSelectedOrderingDefinitionDto;
14
+ /**
15
+ * Search definition (supports both simple search and nested logical groups)
16
+ */
17
+ searchDefinition?: ReadSelectedSearchDefinitionDto<T>;
18
+ };
@@ -0,0 +1,22 @@
1
+ import { ReadSelectedCollectionOperator, ReadSelectedSearchDefinitionDto } from '../../..';
2
+ /**
3
+ * Defines criteria for searching within a collection navigation property using quantifiers (Any/All).
4
+ *
5
+ * This DTO allows navigation into a collection property and applying search criteria
6
+ * with a quantifier to determine if any or all elements match.
7
+ */
8
+ export type ReadSelectedNestedCollectionCriteriaDto<T, TPropertyName extends keyof T> = {
9
+ /**
10
+ * The name of the collection navigation property to navigate into.
11
+ */
12
+ propertyName: TPropertyName;
13
+ /**
14
+ * The quantifier operator determining whether any or all elements must match.
15
+ */
16
+ collectionOperator: ReadSelectedCollectionOperator;
17
+ /**
18
+ * The search criteria to apply to elements in the collection.
19
+ * Type should be ReadSelectedSearchDefinitionDto of the collection element type.
20
+ */
21
+ criteria: ReadSelectedSearchDefinitionDto<unknown>;
22
+ };
@@ -0,0 +1,18 @@
1
+ import { ReadSelectedSearchDefinitionDto } from '../../..';
2
+ /**
3
+ * Defines criteria for searching within a nested object property.
4
+ *
5
+ * This DTO allows navigation into a nested object property and applying search criteria
6
+ * to that nested object. The property name must refer to a navigation property (not a collection).
7
+ */
8
+ export type ReadSelectedNestedCriteriaDto<T, TPropertyName extends keyof T> = {
9
+ /**
10
+ * The name of the navigation property to navigate into.
11
+ */
12
+ propertyName: TPropertyName;
13
+ /**
14
+ * The search criteria to apply to the nested object.
15
+ * Type should be ReadSelectedSearchDefinitionDto of the nested object type.
16
+ */
17
+ criteria: ReadSelectedSearchDefinitionDto<unknown>;
18
+ };
@@ -0,0 +1,7 @@
1
+ import { ReadSelectedOrderingPropertyDefinitionDto } from '../../..';
2
+ /**
3
+ * Represents the ordering definition for a controller.
4
+ */
5
+ export type ReadSelectedOrderingDefinitionDto = {
6
+ order: ReadSelectedOrderingPropertyDefinitionDto[];
7
+ };
@@ -0,0 +1,14 @@
1
+ import { PropertyPathDto, ReadSelectedOrderingDirection } from '../../..';
2
+ /**
3
+ * Defines the ordering property for a controller.
4
+ */
5
+ export type ReadSelectedOrderingPropertyDefinitionDto = {
6
+ /**
7
+ * Gets or sets the property path.
8
+ */
9
+ propertyPath: PropertyPathDto;
10
+ /**
11
+ * Gets or sets the ordering direction.
12
+ */
13
+ direction: ReadSelectedOrderingDirection;
14
+ };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Defines the pagination parameters for a controller.
3
+ */
4
+ export type ReadSelectedPaginationDefinitionDto = {
5
+ /**
6
+ * Pagination offset
7
+ */
8
+ skip: number;
9
+ /**
10
+ * Pagination limit
11
+ */
12
+ limit: number;
13
+ };