@rentman/rm-core 8.1.7 → 8.1.8-dev1

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 (115) hide show
  1. package/changelog.md +923 -917
  2. package/dist/rm-core.js +18307 -11023
  3. package/dist/rm-core.min.js +1 -16
  4. package/dist/types/classes/ApiFormatter.d.ts +73 -66
  5. package/dist/types/classes/ApiRequestService.d.ts +18 -21
  6. package/dist/types/classes/ApiResponseProcessor.d.ts +29 -30
  7. package/dist/types/classes/CacheSyncer.d.ts +36 -0
  8. package/dist/types/classes/ChangesCompilation.d.ts +33 -36
  9. package/dist/types/classes/ChangesDelta.d.ts +61 -68
  10. package/dist/types/classes/ChangesDeltaBase.d.ts +76 -79
  11. package/dist/types/classes/ChangesProcessor.d.ts +40 -45
  12. package/dist/types/classes/CollectionEntryService.d.ts +23 -27
  13. package/dist/types/classes/CollectionResourceService.d.ts +6 -7
  14. package/dist/types/classes/ColumnCache.d.ts +21 -22
  15. package/dist/types/classes/ColumnExpansion.d.ts +21 -23
  16. package/dist/types/classes/ColumnHandler.d.ts +20 -22
  17. package/dist/types/classes/ColumnInfo.d.ts +14 -14
  18. package/dist/types/classes/ColumnSet.d.ts +37 -39
  19. package/dist/types/classes/ColumnSubsetCache.d.ts +14 -15
  20. package/dist/types/classes/ColumnUtil.d.ts +100 -101
  21. package/dist/types/classes/ConversionMapService.d.ts +25 -28
  22. package/dist/types/classes/CreateRequest.d.ts +17 -20
  23. package/dist/types/classes/CreatedChangesDelta.d.ts +17 -18
  24. package/dist/types/classes/InternalChangesDelta.d.ts +47 -51
  25. package/dist/types/classes/ItemCache.d.ts +27 -30
  26. package/dist/types/classes/ItemCreateService.d.ts +18 -25
  27. package/dist/types/classes/ItemEntryService.d.ts +32 -35
  28. package/dist/types/classes/KeyService.d.ts +18 -18
  29. package/dist/types/classes/LockService.d.ts +29 -32
  30. package/dist/types/classes/ModuleChangesCompilation.d.ts +18 -19
  31. package/dist/types/classes/ParentChangesDelta.d.ts +39 -47
  32. package/dist/types/classes/QueryColumnExtractor.d.ts +18 -20
  33. package/dist/types/classes/QueryContainsLocalIdParser.d.ts +15 -17
  34. package/dist/types/classes/QueryLinkedToParser.d.ts +15 -16
  35. package/dist/types/classes/QueryLocallyMatchableParser.d.ts +18 -19
  36. package/dist/types/classes/QueryMatcher.d.ts +18 -19
  37. package/dist/types/classes/QueryParser.d.ts +25 -26
  38. package/dist/types/classes/QueryParserBase.d.ts +20 -20
  39. package/dist/types/classes/QueryParserIdUpdater.d.ts +15 -16
  40. package/dist/types/classes/QueryService.d.ts +12 -13
  41. package/dist/types/classes/RequestBuffer.d.ts +24 -29
  42. package/dist/types/classes/RequestBufferManager.d.ts +20 -26
  43. package/dist/types/classes/RequestColumnExpansion.d.ts +15 -16
  44. package/dist/types/classes/SocketMessageHandler.d.ts +34 -43
  45. package/dist/types/classes/TemplateCache.d.ts +63 -70
  46. package/dist/types/classes/Util.d.ts +28 -31
  47. package/dist/types/classes/cache/AbstractCache.d.ts +95 -112
  48. package/dist/types/classes/cache/CachedQueryHandlerBase.d.ts +68 -75
  49. package/dist/types/classes/cache/ItemHandlerBase.d.ts +95 -106
  50. package/dist/types/classes/cache/server/ServerCache.d.ts +82 -94
  51. package/dist/types/classes/cache/server/ServerCachedQueryHandler.d.ts +25 -34
  52. package/dist/types/classes/cache/server/ServerItemHandler.d.ts +44 -53
  53. package/dist/types/classes/cache/transaction/TransactionCache.d.ts +319 -327
  54. package/dist/types/classes/cache/transaction/TransactionCachedQueryHandler.d.ts +31 -30
  55. package/dist/types/classes/cache/transaction/TransactionCollectionHandler.d.ts +24 -30
  56. package/dist/types/classes/cache/transaction/TransactionEventHandler.d.ts +21 -24
  57. package/dist/types/classes/cache/transaction/TransactionItemHandler.d.ts +89 -97
  58. package/dist/types/classes/cache/transaction/TransactionValidator.d.ts +33 -35
  59. package/dist/types/constants.d.ts +7 -7
  60. package/dist/types/core.d.ts +45 -51
  61. package/dist/types/factories/ApiResponseProcessorFactory.d.ts +6 -6
  62. package/dist/types/factories/CacheSyncerFactory.d.ts +10 -0
  63. package/dist/types/factories/ChangesCompilationFactory.d.ts +5 -6
  64. package/dist/types/factories/ChangesDeltaFactory.d.ts +13 -15
  65. package/dist/types/factories/ChangesProcessorFactory.d.ts +13 -19
  66. package/dist/types/factories/CollectionEntryFactory.d.ts +11 -14
  67. package/dist/types/factories/CollectionResourceFactory.d.ts +18 -22
  68. package/dist/types/factories/ColumnExpansionFactory.d.ts +7 -9
  69. package/dist/types/factories/ColumnInfoFactory.d.ts +7 -8
  70. package/dist/types/factories/ColumnSetFactory.d.ts +18 -20
  71. package/dist/types/factories/ColumnSubsetCacheFactory.d.ts +8 -9
  72. package/dist/types/factories/CreateRequestFactory.d.ts +9 -11
  73. package/dist/types/factories/ItemCacheFactory.d.ts +6 -8
  74. package/dist/types/factories/ItemEntryFactory.d.ts +12 -15
  75. package/dist/types/factories/ItemResourceFactory.d.ts +11 -14
  76. package/dist/types/factories/ModuleChangesCompilationFactory.d.ts +4 -5
  77. package/dist/types/factories/QueryMatcherFactory.d.ts +7 -8
  78. package/dist/types/factories/QueryParserFactory.d.ts +5 -6
  79. package/dist/types/factories/RequestColumnExpansionFactory.d.ts +8 -9
  80. package/dist/types/factories/TemplateFactory.d.ts +8 -11
  81. package/dist/types/factories/TransactionCacheFactory.d.ts +13 -15
  82. package/dist/types/index.d.ts +1 -7
  83. package/dist/types/interfaces/AbstractCacheDependencyInterface.d.ts +36 -43
  84. package/dist/types/interfaces/ApiRequestServiceInterface.d.ts +12 -12
  85. package/dist/types/interfaces/AuthInterface.d.ts +10 -10
  86. package/dist/types/interfaces/ErrorHandlerInterface.d.ts +5 -5
  87. package/dist/types/interfaces/ExceptionHandlerInterface.d.ts +3 -3
  88. package/dist/types/interfaces/LinkTreeServiceInterface.d.ts +4 -4
  89. package/dist/types/interfaces/PromiseLibraryInterface.d.ts +25 -25
  90. package/dist/types/interfaces/ServerCacheDependencyInterface.d.ts +5 -7
  91. package/dist/types/interfaces/SocketMessageInterface.d.ts +3 -3
  92. package/dist/types/interfaces/TransactionCollectionHandlerDependencyInterface.d.ts +17 -21
  93. package/dist/types/interfaces/TransactionItemHandlerDependencyInterface.d.ts +22 -27
  94. package/dist/types/internal.d.ts +104 -0
  95. package/dist/types/models/CachedQueryItem.d.ts +19 -0
  96. package/dist/types/models/CollectionEntry.d.ts +21 -24
  97. package/dist/types/models/CollectionOptions.d.ts +42 -24
  98. package/dist/types/models/CollectionResource.d.ts +87 -78
  99. package/dist/types/models/ItemEntry.d.ts +18 -19
  100. package/dist/types/models/ItemEntryOptions.d.ts +8 -8
  101. package/dist/types/models/ItemResource.d.ts +90 -88
  102. package/dist/types/models/Template.d.ts +11 -13
  103. package/dist/types/types/ItemTypesCollection.d.ts +343 -345
  104. package/dist/types/types/PromiseInterface.d.ts +2 -2
  105. package/package.json +48 -38
  106. package/readme.md +15 -15
  107. package/dist/types/classes/CollectionMatcherBase.d.ts +0 -22
  108. package/dist/types/classes/CollectionMatcherCachedCollectionProcessor.d.ts +0 -32
  109. package/dist/types/classes/cache/CollectionMatcherCachedQueryProcessor.d.ts +0 -36
  110. package/dist/types/classes/index.d.ts +0 -46
  111. package/dist/types/factories/CollectionMatcherFactory.d.ts +0 -19
  112. package/dist/types/factories/index.d.ts +0 -21
  113. package/dist/types/interfaces/index.d.ts +0 -11
  114. package/dist/types/models/index.d.ts +0 -7
  115. package/dist/types/types/index.d.ts +0 -2
