@rentman/rm-core 0.0.0-RM4-44763

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 (201) hide show
  1. package/dist/rm-core.js +2 -0
  2. package/dist/rm-core.js.map +1 -0
  3. package/dist/types/src/classes/ApiFormatter.d.ts +66 -0
  4. package/dist/types/src/classes/ApiRequestService.d.ts +18 -0
  5. package/dist/types/src/classes/ApiResponseProcessor.d.ts +31 -0
  6. package/dist/types/src/classes/BusinessLogicManager/AantalBusinessLogicRuleBase.d.ts +36 -0
  7. package/dist/types/src/classes/BusinessLogicManager/AantaltotaalBusinessLogicRuleBase.d.ts +60 -0
  8. package/dist/types/src/classes/BusinessLogicManager/Afspraak/AfspraakRecureindBusinessLogicRule.d.ts +5 -0
  9. package/dist/types/src/classes/BusinessLogicManager/Beschikbaarheid/BeschikbaarheidRecureindBusinessLogicRule.d.ts +5 -0
  10. package/dist/types/src/classes/BusinessLogicManager/BusinessLogicManager.d.ts +66 -0
  11. package/dist/types/src/classes/BusinessLogicManager/BusinessLogicRule.d.ts +81 -0
  12. package/dist/types/src/classes/BusinessLogicManager/BusinessLogicRuleApplyContext.d.ts +32 -0
  13. package/dist/types/src/classes/BusinessLogicManager/BusinessLogicRuleConditionContext.d.ts +41 -0
  14. package/dist/types/src/classes/BusinessLogicManager/BusinessLogicRuleContextBase.d.ts +58 -0
  15. package/dist/types/src/classes/BusinessLogicManager/Contact/ContactAddressBusinessLogicRule.d.ts +22 -0
  16. package/dist/types/src/classes/BusinessLogicManager/Customfield/CustomFieldLinkedItemTypeBusinessLogicRule.d.ts +18 -0
  17. package/dist/types/src/classes/BusinessLogicManager/Customfield/CustomFieldTypeBusinessLogicRule.d.ts +18 -0
  18. package/dist/types/src/classes/BusinessLogicManager/DefaultContactPersonUpdateBusinessLogicRule.d.ts +30 -0
  19. package/dist/types/src/classes/BusinessLogicManager/Documents/DocumentTemplateBusinessLogicRule.d.ts +20 -0
  20. package/dist/types/src/classes/BusinessLogicManager/Exemplaar/ExemplaarAanschafdatumBusinessLogicRule.d.ts +14 -0
  21. package/dist/types/src/classes/BusinessLogicManager/Exemplaar/ExemplaarBarcodeDeleteBusinessLogicRule.d.ts +14 -0
  22. package/dist/types/src/classes/BusinessLogicManager/Factuur/FactuurBetalingsconditieBusinessLogicRule.d.ts +21 -0
  23. package/dist/types/src/classes/BusinessLogicManager/Factuur/FactuurDatumBusinessLogicRule.d.ts +23 -0
  24. package/dist/types/src/classes/BusinessLogicManager/Factuur/FactuurNumberseriesBusinessLogicRule.d.ts +14 -0
  25. package/dist/types/src/classes/BusinessLogicManager/Files/FilesNameExtensionBusinessLogicRule.d.ts +20 -0
  26. package/dist/types/src/classes/BusinessLogicManager/Functie/FunctieNaaminternBusinessLogicRule.d.ts +18 -0
  27. package/dist/types/src/classes/BusinessLogicManager/Functie/FunctieRecureindBusinessLogicRule.d.ts +5 -0
  28. package/dist/types/src/classes/BusinessLogicManager/Functie/FunctieTwowayBusinessLogicRule.d.ts +14 -0
  29. package/dist/types/src/classes/BusinessLogicManager/Functiegroep/FunctiegroepSubprojectBusinessLogicRule.d.ts +17 -0
  30. package/dist/types/src/classes/BusinessLogicManager/Inhuurmateriaal/InhuurmateriaalAantalBusinessLogicRule.d.ts +4 -0
  31. package/dist/types/src/classes/BusinessLogicManager/Inhuurmateriaal/InhuurmateriaalAantaltotaalBusinessLogicRule.d.ts +9 -0
  32. package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalBulkToSerialBusinessLogicRule.d.ts +17 -0
  33. package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalIsCombinationBusinessLogicRule.d.ts +20 -0
  34. package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalIsPhysicalCombinationBulkBusinessLogicRule.d.ts +19 -0
  35. package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalSerialToBulkBusinessLogicRule.d.ts +16 -0
  36. package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalToPhysicalBusinessLogicRule.d.ts +18 -0
  37. package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalToVirtualBusinessLogicRule.d.ts +22 -0
  38. package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalTypePropertiesBusinessLogicRule.d.ts +19 -0
  39. package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalVerhuurBusinessLogicRule.d.ts +19 -0
  40. package/dist/types/src/classes/BusinessLogicManager/Materiaal/SurfaceArticleSizeBusinessLogicRule.d.ts +23 -0
  41. package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/LinkedTimeItemBusinessLogicRuleBase.d.ts +46 -0
  42. package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/LinkedTimeItemDurationBusinessLogicRule.d.ts +17 -0
  43. package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/LinkedTimeItemMateriaalCatBusinessLogicRule.d.ts +25 -0
  44. package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/LinkedTimeItemSubprojectBusinessLogicRule.d.ts +48 -0
  45. package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/LinkedTimeItemTimeSchemeBusinessLogicRule.d.ts +27 -0
  46. package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/LinkedTimeItemTimeSchemeStartBusinessLogicRule.d.ts +18 -0
  47. package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/LinkedTimeItemTimeValueStartBusinessLogicRule.d.ts +20 -0
  48. package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/TimeColumnUtil.d.ts +132 -0
  49. package/dist/types/src/classes/BusinessLogicManager/OfferteContract/OfferteContractDatumBusinessLogicRule.d.ts +21 -0
  50. package/dist/types/src/classes/BusinessLogicManager/PlanningPersoneelTransport/PlanningPersoneelTransportBusinessLogicRule.d.ts +24 -0
  51. package/dist/types/src/classes/BusinessLogicManager/Planningmateriaal/PlanningmateriaalAantalBusinessLogicRule.d.ts +4 -0
  52. package/dist/types/src/classes/BusinessLogicManager/Planningmateriaal/PlanningmateriaalAantaltotaalBusinessLogicRule.d.ts +9 -0
  53. package/dist/types/src/classes/BusinessLogicManager/Planningmateriaal/PlanningmateriaalOptieBusinessLogicRule.d.ts +26 -0
  54. package/dist/types/src/classes/BusinessLogicManager/Planningmateriaal/PlanningmateriaalParentBusinessLogicRule.d.ts +17 -0
  55. package/dist/types/src/classes/BusinessLogicManager/Planningmateriaal/PlanningmateriaalStaysAtLocationBusinessLogicRule.d.ts +32 -0
  56. package/dist/types/src/classes/BusinessLogicManager/Project/ProjectClientChangedBusinessLogicRule.d.ts +31 -0
  57. package/dist/types/src/classes/BusinessLogicManager/Project/ProjectContactProjectNoteBusinessLogicRule.d.ts +25 -0
  58. package/dist/types/src/classes/BusinessLogicManager/Project/ProjectOneSubLocationAlignBusinessRule.d.ts +26 -0
  59. package/dist/types/src/classes/BusinessLogicManager/ProjectSubproject/ProjectSubprojectDefaultTimeBusinessLogicRule.d.ts +26 -0
  60. package/dist/types/src/classes/BusinessLogicManager/PurchaseOrder/PurchaseOrderApprovalStatusBusinessLogicRule.d.ts +19 -0
  61. package/dist/types/src/classes/BusinessLogicManager/PurchaseOrder/PurchaseOrderOwnerBusinessLogicRule.d.ts +16 -0
  62. package/dist/types/src/classes/BusinessLogicManager/Rate/RateUpdatedBusinessLogicRule.d.ts +14 -0
  63. package/dist/types/src/classes/BusinessLogicManager/RecurrentItem/RecurrentItemRecureindBusinessLogicRule.d.ts +28 -0
  64. package/dist/types/src/classes/BusinessLogicManager/Reparatie/ReparatieExemplaarAantalBusinessLogicRule.d.ts +14 -0
  65. package/dist/types/src/classes/BusinessLogicManager/Reparatie/ReparatieLostItemExemplaarLocationBusinessLogicRule.d.ts +21 -0
  66. package/dist/types/src/classes/BusinessLogicManager/Rol/RolEditOwnDataBusinessLogicRule.d.ts +20 -0
  67. package/dist/types/src/classes/BusinessLogicManager/Rol/RolFileAccessBusinessLogicRule.d.ts +19 -0
  68. package/dist/types/src/classes/BusinessLogicManager/Rol/RolPersoneelsplannerToegangBusinessLogicRule.d.ts +20 -0
  69. package/dist/types/src/classes/BusinessLogicManager/Rol/RolProjectenBewerkenBusinessLogicRule.d.ts +20 -0
  70. package/dist/types/src/classes/BusinessLogicManager/Rol/RolProjectenToegangBusinessLogicRule.d.ts +21 -0
  71. package/dist/types/src/classes/BusinessLogicManager/Rol/RolPurchaseOrderAttachPlanningBusinessLogicRule.d.ts +19 -0
  72. package/dist/types/src/classes/BusinessLogicManager/Rol/RolVisibilityFinancialsBusinessLogicRule.d.ts +35 -0
  73. package/dist/types/src/classes/BusinessLogicManager/Rol/RolWarehosueTrackingLogAccessBusinessLogicRule.d.ts +20 -0
  74. package/dist/types/src/classes/BusinessLogicManager/Setinhoud/SetinhoudCreateFixedBusinessLogicRule.d.ts +21 -0
  75. package/dist/types/src/classes/BusinessLogicManager/Setinhoud/SetinhoudUpdateFixedBusinessLogicRule.d.ts +26 -0
  76. package/dist/types/src/classes/BusinessLogicManager/Subproject/SubprojectInPlanningBusinessLogicRule.d.ts +14 -0
  77. package/dist/types/src/classes/BusinessLogicManager/Subproject/SubprojectOneSubLocationAlignBusinessRule.d.ts +27 -0
  78. package/dist/types/src/classes/BusinessLogicManager/Subproject/SubprojectOneSubNameAlignBusinessRule.d.ts +22 -0
  79. package/dist/types/src/classes/BusinessLogicManager/Tijd/TijdNameChangedBusinessLogicRule.d.ts +21 -0
  80. package/dist/types/src/classes/BusinessLogicManager/Tijd/TijdSubprojectChangedBusinessLogicRule.d.ts +17 -0
  81. package/dist/types/src/classes/BusinessLogicManager/Uren/HoursTypeBusinessLogicRuleBase.d.ts +10 -0
  82. package/dist/types/src/classes/BusinessLogicManager/Uren/UrenCalculatedDurationBusinessLogicRule.d.ts +13 -0
  83. package/dist/types/src/classes/BusinessLogicManager/Uren/UrenCanHaveActivitiesBusinessLogicRule.d.ts +13 -0
  84. package/dist/types/src/classes/BusinessLogicManager/businessLogicRule.decorator.d.ts +13 -0
  85. package/dist/types/src/classes/BusinessLogicManager/registeredBusinessLogicRules.d.ts +66 -0
  86. package/dist/types/src/classes/ChangesCompilation.d.ts +26 -0
  87. package/dist/types/src/classes/ChangesDelta.d.ts +81 -0
  88. package/dist/types/src/classes/ChangesDeltaBase.d.ts +85 -0
  89. package/dist/types/src/classes/ChangesProcessor.d.ts +35 -0
  90. package/dist/types/src/classes/ChildChangesDelta.d.ts +38 -0
  91. package/dist/types/src/classes/ColumnCache.d.ts +22 -0
  92. package/dist/types/src/classes/ColumnExpansion.d.ts +18 -0
  93. package/dist/types/src/classes/ColumnHandler.d.ts +16 -0
  94. package/dist/types/src/classes/ColumnInfo.d.ts +16 -0
  95. package/dist/types/src/classes/ColumnSet.d.ts +79 -0
  96. package/dist/types/src/classes/ColumnUtil.d.ts +97 -0
  97. package/dist/types/src/classes/ConversionMapService.d.ts +23 -0
  98. package/dist/types/src/classes/CreateRequest.d.ts +16 -0
  99. package/dist/types/src/classes/CreatedChangesDelta.d.ts +22 -0
  100. package/dist/types/src/classes/ItemCache.d.ts +26 -0
  101. package/dist/types/src/classes/ItemCreateService.d.ts +14 -0
  102. package/dist/types/src/classes/ItemEntryService.d.ts +29 -0
  103. package/dist/types/src/classes/KeyService.d.ts +10 -0
  104. package/dist/types/src/classes/LockService.d.ts +28 -0
  105. package/dist/types/src/classes/ModuleChangesCompilation.d.ts +20 -0
  106. package/dist/types/src/classes/ParentChangesDelta.d.ts +42 -0
  107. package/dist/types/src/classes/QueryColumnExtractor.d.ts +16 -0
  108. package/dist/types/src/classes/QueryContainsLocalIdParser.d.ts +14 -0
  109. package/dist/types/src/classes/QueryParser.d.ts +18 -0
  110. package/dist/types/src/classes/QueryParserBase.d.ts +32 -0
  111. package/dist/types/src/classes/QueryParserIdUpdater.d.ts +16 -0
  112. package/dist/types/src/classes/QueryService.d.ts +10 -0
  113. package/dist/types/src/classes/RequestBuffer/RequestBuffer.d.ts +13 -0
  114. package/dist/types/src/classes/RequestBuffer/RequestBufferBase.d.ts +37 -0
  115. package/dist/types/src/classes/RequestBuffer/RequestBufferManager.d.ts +24 -0
  116. package/dist/types/src/classes/RequestBuffer/SingleQueryRequestBuffer.d.ts +18 -0
  117. package/dist/types/src/classes/RequestColumnExpansion.d.ts +11 -0
  118. package/dist/types/src/classes/RequestColumnsOperationsCache.d.ts +45 -0
  119. package/dist/types/src/classes/SocketMessageHandler.d.ts +28 -0
  120. package/dist/types/src/classes/TemplateCache.d.ts +61 -0
  121. package/dist/types/src/classes/Util.d.ts +36 -0
  122. package/dist/types/src/classes/cache/AbstractCache.d.ts +86 -0
  123. package/dist/types/src/classes/cache/CachedQueryHandlerBase.d.ts +145 -0
  124. package/dist/types/src/classes/cache/ItemHandlerBase.d.ts +97 -0
  125. package/dist/types/src/classes/cache/ItemMatcherBase.d.ts +90 -0
  126. package/dist/types/src/classes/cache/server/ServerCache.d.ts +83 -0
  127. package/dist/types/src/classes/cache/server/ServerCachedQueryHandler.d.ts +29 -0
  128. package/dist/types/src/classes/cache/server/ServerItemHandler.d.ts +35 -0
  129. package/dist/types/src/classes/cache/transaction/TransactionCache.d.ts +342 -0
  130. package/dist/types/src/classes/cache/transaction/TransactionCachedQueryHandler.d.ts +111 -0
  131. package/dist/types/src/classes/cache/transaction/TransactionEventHandler.d.ts +17 -0
  132. package/dist/types/src/classes/cache/transaction/TransactionItemHandler.d.ts +121 -0
  133. package/dist/types/src/classes/cache/transaction/TransactionValidator.d.ts +25 -0
  134. package/dist/types/src/classes/cache/transaction/TransactionValidatorBase.d.ts +19 -0
  135. package/dist/types/src/classes/cache/transaction/TransactionValidatorWithDependencies.d.ts +15 -0
  136. package/dist/types/src/classes/changes/CollectionItemChangesListenerContext.d.ts +22 -0
  137. package/dist/types/src/classes/changes/ItemChangesListenerContext.d.ts +7 -0
  138. package/dist/types/src/classes/changes/ItemChangesListenerContextBase.d.ts +44 -0
  139. package/dist/types/src/classes/matcher/CompatorQueryNode.d.ts +24 -0
  140. package/dist/types/src/classes/matcher/CustomQueryNode.d.ts +8 -0
  141. package/dist/types/src/classes/matcher/GraphQueryParser.d.ts +34 -0
  142. package/dist/types/src/classes/matcher/IsComparatorQueryNode.d.ts +13 -0
  143. package/dist/types/src/classes/matcher/LinkedToQueryNode.d.ts +9 -0
  144. package/dist/types/src/classes/matcher/NonMatchableQueryNode.d.ts +9 -0
  145. package/dist/types/src/classes/matcher/NotIsComparatorQueryNode.d.ts +14 -0
  146. package/dist/types/src/classes/matcher/QueryNode.d.ts +49 -0
  147. package/dist/types/src/classes/matcher/RootQueryNode.d.ts +14 -0
  148. package/dist/types/src/classes/matcher/SearchQueryNode.d.ts +8 -0
  149. package/dist/types/src/classes/matcher/SubQueryNode.d.ts +8 -0
  150. package/dist/types/src/classes/matcher/ValueTransformers.d.ts +41 -0
  151. package/dist/types/src/classes/matcher/ValuelessEdgeQueryNode.d.ts +11 -0
  152. package/dist/types/src/classes/matcher/greater-smaller-than-comparator-query.node.d.ts +25 -0
  153. package/dist/types/src/constants.d.ts +2 -0
  154. package/dist/types/src/core.d.ts +63 -0
  155. package/dist/types/src/exceptions/CriticalBusinessLogicRuleException.d.ts +4 -0
  156. package/dist/types/src/exceptions/ItemAlreadyExistsException.d.ts +4 -0
  157. package/dist/types/src/exceptions/ItemLockedException.d.ts +2 -0
  158. package/dist/types/src/exceptions/ItemNotFoundException.d.ts +5 -0
  159. package/dist/types/src/exceptions/MissingColumnException.d.ts +6 -0
  160. package/dist/types/src/exceptions/SavingInProgressException.d.ts +2 -0
  161. package/dist/types/src/exceptions/TransactionPendingException.d.ts +2 -0
  162. package/dist/types/src/factories/ApiResponseProcessorFactory.d.ts +5 -0
  163. package/dist/types/src/factories/ChangesCompilationFactory.d.ts +5 -0
  164. package/dist/types/src/factories/ChangesDeltaFactory.d.ts +13 -0
  165. package/dist/types/src/factories/CollectionResourceFactory.d.ts +20 -0
  166. package/dist/types/src/factories/ColumnExpansionFactory.d.ts +7 -0
  167. package/dist/types/src/factories/ColumnInfoFactory.d.ts +7 -0
  168. package/dist/types/src/factories/ColumnSetFactory.d.ts +15 -0
  169. package/dist/types/src/factories/GraphQueryParserFactory.d.ts +10 -0
  170. package/dist/types/src/factories/ItemCacheFactory.d.ts +7 -0
  171. package/dist/types/src/factories/ItemResourceFactory.d.ts +7 -0
  172. package/dist/types/src/factories/ModuleChangesCompilationFactory.d.ts +6 -0
  173. package/dist/types/src/factories/RequestColumnExpansionFactory.d.ts +4 -0
  174. package/dist/types/src/factories/RequestColumnsOperationsCacheFactory.d.ts +7 -0
  175. package/dist/types/src/factories/TransactionCacheFactory.d.ts +12 -0
  176. package/dist/types/src/index.d.ts +11 -0
  177. package/dist/types/src/interfaces/AbstractCacheDependencyInterface.d.ts +46 -0
  178. package/dist/types/src/interfaces/ApiRequestServiceInterface.d.ts +14 -0
  179. package/dist/types/src/interfaces/ErrorHandlerInterface.d.ts +6 -0
  180. package/dist/types/src/interfaces/LinkTreeServiceInterface.d.ts +6 -0
  181. package/dist/types/src/interfaces/ServerCacheDependencyInterface.d.ts +6 -0
  182. package/dist/types/src/interfaces/SocketMessageInterface.d.ts +3 -0
  183. package/dist/types/src/interfaces/TransactionCollectionHandlerDependencyInterface.d.ts +15 -0
  184. package/dist/types/src/interfaces/TransactionItemHandlerDependencyInterface.d.ts +16 -0
  185. package/dist/types/src/internal.d.ts +110 -0
  186. package/dist/types/src/models/CachedQueryItem.d.ts +33 -0
  187. package/dist/types/src/models/CollectionEntry.d.ts +16 -0
  188. package/dist/types/src/models/CollectionOptions.d.ts +111 -0
  189. package/dist/types/src/models/CollectionResource.d.ts +175 -0
  190. package/dist/types/src/models/ItemEntry.d.ts +23 -0
  191. package/dist/types/src/models/ItemOptions.d.ts +25 -0
  192. package/dist/types/src/models/ItemResource.d.ts +135 -0
  193. package/dist/types/src/models/LimitedCollectionResource.d.ts +26 -0
  194. package/dist/types/src/models/OrderedCollectionResource.d.ts +19 -0
  195. package/dist/types/src/models/Template.d.ts +17 -0
  196. package/dist/types/src/services/rm-holidays.service.d.ts +31 -0
  197. package/dist/types/src/types/AggregatedChangesListener.d.ts +99 -0
  198. package/dist/types/src/types/ApiQuery.d.ts +95 -0
  199. package/dist/types/src/types/ItemTypesCollection.d.ts +416 -0
  200. package/package.json +56 -0
  201. package/readme.md +42 -0
