@rentman/rm-core 10.0.4 → 10.0.6

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 (130) hide show
  1. package/changelog.md +1397 -1386
  2. package/dist/rm-core.js +996 -959
  3. package/dist/rm-core.min.js +1 -1
  4. package/dist/types/classes/ApiFormatter.d.ts +79 -79
  5. package/dist/types/classes/ApiRequestService.d.ts +18 -18
  6. package/dist/types/classes/ApiResponseProcessor.d.ts +29 -29
  7. package/dist/types/classes/BusinessLogicManager/BusinessLogicManager.d.ts +98 -98
  8. package/dist/types/classes/BusinessLogicManager/BusinessLogicRule.d.ts +94 -94
  9. package/dist/types/classes/BusinessLogicManager/Customfield/CustomFieldTypeBusinessLogicRule.d.ts +18 -18
  10. package/dist/types/classes/BusinessLogicManager/Documents/DocumentTemplateBusinessLogicRule.d.ts +25 -25
  11. package/dist/types/classes/BusinessLogicManager/Exemplaar/ExemplaarAanschafdatumBusinessLogicRule.d.ts +14 -14
  12. package/dist/types/classes/BusinessLogicManager/Factuur/FactuurBetalingsconditieBusinessLogicRule.d.ts +20 -20
  13. package/dist/types/classes/BusinessLogicManager/Factuur/FactuurDatumBusinessLogicRule.d.ts +19 -19
  14. package/dist/types/classes/BusinessLogicManager/Factuur/FactuurNumberseriesBusinessLogicRule.d.ts +14 -14
  15. package/dist/types/classes/BusinessLogicManager/Functie/FunctieNaaminternBusinessLogicRule.d.ts +18 -18
  16. package/dist/types/classes/BusinessLogicManager/Functie/FunctieTwowayBusinessLogicRule.d.ts +14 -14
  17. package/dist/types/classes/BusinessLogicManager/Materiaal/MateriaalTelexemplarenBusinessLogicRule.d.ts +15 -15
  18. package/dist/types/classes/BusinessLogicManager/Materiaal/MateriaalTypeBusinessLogicRule.d.ts +18 -18
  19. package/dist/types/classes/BusinessLogicManager/Materiaal/MateriaalVerhuurBusinessLogicRule.d.ts +18 -18
  20. package/dist/types/classes/BusinessLogicManager/Materiaal/SurfaceArticleSizeBusinessLogicRule.d.ts +19 -19
  21. package/dist/types/classes/BusinessLogicManager/OfferteContract/OfferteContractDatumBusinessLogicRule.d.ts +26 -26
  22. package/dist/types/classes/BusinessLogicManager/PlanningPersoneelTransport/PlanningPersoneelTransportBusinessLogicRule.d.ts +29 -29
  23. package/dist/types/classes/BusinessLogicManager/Project/ProjectClientNoteBusinessLogicRule.d.ts +23 -23
  24. package/dist/types/classes/BusinessLogicManager/Reparatie/ReparatieExemplaarBusinessLogicRule.d.ts +14 -14
  25. package/dist/types/classes/BusinessLogicManager/Rol/RolDocumentAccessBusinessLogicRule.d.ts +18 -18
  26. package/dist/types/classes/BusinessLogicManager/Rol/RolEditOwnDataBusinessLogicRule.d.ts +18 -18
  27. package/dist/types/classes/BusinessLogicManager/Rol/RolFileAccessBusinessLogicRule.d.ts +18 -18
  28. package/dist/types/classes/BusinessLogicManager/Rol/RolPersoneelsplannerToegangBusinessLogicRule.d.ts +18 -18
  29. package/dist/types/classes/BusinessLogicManager/Rol/RolProjectenBewerkenBusinessLogicRule.d.ts +18 -18
  30. package/dist/types/classes/BusinessLogicManager/Rol/RolProjectenToegangBusinessLogicRule.d.ts +18 -18
  31. package/dist/types/classes/CacheSyncer.d.ts +70 -70
  32. package/dist/types/classes/ChangesCompilation.d.ts +33 -33
  33. package/dist/types/classes/ChangesDelta.d.ts +65 -62
  34. package/dist/types/classes/ChangesDeltaBase.d.ts +79 -79
  35. package/dist/types/classes/ChangesProcessor.d.ts +40 -40
  36. package/dist/types/classes/CollectionEntryService.d.ts +24 -24
  37. package/dist/types/classes/CollectionResourceService.d.ts +6 -6
  38. package/dist/types/classes/ColumnCache.d.ts +19 -19
  39. package/dist/types/classes/ColumnExpansion.d.ts +19 -19
  40. package/dist/types/classes/ColumnHandler.d.ts +20 -20
  41. package/dist/types/classes/ColumnInfo.d.ts +15 -15
  42. package/dist/types/classes/ColumnSet.d.ts +37 -37
  43. package/dist/types/classes/ColumnSubsetCache.d.ts +14 -14
  44. package/dist/types/classes/ColumnUtil.d.ts +108 -108
  45. package/dist/types/classes/ConversionMapService.d.ts +25 -25
  46. package/dist/types/classes/CreateRequest.d.ts +17 -17
  47. package/dist/types/classes/CreatedChangesDelta.d.ts +17 -17
  48. package/dist/types/classes/InternalChangesDelta.d.ts +44 -44
  49. package/dist/types/classes/ItemCache.d.ts +27 -27
  50. package/dist/types/classes/ItemCreateService.d.ts +18 -18
  51. package/dist/types/classes/ItemEntryService.d.ts +32 -32
  52. package/dist/types/classes/KeyService.d.ts +18 -18
  53. package/dist/types/classes/LockService.d.ts +28 -29
  54. package/dist/types/classes/ModuleChangesCompilation.d.ts +18 -18
  55. package/dist/types/classes/ParentChangesDelta.d.ts +41 -39
  56. package/dist/types/classes/QueryColumnExtractor.d.ts +18 -18
  57. package/dist/types/classes/QueryContainsLocalIdParser.d.ts +17 -17
  58. package/dist/types/classes/QueryLinkedToParser.d.ts +17 -17
  59. package/dist/types/classes/QueryLocallyMatchableParser.d.ts +20 -20
  60. package/dist/types/classes/QueryMatcher.d.ts +24 -24
  61. package/dist/types/classes/QueryParser.d.ts +25 -25
  62. package/dist/types/classes/QueryParserBase.d.ts +20 -20
  63. package/dist/types/classes/QueryParserIdUpdater.d.ts +17 -17
  64. package/dist/types/classes/QueryService.d.ts +12 -12
  65. package/dist/types/classes/RequestBuffer.d.ts +24 -24
  66. package/dist/types/classes/RequestBufferManager.d.ts +32 -32
  67. package/dist/types/classes/RequestColumnExpansion.d.ts +15 -15
  68. package/dist/types/classes/SocketMessageHandler.d.ts +34 -34
  69. package/dist/types/classes/TemplateCache.d.ts +62 -62
  70. package/dist/types/classes/Util.d.ts +28 -28
  71. package/dist/types/classes/cache/AbstractCache.d.ts +86 -86
  72. package/dist/types/classes/cache/CachedQueryHandlerBase.d.ts +68 -68
  73. package/dist/types/classes/cache/ItemHandlerBase.d.ts +102 -102
  74. package/dist/types/classes/cache/server/ServerCache.d.ts +78 -78
  75. package/dist/types/classes/cache/server/ServerCachedQueryHandler.d.ts +25 -25
  76. package/dist/types/classes/cache/server/ServerItemHandler.d.ts +43 -43
  77. package/dist/types/classes/cache/transaction/TransactionCache.d.ts +318 -318
  78. package/dist/types/classes/cache/transaction/TransactionCachedQueryHandler.d.ts +37 -37
  79. package/dist/types/classes/cache/transaction/TransactionCollectionHandler.d.ts +24 -24
  80. package/dist/types/classes/cache/transaction/TransactionEventHandler.d.ts +21 -21
  81. package/dist/types/classes/cache/transaction/TransactionItemHandler.d.ts +90 -90
  82. package/dist/types/classes/cache/transaction/TransactionValidator.d.ts +33 -33
  83. package/dist/types/constants.d.ts +7 -7
  84. package/dist/types/core.d.ts +48 -48
  85. package/dist/types/factories/ApiResponseProcessorFactory.d.ts +6 -6
  86. package/dist/types/factories/CacheSyncerFactory.d.ts +10 -10
  87. package/dist/types/factories/ChangesCompilationFactory.d.ts +5 -5
  88. package/dist/types/factories/ChangesDeltaFactory.d.ts +13 -13
  89. package/dist/types/factories/ChangesProcessorFactory.d.ts +13 -13
  90. package/dist/types/factories/CollectionEntryFactory.d.ts +11 -11
  91. package/dist/types/factories/CollectionResourceFactory.d.ts +18 -18
  92. package/dist/types/factories/ColumnExpansionFactory.d.ts +7 -7
  93. package/dist/types/factories/ColumnInfoFactory.d.ts +7 -7
  94. package/dist/types/factories/ColumnSetFactory.d.ts +18 -18
  95. package/dist/types/factories/ColumnSubsetCacheFactory.d.ts +8 -8
  96. package/dist/types/factories/CreateRequestFactory.d.ts +9 -9
  97. package/dist/types/factories/ItemCacheFactory.d.ts +6 -6
  98. package/dist/types/factories/ItemEntryFactory.d.ts +12 -12
  99. package/dist/types/factories/ItemResourceFactory.d.ts +11 -11
  100. package/dist/types/factories/ModuleChangesCompilationFactory.d.ts +4 -4
  101. package/dist/types/factories/QueryMatcherFactory.d.ts +7 -7
  102. package/dist/types/factories/QueryParserFactory.d.ts +5 -5
  103. package/dist/types/factories/RequestColumnExpansionFactory.d.ts +8 -8
  104. package/dist/types/factories/TemplateFactory.d.ts +8 -8
  105. package/dist/types/factories/TransactionCacheFactory.d.ts +13 -13
  106. package/dist/types/index.d.ts +1 -1
  107. package/dist/types/interfaces/AbstractCacheDependencyInterface.d.ts +38 -38
  108. package/dist/types/interfaces/ApiRequestServiceInterface.d.ts +12 -12
  109. package/dist/types/interfaces/AuthInterface.d.ts +10 -10
  110. package/dist/types/interfaces/ErrorHandlerInterface.d.ts +6 -6
  111. package/dist/types/interfaces/ExceptionHandlerInterface.d.ts +3 -3
  112. package/dist/types/interfaces/LinkTreeServiceInterface.d.ts +4 -4
  113. package/dist/types/interfaces/PromiseLibraryInterface.d.ts +33 -33
  114. package/dist/types/interfaces/ServerCacheDependencyInterface.d.ts +5 -5
  115. package/dist/types/interfaces/SocketMessageInterface.d.ts +3 -3
  116. package/dist/types/interfaces/TransactionCollectionHandlerDependencyInterface.d.ts +17 -17
  117. package/dist/types/interfaces/TransactionItemHandlerDependencyInterface.d.ts +22 -22
  118. package/dist/types/internal.d.ts +128 -128
  119. package/dist/types/models/CachedQueryItem.d.ts +19 -19
  120. package/dist/types/models/CollectionEntry.d.ts +21 -21
  121. package/dist/types/models/CollectionOptions.d.ts +44 -44
  122. package/dist/types/models/CollectionResource.d.ts +87 -87
  123. package/dist/types/models/ItemEntry.d.ts +18 -18
  124. package/dist/types/models/ItemEntryOptions.d.ts +8 -8
  125. package/dist/types/models/ItemResource.d.ts +90 -90
  126. package/dist/types/models/Template.d.ts +11 -11
  127. package/dist/types/types/ItemTypesCollection.d.ts +345 -345
  128. package/dist/types/types/PromiseInterface.d.ts +2 -2
  129. package/package.json +50 -50
  130. package/readme.md +16 -16
