@rentman/rm-core 2.0.8 → 2.0.10

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.
@@ -70,6 +70,11 @@ export declare abstract class AbstractCache {
70
70
  protected constructor(core: RmCore, columnCache: ColumnCache, requestBufferManager: RequestBufferManager, requestColumnExpansionFactory: RequestColumnExpansionFactory, queryMatcherFactory: QueryMatcherFactory, authInterface: AuthInterface, changesDeltaFactory: ChangesDeltaFactory, lockService: LockService, moduleChangesCompilationFactory: ModuleChangesCompilationFactory, collectionResourceFactory: CollectionResourceFactory, itemResourceFactory: ItemResourceFactory, templateCache: TemplateCache, itemCacheFactory: ItemCacheFactory, collectionCacheFactory: CollectionCacheFactory, errorHandler: ErrorHandlerInterface, exceptionHandler: ExceptionHandlerInterface, promiseService: PromiseLibraryInterface, apiRequestService: ApiRequestService, columnExpansionFactory: ColumnExpansionFactory, columnHandler: ColumnHandler, columnSetFactory: ColumnSetFactory, columnSubsetCacheFactory: ColumnSubsetCacheFactory, columnUtil: ColumnUtil, itemEntryFactory: ItemEntryFactory, itemEntryService: ItemEntryService, keyService: KeyService, collectionEntryFactory: CollectionEntryFactory, collectionEntryService: CollectionEntryService, collectionMatcherFactory: CollectionMatcherFactory, queryParserFactory: QueryParserFactory, queryService: QueryService, apiFormatter: ApiFormatter, linkTreeService: LinkTreeServiceInterface);
71
71
  createChild(id?: string): TransactionCache;
72
72
  onChildDestroy(cache: TransactionCache): void;
73
+ /**
74
+ * @description
75
+ * Returns this transaction and all parents
76
+ */
77
+ getTransactionChain(): AbstractCache[];
73
78
  /**
74
79
  * @description
75
80
  * Returns the {@link TransactionCollectionHandler.entries CollectionCache} of the transaction
@@ -60,5 +60,5 @@ export declare abstract class CollectionHandlerBase {
60
60
  * Expands the option's {@link CollectionEntryOptions.columns columns} with the columns required for the {@link CollectionMatcher CollectionMatcher} to function.
61
61
  * Data fetched for a parent transaction might also fit in a child transaction, so those {@link CollectionEntryOptions.queryColumns queryColumns} should also be taken into account
62
62
  */
63
- protected expandColumnsWithQueryColumns(itemType: ItemType, options: CollectionEntryOptions, query?: ApiQuery): void;
63
+ protected expandColumnsWithQueryColumns(itemType: ItemType, options: CollectionEntryOptions, query: ApiQuery): void;
64
64
  }
@@ -1,7 +1,7 @@
1
- import { ItemCacheFactory, ItemEntryFactory } from '../../factories';
1
+ import { ItemCacheFactory, ItemEntryFactory, RequestColumnExpansionFactory } from '../../factories';
2
2
  import { ErrorHandlerInterface, PromiseLibraryInterface } from '../../interfaces';
3
3
  import { ItemEntry, ItemEntryOptions } from '../../models';
4
- import { ApiQuery, FieldMap, ItemId, ItemType, PromiseInterface } from '../../types';
4
+ import { ApiQuery, ApiRequestColumns, FieldMap, ItemId, ItemType, PromiseInterface } from '../../types';
5
5
  import { ApiFormatter } from '../ApiFormatter';
6
6
  import { ChangesDeltaItemCreateDelta } from '../ChangesDelta';
7
7
  import { ChangesDeltaBase, ChangesDeltaItemUpdateDelta } from '../ChangesDeltaBase';
