@rentman/rm-core 2.0.3 → 2.0.4

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.
@@ -33,6 +33,10 @@ export declare class ApiFormatter {
33
33
  copyFields<ItemTypeType extends ItemType>(source: FieldMap<ItemTypeType>, destination: FieldMap<ItemTypeType>, columns: Array<ColumnInfo<any>>): FieldMap<ItemTypeType>;
34
34
  shallowCopyFields(shallowSource: FieldMap, deepSource: FieldMap, destination: FieldMap, columns: Array<ColumnInfo<any>>): FieldMap;
35
35
  setDefaultValues(destination: FieldMap, columns: Array<ColumnInfo<any>>): FieldMap;
36
+ /**
37
+ * @description
38
+ * Compares the given fields, returns `true` when the fields are equal
39
+ */
36
40
  compareFields(columnType: string, first?: any, second?: any): boolean;
37
41
  compareFloats(a: number, b: number): boolean;
38
42
  compareMomentObjects(first: moment.Moment, second: moment.Moment): boolean;
@@ -1,4 +1,4 @@
1
- import { ApiFormatter } from '../classes';
1
+ import { ApiFormatter, ApiRequestService } from '../classes';
2
2
  import { RequestColumnExpansionFactory, TransactionCacheFactory } from '../factories';
3
3
  import { ChangesDeltaFactory } from '../factories/ChangesDeltaFactory';
4
4
  import { ErrorHandlerInterface, PromiseLibraryInterface } from '../interfaces';
@@ -15,7 +15,8 @@ export declare class SocketMessageHandler {
15
15
  private transactionCacheFactory;
16
16
  private promiseService;
17
17
  private requestColumnExpansionFactory;
18
- constructor(requestBufferManager: RequestBufferManager, changesDeltaFactory: ChangesDeltaFactory, apiFormatter: ApiFormatter, errorHandler: ErrorHandlerInterface, transactionCacheFactory: TransactionCacheFactory, promiseService: PromiseLibraryInterface, requestColumnExpansionFactory: RequestColumnExpansionFactory);
18
+ private apiRequestService;
19
+ constructor(requestBufferManager: RequestBufferManager, changesDeltaFactory: ChangesDeltaFactory, apiFormatter: ApiFormatter, errorHandler: ErrorHandlerInterface, transactionCacheFactory: TransactionCacheFactory, promiseService: PromiseLibraryInterface, requestColumnExpansionFactory: RequestColumnExpansionFactory, apiRequestService: ApiRequestService);
19
20
  onMessageReceived(message: SocketMessage): any;
20
21
  private formatMessageValues;
21
22
  private createCollectionMap;
@@ -100,7 +100,7 @@ export declare abstract class AbstractCache {
100
100
  *
101
101
  * @internal
102
102
  */
103
- abstract applyChangesFromParent(internalChangesDelta: InternalChangesDelta, isCalledAfterApiSave: boolean): void;
103
+ abstract applyChangesFromParent(internalChangesDelta: InternalChangesDelta, isCalledAfterApiSave: boolean, isCalledAfterSocketUpdate: boolean): void;
104
104
  abstract getParent(itemEntry: ItemEntry, fromInitial?: boolean): EntryParentNull;
105
105
  abstract getItemChangesRecursively(itemEntryId: ItemEntry['id'], copyFields?: boolean): FieldMap;
106
106
  abstract getLocalItemEntryChangesTuple(itemEntryId: ItemEntry['id']): any;
@@ -51,10 +51,10 @@ export declare abstract class CollectionHandlerBase {
51
51
  * Adds the passed {@link ItemEntry ItemEntries} to the collection's changes on the transaction,
52
52
  * will skip the ItemEntry if the `skipEntryFilterFn` callback returns `true`
53
53
  */
54
- addItemEntriesToCollectionChanges<CollectionEntryType extends CollectionEntry>(collectionEntry: CollectionEntryType, itemEntries: Array<ItemEntry<CollectionEntryType['itemType']>>, skipEntryFilterFn: (temEntry: ItemEntry) => boolean): void;
55
- protected abstract handleAddedItemEntriesCallback<CollectionEntryType extends CollectionEntry>(collectionEntry: CollectionEntryType, addedEntries: Array<ItemEntry<CollectionEntryType['itemType']>>): void;
56
- removeItemEntriesFromCollectionChanges(collectionEntry: CollectionEntry, idArray: ItemId[]): void | never[];
57
- protected abstract handleRemovedItemEntriesCallback<CollectionEntryType extends CollectionEntry>(collectionEntry: CollectionEntryType, removedItemEntries: Array<ItemEntry<CollectionEntryType['itemType']>>): void;
54
+ protected _addItemEntriesToCollectionChanges<CollectionEntryType extends CollectionEntry>(collectionEntry: CollectionEntryType, itemEntries: Array<ItemEntry<CollectionEntryType['itemType']>>, skipEntryFilterFn: (temEntry: ItemEntry) => boolean, isCalledAfterSocketUpdate: boolean): void;
55
+ protected abstract handleAddedItemEntriesCallback<CollectionEntryType extends CollectionEntry>(collectionEntry: CollectionEntryType, addedEntries: Array<ItemEntry<CollectionEntryType['itemType']>>, isCalledAfterSocketUpdate: boolean): void;
56
+ removeItemEntriesFromCollectionChanges(collectionEntry: CollectionEntry, idArray: ItemId[], isCalledAfterSocketUpdate?: boolean): void | never[];
57
+ protected abstract handleRemovedItemEntriesCallback<CollectionEntryType extends CollectionEntry>(collectionEntry: CollectionEntryType, removedItemEntries: Array<ItemEntry<CollectionEntryType['itemType']>>, isCalledAfterSocketUpdate: boolean): void;
58
58
  /**
59
59
  * @description
60
60
  * Expands the option's {@link CollectionEntryOptions.columns columns} with the columns required for the {@link CollectionMatcher CollectionMatcher} to function.
@@ -21,6 +21,6 @@ export declare type GroupedCollectionMatcherResult<ItemTypeType extends ItemType
21
21
  export declare class CollectionMatcherCacheProcessor extends CollectionMatcher {
22
22
  private apiRequestService;
23
23
  constructor(apiRequestService: ApiRequestService, queryMatcherFactory: QueryMatcherFactory, transaction: AbstractCache, getCollectionEntries: (itemType: ItemType) => CollectionEntry[]);
24
- removeFromAndAddToCollections(): void;
24
+ removeFromAndAddToCollections(isCalledAfterSocketUpdate?: boolean): void;
25
25
  private groupItemEntries;
26
26
  }
@@ -41,12 +41,12 @@ export declare class ServerCache extends AbstractCache {
41
41
  parent: null;
42
42
  constructor(changesProcessorFactory: ChangesProcessorFactory, 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, apiFormatter: ApiFormatter, 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, linkTreeService: LinkTreeServiceInterface);
43
43
  getServerCache(): ServerCache;
44
- processResponse(response: ApiResponseProcessor): PromiseInterface<ChangesDeltaResult>;
44
+ processResponse(response: ApiResponseProcessor, isCalledAfterApiSave?: boolean, isCalledAfterSocketUpdate?: boolean): PromiseInterface<ChangesDeltaResult>;
45
45
  /**
46
46
  * @description
47
47
  * 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
48
48
  */
49
- applyChangesFromParent(internalChangesDelta: InternalChangesDelta, isCalledAfterApiSave?: boolean): void;
49
+ applyChangesFromParent(internalChangesDelta: InternalChangesDelta, isCalledAfterApiSave?: boolean, isCalledAfterSocketUpdate?: boolean): void;
50
50
  /**
51
51
  * @description
52
52
  * Gets the fields required to set the parent
@@ -79,7 +79,7 @@ export declare class ServerCache extends AbstractCache {
79
79
  * Applies changes to this transaction and its children
80
80
  * Differs from {@link TransactionCache.applyChangesDelta TransactionCache.applyChangesDelta} in the handling of deleted entries and the applyChangesFromParent call
81
81
  */
82
- applyChangesDelta(changesDelta: ChangesDelta): PromiseInterface<ChangesDeltaResult>;
82
+ applyChangesDelta(changesDelta: ChangesDelta, isCalledAfterApiSave?: boolean, isCalledAfterSocketUpdate?: boolean): PromiseInterface<ChangesDeltaResult>;
83
83
  getLocalItemEntry(itemEntryId: ItemEntry['id']): ItemEntry | undefined;
84
84
  getLocalItemEntryByItemId(itemType: ItemType, itemId: ItemEntry['itemId']): ItemEntry | undefined;
85
85
  getLocalCollectionEntry(collectionEntryId: CollectionEntry['id']): CollectionEntry | undefined;
@@ -26,7 +26,7 @@ export declare class ServerCollectionHandler extends CollectionHandlerBase {
26
26
  extendCollectionEntry<CollectionEntryType extends CollectionEntry>(collectionEntry: CollectionEntryType, queryCallback: QueryCallback): PromiseInterface<CollectionEntryType>;
27
27
  expandCollectionEntries<ItemTypeType extends ItemType>(parentType: ItemType, itemType: ItemTypeType, collections: CollectionResourceParentIdMap, newRequestColumns: ApiRequestColumn[]): PromiseInterface<CollectionResourceParentIdMap>;
28
28
  extendCollectionEntries<T extends CollectionResourceParentIdMap>(parentType: ItemType, itemType: ItemType, options: CollectionEntryOptions, queryCallback: QueryCallback, collections: T): PromiseInterface<void>;
29
- addItemEntriesToCollectionChanges<CollectionEntryType extends CollectionEntry>(collectionEntry: CollectionEntryType, itemEntries: Array<ItemEntry<CollectionEntryType['itemType']>>): void;
29
+ addItemEntriesToCollectionChanges<CollectionEntryType extends CollectionEntry>(collectionEntry: CollectionEntryType, itemEntries: Array<ItemEntry<CollectionEntryType['itemType']>>, isCalledAfterSocketUpdate?: boolean): void;
30
30
  protected handleAddedItemEntriesCallback<CollectionEntryType extends CollectionEntry>(_collectionEntry: CollectionEntryType, addedEntries: Array<ItemEntry<CollectionEntryType['itemType']>>): void;
31
31
  protected handleRemovedItemEntriesCallback<CollectionEntryType extends CollectionEntry>(_collectionEntry: CollectionEntryType, removedItemEntries: Array<ItemEntry<CollectionEntryType['itemType']>>): void;
32
32
  /**
@@ -23,7 +23,7 @@ export declare class ServerItemHandler extends ItemHandlerBase {
23
23
  * @description
24
24
  * Processes updates on a cached entry
25
25
  */
26
- processItemEntryChanges<ItemTypeType extends ItemType = any>(itemEntryChangesTuple: ChangesDeltaItemUpdateDelta<ItemTypeType>, _forceOverwrite?: boolean, _updateInitial?: boolean): FieldMap<ItemTypeType>;
26
+ processItemEntryChanges<ItemTypeType extends ItemType = any>(itemEntryChangesTuple: ChangesDeltaItemUpdateDelta<ItemTypeType>, _forceOverwrite?: boolean, _updateInitial?: boolean, _isCalledAfterSocketUpdate?: boolean): FieldMap<ItemTypeType>;
27
27
  fetchItemEntry<ItemTypeType extends ItemType>(itemType: ItemTypeType, itemId: ItemId, options: ItemEntryOptions): PromiseInterface<ItemEntry<ItemTypeType>>;
28
28
  fetchItemEntriesByQuery<ItemTypeType extends ItemType>(itemType: ItemTypeType, query: ApiQuery, entryOptions: ItemEntryOptions): PromiseInterface<Array<ItemEntry<ItemTypeType>>>;
29
29
  fetchItemEntries<ItemTypeType extends ItemType>(itemType: ItemTypeType, itemIds: ItemId[], options: ItemEntryOptions): PromiseInterface<Array<ItemEntry<ItemTypeType>>>;
@@ -92,7 +92,7 @@ export declare class TransactionCache extends AbstractCache {
92
92
  * @param internalChangesDelta Changes to be applied
93
93
  * @param isCalledAfterApiSave If 'isCalledAfterApiSave' is true local changes will always be overwritten (instead of only when there are no changes)
94
94
  */
95
- applyChangesFromParent(internalChangesDelta: InternalChangesDelta, isCalledAfterApiSave?: boolean): void;
95
+ applyChangesFromParent(internalChangesDelta: InternalChangesDelta, isCalledAfterApiSave?: boolean, isCalledAfterSocketUpdate?: boolean): void;
96
96
  /**
97
97
  * @description
98
98
  * Applies changes to this transaction and its children
@@ -358,13 +358,13 @@ export declare class TransactionCache extends AbstractCache {
358
358
  * won't be included
359
359
  */
360
360
  getDelta(): InternalChangesDelta;
361
- createItemResource<ItemTypeType extends ItemType>(itemEntry: ItemEntry<ItemTypeType>, options: ItemOptionsInterface & {
361
+ createItemResource<ItemTypeType extends ItemType>(itemEntry: ItemEntry<ItemTypeType>, options: ItemOptionsInterface<EditResource<ItemTypeType>> & {
362
362
  edit: true;
363
363
  }, isRoot?: boolean, isNew?: boolean): EditResource<ItemTypeType>;
364
- createItemResource<ItemTypeType extends ItemType>(itemEntry: ItemEntry<ItemTypeType>, options: ItemOptionsInterface & {
364
+ createItemResource<ItemTypeType extends ItemType>(itemEntry: ItemEntry<ItemTypeType>, options: ItemOptionsInterface<RemoteViewResource<ItemTypeType>> & {
365
365
  remote: true;
366
366
  }, isRoot?: boolean, isNew?: boolean): RemoteViewResource<ItemTypeType>;
367
- createItemResource<ItemTypeType extends ItemType>(itemEntry: ItemEntry<ItemTypeType>, options: ItemOptionsInterface, isRoot?: boolean, isNew?: boolean): LocalViewResource<ItemTypeType>;
367
+ createItemResource<ItemTypeType extends ItemType>(itemEntry: ItemEntry<ItemTypeType>, options: ItemOptionsInterface<LocalViewResource<ItemTypeType>>, isRoot?: boolean, isNew?: boolean): LocalViewResource<ItemTypeType>;
368
368
  createItemResources<ItemTypeType extends ItemType>(itemEntries: Array<ItemEntry<ItemTypeType>>, options: ItemOptionsInterface & {
369
369
  edit: true;
370
370
  }): Array<EditResource<ItemTypeType>>;
@@ -49,7 +49,7 @@ export declare class TransactionCollectionHandler extends CollectionHandlerBase
49
49
  fetchLinkedCollectionEntries<ItemTypeType extends ItemType>(parentType: ItemType, parentIdArray: ItemId[] | (() => ItemId[]), itemType: ItemTypeType, options: CollectionEntryOptions): PromiseInterface<CollectionEntryParentIdMap<ItemTypeType>>;
50
50
  expandCollectionEntries<ItemTypeType extends ItemType>(parentType: ItemType, itemType: ItemTypeType, collections: CollectionResourceParentIdMap, newColumns: ApiRequestColumn[]): PromiseInterface<CollectionResourceParentIdMap>;
51
51
  extendCollectionEntries<T extends CollectionResourceParentIdMap>(parentType: ItemType, itemType: ItemType, options: CollectionEntryOptions, queryCallback: QueryCallback, collections: T): PromiseInterface<void>;
52
- addItemEntriesToCollectionChanges<CollectionEntryType extends CollectionEntry>(collectionEntry: CollectionEntryType, itemEntries: Array<ItemEntry<CollectionEntryType['itemType']>>): void;
52
+ addItemEntriesToCollectionChanges<CollectionEntryType extends CollectionEntry>(collectionEntry: CollectionEntryType, itemEntries: Array<ItemEntry<CollectionEntryType['itemType']>>, isCalledAfterSocketUpdate?: boolean): void;
53
53
  isLocal(options: CollectionEntryOptions): boolean;
54
54
  expandCollectionEntry<CollectionEntryType extends CollectionEntry>(changesDelta: ChangesDelta, collectionEntry: CollectionEntryType, newColumns: ApiRequestColumns): PromiseInterface<CollectionEntryType>;
55
55
  /**
@@ -76,11 +76,12 @@ export declare class TransactionItemHandler extends ItemHandlerBase {
76
76
  * @param itemEntryChangesTuple The changes tuple
77
77
  * @param forceOverwrite Instead of calling {@link ApiFormatter.mergeCopyFields mergeCopyFields}, {@link ApiFormatter.copyFields copyFields} will be used (because API values are always right)
78
78
  * @param updateInitial Should be `true` if called by applyChangesFromParent
79
+ * @param isCalledAfterSocketUpdate Indicates that the change is done by a different user
79
80
  *
80
81
  * @returns
81
82
  * The previous changes {@link FieldMap FieldMap}
82
83
  */
83
- processItemEntryChanges<ItemTypeType extends ItemType = any>(itemEntryChangesTuple: ChangesDeltaItemUpdateDelta<ItemTypeType>, forceOverwrite?: boolean, updateInitial?: boolean): FieldMap<ItemTypeType>;
84
+ processItemEntryChanges<ItemTypeType extends ItemType = any>(itemEntryChangesTuple: ChangesDeltaItemUpdateDelta<ItemTypeType>, forceOverwrite?: boolean, updateInitial?: boolean, isCalledAfterSocketUpdate?: boolean): FieldMap<ItemTypeType>;
84
85
  cloneItemEntries<ItemTypeType extends ItemType>(itemEntries: Array<ItemEntry<ItemTypeType>>, conversionMap?: ItemIdConversionMap, modifyFieldsCallback?: (sourceEntry: ItemEntry<ItemTypeType>, fields: FieldMap<ItemTypeType>) => void): PromiseInterface<ChangesDeltaResult>;
85
86
  cloneItemEntry<ItemTypeType extends ItemType>(changesDelta: ChangesDelta, sourceEntry: ItemEntry<ItemTypeType>, newFields?: FieldMap<ItemTypeType>, conversionMap?: ItemIdConversionMap, modifyFieldsCallback?: (sourceEntry: ItemEntry<ItemTypeType>, fields: FieldMap<ItemTypeType>) => void): ItemId;
86
87
  fetchItemEntriesByQuery<ItemTypeType extends ItemType>(itemType: ItemTypeType, query: ApiQuery, entryOptions: ItemEntryOptions): PromiseInterface<Array<ItemEntry<ItemTypeType>>>;
@@ -12,7 +12,7 @@ export declare type EntryParentNull = EntryParent | null;
12
12
  export declare type FieldMap<_ItemTypeType extends ItemType = any> = {
13
13
  [key: string]: any;
14
14
  };
15
- export declare type ItemOptionsInterface = ItemEntryOptionsInterface & ItemResourceOptionsInterface;
15
+ export declare type ItemOptionsInterface<ItemResourceType extends ItemResource<any> = ItemResource> = ItemEntryOptionsInterface & ItemResourceOptionsInterface<ItemResourceType>;
16
16
  export declare type CollectionOptionsInterface<ItemTypeType extends ItemType = any> = CollectionEntryOptionsInterface & CollectionResourceOptionsInterface<ItemTypeType>;
17
17
  export interface CollectionDefinition<ItemTypeType extends ItemType = any> {
18
18
  itemType: ItemTypeType;
@@ -27,9 +27,9 @@ export interface LinkCollectionDefinition<ItemTypeType extends ItemType = any> e
27
27
  export declare type OnChangeFunction<ItemResourceType extends ItemResource<any> = ItemResource<any>> = (itemResource: ItemResourceType, previous: FieldMap<ItemResourceType['entry']['itemType']>,
28
28
  /**
29
29
  * @description
30
- * Returns 'true' if the field changed
30
+ * Returns 'false' if the field changed
31
31
  */
32
- compareField: (field: keyof FieldMap<ItemResourceType['entry']['itemType']>) => boolean) => void;
32
+ compareField: (field: keyof FieldMap<ItemResourceType['entry']['itemType']>) => boolean, isCalledAfterSocketUpdate: boolean) => void;
33
33
  export declare const enum StateKeyType {
34
34
  New = "new",
35
35
  Duplicate = "duplicate"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rentman/rm-core",
3
- "version": "2.0.3",
3
+ "version": "2.0.4",
4
4
  "description": "Rentman core functionalities",
5
5
  "main": "./dist/rm-core.js",
6
6
  "types": "./dist/src/index.d.ts",