@@ -1,15 +1,15 @@
1
- import { ApiEnumItemType, GetColumnType } from '@rentman/backend-types';
2
- import { ItemTypeColumnId } from '..';
3
- export declare class ColumnInfo<ItemTypeType extends ApiEnumItemType = any, ColumnId extends ItemTypeColumnId<ItemTypeType> = any> {
4
- readonly apiColumn: GetColumnType<ItemTypeType, ColumnId>;
5
- readonly parent: ColumnInfo | null;
6
- id: ColumnId;
7
- level: number;
8
- path: string;
9
- tailPath: string;
10
- itemType: ItemTypeType | null;
11
- children: ColumnInfo<ItemTypeType>[];
12
- isLeaf: boolean;
13
- constructor(apiColumn: GetColumnType<ItemTypeType, ColumnId>, parent?: ColumnInfo | null);
14
- setChildren(itemType: ItemTypeType, children: ColumnInfo<ItemTypeType>[]): this;
15
- }
1
+ import { ApiEnumItemType, GetColumnType } from '@rentman/backend-types';
2
+ import { ItemTypeColumnId } from '..';
3
+ export declare class ColumnInfo<ItemTypeType extends ApiEnumItemType = any, ColumnId extends ItemTypeColumnId<ItemTypeType> = any> {
4
+ readonly apiColumn: GetColumnType<ItemTypeType, ColumnId>;
5
+ readonly parent: ColumnInfo | null;
6
+ id: ColumnId;
7
+ level: number;
8
+ path: string;
9
+ tailPath: string;
10
+ itemType: ItemTypeType | null;
11
+ children: ColumnInfo<ItemTypeType>[];
12
+ isLeaf: boolean;
13
+ constructor(apiColumn: GetColumnType<ItemTypeType, ColumnId>, parent?: ColumnInfo | null);
14
+ setChildren(itemType: ItemTypeType, children: ColumnInfo<ItemTypeType>[]): this;
15
+ }
@@ -1,37 +1,37 @@
1
- import { ApiEnumItemType } from '@rentman/backend-types';
2
- import { ApiRequestColumns, ColumnExpansionResult, ColumnInfo, ColumnSetFactory, ColumnUtil, RequestColumnMergeResult, ResponseColumnItemTypeMap } from '../internal';
3
- export declare class ColumnSet<ItemTypeType extends ApiEnumItemType = any> {
4
- private columnUtil;
5
- private columnSetFactory;
6
- itemType: ItemTypeType;
7
- id: number;
8
- request: ApiRequestColumns;
9
- requestColumnsTrue: boolean;
10
- response: ResponseColumnItemTypeMap;
11
- link: ColumnInfo<ItemTypeType> | null;
12
- main: ColumnInfo<ItemTypeType>[];
13
- derived: ColumnInfo<ItemTypeType>[];
14
- root: ColumnInfo<ItemTypeType>[];
15
- leaf: ColumnInfo<ItemTypeType>[];
16
- formatted: {
17
- main: ColumnInfo<ItemTypeType>[];
18
- derived: ColumnInfo<ItemTypeType>[];
19
- };
20
- filtered: ColumnInfo<ItemTypeType>[];
21
- custom: ColumnInfo<ItemTypeType>[];
22
- searchable: ColumnInfo<ItemTypeType>[];
23
- item: ColumnInfo<ItemTypeType>[];
24
- notItem: ColumnInfo<ItemTypeType>[];
25
- constructor(columnUtil: ColumnUtil, columnSetFactory: ColumnSetFactory, itemType: ItemTypeType);
26
- groupColumnInfo(columnInfo: ColumnInfo): void;
27
- toJSON(): {
28
- main: any[];
29
- derived: any[];
30
- };
31
- isSupersetOf(columnsToCompare: ApiRequestColumns): boolean;
32
- mergeRequestColumns(requestColumns: ApiRequestColumns): RequestColumnMergeResult;
33
- mergeResponseColumns(responseColumns: ResponseColumnItemTypeMap): ResponseColumnItemTypeMap;
34
- merge(columnSet: ColumnSet<ItemTypeType>): ColumnSet<ItemTypeType>;
35
- expand(requestColumns: ApiRequestColumns, requestColumnsTrue: boolean, responseColumns: ResponseColumnItemTypeMap): ColumnExpansionResult<ItemTypeType>;
36
- private getMergedColumnSet;
37
- }
1
+ import { ApiEnumItemType } from '@rentman/backend-types';
2
+ import { ApiRequestColumns, ColumnExpansionResult, ColumnInfo, ColumnSetFactory, ColumnUtil, RequestColumnMergeResult, ResponseColumnItemTypeMap } from '../internal';
3
+ export declare class ColumnSet<ItemTypeType extends ApiEnumItemType = any> {
4
+ private columnUtil;
5
+ private columnSetFactory;
6
+ itemType: ItemTypeType;
7
+ id: number;
8
+ request: ApiRequestColumns;
9
+ requestColumnsTrue: boolean;
10
+ response: ResponseColumnItemTypeMap;
11
+ link: ColumnInfo<ItemTypeType> | null;
12
+ main: ColumnInfo<ItemTypeType>[];
13
+ derived: ColumnInfo<ItemTypeType>[];
14
+ root: ColumnInfo<ItemTypeType>[];
15
+ leaf: ColumnInfo<ItemTypeType>[];
16
+ formatted: {
17
+ main: ColumnInfo<ItemTypeType>[];
18
+ derived: ColumnInfo<ItemTypeType>[];
19
+ };
20
+ filtered: ColumnInfo<ItemTypeType>[];
21
+ custom: ColumnInfo<ItemTypeType>[];
22
+ searchable: ColumnInfo<ItemTypeType>[];
23
+ item: ColumnInfo<ItemTypeType>[];
24
+ notItem: ColumnInfo<ItemTypeType>[];
25
+ constructor(columnUtil: ColumnUtil, columnSetFactory: ColumnSetFactory, itemType: ItemTypeType);
26
+ groupColumnInfo(columnInfo: ColumnInfo): void;
27
+ toJSON(): {
28
+ main: any[];
29
+ derived: any[];
30
+ };
31
+ isSupersetOf(columnsToCompare: ApiRequestColumns): boolean;
32
+ mergeRequestColumns(requestColumns: ApiRequestColumns): RequestColumnMergeResult;
33
+ mergeResponseColumns(responseColumns: ResponseColumnItemTypeMap): ResponseColumnItemTypeMap;
34
+ merge(columnSet: ColumnSet<ItemTypeType>): ColumnSet<ItemTypeType>;
35
+ expand(requestColumns: ApiRequestColumns, requestColumnsTrue: boolean, responseColumns: ResponseColumnItemTypeMap): ColumnExpansionResult<ItemTypeType>;
36
+ private getMergedColumnSet;
37
+ }
@@ -1,14 +1,14 @@
1
- import { ApiEnumItemType } from '@rentman/backend-types';
2
- import { ApiRequestColumn, ApiRequestColumns, ColumnCache, ColumnSet, ColumnUtil } from '../internal';
3
- export declare class ColumnSubsetCache<ItemTypeType extends ApiEnumItemType> {
4
- private columnUtil;
5
- private columnCache;
6
- itemType: ItemTypeType;
7
- requestColumns: ApiRequestColumns;
8
- aggregateColumns: ApiRequestColumn[];
9
- private cache;
10
- constructor(columnUtil: ColumnUtil, columnCache: ColumnCache, itemType: ItemTypeType, requestColumns: ApiRequestColumns);
11
- run(columnSet: ColumnSet<ItemTypeType>): boolean;
12
- runWithRequestColumns(cachedRequestColumns: ApiRequestColumns): boolean;
13
- private extractAggregateColumns;
14
- }
1
+ import { ApiEnumItemType } from '@rentman/backend-types';
2
+ import { ApiRequestColumn, ApiRequestColumns, ColumnCache, ColumnSet, ColumnUtil } from '../internal';
3
+ export declare class ColumnSubsetCache<ItemTypeType extends ApiEnumItemType> {
4
+ private columnUtil;
5
+ private columnCache;
6
+ itemType: ItemTypeType;
7
+ requestColumns: ApiRequestColumns;
8
+ aggregateColumns: ApiRequestColumn[];
9
+ private cache;
10
+ constructor(columnUtil: ColumnUtil, columnCache: ColumnCache, itemType: ItemTypeType, requestColumns: ApiRequestColumns);
11
+ run(columnSet: ColumnSet<ItemTypeType>): boolean;
12
+ runWithRequestColumns(cachedRequestColumns: ApiRequestColumns): boolean;
13
+ private extractAggregateColumns;
14
+ }
@@ -1,108 +1,108 @@
1
- import { ApiEnumApiType, ApiEnumItemType, ApiFields, ResponseColumn, ResponseColumnCustom, ResponseColumnItem } from '@rentman/backend-types';
2
- import { ApiRequestColumn, ApiRequestColumns, LinkTreeServiceInterface, ResponseColumnItemTypeMap, ResponseColumnMap } from '../internal';
3
- export declare type RequestColumnMergeResult<T extends ApiRequestColumns = ApiRequestColumns, U extends ApiRequestColumns = ApiRequestColumns> = {
4
- merged: T;
5
- difference: U;
6
- };
7
- /**
8
- * @description
9
- * A service which provides functions to help on {@link ResponseColumn ResponseColumns}
10
- *
11
- * @warning
12
- * The code in these functions can be *very hot* on large databases, therefore performance must be kept in mind.
13
- * This is also the reason why all column types are written out instead of using the enum
14
- */
15
- export declare class ColumnUtil {
16
- private linkTreeService;
17
- constructor(linkTreeService: LinkTreeServiceInterface);
18
- getColumnIdsWithRelations(itemType: ApiEnumItemType): ApiRequestColumn[];
19
- /**
20
- * @description
21
- * Checks the {@link ApiLinkTree LinkTree} and returns the link columnIds for the given ItemType
22
- *
23
- * @remark
24
- * - For {@link ApiLinkTreeType.DIRECT direct links} it will be a columnId
25
- * - For {@link ApiLinkTreeType.ITEMTABLE itemtable links} it will be 'itemtype' and 'item'
26
- */
27
- getColumnsFromLink(parentType: ApiEnumItemType, itemType: ApiEnumItemType): ApiRequestColumn[];
28
- getColumnPath(columns: ResponseColumn[], renderAs: null | string): string;
29
- getDateFormatOptions(columnType?: 'datetime'): {
30
- 'J-M-Y': string;
31
- 'J-M': string;
32
- 'j+F+Y': string;
33
- 'D+j+F+Y': string;
34
- F: string;
35
- f: string;
36
- D: string;
37
- d: string;
38
- };
39
- isStringColumn(column: ResponseColumn): boolean;
40
- isFloatColumn(column: ResponseColumn): boolean;
41
- isIntColumn(column: ResponseColumn): boolean;
42
- isNumberColumn(column: ResponseColumn): boolean;
43
- isCustomColumn<ItemTypeType extends ApiEnumItemType, ColumnId extends keyof ApiFields[ItemTypeType]>(column: ResponseColumn<ItemTypeType, ColumnId>): column is ResponseColumnCustom<ItemTypeType, ColumnId>;
44
- isAggregateColumn(column: ResponseColumn): boolean;
45
- isItemColumn<ItemTypeType extends ApiEnumItemType, ColumnId extends keyof ApiFields[ItemTypeType]>(column: ResponseColumn<ItemTypeType, ColumnId>, includeId?: boolean): column is ResponseColumnItem<ItemTypeType, ColumnId>;
46
- isDateColumn(column: ResponseColumn): boolean;
47
- isRenderedColumn(column: ResponseColumn): boolean;
48
- isFilteredColumn(column: ResponseColumn): boolean;
49
- isFormattedColumn(column: ResponseColumn): boolean;
50
- isSelectableColumn(column: ResponseColumn): boolean;
51
- hasLocationProperty(column: ResponseColumn, location: number): boolean;
52
- isEditableColumn(column: ResponseColumn): boolean;
53
- isSearchableColumn(column: ResponseColumn): boolean;
54
- getComparators(column: ResponseColumn & {
55
- type: ApiEnumApiType.TYPE_DIMENSION | ApiEnumApiType.TYPE_WEIGHT | ApiEnumApiType.TYPE_PRICE;
56
- }): ['=', '>', '<'];
57
- getComparators(column: ResponseColumn & {
58
- type: ApiEnumApiType.TYPE_DATE | ApiEnumApiType.TYPE_DATETIME | ApiEnumApiType.TYPE_DURATION;
59
- }): ['>', '<'];
60
- getComparators(column: ResponseColumn): ['=', '!='];
61
- containsColumn(requestColumn: ApiRequestColumn, destination: ApiRequestColumn[]): boolean;
62
- containsDerivedColumns(requestColumns: ApiRequestColumn[]): boolean;
63
- responseColumnsAvailable(itemType: ApiEnumItemType, requestColumns: ApiRequestColumn[], responseColumnMap: ResponseColumnItemTypeMap): boolean;
64
- copyRequestColumns(columns: true): true;
65
- copyRequestColumns(columns: ApiRequestColumn[]): ApiRequestColumn[];
66
- copyRequestColumn(requestColumn: ApiRequestColumn): ApiRequestColumn;
67
- mergeRequestColumns(first: true, second: ApiRequestColumns): RequestColumnMergeResult<true, []>;
68
- mergeRequestColumns(first: ApiRequestColumn[], second: true): RequestColumnMergeResult<true, true>;
69
- mergeRequestColumns(first: ApiRequestColumn[], second: ApiRequestColumn[]): RequestColumnMergeResult<ApiRequestColumn[], ApiRequestColumn[]>;
70
- mergeRequestColumns(first: ApiRequestColumns, second: ApiRequestColumns): RequestColumnMergeResult;
71
- mergeRequestColumn(requestColumn: ApiRequestColumn, destination: ApiRequestColumn[]): string | {
72
- [columnId: string]: ApiRequestColumn[];
73
- } | null;
74
- getRequestColumnId(requestColumn: ApiRequestColumn): string;
75
- parseRequestColumn(requestColumn: ApiRequestColumn): {
76
- id: string;
77
- children: ApiRequestColumn[];
78
- };
79
- /**
80
- * @description
81
- * Merges two sets of {@link ResponseColumnItemTypeMap ResponseColumnItemTypeMaps}.
82
- *
83
- * @returns
84
- * - Merged: The merged set of columns
85
- * - Difference: Columns that are in second, but not in first
86
- */
87
- mergeResponseColumns(first: ResponseColumnItemTypeMap, second: ResponseColumnItemTypeMap): {
88
- merged: ResponseColumnItemTypeMap;
89
- difference: ResponseColumnItemTypeMap;
90
- };
91
- /**
92
- * @description
93
- * Merges two sets of {@link ResponseColumnMap response columns}.
94
- *
95
- * @returns
96
- * - Merged: The merged set of columns
97
- * - Difference: Columns that are in second, but not in first
98
- */
99
- mergeResponseColumnMap(first: ResponseColumnMap, second: ResponseColumnMap): {
100
- merged: ResponseColumnMap;
101
- difference: ResponseColumnMap;
102
- };
103
- isLocalColumnId(columnId: string): boolean;
104
- processConfigColumns(configColumns: string[]): ApiRequestColumn[];
105
- parseConfigColumn(configColumn: string): string[];
106
- processConfigColumn(parsedConfigColumn: string[], destination: ApiRequestColumn[]): void;
107
- findRequestColumn(columnId: string, requestColumns: ApiRequestColumn[]): number;
108
- }
1
+ import { ApiEnumApiType, ApiEnumItemType, ApiFields, ResponseColumn, ResponseColumnCustom, ResponseColumnItem } from '@rentman/backend-types';
2
+ import { ApiRequestColumn, ApiRequestColumns, LinkTreeServiceInterface, ResponseColumnItemTypeMap, ResponseColumnMap } from '../internal';
3
+ export declare type RequestColumnMergeResult<T extends ApiRequestColumns = ApiRequestColumns, U extends ApiRequestColumns = ApiRequestColumns> = {
4
+ merged: T;
5
+ difference: U;
6
+ };
7
+ /**
8
+ * @description
9
+ * A service which provides functions to help on {@link ResponseColumn ResponseColumns}
10
+ *
11
+ * @warning
12
+ * The code in these functions can be *very hot* on large databases, therefore performance must be kept in mind.
13
+ * This is also the reason why all column types are written out instead of using the enum
14
+ */
15
+ export declare class ColumnUtil {
16
+ private linkTreeService;
17
+ constructor(linkTreeService: LinkTreeServiceInterface);
18
+ getColumnIdsWithRelations(itemType: ApiEnumItemType): ApiRequestColumn[];
19
+ /**
20
+ * @description
21
+ * Checks the {@link ApiLinkTree LinkTree} and returns the link columnIds for the given ItemType
22
+ *
23
+ * @remark
24
+ * - For {@link ApiLinkTreeType.DIRECT direct links} it will be a columnId
25
+ * - For {@link ApiLinkTreeType.ITEMTABLE itemtable links} it will be 'itemtype' and 'item'
26
+ */
27
+ getColumnsFromLink(parentType: ApiEnumItemType, itemType: ApiEnumItemType): ApiRequestColumn[];
28
+ getColumnPath(columns: ResponseColumn[], renderAs: null | string): string;
29
+ getDateFormatOptions(columnType?: 'datetime'): {
30
+ 'J-M-Y': string;
31
+ 'J-M': string;
32
+ 'j+F+Y': string;
33
+ 'D+j+F+Y': string;
34
+ F: string;
35
+ f: string;
36
+ D: string;
37
+ d: string;
38
+ };
39
+ isStringColumn(column: ResponseColumn): boolean;
40
+ isFloatColumn(column: ResponseColumn): boolean;
41
+ isIntColumn(column: ResponseColumn): boolean;
42
+ isNumberColumn(column: ResponseColumn): boolean;
43
+ isCustomColumn<ItemTypeType extends ApiEnumItemType, ColumnId extends keyof ApiFields[ItemTypeType]>(column: ResponseColumn<ItemTypeType, ColumnId>): column is ResponseColumnCustom<ItemTypeType, ColumnId>;
44
+ isAggregateColumn(column: ResponseColumn): boolean;
45
+ isItemColumn<ItemTypeType extends ApiEnumItemType, ColumnId extends keyof ApiFields[ItemTypeType]>(column: ResponseColumn<ItemTypeType, ColumnId>, includeId?: boolean): column is ResponseColumnItem<ItemTypeType, ColumnId>;
46
+ isDateColumn(column: ResponseColumn): boolean;
47
+ isRenderedColumn(column: ResponseColumn): boolean;
48
+ isFilteredColumn(column: ResponseColumn): boolean;
49
+ isFormattedColumn(column: ResponseColumn): boolean;
50
+ isSelectableColumn(column: ResponseColumn): boolean;
51
+ hasLocationProperty(column: ResponseColumn, location: number): boolean;
52
+ isEditableColumn(column: ResponseColumn): boolean;
53
+ isSearchableColumn(column: ResponseColumn): boolean;
54
+ getComparators(column: ResponseColumn & {
55
+ type: ApiEnumApiType.TYPE_DIMENSION | ApiEnumApiType.TYPE_WEIGHT | ApiEnumApiType.TYPE_PRICE;
56
+ }): ['=', '>', '<'];
57
+ getComparators(column: ResponseColumn & {
58
+ type: ApiEnumApiType.TYPE_DATE | ApiEnumApiType.TYPE_DATETIME | ApiEnumApiType.TYPE_DURATION;
59
+ }): ['>', '<'];
60
+ getComparators(column: ResponseColumn): ['=', '!='];
61
+ containsColumn(requestColumn: ApiRequestColumn, destination: ApiRequestColumn[]): boolean;
62
+ containsDerivedColumns(requestColumns: ApiRequestColumn[]): boolean;
63
+ responseColumnsAvailable(itemType: ApiEnumItemType, requestColumns: ApiRequestColumn[], responseColumnMap: ResponseColumnItemTypeMap): boolean;
64
+ copyRequestColumns(columns: true): true;
65
+ copyRequestColumns(columns: ApiRequestColumn[]): ApiRequestColumn[];
66
+ copyRequestColumn(requestColumn: ApiRequestColumn): ApiRequestColumn;
67
+ mergeRequestColumns(first: true, second: ApiRequestColumns): RequestColumnMergeResult<true, []>;
68
+ mergeRequestColumns(first: ApiRequestColumn[], second: true): RequestColumnMergeResult<true, true>;
69
+ mergeRequestColumns(first: ApiRequestColumn[], second: ApiRequestColumn[]): RequestColumnMergeResult<ApiRequestColumn[], ApiRequestColumn[]>;
70
+ mergeRequestColumns(first: ApiRequestColumns, second: ApiRequestColumns): RequestColumnMergeResult;
71
+ mergeRequestColumn(requestColumn: ApiRequestColumn, destination: ApiRequestColumn[]): string | {
72
+ [columnId: string]: ApiRequestColumn[];
73
+ } | null;
74
+ getRequestColumnId(requestColumn: ApiRequestColumn): string;
75
+ parseRequestColumn(requestColumn: ApiRequestColumn): {
76
+ id: string;
77
+ children: ApiRequestColumn[];
78
+ };
79
+ /**
80
+ * @description
81
+ * Merges two sets of {@link ResponseColumnItemTypeMap ResponseColumnItemTypeMaps}.
82
+ *
83
+ * @returns
84
+ * - Merged: The merged set of columns
85
+ * - Difference: Columns that are in second, but not in first
86
+ */
87
+ mergeResponseColumns(first: ResponseColumnItemTypeMap, second: ResponseColumnItemTypeMap): {
88
+ merged: ResponseColumnItemTypeMap;
89
+ difference: ResponseColumnItemTypeMap;
90
+ };
91
+ /**
92
+ * @description
93
+ * Merges two sets of {@link ResponseColumnMap response columns}.
94
+ *
95
+ * @returns
96
+ * - Merged: The merged set of columns
97
+ * - Difference: Columns that are in second, but not in first
98
+ */
99
+ mergeResponseColumnMap(first: ResponseColumnMap, second: ResponseColumnMap): {
100
+ merged: ResponseColumnMap;
101
+ difference: ResponseColumnMap;
102
+ };
103
+ isLocalColumnId(columnId: string): boolean;
104
+ processConfigColumns(configColumns: string[]): ApiRequestColumn[];
105
+ parseConfigColumn(configColumn: string): string[];
106
+ processConfigColumn(parsedConfigColumn: string[], destination: ApiRequestColumn[]): void;
107
+ findRequestColumn(columnId: string, requestColumns: ApiRequestColumn[]): number;
108
+ }
@@ -1,25 +1,25 @@
1
- import { ApiEnumItemType, ItemId } from '@rentman/backend-types';
2
- import { ApiResponse, ColumnInfo, EntryParentNull, FieldMap, ItemEntry, ItemIdConversionMap, KeyService } from '../internal';
3
- /**
4
- * @description A 'ConversionMap' is used to update a set of item IDs to another. This happens when processing back-end
5
- * responses (create / template) or cloning items in the front-end. A conversion map is grouped by item type, as item
6
- * ID's are not unique across types.
7
- *
8
- * TODO: In the future, we should create a class and a 'ConversionMapFactory'.
9
- */
10
- export declare class ConversionMapService {
11
- private keyService;
12
- constructor(keyService: KeyService);
13
- createLocalConversionMap(itemType: ApiEnumItemType, itemId: ItemId, doExtend: boolean | undefined, apiResponse: ApiResponse): ItemIdConversionMap;
14
- expandLocalConversionMap(parentType: ApiEnumItemType, parentId: ItemId, apiResponse: ApiResponse, conversionMap: ItemIdConversionMap): void;
15
- expandConversionMap(itemType: ApiEnumItemType, itemId: ItemId, conversionMap: ItemIdConversionMap, newItemId?: ItemId): ItemId;
16
- batchExpandConversionMap(itemEntries: ItemEntry<any>[], conversionMap: ItemIdConversionMap): ItemIdConversionMap;
17
- getConversionValue(itemType: ApiEnumItemType, itemId: ItemId, map: ItemIdConversionMap): ItemId | undefined;
18
- /**
19
- * @description
20
- * Updates the columns in `fields` using the `parent` and `conversionMap`.
21
- *
22
- * @param parent - When retrieving an item the 'link' column is not present in the template response, and is added at a later stage. The value for this column can be read from this parameter.
23
- */
24
- updateItemValues<ItemTypeType extends ApiEnumItemType>(source: FieldMap<ItemTypeType>, destination: FieldMap<ItemTypeType>, itemColumns: ColumnInfo<ItemTypeType>[], conversionMap: ItemIdConversionMap, parent?: EntryParentNull): void;
25
- }
1
+ import { ApiEnumItemType, ItemId } from '@rentman/backend-types';
2
+ import { ApiResponse, ColumnInfo, EntryParentNull, FieldMap, ItemEntry, ItemIdConversionMap, KeyService } from '../internal';
3
+ /**
4
+ * @description A 'ConversionMap' is used to update a set of item IDs to another. This happens when processing back-end
5
+ * responses (create / template) or cloning items in the front-end. A conversion map is grouped by item type, as item
6
+ * ID's are not unique across types.
7
+ *
8
+ * TODO: In the future, we should create a class and a 'ConversionMapFactory'.
9
+ */
10
+ export declare class ConversionMapService {
11
+ private keyService;
12
+ constructor(keyService: KeyService);
13
+ createLocalConversionMap(itemType: ApiEnumItemType, itemId: ItemId, doExtend: boolean | undefined, apiResponse: ApiResponse): ItemIdConversionMap;
14
+ expandLocalConversionMap(parentType: ApiEnumItemType, parentId: ItemId, apiResponse: ApiResponse, conversionMap: ItemIdConversionMap): void;
15
+ expandConversionMap(itemType: ApiEnumItemType, itemId: ItemId, conversionMap: ItemIdConversionMap, newItemId?: ItemId): ItemId;
16
+ batchExpandConversionMap(itemEntries: ItemEntry<any>[], conversionMap: ItemIdConversionMap): ItemIdConversionMap;
17
+ getConversionValue(itemType: ApiEnumItemType, itemId: ItemId, map: ItemIdConversionMap): ItemId | undefined;
18
+ /**
19
+ * @description
20
+ * Updates the columns in `fields` using the `parent` and `conversionMap`.
21
+ *
22
+ * @param parent - When retrieving an item the 'link' column is not present in the template response, and is added at a later stage. The value for this column can be read from this parameter.
23
+ */
24
+ updateItemValues<ItemTypeType extends ApiEnumItemType>(source: FieldMap<ItemTypeType>, destination: FieldMap<ItemTypeType>, itemColumns: ColumnInfo<ItemTypeType>[], conversionMap: ItemIdConversionMap, parent?: EntryParentNull): void;
25
+ }
@@ -1,17 +1,17 @@
1
- import { ApiEnumItemType } from '@rentman/backend-types';
2
- import { ApiFormatter, CreateCompilation, CreateRequestCompilationParent, CreateRequestEntry, KeyService, RequestColumnExpansionFactory, TransactionCache } from '../internal';
3
- export declare class CreateRequest<ItemTypeType extends ApiEnumItemType> {
4
- private apiFormatter;
5
- private keyService;
6
- private requestColumnExpansionFactory;
7
- private compilation;
8
- private transaction;
9
- private breakupByParent;
10
- requests: CreateRequestEntry<ItemTypeType>[];
11
- constructor(apiFormatter: ApiFormatter, keyService: KeyService, requestColumnExpansionFactory: RequestColumnExpansionFactory, compilation: CreateCompilation, transaction: TransactionCache, breakupByParent?: boolean);
12
- finalizeRequest(requestResource: CreateRequestEntry<ItemTypeType>): CreateRequestEntry<ItemTypeType>;
13
- setRequestParent(parentType: CreateRequestCompilationParent, requestEntry: CreateRequestEntry<ItemTypeType>): boolean;
14
- run(): CreateRequestEntry<ItemTypeType>[];
15
- initializeRequest(): CreateRequestEntry<ItemTypeType>;
16
- private extendRequest;
17
- }
1
+ import { ApiEnumItemType } from '@rentman/backend-types';
2
+ import { ApiFormatter, CreateCompilation, CreateRequestCompilationParent, CreateRequestEntry, KeyService, RequestColumnExpansionFactory, TransactionCache } from '../internal';
3
+ export declare class CreateRequest<ItemTypeType extends ApiEnumItemType> {
4
+ private apiFormatter;
5
+ private keyService;
6
+ private requestColumnExpansionFactory;
7
+ private compilation;
8
+ private transaction;
9
+ private breakupByParent;
10
+ requests: CreateRequestEntry<ItemTypeType>[];
11
+ constructor(apiFormatter: ApiFormatter, keyService: KeyService, requestColumnExpansionFactory: RequestColumnExpansionFactory, compilation: CreateCompilation, transaction: TransactionCache, breakupByParent?: boolean);
12
+ finalizeRequest(requestResource: CreateRequestEntry<ItemTypeType>): CreateRequestEntry<ItemTypeType>;
13
+ setRequestParent(parentType: CreateRequestCompilationParent, requestEntry: CreateRequestEntry<ItemTypeType>): boolean;
14
+ run(): CreateRequestEntry<ItemTypeType>[];
15
+ initializeRequest(): CreateRequestEntry<ItemTypeType>;
16
+ private extendRequest;
17
+ }
@@ -1,17 +1,17 @@
1
- import { ApiEnumItemType, ItemId } from '@rentman/backend-types';
2
- import { ColumnSet, FieldMap } from '../internal';
3
- export declare type ChangesDeltaItemCreateDelta<ItemTypeType extends ApiEnumItemType = any> = {
4
- itemId: ItemId;
5
- fields: FieldMap<ItemTypeType>;
6
- columns: ColumnSet<ItemTypeType>;
7
- isRoot: boolean;
8
- };
9
- export declare class CreatedChangesDelta {
10
- private tuples;
11
- constructor();
12
- remove(itemType: ApiEnumItemType, itemId: ItemId): boolean;
13
- add<ItemTypeType extends ApiEnumItemType>(itemId: ItemId, fields: FieldMap<ItemTypeType>, columns: ColumnSet<ItemTypeType>, isRoot?: boolean): void;
14
- isEmpty(): boolean;
15
- forEach(callback: (tuple: ChangesDeltaItemCreateDelta, itemType: ApiEnumItemType, index: number) => void): void;
16
- contains(itemType: ApiEnumItemType): boolean;
17
- }
1
+ import { ApiEnumItemType, ItemId } from '@rentman/backend-types';
2
+ import { ColumnSet, FieldMap } from '../internal';
3
+ export declare type ChangesDeltaItemCreateDelta<ItemTypeType extends ApiEnumItemType = any> = {
4
+ itemId: ItemId;
5
+ fields: FieldMap<ItemTypeType>;
6
+ columns: ColumnSet<ItemTypeType>;
7
+ isRoot: boolean;
8
+ };
9
+ export declare class CreatedChangesDelta {
10
+ private tuples;
11
+ constructor();
12
+ remove(itemType: ApiEnumItemType, itemId: ItemId): boolean;
13
+ add<ItemTypeType extends ApiEnumItemType>(itemId: ItemId, fields: FieldMap<ItemTypeType>, columns: ColumnSet<ItemTypeType>, isRoot?: boolean): void;
14
+ isEmpty(): boolean;
15
+ forEach(callback: (tuple: ChangesDeltaItemCreateDelta, itemType: ApiEnumItemType, index: number) => void): void;
16
+ contains(itemType: ApiEnumItemType): boolean;
17
+ }
@@ -1,44 +1,44 @@
1
- import { ApiEnumItemType } from '@rentman/backend-types';
2
- import { ApiFormatter, ChangesDeltaBase, EntryParent, FieldMap, ItemEntry, ItemEntryService, ItemIdConversionMap, TransactionItemEntryChangesTuple } from '../internal';
3
- export declare type InternalCreateDelta<ItemTypeType extends ApiEnumItemType = any> = {
4
- entry: ItemEntry<ItemTypeType>;
5
- fields: FieldMap<ItemTypeType>;
6
- };
7
- /**
8
- * @description
9
- * ChangesDelta used internally by the core
10
- *
11
- * ----------
12
- *
13
- * The difference between {@link InternalChangesDelta InternalChangesDelta} and {@link ChangesDelta ChangesDelta} is that the InternalChangesDelta
14
- * assumes 'created' entries are already existing, so it has a different format.
15
- *
16
- * Use this when calling {@link TransactionCache.applyChangesFromChild applyChangesFromChild}
17
- */
18
- export declare class InternalChangesDelta extends ChangesDeltaBase {
19
- created: {
20
- [itemEntryId: string]: InternalCreateDelta;
21
- };
22
- deleted: {
23
- [itemType: string]: TransactionItemEntryChangesTuple<any>[];
24
- };
25
- moved: {
26
- [itemEntryId: number]: {
27
- entry: ItemEntry;
28
- to: EntryParent;
29
- };
30
- };
31
- itemIdConversionMap: ItemIdConversionMap;
32
- constructor(itemEntryService: ItemEntryService, apiFormatter: ApiFormatter);
33
- merge(otherChangesDelta: InternalChangesDelta): InternalChangesDelta;
34
- setItemDeleted(tuple: TransactionItemEntryChangesTuple<any>): this;
35
- setItemsDeleted(deleted: TransactionItemEntryChangesTuple<any>[]): this;
36
- setItemCreated<ItemTypeType extends ApiEnumItemType>(itemEntry: ItemEntry<ItemTypeType>, fields: FieldMap<ItemTypeType>): void;
37
- /**
38
- * @remark
39
- * Parent fields are non-writable so we need to keep track of moved entries another way (to do a linkTo request)
40
- */
41
- setItemMoved(entry: ItemEntry, to: EntryParent): void;
42
- isEmpty(): boolean;
43
- private itemIsDeleted;
44
- }
1
+ import { ApiEnumItemType } from '@rentman/backend-types';
2
+ import { ApiFormatter, ChangesDeltaBase, EntryParent, FieldMap, ItemEntry, ItemEntryService, ItemIdConversionMap, TransactionItemEntryChangesTuple } from '../internal';
3
+ export declare type InternalCreateDelta<ItemTypeType extends ApiEnumItemType = any> = {
4
+ entry: ItemEntry<ItemTypeType>;
5
+ fields: FieldMap<ItemTypeType>;
6
+ };
7
+ /**
8
+ * @description
9
+ * ChangesDelta used internally by the core
10
+ *
11
+ * ----------
12
+ *
13
+ * The difference between {@link InternalChangesDelta InternalChangesDelta} and {@link ChangesDelta ChangesDelta} is that the InternalChangesDelta
14
+ * assumes 'created' entries are already existing, so it has a different format.
15
+ *
16
+ * Use this when calling {@link TransactionCache.applyChangesFromChild applyChangesFromChild}
17
+ */
18
+ export declare class InternalChangesDelta extends ChangesDeltaBase {
19
+ created: {
20
+ [itemEntryId: string]: InternalCreateDelta;
21
+ };
22
+ deleted: {
23
+ [itemType: string]: TransactionItemEntryChangesTuple<any>[];
24
+ };
25
+ moved: {
26
+ [itemEntryId: number]: {
27
+ entry: ItemEntry;
28
+ to: EntryParent;
29
+ };
30
+ };
31
+ itemIdConversionMap: ItemIdConversionMap;
32
+ constructor(itemEntryService: ItemEntryService, apiFormatter: ApiFormatter);
33
+ merge(otherChangesDelta: InternalChangesDelta): InternalChangesDelta;
34
+ setItemDeleted(tuple: TransactionItemEntryChangesTuple<any>): this;
35
+ setItemsDeleted(deleted: TransactionItemEntryChangesTuple<any>[]): this;
36
+ setItemCreated<ItemTypeType extends ApiEnumItemType>(itemEntry: ItemEntry<ItemTypeType>, fields: FieldMap<ItemTypeType>): void;
37
+ /**
38
+ * @remark
39
+ * Parent fields are non-writable so we need to keep track of moved entries another way (to do a linkTo request)
40
+ */
41
+ setItemMoved(entry: ItemEntry, to: EntryParent): void;
42
+ isEmpty(): boolean;
43
+ private itemIsDeleted;
44
+ }
@@ -1,27 +1,27 @@
1
- import { ApiEnumItemType, ItemId } from '@rentman/backend-types';
2
- import { AbstractCache, CollectionQuery, ItemEntry, ItemEntryParentIdMap, QueryMatcherFactory } from '../internal';
3
- export declare class ItemCache {
4
- private queryMatcherFactory;
5
- private transaction;
6
- private entries;
7
- entriesByEntryId: {
8
- [itemEntryId: number]: ItemEntry;
9
- };
10
- constructor(queryMatcherFactory: QueryMatcherFactory, transaction: AbstractCache);
11
- getByEntryId(itemEntryId: ItemEntry['id']): ItemEntry | undefined;
12
- some(callback: (itemEntry: ItemEntry) => boolean): boolean;
13
- getByItemType<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType): ItemEntry<ItemTypeType>[];
14
- getByQuery<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, query: CollectionQuery['object']): ItemEntry<ItemTypeType>[];
15
- getLocalByQuery<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, query: CollectionQuery['object']): ItemEntry<ItemTypeType>[];
16
- getByParent<ItemTypeType extends ApiEnumItemType>(parentType: ApiEnumItemType, parentId: ItemId, itemType: ItemTypeType): ItemEntry<ItemTypeType>[];
17
- batchGetLocalByParent<ItemTypeType extends ApiEnumItemType>(parentType: ApiEnumItemType, parentIds: ItemId[], itemType: ItemTypeType, additionalQuery: CollectionQuery['object']): ItemEntryParentIdMap<ItemTypeType>;
18
- forEach(callback: (itemEntry: ItemEntry) => void): void;
19
- toArray(): ItemEntry[];
20
- add<ItemTypeType extends ApiEnumItemType>(itemEntry: ItemEntry<ItemTypeType>): ItemEntry<ItemTypeType>;
21
- get<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, itemId: string | ItemId): undefined | ItemEntry<ItemTypeType>;
22
- contains(itemType: ApiEnumItemType, itemId: string | ItemId): boolean;
23
- updateItemId<T extends ItemEntry<any>>(itemEntry: T, oldItemId: string | ItemId): T;
24
- clear(itemEntry?: ItemEntry<any>): boolean;
25
- clearByItemId(itemType: ApiEnumItemType, itemId: ItemId): boolean;
26
- matchQuery(itemEntry: ItemEntry, query: CollectionQuery['object']): boolean;
27
- }
1
+ import { ApiEnumItemType, ItemId } from '@rentman/backend-types';
2
+ import { AbstractCache, CollectionQuery, ItemEntry, ItemEntryParentIdMap, QueryMatcherFactory } from '../internal';
3
+ export declare class ItemCache {
4
+ private queryMatcherFactory;
5
+ private transaction;
6
+ private entries;
7
+ entriesByEntryId: {
8
+ [itemEntryId: number]: ItemEntry;
9
+ };
10
+ constructor(queryMatcherFactory: QueryMatcherFactory, transaction: AbstractCache);
11
+ getByEntryId(itemEntryId: ItemEntry['id']): ItemEntry | undefined;
12
+ some(callback: (itemEntry: ItemEntry) => boolean): boolean;
13
+ getByItemType<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType): ItemEntry<ItemTypeType>[];
14
+ getByQuery<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, query: CollectionQuery['object']): ItemEntry<ItemTypeType>[];
15
+ getLocalByQuery<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, query: CollectionQuery['object']): ItemEntry<ItemTypeType>[];
16
+ getByParent<ItemTypeType extends ApiEnumItemType>(parentType: ApiEnumItemType, parentId: ItemId, itemType: ItemTypeType): ItemEntry<ItemTypeType>[];
17
+ batchGetLocalByParent<ItemTypeType extends ApiEnumItemType>(parentType: ApiEnumItemType, parentIds: ItemId[], itemType: ItemTypeType, additionalQuery: CollectionQuery['object']): ItemEntryParentIdMap<ItemTypeType>;
18
+ forEach(callback: (itemEntry: ItemEntry) => void): void;
19
+ toArray(): ItemEntry[];
20
+ add<ItemTypeType extends ApiEnumItemType>(itemEntry: ItemEntry<ItemTypeType>): ItemEntry<ItemTypeType>;
21
+ get<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, itemId: string | ItemId): undefined | ItemEntry<ItemTypeType>;
22
+ contains(itemType: ApiEnumItemType, itemId: string | ItemId): boolean;
23
+ updateItemId<T extends ItemEntry<any>>(itemEntry: T, oldItemId: string | ItemId): T;
24
+ clear(itemEntry?: ItemEntry<any>): boolean;
25
+ clearByItemId(itemType: ApiEnumItemType, itemId: ItemId): boolean;
26
+ matchQuery(itemEntry: ItemEntry, query: CollectionQuery['object']): boolean;
27
+ }