@@ -17,10 +17,11 @@ export declare abstract class ItemHandlerBase {
17
17
  protected itemEntryFactory: ItemEntryFactory;
18
18
  protected promiseService: PromiseLibraryInterface;
19
19
  protected errorHandler: ErrorHandlerInterface;
20
+ protected requestColumnExpansionFactory: RequestColumnExpansionFactory;
20
21
  protected transaction: AbstractCache;
21
22
  readonly entries: ItemCache;
22
23
  abstract itemChanges: ServerItemEntryChanges | TransactionItemEntryChanges;
23
- protected constructor(columnUtil: ColumnUtil, apiFormatter: ApiFormatter, itemEntryFactory: ItemEntryFactory, promiseService: PromiseLibraryInterface, errorHandler: ErrorHandlerInterface, itemCacheFactory: ItemCacheFactory, transaction: AbstractCache);
24
+ protected constructor(columnUtil: ColumnUtil, apiFormatter: ApiFormatter, itemEntryFactory: ItemEntryFactory, promiseService: PromiseLibraryInterface, errorHandler: ErrorHandlerInterface, requestColumnExpansionFactory: RequestColumnExpansionFactory, itemCacheFactory: ItemCacheFactory, transaction: AbstractCache);
24
25
  /**
25
26
  * @description
26
27
  * Copies the passed ItemEntryChanges into a format the implementing ItemHandler can put in his ItemChanges
@@ -90,4 +91,5 @@ export declare abstract class ItemHandlerBase {
90
91
  * Gets the value of the given column, will look into the current delta before attempting to read itemChanges
91
92
  */
92
93
  protected getItemIdByColumn<ItemTypeType extends ItemType>(itemEntry: ItemEntry<ItemTypeType>, column: ColumnInfo<ItemTypeType>, changesDelta?: ChangesDeltaBase): ItemId;
94
+ protected expandColumnsWithCollectionColumns(itemType: ItemType, requestColumns?: ApiRequestColumns): ApiRequestColumns;
93
95
  }
@@ -1,4 +1,4 @@
1
- import { ColumnSubsetCacheFactory, ItemCacheFactory, ItemEntryFactory, QueryParserFactory } from '../../../factories';
1
+ import { ColumnSubsetCacheFactory, ItemCacheFactory, ItemEntryFactory, QueryParserFactory, RequestColumnExpansionFactory } from '../../../factories';
2
2
  import { ErrorHandlerInterface, PromiseLibraryInterface } from '../../../interfaces';
3
3
  import { ItemEntry, ItemEntryOptions } from '../../../models';
4
4
  import { ApiQuery, ApiRequestColumns, FieldMap, ItemId, ItemType, PromiseInterface } from '../../../types';
