@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.
- package/dist/rm-core.js +2 -0
- package/dist/rm-core.js.map +1 -0
- package/dist/types/src/classes/ApiFormatter.d.ts +66 -0
- package/dist/types/src/classes/ApiRequestService.d.ts +18 -0
- package/dist/types/src/classes/ApiResponseProcessor.d.ts +31 -0
- package/dist/types/src/classes/BusinessLogicManager/AantalBusinessLogicRuleBase.d.ts +36 -0
- package/dist/types/src/classes/BusinessLogicManager/AantaltotaalBusinessLogicRuleBase.d.ts +60 -0
- package/dist/types/src/classes/BusinessLogicManager/Afspraak/AfspraakRecureindBusinessLogicRule.d.ts +5 -0
- package/dist/types/src/classes/BusinessLogicManager/Beschikbaarheid/BeschikbaarheidRecureindBusinessLogicRule.d.ts +5 -0
- package/dist/types/src/classes/BusinessLogicManager/BusinessLogicManager.d.ts +66 -0
- package/dist/types/src/classes/BusinessLogicManager/BusinessLogicRule.d.ts +81 -0
- package/dist/types/src/classes/BusinessLogicManager/BusinessLogicRuleApplyContext.d.ts +32 -0
- package/dist/types/src/classes/BusinessLogicManager/BusinessLogicRuleConditionContext.d.ts +41 -0
- package/dist/types/src/classes/BusinessLogicManager/BusinessLogicRuleContextBase.d.ts +58 -0
- package/dist/types/src/classes/BusinessLogicManager/Contact/ContactAddressBusinessLogicRule.d.ts +22 -0
- package/dist/types/src/classes/BusinessLogicManager/Customfield/CustomFieldLinkedItemTypeBusinessLogicRule.d.ts +18 -0
- package/dist/types/src/classes/BusinessLogicManager/Customfield/CustomFieldTypeBusinessLogicRule.d.ts +18 -0
- package/dist/types/src/classes/BusinessLogicManager/DefaultContactPersonUpdateBusinessLogicRule.d.ts +30 -0
- package/dist/types/src/classes/BusinessLogicManager/Documents/DocumentTemplateBusinessLogicRule.d.ts +20 -0
- package/dist/types/src/classes/BusinessLogicManager/Exemplaar/ExemplaarAanschafdatumBusinessLogicRule.d.ts +14 -0
- package/dist/types/src/classes/BusinessLogicManager/Exemplaar/ExemplaarBarcodeDeleteBusinessLogicRule.d.ts +14 -0
- package/dist/types/src/classes/BusinessLogicManager/Factuur/FactuurBetalingsconditieBusinessLogicRule.d.ts +21 -0
- package/dist/types/src/classes/BusinessLogicManager/Factuur/FactuurDatumBusinessLogicRule.d.ts +23 -0
- package/dist/types/src/classes/BusinessLogicManager/Factuur/FactuurNumberseriesBusinessLogicRule.d.ts +14 -0
- package/dist/types/src/classes/BusinessLogicManager/Files/FilesNameExtensionBusinessLogicRule.d.ts +20 -0
- package/dist/types/src/classes/BusinessLogicManager/Functie/FunctieNaaminternBusinessLogicRule.d.ts +18 -0
- package/dist/types/src/classes/BusinessLogicManager/Functie/FunctieRecureindBusinessLogicRule.d.ts +5 -0
- package/dist/types/src/classes/BusinessLogicManager/Functie/FunctieTwowayBusinessLogicRule.d.ts +14 -0
- package/dist/types/src/classes/BusinessLogicManager/Functiegroep/FunctiegroepSubprojectBusinessLogicRule.d.ts +17 -0
- package/dist/types/src/classes/BusinessLogicManager/Inhuurmateriaal/InhuurmateriaalAantalBusinessLogicRule.d.ts +4 -0
- package/dist/types/src/classes/BusinessLogicManager/Inhuurmateriaal/InhuurmateriaalAantaltotaalBusinessLogicRule.d.ts +9 -0
- package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalBulkToSerialBusinessLogicRule.d.ts +17 -0
- package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalIsCombinationBusinessLogicRule.d.ts +20 -0
- package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalIsPhysicalCombinationBulkBusinessLogicRule.d.ts +19 -0
- package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalSerialToBulkBusinessLogicRule.d.ts +16 -0
- package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalToPhysicalBusinessLogicRule.d.ts +18 -0
- package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalToVirtualBusinessLogicRule.d.ts +22 -0
- package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalTypePropertiesBusinessLogicRule.d.ts +19 -0
- package/dist/types/src/classes/BusinessLogicManager/Materiaal/MateriaalVerhuurBusinessLogicRule.d.ts +19 -0
- package/dist/types/src/classes/BusinessLogicManager/Materiaal/SurfaceArticleSizeBusinessLogicRule.d.ts +23 -0
- package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/LinkedTimeItemBusinessLogicRuleBase.d.ts +46 -0
- package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/LinkedTimeItemDurationBusinessLogicRule.d.ts +17 -0
- package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/LinkedTimeItemMateriaalCatBusinessLogicRule.d.ts +25 -0
- package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/LinkedTimeItemSubprojectBusinessLogicRule.d.ts +48 -0
- package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/LinkedTimeItemTimeSchemeBusinessLogicRule.d.ts +27 -0
- package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/LinkedTimeItemTimeSchemeStartBusinessLogicRule.d.ts +18 -0
- package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/LinkedTimeItemTimeValueStartBusinessLogicRule.d.ts +20 -0
- package/dist/types/src/classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/TimeColumnUtil.d.ts +132 -0
- package/dist/types/src/classes/BusinessLogicManager/OfferteContract/OfferteContractDatumBusinessLogicRule.d.ts +21 -0
- package/dist/types/src/classes/BusinessLogicManager/PlanningPersoneelTransport/PlanningPersoneelTransportBusinessLogicRule.d.ts +24 -0
- package/dist/types/src/classes/BusinessLogicManager/Planningmateriaal/PlanningmateriaalAantalBusinessLogicRule.d.ts +4 -0
- package/dist/types/src/classes/BusinessLogicManager/Planningmateriaal/PlanningmateriaalAantaltotaalBusinessLogicRule.d.ts +9 -0
- package/dist/types/src/classes/BusinessLogicManager/Planningmateriaal/PlanningmateriaalOptieBusinessLogicRule.d.ts +26 -0
- package/dist/types/src/classes/BusinessLogicManager/Planningmateriaal/PlanningmateriaalParentBusinessLogicRule.d.ts +17 -0
- package/dist/types/src/classes/BusinessLogicManager/Planningmateriaal/PlanningmateriaalStaysAtLocationBusinessLogicRule.d.ts +32 -0
- package/dist/types/src/classes/BusinessLogicManager/Project/ProjectClientChangedBusinessLogicRule.d.ts +31 -0
- package/dist/types/src/classes/BusinessLogicManager/Project/ProjectContactProjectNoteBusinessLogicRule.d.ts +25 -0
- package/dist/types/src/classes/BusinessLogicManager/Project/ProjectOneSubLocationAlignBusinessRule.d.ts +26 -0
- package/dist/types/src/classes/BusinessLogicManager/ProjectSubproject/ProjectSubprojectDefaultTimeBusinessLogicRule.d.ts +26 -0
- package/dist/types/src/classes/BusinessLogicManager/PurchaseOrder/PurchaseOrderApprovalStatusBusinessLogicRule.d.ts +19 -0
- package/dist/types/src/classes/BusinessLogicManager/PurchaseOrder/PurchaseOrderOwnerBusinessLogicRule.d.ts +16 -0
- package/dist/types/src/classes/BusinessLogicManager/Rate/RateUpdatedBusinessLogicRule.d.ts +14 -0
- package/dist/types/src/classes/BusinessLogicManager/RecurrentItem/RecurrentItemRecureindBusinessLogicRule.d.ts +28 -0
- package/dist/types/src/classes/BusinessLogicManager/Reparatie/ReparatieExemplaarAantalBusinessLogicRule.d.ts +14 -0
- package/dist/types/src/classes/BusinessLogicManager/Reparatie/ReparatieLostItemExemplaarLocationBusinessLogicRule.d.ts +21 -0
- package/dist/types/src/classes/BusinessLogicManager/Rol/RolEditOwnDataBusinessLogicRule.d.ts +20 -0
- package/dist/types/src/classes/BusinessLogicManager/Rol/RolFileAccessBusinessLogicRule.d.ts +19 -0
- package/dist/types/src/classes/BusinessLogicManager/Rol/RolPersoneelsplannerToegangBusinessLogicRule.d.ts +20 -0
- package/dist/types/src/classes/BusinessLogicManager/Rol/RolProjectenBewerkenBusinessLogicRule.d.ts +20 -0
- package/dist/types/src/classes/BusinessLogicManager/Rol/RolProjectenToegangBusinessLogicRule.d.ts +21 -0
- package/dist/types/src/classes/BusinessLogicManager/Rol/RolPurchaseOrderAttachPlanningBusinessLogicRule.d.ts +19 -0
- package/dist/types/src/classes/BusinessLogicManager/Rol/RolVisibilityFinancialsBusinessLogicRule.d.ts +35 -0
- package/dist/types/src/classes/BusinessLogicManager/Rol/RolWarehosueTrackingLogAccessBusinessLogicRule.d.ts +20 -0
- package/dist/types/src/classes/BusinessLogicManager/Setinhoud/SetinhoudCreateFixedBusinessLogicRule.d.ts +21 -0
- package/dist/types/src/classes/BusinessLogicManager/Setinhoud/SetinhoudUpdateFixedBusinessLogicRule.d.ts +26 -0
- package/dist/types/src/classes/BusinessLogicManager/Subproject/SubprojectInPlanningBusinessLogicRule.d.ts +14 -0
- package/dist/types/src/classes/BusinessLogicManager/Subproject/SubprojectOneSubLocationAlignBusinessRule.d.ts +27 -0
- package/dist/types/src/classes/BusinessLogicManager/Subproject/SubprojectOneSubNameAlignBusinessRule.d.ts +22 -0
- package/dist/types/src/classes/BusinessLogicManager/Tijd/TijdNameChangedBusinessLogicRule.d.ts +21 -0
- package/dist/types/src/classes/BusinessLogicManager/Tijd/TijdSubprojectChangedBusinessLogicRule.d.ts +17 -0
- package/dist/types/src/classes/BusinessLogicManager/Uren/HoursTypeBusinessLogicRuleBase.d.ts +10 -0
- package/dist/types/src/classes/BusinessLogicManager/Uren/UrenCalculatedDurationBusinessLogicRule.d.ts +13 -0
- package/dist/types/src/classes/BusinessLogicManager/Uren/UrenCanHaveActivitiesBusinessLogicRule.d.ts +13 -0
- package/dist/types/src/classes/BusinessLogicManager/businessLogicRule.decorator.d.ts +13 -0
- package/dist/types/src/classes/BusinessLogicManager/registeredBusinessLogicRules.d.ts +66 -0
- package/dist/types/src/classes/ChangesCompilation.d.ts +26 -0
- package/dist/types/src/classes/ChangesDelta.d.ts +81 -0
- package/dist/types/src/classes/ChangesDeltaBase.d.ts +85 -0
- package/dist/types/src/classes/ChangesProcessor.d.ts +35 -0
- package/dist/types/src/classes/ChildChangesDelta.d.ts +38 -0
- package/dist/types/src/classes/ColumnCache.d.ts +22 -0
- package/dist/types/src/classes/ColumnExpansion.d.ts +18 -0
- package/dist/types/src/classes/ColumnHandler.d.ts +16 -0
- package/dist/types/src/classes/ColumnInfo.d.ts +16 -0
- package/dist/types/src/classes/ColumnSet.d.ts +79 -0
- package/dist/types/src/classes/ColumnUtil.d.ts +97 -0
- package/dist/types/src/classes/ConversionMapService.d.ts +23 -0
- package/dist/types/src/classes/CreateRequest.d.ts +16 -0
- package/dist/types/src/classes/CreatedChangesDelta.d.ts +22 -0
- package/dist/types/src/classes/ItemCache.d.ts +26 -0
- package/dist/types/src/classes/ItemCreateService.d.ts +14 -0
- package/dist/types/src/classes/ItemEntryService.d.ts +29 -0
- package/dist/types/src/classes/KeyService.d.ts +10 -0
- package/dist/types/src/classes/LockService.d.ts +28 -0
- package/dist/types/src/classes/ModuleChangesCompilation.d.ts +20 -0
- package/dist/types/src/classes/ParentChangesDelta.d.ts +42 -0
- package/dist/types/src/classes/QueryColumnExtractor.d.ts +16 -0
- package/dist/types/src/classes/QueryContainsLocalIdParser.d.ts +14 -0
- package/dist/types/src/classes/QueryParser.d.ts +18 -0
- package/dist/types/src/classes/QueryParserBase.d.ts +32 -0
- package/dist/types/src/classes/QueryParserIdUpdater.d.ts +16 -0
- package/dist/types/src/classes/QueryService.d.ts +10 -0
- package/dist/types/src/classes/RequestBuffer/RequestBuffer.d.ts +13 -0
- package/dist/types/src/classes/RequestBuffer/RequestBufferBase.d.ts +37 -0
- package/dist/types/src/classes/RequestBuffer/RequestBufferManager.d.ts +24 -0
- package/dist/types/src/classes/RequestBuffer/SingleQueryRequestBuffer.d.ts +18 -0
- package/dist/types/src/classes/RequestColumnExpansion.d.ts +11 -0
- package/dist/types/src/classes/RequestColumnsOperationsCache.d.ts +45 -0
- package/dist/types/src/classes/SocketMessageHandler.d.ts +28 -0
- package/dist/types/src/classes/TemplateCache.d.ts +61 -0
- package/dist/types/src/classes/Util.d.ts +36 -0
- package/dist/types/src/classes/cache/AbstractCache.d.ts +86 -0
- package/dist/types/src/classes/cache/CachedQueryHandlerBase.d.ts +145 -0
- package/dist/types/src/classes/cache/ItemHandlerBase.d.ts +97 -0
- package/dist/types/src/classes/cache/ItemMatcherBase.d.ts +90 -0
- package/dist/types/src/classes/cache/server/ServerCache.d.ts +83 -0
- package/dist/types/src/classes/cache/server/ServerCachedQueryHandler.d.ts +29 -0
- package/dist/types/src/classes/cache/server/ServerItemHandler.d.ts +35 -0
- package/dist/types/src/classes/cache/transaction/TransactionCache.d.ts +342 -0
- package/dist/types/src/classes/cache/transaction/TransactionCachedQueryHandler.d.ts +111 -0
- package/dist/types/src/classes/cache/transaction/TransactionEventHandler.d.ts +17 -0
- package/dist/types/src/classes/cache/transaction/TransactionItemHandler.d.ts +121 -0
- package/dist/types/src/classes/cache/transaction/TransactionValidator.d.ts +25 -0
- package/dist/types/src/classes/cache/transaction/TransactionValidatorBase.d.ts +19 -0
- package/dist/types/src/classes/cache/transaction/TransactionValidatorWithDependencies.d.ts +15 -0
- package/dist/types/src/classes/changes/CollectionItemChangesListenerContext.d.ts +22 -0
- package/dist/types/src/classes/changes/ItemChangesListenerContext.d.ts +7 -0
- package/dist/types/src/classes/changes/ItemChangesListenerContextBase.d.ts +44 -0
- package/dist/types/src/classes/matcher/CompatorQueryNode.d.ts +24 -0
- package/dist/types/src/classes/matcher/CustomQueryNode.d.ts +8 -0
- package/dist/types/src/classes/matcher/GraphQueryParser.d.ts +34 -0
- package/dist/types/src/classes/matcher/IsComparatorQueryNode.d.ts +13 -0
- package/dist/types/src/classes/matcher/LinkedToQueryNode.d.ts +9 -0
- package/dist/types/src/classes/matcher/NonMatchableQueryNode.d.ts +9 -0
- package/dist/types/src/classes/matcher/NotIsComparatorQueryNode.d.ts +14 -0
- package/dist/types/src/classes/matcher/QueryNode.d.ts +49 -0
- package/dist/types/src/classes/matcher/RootQueryNode.d.ts +14 -0
- package/dist/types/src/classes/matcher/SearchQueryNode.d.ts +8 -0
- package/dist/types/src/classes/matcher/SubQueryNode.d.ts +8 -0
- package/dist/types/src/classes/matcher/ValueTransformers.d.ts +41 -0
- package/dist/types/src/classes/matcher/ValuelessEdgeQueryNode.d.ts +11 -0
- package/dist/types/src/classes/matcher/greater-smaller-than-comparator-query.node.d.ts +25 -0
- package/dist/types/src/constants.d.ts +2 -0
- package/dist/types/src/core.d.ts +63 -0
- package/dist/types/src/exceptions/CriticalBusinessLogicRuleException.d.ts +4 -0
- package/dist/types/src/exceptions/ItemAlreadyExistsException.d.ts +4 -0
- package/dist/types/src/exceptions/ItemLockedException.d.ts +2 -0
- package/dist/types/src/exceptions/ItemNotFoundException.d.ts +5 -0
- package/dist/types/src/exceptions/MissingColumnException.d.ts +6 -0
- package/dist/types/src/exceptions/SavingInProgressException.d.ts +2 -0
- package/dist/types/src/exceptions/TransactionPendingException.d.ts +2 -0
- package/dist/types/src/factories/ApiResponseProcessorFactory.d.ts +5 -0
- package/dist/types/src/factories/ChangesCompilationFactory.d.ts +5 -0
- package/dist/types/src/factories/ChangesDeltaFactory.d.ts +13 -0
- package/dist/types/src/factories/CollectionResourceFactory.d.ts +20 -0
- package/dist/types/src/factories/ColumnExpansionFactory.d.ts +7 -0
- package/dist/types/src/factories/ColumnInfoFactory.d.ts +7 -0
- package/dist/types/src/factories/ColumnSetFactory.d.ts +15 -0
- package/dist/types/src/factories/GraphQueryParserFactory.d.ts +10 -0
- package/dist/types/src/factories/ItemCacheFactory.d.ts +7 -0
- package/dist/types/src/factories/ItemResourceFactory.d.ts +7 -0
- package/dist/types/src/factories/ModuleChangesCompilationFactory.d.ts +6 -0
- package/dist/types/src/factories/RequestColumnExpansionFactory.d.ts +4 -0
- package/dist/types/src/factories/RequestColumnsOperationsCacheFactory.d.ts +7 -0
- package/dist/types/src/factories/TransactionCacheFactory.d.ts +12 -0
- package/dist/types/src/index.d.ts +11 -0
- package/dist/types/src/interfaces/AbstractCacheDependencyInterface.d.ts +46 -0
- package/dist/types/src/interfaces/ApiRequestServiceInterface.d.ts +14 -0
- package/dist/types/src/interfaces/ErrorHandlerInterface.d.ts +6 -0
- package/dist/types/src/interfaces/LinkTreeServiceInterface.d.ts +6 -0
- package/dist/types/src/interfaces/ServerCacheDependencyInterface.d.ts +6 -0
- package/dist/types/src/interfaces/SocketMessageInterface.d.ts +3 -0
- package/dist/types/src/interfaces/TransactionCollectionHandlerDependencyInterface.d.ts +15 -0
- package/dist/types/src/interfaces/TransactionItemHandlerDependencyInterface.d.ts +16 -0
- package/dist/types/src/internal.d.ts +110 -0
- package/dist/types/src/models/CachedQueryItem.d.ts +33 -0
- package/dist/types/src/models/CollectionEntry.d.ts +16 -0
- package/dist/types/src/models/CollectionOptions.d.ts +111 -0
- package/dist/types/src/models/CollectionResource.d.ts +175 -0
- package/dist/types/src/models/ItemEntry.d.ts +23 -0
- package/dist/types/src/models/ItemOptions.d.ts +25 -0
- package/dist/types/src/models/ItemResource.d.ts +135 -0
- package/dist/types/src/models/LimitedCollectionResource.d.ts +26 -0
- package/dist/types/src/models/OrderedCollectionResource.d.ts +19 -0
- package/dist/types/src/models/Template.d.ts +17 -0
- package/dist/types/src/services/rm-holidays.service.d.ts +31 -0
- package/dist/types/src/types/AggregatedChangesListener.d.ts +99 -0
- package/dist/types/src/types/ApiQuery.d.ts +95 -0
- package/dist/types/src/types/ItemTypesCollection.d.ts +416 -0
- package/package.json +56 -0
- package/readme.md +42 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { ApiRequestColumns, ChildCollectionResources, ErrorHandlerInterface, ItemEntry, ItemResource, TransactionCache } from '../internal';
|
|
3
|
+
export declare class ItemResourceFactory {
|
|
4
|
+
errorHandler: ErrorHandlerInterface;
|
|
5
|
+
constructor(errorHandler: ErrorHandlerInterface);
|
|
6
|
+
construct<ItemTypeType extends ApiItemType, RequestColumns extends ApiRequestColumns<ItemTypeType>, Children extends ChildCollectionResources | undefined>(itemEntry: ItemEntry<ItemTypeType>, transaction: TransactionCache, isNew?: boolean, abortSignal?: AbortSignal): ItemResource<ItemTypeType, RequestColumns, Children>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { LinkTreeServiceInterface, ModuleChangesCompilation, TransactionCache } from '../internal';
|
|
2
|
+
export declare class ModuleChangesCompilationFactory {
|
|
3
|
+
private linkTreeService;
|
|
4
|
+
constructor(linkTreeService: LinkTreeServiceInterface);
|
|
5
|
+
construct(transaction: TransactionCache): ModuleChangesCompilation;
|
|
6
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { ApiRequestColumns, ColumnCache, RequestColumnsOperationsCache } from '../internal';
|
|
3
|
+
export declare class RequestColumnsOperationsCacheFactory {
|
|
4
|
+
private columnCache;
|
|
5
|
+
constructor(columnCache: ColumnCache);
|
|
6
|
+
construct<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, requestColumns: ApiRequestColumns<ItemTypeType>): RequestColumnsOperationsCache<ItemTypeType>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ApiFieldsOnDeleteRule } from '@rentman/backend-types';
|
|
2
|
+
import { RmCore, ServerCache, ServerCacheDependencyInterface, TransactionCache, TransactionOptions, TransactionValidatorFactory } from '../internal';
|
|
3
|
+
export declare class TransactionCacheFactory {
|
|
4
|
+
private readonly serverCache;
|
|
5
|
+
constructor(serverCacheDependencies: ServerCacheDependencyInterface, apiFieldsOnDeleteRule: typeof ApiFieldsOnDeleteRule, core: RmCore);
|
|
6
|
+
/**
|
|
7
|
+
* Todo[cache] Store a map of all transactions by transaction id ?
|
|
8
|
+
*/
|
|
9
|
+
getById(id: string): TransactionCache | undefined;
|
|
10
|
+
construct(id?: string, validatorFactory?: TransactionValidatorFactory, transactionOptions?: TransactionOptions): TransactionCache;
|
|
11
|
+
getServerCache(): ServerCache;
|
|
12
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './internal';
|
|
2
|
+
export * from './classes/BusinessLogicManager/Materiaal/MateriaalIsCombinationBusinessLogicRule';
|
|
3
|
+
export * from './classes/BusinessLogicManager/Materiaal/MateriaalBulkToSerialBusinessLogicRule';
|
|
4
|
+
export * from './classes/BusinessLogicManager/Materiaal/MateriaalSerialToBulkBusinessLogicRule';
|
|
5
|
+
export * from './classes/BusinessLogicManager/Materiaal/MateriaalToPhysicalBusinessLogicRule';
|
|
6
|
+
export * from './classes/BusinessLogicManager/Materiaal/MateriaalToVirtualBusinessLogicRule';
|
|
7
|
+
export * from './classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/LinkedTimeItemSubprojectBusinessLogicRule';
|
|
8
|
+
export * from './classes/BusinessLogicManager/Project/ProjectClientChangedBusinessLogicRule';
|
|
9
|
+
export * from './classes/BusinessLogicManager/PurchaseOrder/PurchaseOrderOwnerBusinessLogicRule';
|
|
10
|
+
export * from './classes/BusinessLogicManager/Subproject/SubprojectInPlanningBusinessLogicRule';
|
|
11
|
+
export * from './services/rm-holidays.service';
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ApiRequestService } from '../classes/ApiRequestService';
|
|
2
|
+
import { BusinessLogicManager } from '../classes/BusinessLogicManager/BusinessLogicManager';
|
|
3
|
+
import { ColumnCache } from '../classes/ColumnCache';
|
|
4
|
+
import { ColumnHandler } from '../classes/ColumnHandler';
|
|
5
|
+
import { ConversionMapService } from '../classes/ConversionMapService';
|
|
6
|
+
import { ItemCreateService } from '../classes/ItemCreateService';
|
|
7
|
+
import { ItemEntryService } from '../classes/ItemEntryService';
|
|
8
|
+
import { LockService } from '../classes/LockService';
|
|
9
|
+
import { QueryService } from '../classes/QueryService';
|
|
10
|
+
import { TemplateCache } from '../classes/TemplateCache';
|
|
11
|
+
import { ChangesDeltaFactory } from '../factories/ChangesDeltaFactory';
|
|
12
|
+
import { CollectionResourceFactory } from '../factories/CollectionResourceFactory';
|
|
13
|
+
import { ColumnExpansionFactory } from '../factories/ColumnExpansionFactory';
|
|
14
|
+
import { ColumnSetFactory } from '../factories/ColumnSetFactory';
|
|
15
|
+
import { GraphQueryParserFactory } from '../factories/GraphQueryParserFactory';
|
|
16
|
+
import { ItemCacheFactory } from '../factories/ItemCacheFactory';
|
|
17
|
+
import { ItemResourceFactory } from '../factories/ItemResourceFactory';
|
|
18
|
+
import { ModuleChangesCompilationFactory } from '../factories/ModuleChangesCompilationFactory';
|
|
19
|
+
import { RequestColumnExpansionFactory } from '../factories/RequestColumnExpansionFactory';
|
|
20
|
+
import { RequestColumnsOperationsCacheFactory } from '../factories/RequestColumnsOperationsCacheFactory';
|
|
21
|
+
import { ErrorHandlerInterface } from './ErrorHandlerInterface';
|
|
22
|
+
import { LinkTreeServiceInterface } from './LinkTreeServiceInterface';
|
|
23
|
+
export interface AbstractCacheDependencyInterface {
|
|
24
|
+
apiRequestService: ApiRequestService;
|
|
25
|
+
businessLogicManager: BusinessLogicManager;
|
|
26
|
+
changesDeltaFactory: ChangesDeltaFactory;
|
|
27
|
+
collectionResourceFactory: CollectionResourceFactory;
|
|
28
|
+
columnCache: ColumnCache;
|
|
29
|
+
columnExpansionFactory: ColumnExpansionFactory;
|
|
30
|
+
columnHandler: ColumnHandler;
|
|
31
|
+
columnSetFactory: ColumnSetFactory;
|
|
32
|
+
conversionMapService: ConversionMapService;
|
|
33
|
+
errorHandler: ErrorHandlerInterface;
|
|
34
|
+
graphQueryParserFactory: GraphQueryParserFactory;
|
|
35
|
+
itemCacheFactory: ItemCacheFactory;
|
|
36
|
+
itemCreateService: ItemCreateService;
|
|
37
|
+
itemEntryService: ItemEntryService;
|
|
38
|
+
itemResourceFactory: ItemResourceFactory;
|
|
39
|
+
linkTreeService: LinkTreeServiceInterface;
|
|
40
|
+
lockService: LockService;
|
|
41
|
+
moduleChangesCompilationFactory: ModuleChangesCompilationFactory;
|
|
42
|
+
queryService: QueryService;
|
|
43
|
+
requestColumnExpansionFactory: RequestColumnExpansionFactory;
|
|
44
|
+
requestColumnsOperationsCacheFactory: RequestColumnsOperationsCacheFactory;
|
|
45
|
+
templateCache: TemplateCache;
|
|
46
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ApiItemType, ItemId } from '@rentman/backend-types';
|
|
2
|
+
import { ApiRequestColumnMap, ApiRequestColumns, ApiRequestItemMap, ApiRequestLimit } from '../internal';
|
|
3
|
+
export interface ApiRequestServiceInterface {
|
|
4
|
+
template(itemType: ApiItemType, params: any): Promise<any>;
|
|
5
|
+
create(itemType: ApiItemType, itemId: ItemId, values: any, columns: ApiRequestColumnMap, parentType?: ApiItemType, parentId?: ItemId, uniqueTransactionId?: string): Promise<any>;
|
|
6
|
+
delete(itemType: ApiItemType, itemIds: ItemId[], uniqueTransactionId?: string): Promise<any>;
|
|
7
|
+
updateItems(itemType: ApiItemType, items: ApiRequestItemMap, columns: ApiRequestColumnMap, uniqueTransactionId?: string): Promise<any>;
|
|
8
|
+
requestSkeleton(params: any, requestCanceler?: Promise<any>): Promise<any>;
|
|
9
|
+
columns(itemType: ApiItemType, columns: {
|
|
10
|
+
[itemType: string]: ApiRequestColumns | true;
|
|
11
|
+
}, params?: any): Promise<any>;
|
|
12
|
+
query(itemType: ApiItemType, query: any, columns: ApiRequestColumnMap, limit?: ApiRequestLimit): Promise<any>;
|
|
13
|
+
_module(module: string, method: string, params: Record<string, unknown>): Promise<any>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { ApiLinkTree, ApiRequestColumnArray } from '../internal';
|
|
3
|
+
export interface LinkTreeServiceInterface {
|
|
4
|
+
get: () => ApiLinkTree;
|
|
5
|
+
getColumnsFromLink<ParentItemType extends ApiItemType, ChildItemType extends ApiItemType>(parentType: ParentItemType, itemType: ChildItemType): ApiRequestColumnArray<ChildItemType>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AbstractCacheDependencyInterface, ApiRequestService, ChangesCompilationFactory, ItemCreateService } from '../internal';
|
|
2
|
+
export interface ServerCacheDependencyInterface extends AbstractCacheDependencyInterface {
|
|
3
|
+
apiRequestService: ApiRequestService;
|
|
4
|
+
itemCreateService: ItemCreateService;
|
|
5
|
+
changesCompilationFactory: ChangesCompilationFactory;
|
|
6
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { GraphQueryParserFactory } from '../factories/GraphQueryParserFactory';
|
|
2
|
+
import { ApiRequestService, ChangesDeltaFactory, ColumnCache, ColumnExpansionFactory, ColumnHandler, ErrorHandlerInterface, LinkTreeServiceInterface, QueryService, RequestColumnExpansionFactory, RequestColumnsOperationsCacheFactory } from '../internal';
|
|
3
|
+
export interface TransactionCollectionHandlerDependencyInterface {
|
|
4
|
+
apiRequestService: ApiRequestService;
|
|
5
|
+
changesDeltaFactory: ChangesDeltaFactory;
|
|
6
|
+
columnCache: ColumnCache;
|
|
7
|
+
columnExpansionFactory: ColumnExpansionFactory;
|
|
8
|
+
columnHandler: ColumnHandler;
|
|
9
|
+
errorHandler: ErrorHandlerInterface;
|
|
10
|
+
linkTreeService: LinkTreeServiceInterface;
|
|
11
|
+
queryService: QueryService;
|
|
12
|
+
requestColumnExpansionFactory: RequestColumnExpansionFactory;
|
|
13
|
+
requestColumnsOperationsCacheFactory: RequestColumnsOperationsCacheFactory;
|
|
14
|
+
graphQueryParserFactory: GraphQueryParserFactory;
|
|
15
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ChangesDeltaFactory, ColumnCache, ColumnExpansionFactory, ColumnHandler, ColumnSetFactory, ConversionMapService, ErrorHandlerInterface, ItemCacheFactory, ItemCreateService, ItemEntryService, RequestColumnExpansionFactory, RequestColumnsOperationsCacheFactory, TemplateCache } from '../internal';
|
|
2
|
+
export interface TransactionItemHandlerDependencyInterface {
|
|
3
|
+
changesDeltaFactory: ChangesDeltaFactory;
|
|
4
|
+
columnExpansionFactory: ColumnExpansionFactory;
|
|
5
|
+
columnHandler: ColumnHandler;
|
|
6
|
+
columnCache: ColumnCache;
|
|
7
|
+
columnSetFactory: ColumnSetFactory;
|
|
8
|
+
conversionMapService: ConversionMapService;
|
|
9
|
+
errorHandler: ErrorHandlerInterface;
|
|
10
|
+
itemCacheFactory: ItemCacheFactory;
|
|
11
|
+
itemCreateService: ItemCreateService;
|
|
12
|
+
itemEntryService: ItemEntryService;
|
|
13
|
+
requestColumnExpansionFactory: RequestColumnExpansionFactory;
|
|
14
|
+
requestColumnsOperationsCacheFactory: RequestColumnsOperationsCacheFactory;
|
|
15
|
+
templateCache: TemplateCache;
|
|
16
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This is the only place where things should be exported. *All files* should import from this file.
|
|
3
|
+
* Exports here should be ordered by inheritance.
|
|
4
|
+
*/
|
|
5
|
+
export * from './constants';
|
|
6
|
+
export * from './types/ItemTypesCollection';
|
|
7
|
+
export * from './types/ApiQuery';
|
|
8
|
+
export * from './types/AggregatedChangesListener';
|
|
9
|
+
export * from './models/ItemOptions';
|
|
10
|
+
export * from './models/ItemEntry';
|
|
11
|
+
export * from './models/ItemResource';
|
|
12
|
+
export * from './models/CachedQueryItem';
|
|
13
|
+
export * from './models/CollectionOptions';
|
|
14
|
+
export * from './models/CollectionEntry';
|
|
15
|
+
export * from './models/CollectionResource';
|
|
16
|
+
export * from './models/OrderedCollectionResource';
|
|
17
|
+
export * from './models/LimitedCollectionResource';
|
|
18
|
+
export * from './models/Template';
|
|
19
|
+
export * from './interfaces/ErrorHandlerInterface';
|
|
20
|
+
export * from './interfaces/ApiRequestServiceInterface';
|
|
21
|
+
export * from './interfaces/SocketMessageInterface';
|
|
22
|
+
export * from './interfaces/LinkTreeServiceInterface';
|
|
23
|
+
export * from './classes/Util';
|
|
24
|
+
export * from './classes/ApiFormatter';
|
|
25
|
+
export * from './classes/ApiRequestService';
|
|
26
|
+
export * from './classes/ApiResponseProcessor';
|
|
27
|
+
export * from './classes/ChangesCompilation';
|
|
28
|
+
export * from './classes/ChangesProcessor';
|
|
29
|
+
export * from './classes/ColumnCache';
|
|
30
|
+
export * from './classes/ColumnExpansion';
|
|
31
|
+
export * from './classes/ColumnHandler';
|
|
32
|
+
export * from './classes/ColumnInfo';
|
|
33
|
+
export * from './classes/ColumnSet';
|
|
34
|
+
export * from './classes/RequestColumnsOperationsCache';
|
|
35
|
+
export * from './classes/ColumnUtil';
|
|
36
|
+
export * from './classes/ConversionMapService';
|
|
37
|
+
export * from './classes/CreateRequest';
|
|
38
|
+
export * from './classes/ItemCache';
|
|
39
|
+
export * from './classes/ItemEntryService';
|
|
40
|
+
export * from './classes/KeyService';
|
|
41
|
+
export * from './classes/cache/transaction/TransactionEventHandler';
|
|
42
|
+
export * from './classes/LockService';
|
|
43
|
+
export * from './classes/ModuleChangesCompilation';
|
|
44
|
+
export * from './classes/matcher/GraphQueryParser';
|
|
45
|
+
export * from './classes/QueryParserBase';
|
|
46
|
+
export * from './classes/QueryColumnExtractor';
|
|
47
|
+
export * from './classes/QueryContainsLocalIdParser';
|
|
48
|
+
export * from './classes/QueryParser';
|
|
49
|
+
export * from './classes/QueryParserIdUpdater';
|
|
50
|
+
export * from './classes/QueryService';
|
|
51
|
+
export * from './classes/RequestColumnExpansion';
|
|
52
|
+
export * from './classes/SocketMessageHandler';
|
|
53
|
+
export * from './classes/cache/AbstractCache';
|
|
54
|
+
export * from './classes/cache/server/ServerCache';
|
|
55
|
+
export * from './classes/cache/ItemMatcherBase';
|
|
56
|
+
export * from './classes/cache/ItemHandlerBase';
|
|
57
|
+
export * from './classes/cache/server/ServerItemHandler';
|
|
58
|
+
export * from './classes/cache/CachedQueryHandlerBase';
|
|
59
|
+
export * from './classes/cache/server/ServerCachedQueryHandler';
|
|
60
|
+
export * from './classes/cache/transaction/TransactionCache';
|
|
61
|
+
export * from './classes/cache/transaction/TransactionItemHandler';
|
|
62
|
+
export * from './classes/cache/transaction/TransactionCachedQueryHandler';
|
|
63
|
+
export * from './classes/cache/transaction/TransactionEventHandler';
|
|
64
|
+
export * from './classes/cache/transaction/TransactionValidator';
|
|
65
|
+
export * from './classes/cache/transaction/TransactionValidatorWithDependencies';
|
|
66
|
+
export * from './classes/ChangesDeltaBase';
|
|
67
|
+
export * from './classes/ChangesDelta';
|
|
68
|
+
export * from './classes/ChildChangesDelta';
|
|
69
|
+
export * from './classes/ParentChangesDelta';
|
|
70
|
+
export * from './classes/RequestBuffer/RequestBufferBase';
|
|
71
|
+
export * from './classes/RequestBuffer/RequestBuffer';
|
|
72
|
+
export * from './classes/RequestBuffer/SingleQueryRequestBuffer';
|
|
73
|
+
export * from './classes/RequestBuffer/RequestBufferManager';
|
|
74
|
+
export * from './classes/ItemCreateService';
|
|
75
|
+
export * from './classes/CreatedChangesDelta';
|
|
76
|
+
export * from './classes/TemplateCache';
|
|
77
|
+
export * from './classes/changes/ItemChangesListenerContextBase';
|
|
78
|
+
export * from './classes/changes/ItemChangesListenerContext';
|
|
79
|
+
export * from './classes/changes/CollectionItemChangesListenerContext';
|
|
80
|
+
export * from './classes/BusinessLogicManager/BusinessLogicRuleContextBase';
|
|
81
|
+
export * from './classes/BusinessLogicManager/BusinessLogicRuleConditionContext';
|
|
82
|
+
export * from './classes/BusinessLogicManager/BusinessLogicRuleApplyContext';
|
|
83
|
+
export * from './classes/BusinessLogicManager/BusinessLogicRule';
|
|
84
|
+
export * from './classes/BusinessLogicManager/businessLogicRule.decorator';
|
|
85
|
+
export * from './classes/BusinessLogicManager/registeredBusinessLogicRules';
|
|
86
|
+
export * from './classes/BusinessLogicManager/BusinessLogicManager';
|
|
87
|
+
export * from './classes/BusinessLogicManager/MateriaalCatFunctieFunctiegroep/TimeColumnUtil';
|
|
88
|
+
export * from './factories/ApiResponseProcessorFactory';
|
|
89
|
+
export * from './factories/ChangesCompilationFactory';
|
|
90
|
+
export * from './factories/CollectionResourceFactory';
|
|
91
|
+
export * from './factories/ColumnExpansionFactory';
|
|
92
|
+
export * from './factories/ColumnInfoFactory';
|
|
93
|
+
export * from './factories/ColumnSetFactory';
|
|
94
|
+
export * from './factories/RequestColumnsOperationsCacheFactory';
|
|
95
|
+
export * from './factories/ItemCacheFactory';
|
|
96
|
+
export * from './factories/ItemResourceFactory';
|
|
97
|
+
export * from './factories/TransactionCacheFactory';
|
|
98
|
+
export * from './factories/ModuleChangesCompilationFactory';
|
|
99
|
+
export * from './factories/RequestColumnExpansionFactory';
|
|
100
|
+
export * from './factories/ChangesDeltaFactory';
|
|
101
|
+
export * from './interfaces/AbstractCacheDependencyInterface';
|
|
102
|
+
export * from './interfaces/TransactionItemHandlerDependencyInterface';
|
|
103
|
+
export * from './interfaces/TransactionCollectionHandlerDependencyInterface';
|
|
104
|
+
export * from './interfaces/ServerCacheDependencyInterface';
|
|
105
|
+
export * from './exceptions/ItemAlreadyExistsException';
|
|
106
|
+
export * from './exceptions/ItemLockedException';
|
|
107
|
+
export * from './exceptions/ItemNotFoundException';
|
|
108
|
+
export * from './exceptions/SavingInProgressException';
|
|
109
|
+
export * from './exceptions/CriticalBusinessLogicRuleException';
|
|
110
|
+
export * from './core';
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { RootQueryNode } from '../classes/matcher/RootQueryNode';
|
|
3
|
+
import { CollectionQuery, ItemEntry, RequestColumnsTuple } from '../internal';
|
|
4
|
+
export declare class CachedQueryItem<ItemTypeType extends ApiItemType = any> {
|
|
5
|
+
readonly itemType: ItemTypeType;
|
|
6
|
+
readonly query: CollectionQuery<ItemTypeType>;
|
|
7
|
+
readonly queryGraph: RootQueryNode<ItemTypeType>;
|
|
8
|
+
items: ItemEntry<ItemTypeType>[];
|
|
9
|
+
requestColumnsTuple: RequestColumnsTuple<ItemTypeType>;
|
|
10
|
+
promise: Promise<this>;
|
|
11
|
+
creation: Date;
|
|
12
|
+
private deferred;
|
|
13
|
+
private outdated;
|
|
14
|
+
constructor(itemType: ItemTypeType, query: CollectionQuery<ItemTypeType>, queryGraph: RootQueryNode<ItemTypeType>, items: ItemEntry<ItemTypeType>[], requestColumnsTuple: RequestColumnsTuple<ItemTypeType>);
|
|
15
|
+
isOutdated(): boolean;
|
|
16
|
+
markOutdated(): void;
|
|
17
|
+
markUpToDate(): void;
|
|
18
|
+
itemsResolved(): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Resolve can be called on items that are already resolved. The request buffer might or might not combine
|
|
21
|
+
* requests together.
|
|
22
|
+
*/
|
|
23
|
+
resolve(): void;
|
|
24
|
+
reject(reason: any): void;
|
|
25
|
+
/**
|
|
26
|
+
* Updates the items in the collection resource, given the results of a query matching cycle.
|
|
27
|
+
*
|
|
28
|
+
* Note: In order to reduce back-end requests for non-locally matchable queries, `fittingItemEntries` may contain item
|
|
29
|
+
* entries that are already present in the collection, and `nonFittingItemEntries` may contain item entries that
|
|
30
|
+
* are not present in the collection.
|
|
31
|
+
*/
|
|
32
|
+
handleMatchedItemEntries(fittingItemEntries: Iterable<ItemEntry<ItemTypeType>>, nonFittingItemEntries: Set<ItemEntry<ItemTypeType>> | undefined): void;
|
|
33
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { CollectionQuery, ColumnExpansion, ColumnSet, EntryParentNull, QueryService, RootCollectionOptionsBase } from '../internal';
|
|
3
|
+
export declare class CollectionEntry<ItemTypeType extends ApiItemType> {
|
|
4
|
+
private queryService;
|
|
5
|
+
options: Readonly<RootCollectionOptionsBase<ItemTypeType>>;
|
|
6
|
+
readonly query: CollectionQuery<ItemTypeType>;
|
|
7
|
+
columns: ColumnSet<ItemTypeType>;
|
|
8
|
+
private static currentId;
|
|
9
|
+
id: number;
|
|
10
|
+
itemType: ItemTypeType;
|
|
11
|
+
parent: EntryParentNull;
|
|
12
|
+
promise: Promise<this>;
|
|
13
|
+
constructor(queryService: QueryService, options: Readonly<RootCollectionOptionsBase<ItemTypeType>>, query: CollectionQuery<ItemTypeType>, columns: ColumnSet<ItemTypeType>);
|
|
14
|
+
isLocal(): boolean;
|
|
15
|
+
expandColumns(columnExpansion: ColumnExpansion<ItemTypeType>): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { AggregatedChangesListener, ApiQuery, ApiRequestColumnArray, ApiRequestColumns, ChildCollectionResources, CollectionItemChangesListener, CollectionResource, EntryParent, ItemEntry, ItemResource, ItemTypeColumnId } from '../internal';
|
|
3
|
+
export interface CollectionResourceOrder<ItemTypeType extends ApiItemType> {
|
|
4
|
+
field: ItemTypeColumnId<ItemTypeType>;
|
|
5
|
+
order?: 'desc' | 'asc';
|
|
6
|
+
limit?: number;
|
|
7
|
+
}
|
|
8
|
+
interface CollectionResourceOrderWithLimit<ItemTypeType extends ApiItemType> extends CollectionResourceOrder<ItemTypeType> {
|
|
9
|
+
limit: number;
|
|
10
|
+
}
|
|
11
|
+
type OnAddCollectionOption<ItemTypeType extends ApiItemType, RequestColumns extends ApiRequestColumnArray<ItemTypeType>, Children extends ChildCollectionResources> = (itemResources: ItemResource<ItemTypeType, RequestColumns, Children>[], collectionResource: CollectionResource<ItemTypeType, RequestColumns, Children>, isInitialCall: boolean, isCalledAfterSocketUpdate: boolean) => void;
|
|
12
|
+
type OnRemoveCollectionOption<ItemTypeType extends ApiItemType, RequestColumns extends ApiRequestColumnArray<ItemTypeType>, Children extends ChildCollectionResources> = (itemEntries: ItemEntry<ItemTypeType>[], collectionResource: CollectionResource<ItemTypeType, RequestColumns, Children>, isCalledAfterSocketUpdate: boolean, itemResources: ItemResource<ItemTypeType, RequestColumns, Children>[]) => void;
|
|
13
|
+
/**
|
|
14
|
+
* We're not defining this type recursively to prevent TypeScript from chocking up. We're currently limiting the
|
|
15
|
+
* `children` property to three levels (four levels including the 'root' collection).
|
|
16
|
+
*
|
|
17
|
+
* TODO: We can type this property once we utilize the link tree type.
|
|
18
|
+
*/
|
|
19
|
+
export type ChildCollectionsOption = {
|
|
20
|
+
[ChildItemType in ApiItemType]?: CollectionOptions<ChildItemType, ApiRequestColumnArray<ChildItemType>, {
|
|
21
|
+
[GrandChildItemType in ApiItemType]?: CollectionOptions<GrandChildItemType, ApiRequestColumnArray<GrandChildItemType>, {
|
|
22
|
+
[GrandGrandChildItemType in ApiItemType]?: CollectionOptions<GrandGrandChildItemType, ApiRequestColumnArray<GrandGrandChildItemType>>;
|
|
23
|
+
}>;
|
|
24
|
+
}>;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* We're not including columns here, because whenever we access the columns, we'd want to do it through the columns
|
|
28
|
+
* operations cache.
|
|
29
|
+
*/
|
|
30
|
+
export interface CachedQueryOptions<ItemType extends ApiItemType> {
|
|
31
|
+
query?: ApiQuery<ItemType>;
|
|
32
|
+
parent?: EntryParent;
|
|
33
|
+
order?: CollectionResourceOrder<ItemType>;
|
|
34
|
+
/**
|
|
35
|
+
* Prevents a CachedQueryItem from being cached (the CollectionResource will still be cached), you can use this when you fetch an Itemtype for which the backend doesn't send socket messages (so it never automatically updates)
|
|
36
|
+
*/
|
|
37
|
+
preventCaching?: boolean;
|
|
38
|
+
}
|
|
39
|
+
export interface CachedQueryOptionsWithColumns<ItemType extends ApiItemType> extends CachedQueryOptions<ItemType> {
|
|
40
|
+
columns: ApiRequestColumns<ItemType>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* The main differences between {@link CollectionOptions} and {@link RootCollectionOptions} are:
|
|
44
|
+
* - {@link RootCollectionOptions} includes aggregated changes listener options;
|
|
45
|
+
* - {@link RootCollectionOptions} requires either `query` or `parent`.
|
|
46
|
+
*
|
|
47
|
+
* {@link RootCollectionOptions} is used for the `getCollection` method in the transaction cache. Generally, we should
|
|
48
|
+
* prefer the use of the less complex {@link CollectionOptions}.
|
|
49
|
+
*/
|
|
50
|
+
export interface CollectionOptions<ItemType extends ApiItemType, RequestColumns extends ApiRequestColumnArray<ItemType> = ApiRequestColumnArray<ItemType>, Children extends ChildCollectionsOption = ChildCollectionsOption> extends CachedQueryOptions<ItemType> {
|
|
51
|
+
columns: RequestColumns;
|
|
52
|
+
/**
|
|
53
|
+
* @deprecated
|
|
54
|
+
*/
|
|
55
|
+
onAdd?: OnAddCollectionOption<ItemType, any, any>;
|
|
56
|
+
/**
|
|
57
|
+
* @deprecated
|
|
58
|
+
*/
|
|
59
|
+
onRemove?: OnRemoveCollectionOption<ItemType, any, any>;
|
|
60
|
+
/**
|
|
61
|
+
* @deprecated
|
|
62
|
+
*/
|
|
63
|
+
onChange?: CollectionItemChangesListener<CollectionResource<ItemType, any, any>>;
|
|
64
|
+
/**
|
|
65
|
+
* This allows us to add custom data to the options. See: https://rentman.atlassian.net/browse/RM4-19122
|
|
66
|
+
* @deprecated
|
|
67
|
+
*/
|
|
68
|
+
custom?: any;
|
|
69
|
+
callOnAddWithInitialItems?: boolean;
|
|
70
|
+
children?: Children;
|
|
71
|
+
abortSignal?: AbortSignal;
|
|
72
|
+
}
|
|
73
|
+
export interface RootCollectionOptionsBase<ItemType extends ApiItemType, RequestColumns extends ApiRequestColumnArray<ItemType> = ApiRequestColumnArray<ItemType>, Children extends ChildCollectionsOption = ChildCollectionsOption> extends CollectionOptions<ItemType, RequestColumns, Children> {
|
|
74
|
+
/**
|
|
75
|
+
* Note: When using the `changesListener` option the `context` parameter is untyped. (This would require self
|
|
76
|
+
* reference.)
|
|
77
|
+
*
|
|
78
|
+
* If you need access to the context, you should: either declare (and explicitly type) a named changes listener
|
|
79
|
+
* or use the `registerChangesListener` method on the collection resource.
|
|
80
|
+
*/
|
|
81
|
+
changesListener?: AggregatedChangesListener<CollectionResource<ItemType, any, any>, any>;
|
|
82
|
+
immediatelyCallChangesListener?: boolean;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Used in {@link OrderedCollectionResource}.
|
|
86
|
+
*/
|
|
87
|
+
export interface RootCollectionOptionsWithOrder<ItemTypeType extends ApiItemType> extends RootCollectionOptionsBase<ItemTypeType> {
|
|
88
|
+
order: CollectionResourceOrder<ItemTypeType>;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Used in {@link LimitedCollectionResource}.
|
|
92
|
+
*/
|
|
93
|
+
export interface RootCollectionOptionsWithLimit<ItemTypeType extends ApiItemType> extends RootCollectionOptionsWithOrder<ItemTypeType> {
|
|
94
|
+
order: CollectionResourceOrderWithLimit<ItemTypeType>;
|
|
95
|
+
}
|
|
96
|
+
interface RootCollectionOptionsWithQuery<ItemType extends ApiItemType, RequestColumns extends ApiRequestColumnArray<ItemType>, Children extends ChildCollectionsOption> extends RootCollectionOptionsBase<ItemType, RequestColumns, Children> {
|
|
97
|
+
query: ApiQuery<ItemType>;
|
|
98
|
+
}
|
|
99
|
+
export interface RootCollectionOptionsWithParent<ItemType extends ApiItemType, RequestColumns extends ApiRequestColumnArray<ItemType>, Children extends ChildCollectionsOption> extends RootCollectionOptionsBase<ItemType, RequestColumns, Children> {
|
|
100
|
+
parent: EntryParent;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* The main differences between {@link CollectionOptions} and {@link RootCollectionOptions} are:
|
|
104
|
+
* - {@link RootCollectionOptions} includes aggregated changes listener options;
|
|
105
|
+
* - {@link RootCollectionOptions} requires either `query` or `parent`.
|
|
106
|
+
*
|
|
107
|
+
* {@link RootCollectionOptions} is used for the `getCollection` method in the transaction cache. Generally, we should
|
|
108
|
+
* prefer the use of the less complex {@link CollectionOptions}.
|
|
109
|
+
*/
|
|
110
|
+
export type RootCollectionOptions<ItemType extends ApiItemType, RequestColumns extends ApiRequestColumnArray<ItemType> = ApiRequestColumnArray<ItemType>, Children extends ChildCollectionsOption = ChildCollectionsOption> = RootCollectionOptionsWithQuery<ItemType, RequestColumns, Children> | RootCollectionOptionsWithParent<ItemType, RequestColumns, Children>;
|
|
111
|
+
export {};
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { WritableSignal } from '@angular/core';
|
|
2
|
+
import { ApiItemType, ItemId } from '@rentman/backend-types';
|
|
3
|
+
import { RootQueryNode } from '../classes/matcher/RootQueryNode';
|
|
4
|
+
import { AbstractCache, AggregatedChangesByListener, AggregatedChangesListener, AggregatedChangesListenerFunction, ApiRequestColumnArray, CachedQueryItem, ChangesDeltaResult, ChildCollectionResources, CollectionEntry, CollectionItemChangesListenerContext, CollectionOptions, CollectionQuery, CollectionResourceFactory, ColumnSet, DeregFunction, FieldMap, ItemEntry, ItemIdConversionMap, ItemResource, ItemTypeColumnIds, ParentChangesDelta, ParentIdMap, RequestColumnsFieldMap, ResponseColumnItemTypeMap, RootCollectionOptionsBase, TransactionCache } from '../internal';
|
|
5
|
+
export type CollectionToItemResource<CollectionResourceType extends {
|
|
6
|
+
items: any[];
|
|
7
|
+
}> = CollectionResourceType['items'][number];
|
|
8
|
+
export interface AddedRemovedItemResources<ItemResourceType> {
|
|
9
|
+
addedItems: ItemResourceType[];
|
|
10
|
+
removedItems: ItemResourceType[];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Stores added, removed, and changed items for a collection resource. All properties are represented as item resources.
|
|
14
|
+
*/
|
|
15
|
+
export interface CollectionItemResourceChanges<CollectionResourceType extends {
|
|
16
|
+
items: any[];
|
|
17
|
+
}> extends AddedRemovedItemResources<CollectionToItemResource<CollectionResourceType>> {
|
|
18
|
+
changedItems: CollectionToItemResource<CollectionResourceType>[];
|
|
19
|
+
collectionResource: CollectionResourceType;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Collection changes listeners have a single `CollectionResourceType` type variable (instead of separate item type /
|
|
23
|
+
* request columns / children variables) because there are multiple types of collection resources
|
|
24
|
+
* ({@link OrderedCollectionResource}, {@link LimitedCollectionResource}).
|
|
25
|
+
*/
|
|
26
|
+
export type CollectionItemChangesListener<CollectionResourceType extends CollectionResource<any, any, any>> = (context: CollectionItemChangesListenerContext<CollectionResourceType>) => void;
|
|
27
|
+
export type OnAddCallback<CollectionResourceType extends CollectionResource<any, any, any>> = (args: {
|
|
28
|
+
itemResources: CollectionToItemResource<CollectionResourceType>[];
|
|
29
|
+
collectionResource: CollectionResourceType;
|
|
30
|
+
isInitialCall: boolean;
|
|
31
|
+
isCalledAfterSocketUpdate: boolean;
|
|
32
|
+
}) => void;
|
|
33
|
+
export type OnRemoveCallback<CollectionResourceType extends CollectionResource<any, any, any>> = (args: {
|
|
34
|
+
itemResources: CollectionToItemResource<CollectionResourceType>[];
|
|
35
|
+
itemEntries: CollectionToItemResource<CollectionResourceType>['entry'][];
|
|
36
|
+
collectionResource: CollectionResourceType;
|
|
37
|
+
isCalledAfterSocketUpdate: boolean;
|
|
38
|
+
}) => void;
|
|
39
|
+
export declare class CollectionResource<ItemTypeType extends ApiItemType, RequestColumns extends ApiRequestColumnArray<ItemTypeType> = ItemTypeColumnIds<ItemTypeType>, Children extends ChildCollectionResources | undefined = undefined> {
|
|
40
|
+
protected readonly factory: CollectionResourceFactory;
|
|
41
|
+
readonly options: Readonly<RootCollectionOptionsBase<ItemTypeType>>;
|
|
42
|
+
readonly transaction: TransactionCache;
|
|
43
|
+
readonly queryGraph: RootQueryNode<ItemTypeType>;
|
|
44
|
+
parentCollection: CollectionResource<any, any, any> | null;
|
|
45
|
+
readonly itemType: ItemTypeType;
|
|
46
|
+
readonly entry: CollectionEntry<ItemTypeType>;
|
|
47
|
+
readonly columns: ResponseColumnItemTypeMap;
|
|
48
|
+
items: ItemResource<ItemTypeType, RequestColumns, Children>[];
|
|
49
|
+
readonly itemsSignal: WritableSignal<ItemResource<ItemTypeType, RequestColumns, Children>[]>;
|
|
50
|
+
parentItem: ItemResource<any, any, any> | null;
|
|
51
|
+
protected itemEntryIdMap: {
|
|
52
|
+
[itemEntryId: number]: ItemResource<ItemTypeType, RequestColumns, Children>;
|
|
53
|
+
};
|
|
54
|
+
private onChangeCallbacks;
|
|
55
|
+
private onAddCallbacks;
|
|
56
|
+
private onRemoveCallbacks;
|
|
57
|
+
/**
|
|
58
|
+
* We type this loosely to prevent TypeScript inferring a complex type when comparing collection resources.
|
|
59
|
+
*/
|
|
60
|
+
private aggregatedChangesListeners;
|
|
61
|
+
constructor(factory: CollectionResourceFactory, options: Readonly<RootCollectionOptionsBase<ItemTypeType>>, transaction: TransactionCache, queryGraph: RootQueryNode<ItemTypeType>, query: CollectionQuery<ItemTypeType>, columnSet: ColumnSet<ItemTypeType>, parentCollection: CollectionResource<any, any, any> | null);
|
|
62
|
+
setParentItem(parentItem: ItemResource<any, any, any>): void;
|
|
63
|
+
initializeItems(initialItemEntries: ItemEntry<ItemTypeType>[], childCollectionResourceMap: ParentIdMap<Children>): void;
|
|
64
|
+
onConstruct(): void;
|
|
65
|
+
/**
|
|
66
|
+
* @internal
|
|
67
|
+
*/
|
|
68
|
+
clearCachedQueryOnTransaction(transaction: AbstractCache): void;
|
|
69
|
+
/**
|
|
70
|
+
* @description
|
|
71
|
+
* Removes the query (if it's cached) from the TransactionCachedQueryHandler and redoes the query
|
|
72
|
+
*
|
|
73
|
+
* Fixme: This function does not work properly for other collections using the same query.
|
|
74
|
+
* While adds and updates are properly processed by the query matcher after we fetch the new data,
|
|
75
|
+
* the absense of items in the response is not handled as deletes. We've fixed that in the collection
|
|
76
|
+
* you call `refresh` on by manually comparing the items, but this doesn't remove it from other collections.
|
|
77
|
+
*/
|
|
78
|
+
refresh(): Promise<CachedQueryItem<ItemTypeType>>;
|
|
79
|
+
deregisterChangesListener(listener: AggregatedChangesListenerFunction<any, any>): void;
|
|
80
|
+
registerChangesListener(listener: AggregatedChangesListener<this, any>): DeregFunction;
|
|
81
|
+
/**
|
|
82
|
+
* @deprecated
|
|
83
|
+
*/
|
|
84
|
+
onAdd(callback: OnAddCallback<this>): DeregFunction;
|
|
85
|
+
/**
|
|
86
|
+
* @deprecated
|
|
87
|
+
*/
|
|
88
|
+
onChange(callback: CollectionItemChangesListener<this>): DeregFunction;
|
|
89
|
+
/**
|
|
90
|
+
* @deprecated
|
|
91
|
+
*/
|
|
92
|
+
onRemove(callback: OnRemoveCallback<this>): DeregFunction;
|
|
93
|
+
removeItems(idArray: ItemId[]): Promise<ChangesDeltaResult>;
|
|
94
|
+
removeItem(itemId: ItemId): Promise<ChangesDeltaResult>;
|
|
95
|
+
addItems(valuesArray: Partial<RequestColumnsFieldMap<ItemTypeType, RequestColumns>>[]): Promise<ChangesDeltaResult>;
|
|
96
|
+
addItem(values: Partial<FieldMap<ItemTypeType>>): Promise<ChangesDeltaResult>;
|
|
97
|
+
getIdArray(): ItemId[];
|
|
98
|
+
getItemById(itemId: ItemId): ItemResource<ItemTypeType, RequestColumns, Children>;
|
|
99
|
+
triggerCollectionChangesListeners(changedItemResources: AddedRemovedItemResources<ItemResource<ItemTypeType, RequestColumns, Children>> & {
|
|
100
|
+
changedItems?: undefined;
|
|
101
|
+
}, sourceChangesDelta: null, itemIdConversionMap: ItemIdConversionMap | undefined, isCalledAfterSocketUpdate: boolean, isInitialCall: boolean, collectionChangesAccumulator: AggregatedChangesByListener | null): void;
|
|
102
|
+
triggerCollectionChangesListeners(changedItemResources: AddedRemovedItemResources<ItemResource<ItemTypeType, RequestColumns, Children>> & {
|
|
103
|
+
changedItems: ItemResource<ItemTypeType, RequestColumns, Children>[];
|
|
104
|
+
}, sourceChangesDelta: ParentChangesDelta, itemIdConversionMap: ItemIdConversionMap | undefined, isCalledAfterSocketUpdate: boolean, isInitialCall: boolean, collectionChangesAccumulator: AggregatedChangesByListener | null): void;
|
|
105
|
+
forEach(callback: (itemResource: ItemResource<ItemTypeType, RequestColumns, Children>) => void): void;
|
|
106
|
+
filter(callback: (itemResource: ItemResource<ItemTypeType, RequestColumns, Children>) => boolean): ItemResource<ItemTypeType, RequestColumns, Children>[];
|
|
107
|
+
first(callback: (itemResource: ItemResource<ItemTypeType, RequestColumns, Children>) => boolean): ItemResource<ItemTypeType, RequestColumns, Children> | null;
|
|
108
|
+
some(callback: (itemResource: ItemResource<ItemTypeType, RequestColumns, Children>) => boolean): boolean;
|
|
109
|
+
groupBy(argument: string | ((itemResource: ItemResource<ItemTypeType, RequestColumns, Children>) => string | null)): {
|
|
110
|
+
[key: string]: ItemResource<ItemTypeType, RequestColumns, Children>[];
|
|
111
|
+
};
|
|
112
|
+
map<U>(argument: string | ((itemResource: ItemResource<ItemTypeType, RequestColumns, Children>) => U)): U[];
|
|
113
|
+
reduce<U>(callback: (itemResource: ItemResource<ItemTypeType, RequestColumns, Children>, value: U) => U, value: U): U;
|
|
114
|
+
/**
|
|
115
|
+
* @description
|
|
116
|
+
* Removes the {@link CollectionResource CollectionResource} from the transaction, preventing the
|
|
117
|
+
* {@link CollectionResource.options.onAdd onAdd} and {@link CollectionResource.options.onRemove onRemove} callbacks
|
|
118
|
+
* from being called. You should call this function when the resource is no longer needed.
|
|
119
|
+
*
|
|
120
|
+
* @remark
|
|
121
|
+
* - Does not remove cached queries;
|
|
122
|
+
* - Does not revert changes on the items themselves.
|
|
123
|
+
*/
|
|
124
|
+
clearResource(): void;
|
|
125
|
+
/**
|
|
126
|
+
* Updates the items in the collection resource, given the results of a query matching cycle.
|
|
127
|
+
*
|
|
128
|
+
* Note: In order to reduce back-end requests for non-locally matchable queries, `fittingItemEntries` may contain item
|
|
129
|
+
* entries that are already present in the collection, and `nonFittingItemEntries` may contain item entries that
|
|
130
|
+
* are not present in the collection.
|
|
131
|
+
*
|
|
132
|
+
* @returns A {@link CollectionResourceChanges} object, which can be used to trigger collection changes listeners.
|
|
133
|
+
*/
|
|
134
|
+
handleMatchedItemEntries(fittingItemEntries: Iterable<ItemEntry<ItemTypeType>>, nonFittingItemEntries: Set<ItemEntry<ItemTypeType>> | undefined, clearChildCollectionResources: boolean): Promise<CollectionItemResourceChanges<CollectionResource<ItemTypeType, RequestColumns, Children>>>;
|
|
135
|
+
/**
|
|
136
|
+
* We type this loosely to prevent TypeScript inferring a complex type when comparing collection resources.
|
|
137
|
+
* @internal
|
|
138
|
+
*/
|
|
139
|
+
getAggregatedChangesListeners<ChangesListeners extends Set<AggregatedChangesListenerFunction<any, any>>>(accumulator?: ChangesListeners): ChangesListeners;
|
|
140
|
+
protected getCollectionItemEntryChanges(fittingItemEntries: Iterable<ItemEntry<ItemTypeType>>, nonFittingItemEntries: Set<ItemEntry<ItemTypeType>> | undefined): {
|
|
141
|
+
itemEntriesToBeAdded: ItemEntry<ItemTypeType>[];
|
|
142
|
+
itemEntriesToBeRemovedSet: Set<ItemEntry<ItemTypeType>>;
|
|
143
|
+
changedItemResources: ItemResource<ItemTypeType, RequestColumns, Children>[];
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* Removes the item resources associated with the passed item entries from the `items` array, while keeping the
|
|
147
|
+
* reference intact.
|
|
148
|
+
*
|
|
149
|
+
* Note: This method does not call any listeners, nor does it re-order the items.
|
|
150
|
+
*
|
|
151
|
+
* @param itemEntriesToBeRemovedSet May also contain item entries that are not included in the collection at all.
|
|
152
|
+
* @returns The {@link ItemResource ItemResources} that were removed from the {@link CollectionResource collection}.
|
|
153
|
+
*/
|
|
154
|
+
protected removeItemResources(itemEntriesToBeRemovedSet: Set<ItemEntry<ItemTypeType>>, clearChildCollectionResources: boolean): ItemResource<ItemTypeType, RequestColumns, Children>[];
|
|
155
|
+
/**
|
|
156
|
+
* Updates the `items` property of the collection resource, consisting of item resources representing the items in
|
|
157
|
+
* the collection.
|
|
158
|
+
*
|
|
159
|
+
* Note that for some added item entries, no item resource might be returned, as some of the items might already
|
|
160
|
+
* have been added while the child collections where requested.
|
|
161
|
+
*/
|
|
162
|
+
protected updateItemsProperty(itemEntriesToBeAdded: ItemEntry<ItemTypeType>[], itemEntriesToBeRemovedSet: Set<ItemEntry<ItemTypeType>>, clearChildCollectionResources: boolean): Promise<AddedRemovedItemResources<ItemResource<ItemTypeType, RequestColumns, Children>>>;
|
|
163
|
+
/**
|
|
164
|
+
* Creates item resources and adds them to the `items` array. This function is also called when the collection
|
|
165
|
+
* resource is constructed.
|
|
166
|
+
*
|
|
167
|
+
* Note: This method does not call any listeners.
|
|
168
|
+
*
|
|
169
|
+
* @param itemEntriesToBeAdded - The item entries are assumed not to be in the collection yet.
|
|
170
|
+
*/
|
|
171
|
+
protected addItemResources(itemEntriesToBeAdded: Iterable<ItemEntry<ItemTypeType>>, childCollections: ParentIdMap<Children>): ItemResource<ItemTypeType, RequestColumns, Children>[];
|
|
172
|
+
protected fetchCachedQuery(options?: CollectionOptions<ItemTypeType>): Promise<CachedQueryItem<ItemTypeType>>;
|
|
173
|
+
private registerOptionsChangesListeners;
|
|
174
|
+
private __registerCallback;
|
|
175
|
+
}
|