@@ -1,101 +1,100 @@
1
- import { ApiEnumApiType, ApiEnumItemType, ApiFields, ResponseColumn, ResponseColumnCustom, ResponseColumnItem } from '@rentman/backend-types';
2
- import { LinkTreeServiceInterface } from '../interfaces/LinkTreeServiceInterface';
3
- import { ApiRequestColumn, ApiRequestColumns, ResponseColumnItemTypeMap, ResponseColumnMap } from '../types';
4
- export declare type RequestColumnMergeResult<T extends ApiRequestColumns = ApiRequestColumns, U extends ApiRequestColumns = ApiRequestColumns> = {
5
- merged: T;
6
- difference: U;
7
- };
8
- export declare class ColumnUtil {
9
- private linkTreeService;
10
- constructor(linkTreeService: LinkTreeServiceInterface);
11
- /**
12
- * @description
13
- * Checks the {@link ApiLinkTree LinkTree} and returns the link columnIds for the given ItemType
14
- *
15
- * @remark
16
- * - For {@link ApiLinkTreeType.DIRECT direct links} it will be a columnId
17
- * - For {@link ApiLinkTreeType.ITEMTABLE itemtable links} it will be 'itemtype' and 'item'
18
- */
19
- getColumnsFromLink(parentType: ApiEnumItemType, itemType: ApiEnumItemType): ApiRequestColumn[];
20
- getColumnPath(columns: ResponseColumn[], renderAs: null | string): string;
21
- getDateFormatOptions(columnType?: 'datetime'): {
22
- 'J-M-Y': string;
23
- 'J-M': string;
24
- 'j+F+Y': string;
25
- 'D+j+F+Y': string;
26
- F: string;
27
- f: string;
28
- D: string;
29
- d: string;
30
- };
31
- isStringColumn(column: ResponseColumn): boolean;
32
- isFloatColumn(column: ResponseColumn): boolean;
33
- isIntColumn(column: ResponseColumn): boolean;
34
- isNumberColumn(column: ResponseColumn): boolean;
35
- isCustomColumn<ItemTypeType extends ApiEnumItemType, ColumnId extends keyof ApiFields[ItemTypeType]>(column: ResponseColumn<ItemTypeType, ColumnId>): column is ResponseColumnCustom<ItemTypeType, ColumnId>;
36
- isAggregateColumn(column: ResponseColumn): boolean;
37
- isItemColumn<ItemTypeType extends ApiEnumItemType, ColumnId extends keyof ApiFields[ItemTypeType]>(column: ResponseColumn<ItemTypeType, ColumnId>, includeId?: boolean): column is ResponseColumnItem<ItemTypeType, ColumnId>;
38
- isDateColumn(column: ResponseColumn): boolean;
39
- isRenderedColumn(column: ResponseColumn): boolean;
40
- isFilteredColumn(column: ResponseColumn): boolean;
41
- isFormattedColumn(column: ResponseColumn): boolean;
42
- isSelectableColumn(column: ResponseColumn): boolean;
43
- hasLocationProperty(column: ResponseColumn, location: number): boolean;
44
- isEditableColumn(column: ResponseColumn): boolean;
45
- isSearchableColumn(column: ResponseColumn): boolean;
46
- getDefaultWeight(column: ResponseColumn): number;
47
- getComparators(column: ResponseColumn & {
48
- type: ApiEnumApiType.TYPE_DIMENSION | ApiEnumApiType.TYPE_WEIGHT | ApiEnumApiType.TYPE_PRICE;
49
- }): ['=', '>', '<'];
50
- getComparators(column: ResponseColumn & {
51
- type: ApiEnumApiType.TYPE_DATE | ApiEnumApiType.TYPE_DATETIME | ApiEnumApiType.TYPE_DURATION;
52
- }): ['>', '<'];
53
- getComparators(column: ResponseColumn): ['=', '!='];
54
- containsColumn(requestColumn: ApiRequestColumn, destination: ApiRequestColumn[]): boolean;
55
- containsDerivedColumns(requestColumns: ApiRequestColumn[]): boolean;
56
- responseColumnsAvailable(itemType: ApiEnumItemType, requestColumns: ApiRequestColumn[], responseColumnMap: ResponseColumnItemTypeMap): boolean;
57
- copyRequestColumns(columns: true): true;
58
- copyRequestColumns(columns: ApiRequestColumn[]): ApiRequestColumn[];
59
- copyRequestColumn(requestColumn: ApiRequestColumn): ApiRequestColumn;
60
- mergeRequestColumns(first: true, second: ApiRequestColumns): RequestColumnMergeResult<true, []>;
61
- mergeRequestColumns(first: ApiRequestColumn[], second: true): RequestColumnMergeResult<true, true>;
62
- mergeRequestColumns(first: ApiRequestColumn[], second: ApiRequestColumn[]): RequestColumnMergeResult<ApiRequestColumn[], ApiRequestColumn[]>;
63
- mergeRequestColumns(first: ApiRequestColumns, second: ApiRequestColumns): RequestColumnMergeResult;
64
- mergeRequestColumn(requestColumn: ApiRequestColumn, destination: ApiRequestColumn[]): string | {
65
- [columnId: string]: ApiRequestColumn[];
66
- } | null;
67
- getRequestColumnId(requestColumn: ApiRequestColumn): string;
68
- parseRequestColumn(requestColumn: ApiRequestColumn): {
69
- id: string;
70
- children: ApiRequestColumn[];
71
- };
72
- /**
73
- * @description
74
- * Merges two sets of {@link ResponseColumnItemTypeMap ResponseColumnItemTypeMaps}.
75
- *
76
- * @returns
77
- * - Merged: The merged set of columns
78
- * - Difference: Columns that are in second, but not in first
79
- */
80
- mergeResponseColumns(first: ResponseColumnItemTypeMap, second: ResponseColumnItemTypeMap): {
81
- merged: ResponseColumnItemTypeMap;
82
- difference: ResponseColumnItemTypeMap;
83
- };
84
- /**
85
- * @description
86
- * Merges two sets of {@link ResponseColumnMap response columns}.
87
- *
88
- * @returns
89
- * - Merged: The merged set of columns
90
- * - Difference: Columns that are in second, but not in first
91
- */
92
- mergeResponseColumnMap(first: ResponseColumnMap, second: ResponseColumnMap): {
93
- merged: ResponseColumnMap;
94
- difference: ResponseColumnMap;
95
- };
96
- isLocalColumnId(columnId: string): boolean;
97
- processConfigColumns(configColumns: string[]): ApiRequestColumn[];
98
- parseConfigColumn(configColumn: string): string[];
99
- processConfigColumn(parsedConfigColumn: string[], destination: ApiRequestColumn[]): void;
100
- findRequestColumn(columnId: string, requestColumns: ApiRequestColumn[]): number;
101
- }
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
+ export declare class ColumnUtil {
8
+ private linkTreeService;
9
+ constructor(linkTreeService: LinkTreeServiceInterface);
10
+ /**
11
+ * @description
12
+ * Checks the {@link ApiLinkTree LinkTree} and returns the link columnIds for the given ItemType
13
+ *
14
+ * @remark
15
+ * - For {@link ApiLinkTreeType.DIRECT direct links} it will be a columnId
16
+ * - For {@link ApiLinkTreeType.ITEMTABLE itemtable links} it will be 'itemtype' and 'item'
17
+ */
18
+ getColumnsFromLink(parentType: ApiEnumItemType, itemType: ApiEnumItemType): ApiRequestColumn[];
19
+ getColumnPath(columns: ResponseColumn[], renderAs: null | string): string;
20
+ getDateFormatOptions(columnType?: 'datetime'): {
21
+ 'J-M-Y': string;
22
+ 'J-M': string;
23
+ 'j+F+Y': string;
24
+ 'D+j+F+Y': string;
25
+ F: string;
26
+ f: string;
27
+ D: string;
28
+ d: string;
29
+ };
30
+ isStringColumn(column: ResponseColumn): boolean;
31
+ isFloatColumn(column: ResponseColumn): boolean;
32
+ isIntColumn(column: ResponseColumn): boolean;
33
+ isNumberColumn(column: ResponseColumn): boolean;
34
+ isCustomColumn<ItemTypeType extends ApiEnumItemType, ColumnId extends keyof ApiFields[ItemTypeType]>(column: ResponseColumn<ItemTypeType, ColumnId>): column is ResponseColumnCustom<ItemTypeType, ColumnId>;
35
+ isAggregateColumn(column: ResponseColumn): boolean;
36
+ isItemColumn<ItemTypeType extends ApiEnumItemType, ColumnId extends keyof ApiFields[ItemTypeType]>(column: ResponseColumn<ItemTypeType, ColumnId>, includeId?: boolean): column is ResponseColumnItem<ItemTypeType, ColumnId>;
37
+ isDateColumn(column: ResponseColumn): boolean;
38
+ isRenderedColumn(column: ResponseColumn): boolean;
39
+ isFilteredColumn(column: ResponseColumn): boolean;
40
+ isFormattedColumn(column: ResponseColumn): boolean;
41
+ isSelectableColumn(column: ResponseColumn): boolean;
42
+ hasLocationProperty(column: ResponseColumn, location: number): boolean;
43
+ isEditableColumn(column: ResponseColumn): boolean;
44
+ isSearchableColumn(column: ResponseColumn): boolean;
45
+ getDefaultWeight(column: ResponseColumn): number;
46
+ getComparators(column: ResponseColumn & {
47
+ type: ApiEnumApiType.TYPE_DIMENSION | ApiEnumApiType.TYPE_WEIGHT | ApiEnumApiType.TYPE_PRICE;
48
+ }): ['=', '>', '<'];
49
+ getComparators(column: ResponseColumn & {
50
+ type: ApiEnumApiType.TYPE_DATE | ApiEnumApiType.TYPE_DATETIME | ApiEnumApiType.TYPE_DURATION;
51
+ }): ['>', '<'];
52
+ getComparators(column: ResponseColumn): ['=', '!='];
53
+ containsColumn(requestColumn: ApiRequestColumn, destination: ApiRequestColumn[]): boolean;
54
+ containsDerivedColumns(requestColumns: ApiRequestColumn[]): boolean;
55
+ responseColumnsAvailable(itemType: ApiEnumItemType, requestColumns: ApiRequestColumn[], responseColumnMap: ResponseColumnItemTypeMap): boolean;
56
+ copyRequestColumns(columns: true): true;
57
+ copyRequestColumns(columns: ApiRequestColumn[]): ApiRequestColumn[];
58
+ copyRequestColumn(requestColumn: ApiRequestColumn): ApiRequestColumn;
59
+ mergeRequestColumns(first: true, second: ApiRequestColumns): RequestColumnMergeResult<true, []>;
60
+ mergeRequestColumns(first: ApiRequestColumn[], second: true): RequestColumnMergeResult<true, true>;
61
+ mergeRequestColumns(first: ApiRequestColumn[], second: ApiRequestColumn[]): RequestColumnMergeResult<ApiRequestColumn[], ApiRequestColumn[]>;
62
+ mergeRequestColumns(first: ApiRequestColumns, second: ApiRequestColumns): RequestColumnMergeResult;
63
+ mergeRequestColumn(requestColumn: ApiRequestColumn, destination: ApiRequestColumn[]): string | {
64
+ [columnId: string]: ApiRequestColumn[];
65
+ } | null;
66
+ getRequestColumnId(requestColumn: ApiRequestColumn): string;
67
+ parseRequestColumn(requestColumn: ApiRequestColumn): {
68
+ id: string;
69
+ children: ApiRequestColumn[];
70
+ };
71
+ /**
72
+ * @description
73
+ * Merges two sets of {@link ResponseColumnItemTypeMap ResponseColumnItemTypeMaps}.
74
+ *
75
+ * @returns
76
+ * - Merged: The merged set of columns
77
+ * - Difference: Columns that are in second, but not in first
78
+ */
79
+ mergeResponseColumns(first: ResponseColumnItemTypeMap, second: ResponseColumnItemTypeMap): {
80
+ merged: ResponseColumnItemTypeMap;
81
+ difference: ResponseColumnItemTypeMap;
82
+ };
83
+ /**
84
+ * @description
85
+ * Merges two sets of {@link ResponseColumnMap response columns}.
86
+ *
87
+ * @returns
88
+ * - Merged: The merged set of columns
89
+ * - Difference: Columns that are in second, but not in first
90
+ */
91
+ mergeResponseColumnMap(first: ResponseColumnMap, second: ResponseColumnMap): {
92
+ merged: ResponseColumnMap;
93
+ difference: ResponseColumnMap;
94
+ };
95
+ isLocalColumnId(columnId: string): boolean;
96
+ processConfigColumns(configColumns: string[]): ApiRequestColumn[];
97
+ parseConfigColumn(configColumn: string): string[];
98
+ processConfigColumn(parsedConfigColumn: string[], destination: ApiRequestColumn[]): void;
99
+ findRequestColumn(columnId: string, requestColumns: ApiRequestColumn[]): number;
100
+ }
@@ -1,28 +1,25 @@
1
- import { ApiEnumItemType, ItemId } from '@rentman/backend-types';
2
- import { ItemEntry } from '../models';
3
- import { ApiResponse, EntryParentNull, FieldMap, ItemIdConversionMap } from '../types';
4
- import { ColumnInfo } from './ColumnInfo';
5
- import { KeyService } from './KeyService';
6
- /**
7
- * @description A 'ConversionMap' is used to update a set of item IDs to another. This happens when processing back-end
8
- * responses (create / template) or cloning items in the front-end. A conversion map is grouped by item type, as item
9
- * ID's are not unique across types.
10
- *
11
- * TODO: In the future, we should create a class and a 'ConversionMapFactory'.
12
- */
13
- export declare class ConversionMapService {
14
- private keyService;
15
- constructor(keyService: KeyService);
16
- createLocalConversionMap(itemType: ApiEnumItemType, itemId: ItemId, doExtend: boolean | undefined, apiResponse: ApiResponse): ItemIdConversionMap;
17
- expandLocalConversionMap(parentType: ApiEnumItemType, parentId: ItemId, apiResponse: ApiResponse, conversionMap: ItemIdConversionMap): void;
18
- expandConversionMap(itemType: ApiEnumItemType, itemId: ItemId, conversionMap: ItemIdConversionMap, newItemId?: ItemId): ItemId;
19
- batchExpandConversionMap(itemEntries: Array<ItemEntry<any>>, conversionMap: ItemIdConversionMap): ItemIdConversionMap;
20
- getConversionValue(itemType: ApiEnumItemType, itemId: ItemId, map: ItemIdConversionMap): ItemId | undefined;
21
- /**
22
- * @description
23
- * Updates the columns in `fields` using the `parent` and `conversionMap`.
24
- * @param parent - When retrieving an item the 'link' column is not present in the template response, and is
25
- * added at a later stage. The value for this column can be read from this parameter.
26
- */
27
- updateItemValues<ItemTypeType extends ApiEnumItemType>(source: FieldMap<ItemTypeType>, destination: FieldMap<ItemTypeType>, itemColumns: Array<ColumnInfo<ItemTypeType>>, conversionMap: ItemIdConversionMap, parent?: EntryParentNull): void;
28
- }
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: Array<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
+ * @param parent - When retrieving an item the 'link' column is not present in the template response, and is
22
+ * 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: Array<ColumnInfo<ItemTypeType>>, conversionMap: ItemIdConversionMap, parent?: EntryParentNull): void;
25
+ }
@@ -1,20 +1,17 @@
1
- import { ApiEnumItemType } from '@rentman/backend-types';
2
- import { ApiFormatter, CreateCompilation, CreateRequestCompilationParent, KeyService } from '../classes';
3
- import { RequestColumnExpansionFactory } from '../factories';
4
- import { CreateRequestEntry } from '../types';
5
- import { TransactionCache } from './cache/transaction/TransactionCache';
6
- export declare class CreateRequest<ItemTypeType extends ApiEnumItemType> {
7
- private apiFormatter;
8
- private keyService;
9
- private requestColumnExpansionFactory;
10
- private compilation;
11
- private transaction;
12
- private breakupByParent;
13
- requests: Array<CreateRequestEntry<ItemTypeType>>;
14
- constructor(apiFormatter: ApiFormatter, keyService: KeyService, requestColumnExpansionFactory: RequestColumnExpansionFactory, compilation: CreateCompilation, transaction: TransactionCache, breakupByParent?: boolean);
15
- finalizeRequest(requestResource: CreateRequestEntry<ItemTypeType>): CreateRequestEntry<ItemTypeType>;
16
- setRequestParent(parentType: CreateRequestCompilationParent, requestEntry: CreateRequestEntry<ItemTypeType>): boolean;
17
- run(): CreateRequestEntry<ItemTypeType>[];
18
- initializeRequest(): CreateRequestEntry<ItemTypeType>;
19
- private extendRequest;
20
- }
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: Array<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,18 +1,17 @@
1
- import { ApiEnumItemType, ItemId } from '@rentman/backend-types';
2
- import { FieldMap } from '../types';
3
- import { ColumnSet } from './ColumnSet';
4
- export declare type ChangesDeltaItemCreateDelta<ItemTypeType extends ApiEnumItemType = any> = {
5
- itemId: ItemId;
6
- fields: FieldMap<ItemTypeType>;
7
- columns: ColumnSet<ItemTypeType>;
8
- isRoot: boolean;
9
- };
10
- export declare class CreatedChangesDelta {
11
- private tuples;
12
- constructor();
13
- remove(itemType: ApiEnumItemType, itemId: ItemId): boolean;
14
- add<ItemTypeType extends ApiEnumItemType>(itemId: ItemId, fields: FieldMap<ItemTypeType>, columns: ColumnSet<ItemTypeType>, isRoot?: boolean): void;
15
- isEmpty(): boolean;
16
- forEach(callback: (tuple: ChangesDeltaItemCreateDelta, itemType: ApiEnumItemType, index: number) => void): void;
17
- contains(itemType: ApiEnumItemType): boolean;
18
- }
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,51 +1,47 @@
1
- import { ApiEnumItemType } from '@rentman/backend-types';
2
- import { ItemEntry } from '../models';
3
- import { EntryParent, FieldMap, ItemIdConversionMap } from '../types';
4
- import { TransactionItemEntryChanges } from './cache/transaction/TransactionItemHandler';
5
- import { ChangesDeltaBase } from './ChangesDeltaBase';
6
- import { ItemEntryService } from './ItemEntryService';
7
- export declare type InternalCreateDelta<ItemTypeType extends ApiEnumItemType = any> = {
8
- entry: ItemEntry<ItemTypeType>;
9
- fields: FieldMap<ItemTypeType>;
10
- };
11
- export declare type InternalChangesDeltaItemDeleteDelta = {
12
- entry: ItemEntry;
13
- changes: TransactionItemEntryChanges;
14
- };
15
- /**
16
- * @description
17
- * ChangesDelta used internally by the core
18
- *
19
- * ----------
20
- *
21
- * The difference between {@link InternalChangesDelta InternalChangesDelta} and {@link ChangesDelta ChangesDelta} is that the InternalChangesDelta
22
- * assumes 'created' entries are already existing, so it has a different format.
23
- *
24
- * Use this when calling {@link TransactionCache.applyChangesFromChild applyChangesFromChild}
25
- */
26
- export declare class InternalChangesDelta extends ChangesDeltaBase {
27
- created: {
28
- [itemEntryId: string]: InternalCreateDelta;
29
- };
30
- deleted: {
31
- [itemType: string]: InternalChangesDeltaItemDeleteDelta[];
32
- };
33
- moved: {
34
- [itemEntryId: number]: {
35
- entry: ItemEntry;
36
- to: EntryParent;
37
- };
38
- };
39
- itemIdConversionMap: ItemIdConversionMap;
40
- constructor(itemEntryService: ItemEntryService);
41
- setItemDeleted(tuple: InternalChangesDeltaItemDeleteDelta): this;
42
- setItemsDeleted(deleted: InternalChangesDeltaItemDeleteDelta[]): this;
43
- private itemIsDeleted;
44
- setItemCreated<ItemTypeType extends ApiEnumItemType>(itemEntry: ItemEntry<ItemTypeType>, fields: FieldMap<ItemTypeType>): void;
45
- /**
46
- * @remark
47
- * Parent fields are non-writable so we need to keep track of moved entries another way (to do a linkTo request)
48
- */
49
- setItemMoved(entry: ItemEntry, to: EntryParent): void;
50
- isEmpty(): boolean;
51
- }
1
+ import { ApiEnumItemType } from '@rentman/backend-types';
2
+ import { ChangesDeltaBase, EntryParent, FieldMap, ItemEntry, ItemEntryService, ItemIdConversionMap, TransactionItemEntryChanges } from '../internal';
3
+ export declare type InternalCreateDelta<ItemTypeType extends ApiEnumItemType = any> = {
4
+ entry: ItemEntry<ItemTypeType>;
5
+ fields: FieldMap<ItemTypeType>;
6
+ };
7
+ export declare type InternalChangesDeltaItemDeleteDelta = {
8
+ entry: ItemEntry;
9
+ changes: TransactionItemEntryChanges;
10
+ };
11
+ /**
12
+ * @description
13
+ * ChangesDelta used internally by the core
14
+ *
15
+ * ----------
16
+ *
17
+ * The difference between {@link InternalChangesDelta InternalChangesDelta} and {@link ChangesDelta ChangesDelta} is that the InternalChangesDelta
18
+ * assumes 'created' entries are already existing, so it has a different format.
19
+ *
20
+ * Use this when calling {@link TransactionCache.applyChangesFromChild applyChangesFromChild}
21
+ */
22
+ export declare class InternalChangesDelta extends ChangesDeltaBase {
23
+ created: {
24
+ [itemEntryId: string]: InternalCreateDelta;
25
+ };
26
+ deleted: {
27
+ [itemType: string]: InternalChangesDeltaItemDeleteDelta[];
28
+ };
29
+ moved: {
30
+ [itemEntryId: number]: {
31
+ entry: ItemEntry;
32
+ to: EntryParent;
33
+ };
34
+ };
35
+ itemIdConversionMap: ItemIdConversionMap;
36
+ constructor(itemEntryService: ItemEntryService);
37
+ setItemDeleted(tuple: InternalChangesDeltaItemDeleteDelta): this;
38
+ setItemsDeleted(deleted: InternalChangesDeltaItemDeleteDelta[]): this;
39
+ private itemIsDeleted;
40
+ setItemCreated<ItemTypeType extends ApiEnumItemType>(itemEntry: ItemEntry<ItemTypeType>, fields: FieldMap<ItemTypeType>): void;
41
+ /**
42
+ * @remark
43
+ * Parent fields are non-writable so we need to keep track of moved entries another way (to do a linkTo request)
44
+ */
45
+ setItemMoved(entry: ItemEntry, to: EntryParent): void;
46
+ isEmpty(): boolean;
47
+ }
@@ -1,30 +1,27 @@
1
- import { ApiEnumItemType, ItemId } from '@rentman/backend-types';
2
- import { QueryMatcherFactory } from '../factories';
3
- import { ItemEntry } from '../models';
4
- import { CollectionQuery, ItemEntryParentIdMap } from '../types';
5
- import { AbstractCache } from './cache/AbstractCache';
6
- export declare class ItemCache {
7
- private queryMatcherFactory;
8
- private transaction;
9
- private entries;
10
- entriesByEntryId: {
11
- [itemEntryId: number]: ItemEntry;
12
- };
13
- constructor(queryMatcherFactory: QueryMatcherFactory, transaction: AbstractCache);
14
- getByEntryId(itemEntryId: ItemEntry['id']): ItemEntry | undefined;
15
- some(callback: (itemEntry: ItemEntry) => boolean): boolean;
16
- getByItemType<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType): Array<ItemEntry<ItemTypeType>>;
17
- getByQuery<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, query: CollectionQuery['object']): Array<ItemEntry<ItemTypeType>>;
18
- getLocalByQuery<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, query: CollectionQuery['object']): Array<ItemEntry<ItemTypeType>>;
19
- getByParent<ItemTypeType extends ApiEnumItemType>(parentType: ApiEnumItemType, parentId: ItemId, itemType: ItemTypeType): ItemEntry<ItemTypeType>[];
20
- batchGetLocalByParent<ItemTypeType extends ApiEnumItemType>(parentType: ApiEnumItemType, parentIds: ItemId[], itemType: ItemTypeType, additionalQuery: CollectionQuery['object']): ItemEntryParentIdMap<ItemTypeType>;
21
- forEach(callback: (itemEntry: ItemEntry) => void): void;
22
- toArray(): ItemEntry<any>[];
23
- add<ItemTypeType extends ApiEnumItemType>(itemEntry: ItemEntry<ItemTypeType>): ItemEntry<ItemTypeType>;
24
- get<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, itemId: string | ItemId): undefined | ItemEntry<ItemTypeType>;
25
- contains(itemType: ApiEnumItemType, itemId: string | ItemId): boolean;
26
- updateItemId<T extends ItemEntry<any>>(itemEntry: T, oldItemId: string | ItemId): T;
27
- clear(itemEntry?: ItemEntry<any>): boolean;
28
- clearByItemId(itemType: ApiEnumItemType, itemId: ItemId): boolean;
29
- matchQuery(itemEntry: ItemEntry<any>, query: CollectionQuery['object']): boolean;
30
- }
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): Array<ItemEntry<ItemTypeType>>;
14
+ getByQuery<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, query: CollectionQuery['object']): Array<ItemEntry<ItemTypeType>>;
15
+ getLocalByQuery<ItemTypeType extends ApiEnumItemType>(itemType: ItemTypeType, query: CollectionQuery['object']): Array<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<any>[];
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<any>, query: CollectionQuery['object']): boolean;
27
+ }
@@ -1,25 +1,18 @@
1
- import { ApiEnumItemType, ApiFields, ItemId } from '@rentman/backend-types';
2
- import { ColumnSetFactory } from '../factories';
3
- import { ErrorHandlerInterface, PromiseLibraryInterface } from '../interfaces';
4
- import { Template } from '../models';
5
- import { EntryParentNull, FieldMap, FilterItemEntryCallback, ItemIdConversionMap, ModifyFieldsCallback, PromiseInterface } from '../types';
6
- import { ChangesDelta } from './ChangesDelta';
7
- import { ConversionMapService } from './ConversionMapService';
8
- import { KeyService } from './KeyService';
9
- import { TemplateCache } from './TemplateCache';
10
- export declare class ItemCreateService {
11
- private columnSetFactory;
12
- private conversionMapService;
13
- private errorHandler;
14
- private keyService;
15
- private promiseService;
16
- private templateCache;
17
- constructor(columnSetFactory: ColumnSetFactory, conversionMapService: ConversionMapService, errorHandler: ErrorHandlerInterface, keyService: KeyService, promiseService: PromiseLibraryInterface, templateCache: TemplateCache);
18
- /**
19
- * @description
20
- * Fetches a new {@link Template template} and sets the items created on the passed {@link ChangesDelta}
21
- */
22
- createItemsFromValues<ItemTypeType extends ApiEnumItemType, ColumnIds extends Array<keyof ApiFields[ItemTypeType]> = Array<keyof ApiFields[ItemTypeType]>>(changesDelta: ChangesDelta, itemType: ItemTypeType, valuesArray: Array<Partial<FieldMap<ItemTypeType, ColumnIds>>>, parent?: EntryParentNull): PromiseInterface<void>;
23
- processTemplate<ItemTypeType extends ApiEnumItemType, ColumnIds extends Array<keyof ApiFields[ItemTypeType]> = Array<keyof ApiFields[ItemTypeType]>>(changesDelta: ChangesDelta, itemType: ItemTypeType, itemId: ItemId, parent: EntryParentNull, template: Template<ItemTypeType, ColumnIds>, filterItemEntryCallback?: FilterItemEntryCallback, modifyFieldsCallback?: ModifyFieldsCallback, isRoot?: boolean): void;
24
- processTemplateLinkItems<ParentItemType extends ApiEnumItemType>(changesDelta: ChangesDelta, parentType: ParentItemType, localParentId: ItemId, template: Template<ParentItemType>, itemIdConversion: ItemIdConversionMap, filterItemEntryCallback?: FilterItemEntryCallback, modifyFieldsCallback?: ModifyFieldsCallback): void;
25
- }
1
+ import { ApiEnumItemType, ApiFields, ItemId } from '@rentman/backend-types';
2
+ import { ChangesDelta, ColumnSetFactory, ConversionMapService, EntryParentNull, ErrorHandlerInterface, FieldMap, FilterItemEntryCallback, ItemIdConversionMap, KeyService, ModifyFieldsCallback, PromiseInterface, PromiseLibraryInterface, Template, TemplateCache } from '../internal';
3
+ export declare class ItemCreateService {
4
+ private columnSetFactory;
5
+ private conversionMapService;
6
+ private errorHandler;
7
+ private keyService;
8
+ private promiseService;
9
+ private templateCache;
10
+ constructor(columnSetFactory: ColumnSetFactory, conversionMapService: ConversionMapService, errorHandler: ErrorHandlerInterface, keyService: KeyService, promiseService: PromiseLibraryInterface, templateCache: TemplateCache);
11
+ /**
12
+ * @description
13
+ * Fetches a new {@link Template template} and sets the items created on the passed {@link ChangesDelta}
14
+ */
15
+ createItemsFromValues<ItemTypeType extends ApiEnumItemType, ColumnIds extends Array<keyof ApiFields[ItemTypeType]> = Array<keyof ApiFields[ItemTypeType]>>(changesDelta: ChangesDelta, itemType: ItemTypeType, valuesArray: Array<Partial<FieldMap<ItemTypeType, ColumnIds>>>, parent?: EntryParentNull): PromiseInterface<void>;
16
+ processTemplate<ItemTypeType extends ApiEnumItemType, ColumnIds extends Array<keyof ApiFields[ItemTypeType]> = Array<keyof ApiFields[ItemTypeType]>>(changesDelta: ChangesDelta, itemType: ItemTypeType, itemId: ItemId, parent: EntryParentNull, template: Template<ItemTypeType, ColumnIds>, filterItemEntryCallback?: FilterItemEntryCallback, modifyFieldsCallback?: ModifyFieldsCallback, isRoot?: boolean): void;
17
+ processTemplateLinkItems<ParentItemType extends ApiEnumItemType>(changesDelta: ChangesDelta, parentType: ParentItemType, localParentId: ItemId, template: Template<ParentItemType>, itemIdConversion: ItemIdConversionMap, filterItemEntryCallback?: FilterItemEntryCallback, modifyFieldsCallback?: ModifyFieldsCallback): void;
18
+ }