@rentman/rm-core 5.0.1 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/changelog.md +5 -0
  2. package/dist/rm-core.js +8567 -8302
  3. package/dist/rm-core.min.js +2 -2
  4. package/dist/types/classes/ApiResponseProcessor.d.ts +2 -2
  5. package/dist/types/classes/CollectionEntryService.d.ts +7 -6
  6. package/dist/types/classes/CollectionMatcherBase.d.ts +8 -13
  7. package/dist/types/classes/CollectionMatcherCachedCollectionProcessor.d.ts +31 -0
  8. package/dist/types/classes/CollectionResourceService.d.ts +4 -3
  9. package/dist/types/classes/ColumnSet.d.ts +1 -2
  10. package/dist/types/classes/ColumnSubsetCache.d.ts +4 -2
  11. package/dist/types/classes/KeyService.d.ts +2 -1
  12. package/dist/types/classes/{QueryLocalLinkedToParser.d.ts → QueryLinkedToParser.d.ts} +4 -5
  13. package/dist/types/classes/QueryLocallyMatchableParser.d.ts +19 -0
  14. package/dist/types/classes/QueryMatcher.d.ts +4 -0
  15. package/dist/types/classes/QueryParser.d.ts +1 -2
  16. package/dist/types/classes/QueryParserBase.d.ts +7 -7
  17. package/dist/types/classes/QueryParserIdUpdater.d.ts +16 -0
  18. package/dist/types/classes/QueryService.d.ts +2 -1
  19. package/dist/types/classes/RequestBuffer.d.ts +7 -7
  20. package/dist/types/classes/RequestBufferManager.d.ts +1 -0
  21. package/dist/types/classes/RequestColumnExpansion.d.ts +2 -2
  22. package/dist/types/classes/SocketMessageHandler.d.ts +14 -6
  23. package/dist/types/classes/cache/AbstractCache.d.ts +20 -19
  24. package/dist/types/classes/cache/CachedQueryHandlerBase.d.ts +73 -0
  25. package/dist/types/classes/cache/CollectionMatcherCachedQueryProcessor.d.ts +35 -0
  26. package/dist/types/classes/cache/ItemHandlerBase.d.ts +3 -5
  27. package/dist/types/classes/cache/server/ServerCache.d.ts +12 -13
  28. package/dist/types/classes/cache/server/ServerCachedQueryHandler.d.ts +34 -0
  29. package/dist/types/classes/cache/server/ServerItemHandler.d.ts +2 -1
  30. package/dist/types/classes/cache/transaction/TransactionCache.d.ts +22 -28
  31. package/dist/types/classes/cache/transaction/TransactionCachedQueryHandler.d.ts +23 -0
  32. package/dist/types/classes/cache/transaction/TransactionCollectionHandler.d.ts +15 -40
  33. package/dist/types/classes/cache/transaction/TransactionItemHandler.d.ts +2 -2
  34. package/dist/types/classes/index.d.ts +3 -3
  35. package/dist/types/core.d.ts +1 -2
  36. package/dist/types/factories/CollectionEntryFactory.d.ts +7 -4
  37. package/dist/types/factories/CollectionMatcherFactory.d.ts +14 -4
  38. package/dist/types/factories/CollectionResourceFactory.d.ts +10 -4
  39. package/dist/types/factories/ColumnSubsetCacheFactory.d.ts +3 -2
  40. package/dist/types/factories/QueryParserFactory.d.ts +1 -1
  41. package/dist/types/factories/index.d.ts +0 -1
  42. package/dist/types/interfaces/AbstractCacheDependencyInterface.d.ts +1 -2
  43. package/dist/types/interfaces/TransactionCollectionHandlerDependencyInterface.d.ts +1 -2
  44. package/dist/types/models/CollectionEntry.d.ts +7 -8
  45. package/dist/types/models/CollectionOptions.d.ts +18 -0
  46. package/dist/types/models/CollectionResource.d.ts +30 -21
  47. package/dist/types/models/index.d.ts +1 -2
  48. package/dist/types/types/ItemTypesCollection.d.ts +32 -32
  49. package/package.json +1 -1
  50. package/dist/types/classes/CollectionCache.d.ts +0 -38
  51. package/dist/types/classes/CollectionMatcher.d.ts +0 -9
  52. package/dist/types/classes/cache/CollectionHandlerBase.d.ts +0 -68
  53. package/dist/types/classes/cache/CollectionMatcherCacheProcessor.d.ts +0 -26
  54. package/dist/types/classes/cache/server/ServerCollectionHandler.d.ts +0 -44
  55. package/dist/types/factories/CollectionCacheFactory.d.ts +0 -8
  56. package/dist/types/models/CollectionEntryOptions.d.ts +0 -13
  57. package/dist/types/models/CollectionResourceOptions.d.ts +0 -21
@@ -1,15 +1,14 @@
1
+ import { ChangesDelta, InternalChangesDelta, TransactionCache, TransactionValidatorFactory } from '../..';
1
2
  import { RmCore } from '../../../core';
2
- import { ServerCacheDependencyInterface } from '../../../interfaces';
3
- import { CollectionEntry, ItemEntry } from '../../../models';
4
- import { ApiRequestColumnMap, EntryParent, EntryParentNull, FieldMap, ItemIdConversionMap, ItemType, PromiseInterface } from '../../../types';
3
+ import { ServerCacheDependencyInterface } from '../../../interfaces/ServerCacheDependencyInterface';
4
+ import { ItemEntry } from '../../../models';
5
+ import { ApiRequestColumn, ApiRequestColumnMap, CollectionQuery, CollectionResourceParentIdMap, EntryParent, EntryParentNull, FieldMap, ItemIdConversionMap, ItemType, PromiseInterface } from '../../../types';
5
6
  import { ApiResponseProcessor } from '../../ApiResponseProcessor';
6
- import { ChangesDelta } from '../../ChangesDelta';
7
7
  import { ChangesDeltaResult } from '../../ChangesDeltaBase';
8
8
  import { OnAfterCreateCallback } from '../../ChangesProcessor';
9
- import { InternalChangesDelta } from '../../InternalChangesDelta';
10
9
  import { AbstractCache } from '../AbstractCache';
11
- import { TransactionCache } from '../transaction/TransactionCache';
12
- import { ServerCollectionHandler } from './ServerCollectionHandler';
10
+ import { CachedQueryItem } from '../CachedQueryHandlerBase';
11
+ import { ServerCachedQueryHandler } from './ServerCachedQueryHandler';
13
12
  import { ServerItemEntryChanges, ServerItemHandler } from './ServerItemHandler';
14
13
  /**
15
14
  * @description
@@ -19,18 +18,20 @@ import { ServerItemEntryChanges, ServerItemHandler } from './ServerItemHandler';
19
18
  * It's basically a local representation of the database
20
19
  */
