@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,15 @@
|
|
|
1
|
+
import { ItemId } from '@rentman/backend-types';
|
|
2
|
+
import { ItemResource, ItemResourceToAggregatedChanges, TransactionCache } from '../../../internal';
|
|
3
|
+
import { TransactionValidatorBase } from './TransactionValidatorBase';
|
|
4
|
+
export interface TransactionValidatorDependencies {
|
|
5
|
+
rootItem: ItemResource<any, any, any>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Base class for a transaction validator which manages their own dependencies.
|
|
9
|
+
* You are expected to use item and collection change listeners to call the validation functions.
|
|
10
|
+
*/
|
|
11
|
+
export declare abstract class TransactionValidatorWithDependencies<Dependency extends TransactionValidatorDependencies> extends TransactionValidatorBase {
|
|
12
|
+
dependencies: Dependency;
|
|
13
|
+
abstract validate(aggregatedCollectionChanges: unknown, aggregatedItemChanges: ItemResourceToAggregatedChanges<Dependency['rootItem']>, isCalledAfterSocketUpdate: boolean): void;
|
|
14
|
+
abstract fetchDependencies(transaction: TransactionCache, rootItemId: ItemId): Promise<Dependency>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ChangesListenerContextItemResourceShape, CollectionToItemResource, ItemChangesListenerContextBase, ItemIdConversionMap } from '../../internal';
|
|
2
|
+
export declare class CollectionItemChangesListenerContext<CollectionResourceType extends {
|
|
3
|
+
items: ChangesListenerContextItemResourceShape[];
|
|
4
|
+
}> extends ItemChangesListenerContextBase<CollectionToItemResource<CollectionResourceType>> {
|
|
5
|
+
/**
|
|
6
|
+
* @deprecated This property will be removed once the `onChange` collection callback is phased out.
|
|
7
|
+
*/
|
|
8
|
+
readonly collectionResource: CollectionResourceType;
|
|
9
|
+
/**
|
|
10
|
+
* @deprecated This property will be removed once the `onChange` collection callback is phased out.
|
|
11
|
+
*/
|
|
12
|
+
readonly isCalledAfterSocketUpdate: boolean;
|
|
13
|
+
constructor(
|
|
14
|
+
/**
|
|
15
|
+
* @deprecated This property will be removed once the `onChange` collection callback is phased out.
|
|
16
|
+
*/
|
|
17
|
+
collectionResource: CollectionResourceType, itemResource: CollectionToItemResource<CollectionResourceType>,
|
|
18
|
+
/**
|
|
19
|
+
* @deprecated This property will be removed once the `onChange` collection callback is phased out.
|
|
20
|
+
*/
|
|
21
|
+
isCalledAfterSocketUpdate: boolean, partialPrevious: Partial<CollectionToItemResource<CollectionResourceType>['fields']>, itemIdConversionMap: ItemIdConversionMap | undefined);
|
|
22
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ItemIdConversionMap } from '../../types/ItemTypesCollection';
|
|
2
|
+
import { TransactionItemHandler } from '../cache/transaction/TransactionItemHandler';
|
|
3
|
+
import { ChangesListenerContextItemResourceShape, ItemChangesListenerContextBase } from './ItemChangesListenerContextBase';
|
|
4
|
+
export declare class ItemChangesListenerContext<ItemResourceType extends ChangesListenerContextItemResourceShape> extends ItemChangesListenerContextBase<ItemResourceType> {
|
|
5
|
+
readonly isCalledAfterSocketUpdate: boolean;
|
|
6
|
+
constructor(itemResource: ItemResourceType, itemHandler: TransactionItemHandler, partialPrevious: Partial<ItemResourceType['fields']>, itemIdConversionMap: ItemIdConversionMap | undefined, isCalledAfterSocketUpdate: boolean, isInitialCall?: boolean);
|
|
7
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { ItemEntry, ItemIdConversionMap, TransactionCache, TransactionItemHandler } from '../../internal';
|
|
2
|
+
export type ChangesListenerContextItemResourceShape = {
|
|
3
|
+
itemType: string;
|
|
4
|
+
entry: ItemEntry<any>;
|
|
5
|
+
transaction: TransactionCache;
|
|
6
|
+
fields: {
|
|
7
|
+
[columnId: string]: any;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
export declare abstract class ItemChangesListenerContextBase<ItemResourceType extends ChangesListenerContextItemResourceShape> {
|
|
11
|
+
readonly itemResource: ItemResourceType;
|
|
12
|
+
/**
|
|
13
|
+
* Note that `fields` is a proxy object for the `CollectionItemChangesListenerContext` subclass.
|
|
14
|
+
*/
|
|
15
|
+
readonly fields: ItemResourceType['fields'];
|
|
16
|
+
private readonly itemHandler;
|
|
17
|
+
private readonly partialPrevious;
|
|
18
|
+
private readonly itemIdConversionMap;
|
|
19
|
+
private readonly isInitialCall;
|
|
20
|
+
protected constructor(itemResource: ItemResourceType,
|
|
21
|
+
/**
|
|
22
|
+
* Note that `fields` is a proxy object for the `CollectionItemChangesListenerContext` subclass.
|
|
23
|
+
*/
|
|
24
|
+
fields: ItemResourceType['fields'], itemHandler: TransactionItemHandler, partialPrevious: Partial<ItemResourceType['fields']>, itemIdConversionMap: ItemIdConversionMap | undefined, isInitialCall?: boolean);
|
|
25
|
+
private _previous?;
|
|
26
|
+
/**
|
|
27
|
+
* `previous` is defined as a getter here because it is not used very often, and should be evaluated lazily.
|
|
28
|
+
*/
|
|
29
|
+
get previous(): ItemResourceType['fields'];
|
|
30
|
+
/**
|
|
31
|
+
* Returns `false` if the field changed. If `includeItemIdConversion` is `false`, an update to an item field because
|
|
32
|
+
* of a save is not interpreted as a change.
|
|
33
|
+
*
|
|
34
|
+
* When a field cannot be found, returns `true`.
|
|
35
|
+
*/
|
|
36
|
+
compareField(columnId: keyof ItemResourceType['fields'], includeItemIdConversion?: boolean): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Returns `false` if one of the fields changed. If `includeItemIdConversion` is `false`, an update to an item field
|
|
39
|
+
* because of a save is not interpreted as a change.
|
|
40
|
+
*
|
|
41
|
+
* When a field cannot be found, returns `true`.
|
|
42
|
+
*/
|
|
43
|
+
compareFields(fields: (keyof ItemResourceType['fields'])[] | readonly (keyof ItemResourceType['fields'])[], includeItemIdConversion?: boolean): boolean;
|
|
44
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { ErrorHandlerInterface } from '../../interfaces/ErrorHandlerInterface';
|
|
3
|
+
import { ItemIdConversionMap, ItemTypeColumnId } from '../../types/ItemTypesCollection';
|
|
4
|
+
import { GetField, LeafQueryNode, MatchesAccumulator, ModifyLeafNodeTupleFunction, QueryNode, QueryNodeTuple } from './QueryNode';
|
|
5
|
+
import { ExtractEdgeValueType, ValueTransformer } from './ValueTransformers';
|
|
6
|
+
export declare abstract class ComparatorQueryNode<ItemTypeType extends ApiItemType, ValueTransformerType extends ValueTransformer<any, any>> extends QueryNode<ItemTypeType> {
|
|
7
|
+
protected readonly columnId: ItemTypeColumnId<ItemTypeType>;
|
|
8
|
+
readonly valueTransformer: ValueTransformerType;
|
|
9
|
+
protected readonly errorHandler: ErrorHandlerInterface;
|
|
10
|
+
readonly edgeMap: Map<ExtractEdgeValueType<ValueTransformerType>, QueryNodeTuple>;
|
|
11
|
+
protected constructor(token: string, columnId: ItemTypeColumnId<ItemTypeType>, valueTransformer: ValueTransformerType, errorHandler: ErrorHandlerInterface);
|
|
12
|
+
protected static findValueTransformer<ValueTransformerType extends ValueTransformer<any, any>>(queryValue: any, valueTransformers: ValueTransformerType[]): ValueTransformerType | null;
|
|
13
|
+
connectLeafNode(queryValue: any, node: LeafQueryNode): this;
|
|
14
|
+
connectBranchNode(queryValue: any, nodeToConnect: QueryNode<ItemTypeType>): this;
|
|
15
|
+
/**
|
|
16
|
+
* Copies edges from source `sourceNode` into the node itself. The column ID and type should be equal.
|
|
17
|
+
*/
|
|
18
|
+
copyEdgesFrom(sourceNode: ComparatorQueryNode<ItemTypeType, ValueTransformerType>, modifyLeafNodeTuple: ModifyLeafNodeTupleFunction | undefined): this;
|
|
19
|
+
updateLocalItemIdReferences(itemIdConversionMap: ItemIdConversionMap): boolean;
|
|
20
|
+
abstract clone(modifyLeafNodeTuple: ModifyLeafNodeTupleFunction | undefined): ComparatorQueryNode<ItemTypeType, ValueTransformerType>;
|
|
21
|
+
getValues(): ExtractEdgeValueType<ValueTransformerType>[];
|
|
22
|
+
protected matchUndefinedValue<MatchKeyType>(matchKey: MatchKeyType, getField: GetField<ItemTypeType>, matchesAccumulator: MatchesAccumulator<MatchKeyType>): MatchesAccumulator<MatchKeyType>;
|
|
23
|
+
private getQueryNodeTuple;
|
|
24
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ApiItemType, ApiQueryConditionCustom } from '@rentman/backend-types';
|
|
2
|
+
import { NonMatchableQueryNode } from './NonMatchableQueryNode';
|
|
3
|
+
import { ModifyLeafNodeTupleFunction } from './QueryNode';
|
|
4
|
+
export declare class CustomQueryNode<ItemTypeType extends ApiItemType> extends NonMatchableQueryNode<ItemTypeType> {
|
|
5
|
+
constructor(apiQuery: ApiQueryConditionCustom<ItemTypeType>);
|
|
6
|
+
clone(modifyLeafNodeTuple: ModifyLeafNodeTupleFunction | undefined): CustomQueryNode<ItemTypeType>;
|
|
7
|
+
apiQuery: ApiQueryConditionCustom<ItemTypeType>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ApiFields, ApiItemType, ApiQueryConditionCustom, ApiQueryConditionSearch, ApiQueryOperator, ItemApiFields, ItemId } from '@rentman/backend-types';
|
|
2
|
+
import { LinkTreeServiceInterface } from '../../interfaces/LinkTreeServiceInterface';
|
|
3
|
+
import { ApiQuery, ApiQueryConditionComparator, ApiQueryConditionIn, ApiQueryConditionLinkedTo, ApiQueryWithConditions, ErrorHandlerInterface } from '../../internal';
|
|
4
|
+
import { QueryParserBase } from '../QueryParserBase';
|
|
5
|
+
import { ComparatorQueryNode } from './CompatorQueryNode';
|
|
6
|
+
import { CustomQueryNode } from './CustomQueryNode';
|
|
7
|
+
import { IsComparatorQueryNode } from './IsComparatorQueryNode';
|
|
8
|
+
import { NotIsComparatorQueryNode } from './NotIsComparatorQueryNode';
|
|
9
|
+
import { LeafQueryNode, QueryNode } from './QueryNode';
|
|
10
|
+
import { RootQueryNode } from './RootQueryNode';
|
|
11
|
+
import { SearchQueryNode } from './SearchQueryNode';
|
|
12
|
+
import { SubQueryNode } from './SubQueryNode';
|
|
13
|
+
export declare class GraphQueryParser<ItemTypeType extends ApiItemType, QueryId extends LeafQueryNode> extends QueryParserBase<RootQueryNode<ItemTypeType>, QueryNode<any>[] | QueryId | null> {
|
|
14
|
+
private itemType;
|
|
15
|
+
private queryId;
|
|
16
|
+
private linkTreeService;
|
|
17
|
+
private errorHandler;
|
|
18
|
+
constructor(itemType: ItemTypeType, queryId: QueryId, linkTreeService: LinkTreeServiceInterface, errorHandler: ErrorHandlerInterface);
|
|
19
|
+
run<QueryItemType extends ApiItemType>(query: ApiQuery<QueryItemType>): RootQueryNode<ItemTypeType>;
|
|
20
|
+
protected parseEmptyQuery(): QueryId;
|
|
21
|
+
static createLinkedToComparatorQueryNode<MainItemType extends ApiItemType, SubItemType extends ApiItemType>(mainItemType: MainItemType, linkedToItemType: SubItemType, leafNodeTuples: {
|
|
22
|
+
value: ItemId;
|
|
23
|
+
node: LeafQueryNode;
|
|
24
|
+
}[], linkTreeService: LinkTreeServiceInterface, errorHandler: ErrorHandlerInterface): ComparatorQueryNode<MainItemType, any>;
|
|
25
|
+
protected parseComparatorQuery<SubItemType extends ApiItemType, ColumnId extends keyof ApiFields[SubItemType]>(key: ApiQueryConditionComparator<SubItemType, ColumnId>['key'], value: ApiQueryConditionComparator<SubItemType, ColumnId>['value'], comparator: ApiQueryConditionComparator<SubItemType, ColumnId>['comparator']): [ComparatorQueryNode<SubItemType, any>];
|
|
26
|
+
protected parseInQuery<SubItemType extends ApiItemType, ColumnId extends keyof ApiFields[SubItemType]>(key: ApiQueryConditionIn<SubItemType, ColumnId>['key'], values: ApiQueryConditionIn<SubItemType, ColumnId>['value'], not: boolean): [IsComparatorQueryNode<SubItemType> | NotIsComparatorQueryNode<SubItemType>] | QueryId | null;
|
|
27
|
+
protected parseLinkedToQuery<MainItemType extends ApiItemType, SubItemType extends ApiItemType>(linkedTo: ApiQueryConditionLinkedTo<SubItemType>['linkedTo'], query: Exclude<ApiQueryConditionLinkedTo<SubItemType>['query'], undefined>, reverse: boolean, not: boolean, subQueryDepth: number): QueryNode<MainItemType>[] | null;
|
|
28
|
+
protected parseSubQuery<MainItemType extends ApiItemType, SubItemType extends ApiItemType>(key: keyof ItemApiFields<MainItemType>, itemType: SubItemType, field: keyof ItemApiFields<SubItemType>, query: ApiQuery<SubItemType>, not: boolean): SubQueryNode<MainItemType>[];
|
|
29
|
+
protected parseSearchQuery<SubItemType extends ApiItemType>(search: ApiQueryConditionSearch['search'], not: boolean): [SearchQueryNode<SubItemType>];
|
|
30
|
+
protected parseCustomQuery<SubItemType extends ApiItemType, QueryType extends ApiQueryConditionCustom<SubItemType>>(custom: QueryType['custom'], parameters: QueryType['parameters'], not: boolean): [CustomQueryNode<SubItemType>];
|
|
31
|
+
protected parseComplexQuery<SubItemType extends ApiItemType>(conditions: ApiQueryWithConditions<SubItemType>['conditions'], operator: Extract<ApiQueryOperator, 'AND' | 'OR'>, not: boolean, subQueryDepth: number): QueryNode<SubItemType>[] | QueryId | null;
|
|
32
|
+
protected rewriteOrConditions<SubItemType extends ApiItemType>(parsedConditions: (QueryNode<SubItemType>[] | QueryId | null)[]): null | QueryId | QueryNode<SubItemType>[];
|
|
33
|
+
protected rewriteAndConditions<SubItemType extends ApiItemType>(parsedConditions: (QueryNode<SubItemType>[] | QueryId | null)[]): null | QueryId | QueryNode<SubItemType>[][];
|
|
34
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ApiFields, ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { ApiQueryConditionComparator, ErrorHandlerInterface } from '../../internal';
|
|
3
|
+
import { ItemTypeColumnId } from '../../types/ItemTypesCollection';
|
|
4
|
+
import { ComparatorQueryNode } from './CompatorQueryNode';
|
|
5
|
+
import { GetField, MatchesAccumulator, ModifyLeafNodeTupleFunction, PositiveMatchingResult } from './QueryNode';
|
|
6
|
+
import { ValueTransformer } from './ValueTransformers';
|
|
7
|
+
export declare const isComparatorQueryNodeValueTransformers: [ValueTransformer<number | boolean | null, number | boolean | null, number | boolean | null>, ValueTransformer<string | null, string | null, string | null>, ValueTransformer<import("moment").Moment, number | null, number | null>, import("./ValueTransformers").EdgeValueTransformer<import("moment").Duration, number, number>];
|
|
8
|
+
export declare class IsComparatorQueryNode<ItemTypeType extends ApiItemType> extends ComparatorQueryNode<ItemTypeType, typeof isComparatorQueryNodeValueTransformers[number]> {
|
|
9
|
+
constructor(columnId: ItemTypeColumnId<ItemTypeType>, valueTransformer: typeof isComparatorQueryNodeValueTransformers[number], errorHandler: ErrorHandlerInterface);
|
|
10
|
+
static construct<ItemTypeType extends ApiItemType, ColumnId extends keyof ApiFields[ItemTypeType]>(key: ApiQueryConditionComparator<ItemTypeType, ColumnId>['key'], value: ApiQueryConditionComparator<ItemTypeType, ColumnId>['value'], comparator: ApiQueryConditionComparator<ItemTypeType, ColumnId>['comparator'], errorHandler: ErrorHandlerInterface): IsComparatorQueryNode<ItemTypeType> | null;
|
|
11
|
+
match<MatchKeyType>(matchKey: MatchKeyType, getField: GetField<ItemTypeType>, parentMatch: PositiveMatchingResult, matchesAccumulator: MatchesAccumulator<MatchKeyType>): MatchesAccumulator<MatchKeyType>;
|
|
12
|
+
clone(modifyLeafNodeTuple: ModifyLeafNodeTupleFunction | undefined): IsComparatorQueryNode<ItemTypeType>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { ApiQueryConditionLinkedTo } from '../../internal';
|
|
3
|
+
import { NonMatchableQueryNode } from './NonMatchableQueryNode';
|
|
4
|
+
import { ModifyLeafNodeTupleFunction } from './QueryNode';
|
|
5
|
+
export declare class LinkedToQueryNode<ItemTypeType extends ApiItemType> extends NonMatchableQueryNode<ItemTypeType> {
|
|
6
|
+
apiQuery: ApiQueryConditionLinkedTo<any>;
|
|
7
|
+
clone(modifyLeafNodeTuple: ModifyLeafNodeTupleFunction | undefined): LinkedToQueryNode<ItemTypeType>;
|
|
8
|
+
constructor(apiQuery: ApiQueryConditionLinkedTo<any>);
|
|
9
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { ApiQuery } from '../../internal';
|
|
3
|
+
import { GetField, MatchesAccumulator, PositiveMatchingResult } from './QueryNode';
|
|
4
|
+
import { ValuelessEdgeQueryNode } from './ValuelessEdgeQueryNode';
|
|
5
|
+
export declare abstract class NonMatchableQueryNode<ItemTypeType extends ApiItemType> extends ValuelessEdgeQueryNode<ItemTypeType> {
|
|
6
|
+
readonly apiQuery: ApiQuery<ItemTypeType>;
|
|
7
|
+
constructor(token: string, apiQuery: ApiQuery<ItemTypeType>);
|
|
8
|
+
match<MatchKeyType>(matchKey: MatchKeyType, getField: GetField<ItemTypeType>, _parentMatch: PositiveMatchingResult, matchesAccumulator: MatchesAccumulator<MatchKeyType>): MatchesAccumulator<MatchKeyType>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ApiFields, ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { ApiQueryConditionComparator, ErrorHandlerInterface } from '../../internal';
|
|
3
|
+
import { ItemTypeColumnId } from '../../types/ItemTypesCollection';
|
|
4
|
+
import { ComparatorQueryNode } from './CompatorQueryNode';
|
|
5
|
+
import { GetField, MatchesAccumulator, ModifyLeafNodeTupleFunction, PositiveMatchingResult } from './QueryNode';
|
|
6
|
+
import { ValueTransformer } from './ValueTransformers';
|
|
7
|
+
declare const valueTransformers: [ValueTransformer<number | boolean | null, number | boolean | null, number | boolean | null>, ValueTransformer<string | null, string | null, string | null>, ValueTransformer<import("moment").Moment, number | null, number | null>, import("./ValueTransformers").EdgeValueTransformer<import("moment").Duration, number, number>];
|
|
8
|
+
export declare class NotIsComparatorQueryNode<ItemTypeType extends ApiItemType> extends ComparatorQueryNode<ItemTypeType, typeof valueTransformers[number]> {
|
|
9
|
+
constructor(columnId: ItemTypeColumnId<ItemTypeType>, valueTransformer: typeof valueTransformers[number], errorHandler: ErrorHandlerInterface);
|
|
10
|
+
static construct<ItemTypeType extends ApiItemType, ColumnId extends keyof ApiFields[ItemTypeType]>(key: ApiQueryConditionComparator<ItemTypeType, ColumnId>['key'], value: ApiQueryConditionComparator<ItemTypeType, ColumnId>['value'], comparator: ApiQueryConditionComparator<ItemTypeType, ColumnId>['comparator'], errorHandler: ErrorHandlerInterface): NotIsComparatorQueryNode<ItemTypeType> | null;
|
|
11
|
+
match<MatchKeyType>(matchKey: MatchKeyType, getField: GetField<ItemTypeType>, parentMatch: PositiveMatchingResult, matchesAccumulator: MatchesAccumulator<MatchKeyType>): MatchesAccumulator<MatchKeyType>;
|
|
12
|
+
clone(modifyLeafNodeTuple: ModifyLeafNodeTupleFunction | undefined): NotIsComparatorQueryNode<ItemTypeType>;
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { GetFieldValueType, ItemIdConversionMap, ItemTypeColumnId } from '../../types/ItemTypesCollection';
|
|
3
|
+
/**
|
|
4
|
+
* There are multiple reason we're not using the string representation of the query as a leaf node:
|
|
5
|
+
* - When item IDs are updated after a save, the string representation of a query might change, yet we don't want to
|
|
6
|
+
* replace all leaf nodes.
|
|
7
|
+
*/
|
|
8
|
+
export type LeafQueryNode = {
|
|
9
|
+
string: string;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* A map consisting of (branching) query nodes as a value and the query node token as a key.
|
|
13
|
+
*/
|
|
14
|
+
export type BranchNodeMap = Map<string, QueryNode>;
|
|
15
|
+
export type QueryNodeTuple = {
|
|
16
|
+
leafNodes: LeafQueryNode[];
|
|
17
|
+
branchNodeMap: BranchNodeMap | null;
|
|
18
|
+
};
|
|
19
|
+
export type PositiveMatchingResult = true | 'maybe';
|
|
20
|
+
export interface MatchesAccumulatorTuple<MatchKeyType> {
|
|
21
|
+
true: Set<MatchKeyType>;
|
|
22
|
+
maybe?: Set<MatchKeyType>;
|
|
23
|
+
}
|
|
24
|
+
export type MatchesAccumulator<MatchKeyType> = Map<string, MatchesAccumulatorTuple<MatchKeyType>>;
|
|
25
|
+
export type GetField<ItemTypeType extends ApiItemType> = <ColumnId extends ItemTypeColumnId<ItemTypeType>>(columnId: ColumnId) => GetFieldValueType<ItemTypeType, ColumnId> | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Function that allows us to modify a node tuple (consisting of leaf and branching nodes) of the destination query
|
|
28
|
+
* graph whenever the corresponding node tuple of the source query graph is a leaf node tuple (it has no branching nodes
|
|
29
|
+
* attached).
|
|
30
|
+
*
|
|
31
|
+
* It can be used to expand the resulting (destination) query graph when cloning.
|
|
32
|
+
*/
|
|
33
|
+
export type ModifyLeafNodeTupleFunction = (leafNodeTuple: QueryNodeTuple) => void;
|
|
34
|
+
export declare abstract class QueryNode<ItemTypeType extends ApiItemType = ApiItemType> {
|
|
35
|
+
readonly TOKEN: string;
|
|
36
|
+
protected constructor(TOKEN: string);
|
|
37
|
+
static addBranchNode(destinationQueryNodeTuple: QueryNodeTuple, node: QueryNode): void;
|
|
38
|
+
protected static matchQueryNodes<ItemTypeType extends ApiItemType, MatchKeyType>(queryNodeTuple: QueryNodeTuple, matchKey: MatchKeyType, getField: GetField<ItemTypeType>, parentMatch: PositiveMatchingResult, matchesAccumulator: MatchesAccumulator<MatchKeyType>): MatchesAccumulator<MatchKeyType>;
|
|
39
|
+
/**
|
|
40
|
+
* This method will be called when graph merging, which is what we should optimize for.
|
|
41
|
+
* @param sourceQueryNodeTuple - We enforce unique tokens by passing a branch node map here. Objects will be cloned.
|
|
42
|
+
**/
|
|
43
|
+
protected static cloneQueryNodesInto(destinationQueryNodeTuple: QueryNodeTuple, sourceQueryNodeTuple: QueryNodeTuple, modifyLeafNodeTuple: ModifyLeafNodeTupleFunction | undefined): void;
|
|
44
|
+
protected static _updateLocalItemIdReferences(branchNodeMap: BranchNodeMap | null, itemIdConversionMap: ItemIdConversionMap): boolean;
|
|
45
|
+
abstract match<MatchKey>(matchKey: MatchKey, getField: GetField<ItemTypeType>, parentMatch: PositiveMatchingResult, matchesAccumulator: MatchesAccumulator<MatchKey>): MatchesAccumulator<MatchKey>;
|
|
46
|
+
abstract clone(modifyLeafNodeTuple: ModifyLeafNodeTupleFunction | undefined): QueryNode<ItemTypeType>;
|
|
47
|
+
abstract updateLocalItemIdReferences(itemIdConversionMap: ItemIdConversionMap): boolean;
|
|
48
|
+
abstract copyEdgesFrom(sourceNode: QueryNode<ItemTypeType>, modifyLeafNodeTuple: ModifyLeafNodeTupleFunction | undefined): this;
|
|
49
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { GetField, MatchesAccumulator, ModifyLeafNodeTupleFunction, QueryNodeTuple } from './QueryNode';
|
|
3
|
+
import { ValuelessEdgeQueryNode } from './ValuelessEdgeQueryNode';
|
|
4
|
+
export declare class RootQueryNode<ItemTypeType extends ApiItemType> extends ValuelessEdgeQueryNode<ItemTypeType> {
|
|
5
|
+
constructor(connectionNodesTuple?: QueryNodeTuple);
|
|
6
|
+
clone(modifyLeafNodeTuple: ModifyLeafNodeTupleFunction | undefined): RootQueryNode<ItemTypeType>;
|
|
7
|
+
match<MatchKeyType>(matchKey: MatchKeyType, getField: GetField<ItemTypeType>, parentMatch: true, matchesAccumulator: MatchesAccumulator<MatchKeyType>): MatchesAccumulator<MatchKeyType>;
|
|
8
|
+
/**
|
|
9
|
+
* Convenience method that sets a default value for `matchesAccumulator`.
|
|
10
|
+
* @param matchKey - The value that is added to the `true` or `maybe` sets in `matchesAccumulator` when a match is
|
|
11
|
+
* found.
|
|
12
|
+
*/
|
|
13
|
+
doMatch<MatchKeyType>(matchKey: MatchKeyType, getField: GetField<ItemTypeType>, matchesAccumulator?: MatchesAccumulator<MatchKeyType>): MatchesAccumulator<MatchKeyType>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ApiItemType, ApiQueryConditionSearch } from '@rentman/backend-types';
|
|
2
|
+
import { NonMatchableQueryNode } from './NonMatchableQueryNode';
|
|
3
|
+
import { ModifyLeafNodeTupleFunction } from './QueryNode';
|
|
4
|
+
export declare class SearchQueryNode<ItemTypeType extends ApiItemType> extends NonMatchableQueryNode<ItemTypeType> {
|
|
5
|
+
constructor(apiQuery: ApiQueryConditionSearch);
|
|
6
|
+
apiQuery: ApiQueryConditionSearch;
|
|
7
|
+
clone(modifyLeafNodeTuple: ModifyLeafNodeTupleFunction | undefined): SearchQueryNode<ItemTypeType>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { ApiQuery } from '../../types/ApiQuery';
|
|
3
|
+
import { NonMatchableQueryNode } from './NonMatchableQueryNode';
|
|
4
|
+
import { ModifyLeafNodeTupleFunction } from './QueryNode';
|
|
5
|
+
export declare class SubQueryNode<ItemTypeType extends ApiItemType> extends NonMatchableQueryNode<ItemTypeType> {
|
|
6
|
+
constructor(apiQuery: ApiQuery<ItemTypeType>);
|
|
7
|
+
clone(modifyLeafNodeTuple: ModifyLeafNodeTupleFunction | undefined): SubQueryNode<ItemTypeType>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import moment from 'moment';
|
|
2
|
+
export declare const unsupportedQueryValue: unique symbol;
|
|
3
|
+
export type ExtractEdgeValueType<ValueTransformerType extends ValueTransformer<any, any>> = ValueTransformerType extends ValueTransformer<any, infer EdgeValueType> ? EdgeValueType : never;
|
|
4
|
+
/**
|
|
5
|
+
* Each of our comparator query nodes represent an operation ({@link IsComparatorQueryNode},
|
|
6
|
+
* {@link NotIsComparatorQueryNode}, {@link GreaterSmallerThanComparatorQueryNode}). To prevent having to create
|
|
7
|
+
* a separate class for each supported data type (number, string, date, etc.), we introduce value transformers.
|
|
8
|
+
*/
|
|
9
|
+
export interface ValueTransformer<FieldValueType, EdgeValueType, EdgeCompareValueType = EdgeValueType> {
|
|
10
|
+
/**
|
|
11
|
+
* Converts a value used in a query to a value stored with a query graph edge. Used when converting a query to a
|
|
12
|
+
* graph. Might return a {@link unsupportedQueryValue} symbol.
|
|
13
|
+
*/
|
|
14
|
+
readonly queryToEdgeValue: (queryValue: any) => EdgeValueType | typeof unsupportedQueryValue;
|
|
15
|
+
/**
|
|
16
|
+
* Converts an item field value to a value stored with a query graph edge. Used during the matching process.
|
|
17
|
+
*/
|
|
18
|
+
readonly fieldToEdgeValue: (fieldValue: FieldValueType) => EdgeCompareValueType;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* An edge value transformer is used for the {@link GreaterSmallerThanComparatorQueryNode} exclusively. It adds a
|
|
22
|
+
* `edgeToEdgeCompareValue` method, which is used to facilitate the 'NOW' value for date queries. When using the
|
|
23
|
+
* 'NOW' value, we're storing the 'NOW' string literal with the edge, while comparing with the current time.
|
|
24
|
+
*/
|
|
25
|
+
export interface EdgeValueTransformer<FieldValueType, EdgeValueType, EdgeCompareValueType> extends ValueTransformer<FieldValueType, EdgeValueType, EdgeCompareValueType> {
|
|
26
|
+
readonly edgeToEdgeCompareValue: (edgeValue: EdgeValueType) => EdgeCompareValueType;
|
|
27
|
+
}
|
|
28
|
+
export declare const numberValueTransformer: EdgeValueTransformer<number, number, number>;
|
|
29
|
+
/**
|
|
30
|
+
* String comparisons are always case-insensitive because the backend also does this because the MySQL collation we use
|
|
31
|
+
* is case-insensitive.
|
|
32
|
+
*/
|
|
33
|
+
export declare const stringNullValueTransformer: ValueTransformer<string | null, string | null>;
|
|
34
|
+
/**
|
|
35
|
+
* Since `number`, `boolean` and `null` types don't require any special treatment, we can use a single value transformer
|
|
36
|
+
* for these types.
|
|
37
|
+
*/
|
|
38
|
+
export declare const numberBooleanNullValueTransformer: ValueTransformer<number | boolean | null, number | boolean | null>;
|
|
39
|
+
export declare const dateNowValueTransformer: EdgeValueTransformer<moment.Moment, number | 'NOW', number>;
|
|
40
|
+
export declare const dateNullValueTransformer: ValueTransformer<moment.Moment, number | null>;
|
|
41
|
+
export declare const durationValueTransformer: EdgeValueTransformer<moment.Duration, number, number>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { ItemIdConversionMap } from '../../types/ItemTypesCollection';
|
|
3
|
+
import { LeafQueryNode, ModifyLeafNodeTupleFunction, QueryNode, QueryNodeTuple } from './QueryNode';
|
|
4
|
+
export declare abstract class ValuelessEdgeQueryNode<ItemTypeType extends ApiItemType> extends QueryNode<ItemTypeType> {
|
|
5
|
+
readonly connectedNodesTuple: QueryNodeTuple;
|
|
6
|
+
constructor(token: string, connectedNodesTuple?: QueryNodeTuple);
|
|
7
|
+
connectLeafNode(nodeToConnect: LeafQueryNode): this;
|
|
8
|
+
connectBranchNode(nodeToConnect: QueryNode<ItemTypeType>): this;
|
|
9
|
+
updateLocalItemIdReferences(itemIdConversionMap: ItemIdConversionMap): boolean;
|
|
10
|
+
copyEdgesFrom(sourceNode: ValuelessEdgeQueryNode<ItemTypeType>, modifyLeafNodeTuple: ModifyLeafNodeTupleFunction | undefined): this;
|
|
11
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ApiFields, ApiItemType, ApiQueryComparator } from '@rentman/backend-types';
|
|
2
|
+
import { ApiQueryConditionComparator, ErrorHandlerInterface } from '../../internal';
|
|
3
|
+
import { ItemTypeColumnId } from '../../types/ItemTypesCollection';
|
|
4
|
+
import { ComparatorQueryNode } from './CompatorQueryNode';
|
|
5
|
+
import { GetField, MatchesAccumulator, ModifyLeafNodeTupleFunction, PositiveMatchingResult } from './QueryNode';
|
|
6
|
+
import { EdgeValueTransformer } from './ValueTransformers';
|
|
7
|
+
type GreaterSmallerThanCompareFunction = (fieldValue: number, edgeValue: number) => boolean;
|
|
8
|
+
export type GreaterSmallerThanComparator = Exclude<ApiQueryComparator, '=' | '!='>;
|
|
9
|
+
declare const valueTransformers: [EdgeValueTransformer<number, number, number>, EdgeValueTransformer<import("moment").Moment, number | "NOW", number>, EdgeValueTransformer<import("moment").Duration, number, number>];
|
|
10
|
+
/**
|
|
11
|
+
* The `Map` implementation we're using for the edges lends itself well for equality testing, which is what we're
|
|
12
|
+
* optimizing for. All other comparators function in the same way, as we need to test each key in the map individually.
|
|
13
|
+
* We could create a subclass for each comparator in the future.
|
|
14
|
+
*/
|
|
15
|
+
export declare class GreaterSmallerThanComparatorQueryNode<ItemTypeType extends ApiItemType> extends ComparatorQueryNode<ItemTypeType, typeof valueTransformers[number]> {
|
|
16
|
+
protected readonly comparator: GreaterSmallerThanComparator;
|
|
17
|
+
protected compareValue: GreaterSmallerThanCompareFunction;
|
|
18
|
+
protected constructor(columnId: ItemTypeColumnId<ItemTypeType>, comparator: GreaterSmallerThanComparator, valueTransformer: typeof valueTransformers[number], errorHandler: ErrorHandlerInterface);
|
|
19
|
+
static construct<ItemTypeType extends ApiItemType, ColumnId extends keyof ApiFields[ItemTypeType]>(key: ApiQueryConditionComparator<ItemTypeType, ColumnId>['key'], value: ApiQueryConditionComparator<ItemTypeType, ColumnId>['value'], comparator: ApiQueryConditionComparator<ItemTypeType, ColumnId>['comparator'], errorHandler: ErrorHandlerInterface): GreaterSmallerThanComparatorQueryNode<ItemTypeType> | null;
|
|
20
|
+
protected static isSupportedComparator(comparator: ApiQueryComparator): comparator is GreaterSmallerThanComparator;
|
|
21
|
+
match<MatchKeyType>(matchKey: MatchKeyType, getField: GetField<ItemTypeType>, parentMatch: PositiveMatchingResult, matchesAccumulator: MatchesAccumulator<MatchKeyType>): MatchesAccumulator<MatchKeyType>;
|
|
22
|
+
protected static getCompareFunction(comparator: GreaterSmallerThanComparator): GreaterSmallerThanCompareFunction;
|
|
23
|
+
clone(modifyLeafNodeTuple: ModifyLeafNodeTupleFunction | undefined): GreaterSmallerThanComparatorQueryNode<ItemTypeType>;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { ApiFieldsOnDeleteRule, ItemId } from '@rentman/backend-types';
|
|
2
|
+
import { ApiRequestService } from './classes/ApiRequestService';
|
|
3
|
+
import { BusinessLogicManager } from './classes/BusinessLogicManager/BusinessLogicManager';
|
|
4
|
+
import { BusinessLogicRule } from './classes/BusinessLogicManager/BusinessLogicRule';
|
|
5
|
+
import { ColumnCache } from './classes/ColumnCache';
|
|
6
|
+
import { ColumnHandler } from './classes/ColumnHandler';
|
|
7
|
+
import { ConversionMapService } from './classes/ConversionMapService';
|
|
8
|
+
import { ItemCreateService } from './classes/ItemCreateService';
|
|
9
|
+
import { ItemEntryService } from './classes/ItemEntryService';
|
|
10
|
+
import { LockService } from './classes/LockService';
|
|
11
|
+
import { QueryService } from './classes/QueryService';
|
|
12
|
+
import { SocketMessageHandler } from './classes/SocketMessageHandler';
|
|
13
|
+
import { TemplateCache } from './classes/TemplateCache';
|
|
14
|
+
import { ApiResponseProcessorFactory } from './factories/ApiResponseProcessorFactory';
|
|
15
|
+
import { ChangesCompilationFactory } from './factories/ChangesCompilationFactory';
|
|
16
|
+
import { ChangesDeltaFactory } from './factories/ChangesDeltaFactory';
|
|
17
|
+
import { CollectionResourceFactory } from './factories/CollectionResourceFactory';
|
|
18
|
+
import { ColumnExpansionFactory } from './factories/ColumnExpansionFactory';
|
|
19
|
+
import { ColumnInfoFactory } from './factories/ColumnInfoFactory';
|
|
20
|
+
import { ColumnSetFactory } from './factories/ColumnSetFactory';
|
|
21
|
+
import { ItemCacheFactory } from './factories/ItemCacheFactory';
|
|
22
|
+
import { ItemResourceFactory } from './factories/ItemResourceFactory';
|
|
23
|
+
import { ModuleChangesCompilationFactory } from './factories/ModuleChangesCompilationFactory';
|
|
24
|
+
import { RequestColumnExpansionFactory } from './factories/RequestColumnExpansionFactory';
|
|
25
|
+
import { RequestColumnsOperationsCacheFactory } from './factories/RequestColumnsOperationsCacheFactory';
|
|
26
|
+
import { TransactionCacheFactory } from './factories/TransactionCacheFactory';
|
|
27
|
+
import { ApiRequestServiceInterface } from './interfaces/ApiRequestServiceInterface';
|
|
28
|
+
import { ErrorHandlerInterface } from './interfaces/ErrorHandlerInterface';
|
|
29
|
+
import { LinkTreeServiceInterface } from './interfaces/LinkTreeServiceInterface';
|
|
30
|
+
export declare class RmCore {
|
|
31
|
+
version: string;
|
|
32
|
+
apiRequestService: ApiRequestService;
|
|
33
|
+
apiResponseProcessorFactory: ApiResponseProcessorFactory;
|
|
34
|
+
changesCompilationFactory: ChangesCompilationFactory;
|
|
35
|
+
changesDeltaFactory: ChangesDeltaFactory;
|
|
36
|
+
collectionResourceFactory: CollectionResourceFactory;
|
|
37
|
+
columnCache: ColumnCache;
|
|
38
|
+
columnExpansionFactory: ColumnExpansionFactory;
|
|
39
|
+
columnHandler: ColumnHandler;
|
|
40
|
+
columnInfoFactory: ColumnInfoFactory;
|
|
41
|
+
columnSetFactory: ColumnSetFactory;
|
|
42
|
+
requestColumnOperationsCacheFactory: RequestColumnsOperationsCacheFactory;
|
|
43
|
+
conversionMapService: ConversionMapService;
|
|
44
|
+
itemCacheFactory: ItemCacheFactory;
|
|
45
|
+
itemCreateService: ItemCreateService;
|
|
46
|
+
itemEntryService: ItemEntryService;
|
|
47
|
+
itemResourceFactory: ItemResourceFactory;
|
|
48
|
+
lockService: LockService;
|
|
49
|
+
moduleChangesCompilationFactory: ModuleChangesCompilationFactory;
|
|
50
|
+
queryService: QueryService;
|
|
51
|
+
requestColumnExpansionFactory: RequestColumnExpansionFactory;
|
|
52
|
+
socketMessageHandler: SocketMessageHandler;
|
|
53
|
+
templateCache: TemplateCache;
|
|
54
|
+
transactionCacheFactory: TransactionCacheFactory;
|
|
55
|
+
businessLogicManager: BusinessLogicManager;
|
|
56
|
+
constructor(userId: ItemId, _apiRequestService: ApiRequestServiceInterface, errorHandler: ErrorHandlerInterface, linkTreeService: LinkTreeServiceInterface, businessLogicRuleInstances: BusinessLogicRule<any, any>[],
|
|
57
|
+
/**
|
|
58
|
+
* We specify an `apiFieldsOnDeleteRule` parameter in order to easily mock it in unit tests. This prevents
|
|
59
|
+
* issues where a mocked API response does not contain required fields that are added at a later point in time.
|
|
60
|
+
*/
|
|
61
|
+
apiFieldsOnDeleteRule?: typeof ApiFieldsOnDeleteRule);
|
|
62
|
+
}
|
|
63
|
+
export declare function identity<T extends any>(value: T): T;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { ItemEntry } from '../models/ItemEntry';
|
|
3
|
+
import { ItemTypeColumnId } from '../types/ItemTypesCollection';
|
|
4
|
+
export declare class MissingColumnException<ItemTypeType extends ApiItemType> extends Error {
|
|
5
|
+
constructor(itemEntry: ItemEntry<ItemTypeType>, columnId: ItemTypeColumnId<ItemTypeType>);
|
|
6
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { ApiResponse, ApiResponseProcessor } from '../internal';
|
|
3
|
+
export declare class ApiResponseProcessorFactory {
|
|
4
|
+
construct<ItemTypeType extends ApiItemType = any>(response: ApiResponse<ItemTypeType>): ApiResponseProcessor<ItemTypeType>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { ChangesDelta, ChangesDeltaBase, ChildChangesDelta, ConversionMapService, ErrorHandlerInterface, ItemCreateService, ItemEntryService, ParentChangesDelta } from '../internal';
|
|
3
|
+
export declare class ChangesDeltaFactory {
|
|
4
|
+
private conversionMapService;
|
|
5
|
+
private errorHandler;
|
|
6
|
+
private itemCreateService;
|
|
7
|
+
private itemEntryService;
|
|
8
|
+
constructor(conversionMapService: ConversionMapService, errorHandler: ErrorHandlerInterface, itemCreateService: ItemCreateService, itemEntryService: ItemEntryService);
|
|
9
|
+
construct(logMissingColumnErrors: boolean, queryItemTypes?: Iterable<ApiItemType>): ChangesDelta;
|
|
10
|
+
cloneCreatedChanges(sourceChangesDelta: ChangesDelta, destinationChangesDelta?: ChangesDelta): ChangesDelta;
|
|
11
|
+
constructChildDelta(): ChildChangesDelta;
|
|
12
|
+
constructParentDelta(querySource?: ChangesDeltaBase): ParentChangesDelta;
|
|
13
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { CachedQueryItemsItemTypeTuple, ChildCollectionResources, CollectionResource, ColumnCache, ColumnSet, ColumnSetFactory, ErrorHandlerInterface, ItemEntryService, OptionsToCollectionResource, ParentCachedQueryItemTuple, ParentIdMap, QueryService, RequestColumnsOperationsCacheFactory, RootCollectionOptions, TransactionCache } from '../internal';
|
|
3
|
+
export type ColumnSetMap<ItemTypeType extends ApiItemType> = {
|
|
4
|
+
[ColumnSetItemType in ItemTypeType]: ColumnSet<ColumnSetItemType>;
|
|
5
|
+
};
|
|
6
|
+
export declare class CollectionResourceFactory {
|
|
7
|
+
errorHandler: ErrorHandlerInterface;
|
|
8
|
+
itemEntryService: ItemEntryService;
|
|
9
|
+
queryService: QueryService;
|
|
10
|
+
requestColumnsOperationsCacheFactory: RequestColumnsOperationsCacheFactory;
|
|
11
|
+
private columnCache;
|
|
12
|
+
private columnSetFactory;
|
|
13
|
+
constructor(errorHandler: ErrorHandlerInterface, itemEntryService: ItemEntryService, queryService: QueryService, requestColumnsOperationsCacheFactory: RequestColumnsOperationsCacheFactory, columnCache: ColumnCache, columnSetFactory: ColumnSetFactory);
|
|
14
|
+
/**
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
construct<ItemTypeType extends ApiItemType, OptionsType extends RootCollectionOptions<ItemTypeType>>(parentCachedQueryItemTuple: ParentCachedQueryItemTuple<ItemTypeType>, parentCollectionResource: CollectionResource<any, any, any> | null, transaction: TransactionCache, columnSetMap?: ColumnSetMap<ItemTypeType>): OptionsToCollectionResource<ItemTypeType, OptionsType>;
|
|
18
|
+
constructChildCollectionResources<Children extends ChildCollectionResources | undefined>(cachedQueryItemTypeTuples: CachedQueryItemsItemTypeTuple<ApiItemType>[] | null, parentCollectionResource: CollectionResource<any, any, any> | null, transaction: TransactionCache, columnSetMap?: Partial<ColumnSetMap<ApiItemType>>): ParentIdMap<Children>;
|
|
19
|
+
constructColumnSet<ItemTypeType extends ApiItemType>(cachedQueryItemTuple: ParentCachedQueryItemTuple<ItemTypeType>): ColumnSet<ItemTypeType>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { ApiRequestColumns, ColumnExpansion, ColumnInfoFactory, ResponseColumnItemTypeMap } from '../internal';
|
|
3
|
+
export declare class ColumnExpansionFactory {
|
|
4
|
+
private columnInfoFactory;
|
|
5
|
+
constructor(columnInfoFactory: ColumnInfoFactory);
|
|
6
|
+
construct<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, requestColumns: ApiRequestColumns<ItemTypeType>, responseColumns: ResponseColumnItemTypeMap): ColumnExpansion<ItemTypeType>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ApiFields, ApiItemType, GetColumnType } from '@rentman/backend-types';
|
|
2
|
+
import { ColumnInfo, ItemTypeColumnIds, RootColumnMap } from '../internal';
|
|
3
|
+
export declare class ColumnInfoFactory {
|
|
4
|
+
constructor();
|
|
5
|
+
construct<ItemTypeType extends ApiItemType = any, ColumnId extends keyof ApiFields[ItemTypeType] = any>(apiColumn: GetColumnType<ItemTypeType, ColumnId>, parent: ColumnInfo | null): ColumnInfo<ItemTypeType>;
|
|
6
|
+
constructFromRootMap<ItemTypeType extends ApiItemType = any, ColumnIds extends ItemTypeColumnIds<ItemTypeType> = any>(rootColumnMap: RootColumnMap<ItemTypeType, ColumnIds>, parent?: ColumnInfo | null): ColumnInfo<ItemTypeType, ColumnIds[number]>[];
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { ApiRequestColumnArray, ApiRequestColumns, ColumnHandler, ColumnInfoFactory, ColumnSet, ErrorHandlerInterface, ResponseColumnItemTypeMap } from '../internal';
|
|
3
|
+
export declare class ColumnSetFactory {
|
|
4
|
+
private columnHandler;
|
|
5
|
+
private columnInfoFactory;
|
|
6
|
+
private errorHandler;
|
|
7
|
+
constructor(columnHandler: ColumnHandler, columnInfoFactory: ColumnInfoFactory, errorHandler: ErrorHandlerInterface);
|
|
8
|
+
construct<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, requestColumns: ApiRequestColumns<ItemTypeType>, responseColumns: ResponseColumnItemTypeMap, enableCaching?: boolean, includeIdColumn?: boolean): ColumnSet<ItemTypeType>;
|
|
9
|
+
constructFromRequest<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, requestColumns: ApiRequestColumnArray<ItemTypeType>, requestColumnsTrue: boolean, responseColumns: ResponseColumnItemTypeMap, enableCaching?: boolean, includeIdColumn?: boolean): ColumnSet<ItemTypeType>;
|
|
10
|
+
constructFromResponse<ItemTypeType extends ApiItemType>(itemType: ItemTypeType, requestColumnsTrue: boolean, responseColumns: ResponseColumnItemTypeMap, enableCaching?: boolean): ColumnSet<ItemTypeType>;
|
|
11
|
+
private constructRequestColumnsFromRootColumnMap;
|
|
12
|
+
private expandRootColumnMapFromResponseColumns;
|
|
13
|
+
private processColumnInfo;
|
|
14
|
+
private expandRootColumnMap;
|
|
15
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ApiItemType } from '@rentman/backend-types';
|
|
2
|
+
import { GraphQueryParser } from '../classes/matcher/GraphQueryParser';
|
|
3
|
+
import { LeafQueryNode } from '../classes/matcher/QueryNode';
|
|
4
|
+
import { ErrorHandlerInterface, LinkTreeServiceInterface } from '../internal';
|
|
5
|
+
export declare class GraphQueryParserFactory {
|
|
6
|
+
private linkTreeService;
|
|
7
|
+
private errorHandler;
|
|
8
|
+
constructor(linkTreeService: LinkTreeServiceInterface, errorHandler: ErrorHandlerInterface);
|
|
9
|
+
construct<ItemTypeType extends ApiItemType, QueryId extends LeafQueryNode>(itemType: ItemTypeType, queryId: QueryId): GraphQueryParser<ItemTypeType, QueryId>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AbstractCache, ItemCache } from '../internal';
|
|
2
|
+
import { GraphQueryParserFactory } from './GraphQueryParserFactory';
|
|
3
|
+
export declare class ItemCacheFactory {
|
|
4
|
+
private graphQueryParserFactory;
|
|
5
|
+
constructor(graphQueryParserFactory: GraphQueryParserFactory);
|
|
6
|
+
construct(transaction: AbstractCache): ItemCache;
|
|
7
|
+
}
|