@@ -0,0 +1,38 @@
1
+ import { ApiItemType } from '@rentman/backend-types';
2
+ import { ChangesDeltaBase, ChangesDeltaBaseItemDeleteDelta, ChangesDeltaBaseItemUpdateDelta, ChangesDeltaItemUpdateMode, FieldMap, ItemEntry, ItemEntryService } from '../internal';
3
+ export type ChildChangesDeltaItemCreateDelta<ItemTypeType extends ApiItemType = any> = {
4
+ entry: ItemEntry<ItemTypeType>;
5
+ fields: FieldMap<ItemTypeType>;
6
+ };
7
+ export interface ChildChangesDeltaItemUpdateDelta<ItemTypeType extends ApiItemType> extends ChangesDeltaBaseItemUpdateDelta<ItemTypeType> {
8
+ entry: ItemEntry<ItemTypeType>;
9
+ changes: {
10
+ fields: Readonly<FieldMap<ItemTypeType>>;
11
+ };
12
+ mode: ChangesDeltaItemUpdateMode;
13
+ }
14
+ export interface ChildChangesDeltaItemDeleteDelta<ItemTypeType extends ApiItemType> extends ChangesDeltaBaseItemDeleteDelta<ItemTypeType> {
15
+ changes: FieldMap<ItemTypeType>;
16
+ isCascaded: boolean;
17
+ }
18
+ /**
19
+ * @description
20
+ * The difference between {@link ChildChangesDelta} and {@link ChangesDelta} is that the {@link ChildChangesDelta}
21
+ * assumes 'created' entries are already existing, so it has a different format.
22
+ *
23
+ * Use this when calling {@link TransactionCache.applyChangesFromChild}.
24
+ */
25
+ export declare class ChildChangesDelta extends ChangesDeltaBase<ChildChangesDeltaItemDeleteDelta<any>> {
26
+ updated: {
27
+ [itemEntryId: number]: ChildChangesDeltaItemUpdateDelta<any>;
28
+ };
29
+ created: {
30
+ [itemEntryId: string]: ChildChangesDeltaItemCreateDelta;
31
+ };
32
+ constructor(itemEntryService: ItemEntryService);
33
+ setItemUpdated<ItemTypeType extends ApiItemType>(entry: ItemEntry<ItemTypeType>, fields: Readonly<Partial<FieldMap<ItemTypeType>>>, mode?: ChangesDeltaItemUpdateMode): this;
34
+ setItemDeleted(tuple: ChildChangesDeltaItemDeleteDelta<any>): this;
35
+ setItemsDeleted(deleted: ChildChangesDeltaItemDeleteDelta<any>[]): this;
36
+ setItemCreated<ItemTypeType extends ApiItemType>(itemEntry: ItemEntry<ItemTypeType>, fields: Partial<FieldMap<ItemTypeType>>): void;
37
+ isEmpty(): boolean;
38
+ }
@@ -0,0 +1,22 @@
1
+ import { ApiItemType, GetColumnType, ResponseColumn } from '@rentman/backend-types';
2
+ import { ApiRequestColumnArray, ApiRequestColumns, ApiResponseProcessor, ItemTypeColumnId, ResponseColumnItemTypeMap } from '../internal';
3
+ export declare class ColumnCache {
4
+ private cache;
5
+ private pendingCache;
6
+ private allColumns;
7
+ setColumn<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, responseColumn: ResponseColumn<ItemTypeType>): ResponseColumn<ItemTypeType>;
8
+ setColumns<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, requestColumns: ApiRequestColumns<ItemTypeType>, responseColumns: ResponseColumnItemTypeMap, columnFilter: string | false): ResponseColumnItemTypeMap;
9
+ setPendingColumn<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, columnId: ItemTypeColumnId<ItemTypeType>, promise: Promise<ApiResponseProcessor>): void;
10
+ clearPendingColumns<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, requestColumns: ApiRequestColumnArray<ItemTypeType>): void;
11
+ setPendingColumns<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, requestColumns: ApiRequestColumnArray<ItemTypeType>, promise: Promise<ApiResponseProcessor>): void;
12
+ retrieve<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, requestColumns: ApiRequestColumns<ItemTypeType>): {
13
+ cached: Partial<ResponseColumnItemTypeMap>;
14
+ missing: ApiRequestColumns<ItemTypeType>;
15
+ pending: Promise<ApiRequestColumns<ItemTypeType>> | null;
16
+ };
17
+ containsAll(itemType: ApiItemType): boolean;
18
+ getColumns(itemType: ApiItemType): ResponseColumnItemTypeMap;
19
+ getColumn<ItemTypeType extends ApiItemType, ColumnId extends ItemTypeColumnId<ItemTypeType>>(itemType: ItemTypeType, columnId: ColumnId): GetColumnType<ItemTypeType, ColumnId> | undefined;
20
+ private retrieveColumns;
21
+ private retrieveColumn;
22
+ }
@@ -0,0 +1,18 @@
1
+ import { ApiItemType } from '@rentman/backend-types';
2
+ import { ApiRequestColumns, ColumnExpansionResult, ColumnInfo, ColumnInfoFactory, ColumnSet, ResponseColumnItemTypeMap } from '../internal';
3
+ /**
4
+ * @description
5
+ * A ColumnExpansion is used to make sure {@link ItemEntry ItemEntries} that have the same {@link ColumnSet ColumnSet} (matched on {@link ColumnSet.id ColumnSet.id}) will all get the same new expanded ColumnSet
6
+ */
7
+ export declare class ColumnExpansion<ItemTypeType extends ApiItemType> {
8
+ private columnInfoFactory;
9
+ itemType: ItemTypeType;
10
+ responseColumns: ResponseColumnItemTypeMap;
11
+ private expansionMap;
12
+ private requestColumnsTrue;
13
+ private requestColumns;
14
+ constructor(columnInfoFactory: ColumnInfoFactory, itemType: ItemTypeType, requestColumns: ApiRequestColumns<ItemTypeType>, responseColumns: ResponseColumnItemTypeMap);
15
+ run(columnSet: ColumnSet<ItemTypeType>): ColumnExpansionResult<ItemTypeType>;
16
+ aggregateRootColumns(): ColumnInfo<ItemTypeType>[];
17
+ private expandRootColumnMap;
18
+ }
@@ -0,0 +1,16 @@
1
+ import { ApiItemType, ResponseColumn, ResponseColumnCustom } from '@rentman/backend-types';
2
+ import { ApiRequestColumns, ApiRequestService, ColumnCache, ResponseColumnItemTypeMap } from '../internal';
3
+ export declare class ColumnHandler {
4
+ private apiRequestService;
5
+ private cache;
6
+ constructor(apiRequestService: ApiRequestService, cache: ColumnCache);
7
+ setColumn<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, responseColumn: ResponseColumn<ItemTypeType>): ResponseColumn<ItemTypeType>;
8
+ setColumns<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, requestColumns: ApiRequestColumns<ItemTypeType>, responseColumns: ResponseColumnItemTypeMap, filter?: string | false): ResponseColumnItemTypeMap;
9
+ fetchItemTypeTranslations(itemTypes: ApiItemType[]): Promise<{
10
+ [itemType: string]: string;
11
+ }>;
12
+ fetch<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, requestColumns: ApiRequestColumns<ItemTypeType>, params?: any): Promise<ResponseColumnItemTypeMap>;
13
+ fetchAll(itemType: ApiItemType): Promise<ResponseColumnItemTypeMap>;
14
+ fetchEditableCustomColumns<ItemTypeType extends ApiItemType>(itemType: ItemTypeType): Promise<ResponseColumnCustom[]>;
15
+ private request;
16
+ }
@@ -0,0 +1,16 @@
1
+ import { ApiItemType, GetColumnType } from '@rentman/backend-types';
2
+ import { ApiRequestColumnArray, ItemTypeColumnId } from '..';
3
+ export declare class ColumnInfo<ItemTypeType extends ApiItemType = 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<ApiItemType>[];
12
+ isLeaf: boolean;
13
+ constructor(apiColumn: GetColumnType<ItemTypeType, ColumnId>, parent?: ColumnInfo | null);
14
+ toRequestColumns(): ApiRequestColumnArray<ItemTypeType>;
15
+ setChildren(itemType: ItemTypeType, children: ColumnInfo<ApiItemType>[]): this;
16
+ }
@@ -0,0 +1,79 @@
1
+ import { ApiItemType } from '@rentman/backend-types';
2
+ import { ApiRequestColumnArray, ApiRequestColumns, ColumnInfo, ColumnSetFactory, RequestColumnMergeResult, ResponseColumnItemTypeMap } from '../internal';
3
+ export type ColumnExpansionResult<ItemTypeType extends ApiItemType> = {
4
+ merged: ColumnSet<ItemTypeType>;
5
+ difference: ColumnSet<ItemTypeType> | null;
6
+ };
7
+ export declare class ColumnSet<ItemTypeType extends ApiItemType> {
8
+ private columnSetFactory;
9
+ readonly itemType: ItemTypeType;
10
+ readonly request: ApiRequestColumnArray<ItemTypeType>;
11
+ readonly requestColumnsTrue: boolean;
12
+ readonly response: ResponseColumnItemTypeMap;
13
+ readonly id: number;
14
+ link: ColumnInfo<ItemTypeType> | null;
15
+ /**
16
+ * The item's own columns
17
+ */
18
+ readonly main: ColumnInfo<ItemTypeType>[];
19
+ /**
20
+ * Columns which contain children, can be used to determine which derived values need to be refreshed when the root value changes.
21
+ *
22
+ * @example
23
+ * columns: [
24
+ * {
25
+ * // 'exemplaar' is the root
26
+ * exemplaar: [
27
+ * 'displayname',
28
+ * ],
29
+ * },
30
+ * ]
31
+ */
32
+ readonly root: ColumnInfo<ItemTypeType>[];
33
+ /**
34
+ * Columns which should be searchable in the frontend (mainly used for grids)
35
+ */
36
+ readonly searchable: {
37
+ main: ColumnInfo<ItemTypeType>[];
38
+ derived: ColumnInfo<ItemTypeType>[];
39
+ };
40
+ /**
41
+ * Custom columns fetched for this set
42
+ */
43
+ readonly custom: {
44
+ main: ColumnInfo<ItemTypeType>[];
45
+ derived: ColumnInfo<ItemTypeType>[];
46
+ };
47
+ /**
48
+ * Columns which reference another item
49
+ */
50
+ readonly item: {
51
+ main: ColumnInfo<ItemTypeType>[];
52
+ derived: ColumnInfo<ItemTypeType>[];
53
+ };
54
+ /**
55
+ * Warning: Contains both main and derived columns!
56
+ */
57
+ readonly leaf: {
58
+ main: ColumnInfo<ItemTypeType>[];
59
+ derived: ColumnInfo<ItemTypeType>[];
60
+ };
61
+ /**
62
+ * Warning: Contains both main and derived columns!
63
+ */
64
+ readonly filtered: {
65
+ main: ColumnInfo<ItemTypeType>[];
66
+ derived: ColumnInfo<ItemTypeType>[];
67
+ };
68
+ constructor(columnSetFactory: ColumnSetFactory, itemType: ItemTypeType, request: ApiRequestColumnArray<ItemTypeType>, requestColumnsTrue: boolean, response: ResponseColumnItemTypeMap);
69
+ groupColumnInfo(columnInfo: ColumnInfo): void;
70
+ toJSON(): any[];
71
+ /**
72
+ * @param columnsToCompare
73
+ * @param columnsToCompareTrue - Set this to true if you know `columnsToCompare` contains all request columns.
74
+ */
75
+ isSupersetOf(columnsToCompare: ApiRequestColumns<ItemTypeType>, columnsToCompareTrue?: boolean): boolean;
76
+ mergeRequestColumns(requestColumns: ApiRequestColumns<ItemTypeType>): RequestColumnMergeResult;
77
+ mergeResponseColumns(responseColumns: ResponseColumnItemTypeMap): ResponseColumnItemTypeMap;
78
+ expand(requestColumns: ApiRequestColumnArray<ItemTypeType>, requestColumnsTrue: boolean, responseColumns: ResponseColumnItemTypeMap): ColumnExpansionResult<ItemTypeType>;
79
+ }
@@ -0,0 +1,97 @@
1
+ import { ApiEnumApiType, ApiItemType, ResponseColumn, ResponseColumnCustom, ResponseColumnItem } from '@rentman/backend-types';
2
+ import { UnknownResponseColumn } from '@rentman/backend-types/dist/manual/api-response-column';
3
+ import { ApiRequestColumn, ApiRequestColumnArray, ApiRequestColumns, ItemTypeColumnId, MutableApiRequestColumnArray, RequestColumnsTuple, ResponseColumnItemTypeMap, ResponseColumnMap } from '../internal';
4
+ export type RequestColumnMergeResult<T extends ApiRequestColumns = ApiRequestColumns, U extends ApiRequestColumns = ApiRequestColumns> = {
5
+ merged: T;
6
+ difference: U;
7
+ };
8
+ export declare enum API_COLUMN_LOCATION {
9
+ NO = 0,
10
+ IMPORT = 1,
11
+ EXPORT = 2,
12
+ GRID = 4,
13
+ TEMPLATE = 8,
14
+ EDIT = 16,
15
+ API = 20,
16
+ SOCKET = 32,
17
+ ALL = 63,
18
+ GRID_SELECTABLE = 32768,
19
+ LOCATION_LABELS = 524288
20
+ }
21
+ /**
22
+ * @description
23
+ * A service which provides functions to help on {@link ResponseColumn ResponseColumns}
24
+ *
25
+ * @warning
26
+ * The code in these functions can be *very hot* on large databases, therefore performance must be kept in mind.
27
+ * This is also the reason why all column types are written out instead of using the enum
28
+ */
29
+ export declare abstract class ColumnUtil {
30
+ static isStringColumn(column: UnknownResponseColumn): boolean;
31
+ static isFloatColumn(column: UnknownResponseColumn): boolean;
32
+ static isIntColumn(column: UnknownResponseColumn): boolean;
33
+ static isNumberColumn(column: UnknownResponseColumn): boolean;
34
+ static isCustomColumn<ItemTypeType extends ApiItemType>(column: ResponseColumn<ItemTypeType>): column is ResponseColumnCustom<ItemTypeType>;
35
+ static isAggregateColumn(column: UnknownResponseColumn): boolean;
36
+ static isItemColumn<ItemTypeType extends ApiItemType>(column: UnknownResponseColumn | ResponseColumn<ItemTypeType>, includeId?: boolean): column is ResponseColumnItem<ItemTypeType>;
37
+ static isDateColumn(column: UnknownResponseColumn): boolean;
38
+ static isRenderedColumn(column: UnknownResponseColumn): boolean;
39
+ static isFilteredColumn(column: UnknownResponseColumn): boolean;
40
+ static hasLocationProperty(column: UnknownResponseColumn, location: API_COLUMN_LOCATION): boolean;
41
+ static isEditableColumn(column: UnknownResponseColumn): boolean;
42
+ static isSearchableColumn(column: UnknownResponseColumn): boolean;
43
+ static getComparators(column: UnknownResponseColumn & {
44
+ type: ApiEnumApiType.TYPE_DIMENSION | ApiEnumApiType.TYPE_WEIGHT | ApiEnumApiType.TYPE_PRICE;
45
+ }): ['=', '>', '<'];
46
+ static getComparators(column: UnknownResponseColumn & {
47
+ type: ApiEnumApiType.TYPE_DATE | ApiEnumApiType.TYPE_DATETIME | ApiEnumApiType.TYPE_DURATION | ApiEnumApiType.TYPE_TIMESTAMP | ApiEnumApiType.TYPE_TIMESTAMP_MS;
48
+ }): ['>', '<'];
49
+ static getComparators(column: UnknownResponseColumn & {
50
+ type: ApiEnumApiType.TYPE_TIME;
51
+ }): ['>', '<', '=', '!='];
52
+ static getComparators(column: UnknownResponseColumn): ['=', '!='];
53
+ static containsColumn<ItemTypeType extends ApiItemType = ApiItemType>(requestColumn: ApiRequestColumn<ItemTypeType>, destination: ApiRequestColumnArray<ItemTypeType>): boolean;
54
+ static containsDerivedColumns(requestColumns: ApiRequestColumnArray): boolean;
55
+ static responseColumnsAvailable(itemType: ApiItemType, requestColumns: ApiRequestColumnArray, responseColumnMap: ResponseColumnItemTypeMap): boolean;
56
+ static copyRequestColumns<ItemTypeType extends ApiItemType>(columns: true): true;
57
+ static copyRequestColumns<ItemTypeType extends ApiItemType>(columns: ApiRequestColumns<ItemTypeType>): ApiRequestColumns<ItemTypeType>;
58
+ static copyRequestColumn(requestColumn: ApiRequestColumn): ApiRequestColumn;
59
+ static mergeRequestColumns<T extends true, U extends ApiRequestColumns>(first: T, second: U): RequestColumnMergeResult<true, []>;
60
+ static mergeRequestColumns<T extends ApiRequestColumnArray, U extends true>(first: T, second: U): RequestColumnMergeResult<true, true>;
61
+ static mergeRequestColumns<T extends ApiRequestColumnArray, U extends ApiRequestColumnArray>(first: T, second: U): RequestColumnMergeResult<[...T, ...U], ApiRequestColumnArray>;
62
+ static mergeRequestColumns<T extends ApiRequestColumns, U extends ApiRequestColumns>(first: T, second: U): RequestColumnMergeResult<ApiRequestColumns, ApiRequestColumns>;
63
+ static mergeRequestColumn<ItemTypeType extends ApiItemType>(requestColumn: ApiRequestColumn<ItemTypeType>, destination: MutableApiRequestColumnArray<ItemTypeType>): ApiRequestColumn | null;
64
+ static createRequestColumnSetId(requestColumns: ApiRequestColumns): RequestColumnsTuple['string'];
65
+ static getRequestColumnId(requestColumn: ApiRequestColumn): string;
66
+ static parseRequestColumn<ItemTypeType extends ApiItemType>(requestColumn: ApiRequestColumn<ItemTypeType>): {
67
+ id: ItemTypeColumnId<ItemTypeType>;
68
+ children: ApiRequestColumnArray;
69
+ };
70
+ /**
71
+ * @description
72
+ * Merges two sets of {@link ResponseColumnItemTypeMap ResponseColumnItemTypeMaps}.
73
+ *
74
+ * @returns
75
+ * - Merged: The merged set of columns
76
+ * - Difference: Columns that are in second, but not in first
77
+ */
78
+ static mergeResponseColumns(first: Partial<ResponseColumnItemTypeMap>, second: Partial<ResponseColumnItemTypeMap>): {
79
+ merged: ResponseColumnItemTypeMap;
80
+ difference: ResponseColumnItemTypeMap;
81
+ };
82
+ /**
83
+ * @description
84
+ * Merges two sets of {@link ResponseColumnMap response columns}.
85
+ *
86
+ * @returns
87
+ * - Merged: The merged set of columns
88
+ * - Difference: Columns that are in second, but not in first
89
+ */
90
+ static mergeResponseColumnMap<ItemTypeType extends ApiItemType>(first: ResponseColumnMap<ItemTypeType>, second: ResponseColumnMap<ItemTypeType>): {
91
+ merged: ResponseColumnMap<ItemTypeType>;
92
+ difference: ResponseColumnMap<ItemTypeType>;
93
+ };
94
+ static findRequestColumn(columnId: string, requestColumns: ApiRequestColumnArray): number;
95
+ static requestColumnToPath(requestColumn: ApiRequestColumn): string[];
96
+ private static createRequestColumnId;
97
+ }
@@ -0,0 +1,23 @@
1
+ import { ApiItemType, ItemId } from '@rentman/backend-types';
2
+ import { ApiResponseProcessor, ColumnInfo, EntryParentNull, FieldMap, ItemEntry, ItemIdConversionMap } 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
+ createLocalConversionMap<ItemTypeType extends ApiItemType>(rootItemType: ItemTypeType, rootLocalItemId: ItemId, apiResponse: ApiResponseProcessor<ItemTypeType>): ItemIdConversionMap;
12
+ expandConversionMap(itemType: ApiItemType, itemId: ItemId, conversionMap: ItemIdConversionMap, newItemId?: ItemId): ItemId;
13
+ batchExpandConversionMap(itemEntries: ItemEntry<any>[], conversionMap: ItemIdConversionMap): ItemIdConversionMap;
14
+ getConversionValue(itemType: ApiItemType, itemId: ItemId, map: ItemIdConversionMap): ItemId | undefined;
15
+ /**
16
+ * @description
17
+ * Updates the columns in `fields` using the `parent` and `conversionMap`.
18
+ *
19
+ * @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.
20
+ */
21
+ updateItemValues<ItemTypeType extends ApiItemType>(source: FieldMap<ItemTypeType>, destination: FieldMap<ItemTypeType>, itemColumns: ColumnInfo<ItemTypeType>[], conversionMap: ItemIdConversionMap, parent?: EntryParentNull): void;
22
+ private expandLocalConversionMap;
23
+ }
@@ -0,0 +1,16 @@
1
+ import { ApiItemType } from '@rentman/backend-types';
2
+ import { CreateCompilation, CreateRequestCompilationParent, CreateRequestEntry, RequestColumnExpansionFactory, TransactionCache } from '../internal';
3
+ export declare class CreateRequest<ItemTypeType extends ApiItemType> {
4
+ private requestColumnExpansionFactory;
5
+ private compilation;
6
+ private transaction;
7
+ private breakupByParent;
8
+ private uniqueTransactionId?;
9
+ requests: CreateRequestEntry<ItemTypeType>[];
10
+ constructor(requestColumnExpansionFactory: RequestColumnExpansionFactory, compilation: CreateCompilation, transaction: TransactionCache, breakupByParent?: boolean, uniqueTransactionId?: string | undefined);
11
+ finalizeRequest(requestResource: CreateRequestEntry<ItemTypeType>): CreateRequestEntry<ItemTypeType>;
12
+ setRequestParent(parentType: CreateRequestCompilationParent, requestEntry: CreateRequestEntry<ItemTypeType>): boolean;
13
+ run(): CreateRequestEntry<ItemTypeType>[];
14
+ initializeRequest(): CreateRequestEntry<ItemTypeType>;
15
+ private extendRequest;
16
+ }
@@ -0,0 +1,22 @@
1
+ import { ApiItemType, ItemId } from '@rentman/backend-types';
2
+ import { ColumnSet, FieldMap } from '../internal';
3
+ import { MatchesAccumulator } from './matcher/QueryNode';
4
+ import { RootQueryNode } from './matcher/RootQueryNode';
5
+ export type ChangesDeltaItemCreateDelta<ItemTypeType extends ApiItemType = any> = {
6
+ itemId: ItemId;
7
+ fields: FieldMap<ItemTypeType>;
8
+ columns: ColumnSet<ItemTypeType>;
9
+ isRoot: boolean;
10
+ };
11
+ export declare class CreatedChangesDelta {
12
+ private tuples;
13
+ remove(itemType: ApiItemType, itemId: ItemId): boolean;
14
+ add<ItemTypeType extends ApiItemType>(itemId: ItemId, fields: Partial<FieldMap<ItemTypeType>>, columns: ColumnSet<ItemTypeType>, isRoot?: boolean): void;
15
+ isEmpty(): boolean;
16
+ getTuplesIterator<ItemTypeType extends ApiItemType>(itemType: ItemTypeType): IterableIterator<ChangesDeltaItemCreateDelta<ItemTypeType>>;
17
+ forEach(callback: (tuple: ChangesDeltaItemCreateDelta, itemType: ApiItemType) => void): void;
18
+ forEachOfItemType(itemType: ApiItemType, callback: (tuple: ChangesDeltaItemCreateDelta) => void): void;
19
+ contains(itemType: ApiItemType): boolean;
20
+ getTupleByItemId<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, itemId: ItemId): ChangesDeltaItemCreateDelta<ItemTypeType> | undefined;
21
+ matchTuplesToQueryGraph<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, queryGraph: RootQueryNode<ItemTypeType>, matchesAccumulator: MatchesAccumulator<ChangesDeltaItemCreateDelta<ItemTypeType>>): MatchesAccumulator<ChangesDeltaItemCreateDelta<ItemTypeType>>;
22
+ }
@@ -0,0 +1,26 @@
1
+ import { ApiItemType, ItemId } from '@rentman/backend-types';
2
+ import { GraphQueryParserFactory } from '../factories/GraphQueryParserFactory';
3
+ import { AbstractCache, ApiQuery, ItemEntry } from '../internal';
4
+ export declare class ItemCache {
5
+ private graphQueryParserFactory;
6
+ private transaction;
7
+ private entries;
8
+ private entriesByEntryId;
9
+ constructor(graphQueryParserFactory: GraphQueryParserFactory, transaction: AbstractCache);
10
+ getByEntryId(itemEntryId: ItemEntry['id']): ItemEntry;
11
+ containsByEntryId(itemEntryId: ItemEntry['id']): boolean;
12
+ some(callback: (itemEntry: ItemEntry) => boolean): boolean;
13
+ getByItemType<ItemTypeType extends ApiItemType>(itemType: ItemTypeType): ItemEntry<ItemTypeType>[];
14
+ getByQuery<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, query: ApiQuery<ItemTypeType>): ItemEntry<ItemTypeType>[];
15
+ getLocalByQuery<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, query: ApiQuery<ItemTypeType>): ItemEntry<ItemTypeType>[];
16
+ getByParent<ItemTypeType extends ApiItemType>(parentType: ApiItemType, parentId: ItemId, itemType: ItemTypeType): ItemEntry<ItemTypeType>[];
17
+ forEach(callback: (itemEntry: ItemEntry) => void): void;
18
+ [Symbol.iterator](): Iterator<ItemEntry>;
19
+ toArray(): ItemEntry[];
20
+ add<ItemTypeType extends ApiItemType>(itemEntry: ItemEntry<ItemTypeType>): ItemEntry<ItemTypeType>;
21
+ get<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, itemId: string | ItemId): ItemEntry<ItemTypeType>;
22
+ contains(itemType: ApiItemType, 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: ApiItemType, itemId: ItemId): boolean;
26
+ }
@@ -0,0 +1,14 @@
1
+ import { ApiFields, ApiItemType, ItemId } from '@rentman/backend-types';
2
+ import { ChangesDelta, ConversionMapService, EntryParentNull, FieldMap, FilterItemEntryCallback, ItemIdConversionMap, ModifyFieldsCallback, RequestParameters, Template, TemplateCache } from '../internal';
3
+ export declare class ItemCreateService {
4
+ private conversionMapService;
5
+ private templateCache;
6
+ constructor(conversionMapService: ConversionMapService, templateCache: TemplateCache);
7
+ /**
8
+ * @description
9
+ * Fetches a new {@link Template template} and sets the items created on the passed {@link ChangesDelta}
10
+ */
11
+ createItemsFromValues<ItemTypeType extends ApiItemType, ColumnIds extends (keyof ApiFields[ItemTypeType])[] = (keyof ApiFields[ItemTypeType])[]>(changesDelta: ChangesDelta, itemType: ItemTypeType, valuesArray: Partial<FieldMap<ItemTypeType, ColumnIds>>[], parent?: EntryParentNull, templateOptions?: Partial<RequestParameters<ItemTypeType>>): Promise<void[]>;
12
+ processTemplate<ItemTypeType extends ApiItemType>(changesDelta: ChangesDelta, itemType: ItemTypeType, itemId: ItemId, parent: EntryParentNull, template: Template<ItemTypeType>, filterItemEntryCallback?: FilterItemEntryCallback, modifyFieldsCallback?: ModifyFieldsCallback, isRoot?: boolean): void;
13
+ processTemplateLinkItems<ParentItemType extends ApiItemType>(changesDelta: ChangesDelta, parentType: ParentItemType, localParentId: ItemId, template: Template<any>, itemIdConversion: ItemIdConversionMap, filterItemEntryCallback?: FilterItemEntryCallback, modifyFieldsCallback?: ModifyFieldsCallback): void;
14
+ }
@@ -0,0 +1,29 @@
1
+ import { ApiEnumApiType, ApiItemType, ItemId } from '@rentman/backend-types';
2
+ import { EntryParent, EntryParentNull, FieldMap, GetColumnIdsOfType, ItemEntry, LinkTreeServiceInterface } from '../internal';
3
+ type TextColumn<ItemTypeType extends ApiItemType> = GetColumnIdsOfType<ItemTypeType, ApiEnumApiType.TYPE_TEXT>;
4
+ export declare class ItemEntryService {
5
+ private userId;
6
+ private linkTreeService;
7
+ constructor(userId: ItemId, linkTreeService: LinkTreeServiceInterface);
8
+ matchParent(oldParent: EntryParentNull, newParent: EntryParentNull): boolean;
9
+ /**
10
+ * @description
11
+ * Gets the fields required to set the parent
12
+ *
13
+ * @remark
14
+ * Opposite of {@link ItemEntryService.getParentByFields ItemEntryService.getParentByFields}
15
+ */
16
+ getLinkFieldsByParent<ParentItemType extends ApiItemType, ItemTypeType extends ApiItemType>(parent: EntryParent<ParentItemType>, itemType: ItemTypeType): Partial<FieldMap<ItemTypeType>>;
17
+ /**
18
+ * @description
19
+ * Gets an {@link EntryParent EntryParent} object from the fields
20
+ *
21
+ * @remark
22
+ * Opposite of {@link ItemEntryService.getLinkFieldsByParent ItemEntryService.getLinkFieldsByParent}
23
+ */
24
+ getParentByFields<ItemTypeType extends ApiItemType>(parentType: ApiItemType, itemEntry: ItemEntry<ItemTypeType>, fields: FieldMap<ItemTypeType>): EntryParent;
25
+ getFullName(firstName: string, infix: string, lastName: string): string;
26
+ getTitleField<ItemTypeType extends ApiItemType>(itemType: ItemTypeType): TextColumn<ItemTypeType>;
27
+ getLocalDefaultValues<ItemTypeType extends ApiItemType>(): FieldMap<ItemTypeType, ['permissions', 'creator', 'created']>;
28
+ }
29
+ export {};
@@ -0,0 +1,10 @@
1
+ import { ItemId } from '@rentman/backend-types';
2
+ export declare abstract class KeyService {
3
+ private static readonly NEW_PREFIX;
4
+ private static idCounter;
5
+ static getCssKey(...args: (string | number)[]): string;
6
+ static getLocalId(): ItemId;
7
+ static isLocalId(itemId: any): boolean;
8
+ static isNewId(itemId: any): boolean;
9
+ private static incrementIdCounter;
10
+ }
@@ -0,0 +1,28 @@
1
+ import { Signal } from '@angular/core';
2
+ import { ItemId } from '@rentman/backend-types';
3
+ import { ApiRequestService, FieldMap, ItemEntry, ItemMap } from '../internal';
4
+ type LockTokenError = {
5
+ isForeign: true;
6
+ message: string;
7
+ };
8
+ export type LockToken = FieldMap<'Locktoken', ['token', 'id']> | LockTokenError;
9
+ export declare class LockService {
10
+ private apiRequestService;
11
+ private lockItems;
12
+ private promises;
13
+ constructor(apiRequestService: ApiRequestService);
14
+ getLocksSignal(): Signal<ItemMap<LockToken>>;
15
+ getLocks(): ItemMap<LockToken>;
16
+ hasLock(lockTokenId: ItemId): boolean;
17
+ isLocked(itemEntry: ItemEntry): boolean;
18
+ getMessage(itemEntry: ItemEntry): undefined | string;
19
+ fetchLock(itemEntry: ItemEntry): Promise<LockToken>;
20
+ deleteLock(itemEntry: ItemEntry): Promise<void>;
21
+ isRemoteLock(token: LockToken): token is LockTokenError;
22
+ private clearLock;
23
+ private requestLock;
24
+ private getValue;
25
+ private setPromise;
26
+ private setToken;
27
+ }
28
+ export {};
@@ -0,0 +1,20 @@
1
+ import { ApiItemType, ItemId } from '@rentman/backend-types';
2
+ import { ApiRequestItemMap, LinkTreeServiceInterface, TransactionCache } from '../internal';
3
+ export type ModuleChangesCompilationResult = {
4
+ itemType: ApiItemType;
5
+ itemId: ItemId;
6
+ items: ApiRequestItemMap;
7
+ };
8
+ export declare class ModuleChangesCompilation {
9
+ private linkTreeService;
10
+ private transaction;
11
+ destination: ApiRequestItemMap;
12
+ private itemsMappedOnParent;
13
+ private transactionChain;
14
+ constructor(linkTreeService: LinkTreeServiceInterface, transaction: TransactionCache);
15
+ process(): ModuleChangesCompilationResult;
16
+ private constructChildItemMap;
17
+ private processItems;
18
+ private processItem;
19
+ private getItemsByParent;
20
+ }
@@ -0,0 +1,42 @@
1
+ import { ApiItemType } from '@rentman/backend-types';
2
+ import { ChangesDeltaBase, ChangesDeltaBaseItemUpdateDelta, ChangesDeltaItemUpdateMode, ChildChangesDeltaItemCreateDelta, FieldMap, ItemEntry, ItemEntryService } from '../internal';
3
+ export interface ParentChangesDeltaItemUpdateDelta<ItemTypeType extends ApiItemType> extends ChangesDeltaBaseItemUpdateDelta<ItemTypeType> {
4
+ entry: ItemEntry<ItemTypeType>;
5
+ changes: {
6
+ fields: Readonly<FieldMap<ItemTypeType>>;
7
+ };
8
+ previous: Partial<FieldMap<ItemTypeType>> | null;
9
+ mode: ChangesDeltaItemUpdateMode;
10
+ }
11
+ /**
12
+ * @description
13
+ * ChangesDelta used internally by the core
14
+ *
15
+ * ----------
16
+ *
17
+ * The difference between {@link ParentChangesDelta ParentChangesDelta} and {@link ChangesDelta ChangesDelta} is that the ParentChangesDelta
18
+ * assumes 'created' entries are already existing, and deletedEntries don't have changes (since you cannot undo an action that happened on a parent on a child transaction)
19
+ *
20
+ * Use this when calling {@link TransactionCache.applyChangesFromParent applyChangesFromParent}
21
+ */
22
+ export declare class ParentChangesDelta extends ChangesDeltaBase {
23
+ updated: {
24
+ [itemEntryId: number]: ParentChangesDeltaItemUpdateDelta<any>;
25
+ };
26
+ created: {
27
+ [itemEntryId: string]: ChildChangesDeltaItemCreateDelta;
28
+ };
29
+ constructor(itemEntryService: ItemEntryService, queryItemTypes?: Iterable<ApiItemType>);
30
+ /**
31
+ * @param entry
32
+ * @param fields
33
+ * @param previous - The values of the affected fields before the changes were applied, or `null` if no changes have
34
+ * been made. Because of the nature of item changes also includes values on ancestor transactions.
35
+ * @param mode
36
+ */
37
+ setItemUpdated<ItemTypeType extends ApiItemType>(entry: ItemEntry<ItemTypeType>, fields: Readonly<Partial<FieldMap<ItemTypeType>>>, previous?: Partial<FieldMap<ItemTypeType>> | null, mode?: ChangesDeltaItemUpdateMode): this;
38
+ setItemDeleted(itemEntry: ItemEntry<any>): this;
39
+ setItemsDeleted(deleted: ItemEntry<any>[]): this;
40
+ setItemCreated<ItemTypeType extends ApiItemType>(itemEntry: ItemEntry<ItemTypeType>, fields: FieldMap<ItemTypeType>): void;
41
+ isEmpty(): boolean;
42
+ }
@@ -0,0 +1,16 @@
1
+ import { ApiFields, ApiItemType, ApiQueryOperator, ItemApiFields } from '@rentman/backend-types';
2
+ import { ApiQuery, ApiQueryConditionComparator, ApiQueryConditionIn, ApiQueryConditionLinkedTo, ApiQueryWithConditions, ApiRequestColumnArray, LinkTreeServiceInterface, QueryParserBase } from '../internal';
3
+ export declare class QueryColumnExtractor<ItemTypeType extends ApiItemType> extends QueryParserBase<ApiRequestColumnArray> {
4
+ private linkTreeService;
5
+ private itemType;
6
+ constructor(linkTreeService: LinkTreeServiceInterface, itemType: ItemTypeType);
7
+ protected parseEmptyQuery(): ApiRequestColumnArray<ItemTypeType>;
8
+ protected parseSubQuery<MainItemType extends ApiItemType, SubItemType extends ApiItemType>(key: keyof ItemApiFields<MainItemType>, itemType: SubItemType, field: keyof ItemApiFields<SubItemType>, query: ApiQuery<SubItemType>, _not: boolean, subQueryDepth: number): ApiRequestColumnArray<ItemTypeType>;
9
+ protected parseSearchQuery(): ApiRequestColumnArray<ItemTypeType>;
10
+ protected parseCustomQuery(): ApiRequestColumnArray<ItemTypeType>;
11
+ protected parseComparatorQuery<QueryItemType extends ApiItemType, ColumnId extends keyof ApiFields[QueryItemType]>(key: ApiQueryConditionComparator<QueryItemType, ColumnId>['key']): ApiRequestColumnArray<QueryItemType>;
12
+ protected parseInQuery<QueryItemType extends ApiItemType, ColumnId extends keyof ApiFields[QueryItemType]>(key: ApiQueryConditionIn<QueryItemType, ColumnId>['key'], _value: ApiQueryConditionIn<QueryItemType, ColumnId>['value']): ApiRequestColumnArray;
13
+ protected parseLinkedToQuery<SubItemType extends ApiItemType>(linkedTo: ApiQueryConditionLinkedTo<SubItemType>['linkedTo'], _query: Exclude<ApiQueryConditionLinkedTo<SubItemType>['query'], undefined>, reverse: boolean, _not: boolean, subQueryDepth: number): ApiRequestColumnArray<ItemTypeType>;
14
+ protected parseComplexQuery<QueryItemType extends ApiItemType>(conditions: ApiQueryWithConditions<QueryItemType>['conditions'], _operator: Extract<ApiQueryOperator, 'AND' | 'OR'>, _not: boolean, subQueryDepth: number): ApiRequestColumnArray<QueryItemType>;
15
+ private parseConditions;
16
+ }
@@ -0,0 +1,14 @@
1
+ import { ApiFields, ApiItemType, ApiQueryOperator, ItemApiFields } from '@rentman/backend-types';
2
+ import { ApiQuery, ApiQueryConditionComparator, ApiQueryConditionIn, ApiQueryConditionLinkedTo, ApiQueryWithConditions, QueryParserBase } from '../internal';
3
+ type ReturnType = boolean;
4
+ export declare class QueryContainsLocalIdParser extends QueryParserBase<ReturnType> {
5
+ protected parseEmptyQuery(): ReturnType;
6
+ protected parseSubQuery<MainItemType extends ApiItemType, SubItemType extends ApiItemType>(_key: keyof ItemApiFields<MainItemType>, _itemType: SubItemType, _field: keyof ItemApiFields<SubItemType>, query: ApiQuery<SubItemType>, _not: boolean, subQueryDepth: number): ReturnType;
7
+ protected parseSearchQuery(): ReturnType;
8
+ protected parseCustomQuery(): ReturnType;
9
+ protected parseComparatorQuery<ItemTypeType extends ApiItemType, ColumnId extends keyof ApiFields[ItemTypeType]>(_key: ApiQueryConditionComparator<ItemTypeType, ColumnId>['key'], value: ApiQueryConditionComparator<ItemTypeType, ColumnId>['value']): ReturnType;
10
+ protected parseInQuery<ItemTypeType extends ApiItemType, ColumnId extends keyof ApiFields[ItemTypeType]>(_key: ApiQueryConditionIn<ItemTypeType, ColumnId>['key'], value: ApiQueryConditionIn<ItemTypeType, ColumnId>['value']): ReturnType;
11
+ protected parseLinkedToQuery<SubItemType extends ApiItemType>(_linkedTo: ApiQueryConditionLinkedTo<SubItemType>['linkedTo'], query: Exclude<ApiQueryConditionLinkedTo<SubItemType>['query'], undefined>, _reverse: boolean, _not: boolean, subQueryDepth: number): ReturnType;
12
+ protected parseComplexQuery<ItemTypeType extends ApiItemType>(conditions: ApiQueryWithConditions<ItemTypeType>['conditions'], _operator: Extract<ApiQueryOperator, 'AND' | 'OR'>, _not: boolean, subQueryDepth: number): ReturnType;
13
+ }
14
+ export {};
@@ -0,0 +1,18 @@
1
+ import { ApiFields, ApiItemType, ApiQueryConditionCustom, ApiQueryConditionSearch, ApiQueryOperator, ItemApiFields } from '@rentman/backend-types';
2
+ import { ApiQuery, ApiQueryConditionComparator, ApiQueryConditionIn, ApiQueryConditionLinkedTo, ApiQueryWithConditions, CollectionQuery, QueryParserBase } from '../internal';
3
+ export declare class QueryParser extends QueryParserBase<CollectionQuery<any>> {
4
+ private static formatStringParameters;
5
+ private static formatValue;
6
+ private static processValue;
7
+ private static compareParsedQueries;
8
+ protected parseEmptyQuery(): CollectionQuery<ApiItemType>;
9
+ protected parseSubQuery<MainItemType extends ApiItemType, SubItemType extends ApiItemType>(key: keyof ItemApiFields<MainItemType>, itemType: SubItemType, field: keyof ItemApiFields<SubItemType>, query: ApiQuery<SubItemType>, not: boolean, subQueryDepth: number): CollectionQuery<MainItemType>;
10
+ protected parseSearchQuery<ItemTypeType extends ApiItemType>(value: ApiQueryConditionSearch['search'], not: boolean): CollectionQuery<ItemTypeType>;
11
+ protected parseCustomQuery<ItemTypeType extends ApiItemType, QueryType extends ApiQueryConditionCustom<ItemTypeType>>(custom: QueryType['custom'], parameters: QueryType['parameters'], not: boolean): CollectionQuery<ItemTypeType>;
12
+ protected parseComparatorQuery<ItemTypeType extends ApiItemType, ColumnId extends keyof ApiFields[ItemTypeType]>(key: ApiQueryConditionComparator<ItemTypeType, ColumnId>['key'], value: ApiQueryConditionComparator<ItemTypeType, ColumnId>['value'], comparator: ApiQueryConditionComparator<ItemTypeType, ColumnId>['comparator']): CollectionQuery<ItemTypeType>;
13
+ protected parseInQuery<ItemTypeType extends ApiItemType, ColumnId extends keyof ApiFields[ItemTypeType]>(key: ApiQueryConditionIn<ItemTypeType, ColumnId>['key'], value: ApiQueryConditionIn<ItemTypeType, ColumnId>['value'], not: boolean): CollectionQuery<ItemTypeType>;
14
+ protected parseLinkedToQuery<MainItemType extends ApiItemType, SubItemType extends ApiItemType>(linkedTo: ApiQueryConditionLinkedTo<SubItemType>['linkedTo'], query: Exclude<ApiQueryConditionLinkedTo<SubItemType>['query'], undefined>, reverse: boolean, not: boolean, subQueryDepth: number): CollectionQuery<MainItemType>;
15
+ protected parseComplexQuery<ItemTypeType extends ApiItemType>(conditions: ApiQueryWithConditions<ItemTypeType>['conditions'], operator: Extract<ApiQueryOperator, 'AND' | 'OR'>, not: boolean, subQueryDepth: number): CollectionQuery<ItemTypeType>;
16
+ private parseCustomParameters;
17
+ private parseConditions;
18
+ }
@@ -0,0 +1,32 @@
1
+ import { ApiFields, ApiItemType, ApiQueryConditionCustom, ApiQueryConditionSearch, ApiQueryOperator, ItemApiFields } from '@rentman/backend-types';
2
+ import { ApiQuery, ApiQueryConditionComparator, ApiQueryConditionIn, ApiQueryConditionLinkedTo, ApiQueryWithConditions } from '../internal';
3
+ /**
4
+ * When extending this class, note that:
5
+ * - It already provides default values (`not` for `IN` queries, `operator` for `conditions` queries, `field` for
6
+ * sub queries, etc.).
7
+ * - It normalizes comparators (`not` `=` becomes `!=`, etc.).
8
+ */
9
+ export declare abstract class QueryParserBase<ReturnType, ParseReturnType = ReturnType> {
10
+ private static normalizeOperator;
11
+ private static isLinkedToQuery;
12
+ private static isCustomQuery;
13
+ private static isSearchQuery;
14
+ private static isQueryWithConditions;
15
+ private static isSubQuery;
16
+ run<ItemTypeType extends ApiItemType>(query: ApiQuery<ItemTypeType>): ReturnType;
17
+ /**
18
+ * @param subQueryDepth As the query language supports nested queries, this parameter denotes how deeply we're
19
+ * nested. `subQueryDepth` should increase whenever this method is called from {@link parseSubQuery} or
20
+ * {@link parseLinkedToQuery}.
21
+ */
22
+ protected parseQuery<ItemTypeType extends ApiItemType>(query: unknown, subQueryDepth: number): ParseReturnType;
23
+ protected abstract parseEmptyQuery(): ParseReturnType;
24
+ protected abstract parseSubQuery<MainItemType extends ApiItemType, SubItemType extends ApiItemType>(key: keyof ItemApiFields<MainItemType>, itemType: SubItemType, field: keyof ItemApiFields<SubItemType>, query: ApiQuery<SubItemType>, not: boolean, subQueryDepth: number): ParseReturnType;
25
+ protected abstract parseSearchQuery(value: ApiQueryConditionSearch['search'], not: boolean): ParseReturnType;
26
+ protected abstract parseCustomQuery<ItemTypeType extends ApiItemType, QueryType extends ApiQueryConditionCustom<ItemTypeType>>(custom: QueryType['custom'], parameters: QueryType['parameters'], not: boolean): ParseReturnType;
27
+ protected abstract parseComparatorQuery<ItemTypeType extends ApiItemType, ColumnId extends keyof ApiFields[ItemTypeType]>(key: ApiQueryConditionComparator<ItemTypeType, ColumnId>['key'], value: ApiQueryConditionComparator<ItemTypeType, ColumnId>['value'], comparator: ApiQueryConditionComparator<ItemTypeType, ColumnId>['comparator'], query: ApiQueryConditionComparator<ItemTypeType, ColumnId>): ParseReturnType;
28
+ protected abstract parseInQuery<ItemTypeType extends ApiItemType, ColumnId extends keyof ApiFields[ItemTypeType]>(key: ApiQueryConditionIn<ItemTypeType, ColumnId>['key'], value: ApiQueryConditionIn<ItemTypeType, ColumnId>['value'], not: boolean): ParseReturnType;
29
+ protected abstract parseLinkedToQuery<SubItemType extends ApiItemType>(linkedTo: ApiQueryConditionLinkedTo<SubItemType>['linkedTo'], query: Exclude<ApiQueryConditionLinkedTo<SubItemType>['query'], undefined>, reverse: boolean, not: boolean, subQueryDepth: number): ParseReturnType;
30
+ protected abstract parseComplexQuery<ItemTypeType extends ApiItemType>(conditions: ApiQueryWithConditions<ItemTypeType>['conditions'], operator: Extract<ApiQueryOperator, 'AND' | 'OR'>, not: boolean, subQueryDepth: number): ParseReturnType;
31
+ private _parseSimpleQuery;
32
+ }