21
20
  export declare class ServerCache extends AbstractCache {
22
- protected dependencies: ServerCacheDependencyInterface;
21
+ dependencies: ServerCacheDependencyInterface;
23
22
  readonly itemHandler: ServerItemHandler;
24
- readonly collectionHandler: ServerCollectionHandler;
23
+ readonly cachedQueryHandler: ServerCachedQueryHandler;
25
24
  parent: null;
26
25
  constructor(dependencies: ServerCacheDependencyInterface, core: RmCore);
27
26
  getServerCache(): ServerCache;
27
+ createChild(id?: string, validatorFactory?: TransactionValidatorFactory): TransactionCache;
28
+ expandCollectionResources<ItemTypeType extends ItemType>(itemType: ItemTypeType, collections: CollectionResourceParentIdMap<ItemTypeType>, newRequestColumns: ApiRequestColumn[]): PromiseInterface<CollectionResourceParentIdMap>;
28
29
  processResponse(response: ApiResponseProcessor, requestColumnMap: ApiRequestColumnMap, isCalledAfterApiSave?: boolean, isCalledAfterSocketUpdate?: boolean, changesDelta?: ChangesDelta): PromiseInterface<ChangesDeltaResult>;
29
30
  /**
30
31
  * @description
31
32
  * Applies the changes of the changesDelta created by the API call ({@link ChangesProcessor ChangesProcessor}/{@link SocketMessageHandler SocketMessageHandler}, or manually through a module function) on all caches
32
33
  */
33
- applyChangesFromParent(internalChangesDelta: InternalChangesDelta, isCalledAfterApiSave?: boolean, isCalledAfterSocketUpdate?: boolean): void;
34
+ applyChangesFromParent(internalChangesDelta: InternalChangesDelta, isCalledAfterApiSave?: boolean, isCalledAfterSocketUpdate?: boolean): PromiseInterface<void>;
34
35
  /**
35
36
  * @description
36
37
  * Gets the fields required to set the parent
@@ -57,7 +58,7 @@ export declare class ServerCache extends AbstractCache {
57
58
  entry: ItemEntry;
58
59
  changes: ServerItemEntryChanges;
59
60
  };
60
- getCollectionChangesRecursively(collectionEntryId: CollectionEntry['id']): ItemEntry[];
61
+ getCollectionChangesRecursively<ItemTypeType extends ItemType>(itemType: ItemTypeType, parsedQuery: CollectionQuery): CachedQueryItem<ItemTypeType> | undefined;
61
62
  /**
62
63
  * @description
63
64
  * Invalidates the complete server cache, all items will be re-fetched whenever they are requested
@@ -77,7 +78,5 @@ export declare class ServerCache extends AbstractCache {
77
78
  applyChangesDelta(changesDelta: ChangesDelta, isCalledAfterApiSave?: boolean, isCalledAfterSocketUpdate?: boolean): PromiseInterface<ChangesDeltaResult>;
78
79
  getLocalItemEntry(itemEntryId: ItemEntry['id']): ItemEntry | undefined;
79
80
  getLocalItemEntryByItemId(itemType: ItemType, itemId: ItemEntry['itemId']): ItemEntry | undefined;
80
- getLocalCollectionEntryByQueryString(itemType: ItemType, queryString: string): CollectionEntry | undefined;
81
- getLocalCollectionEntry(collectionEntryId: CollectionEntry['id']): CollectionEntry | undefined;
82
81
  getChangesFromItemChanges<ItemTypeType extends ItemType = any>(changesObject: ServerItemEntryChanges<ItemTypeType>): FieldMap<ItemTypeType>;
83
82
  }
@@ -0,0 +1,34 @@
1
+ import { ColumnSubsetCacheFactory, RequestColumnExpansionFactory } from '../../../factories';
2
+ import { ApiRequestColumns, ApiRequestService, CollectionQuery, ColumnSubsetCache, ColumnUtil, ParentIdMap, PromiseInterface } from '../../../index';
3
+ import { ErrorHandlerInterface, PromiseLibraryInterface } from '../../../interfaces';
4
+ import { ItemEntry } from '../../../models';
5
+ import { CollectionOptions } from '../../../models/CollectionOptions';
6
+ import { ItemId, ItemType } from '../../../types';
7
+ import { CollectionEntryService } from '../../index';
8
+ import { RequestBufferManager } from '../../RequestBufferManager';
9
+ import { CachedQueryHandlerBase, CachedQueryItem } from '../CachedQueryHandlerBase';
10
+ import { ServerCache } from './ServerCache';
11
+ import { ServerItemHandler } from './ServerItemHandler';
12
+ export declare class ServerCachedQueryHandler extends CachedQueryHandlerBase {
13
+ private columnSubsetCacheFactory;
14
+ private requestBufferManager;
15
+ private apiRequestService;
16
+ private errorHandler;
17
+ private itemHandler;
18
+ protected transaction: ServerCache;
19
+ constructor(columnSubsetCacheFactory: ColumnSubsetCacheFactory, requestBufferManager: RequestBufferManager, requestColumnExpansionFactory: RequestColumnExpansionFactory, apiRequestService: ApiRequestService, collectionEntryService: CollectionEntryService, errorHandler: ErrorHandlerInterface, itemHandler: ServerItemHandler, promiseService: PromiseLibraryInterface, columnUtil: ColumnUtil, transaction: ServerCache);
20
+ __fetchCachedQueryItem<ItemTypeType extends ItemType>(itemType: ItemTypeType, options: CollectionOptions): PromiseInterface<CachedQueryItem<ItemTypeType>>;
21
+ __fetchLinkedCachedQueryItems<ItemTypeType extends ItemType>(parentType: ItemType, parentIdArray: ItemId[] | (() => ItemId[]), itemType: ItemTypeType, options: CollectionOptions): PromiseInterface<ParentIdMap<CachedQueryItem<ItemTypeType>>>;
22
+ __addItemEntriesToCachedQueries<ItemTypeType extends ItemType>(itemType: ItemTypeType, parsedQuery: CollectionQuery, itemEntries: Array<ItemEntry<ItemTypeType>>): void;
23
+ /**
24
+ * @description
25
+ * Expands the columns of the items in the cached query
26
+ */
27
+ __expandCachedQuery<ItemTypeType extends ItemType = any>(cachedQuery: CachedQueryItem<ItemTypeType>, newColumns: ApiRequestColumns): PromiseInterface<CachedQueryItem<ItemTypeType>>;
28
+ /**
29
+ * @description
30
+ * Fetches the data for the passed ItemType/options, will do nothing if the requested CollectionEntry/columns are already cached.
31
+ * Will create a new {@link CollectionEntry CollectionEntry} if the CollectionEntry didn't exist yet
32
+ */
33
+ __fetchItemEntriesByQueryData<ItemTypeType extends ItemType>(itemType: ItemTypeType, options: CollectionOptions<ItemTypeType>, columnSubsetCache: ColumnSubsetCache<ItemTypeType>, collectionQuery: CollectionQuery): PromiseInterface<CachedQueryItem<ItemTypeType>>;
34
+ }
@@ -28,6 +28,7 @@ export declare class ServerItemHandler extends ItemHandlerBase {
28
28
  copyTransactionItemEntryChanges(itemEntryChanges: TransactionItemEntryChanges, entry: ItemEntry): ServerItemEntryChanges;
29
29
  fetchItemEntry<ItemTypeType extends ItemType>(itemType: ItemTypeType, itemId: ItemId, options: ItemEntryOptions): PromiseInterface<ItemEntry<ItemTypeType>>;
30
30
  fetchItemEntriesByQuery<ItemTypeType extends ItemType>(itemType: ItemTypeType, query: ApiQuery, entryOptions: ItemEntryOptions): PromiseInterface<Array<ItemEntry<ItemTypeType>>>;
31
+ extendItemEntries<ItemTypeType extends ItemType>(itemType: ItemTypeType, itemEntries: Array<ItemEntry<ItemTypeType>>, newColumns: ApiRequestColumns): PromiseInterface<Array<ItemEntry<ItemTypeType>>>;
31
32
  fetchItemEntries<ItemTypeType extends ItemType>(itemType: ItemTypeType, itemIds: ItemId[], options: ItemEntryOptions): PromiseInterface<Array<ItemEntry<ItemTypeType>>>;
32
33
  /**
33
34
  * @description
@@ -35,7 +36,7 @@ export declare class ServerItemHandler extends ItemHandlerBase {
35
36
  *
36
37
  * @param columns should contain a derived column that refers to the parent
37
38
  */
38
- fetchLinkedItemEntriesData(parentType: ItemType, parentIdArray: ItemId[], itemType: ItemType, query: ApiQuery, columns: ApiRequestColumns): PromiseInterface<RequestBufferResponse>;
39
+ fetchLinkedItemEntriesData(parentType: ItemType, parentIdArray: ItemId[], itemType: ItemType, query: ApiQuery | null, columns: ApiRequestColumns): PromiseInterface<RequestBufferResponse>;
39
40
  /**
40
41
  * @description
41
42
  * General way to process an API response.
@@ -1,14 +1,16 @@
1
+ import { ChangesDelta, InternalChangesDelta, ServerCache, TransactionCollectionHandler, TransactionItemEntryChanges, TransactionItemHandler, TransactionValidatorFactory } from '../..';
1
2
  import { RmCore } from '../../../core';
2
3
  import { AbstractCacheDependencyInterface } from '../../../interfaces/AbstractCacheDependencyInterface';
3
- import { CollectionEntry, CollectionResource, CollectionResourceOptionsInterface, ItemEntry, ItemEntryOptions, ItemResource } from '../../../models';
4
- import { ApiQuery, CollectionDefinition, CollectionOptionsInterface, CollectionResourceParentIdMap, ConversionMap, CreateRequestParameterMap, DeregFunction, EntryParentNull, FieldChangeCallback, FieldMap, ItemId, ItemIdConversionMap, ItemOptionsInterface, ItemResourcesItemTypeMap, ItemType, ItemTypeMap, LinkCollectionDefinition, PromiseInterface } from '../../../types';
5
- import { ChangesDelta } from '../../ChangesDelta';
4
+ import { CollectionResource, ItemEntry, ItemEntryOptions, ItemResource } from '../../../models';
5
+ import { CollectionOptionsInterface } from '../../../models/CollectionOptions';
6
+ import { ApiQuery, ApiRequestColumn, ApiRequestColumns, CollectionDefinition, CollectionQuery, CollectionResourceParentIdMap, ConversionMap, CreateRequestParameterMap, DeregFunction, EntryParentNull, FieldChangeCallback, FieldMap, ItemId, ItemIdConversionMap, ItemOptionsInterface, ItemResourcesItemTypeMap, ItemType, ItemTypeMap, LinkCollectionDefinition, PromiseInterface } from '../../../types';
6
7
  import { ChangesDeltaResult } from '../../ChangesDeltaBase';
7
- import { ModuleChangesCompilationResult, OnAfterCreateCallback, TransactionCacheCallbackCondition, TransactionCacheCallbackType, TransactionCollectionHandler, TransactionItemEntryChanges, TransactionItemHandler, TransactionValidatorFactory } from '../../index';
8
- import { InternalChangesDelta } from '../../InternalChangesDelta';
8
+ import { OnAfterCreateCallback } from '../../ChangesProcessor';
9
+ import { ModuleChangesCompilationResult } from '../../ModuleChangesCompilation';
9
10
  import { AbstractCache } from '../AbstractCache';
10
- import { ServerCache } from '../server/ServerCache';
11
- import { TransactionEventHandler } from './TransactionEventHandler';
11
+ import { CachedQueryItem } from '../CachedQueryHandlerBase';
12
+ import { TransactionCachedQueryHandler } from './TransactionCachedQueryHandler';
13
+ import { TransactionCacheCallbackCondition, TransactionCacheCallbackType, TransactionEventHandler } from './TransactionEventHandler';
12
14
  declare type ItemResourceLinks<ItemTypeType extends ItemType> = {
13
15
  main: ItemResource<ItemTypeType>;
14
16
  linked: ItemResourcesItemTypeMap;
@@ -59,7 +61,7 @@ export declare class TransactionCache extends AbstractCache {
59
61
  * @description
60
62
  * Stores the 'root' {@link ItemEntry ItemEntry}, this {@link ItemEntry ItemEntry} can be used as request parent to store the whole transaction at once
61
63
  */
62
- rootItem: ItemEntry<any> | undefined;
64
+ rootItem: ItemEntry | undefined;
63
65
  /**
64
66
  * @description
65
67
  * Stores additional request parameters for when the transaction is stored to the server
@@ -84,6 +86,7 @@ export declare class TransactionCache extends AbstractCache {
84
86
  */
85
87
  readonly parent: AbstractCache;
86
88
  readonly itemHandler: TransactionItemHandler;
89
+ readonly cachedQueryHandler: TransactionCachedQueryHandler;
87
90
  readonly collectionHandler: TransactionCollectionHandler;
88
91
  readonly eventHandler: TransactionEventHandler;
89
92
  private readonly validator?;
@@ -94,7 +97,14 @@ export declare class TransactionCache extends AbstractCache {
94
97
  * For debugging purposes
95
98
  */
96
99
  id?: string | undefined, validatorFactory?: TransactionValidatorFactory);
100
+ createChild(id?: string, validatorFactory?: TransactionValidatorFactory): TransactionCache;
97
101
  destroy(): void;
102
+ expandCollectionResource(collectionResource: CollectionResource, newColumns: ApiRequestColumns): PromiseInterface<void>;
103
+ /**
104
+ * @description
105
+ * Expands the collection with the new request columns, assumes that all collections have the same itemType
106
+ */
107
+ expandCollectionResources<ItemTypeType extends ItemType>(itemType: ItemTypeType, collections: CollectionResourceParentIdMap<ItemTypeType>, newColumns: ApiRequestColumn[]): PromiseInterface<CollectionResourceParentIdMap>;
98
108
  registerFieldChangeCallback<ItemTypeType extends ItemType>(itemType: ItemTypeType, itemId: ItemId, callback: FieldChangeCallback<ItemTypeType>): DeregFunction;
99
109
  createChangesDelta(): ChangesDelta;
100
110
  getFirstErrorString(): undefined | string;
@@ -131,7 +141,7 @@ export declare class TransactionCache extends AbstractCache {
131
141
  * @param internalChangesDelta Changes to be applied
132
142
  * @param isCalledAfterApiSave If 'isCalledAfterApiSave' is true local changes will always be overwritten (instead of only when there are no changes)
133
143
  */
134
- applyChangesFromParent(internalChangesDelta: InternalChangesDelta, isCalledAfterApiSave?: boolean, isCalledAfterSocketUpdate?: boolean): void;
144
+ applyChangesFromParent(internalChangesDelta: InternalChangesDelta, isCalledAfterApiSave?: boolean, isCalledAfterSocketUpdate?: boolean): PromiseInterface<void>;
135
145
  /**
136
146
  * @description
137
147
  * Applies changes to this transaction and its children
@@ -159,7 +169,7 @@ export declare class TransactionCache extends AbstractCache {
159
169
  * Use {@link CollectionResource.getParent CollectionResource.getParent} instead of {@link TransactionCache.getParent TransactionCache.getParent} if you're getting the parent in the onRemove callback
160
170
  */
161
171
  getParent<ItemTypeType extends ItemType = any>(itemEntry: ItemEntry<ItemTypeType>, fromInitial?: boolean, providedFields?: FieldMap<ItemTypeType>): EntryParentNull;
162
- getCollectionChangesRecursively(collectionEntryId: CollectionEntry['id']): ItemEntry[];
172
+ getCollectionChangesRecursively<ItemTypeType extends ItemType>(itemType: ItemTypeType, parsedQuery: CollectionQuery): CachedQueryItem<ItemTypeType> | undefined;
163
173
  /**
164
174
  * @description
165
175
  * Traverses the transaction chain and returns the changes of the item on the first transaction
@@ -173,7 +183,7 @@ export declare class TransactionCache extends AbstractCache {
173
183
  * You should call this function when the resource is no longer needed
174
184
  *
175
185
  * @remark
176
- * Does not remove changes
186
+ * Does not remove cached queries
177
187
  */
178
188
  clearCollectionResource(resource: CollectionResource): void;
179
189
  /**
@@ -210,11 +220,6 @@ export declare class TransactionCache extends AbstractCache {
210
220
  * Removes an {@link ItemEntry ItemEntry} from the {@link TransactionCache TransactionCache} which means that changes on this entry will no longer be tracked.
211
221
  */
212
222
  clearItemEntry(itemEntry: ItemEntry<any>): void;
213
- /**
214
- * @description
215
- * Removes a {@link CollectionEntry CollectionEntry} through a {@link CollectionResource CollectionResource} from the {@link TransactionCache TransactionCache} which means that changes on this collection will no longer be tracked.
216
- */
217
- clearCollection(collectionResource: CollectionResource<any>): void;
218
223
  /**
219
224
  * @description
220
225
  * Adds a callback that will fire before the transaction is saved, rejecting this callback will prevent the transaction from saving
@@ -303,16 +308,6 @@ export declare class TransactionCache extends AbstractCache {
303
308
  * Gets an ItemEntry from the cache by ItemId
304
309
  */
305
310
  getLocalItemEntryByItemId(itemType: ItemType, itemId: ItemEntry['itemId']): ItemEntry | undefined;
306
- /**
307
- * @description
308
- * Gets an CollectionEntry from the cache, doesn't do a API request, used for saving
309
- */
310
- getLocalCollectionEntryByQueryString(itemType: ItemType, queryString: string): CollectionEntry | undefined;
311
- /**
312
- * @description
313
- * Gets an CollectionEntry from the cache, doesn't do a API request, used for saving
314
- */
315
- getLocalCollectionEntry(collectionEntryId: CollectionEntry['id']): CollectionEntry | undefined;
316
311
  /**
317
312
  * @description
318
313
  * Returns the complete {@link InternalChangesDelta InternalChangesDelta} of the TransactionCache, this only takes into account the end result (initial is compared to changes), so changing something and reverting it
@@ -322,9 +317,8 @@ export declare class TransactionCache extends AbstractCache {
322
317
  createItemResource<ItemTypeType extends ItemType>(itemEntry: ItemEntry<ItemTypeType>, isRoot?: boolean, isNew?: boolean): ItemResource<ItemTypeType>;
323
318
  createItemResources<ItemTypeType extends ItemType>(itemEntries: Array<ItemEntry<ItemTypeType>>): Array<ItemResource<ItemTypeType>>;
324
319
  processLinkedItems<ItemTypeType extends ItemType>(linkedEntries: ItemTypeMap<ItemEntry[]>): ItemResourcesItemTypeMap<ItemResource<ItemTypeType>>;
325
- createCollectionResource<ItemTypeType extends ItemType>(collectionEntry: CollectionEntry<ItemTypeType>, resourceOptions: CollectionResourceOptionsInterface<ItemTypeType>): CollectionResource<ItemTypeType>;
320
+ createCollectionResource<ItemTypeType extends ItemType>(itemType: ItemTypeType, options: CollectionOptionsInterface<ItemTypeType>, initialEntries: Array<ItemEntry<ItemTypeType>>): CollectionResource<ItemTypeType>;
326
321
  getChangesFromItemChanges<ItemTypeType extends ItemType = any>(changesObject: TransactionItemEntryChanges<ItemTypeType>): FieldMap<ItemTypeType>;
327
- private createCollectionResources;
328
322
  /**
329
323
  * @description
330
324
  * Fetches all required columns to match/fit in collections
@@ -0,0 +1,23 @@
1
+ import { ApiQuery, ApiRequestColumns, CollectionQuery, ColumnSubsetCache, ItemEntryOptions, ParentIdMap, PromiseInterface, TransactionCollectionHandlerDependencyInterface, TransactionItemHandler } from '../../../index';
2
+ import { ItemEntry } from '../../../models';
3
+ import { CollectionOptions } from '../../../models/CollectionOptions';
4
+ import { ItemId, ItemType } from '../../../types';
5
+ import { CachedQueryHandlerBase, CachedQueryItem } from '../CachedQueryHandlerBase';
6
+ import { TransactionCache } from './TransactionCache';
7
+ export declare class TransactionCachedQueryHandler extends CachedQueryHandlerBase {
8
+ private dependencies;
9
+ private itemHandler;
10
+ protected transaction: TransactionCache;
11
+ constructor(dependencies: TransactionCollectionHandlerDependencyInterface, itemHandler: TransactionItemHandler, transaction: TransactionCache);
12
+ __fetchCachedQueryItem<ItemTypeType extends ItemType>(itemType: ItemTypeType, options: CollectionOptions): PromiseInterface<CachedQueryItem<ItemTypeType>>;
13
+ __expandCachedQuery<ItemTypeType extends ItemType = any>(cachedQuery: CachedQueryItem<ItemTypeType>, newColumns: ApiRequestColumns): PromiseInterface<CachedQueryItem<ItemTypeType>>;
14
+ __addItemEntriesToCachedQueries<ItemTypeType extends ItemType>(itemType: ItemTypeType, parsedQuery: CollectionQuery, itemEntries: Array<ItemEntry<ItemTypeType>>): void;
15
+ /**
16
+ * @remark
17
+ * todo not only linkedTo should be checked, but it should check if there's a local ID anywhere in the query
18
+ * ({<field>: <localId>}) is also a local query
19
+ */
20
+ isLocal(options: CollectionOptions | ItemEntryOptions, query: ApiQuery): boolean;
21
+ __fetchItemEntriesByQueryData<ItemTypeType extends ItemType>(itemType: ItemTypeType, options: CollectionOptions<ItemTypeType>, columnSubsetCache: ColumnSubsetCache<ItemTypeType>, collectionQuery: CollectionQuery): PromiseInterface<CachedQueryItem<ItemTypeType>>;
22
+ __fetchLinkedCachedQueryItems<ItemTypeType extends ItemType>(parentType: ItemType, parentIdArray: ItemId[] | (() => ItemId[]), itemType: ItemTypeType, options: CollectionOptions): PromiseInterface<ParentIdMap<CachedQueryItem<ItemTypeType>>>;
23
+ }
@@ -1,21 +1,22 @@
1
- import { ApiQuery, ApiRequestColumns, ChangesDelta, CollectionEntryOptions, CollectionResource, ItemEntryOptions, ItemIdConversionMap, ModifyFieldsCallback, PromiseInterface, TransactionCollectionHandlerDependencyInterface, TransactionItemHandler } from '../../../index';
2
- import { CollectionEntry, ItemEntry } from '../../../models';
3
- import { ApiRequestColumn, CollectionEntryParentIdMap, CollectionResourceParentIdMap, ItemId, ItemType, QueryCallback } from '../../../types';
4
- import { CollectionMatcher } from '../../index';
5
- import { CollectionHandlerBase } from '../CollectionHandlerBase';
1
+ import { TransactionCollectionHandlerDependencyInterface } from '../../../interfaces/TransactionCollectionHandlerDependencyInterface';
2
+ import { CollectionEntry, CollectionResource, ItemEntry } from '../../../models';
3
+ import { ApiRequestColumns, ItemIdConversionMap, ItemType, ModifyFieldsCallback, PromiseInterface } from '../../../types';
4
+ import { ChangesDelta } from '../../ChangesDelta';
6
5
  import { TransactionCache } from './TransactionCache';
7
- export declare class TransactionCollectionHandler extends CollectionHandlerBase {
6
+ import { TransactionCachedQueryHandler } from './TransactionCachedQueryHandler';
7
+ import { TransactionItemHandler } from './TransactionItemHandler';
8
+ export declare class TransactionCollectionHandler {
9
+ protected itemHandler: TransactionItemHandler;
10
+ protected cachedQueryHandler: TransactionCachedQueryHandler;
8
11
  private dependencies;
9
- private itemHandler;
10
- protected transaction: TransactionCache;
12
+ private transaction;
11
13
  collectionResources: {
12
- [collectionEntryId: number]: CollectionResource[];
14
+ [itemType: string]: {
15
+ [queryString: string]: CollectionResource[];
16
+ };
13
17
  };
14
- constructor(dependencies: TransactionCollectionHandlerDependencyInterface, itemHandler: TransactionItemHandler, transaction: TransactionCache);
15
- fetchItemEntriesByQuery<ItemTypeType extends ItemType>(itemType: ItemTypeType, query: ApiQuery, options: ItemEntryOptions): PromiseInterface<Array<ItemEntry<ItemTypeType>>>;
16
- getAllCollectionsByItemType<ItemTypeType extends ItemType>(itemType: ItemTypeType): Array<CollectionEntry<ItemTypeType>>;
17
- createCollectionEntry<ItemTypeType extends ItemType>(itemType: ItemTypeType, options: CollectionEntryOptions): CollectionEntry<ItemTypeType>;
18
- clearEntry(entry: CollectionEntry): void;
18
+ constructor(itemHandler: TransactionItemHandler, cachedQueryHandler: TransactionCachedQueryHandler, dependencies: TransactionCollectionHandlerDependencyInterface, transaction: TransactionCache);
19
+ expandCollectionResource<ItemTypeType extends ItemType = any>(collectionResource: CollectionResource<ItemTypeType>, newColumns: ApiRequestColumns): PromiseInterface<void>;
19
20
  addResource(resource: CollectionResource): void;
20
21
  clearResource(resource: CollectionResource): void;
21
22
  /**
@@ -23,31 +24,5 @@ export declare class TransactionCollectionHandler extends CollectionHandlerBase
23
24
  * Updates the parents of the passed {@link ItemEntry ItemEntries}, returns `void` because you should use the {@link CollectionResourceOptions.onAdd onAdd} and {@link CollectionResourceOptions.onRemove onRemove} callbacks
24
25
  */
25
26
  moveItems<CollectionEntryType extends CollectionEntry>(sourceCollectionEntry: CollectionEntryType, destinationCollectionEntry: CollectionEntryType, itemEntries: Array<ItemEntry<CollectionEntryType['itemType']>>): void;
26
- extendCollectionEntry<CollectionEntryType extends CollectionEntry>(collectionEntry: CollectionEntryType, queryCallback: QueryCallback): PromiseInterface<CollectionEntryType>;
27
27
  cloneCollectionEntry<CollectionEntryType extends CollectionEntry>(changesDelta: ChangesDelta, sourceEntry: CollectionEntryType, conversionMap?: ItemIdConversionMap, modifyFieldsCallback?: ModifyFieldsCallback): void;
28
- getCollectionMatcher(): CollectionMatcher;
29
- fetchCollectionEntry<ItemTypeType extends ItemType>(itemType: ItemTypeType, options: CollectionEntryOptions): PromiseInterface<CollectionEntry<ItemTypeType>>;
30
- fetchLinkedCollectionEntries<ItemTypeType extends ItemType>(parentType: ItemType, parentIdArray: ItemId[] | (() => ItemId[]), itemType: ItemTypeType, options: CollectionEntryOptions): PromiseInterface<CollectionEntryParentIdMap<ItemTypeType>>;
31
- expandCollectionEntries<ItemTypeType extends ItemType>(parentType: ItemType, itemType: ItemTypeType, collections: CollectionResourceParentIdMap, newColumns: ApiRequestColumn[]): PromiseInterface<CollectionResourceParentIdMap>;
32
- extendCollectionEntries<T extends CollectionResourceParentIdMap>(parentType: ItemType, itemType: ItemType, options: CollectionEntryOptions, queryCallback: QueryCallback, collections: T): PromiseInterface<void>;
33
- addItemEntriesToCollectionChanges<CollectionEntryType extends CollectionEntry>(collectionEntry: CollectionEntryType, itemEntries: Array<ItemEntry<CollectionEntryType['itemType']>>, isCalledAfterSocketUpdate?: boolean): void;
34
- isLocal(options: CollectionEntryOptions | ItemEntryOptions, query: ApiQuery): boolean;
35
- expandCollectionEntry<CollectionEntryType extends CollectionEntry>(changesDelta: ChangesDelta, collectionEntry: CollectionEntryType, newColumns: ApiRequestColumns): PromiseInterface<CollectionEntryType>;
36
- /**
37
- * @description
38
- * When {@link ItemEntry ItemEntries} are added to the changes of a {@link CollectionEntry CollectionEntry} all {@link CollectionResource CollectionResources}
39
- * should get new {@link ItemResource ItemResources} for the newly added entries
40
- */
41
- protected handleAddedItemEntriesCallback<CollectionEntryType extends CollectionEntry>(collectionEntry: CollectionEntryType, addedEntries: Array<ItemEntry<CollectionEntryType['itemType']>>): void;
42
- /**
43
- * @description
44
- * When {@link ItemEntry ItemEntries} are removed from the changes of a {@link CollectionEntry CollectionEntry} the {@link ItemResource ItemResources} of the ItemEntries should be removed from all {@link CollectionResource CollectionResources}
45
- */
46
- protected handleRemovedItemEntriesCallback<CollectionEntryType extends CollectionEntry>(collectionEntry: CollectionEntryType, removedItemEntries: Array<ItemEntry<CollectionEntryType['itemType']>>): void;
47
- private fetchCollectionData;
48
- /**
49
- * @description
50
- * Fetches {@link CollectionEntry CollectionEntries} of which the parents are local
51
- */
52
- private fetchLinkedLocalCollectionEntries;
53
28
  }
@@ -14,7 +14,7 @@ export declare type TransactionItemEntryChanges<ItemTypeType extends ItemType =
14
14
  /**
15
15
  * @description
16
16
  * In a {@link TransactionCache Transaction} only local items can be stored, so all entries in {@link TransactionItemHandler.entries this.entries} are local
17
- * If a non-local entry is requested it should be passed on to the {@link ServerItemHandler ServerItemHandler} which will fetchCollectionEntry the entry from the server
17
+ * If a non-local entry is requested it should be passed on to the {@link ServerItemHandler ServerItemHandler} which will __fetchCachedQueryItem the entry from the server
18
18
  */
19
19
  export declare class TransactionItemHandler extends ItemHandlerBase {
20
20
  private dependencies;
@@ -77,7 +77,7 @@ export declare class TransactionItemHandler extends ItemHandlerBase {
77
77
  expandLocalItemEntries<ItemTypeType extends ItemType>(changesDelta: ChangesDeltaBase, itemType: ItemTypeType, itemEntries: Array<ItemEntry<ItemTypeType>>, requestColumns: ApiRequestColumns, responseColumns: ResponseColumnItemTypeMap): PromiseInterface<Array<ItemEntry<ItemTypeType>>>;
78
78
  /**
79
79
  * @description
80
- * Fetches the data for the passed ItemType/ItemId/columns, is able to fetchCollectionEntry non-local derived values.
80
+ * Fetches the data for the passed ItemType/ItemId/columns, is able to __fetchCachedQueryItem non-local derived values.
81
81
  *
82
82
  * @remark
83
83
  * Assumes the the ItemEntry with the given ItemType-ItemId is already cached
@@ -3,9 +3,8 @@ export * from './ApiRequestService';
3
3
  export * from './ApiResponseProcessor';
4
4
  export * from './ChangesCompilation';
5
5
  export * from './ChangesProcessor';
6
- export * from './CollectionCache';
7
6
  export * from './CollectionEntryService';
8
- export * from './CollectionMatcher';
7
+ export * from './CollectionMatcherCachedCollectionProcessor';
9
8
  export * from './CollectionResourceService';
10
9
  export * from './ColumnCache';
11
10
  export * from './ColumnExpansion';
@@ -31,9 +30,10 @@ export * from './Util';
31
30
  export * from './cache/AbstractCache';
32
31
  export * from './cache/server/ServerCache';
33
32
  export * from './cache/server/ServerItemHandler';
34
- export * from './cache/server/ServerCollectionHandler';
33
+ export * from './cache/server/ServerCachedQueryHandler';
35
34
  export * from './cache/transaction/TransactionCache';
36
35
  export * from './cache/transaction/TransactionItemHandler';
36
+ export * from './cache/transaction/TransactionCachedQueryHandler';
37
37
  export * from './cache/transaction/TransactionCollectionHandler';
38
38
  export * from './cache/transaction/TransactionEventHandler';
39
39
  export * from './cache/transaction/TransactionValidator';
@@ -1,7 +1,7 @@
1
1
  import { ApiFormatter, ApiRequestService, CollectionEntryService, CollectionResourceService, ColumnCache, ColumnHandler, ColumnUtil, ConversionMapService, ItemEntryService, KeyService, LockService, QueryService, SocketMessageHandler } from './classes';
2
2
  import { ItemCreateService } from './classes/ItemCreateService';
3
3
  import { TemplateCache } from './classes/TemplateCache';
4
- import { ApiResponseProcessorFactory, ChangesCompilationFactory, CollectionCacheFactory, CollectionEntryFactory, CollectionMatcherFactory, CollectionResourceFactory, ColumnExpansionFactory, ColumnInfoFactory, ColumnSetFactory, ColumnSubsetCacheFactory, CreateRequestFactory, ItemCacheFactory, ItemEntryFactory, ItemResourceFactory, ModuleChangesCompilationFactory, QueryMatcherFactory, QueryParserFactory, RequestColumnExpansionFactory, TemplateFactory, TransactionCacheFactory } from './factories';
4
+ import { ApiResponseProcessorFactory, ChangesCompilationFactory, CollectionEntryFactory, CollectionMatcherFactory, CollectionResourceFactory, ColumnExpansionFactory, ColumnInfoFactory, ColumnSetFactory, ColumnSubsetCacheFactory, CreateRequestFactory, ItemCacheFactory, ItemEntryFactory, ItemResourceFactory, ModuleChangesCompilationFactory, QueryMatcherFactory, QueryParserFactory, RequestColumnExpansionFactory, TemplateFactory, TransactionCacheFactory } from './factories';
5
5
  import { ChangesDeltaFactory } from './factories/ChangesDeltaFactory';
6
6
  import { ChangesProcessorFactory } from './factories/ChangesProcessorFactory';
7
7
  import { ApiRequestServiceInterface, AuthInterface, ErrorHandlerInterface, ExceptionHandlerInterface, PromiseLibraryInterface } from './interfaces';
@@ -15,7 +15,6 @@ export declare class RmCore {
15
15
  changesCompilationFactory: ChangesCompilationFactory;
16
16
  changesDeltaFactory: ChangesDeltaFactory;
17
17
  changesProcessorFactory: ChangesProcessorFactory;
18
- collectionCacheFactory: CollectionCacheFactory;
19
18
  collectionEntryFactory: CollectionEntryFactory;
20
19
  collectionEntryService: CollectionEntryService;
21
20
  collectionMatcherFactory: CollectionMatcherFactory;
@@ -1,11 +1,14 @@
1
- import { CollectionEntryService, KeyService } from '../classes';
2
- import { CollectionEntry, CollectionEntryOptionsInterface } from '../models/';
1
+ import { CollectionEntryService, ColumnCache, KeyService, QueryService } from '../classes';
2
+ import { CollectionEntry } from '../models/';
3
+ import { CollectionOptionsInterface } from '../models/CollectionOptions';
3
4
  import { ItemType } from '../types/';
4
5
  import { ColumnSetFactory } from './ColumnSetFactory';
5
6
  export declare class CollectionEntryFactory {
6
7
  private collectionEntryService;
7
8
  private columnSetFactory;
8
9
  private keyService;
9
- constructor(collectionEntryService: CollectionEntryService, columnSetFactory: ColumnSetFactory, keyService: KeyService);
10
- construct<ItemTypeType extends ItemType>(itemType: ItemTypeType, options: CollectionEntryOptionsInterface): CollectionEntry<ItemTypeType>;
10
+ private queryService;
11
+ private columnCache;
12
+ constructor(collectionEntryService: CollectionEntryService, columnSetFactory: ColumnSetFactory, keyService: KeyService, queryService: QueryService, columnCache: ColumnCache);
13
+ construct<ItemTypeType extends ItemType>(itemType: ItemTypeType, options: CollectionOptionsInterface<ItemTypeType>): CollectionEntry<ItemTypeType>;
11
14
  }
@@ -1,9 +1,19 @@
1
- import { CollectionMatcher, ServerCache, TransactionCache } from '../classes';
1
+ import { AbstractCache, ApiRequestService, QueryService } from '../classes';
2
+ import { CachedQueryItem } from '../classes/cache/CachedQueryHandlerBase';
3
+ import { CollectionMatcherCachedQueryProcessor } from '../classes/cache/CollectionMatcherCachedQueryProcessor';
4
+ import { CollectionMatcherCachedCollectionProcessor } from '../classes/CollectionMatcherCachedCollectionProcessor';
2
5
  import { QueryMatcherFactory } from '../factories';
3
- import { CollectionEntry } from '../models';
6
+ import { PromiseLibraryInterface } from '../interfaces';
7
+ import { CollectionResource } from '../models';
4
8
  import { ItemType } from '../types';
5
9
  export declare class CollectionMatcherFactory {
6
10
  private queryMatcherFactory;
7
- constructor(queryMatcherFactory: QueryMatcherFactory);
8
- construct(transaction: TransactionCache | ServerCache, getCollectionEntries: <ItemTypeType extends ItemType>(itemType: ItemTypeType) => Array<CollectionEntry<ItemTypeType>>): CollectionMatcher;
11
+ private queryService;
12
+ private apiRequestService;
13
+ private promiseService;
14
+ constructor(queryMatcherFactory: QueryMatcherFactory, queryService: QueryService, apiRequestService: ApiRequestService, promiseService: PromiseLibraryInterface);
15
+ constructCachedCollectionProcessor(transaction: AbstractCache, getCollections: (itemType: ItemType) => {
16
+ [queryString: string]: CollectionResource[];
17
+ }): CollectionMatcherCachedCollectionProcessor;
18
+ constructCachedQueryProcessor(transaction: AbstractCache, getQueries: (itemType: ItemType) => CachedQueryItem[]): CollectionMatcherCachedQueryProcessor;
9
19
  }
@@ -1,9 +1,12 @@
1
- import { ItemEntryService, KeyService } from '../classes';
1
+ import { ItemEntryService, KeyService, QueryService } from '../classes';
2
2
  import { TransactionCache } from '../classes/cache/transaction/TransactionCache';
3
3
  import { ErrorHandlerInterface, ExceptionHandlerInterface, PromiseLibraryInterface } from '../interfaces';
4
- import { CollectionEntry, CollectionResource, CollectionResourceOptionsInterface } from '../models';
4
+ import { CollectionResource, ItemEntry } from '../models';
5
+ import { CollectionOptionsInterface } from '../models/CollectionOptions';
5
6
  import { ItemType } from '../types';
6
7
  import { ChangesDeltaFactory } from './ChangesDeltaFactory';
8
+ import { CollectionEntryFactory } from './CollectionEntryFactory';
9
+ import { ColumnSetFactory } from './ColumnSetFactory';
7
10
  export declare class CollectionResourceFactory {
8
11
  errorHandler: ErrorHandlerInterface;
9
12
  exceptionHandler: ExceptionHandlerInterface;
@@ -11,6 +14,9 @@ export declare class CollectionResourceFactory {
11
14
  promiseService: PromiseLibraryInterface;
12
15
  changesDeltaFactory: ChangesDeltaFactory;
13
16
  itemEntryService: ItemEntryService;
14
- constructor(errorHandler: ErrorHandlerInterface, exceptionHandler: ExceptionHandlerInterface, keyService: KeyService, promiseService: PromiseLibraryInterface, changesDeltaFactory: ChangesDeltaFactory, itemEntryService: ItemEntryService);
15
- construct<ItemTypeType extends ItemType>(collectionEntry: CollectionEntry<ItemTypeType>, options: CollectionResourceOptionsInterface<ItemTypeType>, transaction: TransactionCache): CollectionResource<ItemTypeType>;
17
+ collectionEntryFactory: CollectionEntryFactory;
18
+ queryService: QueryService;
19
+ columnSetFactory: ColumnSetFactory;
20
+ constructor(errorHandler: ErrorHandlerInterface, exceptionHandler: ExceptionHandlerInterface, keyService: KeyService, promiseService: PromiseLibraryInterface, changesDeltaFactory: ChangesDeltaFactory, itemEntryService: ItemEntryService, collectionEntryFactory: CollectionEntryFactory, queryService: QueryService, columnSetFactory: ColumnSetFactory);
21
+ construct<ItemTypeType extends ItemType>(itemType: ItemTypeType, options: CollectionOptionsInterface<ItemTypeType>, transaction: TransactionCache, initialItemEntries: Array<ItemEntry<ItemTypeType>>): CollectionResource<ItemTypeType>;
16
22
  }
@@ -1,6 +1,7 @@
1
- import { ColumnSubsetCache } from '../classes';
1
+ import { ColumnSubsetCache, ColumnUtil } from '../classes';
2
2
  import { ApiRequestColumns, ItemType } from '../types';
3
3
  export declare class ColumnSubsetCacheFactory {
4
- constructor();
4
+ private columnUtil;
5
+ constructor(columnUtil: ColumnUtil);
5
6
  construct<ItemTypeType extends ItemType>(requestColumns: ApiRequestColumns): ColumnSubsetCache<ItemTypeType>;
6
7
  }
@@ -2,5 +2,5 @@ import { QueryParser } from '../classes';
2
2
  import { ApiQuery } from '../types';
3
3
  export declare class QueryParserFactory {
4
4
  constructor();
5
- construct(query: ApiQuery, parameters?: any): QueryParser;
5
+ construct(query: ApiQuery): QueryParser;
6
6
  }
@@ -1,6 +1,5 @@
1
1
  export * from './ApiResponseProcessorFactory';
2
2
  export * from './ChangesCompilationFactory';
3
- export * from './CollectionCacheFactory';
4
3
  export * from './CollectionEntryFactory';
5
4
  export * from './CollectionMatcherFactory';
6
5
  export * from './CollectionResourceFactory';
@@ -1,6 +1,6 @@
1
1
  import { ApiFormatter, ApiRequestService, CollectionEntryService, ColumnCache, ColumnHandler, ColumnUtil, ConversionMapService, ItemCreateService, ItemEntryService, KeyService, LockService, QueryService, RequestBufferManager } from '../classes';
2
2
  import { TemplateCache } from '../classes/TemplateCache';
3
- import { ChangesDeltaFactory, CollectionCacheFactory, CollectionEntryFactory, CollectionMatcherFactory, CollectionResourceFactory, ColumnExpansionFactory, ColumnSetFactory, ColumnSubsetCacheFactory, ItemCacheFactory, ItemEntryFactory, ItemResourceFactory, ModuleChangesCompilationFactory, QueryMatcherFactory, QueryParserFactory, RequestColumnExpansionFactory } from '../factories';
3
+ import { ChangesDeltaFactory, CollectionEntryFactory, CollectionMatcherFactory, CollectionResourceFactory, ColumnExpansionFactory, ColumnSetFactory, ColumnSubsetCacheFactory, ItemCacheFactory, ItemEntryFactory, ItemResourceFactory, ModuleChangesCompilationFactory, QueryMatcherFactory, QueryParserFactory, RequestColumnExpansionFactory } from '../factories';
4
4
  import { AuthInterface } from './AuthInterface';
5
5
  import { ErrorHandlerInterface } from './ErrorHandlerInterface';
6
6
  import { ExceptionHandlerInterface } from './ExceptionHandlerInterface';
@@ -11,7 +11,6 @@ export interface AbstractCacheDependencyInterface {
11
11
  apiRequestService: ApiRequestService;
12
12
  authInterface: AuthInterface;
13
13
  changesDeltaFactory: ChangesDeltaFactory;
14
- collectionCacheFactory: CollectionCacheFactory;
15
14
  collectionEntryFactory: CollectionEntryFactory;
16
15
  collectionEntryService: CollectionEntryService;
17
16
  collectionMatcherFactory: CollectionMatcherFactory;
@@ -1,5 +1,5 @@
1
1
  import { CollectionEntryService, ColumnHandler, ColumnUtil, KeyService, QueryService } from '../classes';
2
- import { ChangesDeltaFactory, CollectionCacheFactory, CollectionMatcherFactory, ColumnExpansionFactory, ColumnSubsetCacheFactory, RequestColumnExpansionFactory } from '../factories';
2
+ import { ChangesDeltaFactory, CollectionMatcherFactory, ColumnExpansionFactory, ColumnSubsetCacheFactory, RequestColumnExpansionFactory } from '../factories';
3
3
  import { ErrorHandlerInterface } from './ErrorHandlerInterface';
4
4
  import { ExceptionHandlerInterface } from './ExceptionHandlerInterface';
5
5
  import { PromiseLibraryInterface } from './PromiseLibraryInterface';
@@ -9,7 +9,6 @@ export interface TransactionCollectionHandlerDependencyInterface {
9
9
  columnSubsetCacheFactory: ColumnSubsetCacheFactory;
10
10
  columnExpansionFactory: ColumnExpansionFactory;
11
11
  changesDeltaFactory: ChangesDeltaFactory;
12
- collectionCacheFactory: CollectionCacheFactory;
13
12
  collectionEntryService: CollectionEntryService;
14
13
  collectionMatcherFactory: CollectionMatcherFactory;
15
14
  columnHandler: ColumnHandler;
@@ -1,24 +1,23 @@
1
- import { CollectionEntryService, ColumnExpansion, ColumnSet, KeyService } from '../classes';
1
+ import { CollectionEntryService, ColumnCache, ColumnExpansion, ColumnSet, KeyService, QueryService } from '../classes';
2
2
  import { ColumnSetFactory } from '../factories';
3
- import { CollectionEntryOptions } from '../models';
4
- import { ApiQuery, ApiRequestColumns, CollectionQuery, EntryParentNull, ItemId, ItemType, PromiseInterface, QueryCallback } from '../types';
3
+ import { CollectionQuery, EntryParentNull, ItemType, PromiseInterface } from '../types';
4
+ import { CollectionOptions } from './CollectionOptions';
5
5
  export declare class CollectionEntry<ItemTypeType extends ItemType = any> {
6
6
  private collectionEntryService;
7
+ private queryService;
7
8
  private columnSetFactory;
8
9
  private keyService;
10
+ private columnCache;
9
11
  itemType: ItemTypeType;
10
- options: CollectionEntryOptions;
12
+ options: CollectionOptions;
11
13
  id: number;
12
14
  parent: EntryParentNull;
13
15
  query: CollectionQuery;
14
16
  columns: ColumnSet<ItemTypeType>;
15
17
  reloadQueued: boolean;
16
18
  promise: PromiseInterface<this>;
17
- constructor(collectionEntryService: CollectionEntryService, columnSetFactory: ColumnSetFactory, keyService: KeyService, itemType: ItemTypeType, options: CollectionEntryOptions);
19
+ constructor(collectionEntryService: CollectionEntryService, queryService: QueryService, columnSetFactory: ColumnSetFactory, keyService: KeyService, columnCache: ColumnCache, itemType: ItemTypeType, options: CollectionOptions);
18
20
  isLocal(): boolean;
19
- matchParent(itemType: ItemType, itemId: ItemId): boolean;
20
- extendQuery(callback?: QueryCallback): ApiQuery;
21
21
  queueReload(): void;
22
22
  expandColumns(columnExpansion: ColumnExpansion<ItemTypeType>): void;
23
- expandRequestColumns(requestColumns: ApiRequestColumns): void;
24
23
  }
@@ -0,0 +1,18 @@
1
+ import { CollectionResource, ItemResource } from '../models';
2
+ import { ApiQuery, ApiRequestColumns, ApiRequestLimit, EntryParentNull, FieldChangeCallback, ItemType } from '../types';
3
+ export declare type CollectionResourceCallback<ItemTypeType extends ItemType> = (itemResources: Array<ItemResource<ItemTypeType>>, collectionResource: CollectionResource<ItemTypeType>, isCalledAfterSocketUpdate: boolean) => void;
4
+ export declare type CollectionResourceOnAddCallback<ItemTypeType extends ItemType> = (itemResources: Array<ItemResource<ItemTypeType>>, collectionResource: CollectionResource<ItemTypeType>, isInitialCall: boolean, isCalledAfterSocketUpdate: boolean) => void;
5
+ export declare type CollectionOptionsInterface<ItemTypeType extends ItemType> = Partial<CollectionOptions<ItemTypeType>>;
6
+ export declare class CollectionOptions<ItemTypeType extends ItemType = any> {
7
+ columns: ApiRequestColumns;
8
+ query: ApiQuery | null;
9
+ queryColumns: ApiRequestColumns;
10
+ parent: EntryParentNull;
11
+ limit: ApiRequestLimit | null;
12
+ onAdd: CollectionResourceOnAddCallback<ItemTypeType>;
13
+ onRemove: CollectionResourceCallback<ItemTypeType>;
14
+ onChange: FieldChangeCallback;
15
+ custom: any;
16
+ callOnAddWithInitialItems: boolean;
17
+ constructor(values: CollectionOptionsInterface<ItemTypeType>);
18
+ }