@@ -17,7 +17,7 @@ export declare class ServerItemHandler extends ItemHandlerBase {
17
17
  itemChanges: {
18
18
  [itemEntryId: number]: ServerItemEntryChanges;
19
19
  };
20
- constructor(requestBufferManager: RequestBufferManager, queryParserFactory: QueryParserFactory, queryService: QueryService, columnSubsetCacheFactory: ColumnSubsetCacheFactory, errorHandler: ErrorHandlerInterface, promiseService: PromiseLibraryInterface, columnUtil: ColumnUtil, apiFormatter: ApiFormatter, itemEntryFactory: ItemEntryFactory, itemCacheFactory: ItemCacheFactory, transaction: ServerCache);
20
+ constructor(requestBufferManager: RequestBufferManager, queryParserFactory: QueryParserFactory, queryService: QueryService, columnSubsetCacheFactory: ColumnSubsetCacheFactory, errorHandler: ErrorHandlerInterface, promiseService: PromiseLibraryInterface, columnUtil: ColumnUtil, apiFormatter: ApiFormatter, itemEntryFactory: ItemEntryFactory, itemCacheFactory: ItemCacheFactory, requestColumnExpansionFactory: RequestColumnExpansionFactory, transaction: ServerCache);
21
21
  createItemEntry(createTuple: ChangesDeltaItemCreateDelta): ItemEntry;
22
22
  /**
23
23
  * @description
@@ -401,11 +401,6 @@ export declare class TransactionCache extends AbstractCache {
401
401
  remoteItems: true;
402
402
  }): CollectionViewResource<ItemTypeType, RemoteViewResource<ItemTypeType>>;
403
403
  createCollectionResource<ItemTypeType extends ItemType>(collectionEntry: CollectionEntry<ItemTypeType>, resourceOptions: CollectionResourceOptionsInterface<ItemTypeType>): CollectionViewResource<ItemTypeType, LocalViewResource<ItemTypeType>>;
404
- /**
405
- * @description
406
- * Returns this transaction and all parents
407
- */
408
- getTransactionChain(): AbstractCache[];
409
404
  getChangesFromItemChanges<ItemTypeType extends ItemType = any>(changesObject: TransactionItemEntryChanges<ItemTypeType>): FieldMap<ItemTypeType>;
410
405
  private createCollectionResources;
411
406
  /**
@@ -1,7 +1,7 @@
1
- import { ChangesDeltaFactory, ColumnExpansionFactory, ColumnSetFactory, ColumnSubsetCacheFactory, ItemCacheFactory, ItemEntryFactory } from '../../../factories';
1
+ import { ChangesDeltaFactory, ColumnExpansionFactory, ColumnSetFactory, ColumnSubsetCacheFactory, ItemCacheFactory, ItemEntryFactory, RequestColumnExpansionFactory } from '../../../factories';
2
2
  import { ErrorHandlerInterface, ExceptionHandlerInterface, PromiseLibraryInterface } from '../../../interfaces';
3
3
  import { ItemEntry, ItemEntryOptions, ItemResource, Template } from '../../../models';
4
- import { ApiQuery, ApiRequestColumns, EntryParentNull, FieldMap, ItemId, ItemIdConversionMap, ItemType, ItemTypeMap, PromiseInterface, ResponseColumnItemTypeMap } from '../../../types';
4
+ import { ApiQuery, ApiRequestColumns, EntryParentNull, FieldMap, FilterItemEntryCallback, ItemId, ItemIdConversionMap, ItemType, ItemTypeMap, ModifyFieldsCallback, PromiseInterface, ResponseColumnItemTypeMap } from '../../../types';
5
5
  import { ChangesDelta, ChangesDeltaItemCreateDelta } from '../../ChangesDelta';
6
6
  import { ChangesDeltaBase, ChangesDeltaItemUpdateDelta, ChangesDeltaResult } from '../../ChangesDeltaBase';
7
7
  import { ApiFormatter, ColumnHandler, ColumnInfo, ColumnSubsetCache, ColumnUtil, ItemEntryService, KeyService } from '../../index';
@@ -35,7 +35,7 @@ export declare class TransactionItemHandler extends ItemHandlerBase {
35
35
  itemResources: {
36
36
  [itemEntryId: number]: ItemResource[];
37
37
  };
38
- constructor(changesDeltaFactory: ChangesDeltaFactory, exceptionHandler: ExceptionHandlerInterface, templateCache: TemplateCache, columnExpansionFactory: ColumnExpansionFactory, columnHandler: ColumnHandler, columnSetFactory: ColumnSetFactory, columnSubsetCacheFactory: ColumnSubsetCacheFactory, errorHandler: ErrorHandlerInterface, itemEntryService: ItemEntryService, keyService: KeyService, promiseService: PromiseLibraryInterface, columnUtil: ColumnUtil, apiFormatter: ApiFormatter, itemEntryFactory: ItemEntryFactory, itemCacheFactory: ItemCacheFactory, transaction: TransactionCache);
38
+ constructor(changesDeltaFactory: ChangesDeltaFactory, exceptionHandler: ExceptionHandlerInterface, templateCache: TemplateCache, columnExpansionFactory: ColumnExpansionFactory, columnHandler: ColumnHandler, columnSetFactory: ColumnSetFactory, columnSubsetCacheFactory: ColumnSubsetCacheFactory, errorHandler: ErrorHandlerInterface, itemEntryService: ItemEntryService, keyService: KeyService, promiseService: PromiseLibraryInterface, columnUtil: ColumnUtil, apiFormatter: ApiFormatter, itemEntryFactory: ItemEntryFactory, itemCacheFactory: ItemCacheFactory, requestColumnExpansionFactory: RequestColumnExpansionFactory, transaction: TransactionCache);
39
39
  copyTransactionItemEntryChanges(itemEntryChanges: TransactionItemEntryChanges, entry: ItemEntry): TransactionItemEntryChanges;
40
40
  createItemEntry(createTuple: ChangesDeltaItemCreateDelta): ItemEntry;
41
41
  /**
@@ -83,8 +83,8 @@ export declare class TransactionItemHandler extends ItemHandlerBase {
83
83
  * The previous changes {@link FieldMap FieldMap}
84
84
  */
85
85
  processItemEntryChanges<ItemTypeType extends ItemType = any>(itemEntryChangesTuple: ChangesDeltaItemUpdateDelta<ItemTypeType>, forceOverwrite?: boolean, updateInitial?: boolean, isCalledAfterSocketUpdate?: boolean): FieldMap<ItemTypeType> | null;
86
- cloneItemEntries<ItemTypeType extends ItemType>(itemEntries: Array<ItemEntry<ItemTypeType>>, conversionMap?: ItemIdConversionMap, modifyFieldsCallback?: (sourceEntry: ItemEntry<ItemTypeType>, fields: FieldMap<ItemTypeType>) => void): PromiseInterface<ChangesDeltaResult>;
87
- cloneItemEntry<ItemTypeType extends ItemType>(changesDelta: ChangesDelta, sourceEntry: ItemEntry<ItemTypeType>, newFields?: FieldMap<ItemTypeType>, conversionMap?: ItemIdConversionMap, modifyFieldsCallback?: (sourceEntry: ItemEntry<ItemTypeType>, fields: FieldMap<ItemTypeType>) => void): ItemId;
86
+ cloneItemEntries<ItemTypeType extends ItemType>(itemEntries: Array<ItemEntry<ItemTypeType>>, conversionMap?: ItemIdConversionMap, modifyFieldsCallback?: ModifyFieldsCallback): PromiseInterface<ChangesDeltaResult>;
87
+ cloneItemEntry<ItemTypeType extends ItemType>(changesDelta: ChangesDelta, sourceEntry: ItemEntry<ItemTypeType>, newFields?: FieldMap<ItemTypeType>, conversionMap?: ItemIdConversionMap, modifyFieldsCallback?: ModifyFieldsCallback): ItemId;
88
88
  fetchItemEntriesByQuery<ItemTypeType extends ItemType>(itemType: ItemTypeType, query: ApiQuery, entryOptions: ItemEntryOptions): PromiseInterface<Array<ItemEntry<ItemTypeType>>>;
89
89
  fetchItemEntry<ItemTypeType extends ItemType>(itemType: ItemTypeType, itemId: ItemId, options: ItemEntryOptions): PromiseInterface<ItemEntry<ItemTypeType>>;
90
90
  /**
@@ -95,8 +95,7 @@ export declare class TransactionItemHandler extends ItemHandlerBase {
95
95
  fetchItemEntries<ItemTypeType extends ItemType>(itemType: ItemTypeType, itemIds: ItemId[], options: ItemEntryOptions): PromiseInterface<Array<ItemEntry<ItemTypeType>>>;
96
96
  fetchTitle(itemType: ItemType, itemId: ItemId): PromiseInterface<string>;
97
97
  resolveLocalItemEntry<ItemTypeType extends ItemType>(changesDelta: ChangesDelta, itemEntry: ItemEntry<ItemTypeType>, columnSubsetCache: ColumnSubsetCache<ItemTypeType>, options: ItemEntryOptions): PromiseInterface<ItemEntry<ItemTypeType>>;
98
- createLocalEntries(changesDelta: ChangesDelta, parentType: ItemType, localParentId: ItemId, template: Template<ItemType>, itemIdConversion: ItemIdConversionMap, filterItemEntry?: <ItemTypeType extends ItemType>(itemType: ItemTypeType, fields: FieldMap<ItemTypeType>) => boolean, // return true to include item
99
- modifyFieldsCallback?: <ItemTypeType extends ItemType>(itemType: ItemTypeType, fields: FieldMap<ItemTypeType>, itemIdConversionMap: ItemIdConversionMap) => void): void;
98
+ createLocalEntries(changesDelta: ChangesDelta, parentType: ItemType, localParentId: ItemId, template: Template<ItemType>, itemIdConversion: ItemIdConversionMap, filterItemEntryCallback?: FilterItemEntryCallback, modifyFieldsCallback?: ModifyFieldsCallback): void;
100
99
  expandLocalItemEntries<ItemTypeType extends ItemType>(changesDelta: ChangesDeltaBase, itemType: ItemTypeType, itemEntries: Array<ItemEntry<ItemTypeType>>, requestColumns: ApiRequestColumns, responseColumns: ResponseColumnItemTypeMap): PromiseInterface<Array<ItemEntry<ItemTypeType>>>;
101
100
  updateItemValues<ItemTypeType extends ItemType>(changes: FieldMap<ItemTypeType>, parent: EntryParentNull, itemColumns: Array<ColumnInfo<ItemTypeType>>, conversionMap: ItemIdConversionMap): FieldMap<ItemTypeType>;
102
101
  /**
@@ -1,10 +1,10 @@
1
1
  import { ColumnUtil } from '../classes';
2
2
  import { ColumnSetFactory } from '../factories';
3
3
  import { Template } from '../models';
4
- import { ApiResponse, ItemType, ResponseColumnItemTypeMap } from '../types';
4
+ import { ApiRequestColumnMap, ApiResponse, ItemType, ResponseColumnItemTypeMap } from '../types';
5
5
  export declare class TemplateFactory {
6
6
  columnSetFactory: ColumnSetFactory;
7
7
  columnUtil: ColumnUtil;
8
8
  constructor(columnSetFactory: ColumnSetFactory, columnUtil: ColumnUtil);
9
- construct<ItemTypeType extends ItemType>(itemType: ItemTypeType, response: ApiResponse, additionalColumns: ResponseColumnItemTypeMap): Template<ItemTypeType>;
9
+ construct<ItemTypeType extends ItemType>(itemType: ItemTypeType, response: ApiResponse, additionalRequestColumns: ApiRequestColumnMap, additionalResponseColumns: ResponseColumnItemTypeMap): Template<ItemTypeType>;
10
10
  }
@@ -1,11 +1,11 @@
1
1
  import { ColumnSet } from '../classes';
2
2
  import { TemplateFactory } from '../factories';
3
- import { ApiResponse, FieldMap, ItemType, ResponseColumnItemTypeMap } from '../types';
3
+ import { ApiRequestColumnMap, ApiResponse, FieldMap, ItemType, ResponseColumnItemTypeMap } from '../types';
4
4
  export declare class Template<ItemTypeType extends ItemType = any> {
5
5
  itemType: ItemTypeType;
6
6
  response: ApiResponse;
7
7
  fields: FieldMap<ItemTypeType>;
8
8
  responseColumns: ResponseColumnItemTypeMap;
9
9
  columns: ColumnSet<ItemTypeType>;
10
- constructor(factory: TemplateFactory, itemType: ItemTypeType, response: ApiResponse, additionalColumns: ResponseColumnItemTypeMap);
10
+ constructor(factory: TemplateFactory, itemType: ItemTypeType, response: ApiResponse, additionalRequestColumns: ApiRequestColumnMap, additionalResponseColumns: ResponseColumnItemTypeMap);
11
11
  }
@@ -254,3 +254,9 @@ export declare type ApiLinkTree = {
254
254
  [childType: string]: ApiLinkTreeEntry;
255
255
  };
256
256
  };
257
+ /**
258
+ * @description
259
+ * Callback to determine if an item should be included in the create delta, return `false` to exclude the item
260
+ */
261
+ export declare type FilterItemEntryCallback = <ItemTypeType extends ItemType>(itemType: ItemTypeType, fields: FieldMap<ItemTypeType>) => boolean;
262
+ export declare type ModifyFieldsCallback = <ItemTypeType extends ItemType>(itemType: ItemTypeType, fields: FieldMap<ItemTypeType>, itemIdConversionMap?: ItemIdConversionMap) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rentman/rm-core",
3
- "version": "2.0.8",
3
+ "version": "2.0.10",
4
4
  "description": "Rentman core functionalities",
5
5
  "main": "./dist/rm-core.js",
6
6
  "types": "./dist/src/index.d.ts",